diff --git a/assets/kubewarden/kubewarden-1.6.3.tgz b/assets/kubewarden/kubewarden-1.6.3.tgz new file mode 100644 index 0000000..c0f1329 Binary files /dev/null and b/assets/kubewarden/kubewarden-1.6.3.tgz differ diff --git a/charts/kubewarden/1.6.3/Chart.yaml b/charts/kubewarden/1.6.3/Chart.yaml new file mode 100644 index 0000000..b1066ee --- /dev/null +++ b/charts/kubewarden/1.6.3/Chart.yaml @@ -0,0 +1,16 @@ +annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/kube-version: '>= v1.16.0-0 < v1.31.0-0' + catalog.cattle.io/namespace: cattle-ui-plugin-system + catalog.cattle.io/os: linux + catalog.cattle.io/permits-os: linux, windows + catalog.cattle.io/rancher-version: '>= 2.7.5-0' + catalog.cattle.io/scope: management + catalog.cattle.io/ui-component: plugins +apiVersion: v2 +appVersion: 1.6.3 +description: Kubewarden extension for Rancher Manager +name: kubewarden +type: application +version: 1.6.3 +icon: https://raw.githubusercontent.com/rancher/ui-plugin-charts/main/icons/kubewarden/1.6.3-icon-kubewarden.svg diff --git a/charts/kubewarden/1.6.3/README.md b/charts/kubewarden/1.6.3/README.md new file mode 100644 index 0000000..a6dfb84 --- /dev/null +++ b/charts/kubewarden/1.6.3/README.md @@ -0,0 +1,7 @@ +# Kubewarden Extension for Rancher Manager + +An extension for Rancher Manager which allows you to interact with Kubewarden. + +After installation, go to a cluster and you will see a new side navigation entry 'Kubewarden'. This will allow you to install Kubewarden into the cluster and manage Kubewarden resources and configuration. + +For more information see https://www.kubewarden.io/ diff --git a/charts/kubewarden/1.6.3/templates/_helpers.tpl b/charts/kubewarden/1.6.3/templates/_helpers.tpl new file mode 100644 index 0000000..bd2ec19 --- /dev/null +++ b/charts/kubewarden/1.6.3/templates/_helpers.tpl @@ -0,0 +1,52 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "extension-server.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "extension-server.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "extension-server.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "extension-server.labels" -}} +helm.sh/chart: {{ include "extension-server.chart" . }} +{{ include "extension-server.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "extension-server.selectorLabels" -}} +app.kubernetes.io/name: {{ include "extension-server.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} diff --git a/charts/kubewarden/1.6.3/templates/cr.yaml b/charts/kubewarden/1.6.3/templates/cr.yaml new file mode 100644 index 0000000..2a6af72 --- /dev/null +++ b/charts/kubewarden/1.6.3/templates/cr.yaml @@ -0,0 +1,12 @@ +apiVersion: catalog.cattle.io/v1 +kind: UIPlugin +metadata: + name: {{ include "extension-server.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: {{ include "extension-server.labels" . | nindent 4 }} +spec: + plugin: + name: {{ include "extension-server.fullname" . }} + version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }} + endpoint: https://raw.githubusercontent.com/rancher/ui-plugin-charts/main/extensions/kubewarden/1.6.3 + noCache: {{ .Values.plugin.noCache }} diff --git a/charts/kubewarden/1.6.3/values.yaml b/charts/kubewarden/1.6.3/values.yaml new file mode 100644 index 0000000..9cc1bd5 --- /dev/null +++ b/charts/kubewarden/1.6.3/values.yaml @@ -0,0 +1,6 @@ +nameOverride: "" +fullnameOverride: "" +plugin: + enabled: true + versionOverride: "" + noCache: false diff --git a/extensions/kubewarden/1.6.3/files.txt b/extensions/kubewarden/1.6.3/files.txt new file mode 100644 index 0000000..f35af37 --- /dev/null +++ b/extensions/kubewarden/1.6.3/files.txt @@ -0,0 +1,35 @@ +plugin/assets/airgap-installation.md +plugin/img/icon-kubewarden.3c183b75.svg +plugin/kubewarden-1.6.3.umd.min.0.js +plugin/kubewarden-1.6.3.umd.min.0.js.map +plugin/kubewarden-1.6.3.umd.min.13.js +plugin/kubewarden-1.6.3.umd.min.13.js.map +plugin/kubewarden-1.6.3.umd.min.14.js +plugin/kubewarden-1.6.3.umd.min.14.js.map +plugin/kubewarden-1.6.3.umd.min.15.js +plugin/kubewarden-1.6.3.umd.min.15.js.map +plugin/kubewarden-1.6.3.umd.min.airgap-docs.js +plugin/kubewarden-1.6.3.umd.min.airgap-docs.js.map +plugin/kubewarden-1.6.3.umd.min.detail.js +plugin/kubewarden-1.6.3.umd.min.detail.js.map +plugin/kubewarden-1.6.3.umd.min.dialog.js +plugin/kubewarden-1.6.3.umd.min.dialog.js.map +plugin/kubewarden-1.6.3.umd.min.edit.js +plugin/kubewarden-1.6.3.umd.min.edit.js.map +plugin/kubewarden-1.6.3.umd.min.formatters.js +plugin/kubewarden-1.6.3.umd.min.formatters.js.map +plugin/kubewarden-1.6.3.umd.min.js +plugin/kubewarden-1.6.3.umd.min.js.map +plugin/kubewarden-1.6.3.umd.min.list.js +plugin/kubewarden-1.6.3.umd.min.list.js.map +plugin/kubewarden-1.6.3.umd.min.policyDashboard0.js +plugin/kubewarden-1.6.3.umd.min.policyDashboard0.js.map +plugin/kubewarden-1.6.3.umd.min.policyDashboard1.js +plugin/kubewarden-1.6.3.umd.min.policyDashboard1.js.map +plugin/kubewarden-1.6.3.umd.min.vendors~detail.js +plugin/kubewarden-1.6.3.umd.min.vendors~detail.js.map +plugin/kubewarden-1.6.3.umd.min.vendors~edit.js +plugin/kubewarden-1.6.3.umd.min.vendors~edit.js.map +plugin/kubewarden-1.6.3.umd.min.vendors~markdown.js +plugin/kubewarden-1.6.3.umd.min.vendors~markdown.js.map +plugin/package.json diff --git a/extensions/kubewarden/1.6.3/plugin/assets/airgap-installation.md b/extensions/kubewarden/1.6.3/plugin/assets/airgap-installation.md new file mode 100644 index 0000000..be3a8ca --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/assets/airgap-installation.md @@ -0,0 +1,155 @@ +# Air gap installation + +This guide will show you how to install Kubewarden in air-gapped environments. In an air-gapped installation of Kubewarden, +you will need a private OCI registry accessible by your Kubernetes cluster. Kubewarden Policies +are WebAssembly modules; therefore, they can be stored inside an OCI-compliant registry as OCI artifacts. +You need to add Kubewarden's images and policies to this OCI registry. Let's see how to do that. + +## Requirements + +1. Private registry that supports OCI artifacts, [here](../../distributing-policies/oci-registries-support) you can find a list of supported OCI registries. It will be used for storing the container images and policies. +2. [kwctl](https://github.com/kubewarden/kwctl) 1.3.1 or above +3. docker v20.10.6 or above + +## Save container images in your workstation + +1. Download `kubewarden-images.txt` from the Kubewarden [release page](https://github.com/kubewarden/helm-charts/releases/). Alternatively, the `imagelist.txt` and `policylist.txt` files are shipped inside the helm charts containing the used container images and policy wasm modules, respectively. + +>**Note:** Optionally, you can verify the signatures of the [helm charts](../../security/verifying-kubewarden#helm-charts) and [container images](../../security/verifying-kubewarden#container-images) + +2. Add `cert-manager` if it is not available in your private registry. + +``` +helm repo add jetstack https://charts.jetstack.io +helm repo update +helm pull jetstack/cert-manager +helm template ./cert-manager-.tgz | \ + awk '$1 ~ /image:/ {print $2}' | sed s/\"//g >> ./kubewarden-images.txt +``` + +3. Download `kubewarden-save-images.sh` and `kubewarden-load-images.sh` from the [utils repository](https://github.com/kubewarden/utils). +4. Save Kubewarden container images into a .tar.gz file: + +``` +./kubewarden-save-images.sh \ + --image-list ./kubewarden-images.txt \ + --images kubewarden-images.tar.gz +``` + +Docker begins pulling the images used for an air gap install. Be patient. This process takes a few minutes. +When the process completes, your current directory will output a tarball named `kubewarden-images.tar.gz`. It will be present in the same directory where you executed the command. + +## Save policies in your workstation + +1. Add all the policies you want to use in a `policies.txt` file. A file with a list of the default policies can be found in the Kubewarden defaults [release page](https://github.com/kubewarden/helm-charts/releases/) +2. Download `kubewarden-save-policies.sh` and `kubewarden-load-policies.sh` from the [kwctl repository](https://github.com/kubewarden/kwctl/tree/main/scripts) +3. Save policies into a .tar.gz file: + +``` +./kubewarden-save-policies.sh --policies-list policies.txt +``` + +kwctl downloads all the policies and stores them as `kubewarden-policies.tar.gz` archive. + +## Helm charts + +You need to download the following helm charts in your workstation: + +``` +helm pull kubewarden/kubewarden-crds +helm pull kubewarden/kubewarden-controller +helm pull kubewarden/kubewarden-defaults +``` + +Download `cert-manager` if it is not installed in the air gap cluster. + +``` +helm pull jetstack/cert-manager +``` + +## Populate private registry + +Move `kubewarden-policies.tar.gz`, `kubewarden-images.tar.gz`, `kubewarden-load-images.sh`, `kubewarden-load-policies.sh` and `policies.txt` +to the air gap environment. + +1. Load Kubewarden images into the private registry. Docker client must be authenticated against the local registry +``` +./kubewarden-load-images.sh \ + --image-list ./kubewarden-images.txt \ + --images kubewarden-images.tar.gz \ + --registry +``` +2. Load Kubewarden policies into the private registry. Kwctl must be authenticated against the local registry (`kwctl` uses the same mechanism to authenticate as `docker`, a `~/.docker/config.json` file) +``` +./kubewarden-load-policies.sh \ + --policies-list policies.txt \ + --policies kubewarden-policies.tar.gz \ + --registry \ + --sources-path sources.yml +``` + +>***Caution:*** +>The `sources.yaml` file is needed by kwctl to connect to registries that fall into these categories: +> +>* Authentication is required +>* Self signed certificate is being used +>* No TLS termination is done +> +>Please refer to [the section on custom certificate authorities](../../distributing-policies/custom-certificate-authorities.md) in our documentation to learn more about configuring the `sources.yaml` file + + +## Install Kubewarden + +Let's install Kubewarden now that we have everything we need in our private registry. The only difference with a normal +Kubewarden installation is that we need to change the registry in the container images and policies to our private registry. + +Install `cert-manager` if it is not already installed in the air gap cluster: + +``` +helm install --create-namespace cert-manager ./cert-manager-.tgz \ + -n kubewarden \ + --set installCRDs=true \ + --set image.repository=/jetstack/cert-manager-controller \ + --set webhook.image.repository=/jetstack/cert-manager-webhook \ + --set cainjector.image.repository=/jetstack/cert-manager-cainjector \ + --set startupapicheck.image.repository=/jetstack/cert-manager-ctl +``` + +Let's install the Kubewarden stack: + +``` +helm install --wait -n kubewarden \ + kubewarden-crds kubewarden-crds.tgz +``` + +``` +helm install --wait -n kubewarden \ + kubewarden-controller kubewarden-controller.tgz \ + --set global.cattle.systemDefaultRegistry= +``` + +``` +helm install --wait -n kubewarden \ + kubewarden-defaults kubewarden-defaults.tgz \ + --set global.cattle.systemDefaultRegistry= +``` + +>***Caution*** +>To download the recommended policies installed by the `kubewarden-defaults` Helm +>Chart from a registry other than `global.cattle.systemDefaultRegistry`, you can +>utilize the `recommendedPolicies.defaultPoliciesRegistry` configuration. This +>configuration allows users to specify a registry dedicated to pulling the OCI +>artifacts of the policies. It is particularly useful when their container image +>repository does not support OCI artifacts. +> +>To install and wait for the installation to complete, use the following command: +> +>```console +>helm install --wait -n kubewarden \ +> kubewarden-defaults kubewarden-defaults.tgz \ +> --set global.cattle.systemDefaultRegistry= \ +> --set recommendedPolicies.defaultPoliciesRegistry= +>``` +> +>If the `recommendedPolicies.defaultPoliciesRegistry` configuration is not set, +>the `global.cattle.systemDefaultRegistry` will be used as the default registry. diff --git a/extensions/kubewarden/1.6.3/plugin/img/icon-kubewarden.3c183b75.svg b/extensions/kubewarden/1.6.3/plugin/img/icon-kubewarden.3c183b75.svg new file mode 100644 index 0000000..99494a4 --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/img/icon-kubewarden.3c183b75.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.0.js b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.0.js new file mode 100644 index 0000000..15c6234 --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.0.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]||[]).push([[0],{"6ba7":function(e,t,s){"use strict";s.r(t);var a=function(){var e=this,t=e._self._c;return t("div",{staticClass:"reporter-panel"})},r=[],o=s("ad2f"),n={async fetch(){const e=!this.$route.params.resource,t=this.$route.params.resource;e&&await Object(o["g"])(this.$store,!0),(t||this.$route.path.includes("projectsnamespaces"))&&await Object(o["g"])(this.$store,!1,t)}},c=n,u=(s("7db5"),s("d802")),i=Object(u["a"])(c,a,r,!1,null,"1a7cd2cb",null);t["default"]=i.exports},"7db5":function(e,t,s){"use strict";s("7ee0")},"7ee0":function(e,t,s){var a=s("bf91");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[e.i,a,""]]),a.locals&&(e.exports=a.locals);var r=s("0ed3").default;r("6999e797",a,!0,{sourceMap:!1,shadowMode:!1})},bf91:function(e,t,s){var a=s("5eaa");t=a(!1),t.push([e.i,".reporter-panel[data-v-1a7cd2cb]{display:none}",""]),e.exports=t}}]); +//# sourceMappingURL=kubewarden-1.6.3.umd.min.0.js.map \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.0.js.map b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.0.js.map new file mode 100644 index 0000000..82aec84 --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.0.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-1.6.3/./components/PolicyReporter/ReporterPanel.vue","webpack://kubewarden-1.6.3/components/PolicyReporter/ReporterPanel.vue","webpack://kubewarden-1.6.3/./components/PolicyReporter/ReporterPanel.vue?4eaa","webpack://kubewarden-1.6.3/./components/PolicyReporter/ReporterPanel.vue?979d","webpack://kubewarden-1.6.3/./components/PolicyReporter/ReporterPanel.vue?7ae9","webpack://kubewarden-1.6.3/./components/PolicyReporter/ReporterPanel.vue?5650","webpack://kubewarden-1.6.3/./components/PolicyReporter/ReporterPanel.vue?1132"],"names":["render","_vm","this","_c","_self","staticClass","staticRenderFns","isClusterLevel","$route","params","resource","resourceType","getReports","$store","path","includes","component","content","__esModule","default","module","i","locals","exports","add","___CSS_LOADER_API_IMPORT___","push"],"mappings":"wMAAA,IAAIA,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,oBAErFC,EAAkB,G,YCOP,GACf,cACA,MAAAC,GAAA,KAAAC,OAAAC,OAAAC,SACAC,EAAA,KAAAH,OAAAC,OAAAC,SAGAH,SACAK,eAAA,KAAAC,QAAA,IAGAF,GAAA,KAAAH,OAAAM,KAAAC,SAAA,8BACAH,eAAA,KAAAC,QAAA,EAAAF,KCpBmZ,I,wBCQ/YK,EAAY,eACd,EACAhB,EACAM,GACA,EACA,KACA,WACA,MAIa,aAAAU,E,6CCnBf,W,uBCGA,IAAIC,EAAU,EAAQ,QACnBA,EAAQC,aAAYD,EAAUA,EAAQE,SACnB,kBAAZF,IAAsBA,EAAU,CAAC,CAACG,EAAOC,EAAIJ,EAAS,MAC7DA,EAAQK,SAAQF,EAAOG,QAAUN,EAAQK,QAE5C,IAAIE,EAAM,EAAQ,QAAqEL,QAC1EK,EAAI,WAAYP,GAAS,EAAM,CAAC,WAAY,EAAM,YAAa,K,qBCR5E,IAAIQ,EAA8B,EAAQ,QAC1CF,EAAUE,GAA4B,GAEtCF,EAAQG,KAAK,CAACN,EAAOC,EAAI,iDAAkD,KAE3ED,EAAOG,QAAUA","file":"kubewarden-1.6.3.umd.min.0.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"reporter-panel\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReporterPanel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReporterPanel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ReporterPanel.vue?vue&type=template&id=1a7cd2cb&scoped=true&\"\nimport script from \"./ReporterPanel.vue?vue&type=script&lang=js&\"\nexport * from \"./ReporterPanel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ReporterPanel.vue?vue&type=style&index=0&id=1a7cd2cb&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a7cd2cb\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReporterPanel.vue?vue&type=style&index=0&id=1a7cd2cb&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a ","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ResourceTab.vue?vue&type=template&id=33cf2dc5&scoped=true&\"\nimport script from \"./ResourceTab.vue?vue&type=script&lang=js&\"\nexport * from \"./ResourceTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResourceTab.vue?vue&type=style&index=0&id=33cf2dc5&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"33cf2dc5\",\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".pr-tab__container .sizzle-warning-bg[data-v-33cf2dc5]{background-color:#614ea2;color:#fff}.pr-tab__container .text-warning[data-v-33cf2dc5]{color:var(--warning)!important}.pr-tab__container .text-darker[data-v-33cf2dc5]{color:var(--dark)!important}.pr-tab__container .sizzle-warning[data-v-33cf2dc5]{color:#614ea2}.pr-tab__sub-row[data-v-33cf2dc5]{background-color:var(--body-bg);border-bottom:1px solid var(--sortable-table-top-divider);padding-left:1rem;padding-right:1rem}.pr-tab__sub-row .message[data-v-33cf2dc5]{display:flex;flex-direction:column}.pr-tab__sub-row .details[data-v-33cf2dc5]{display:flex;flex-direction:row}.pr-tab__sub-row .details .col[data-v-33cf2dc5]{display:flex;flex-direction:column}.pr-tab__sub-row .details .col section[data-v-33cf2dc5]{margin-bottom:1.5rem}.pr-tab__sub-row .details .col .title[data-v-33cf2dc5]{color:var(--muted);margin-bottom:.5rem}\", \"\"]);\n// Exports\nmodule.exports = exports;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.14.js b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.14.js new file mode 100644 index 0000000..c742ede --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.14.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]||[]).push([[14],{"7ada":function(e,t,n){(function(n){var o,a,i;(function(n,r){a=[],o=r,i="function"===typeof o?o.apply(t,a):o,void 0===i||(e.exports=i)})(0,(function(){"use strict";function t(e,t){return"undefined"==typeof t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e}function o(e,t,n){var o=new XMLHttpRequest;o.open("GET",e),o.responseType="blob",o.onload=function(){c(o.response,t,n)},o.onerror=function(){console.error("could not download file")},o.send()}function a(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&299>=t.status}function i(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(o){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var r="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof n&&n.global===n?n:void 0,c=r.saveAs||("object"!=typeof window||window!==r?function(){}:"download"in HTMLAnchorElement.prototype?function(e,t,n){var c=r.URL||r.webkitURL,s=document.createElement("a");t=t||e.name||"download",s.download=t,s.rel="noopener","string"==typeof e?(s.href=e,s.origin===location.origin?i(s):a(s.href)?o(e,t,n):i(s,s.target="_blank")):(s.href=c.createObjectURL(e),setTimeout((function(){c.revokeObjectURL(s.href)}),4e4),setTimeout((function(){i(s)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,n,r){if(n=n||e.name||"download","string"!=typeof e)navigator.msSaveOrOpenBlob(t(e,r),n);else if(a(e))o(e,n,r);else{var c=document.createElement("a");c.href=e,c.target="_blank",setTimeout((function(){i(c)}))}}:function(e,t,n,a){if(a=a||open("","_blank"),a&&(a.document.title=a.document.body.innerText="downloading..."),"string"==typeof e)return o(e,t,n);var i="application/octet-stream"===e.type,c=/constructor/i.test(r.HTMLElement)||r.safari,s=/CriOS\/[\d]+/.test(navigator.userAgent);if((s||i&&c)&&"object"==typeof FileReader){var l=new FileReader;l.onloadend=function(){var e=l.result;e=s?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=e:location=e,a=null},l.readAsDataURL(e)}else{var f=r.URL||r.webkitURL,u=f.createObjectURL(e);a?a.location=u:location.href=u,a=null,setTimeout((function(){f.revokeObjectURL(u)}),4e4)}});r.saveAs=c.saveAs=c,e.exports=c}))}).call(this,n("7d15"))}}]); +//# sourceMappingURL=kubewarden-1.6.3.umd.min.14.js.map \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.14.js.map b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.14.js.map new file mode 100644 index 0000000..b225dfe --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.14.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-1.6.3//home/runner/work/kubewarden-ui/kubewarden-ui/node_modules/file-saver/dist/FileSaver.min.js"],"names":["this","b","a","autoBom","console","warn","test","type","Blob","c","d","e","XMLHttpRequest","open","responseType","onload","response","onerror","error","send","status","dispatchEvent","MouseEvent","document","createEvent","initMouseEvent","window","f","self","global","saveAs","HTMLAnchorElement","prototype","g","h","i","URL","webkitURL","j","createElement","name","download","rel","href","origin","location","target","createObjectURL","setTimeout","revokeObjectURL","navigator","msSaveOrOpenBlob","title","body","innerText","HTMLElement","safari","userAgent","FileReader","onloadend","result","replace","readAsDataURL","k","l","module","exports"],"mappings":"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","file":"kubewarden-1.6.3.umd.min.14.js","sourcesContent":["(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.15.js b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.15.js new file mode 100644 index 0000000..865cc82 --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.15.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]||[]).push([[15],{"1bb6":function(e,t){const o=[{kubewarden:{title:"Kubewarden",unavailability:{banner:"You do not have access to the Kubewarden Dashboard. Please contact your administrator."},generic:{name:"Name"},dashboard:{title:"Dashboard",install:"Install",notInstalled:"Kubewarden is not installed",button:"Install Kubewarden Prerequisites",intro:"Welcome to Kubewarden",blurb:"A Dynamic Admission Controller for Kubernetes",description:"Kubewarden is a policy engine for Kubernetes. It helps with keeping your Kubernetes clusters secure and compliant. Kubewarden policies can be written using regular programming languages or Domain Specific Languages (DSL). Policies are compiled into WebAssembly modules that are then distributed using traditional container registries.\n",getStarted:"Get Started",issues:"Issues",upgrade:{appVersion:"App Version",appUpgrade:"App Upgrade",controllerChart:"Controller",defaultsChart:"Defaults",appVersionUnsatisfied:"The app version of the Kubewarden Defaults ({defaultsAppVersion}) chart does not match the app version of the Kubewarden Controller chart ({controllerAppVersion}). This chart will need to be updated to match the app version of the Kubewarden Controller chart."},policyReports:{oldPolicyReportsIncompatible:"Policy Reports are not compatible with the current version of the Kubewarden App. Please update to version v1.11.0 or newer.",newPolicyReportsIncompatible:"Policy Reports are not compatible with the current version of the Kubewarden extension. Please update to version 1.4.0 or newer."},headers:{policyServer:{title:"Policy Servers",description:"Kubewarden uses Policy Servers to receive requests to be validated. It does that by executing Kubewarden's policies.",linkText:"Create Policy Server",slotTitle:"Policy Server Pods"},admissionPolicy:{title:"Admission Policies",description:"An Admission Policy is a namespace-wide resource. The policy will process only the requests that are targeting the Namespace where the Admission Policy is defined.",linkText:"Create Admission Policy",slotTitle:"Policies"},clusterAdmissionPolicy:{title:"Cluster Admission Policies",description:"The Cluster Admission Policy resource is the core of the Kubewarden stack. This resource defines how policies evaluate requests.",linkText:"Create Cluster Admission Policy",slotTitle:"Policies"},modes:{title:"Policy Modes",monitor:"Monitor",protect:"Protect"}},appInstall:{title:"Kubewarden App Install",description:"This will take you to the app installation page for Kubewarden.",button:"Install Kubewarden",stepTitle:"Kubewarden Install",reload:"Unable to fetch Kubewarden Helm chart - reload required.",versionError:{title:"Chart Version not found.",message:"Unable to determine the latest stable version of the kubewarden-controller chart. Please make sure the Helm repository is configured correctly."}},prerequisites:{title:"Prerequisites",certManager:{title:"Install Cert-Manager Package",description:"The kubewarden-controller depends on cert-manager. You need cert-manager to be installed before installing the kubewarden-controller chart.",manualStep:'Click the button below and follow the Documentation, or run the kubectl command to install the latest version of cert-manager:\n',applyCommand:"kubectl apply -f https://github.com/jetstack/cert-manager/releases/latest/download/cert-manager.yaml",openShell:"Open Kubectl Shell",stepProgress:"The active step will progress once Cert-Manager is installed."},repository:{title:"Repository",description:"You will need the Kubewarden Helm repository (https://charts.kubewarden.io) to install the `kubewarden` chart."},airGapped:{warning:"An air-gapped installation has been detected, this will require intervention to enable access to Kubewarden images and policies. It is necessary to make them available from an OCI registry that is accessible to the cluster.",docs:"Follow the documentation to setup an OCI registry for further installation.\n"}}},tabs:{"security-contexts":{label:"Security Contexts"},general:{label:"General",nameOverride:{label:"nameOverride",description:"Replaces the release name of the chart in Chart.yaml file when this is used to construct Kubernetes object names."},fullnameOverride:{label:"fullnameOverride",description:"Completely replaces the generated release name."},imagePullSecrets:{label:"Image Pull Secrets",description:"Secrets to pull container images from private registries."},image:{label:"Image",description:"Controller image to be used.",repository:"Repository",tag:"Tag"},preDeleteJob:"Kubectl image to be used in the pre-delete helm hook.",podAnnotations:"Pod Annotations",nodeSelector:"Node Selector",tolerations:"Tolerations",affinity:"Affinity",tls:{source:"Source",certManagerIssuerName:"Cert-Manager Issuer Name"}},telemetry:{label:"Telemetry",checkbox:"Enabled",port:"Port",tracing:{label:"Tracing",endpoint:"Endpoint",jaeger:"Jaeger endpoint to send traces.",placeholder:"all-in-one-collector.jaeger.svc.cluster.local:14250"}},verification:{label:"Verification"},registry:{label:"Container Registry"}},policyServer:{title:"Policy Servers",noDefaultsInstalled:{description:'The default PolicyServer and policies are not installed, click the button below to begin installing this chart. See the documentation for more information on installing charts.\n',button:"Install Chart"},policyGauge:{byStatus:"Policies by Status",traces:"Policy Validations"},groups:{kind:"Policy Type"}},admissionPolicy:{title:"Admission Policies",description:"AdmissionPolicy is a namespace-wide resource. These policies will process only the requests that are targeting the Namespace where the AdmissionPolicy is defined."},clusterAdmissionPolicy:{title:"Cluster Admission Policies",description:"ClusterAdmissionPolicy is a cluster-wide resource. These policies will process all requests within the cluster where the ClusterAdmissionPolicy is defined.",kwDefaultsSettingsCompatibility:"ClusterAdmissionPolicies that derive from kubewarden-default Helm Chart will not have editable policy settings since the kubewarden-default Helm Chart version should be greater or equal than 2.0.0",defaultsUpdateBtn:"Update"},customPolicy:{badge:"Custom",title:"Custom Policy",description:"A generic template for using your own policy."},policyTable:{headers:{resource:"Resource Type",features:"Features"}},policies:{noArtifactHub:'Official Kubewarden policies are hosted on ArtifactHub, in order to show these you will need to add `artifacthub.io` to the whitelist-domain setting.',noRules:"There are no rules configured for this policy.",namespaceWarning:"This policy is targeting Rancher specific namespaces which will cause catastrophic failures with your Rancher deployment.",official:"Official Kubewarden Policy",airgap:{banner:"An air-gapped installation is detected, you will be unable to use the policies listed within the ArtifactHub catalog. You are still able to deploy a custom policy by referencing a WebAssembly module that is accessible to this cluster."}},utils:{attributes:{label:"Attributes",optionLabels:{all:"All",organization:"Organization",keyword:"Keyword",resource:"Resource",features:"Features"}},keyword:"Show Keywords & Features",source:"Show Source",resource:"Show Resource Types",search:"Filter",resetFilter:"Reset Filter",official:{label:"Show only official Kubewarden policies"},custom:{create:"Create Custom Policy"}},tracing:{description:"Tracing allows to collect fine grained details about policy evaluations. It can be a useful tool for debugging issues inside of your Kubewarden deployment and policies.",prerequisites:{label:"Prerequisites",description:"There are a few resources which need to be installed for tracing to work correctly with the Kubewarden Controller.",warning:"The deployments of these resources can take a few minutes to become active."},installOpenTelemetry:"Click the button below or run the kubectl command to install the latest version of OpenTelemetry.\n",openTelemetry:'The OpenTelemetry Operator must be installed, follow the documentation to setup the OpenTelemetry Operator.\n',jaeger:'The Jaeger Operator and Instance must be installed, follow the documentation to setup tracing for your policies.\n',noRelatedPolicies:"No related policies found.",noRelatedTraces:"No tracing data exists for the related policies.",noTraces:"No tracing data exists for this policy.",config:{label:'Tracing must be configured with a Jaeger endpoint in the "Telemetry" tab of the Kubewarden Controller chart settings.\n',link:"Update Config"}},monitoring:{notInstalled:'The Monitoring app is not installed, this will will need to be installed and configured to enable metrics. Follow these steps to add the Kubewarden ServiceMonitor for Prometheus.\n',install:"Install Monitoring",prerequisites:{label:"Prerequisites",description:"There are a few resources which need to be installed and configured correctly for monitoring to be available.",warning:"The deployments of these resources can take a few minutes to become active.",tooltips:{prerequisites:"The prerequisite steps have not been completed.",appNotInstalled:"The { app } app is not yet installed.",nsNotFound:"The Namespace `cattle-dashboards` cannot be found.",chartError:"The { chart } chart cannot be found, ensure the repository exists and try reloading the page.",monitorsNotFound:"No Service Monitors found in the `{ namespace }` namespace connected to the Policy Server."},monitoringApp:{label:'The Rancher Monitoring app must be installed. Follow the documentation to install and enable Rancher Monitoring.',install:"Install App",edit:"Edit Config"},serviceMonitor:{label:'A Service Monitor for this Policy Server does not exist. Follow the documentation to learn more about Service Monitors.'},configMap:{label:"Grafana Dashboards (ConfigMaps) for the Policy Servers and for Kubewarden Policies must be created.",button:"Add Dashboards",conflictingDashboardsBanner:"{count, plural,\n=1 {There is a conflicting ConfigMap, this must be deleted before proceeding:}\nother {There are conflicting ConfigMaps, the following must be deleted before proceeding:}\n}"},controllerConfig:{label:'The Kubewarden Controller must be configured to enable metrics. Follow these steps to properly configure the kubewarden-controller chart.',button:"Edit Config"}},warning:{noProxy:"The Grafana proxy URL can not be found or is configured incorrectly."}},metrics:{notInstalled:"The Grafana dashboard for this Kubewarden resource can not be found. You need to create the ConfigMap for the dashboard.",reload:"Grafana dashboard created - reload required",noService:"The Metrics service is not currently active or is not installed correctly. Check the status of the Monitoring app."},policyConfig:{tabs:{general:"General",rules:"Rules",namespaceSelector:"Namespace Selector",settings:"Settings",contextAware:"Context Aware Resources"},serverSelect:{label:"Policy Server",tooltip:"The PolicyServer that will receive the requests to be validated."},module:{label:"Module",tooltip:"This is the WebAssembly module that holds the validation or mutation logic.",placeholder:"ghcr.io/example/policies/custom-policy:v0.1.0"},mutating:{label:"Mutating",tooltip:"A mutating policy will rebuild the requests with definied values that are conformant with the policy definition."},mode:{label:"Mode",tooltip:"The monitor mode is a way to deploy policies to the cluster in a way that all requests that go through the policy will be accepted, as if the policy didn't exist. Defaults to 'Protect'.",warning:"Once the policy mode has been switched to Protect, you will not be able to revert this change.",update:{checkbox:"Update to Protect Mode",title:"Update Policy Mode",body:"The monitor mode is a way to view the behavior of a policy without letting it make the final decision on requests that are validated by the policy."}},backgroundAudit:{label:"Background Audit",tooltip:'Indicates whether a policy should be used or skipped when performing audit checks. If false, the policy cannot produce meaningful evaluation results during audit checks and will be skipped. The default is "true".'},ignoreRancherNamespaces:{label:"Ignore Rancher Namespaces",tooltip:"Certain policies will break core services of Rancher, this will add a default list of namespaces to ignore."},namespaceSelector:{label:"Namespace Selector",description:"NamespaceSelector decides whether to evaluate the policy on a request, based on whether the namespace for that request matches the selector. If the object of the request is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy evaluation.",addSelector:"Add Selectors",matchExpressions:{label:"Match Expressions",tooltip:"matchExpressions is a list of label selector requirements."},matchLabels:{label:"Match Labels",tooltip:"matchLabels is a map of key, value pairs. A single key, value in the matchLabels map is equivalent to an element of matchExpressions, whose key field is 'key', the operator is 'In', and the values array contains only 'value'."}},rules:{add:"Add Rule Set",remove:"Remove Rule Set"},apiGroups:{label:"API Groups",tooltip:"The API groups the resources belong to."},apiVersions:{label:"API Versions",tooltip:"The API versions the resources belong to."},operations:{label:"Operation type",tooltip:"The operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT."},resources:{label:"Resource type",tooltip:"The targeted resources for the policy. Needs to be a resource that is supported by the policy, this is determined in the `metadata.yml` of the selected policy."},scope:{label:"Scope",tooltip:'Specifies the scope of this rule. Valid values are "Cluster", "Namespaced", and "". "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*".'},contextAware:{label:"Context Aware Resources",description:"A list of Kubernetes resources the policy is allowed to access at evaluation time. Access to these resources is done using the ServiceAccount of the PolicyServer the policy is assigned to.",warning:"Kubewarden administrators need to thoroughly examine the types of resources that a policy will access in order to prevent any misuse or abuse of the system. In some cases, it may be necessary to increase the permissions of the ServiceAccount associated with the PolicyServer to enable the policy to retrieve the required information. Although policies are restricted to read-only access to Kubernetes resources, there is a risk that a malicious attacker could exploit a Kubewarden policy to extract sensitive data from the cluster.",resource:{add:"Add Resource",remove:"Remove Resource",apiVersion:{label:"API Version",tooltip:"This is the apiVersion of the resource (v1 for core group, groupName/groupVersions for other)."},kind:{label:"Kind",tooltip:"Singular PascalCase name of the resource"}}},description:{showReadme:"Show Readme"}},policyServerConfig:{securityContexts:{containerConfig:"Container configuration",podConfig:"Pod configuration","allow-priv-escalation":{label:"Allow Privilege Escalation",tooltip:'Allow Privilege Escalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the "no_new_privs" flag will be set on the container process'},capabilities:{title:"Capabilities",add:"Added Capabilities",drop:"Dropped Capabilities",addLabel:"Add",placeholder:"Capability"},privileged:{label:"Run container in privileged mode",tooltip:"Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host"},procMount:{label:"ProcMount",placeholder:"ProcMount type"},readOnlyRootFilesystem:{label:"Whether this container has a read-only root filesystem"},runAsNonRoot:{label:"Container must run as a non-root user",tooltip:"If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does"},runAsGroup:"Run As Group",runAsUser:"Run As User",seLinuxOptions:{title:"SE Linux Options",level:{label:"SELinux level",placeholder:"SELinux level label"},role:{label:"SELinux role",placeholder:"SELinux role label"},type:{label:"SELinux type",placeholder:"SELinux type label"},user:{label:"SELinux user",placeholder:"SELinux user label"}},seccompProfile:{title:"Seccomp Profile",inputEnabledLabel:"Add Seccomp Profile Configuration",localhostProfile:{label:"Localhost Profile",placeholder:"Localhost Profile"},type:"Type"},windowsOptions:{title:"Windows Options",gmsaCredentialSpec:{label:"GMSA Credential Spec",placeholder:"GMSA Credential Spec"},gmsaCredentialSpecName:{label:"GMSA Credential Spec Name",placeholder:"GMSA Credential Spec Name"},hostProcess:{label:"Run as a 'Host Process' container",tooltip:"All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true"},runAsUserName:{label:"Run As UserName",placeholder:"Run As UserName"}},fsGroup:{label:"FS Group"},fsGroupChangePolicy:{label:"FS Group change Policy",placeholder:"FS Group change Policy"},supplementalGroups:{addLabel:"Add Group",label:"Supplemental Group"},sysctls:{addLabel:"Add Sysctls",label:"Sysctls",name:{label:"Name",placeholder:"Name"},value:{label:"Value",placeholder:"Value"}}},defaultImage:{label:"Default Image",tooltip:"Use the default `policy-server` container image.",versionWarning:"The latest stable version for Policy Server could not be determined, falling back to default."},image:{label:"Image URL",tooltip:"This is the container image the policy server."},replicas:"Replicas",registry:{description:'The PolicyServer allows you to pull policies from OCI registries and HTTP servers, by default HTTPS is enforced with host TLS verification. You can interact with registries using untrusted certificates or even without TLS by using the `insecureSources` setting. This approach is highly discouraged in environments closer to production. More information on configuring custom certificate authorities can be found here.'},insecureSources:{title:"Insecure Sources",addLabel:"Add Insecure Source",placeholder:"registry-dev.example.com:5500"},sourceAuthorities:{title:"Source Authorities",add:"Add Source Authority",endpoint:"Registry URI Endpoint",placeholder:"registry-pre.example.com:5500",certificate:{label:"Certificate",add:"Add PEM Certificate",remove:"Remove Certificate",file:"Read Certificate from File"}},verification:{label:"Verification Config",description:'This is the name of a VerificationConfig configmap within the same namespace, containing a Sigstore verification configuration. The configuration must be under a key named verification-config in the Configmap. More information can be found in the Kubewarden docs.'}},policyCharts:{signedPolicy:{label:"Signed",tooltip:"This policy has been signed with { signatures }."},mutationPolicy:{label:"Mutation",tooltip:"A mutating policy will rebuild the requests with definied values that are conformant with the policy definition."},contextAware:{label:"Context Aware",tooltip:"Can determine whether an AdmissionRequest has to be accepted or rejected based on other resources already deployed in the cluster."}},policyReporter:{title:"Policy Reporter",link:"Policy Reporter UI",noSchema:{banner:"Kubewarden has not been installed, this will need to be accomplished before installing the Policy Reporter",link:"Install Kubewarden"},incompatible:{banner:"Your cluster does not support policy reports, upgrade your Kubewarden to version `1.7.0` or greater to add the required crds.",current:"Current Kubewarden Controller version",noCrds:{banner:"The CRDs for `wgpolicyk8s.io.clusterpolicyreport` or `wgpolicyk8s.io.policyreport` can not be found. These must be installed to support policy reports."}},service:{main:{banner:{unavailable:"The Policy Reporter service is unavailable, ensure the properties `auditScanner.enable` and `auditScanner.policyReporter` are set to `true` within the Kubewarden Controller chart."}},ui:{banner:{unavailable:"The Policy Reporter UI service is unavailable, ensure the property `policy-reporter.ui.enabled` is set to `true` within the Kubewarden Controller chart."}}},url:{banner:{unavailable:"The Policy Reporter UI proxy URL is unavailble, please ensure that the UI is properly configured."}},deployment:{banner:{unavailable:"The Policy Reporter UI Deployment is currently in a `{ state }` state, please wait."}},headers:{policyReports:{label:"Compliance",description:"Policy Reports are the results of the policy scans that are stored using the PolicyReport Custom Resource."},clusterPolicyReports:{label:"Cluster Compliance",description:"Cluster Policy Reports are the results of the policy scans that are stored using the ClusterPolicyReport Custom Resource."},label:"Compliance",description:"When using the Kubewarden Audit Scanner, the results of the policy scans are stored using the PolicyReport Custom Resource.",policyReportsTab:{policy:{label:"Policy"},rule:{label:"Rule"},severity:{label:"Severity"},status:{label:"Status"},summary:{label:"Summary"},message:{title:"Message"},properties:{"policy-uid":"policy-uid",version:"policy-resource-version",mutating:"mutating",validating:"validating"}}}}},asyncButton:{artifactHub:{action:"Add ArtifactHub To Whitelist",success:"Added",waiting:"Adding…"},certManager:{action:"Apply Cert-Manager Package",success:"Applied",waiting:"Installing…"},kubewardenRepository:{action:"Add Kubewarden Repository",success:"Added",waiting:"Adding…"},grafanaDashboard:{action:"Add Grafana Dashboards",success:"Added",wating:"Adding…"},serviceMonitor:{action:"Add Service Monitor",success:"Added",waiting:"Adding…"},policyReporterRepo:{action:"Add Policy Reporter Repository",success:"Added",waiting:"Adding…"},policyReporterChart:{action:"Install Policy Reporter Chart",success:"Installed",waiting:"Installing…"}}}];e.exports=o.length<=1?o[0]:o}}]); +//# sourceMappingURL=kubewarden-1.6.3.umd.min.15.js.map \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.15.js.map b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.15.js.map new file mode 100644 index 0000000..2ddbfac --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.15.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-1.6.3/./l10n/en-us.yaml"],"names":["doc","module","exports","length"],"mappings":"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","file":"kubewarden-1.6.3.umd.min.15.js","sourcesContent":["const doc = [({\"kubewarden\":({\"title\":\"Kubewarden\", \"unavailability\":({\"banner\":\"You do not have access to the Kubewarden Dashboard. Please contact your administrator.\"}), \"generic\":({\"name\":\"Name\"}), \"dashboard\":({\"title\":\"Dashboard\", \"install\":\"Install\", \"notInstalled\":\"Kubewarden is not installed\", \"button\":\"Install Kubewarden Prerequisites\", \"intro\":\"Welcome to Kubewarden\", \"blurb\":\"A Dynamic Admission Controller for Kubernetes\", \"description\":\"Kubewarden is a policy engine for Kubernetes. It helps with keeping your Kubernetes clusters secure and compliant. Kubewarden policies can be written using regular programming languages or Domain Specific Languages (DSL). Policies are compiled into WebAssembly modules that are then distributed using traditional container registries.\\n\", \"getStarted\":\"Get Started\", \"issues\":\"Issues\", \"upgrade\":({\"appVersion\":\"App Version\", \"appUpgrade\":\"App Upgrade\", \"controllerChart\":\"Controller\", \"defaultsChart\":\"Defaults\", \"appVersionUnsatisfied\":\"The app version of the Kubewarden Defaults ({defaultsAppVersion}) chart does not match the app version of the Kubewarden Controller chart ({controllerAppVersion}). This chart will need to be updated to match the app version of the Kubewarden Controller chart.\"}), \"policyReports\":({\"oldPolicyReportsIncompatible\":\"Policy Reports are not compatible with the current version of the Kubewarden App. Please update to version v1.11.0 or newer.\", \"newPolicyReportsIncompatible\":\"Policy Reports are not compatible with the current version of the Kubewarden extension. Please update to version 1.4.0 or newer.\"}), \"headers\":({\"policyServer\":({\"title\":\"Policy Servers\", \"description\":\"Kubewarden uses Policy Servers to receive requests to be validated. It does that by executing Kubewarden's policies.\", \"linkText\":\"Create Policy Server\", \"slotTitle\":\"Policy Server Pods\"}), \"admissionPolicy\":({\"title\":\"Admission Policies\", \"description\":\"An Admission Policy is a namespace-wide resource. The policy will process only the requests that are targeting the Namespace where the Admission Policy is defined.\", \"linkText\":\"Create Admission Policy\", \"slotTitle\":\"Policies\"}), \"clusterAdmissionPolicy\":({\"title\":\"Cluster Admission Policies\", \"description\":\"The Cluster Admission Policy resource is the core of the Kubewarden stack. This resource defines how policies evaluate requests.\", \"linkText\":\"Create Cluster Admission Policy\", \"slotTitle\":\"Policies\"}), \"modes\":({\"title\":\"Policy Modes\", \"monitor\":\"Monitor\", \"protect\":\"Protect\"})}), \"appInstall\":({\"title\":\"Kubewarden App Install\", \"description\":\"This will take you to the app installation page for Kubewarden.\", \"button\":\"Install Kubewarden\", \"stepTitle\":\"Kubewarden Install\", \"reload\":\"Unable to fetch Kubewarden Helm chart - reload required.\", \"versionError\":({\"title\":\"Chart Version not found.\", \"message\":\"Unable to determine the latest stable version of the kubewarden-controller chart. Please make sure the Helm repository is configured correctly.\"})}), \"prerequisites\":({\"title\":\"Prerequisites\", \"certManager\":({\"title\":\"Install Cert-Manager Package\", \"description\":\"The kubewarden-controller depends on cert-manager. You need cert-manager to be installed before installing the kubewarden-controller chart.\", \"manualStep\":\"Click the button below and follow the Documentation, or run the kubectl command to install the latest version of cert-manager:\\n\", \"applyCommand\":\"kubectl apply -f https://github.com/jetstack/cert-manager/releases/latest/download/cert-manager.yaml\", \"openShell\":\"Open Kubectl Shell\", \"stepProgress\":\"The active step will progress once Cert-Manager is installed.\"}), \"repository\":({\"title\":\"Repository\", \"description\":\"You will need the Kubewarden Helm repository (https://charts.kubewarden.io) to install the `kubewarden` chart.\"}), \"airGapped\":({\"warning\":\"An air-gapped installation has been detected, this will require intervention to enable access to Kubewarden images and policies. It is necessary to make them available from an OCI registry that is accessible to the cluster.\", \"docs\":\"Follow the documentation to setup an OCI registry for further installation.\\n\"})})}), \"tabs\":({\"security-contexts\":({\"label\":\"Security Contexts\"}), \"general\":({\"label\":\"General\", \"nameOverride\":({\"label\":\"nameOverride\", \"description\":\"Replaces the release name of the chart in Chart.yaml file when this is used to construct Kubernetes object names.\"}), \"fullnameOverride\":({\"label\":\"fullnameOverride\", \"description\":\"Completely replaces the generated release name.\"}), \"imagePullSecrets\":({\"label\":\"Image Pull Secrets\", \"description\":\"Secrets to pull container images from private registries.\"}), \"image\":({\"label\":\"Image\", \"description\":\"Controller image to be used.\", \"repository\":\"Repository\", \"tag\":\"Tag\"}), \"preDeleteJob\":\"Kubectl image to be used in the pre-delete helm hook.\", \"podAnnotations\":\"Pod Annotations\", \"nodeSelector\":\"Node Selector\", \"tolerations\":\"Tolerations\", \"affinity\":\"Affinity\", \"tls\":({\"source\":\"Source\", \"certManagerIssuerName\":\"Cert-Manager Issuer Name\"})}), \"telemetry\":({\"label\":\"Telemetry\", \"checkbox\":\"Enabled\", \"port\":\"Port\", \"tracing\":({\"label\":\"Tracing\", \"endpoint\":\"Endpoint\", \"jaeger\":\"Jaeger endpoint to send traces.\", \"placeholder\":\"all-in-one-collector.jaeger.svc.cluster.local:14250\"})}), \"verification\":({\"label\":\"Verification\"}), \"registry\":({\"label\":\"Container Registry\"})}), \"policyServer\":({\"title\":\"Policy Servers\", \"noDefaultsInstalled\":({\"description\":\"The default PolicyServer and policies are not installed, click the button below to begin installing this chart. See the documentation for more information on installing charts.\\n\", \"button\":\"Install Chart\"}), \"policyGauge\":({\"byStatus\":\"Policies by Status\", \"traces\":\"Policy Validations\"}), \"groups\":({\"kind\":\"Policy Type\"})}), \"admissionPolicy\":({\"title\":\"Admission Policies\", \"description\":\"AdmissionPolicy is a namespace-wide resource. These policies will process only the requests that are targeting the Namespace where the AdmissionPolicy is defined.\"}), \"clusterAdmissionPolicy\":({\"title\":\"Cluster Admission Policies\", \"description\":\"ClusterAdmissionPolicy is a cluster-wide resource. These policies will process all requests within the cluster where the ClusterAdmissionPolicy is defined.\", \"kwDefaultsSettingsCompatibility\":\"ClusterAdmissionPolicies that derive from kubewarden-default Helm Chart will not have editable policy settings since the kubewarden-default Helm Chart version should be greater or equal than 2.0.0\", \"defaultsUpdateBtn\":\"Update\"}), \"customPolicy\":({\"badge\":\"Custom\", \"title\":\"Custom Policy\", \"description\":\"A generic template for using your own policy.\"}), \"policyTable\":({\"headers\":({\"resource\":\"Resource Type\", \"features\":\"Features\"})}), \"policies\":({\"noArtifactHub\":\"Official Kubewarden policies are hosted on ArtifactHub, in order to show these you will need to add `artifacthub.io` to the whitelist-domain setting.\", \"noRules\":\"There are no rules configured for this policy.\", \"namespaceWarning\":\"This policy is targeting Rancher specific namespaces which will cause catastrophic failures with your Rancher deployment.\", \"official\":\"Official Kubewarden Policy\", \"airgap\":({\"banner\":\"An air-gapped installation is detected, you will be unable to use the policies listed within the ArtifactHub catalog. You are still able to deploy a custom policy by referencing a WebAssembly module that is accessible to this cluster.\"})}), \"utils\":({\"attributes\":({\"label\":\"Attributes\", \"optionLabels\":({\"all\":\"All\", \"organization\":\"Organization\", \"keyword\":\"Keyword\", \"resource\":\"Resource\", \"features\":\"Features\"})}), \"keyword\":\"Show Keywords & Features\", \"source\":\"Show Source\", \"resource\":\"Show Resource Types\", \"search\":\"Filter\", \"resetFilter\":\"Reset Filter\", \"official\":({\"label\":\"Show only official Kubewarden policies\"}), \"custom\":({\"create\":\"Create Custom Policy\"})}), \"tracing\":({\"description\":\"Tracing allows to collect fine grained details about policy evaluations. It can be a useful tool for debugging issues inside of your Kubewarden deployment and policies.\", \"prerequisites\":({\"label\":\"Prerequisites\", \"description\":\"There are a few resources which need to be installed for tracing to work correctly with the Kubewarden Controller.\", \"warning\":\"The deployments of these resources can take a few minutes to become active.\"}), \"installOpenTelemetry\":\"Click the button below or run the kubectl command to install the latest version of OpenTelemetry.\\n\", \"openTelemetry\":\"The OpenTelemetry Operator must be installed, follow the documentation to setup the OpenTelemetry Operator.\\n\", \"jaeger\":\"The Jaeger Operator and Instance must be installed, follow the documentation to setup tracing for your policies.\\n\", \"noRelatedPolicies\":\"No related policies found.\", \"noRelatedTraces\":\"No tracing data exists for the related policies.\", \"noTraces\":\"No tracing data exists for this policy.\", \"config\":({\"label\":\"Tracing must be configured with a Jaeger endpoint in the \\\"Telemetry\\\" tab of the Kubewarden Controller chart settings.\\n\", \"link\":\"Update Config\"})}), \"monitoring\":({\"notInstalled\":\"The Monitoring app is not installed, this will will need to be installed and configured to enable metrics. Follow these steps to add the Kubewarden ServiceMonitor for Prometheus.\\n\", \"install\":\"Install Monitoring\", \"prerequisites\":({\"label\":\"Prerequisites\", \"description\":\"There are a few resources which need to be installed and configured correctly for monitoring to be available.\", \"warning\":\"The deployments of these resources can take a few minutes to become active.\", \"tooltips\":({\"prerequisites\":\"The prerequisite steps have not been completed.\", \"appNotInstalled\":\"The { app } app is not yet installed.\", \"nsNotFound\":\"The Namespace `cattle-dashboards` cannot be found.\", \"chartError\":\"The { chart } chart cannot be found, ensure the repository exists and try reloading the page.\", \"monitorsNotFound\":\"No Service Monitors found in the `{ namespace }` namespace connected to the Policy Server.\"}), \"monitoringApp\":({\"label\":\"The Rancher Monitoring app must be installed. Follow the documentation to install and enable Rancher Monitoring.\", \"install\":\"Install App\", \"edit\":\"Edit Config\"}), \"serviceMonitor\":({\"label\":\"A Service Monitor for this Policy Server does not exist. Follow the documentation to learn more about Service Monitors.\"}), \"configMap\":({\"label\":\"Grafana Dashboards (ConfigMaps) for the Policy Servers and for Kubewarden Policies must be created.\", \"button\":\"Add Dashboards\", \"conflictingDashboardsBanner\":\"{count, plural,\\n=1 {There is a conflicting ConfigMap, this must be deleted before proceeding:}\\nother {There are conflicting ConfigMaps, the following must be deleted before proceeding:}\\n}\"}), \"controllerConfig\":({\"label\":\"The Kubewarden Controller must be configured to enable metrics. Follow these steps to properly configure the kubewarden-controller chart.\", \"button\":\"Edit Config\"})}), \"warning\":({\"noProxy\":\"The Grafana proxy URL can not be found or is configured incorrectly.\"})}), \"metrics\":({\"notInstalled\":\"The Grafana dashboard for this Kubewarden resource can not be found. You need to create the ConfigMap for the dashboard.\", \"reload\":\"Grafana dashboard created - reload required\", \"noService\":\"The Metrics service is not currently active or is not installed correctly. Check the status of the Monitoring app.\"}), \"policyConfig\":({\"tabs\":({\"general\":\"General\", \"rules\":\"Rules\", \"namespaceSelector\":\"Namespace Selector\", \"settings\":\"Settings\", \"contextAware\":\"Context Aware Resources\"}), \"serverSelect\":({\"label\":\"Policy Server\", \"tooltip\":\"The PolicyServer that will receive the requests to be validated.\"}), \"module\":({\"label\":\"Module\", \"tooltip\":\"This is the WebAssembly module that holds the validation or mutation logic.\", \"placeholder\":\"ghcr.io/example/policies/custom-policy:v0.1.0\"}), \"mutating\":({\"label\":\"Mutating\", \"tooltip\":\"A mutating policy will rebuild the requests with definied values that are conformant with the policy definition.\"}), \"mode\":({\"label\":\"Mode\", \"tooltip\":\"The monitor mode is a way to deploy policies to the cluster in a way that all requests that go through the policy will be accepted, as if the policy didn't exist. Defaults to 'Protect'.\", \"warning\":\"Once the policy mode has been switched to Protect, you will not be able to revert this change.\", \"update\":({\"checkbox\":\"Update to Protect Mode\", \"title\":\"Update Policy Mode\", \"body\":\"The monitor mode is a way to view the behavior of a policy without letting it make the final decision on requests that are validated by the policy.\"})}), \"backgroundAudit\":({\"label\":\"Background Audit\", \"tooltip\":\"Indicates whether a policy should be used or skipped when performing audit checks. If false, the policy cannot produce meaningful evaluation results during audit checks and will be skipped. The default is \\\"true\\\".\"}), \"ignoreRancherNamespaces\":({\"label\":\"Ignore Rancher Namespaces\", \"tooltip\":\"Certain policies will break core services of Rancher, this will add a default list of namespaces to ignore.\"}), \"namespaceSelector\":({\"label\":\"Namespace Selector\", \"description\":\"NamespaceSelector decides whether to evaluate the policy on a request, based on whether the namespace for that request matches the selector. If the object of the request is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy evaluation.\", \"addSelector\":\"Add Selectors\", \"matchExpressions\":({\"label\":\"Match Expressions\", \"tooltip\":\"matchExpressions is a list of label selector requirements.\"}), \"matchLabels\":({\"label\":\"Match Labels\", \"tooltip\":\"matchLabels is a map of key, value pairs. A single key, value in the matchLabels map is equivalent to an element of matchExpressions, whose key field is 'key', the operator is 'In', and the values array contains only 'value'.\"})}), \"rules\":({\"add\":\"Add Rule Set\", \"remove\":\"Remove Rule Set\"}), \"apiGroups\":({\"label\":\"API Groups\", \"tooltip\":\"The API groups the resources belong to.\"}), \"apiVersions\":({\"label\":\"API Versions\", \"tooltip\":\"The API versions the resources belong to.\"}), \"operations\":({\"label\":\"Operation type\", \"tooltip\":\"The operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT.\"}), \"resources\":({\"label\":\"Resource type\", \"tooltip\":\"The targeted resources for the policy. Needs to be a resource that is supported by the policy, this is determined in the `metadata.yml` of the selected policy.\"}), \"scope\":({\"label\":\"Scope\", \"tooltip\":\"Specifies the scope of this rule. Valid values are \\\"Cluster\\\", \\\"Namespaced\\\", and \\\"\\\". \\\"Cluster\\\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \\\"Namespaced\\\" means that only namespaced resources will match this rule. \\\"\\\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \\\"*\\\".\"}), \"contextAware\":({\"label\":\"Context Aware Resources\", \"description\":\"A list of Kubernetes resources the policy is allowed to access at evaluation time. Access to these resources is done using the ServiceAccount of the PolicyServer the policy is assigned to.\", \"warning\":\"Kubewarden administrators need to thoroughly examine the types of resources that a policy will access in order to prevent any misuse or abuse of the system. In some cases, it may be necessary to increase the permissions of the ServiceAccount associated with the PolicyServer to enable the policy to retrieve the required information. Although policies are restricted to read-only access to Kubernetes resources, there is a risk that a malicious attacker could exploit a Kubewarden policy to extract sensitive data from the cluster.\", \"resource\":({\"add\":\"Add Resource\", \"remove\":\"Remove Resource\", \"apiVersion\":({\"label\":\"API Version\", \"tooltip\":\"This is the apiVersion of the resource (v1 for core group, groupName/groupVersions for other).\"}), \"kind\":({\"label\":\"Kind\", \"tooltip\":\"Singular PascalCase name of the resource\"})})}), \"description\":({\"showReadme\":\"Show Readme\"})}), \"policyServerConfig\":({\"securityContexts\":({\"containerConfig\":\"Container configuration\", \"podConfig\":\"Pod configuration\", \"allow-priv-escalation\":({\"label\":\"Allow Privilege Escalation\", \"tooltip\":\"Allow Privilege Escalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the \\\"no_new_privs\\\" flag will be set on the container process\"}), \"capabilities\":({\"title\":\"Capabilities\", \"add\":\"Added Capabilities\", \"drop\":\"Dropped Capabilities\", \"addLabel\":\"Add\", \"placeholder\":\"Capability\"}), \"privileged\":({\"label\":\"Run container in privileged mode\", \"tooltip\":\"Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host\"}), \"procMount\":({\"label\":\"ProcMount\", \"placeholder\":\"ProcMount type\"}), \"readOnlyRootFilesystem\":({\"label\":\"Whether this container has a read-only root filesystem\"}), \"runAsNonRoot\":({\"label\":\"Container must run as a non-root user\", \"tooltip\":\"If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does\"}), \"runAsGroup\":\"Run As Group\", \"runAsUser\":\"Run As User\", \"seLinuxOptions\":({\"title\":\"SE Linux Options\", \"level\":({\"label\":\"SELinux level\", \"placeholder\":\"SELinux level label\"}), \"role\":({\"label\":\"SELinux role\", \"placeholder\":\"SELinux role label\"}), \"type\":({\"label\":\"SELinux type\", \"placeholder\":\"SELinux type label\"}), \"user\":({\"label\":\"SELinux user\", \"placeholder\":\"SELinux user label\"})}), \"seccompProfile\":({\"title\":\"Seccomp Profile\", \"inputEnabledLabel\":\"Add Seccomp Profile Configuration\", \"localhostProfile\":({\"label\":\"Localhost Profile\", \"placeholder\":\"Localhost Profile\"}), \"type\":\"Type\"}), \"windowsOptions\":({\"title\":\"Windows Options\", \"gmsaCredentialSpec\":({\"label\":\"GMSA Credential Spec\", \"placeholder\":\"GMSA Credential Spec\"}), \"gmsaCredentialSpecName\":({\"label\":\"GMSA Credential Spec Name\", \"placeholder\":\"GMSA Credential Spec Name\"}), \"hostProcess\":({\"label\":\"Run as a 'Host Process' container\", \"tooltip\":\"All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true\"}), \"runAsUserName\":({\"label\":\"Run As UserName\", \"placeholder\":\"Run As UserName\"})}), \"fsGroup\":({\"label\":\"FS Group\"}), \"fsGroupChangePolicy\":({\"label\":\"FS Group change Policy\", \"placeholder\":\"FS Group change Policy\"}), \"supplementalGroups\":({\"addLabel\":\"Add Group\", \"label\":\"Supplemental Group\"}), \"sysctls\":({\"addLabel\":\"Add Sysctls\", \"label\":\"Sysctls\", \"name\":({\"label\":\"Name\", \"placeholder\":\"Name\"}), \"value\":({\"label\":\"Value\", \"placeholder\":\"Value\"})})}), \"defaultImage\":({\"label\":\"Default Image\", \"tooltip\":\"Use the default `policy-server` container image.\", \"versionWarning\":\"The latest stable version for Policy Server could not be determined, falling back to default.\"}), \"image\":({\"label\":\"Image URL\", \"tooltip\":\"This is the container image the policy server.\"}), \"replicas\":\"Replicas\", \"registry\":({\"description\":\"The PolicyServer allows you to pull policies from OCI registries and HTTP servers, by default HTTPS is enforced with host TLS verification. You can interact with registries using untrusted certificates or even without TLS by using the `insecureSources` setting. This approach is highly discouraged in environments closer to production. More information on configuring custom certificate authorities can be found here.\"}), \"insecureSources\":({\"title\":\"Insecure Sources\", \"addLabel\":\"Add Insecure Source\", \"placeholder\":\"registry-dev.example.com:5500\"}), \"sourceAuthorities\":({\"title\":\"Source Authorities\", \"add\":\"Add Source Authority\", \"endpoint\":\"Registry URI Endpoint\", \"placeholder\":\"registry-pre.example.com:5500\", \"certificate\":({\"label\":\"Certificate\", \"add\":\"Add PEM Certificate\", \"remove\":\"Remove Certificate\", \"file\":\"Read Certificate from File\"})}), \"verification\":({\"label\":\"Verification Config\", \"description\":\"This is the name of a VerificationConfig configmap within the same namespace, containing a Sigstore verification configuration. The configuration must be under a key named verification-config in the Configmap. More information can be found in the Kubewarden docs.\"})}), \"policyCharts\":({\"signedPolicy\":({\"label\":\"Signed\", \"tooltip\":\"This policy has been signed with { signatures }.\"}), \"mutationPolicy\":({\"label\":\"Mutation\", \"tooltip\":\"A mutating policy will rebuild the requests with definied values that are conformant with the policy definition.\"}), \"contextAware\":({\"label\":\"Context Aware\", \"tooltip\":\"Can determine whether an AdmissionRequest has to be accepted or rejected based on other resources already deployed in the cluster.\"})}), \"policyReporter\":({\"title\":\"Policy Reporter\", \"link\":\"Policy Reporter UI\", \"noSchema\":({\"banner\":\"Kubewarden has not been installed, this will need to be accomplished before installing the Policy Reporter\", \"link\":\"Install Kubewarden\"}), \"incompatible\":({\"banner\":\"Your cluster does not support policy reports, upgrade your Kubewarden to version `1.7.0` or greater to add the required crds.\", \"current\":\"Current Kubewarden Controller version\", \"noCrds\":({\"banner\":\"The CRDs for `wgpolicyk8s.io.clusterpolicyreport` or `wgpolicyk8s.io.policyreport` can not be found. These must be installed to support policy reports.\"})}), \"service\":({\"main\":({\"banner\":({\"unavailable\":\"The Policy Reporter service is unavailable, ensure the properties `auditScanner.enable` and `auditScanner.policyReporter` are set to `true` within the Kubewarden Controller chart.\"})}), \"ui\":({\"banner\":({\"unavailable\":\"The Policy Reporter UI service is unavailable, ensure the property `policy-reporter.ui.enabled` is set to `true` within the Kubewarden Controller chart.\"})})}), \"url\":({\"banner\":({\"unavailable\":\"The Policy Reporter UI proxy URL is unavailble, please ensure that the UI is properly configured.\"})}), \"deployment\":({\"banner\":({\"unavailable\":\"The Policy Reporter UI Deployment is currently in a `{ state }` state, please wait.\"})}), \"headers\":({\"policyReports\":({\"label\":\"Compliance\", \"description\":\"Policy Reports are the results of the policy scans that are stored using the PolicyReport Custom Resource.\"}), \"clusterPolicyReports\":({\"label\":\"Cluster Compliance\", \"description\":\"Cluster Policy Reports are the results of the policy scans that are stored using the ClusterPolicyReport Custom Resource.\"}), \"label\":\"Compliance\", \"description\":\"When using the Kubewarden Audit Scanner, the results of the policy scans are stored using the PolicyReport Custom Resource.\", \"policyReportsTab\":({\"policy\":({\"label\":\"Policy\"}), \"rule\":({\"label\":\"Rule\"}), \"severity\":({\"label\":\"Severity\"}), \"status\":({\"label\":\"Status\"}), \"summary\":({\"label\":\"Summary\"}), \"message\":({\"title\":\"Message\"}), \"properties\":({\"policy-uid\":\"policy-uid\", \"version\":\"policy-resource-version\", \"mutating\":\"mutating\", \"validating\":\"validating\"})})})})}), \"asyncButton\":({\"artifactHub\":({\"action\":\"Add ArtifactHub To Whitelist\", \"success\":\"Added\", \"waiting\":\"Adding…\"}), \"certManager\":({\"action\":\"Apply Cert-Manager Package\", \"success\":\"Applied\", \"waiting\":\"Installing…\"}), \"kubewardenRepository\":({\"action\":\"Add Kubewarden Repository\", \"success\":\"Added\", \"waiting\":\"Adding…\"}), \"grafanaDashboard\":({\"action\":\"Add Grafana Dashboards\", \"success\":\"Added\", \"wating\":\"Adding…\"}), \"serviceMonitor\":({\"action\":\"Add Service Monitor\", \"success\":\"Added\", \"waiting\":\"Adding…\"}), \"policyReporterRepo\":({\"action\":\"Add Policy Reporter Repository\", \"success\":\"Added\", \"waiting\":\"Adding…\"}), \"policyReporterChart\":({\"action\":\"Install Policy Reporter Chart\", \"success\":\"Installed\", \"waiting\":\"Installing…\"})})})];\nmodule.exports = doc.length <= 1 ? doc[0] : doc;"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.airgap-docs.js b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.airgap-docs.js new file mode 100644 index 0000000..cbdc78f --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.airgap-docs.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]||[]).push([[1],{"11cb":function(e,s,n){e.exports=n.p+"assets/airgap-installation.md"}}]); +//# sourceMappingURL=kubewarden-1.6.3.umd.min.airgap-docs.js.map \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.airgap-docs.js.map b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.airgap-docs.js.map new file mode 100644 index 0000000..7af965a --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.airgap-docs.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-1.6.3/./assets/airgap-installation.md"],"names":["module","exports"],"mappings":"oLAAAA,EAAOC,QAAU,IAA0B","file":"kubewarden-1.6.3.umd.min.airgap-docs.js","sourcesContent":["module.exports = __webpack_public_path__ + \"assets/airgap-installation.md\";"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.detail.js b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.detail.js new file mode 100644 index 0000000..bdcf07d --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.detail.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]||[]).push([[2],{"00ce":function(e,t,r){"use strict";var a=function(){var e=this,t=e._self._c;return e.$fetchState.pending||e.refreshingCharts?t("Loading",{attrs:{mode:"relative"}}):t("div",[e.showChecklist?t("TraceChecklist",{attrs:{"controller-app":e.controllerApp,"controller-chart":e.controllerChart,"tracing-configuration":e.tracingConfiguration,"jaeger-query-svc":e.jaegerQuerySvc,"open-tel-svc":e.openTelSvc}}):!e.showChecklist&&e.emptyPolicies?t("Banner",{attrs:{color:"error",label:e.t("kubewarden.tracing.noRelatedPolicies")}}):e.showTable?t("SortableTable",{attrs:{rows:e.filteredValidations,headers:e.TRACE_HEADERS,"table-actions":!1,"row-actions":!1,"key-field":"id","default-sort-by":"startTime","sub-expandable":!0,"sub-expand-column":!0,"sub-rows":!0,paging:!0,"rows-per-page":e.rowsPerPage},scopedSlots:e._u([{key:"col:mode",fn:function({row:r}){return[t("td",[t("BadgeState",{staticClass:"text-capitalize",attrs:{label:r.mode,color:e.modeColor(r.mode)}})],1)]}},{key:"col:name",fn:function({row:r}){return[t("td",{staticClass:"text-bold"},[e._v(" "+e._s(r.name)+" ")])]}},{key:"col:namespace",fn:function({row:r}){return[t("td",[e._v(" "+e._s(r.namespace?r.namespace:"-")+" ")])]}},{key:"col:startTime",fn:function({row:r}){return[t("td",[e._v(" "+e._s(e.formatTime(r.startTime))+" ")])]}},{key:"col:duration",fn:function({row:r}){return[t("td",[e._v(" "+e._s(e.duration(r.duration))+" ")])]}},{key:"sub-row",fn:function({row:r,fullColspan:a}){return[t("td",{staticClass:"sub-row",attrs:{colspan:a}},[t("div",{staticClass:"details"},[t("section",{staticClass:"col"},[t("div",{staticClass:"title"},[e._v(" Response Message ")]),t("span",{staticClass:"text-info text-capitalize"},[e._v(" "+e._s(r.responseMessage?r.responseMessage:"-")+" ")])]),t("section",{staticClass:"col"},[t("div",{staticClass:"title"},[e._v(" Response Code ")]),t("span",{staticClass:"text-info"},[e._v(" "+e._s(r.responseCode?r.responseCode:"-")+" ")])]),t("section",{staticClass:"col"},[t("div",{staticClass:"title"},[e._v(" Mutated ")]),t("span",{staticClass:"text-info"},[e._v(" "+e._s(r.mutated)+" ")])])])])]}}])}):t("Banner",{attrs:{color:"warning",label:e.t(e.emptyTracesLabel)}})],1)},i=[],o=r("9ce4"),n=r("330a"),s=r.n(n),l=r("050d"),c=r.n(l),d=r("be6d"),u=r.n(d),p=r("907c"),v=r("4ac6"),h=r("2359"),m=r("a8b9"),f=r("f17a"),b=r("6418"),g=r("15ca"),y=r("0fb1"),k=r("5191"),w=r("90cd"),_=r("5136"),C=r("7d99"),S=r.n(C),O=r("37ef"),T=r.n(O),A=r("e4c5"),R=r.n(A);c.a.extend(R.a);const E=1e3,P=1e3*E,j=60*P,x=60*j,M=24*x,N=[{unit:"d",microseconds:M,ofPrevious:24},{unit:"h",microseconds:x,ofPrevious:60},{unit:"m",microseconds:j,ofPrevious:60},{unit:"s",microseconds:P,ofPrevious:1e3},{unit:"ms",microseconds:E,ofPrevious:1e3},{unit:"μs",microseconds:1,ofPrevious:1e3}];function D(e){const[t,r]=S()(N,({microseconds:t},r)=>re);if(1e3===t.ofPrevious)return`${T()(e/t.microseconds,2)}${t.unit}`;const a=Math.floor(e/t.microseconds),i=`${a}${t.unit}`,o=Math.round(e/r.microseconds%t.ofPrevious),n=`${o}${r.unit}`;return 0===o?i:`${i} ${n}`}var L=function(){var e=this,t=e._self._c;return t("div",[t("p",{staticClass:"checklist__description mb-20",attrs:{"data-testid":"kw-tracing-checklist-description"}},[e._v(" "+e._s(e.t("kubewarden.tracing.description"))+" ")]),t("div",{staticClass:"checklist__prereq mb-20"},[t("h2",[e._v(e._s(e.t("kubewarden.tracing.prerequisites.label")))]),t("p",[e._v(e._s(e.t("kubewarden.tracing.prerequisites.description")))])]),t("Banner",{attrs:{color:"warning",label:e.t("kubewarden.tracing.prerequisites.warning")}}),t("div",{staticClass:"checklist__container mt-20 mb-20"},[t("div",{staticClass:"checklist__step mt-20 mb-20",attrs:{"data-testid":"kw-tracing-checklist-step-open-tel"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.openTelSvc)}),t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.tracing.openTelemetry",{},!0),expression:"t('kubewarden.tracing.openTelemetry', {}, true)"}]})]),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-tracing-checklist-step-jaeger"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.jaegerQuerySvc)}),t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.tracing.jaeger",{},!0),expression:"t('kubewarden.tracing.jaeger', {}, true)"}],attrs:{p:""}})]),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-tracing-checklist-step-config"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.tracingEnabled)}),t("div",{staticClass:"checklist__config"},[t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.tracing.config.label",{},!0),expression:"t('kubewarden.tracing.config.label', {}, true)"}]}),t("button",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.controllerLinkTooltip,expression:"controllerLinkTooltip"}],staticClass:"btn role-primary ml-10",attrs:{"data-testid":"kw-tracing-checklist-step-config-button",disabled:e.controllerLinkDisabled},on:{click:e.controllerAppRoute}},[e._v(" "+e._s(e.t("kubewarden.tracing.config.link"))+" ")])])])])],1)},$=[],I=r("da25"),q={props:{controllerApp:{type:Object,default:null},controllerChart:{type:Object,default:null},tracingConfiguration:{type:Object,default:null},jaegerQuerySvc:{type:Object,default:null},openTelSvc:{type:Object,default:null}},components:{Banner:b["a"]},computed:{...Object(o["a"])(["currentCluster"]),controllerLinkTooltip(){return this.openTelSvc&&this.jaegerQuerySvc?this.controllerApp&&this.controllerChart?null:this.t("kubewarden.monitoring.prerequisites.tooltips.chartError",{chart:"Kubewarden Controller"},!0):this.t("kubewarden.monitoring.prerequisites.tooltips.prerequisites")},controllerLinkDisabled(){return!this.openTelSvc||!this.jaegerQuerySvc||!this.controllerApp||!this.controllerChart},tracingEnabled(){return this.tracingConfiguration?this.tracingConfiguration.enabled:null}},methods:{badgeIcon(e){return{"icon-dot-open":!e,"icon-checkmark":e,"text-success":e}},controllerAppRoute(){if(this.controllerApp){var e,t,r,a,i,o,n;const s=null===(e=this.controllerApp.spec)||void 0===e||null===(e=e.chart)||void 0===e?void 0:e.metadata,l={[I["g"]]:null===s||void 0===s||null===(t=s.annotations)||void 0===t?void 0:t[v["c"].NAMESPACE],[I["f"]]:null===s||void 0===s||null===(r=s.annotations)||void 0===r?void 0:r[v["c"].RELEASE_NAME],[I["q"]]:null===s||void 0===s||null===(a=s.annotations)||void 0===a?void 0:a["catalog.cattle.io/upstream-version"],[I["i"]]:null===s||void 0===s||null===(i=s.annotations)||void 0===i?void 0:i[v["c"].SOURCE_REPO_NAME],[I["j"]]:null===s||void 0===s||null===(o=s.annotations)||void 0===o?void 0:o[v["c"].SOURCE_REPO_TYPE],[I["d"]]:null===s||void 0===s?void 0:s.name};this.$router.push({name:"c-cluster-apps-charts-install",params:{cluster:(null===(n=this.currentCluster)||void 0===n?void 0:n.id)||"_"},query:l})}}}},G=q,B=(r("6478"),r("d802")),V=Object(B["a"])(G,L,$,!1,null,"63ad3d60",null),U=V.exports;c.a.extend(u.a);var Y={props:{resource:{type:String,default:()=>""},relatedPolicies:{type:Array,default:()=>[]},policy:{type:Object,default:()=>{}}},components:{BadgeState:f["a"],Banner:b["a"],Loading:g["a"],SortableTable:y["b"],TraceChecklist:U},mixins:[h["a"]],async fetch(){const e=[p["a"].APP,p["a"].CLUSTER_REPO,p["z"]],t=[];for(const r of e)this.$store.getters["cluster/canList"](r)&&t.push(this.$fetchType(r));if(await Object(m["a"])(t),this.jaegerQuerySvc){const e={store:this.$store,queryService:this.jaegerQuerySvc,resource:this.resource,relatedPolicies:null,policy:null};this.resource===w["f"].POLICY_SERVER?e.relatedPolicies=this.relatedPolicies:e.policy=this.policy,this.specificValidations=await Object(_["b"])(e)}},data(){return{MODE_MAP:w["o"],TRACE_HEADERS:k["h"],OPERATION_MAP:w["p"],specificValidations:null}},computed:{...Object(o["a"])(["currentCluster"]),...Object(o["a"])({charts:"catalog/charts",refreshingCharts:"kubewarden/refreshingCharts"}),allApps(){return this.$store.getters["cluster/all"](p["a"].APP)},allServices(){return this.$store.getters["cluster/all"](p["z"])},controllerApp(){var e;return null===(e=this.allApps)||void 0===e?void 0:e.find(e=>{var t;return(null===e||void 0===e||null===(t=e.spec)||void 0===t||null===(t=t.chart)||void 0===t||null===(t=t.metadata)||void 0===t?void 0:t.name)===w["h"].CONTROLLER})},controllerChart(){var e;return null===(e=this.charts)||void 0===e?void 0:e.find(e=>e.chartName===w["h"].CONTROLLER)},groupField(){return this.isPolicyServer?"policy_id":null},isPolicyServer(){return this.resource===w["f"].POLICY_SERVER},emptyPolicies(){return this.resource===w["f"].POLICY_SERVER?s()(this.relatedPolicies):s()(this.policy)},emptyTraces(){return s()(this.filteredValidations)},emptyTracesLabel(){return this.resource===w["f"].POLICY_SERVER?"kubewarden.tracing.noRelatedTraces":"kubewarden.tracing.noTraces"},rowsPerPage(){return this.isPolicyServer?40:20},tracingConfiguration(){var e;return this.controllerApp?null===(e=this.controllerApp)||void 0===e||null===(e=e.spec)||void 0===e||null===(e=e.values)||void 0===e||null===(e=e.telemetry)||void 0===e?void 0:e.tracing:null},tracingEnabled(){return this.tracingConfiguration?this.tracingConfiguration.enabled:null},jaegerServices(){var e;return null===(e=this.allServices)||void 0===e?void 0:e.filter(e=>{var t;return"jaeger"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(t=t.labels)||void 0===t?void 0:t["app.kubernetes.io/part-of"])})},jaegerQuerySvc(){return s()(this.jaegerServices)?null:this.jaegerServices.find(e=>{var t;const r=null===e||void 0===e||null===(t=e.spec)||void 0===t?void 0:t.ports;if(r.length)return r.find(e=>16685===e.port||16686===e.port)})},openTelemetryServices(){var e;return null===(e=this.allServices)||void 0===e?void 0:e.filter(e=>{var t;return"opentelemetry-operator"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(t=t.labels)||void 0===t?void 0:t[v["h"].MANAGED_NAME])})},openTelSvc(){return s()(this.openTelemetryServices)?null:this.openTelemetryServices.find(e=>{var t;const r=null===e||void 0===e||null===(t=e.spec)||void 0===t?void 0:t.ports;if(r.length)return r.find(e=>8080===e.port)})},showChecklist(){var e;return!this.openTelSvc||!this.jaegerQuerySvc||!(null!==(e=this.tracingConfiguration)&&void 0!==e&&e.enabled)},showTable(){return!this.emptyPolicies&&!this.showChecklist&&!this.emptyTraces},filteredValidations(){return s()(this.specificValidations)?[]:this.specificValidations.flatMap(e=>{var t;return(null===(t=this.currentCluster)||void 0===t?void 0:t.id)===e.cluster?e.traces:[]})}},methods:{modeColor(e){return this.MODE_MAP[e]},opColor(e){return this.OPERATION_MAP[e]},formatTime(e){return c()(e/1e3)},duration(e){return D(e)}}},z=Y,H=(r("ed5b"),Object(B["a"])(z,a,i,!1,null,"ab725830",null));t["a"]=H.exports},"17ab":function(e,t,r){var a=r("5eaa");t=a(!1),t.push([e.i,".checklist__container[data-v-cf603ff2]{display:flex;justify-content:center;flex-direction:column;border:1px solid var(--border);padding:10px}.checklist__config[data-v-cf603ff2],.checklist__step[data-v-cf603ff2]{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.checklist__step[data-v-cf603ff2]{min-height:40px}.conflicting-banner[data-v-cf603ff2]{display:flex;flex-direction:column}",""]),e.exports=t},2192:function(e,t,r){var a=r("5eaa");t=a(!1),t.push([e.i,".checklist__container[data-v-63ad3d60]{display:flex;justify-content:center;flex-direction:column;border:1px solid var(--border);padding:10px}.checklist__config[data-v-63ad3d60],.checklist__step[data-v-63ad3d60]{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.checklist__step[data-v-63ad3d60]{min-height:40px}",""]),e.exports=t},"284d":function(e,t,r){"use strict";r.r(t);var a=function(){var e=this,t=e._self._c;return e.$fetchState.pending?t("Loading"):t("div",[e.policyGauges?[t("div",{staticClass:"row"},[[t("div",{staticClass:"col span-6"},[t("h3",{attrs:{"data-testid":"kw-ps-detail-status-title"}},[e._v(" "+e._s(e.t("kubewarden.policyServer.policyGauge.byStatus"))+" ")]),t("div",{staticClass:"gauges mb-20"},e._l(e.policyGauges,(function(r,a){return t("CountGauge",{key:a,attrs:{total:e.relatedPoliciesTotal,useful:r.count||0,graphical:!1,"primary-color-var":"--sizzle-"+r.color,name:a}})})),1)])],e.emptyTraces?e._e():[t("div",{staticClass:"col span-6"},[t("h3",[e._v(" "+e._s(e.t("kubewarden.policyServer.policyGauge.traces"))+" ")]),t("div",{staticClass:"gauges mb-20"},e._l(e.tracesGauges,(function(r,a){return t("CountGauge",{key:a,attrs:{useful:r.count||0,total:e.traceGaugeTotals,graphical:!1,"primary-color-var":"--sizzle-"+r.color,name:a}})})),1)])]],2)]:e._e(),t("ResourceTabs",{attrs:{mode:e.mode},model:{value:e.value,callback:function(t){e.value=t},expression:"value"}},[t("Tab",{attrs:{name:"related-policies",label:"Policies",weight:99},scopedSlots:e._u([{key:"default",fn:function(){return[t("ResourceTable",{attrs:{rows:e.relatedPolicies||[],headers:e.RELATED_HEADERS,groupable:!0,"group-by":e.groupPreference,"table-actions":!0,"data-testid":"kw-ps-detail-related-policies-list"},scopedSlots:e._u([{key:"col:operation",fn:function({row:r}){return[t("td",[t("BadgeState",{attrs:{"data-testid":`kw-ps-detail-${r.id}-state`,label:r.operation,color:e.color(r.operation)}})],1)]}}])})]},proxy:!0}])}),t("Tab",{staticClass:"relative",attrs:{name:"policy-tracing",label:"Tracing",weight:98}},[t("TraceTable",{attrs:{resource:e.resource,"related-policies":e.relatedPolicies}})],1),t("Tab",{staticClass:"relative",attrs:{name:"policy-metrics",label:"Metrics",weight:97},scopedSlots:e._u([{key:"default",fn:function(r){return[t("MetricsTab",{attrs:{resource:e.resource,"policy-server-obj":e.value,active:r.active}})]}}])})],1)],2)},i=[],o=r("9ce4"),n=r("330a"),s=r.n(n),l=r("da25"),c=r("a8b9"),d=r("305c"),u=r("5000"),p=r("74c2"),v=r("15ca"),h=r("c422"),m=r("126f"),f=r("38de"),b=r("5191"),g=r("3f46"),y=r("00ce"),k={name:"PolicyServer",components:{CountGauge:p["a"],Loading:v["a"],MetricsTab:g["a"],ResourceTabs:h["a"],ResourceTable:m["a"],Tab:f["a"],TraceTable:y["a"]},mixins:[d["a"]],props:{mode:{type:String,default:l["t"]},resource:{type:String,default:null},value:{type:Object,required:!0}},async fetch(){const e=await Object(c["a"])({relatedPolicies:this.value.allRelatedPolicies(),policyGauges:this.value.policyGauges()}),t=(e,t)=>{s()(t)||(this[e]=t)};t("relatedPolicies",e.relatedPolicies),t("policyGauges",e.policyGauges)},data(){return{RELATED_HEADERS:b["f"],policyGauges:null,relatedPolicies:null,reloadRequired:!1}},computed:{...Object(o["a"])(["currentCluster"]),...Object(o["a"])({policyTraces:"kubewarden/policyTraces"}),_group:Object(u["n"])(u["e"]),filteredTraces(){return s()(this.policyTraces)?null:this.policyTraces.filter(e=>{var t;if((null===(t=this.currentCluster)||void 0===t?void 0:t.id)===e.cluster)return e})},emptyTraces(){return s()(this.filteredTraces)},groupPreference(){const e="namespace"===this._group?"kind":null;return e},relatedPoliciesTotal(){return s()(this.relatedPolicies)?0:this.relatedPolicies.length},tracesGauges(){return this.emptyTraces?null:this.value.tracesGauges(this.filteredTraces)},traceGaugeTotals(){var e;return this.emptyTraces?0:null===(e=this.filteredTraces)||void 0===e?void 0:e.flatMap(e=>e.traces).length}},methods:{hasNamespaceSelector(e){return e.namespaceSelector}}},w=k,_=(r("2a13"),r("d802")),C=Object(_["a"])(w,a,i,!1,null,"a88dafa8",null);t["default"]=C.exports},"2a13":function(e,t,r){"use strict";r("b7b9")},"3f46":function(e,t,r){"use strict";var a=function(){var e=this,t=e._self._c;return e.$fetchState.pending?t("Loading",{attrs:{mode:"relative"}}):t("div",[e.showChecklist?t("MetricsChecklist",{attrs:{"cattle-dashboard-ns":e.cattleDashboardNs,"conflicting-grafana-dashboards":e.conflictingGrafanaDashboards,"controller-app":e.controllerApp,"controller-chart":e.controllerChart,"kubewarden-service-monitor":e.kubewardenServiceMonitor,"kubewarden-dashboards":e.kubewardenGrafanaDashboards,"monitoring-app":e.monitoringApp,"monitoring-chart":e.monitoringChart,"open-tel-svc":e.openTelSvc,"policy-obj":e.policyObj,"policy-server-obj":e.policyServerObj},on:{updateServiceMonitors:e.updateServiceMonitors}}):e._e(),e.showChecklist?e._e():[e.monitoringApp&&!e.metricsProxy?t("Banner",{attrs:{color:"error",label:e.t("kubewarden.monitoring.warning.noProxy")}}):e._e(),e.metricsProxy&&e.active?t("DashboardMetrics",{attrs:{"data-testid":"kw-ps-metrics-dashboard","detail-url":e.metricsProxy,"summary-url":e.metricsProxy,vars:{policy_name:e.policyName},"graph-height":"825px"}}):e._e()]],2)},i=[],o=r("9ce4"),n=r("330a"),s=r.n(n),l=r("44db"),c=r.n(l),d=r("907c"),u=r("4ac6"),p=r("b45b"),v=r("f390"),h=r("a8b9"),m=r("2359"),f=r("c389"),b=r("15ca"),g=r("6418"),y=r("90cd"),k=r("e9a3"),w=r("541d");async function _(e){const{store:t,type:r}=e;try{const e=await C(t);if(!s()(e)){const t=`/api/v1/namespaces/${e.metadata.namespace}/services`,a=`/http:${e.metadata.name}:80/proxy`,i=`/d/${r}?orgId=1&kiosk`;return t+a+i}}catch(a){Object(k["a"])({error:a,store:t,type:"warning"})}return null}async function C(e){try{return await e.dispatch("cluster/find",{type:d["z"],id:"cattle-monitoring-system/rancher-monitoring-grafana"},{root:!0})}catch(t){Object(k["a"])({error:t,store:e,type:"warning"})}}async function S(e){try{return await e.dispatch("cluster/findMatching",{type:d["b"],selector:"kubewarden/part-of=cattle-kubewarden-system"})}catch(t){Object(k["a"])({error:t,store:e,type:"warning"})}}async function O(e){const{store:t,monitoringApp:a,controllerApp:i}=e;if(a&&i){const e=Object.values(y["n"]);for(const s of e){var o;const e=await r("cb8a")(`./${s}.json`),l=s+".json",c=await S(t);if(c&&(null===c||void 0===c||null===(o=c.metadata)||void 0===o?void 0:o.name)===s)return;const u={[y["m"].DASHBOARD]:s,[y["m"].PART_OF]:i.metadata.namespace,[y["m"].APP]:"rancher-monitoring-grafana",[y["m"].GRAFANA_DASHBOARD]:"1","app.kubernetes.io/instance":a.metadata.name},p={[y["e"].NAME]:a.metadata.name,[y["e"].NAMESPACE]:a.metadata.namespace},v=await t.dispatch("cluster/create",{type:d["b"],metadata:{annotations:p,labels:u,name:s,namespace:"cattle-dashboards"},data:{[l]:JSON.stringify(e)}});try{await v.save()}catch(n){Object(k["a"])({error:n,store:t})}}}}function T(e){const{policyObj:t,policyServerObj:r,allServiceMonitors:a}=e;if(!s()(a)){var i;const e=t?null===(i=t.spec)||void 0===i?void 0:i.policyServer:null===r||void 0===r?void 0:r.id;return null===a||void 0===a?void 0:a.find(t=>{var r;return(null===t||void 0===t||null===(r=t.spec)||void 0===r||null===(r=r.selector)||void 0===r||null===(r=r.matchLabels)||void 0===r?void 0:r["app"])==="kubewarden-policy-server-"+e})}}async function A(e){const{store:t,policyObj:r,policyServerObj:a,controllerNs:i,serviceMonitor:o}=e;if(t.getters["cluster/schemaFor"](d["m"].SERVICEMONITOR)){var n;const e=r?null===(n=r.spec)||void 0===n?void 0:n.policyServer:null===a||void 0===a?void 0:a.id,l={kind:"ServiceMonitor",type:d["m"].SERVICEMONITOR,metadata:{name:e,namespace:i},spec:{endpoints:[{interval:"10s",port:"metrics"}],namespaceSelector:{matchNames:[i]},selector:{matchLabels:{app:"kubewarden-policy-server-"+e}}}};if(!o){const e=await t.dispatch("cluster/create",l);try{await e.save()}catch(s){Object(k["a"])({error:s,store:t})}}}}var R=r("5136"),E=function(){var e=this,t=e._self._c;return t("div",{staticClass:"checklist__container"},[t("div",{staticClass:"checklist__prereq mb-20"},[t("h2",[e._v(e._s(e.t("kubewarden.monitoring.prerequisites.label")))]),t("p",[e._v(e._s(e.t("kubewarden.monitoring.prerequisites.description")))])]),t("Banner",{attrs:{color:"warning",label:e.t("kubewarden.monitoring.prerequisites.warning")}}),t("div",{staticClass:"mt-20 mb-20"},[t("div",{staticClass:"checklist__step mt-20 mb-20",attrs:{"data-testid":"kw-monitoring-checklist-step-open-tel"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.openTelSvc)}),t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.tracing.openTelemetry",{},!0),expression:"t('kubewarden.tracing.openTelemetry', {}, true)"}]})]),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-monitoring-checklist-step-monitoring-app"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.monitoringApp)}),t("div",{staticClass:"checklist__config"},[t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.monitoring.prerequisites.monitoringApp.label",{},!0),expression:"t('kubewarden.monitoring.prerequisites.monitoringApp.label', {}, true)"}],attrs:{p:""}}),e.monitoringApp?e._e():t("button",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.monitoringLinkTooltip,expression:"monitoringLinkTooltip"}],staticClass:"btn role-primary ml-10",attrs:{"data-testid":"kw-monitoring-checklist-step-config-button",disabled:!e.monitoringChart},on:{click:function(t){return e.monitoringAppRoute()}}},[e._v(" "+e._s(e.monitoringChartLink)+" ")])])]),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-monitoring-checklist-step-service-monitor-map"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.kubewardenServiceMonitor)}),t("div",{staticClass:"checklist__config"},[t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.monitoring.prerequisites.serviceMonitor.label",{},!0),expression:"t('kubewarden.monitoring.prerequisites.serviceMonitor.label', {}, true)"}],attrs:{p:""}}),e.kubewardenServiceMonitor?e._e():t("AsyncButton",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.serviceMonitorsTooltip,expression:"serviceMonitorsTooltip"}],staticClass:"ml-10",attrs:{"data-testid":"kw-monitoring-checklist-step-service-monitor-button",mode:"serviceMonitor",disabled:e.serviceMonitorButtonDisabled},on:{click:e.addServiceMonitor}})],1)]),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-monitoring-checklist-step-config-map"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.hasKubewardenDashboards)}),t("div",{staticClass:"checklist__config"},[t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.monitoring.prerequisites.configMap.label",{},!0),expression:"t('kubewarden.monitoring.prerequisites.configMap.label', {}, true)"}],attrs:{p:""}}),e.hasKubewardenDashboards?e._e():t("AsyncButton",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.dashboardsTooltip,expression:"dashboardsTooltip"}],staticClass:"ml-10",attrs:{"data-testid":"kw-monitoring-checklist-step-config-map-button",mode:"grafanaDashboard",disabled:e.dashboardButtonDisabled},on:{click:e.addDashboards}})],1)]),e.showConflictingDashboardsBanner?t("Banner",{attrs:{color:"error"}},[t("div",{staticClass:"conflicting-banner"},[t("p",[e._v(" "+e._s(e.t("kubewarden.monitoring.prerequisites.configMap.conflictingDashboardsBanner",{count:e.conflictingGrafanaDashboards.length},!0))+" ")]),e._l(e.conflictingGrafanaDashboards,(function(r){return t("n-link",{key:r.metadata.name,staticClass:"text-bold",attrs:{to:r.detailLocation}},[e._v(" "+e._s(r.metadata.name)+" ")])}))],2)]):e._e(),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-monitoring-checklist-step-controller-config"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.metricsEnabled)}),t("div",{staticClass:"checklist__config"},[t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.monitoring.prerequisites.controllerConfig.label",{},!0),expression:"t('kubewarden.monitoring.prerequisites.controllerConfig.label', {}, true)"}],attrs:{p:""}}),e.metricsEnabled?e._e():t("button",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.controllerLinkTooltip,expression:"controllerLinkTooltip"}],staticClass:"btn role-primary ml-10",attrs:{"data-testid":"kw-monitoring-checklist-step-config-button",disabled:e.controllerLinkDisabled},on:{click:function(t){return e.controllerAppRoute()}}},[e._v(" "+e._s(e.t("kubewarden.monitoring.prerequisites.controllerConfig.button"))+" ")])])])],1)],1)},P=[],j=r("da25"),x=r("d709"),M={props:{cattleDashboardNs:{type:Object,default:null},conflictingGrafanaDashboards:{type:Array,default:null},controllerApp:{type:Object,default:null},controllerChart:{type:Object,default:null},kubewardenServiceMonitor:{type:Object,default:null},kubewardenDashboards:{type:Array,default:null},monitoringApp:{type:Object,default:null},monitoringChart:{type:Object,default:null},openTelSvc:{type:Object,default:null},policyObj:{type:Object,default:null},policyServerObj:{type:Object,default:null}},components:{AsyncButton:x["b"],Banner:g["a"]},computed:{...Object(o["a"])(["currentCluster"]),...Object(o["a"])({t:"i18n/t"}),controllerMetricsConfig(){var e;return this.controllerApp?null===(e=this.controllerApp.spec)||void 0===e||null===(e=e.values)||void 0===e||null===(e=e.telemetry)||void 0===e?void 0:e.metrics:null},controllerLinkDisabled(){return!this.openTelSvc||!this.monitoringApp||!this.hasKubewardenDashboards||!this.controllerChart||!this.controllerApp},controllerLinkTooltip(){return this.controllerLinkDisabled?this.t("kubewarden.monitoring.prerequisites.tooltips.prerequisites"):this.controllerChart?null:this.t("kubewarden.monitoring.prerequisites.tooltips.chartError",{chart:"Kubewarden Controller"},!0)},dashboardsTooltip(){return this.monitoringApp?this.monitoringApp&&s()(this.cattleDashboardNs)?this.t("kubewarden.monitoring.prerequisites.tooltips.nsNotFound"):null:this.t("kubewarden.monitoring.prerequisites.tooltips.appNotInstalled",{app:"Rancher Monitoring"},!0)},dashboardButtonDisabled(){return!this.monitoringApp||s()(this.cattleDashboardNs)||!this.hasKubewardenDashboards&&!!this.conflictingGrafanaDashboards.length},hasKubewardenDashboards(){return!s()(this.kubewardenDashboards)},metricsEnabled(){return this.controllerMetricsConfig?this.controllerMetricsConfig.enabled:null},monitoringChartLink(){return this.monitoringApp?this.t("kubewarden.monitoring.prerequisites.monitoringApp.edit"):this.t("kubewarden.monitoring.prerequisites.monitoringApp.install")},monitoringLinkTooltip(){return this.monitoringChart?null:this.t("kubewarden.monitoring.prerequisites.tooltips.chartError",{chart:"Rancher Monitoring"},!0)},serviceMonitorButtonDisabled(){return!this.controllerApp||!this.monitoringApp},serviceMonitorsTooltip(){return this.monitoringApp?!this.kubewardenServiceMonitor&&this.controllerApp?this.t("kubewarden.monitoring.prerequisites.tooltips.monitorsNotFound",{namespace:null===(e=this.controllerApp.metadata)||void 0===e?void 0:e.namespace},!0):null:this.t("kubewarden.monitoring.prerequisites.tooltips.prerequisites");var e},showConflictingDashboardsBanner(){return!this.hasKubewardenDashboards&&!s()(this.conflictingGrafanaDashboards)}},methods:{async addDashboards(e){try{await O({store:this.$store,monitoringApp:this.monitoringApp,controllerApp:this.controllerApp}),e(!0)}catch(t){Object(k["a"])({error:t,store:this.$store}),e(!1)}},async addServiceMonitor(e){try{var t;await A({store:this.$store,policyObj:this.policyObj,policyServerObj:this.policyServerObj,controllerNs:null===(t=this.controllerApp)||void 0===t||null===(t=t.metadata)||void 0===t?void 0:t.namespace,serviceMonitor:this.kubewardenServiceMonitor}),this.$emit("updateServiceMonitors"),e(!0)}catch(r){Object(k["a"])({error:r,store:this.$store}),e(!1)}},badgeIcon(e){if(Array.isArray(e)){const t=s()(e);return{"icon-dot-open":t,"icon-checkmark":!t,"text-success":!t}}return{"icon-dot-open":!e,"icon-checkmark":e,"text-success":e}},monitoringAppRoute(){if(!this.monitoringApp&&this.monitoringChart&&this.monitoringChart.goToInstall(),this.monitoringApp){var e,t,r,a,i,o,n;const s={[j["g"]]:null===(e=this.monitoringApp.metadata)||void 0===e?void 0:e.namespace,[j["f"]]:null===(t=this.monitoringApp.metadata)||void 0===t?void 0:t.name,[j["q"]]:null===(r=this.monitoringApp.spec)||void 0===r||null===(r=r.chart)||void 0===r||null===(r=r.metadata)||void 0===r?void 0:r.version,[j["i"]]:null===(a=this.monitoringApp.spec)||void 0===a||null===(a=a.chart)||void 0===a||null===(a=a.metadata)||void 0===a||null===(a=a.annotations)||void 0===a?void 0:a[u["c"].SOURCE_REPO_NAME],[j["j"]]:null===(i=this.monitoringApp.spec)||void 0===i||null===(i=i.chart)||void 0===i||null===(i=i.metadata)||void 0===i||null===(i=i.annotations)||void 0===i?void 0:i[u["c"].SOURCE_REPO_TYPE],[j["d"]]:null===(o=this.monitoringApp.spec)||void 0===o||null===(o=o.chart)||void 0===o||null===(o=o.metadata)||void 0===o?void 0:o.name};this.$router.push({name:"c-cluster-apps-charts-install",params:{cluster:(null===(n=this.currentCluster)||void 0===n?void 0:n.id)||"_"},query:s})}},controllerAppRoute(){if(this.controllerApp){var e,t,r,a,i,o,n;const s=null===(e=this.controllerApp.spec)||void 0===e||null===(e=e.chart)||void 0===e?void 0:e.metadata,l={[j["g"]]:null===s||void 0===s||null===(t=s.annotations)||void 0===t?void 0:t[u["c"].NAMESPACE],[j["f"]]:null===s||void 0===s||null===(r=s.annotations)||void 0===r?void 0:r[u["c"].RELEASE_NAME],[j["q"]]:null===s||void 0===s||null===(a=s.annotations)||void 0===a?void 0:a["catalog.cattle.io/upstream-version"],[j["i"]]:null===s||void 0===s||null===(i=s.annotations)||void 0===i?void 0:i[u["c"].SOURCE_REPO_NAME],[j["j"]]:null===s||void 0===s||null===(o=s.annotations)||void 0===o?void 0:o[u["c"].SOURCE_REPO_TYPE],[j["d"]]:null===s||void 0===s?void 0:s.name};this.$router.push({name:"c-cluster-apps-charts-install",params:{cluster:(null===(n=this.currentCluster)||void 0===n?void 0:n.id)||"_"},query:l})}}}},N=M,D=(r("6d24"),r("d802")),L=Object(D["a"])(N,E,P,!1,null,"cf603ff2",null),$=L.exports,I={props:{active:{type:Boolean,default:null},resource:{type:String,default:null},policyObj:{type:Object,default:null},policyServerObj:{type:Object,default:null}},components:{Banner:g["a"],DashboardMetrics:f["a"],Loading:b["a"],MetricsChecklist:$},mixins:[m["a"]],async fetch(){this.debouncedRefreshCharts=c()((e=!1)=>{Object(w["d"])({store:this.$store,chartName:"rancher-monitoring",init:e})},500);const e=[{name:d["a"].APP,property:this.allApps},{name:d["a"].CLUSTER_REPO,property:this.allRepos},{name:d["b"],property:this.allConfigMaps},{name:y["f"].POLICY_SERVER,property:this.allPolicyServers},{name:d["m"].SERVICEMONITOR,property:this.allServiceMonitors},{name:d["n"],property:this.allNamespaces},{name:d["z"],property:this.allServices}],t=[];for(const i of e)s()(i.property)&&this.$store.getters["cluster/canList"](i.name)&&t.push(this.$fetchType(i.name));if(await Object(h["a"])(t),this.showChecklist&&!this.monitoringChart&&this.debouncedRefreshCharts(!0),this.monitoringStatus.installed)try{var r;if(this.metricsProxy=await _({store:this.$store,type:this.METRICS_TYPE}),this.metricsProxy)this.metricsService=await Object(p["b"])("v2",this.$store,null===(r=this.currentCluster)||void 0===r?void 0:r.id,this.metricsProxy)}catch(a){const e={_statusText:"Error",message:"Error fetching Grafana Service: "+a};Object(k["a"])({error:e,store:this.$store})}},data(){const e=this.resource===y["f"].POLICY_SERVER?y["n"].POLICY_SERVER:y["n"].POLICY;return{METRICS_TYPE:e,[d["a"].APP]:null,[d["a"].CLUSTER_REPO]:null,[d["b"]]:null,[d["m"].SERVICEMONITOR]:null,[d["z"]]:null,metricsProxy:null,metricsService:null,debouncedRefreshCharts:null}},watch:{async grafanaService(){var e;this.metricsProxy||(this.metricsProxy=await _({store:this.$store,type:this.METRICS_TYPE}),this.metricsProxy&&(this.metricsService=await Object(p["b"])("v2",this.$store,null===(e=this.currentCluster)||void 0===e?void 0:e.id,this.metricsProxy)))}},computed:{...Object(o["a"])(["currentCluster","productId"]),...Object(o["a"])({charts:"catalog/charts"}),...Object(v["c"])(),policyName(){return Object(R["a"])(this.policyObj)},allApps(){return this.$store.getters["cluster/all"](d["a"].APP)},allRepos(){return this.$store.getters["cluster/all"](d["a"].CLUSTER_REPO)},allConfigMaps(){return this.$store.getters["cluster/all"](d["b"])},allNamespaces(){return this.$store.getters["cluster/all"](d["n"])},allPolicyServers(){return this.$store.getters["cluster/all"](y["f"].POLICY_SERVER)},allServiceMonitors(){return this.$store.getters["cluster/all"](d["m"].SERVICEMONITOR)},allServices(){return this.$store.getters["cluster/all"](d["z"])},cattleDashboardNs(){var e;return null===(e=this.allNamespaces)||void 0===e?void 0:e.find(e=>{var t;return"cattle-dashboards"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t?void 0:t.name)})},conflictingGrafanaDashboards(){var e;return null===(e=this.allConfigMaps)||void 0===e?void 0:e.filter(e=>{var t;const r=null===e||void 0===e||null===(t=e.metadata)||void 0===t?void 0:t.name;if(r)return r===y["n"].POLICY_SERVER||r===y["n"].POLICY})},controllerApp(){var e;return null===(e=this.allApps)||void 0===e?void 0:e.find(e=>{var t;return(null===e||void 0===e||null===(t=e.spec)||void 0===t||null===(t=t.chart)||void 0===t||null===(t=t.metadata)||void 0===t?void 0:t.name)===y["h"].CONTROLLER})},controllerChart(){var e;return null===(e=this.charts)||void 0===e?void 0:e.find(e=>e.chartName===y["h"].CONTROLLER)},grafanaService(){var e;const t=null===(e=this.allServices)||void 0===e?void 0:e.filter(e=>{var t;return"rancher-monitoring"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(t=t.labels)||void 0===t?void 0:t["app.kubernetes.io/instance"])});return null===t||void 0===t?void 0:t.find(e=>{var t;return"grafana"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(t=t.labels)||void 0===t?void 0:t["app.kubernetes.io/name"])})},kubewardenGrafanaDashboards(){var e;return null===(e=this.allConfigMaps)||void 0===e?void 0:e.filter(e=>{var t;return null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(t=t.labels)||void 0===t?void 0:t[y["m"].DASHBOARD]})},kubewardenServiceMonitor(){var e;return T({policyObj:this.policyObj,policyServerObj:this.policyServerObj,controllerNs:null===(e=this.controllerApp)||void 0===e||null===(e=e.metadata)||void 0===e?void 0:e.namespace,allServiceMonitors:this.allServiceMonitors})},monitoringApp(){var e;return null===(e=this.allApps)||void 0===e?void 0:e.find(e=>{var t;return"rancher-monitoring"===(null===e||void 0===e||null===(t=e.spec)||void 0===t||null===(t=t.chart)||void 0===t||null===(t=t.metadata)||void 0===t?void 0:t.name)})},monitoringChart(){var e;return null===(e=this.charts)||void 0===e?void 0:e.find(e=>"rancher-monitoring"===e.chartName)},openTelemetryServices(){return this.allServices?this.allServices.filter(e=>{var t;return"opentelemetry-operator"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(t=t.labels)||void 0===t?void 0:t[u["h"].MANAGED_NAME])}):null},openTelSvc(){return s()(this.openTelemetryServices)?null:this.openTelemetryServices.find(e=>{var t;const r=null===e||void 0===e||null===(t=e.spec)||void 0===t?void 0:t.ports;if(r.length)return r.find(e=>8080===e.port)})},policyServerSvcs(){if(!s()(this.allPolicyServers)){const t=this.allPolicyServers.map(e=>{var t;return null===e||void 0===e||null===(t=e.metadata)||void 0===t?void 0:t.name}),r=[];for(const a of t){var e;r.push(null===(e=this.allServices)||void 0===e?void 0:e.find(e=>{var t;return(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(t=t.labels)||void 0===t?void 0:t.app)==="kubewarden-policy-server-"+a}))}return r}return null},showChecklist(){var e;const t=null===(e=this.controllerApp)||void 0===e||null===(e=e.spec)||void 0===e||null===(e=e.values)||void 0===e||null===(e=e.telemetry)||void 0===e||null===(e=e.metrics)||void 0===e?void 0:e.enabled,r=!s()(this.kubewardenGrafanaDashboards);return!this.openTelSvc||!this.monitoringApp||!this.kubewardenServiceMonitor||!t||!r}},methods:{async updateServiceMonitors(){await this.$fetchType(d["m"].SERVICEMONITOR)}}},q=I,G=Object(D["a"])(q,a,i,!1,null,null,null);t["a"]=G.exports},"43a8":function(e,t,r){var a=r("5eaa");t=a(!1),t.push([e.i,".policy-table-container[data-v-ab725830]{display:flex;flex-direction:column;gap:1rem}.filter[data-v-ab725830]{display:flex;flex-direction:row;justify-content:flex-end;align-self:flex-end;align-items:center}.filter>*[data-v-ab725830]{margin:10px;max-width:33%}.filter[data-v-ab725830]>:first-child{margin-left:0}.filter[data-v-ab725830]>:last-child{margin-right:0}.filter__category[data-v-ab725830]{min-width:200px;height:unset}.filter__reset[data-v-ab725830],.filter__search[data-v-ab725830]{height:61px}",""]),e.exports=t},5136:function(e,t,r){"use strict";r.d(t,"b",(function(){return l})),r.d(t,"a",(function(){return c}));var a=r("330a"),i=r.n(a),o=r("90cd");function n(e,t){const r=null===e||void 0===e?void 0:e.links["view"],a=r.lastIndexOf("/");return s(r.slice(0,a),"http",null===e||void 0===e?void 0:e.metadata.name,t)}function s(e,t,r,a,i){const o=(t?encodeURIComponent(t)+":":"")+encodeURIComponent(r)+(a?":"+encodeURIComponent(a):""),n="/"+(i||"").replace(/^\/+/g,""),s=e.replace(/\/+$/g,""),l=`${s}/${o}/proxy${n}`;return l}async function l(e){const{store:t,queryService:r,resource:a,relatedPolicies:o,policy:s,time:l}=e;try{const e=n(r,16686),c=[];if(i()(o)){if(!s)throw new Error("Policy is undefined");c.push(d(t,e,s,l))}else null===o||void 0===o||o.forEach(r=>{const a=d(t,e,r,l);a&&c.push(a)});let p=await Promise.all(c);return p=p.flatMap(e=>null===e||void 0===e?void 0:e.data),u(t,p,a,o,s)}catch(c){console.warn("Error fetching Jaeger traces: "+c)}return null}function c(e){var t,r,a;let i=null;switch(null===e||void 0===e?void 0:e.kind){case"ClusterAdmissionPolicy":i="clusterwide-"+(null===e||void 0===e||null===(t=e.metadata)||void 0===t?void 0:t.name);break;case"AdmissionPolicy":i=`namespaced-${null===e||void 0===e||null===(r=e.metadata)||void 0===r?void 0:r.namespace}-${null===e||void 0===e||null===(a=e.metadata)||void 0===a?void 0:a.name}`;break;default:break}return i}function d(e,t,r,a){let i=null;const o=c(r),n=a||"2d",s=`lookback=${n}&tags={"policy_id"%3A"${o}"}`;i="api/traces?service=kubewarden-policy-server&operation=validation&"+s;const l=""+(t+i);return e.dispatch("cluster/request",{url:l})}function u(e,t,r,a,n){const s=e.getters["currentCluster"],l=[];function d(r){const a=c(r);return t.reduce((t,o)=>{var n;let l={};const c=o.spans.find(e=>"validation"===e.operationName),d=null===c||void 0===c||null===(n=c.tags)||void 0===n?void 0:n.find(e=>"policy_id"===(null===e||void 0===e?void 0:e.key)&&(null===e||void 0===e?void 0:e.value)===a);if(d){const e=p(c.tags);l={id:o.traceID,allowed:e.allowed,mode:r.spec.mode,name:e.name,operation:e.operation,kind:e.kind,namespace:e.namespace||null,startTime:c.startTime,duration:c.duration,responseMessage:e.response_message,responseCode:e.response_code,mutated:e.mutated}}return i()(l)||(t.push(l),e.dispatch("kubewarden/updatePolicyTraces",{policyName:r.metadata.name,cluster:null===s||void 0===s?void 0:s.id,updatedTrace:l})),t},[])}if(r===o["f"].POLICY_SERVER)for(const o of a){const e=d(o);i()(e)||l.push({policyName:o.metadata.name,cluster:null===s||void 0===s?void 0:s.id,traces:e})}else{const e=d(n);i()(e)||l.push({policyName:n.metadata.name,cluster:null===s||void 0===s?void 0:s.id,traces:e})}return l}function p(e){const t={};for(const r of e)switch(r.type){case"string":t[r.key]=r.value;break;case"int64":t[r.key]=parseInt(r.value,10);break;case"float64":t[r.key]=parseFloat(r.value);break;case"bool":t[r.key]="true"===r.value;break;default:t[r.key]=r.value}return t}},5523:function(e,t,r){var a=r("5eaa");t=a(!1),t.push([e.i,".relative[data-v-a88dafa8]{position:relative}.policy__mode[data-v-a88dafa8]{display:flex;align-items:center}.policy__mode i[data-v-a88dafa8]{margin-left:5px;font-size:22px;color:var(--warning)}.gauges[data-v-a88dafa8],.gaugesContainer[data-v-a88dafa8]{display:flex}.gauges[data-v-a88dafa8]{justify-content:space-around;flex-wrap:wrap;justify-content:left}.gauges .count-gauge[data-v-a88dafa8]{width:46%;margin-bottom:10px;flex:initial}.gauges>*[data-v-a88dafa8]{flex:1;margin-right:1.75%}",""]),e.exports=t},6478:function(e,t,r){"use strict";r("6e05")},"6d24":function(e,t,r){"use strict";r("f343")},"6e05":function(e,t,r){var a=r("2192");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[e.i,a,""]]),a.locals&&(e.exports=a.locals);var i=r("0ed3").default;i("6af1f964",a,!0,{sourceMap:!1,shadowMode:!1})},"733f":function(e,t,r){"use strict";r.r(t);var a=function(){var e=this,t=e._self._c;return t("PolicyDetail",{attrs:{value:e.value,mode:e.mode,resource:e.resource}})},i=[],o=r("da25"),n=r("80db"),s={name:"AdmissionPolicy",props:{mode:{type:String,default:o["t"]},resource:{type:String,default:null},value:{type:Object,required:!0}},components:{PolicyDetail:n["a"]}},l=s,c=r("d802"),d=Object(c["a"])(l,a,i,!1,null,null,null);t["default"]=d.exports},"80db":function(e,t,r){"use strict";var a=function(){var e=this,t=e._self._c;return t("div",[t("div",{staticClass:"mb-20"},[t("h3",[e._v(e._s(e.t("namespace.resources")))])]),t("ResourceTabs",{attrs:{"data-testid":"kw-policy-detail-tabs",mode:e.mode,"need-related":e.hasRelationships},model:{value:e.value,callback:function(t){e.value=t},expression:"value"}},[e.policyReadme?t("Tab",{attrs:{name:"policy-readme",label:"Readme",weight:99}},[t("Markdown",{attrs:{"data-testid":"kw-policy-detail-readme"},model:{value:e.policyReadme,callback:function(t){e.policyReadme=t},expression:"policyReadme"}})],1):e._e(),e.hasRules?t("Tab",{attrs:{name:"policy-rules",label:"Rules",weight:98}},[t("RulesTable",{attrs:{rows:e.rulesRows,"data-testid":"kw-policy-detail-rules-table"}})],1):e._e(),t("Tab",{attrs:{name:"policy-tracing",label:"Tracing",weight:97}},[t("TraceTable",{attrs:{resource:e.resource,policy:e.value,"data-testid":"kw-policy-detail-trace-table"}})],1),t("Tab",{attrs:{name:"policy-metrics",label:"Metrics",weight:96},scopedSlots:e._u([{key:"default",fn:function(r){return[t("MetricsTab",{attrs:{resource:e.resource,"policy-obj":e.value,active:r.active}})]}}])})],1)],1)},i=[],o=r("9ce4"),n=r("330a"),s=r.n(n),l=r("da25"),c=r("f390"),d=r("305c"),u=r("56dc"),p=r("c422"),v=r("38de"),h=r("90cd"),m=r("3f46"),f=function(){var e=this,t=e._self._c;return t("div",[e.rows.length>0?t("SortableTable",{attrs:{"data-testid":"kw-policy-rules-sortable-table",rows:e.rows,headers:e.RULE_HEADERS,"table-actions":!1,"row-actions":!1,"key-field":"traceID","default-sort-by":"startTime"},scopedSlots:e._u([{key:"col:apiGroup",fn:function({row:r}){return[t("td",[t("span",[e._v(e._s(r.apiGroups||"-"))])])]}},{key:"col:apiVersion",fn:function({row:r}){return[t("td",[t("span",[e._v(e._s(r.apiVersions||"-"))])])]}},{key:"col:operations",fn:function({row:r}){return[t("td",[t("span",[e._v(e._s(e.joinColumn(r.operations)))])])]}},{key:"col:resources",fn:function({row:r}){return[t("td",[t("span",[e._v(e._s(e.joinColumn(r.resources)))])])]}}],null,!1,1857136105)}):t("div",[t("Banner",{staticClass:"type-banner mb-20 mt-0",attrs:{color:"warning",label:e.t("kubewarden.policies.noRules")}})],1)],1)},b=[],g=r("6418"),y=r("0fb1"),k=r("5191"),w={props:{rows:{type:Array,default:()=>[]}},components:{Banner:g["a"],SortableTable:y["b"]},data(){return{RULE_HEADERS:k["g"]}},methods:{joinColumn(e){return(null===e||void 0===e?void 0:e.join(", "))||""}}},_=w,C=r("d802"),S=Object(C["a"])(_,f,b,!1,null,null,null),O=S.exports,T=r("00ce"),A={name:"PolicyDetail",components:{Markdown:u["a"],MetricsTab:m["a"],ResourceTabs:p["a"],RulesTable:O,Tab:v["a"],TraceTable:T["a"]},mixins:[d["a"]],props:{mode:{type:String,default:l["t"]},resource:{type:String,default:null},value:{type:Object,default:()=>{}}},async mounted(){var e;if(null!==(e=this.value)&&void 0!==e&&null!==(e=e.metadata)&&void 0!==e&&null!==(e=e.annotations)&&void 0!==e&&e[h["b"]])try{const e=await this.value.artifactHubPackageVersion();e&&!e.error&&e.readme&&(this.policyReadme=JSON.parse(JSON.stringify(e.readme)))}catch(t){console.warn("Unable to fetch artifacthub package: "+t)}},data(){return{policyReadme:null}},computed:{...Object(o["a"])(["currentCluster"]),...Object(c["c"])(),dashboardVars(){var e;return{policy_name:"clusterwide-"+(null===(e=this.value)||void 0===e?void 0:e.id)}},hasRelationships(){var e;return!(null===(e=this.value)||void 0===e||null===(e=e.metadata)||void 0===e||!e.relationships)},hasRules(){var e;return!s()(null===(e=this.rulesRows)||void 0===e?void 0:e[0])},rulesRows(){var e;return null===(e=this.value)||void 0===e||null===(e=e.spec)||void 0===e?void 0:e.rules}}},R=A,E=Object(C["a"])(R,a,i,!1,null,null,null);t["a"]=E.exports},b3e2:function(e,t,r){"use strict";r.r(t);var a=function(){var e=this,t=e._self._c;return t("PolicyDetail",{attrs:{value:e.value,mode:e.mode,resource:e.resource}})},i=[],o=r("da25"),n=r("80db"),s={name:"ClusterAdmissionPolicy",props:{mode:{type:String,default:o["t"]},resource:{type:String,default:null},value:{type:Object,required:!0}},components:{PolicyDetail:n["a"]}},l=s,c=r("d802"),d=Object(c["a"])(l,a,i,!1,null,null,null);t["default"]=d.exports},b7b9:function(e,t,r){var a=r("5523");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[e.i,a,""]]),a.locals&&(e.exports=a.locals);var i=r("0ed3").default;i("5b3b0e05",a,!0,{sourceMap:!1,shadowMode:!1})},cb8a:function(e,t,r){var a={"./kubewarden-dashboard-policy.json":["ec40",8],"./kubewarden-dashboard-policyserver.json":["82e7",9]};function i(e){if(!r.o(a,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=a[e],i=t[0];return r.e(t[1]).then((function(){return r.t(i,3)}))}i.keys=function(){return Object.keys(a)},i.id="cb8a",e.exports=i},e719:function(e,t,r){var a=r("43a8");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[e.i,a,""]]),a.locals&&(e.exports=a.locals);var i=r("0ed3").default;i("990cfaa6",a,!0,{sourceMap:!1,shadowMode:!1})},ed5b:function(e,t,r){"use strict";r("e719")},f343:function(e,t,r){var a=r("17ab");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[e.i,a,""]]),a.locals&&(e.exports=a.locals);var i=r("0ed3").default;i("e65b503e",a,!0,{sourceMap:!1,shadowMode:!1})}}]); +//# sourceMappingURL=kubewarden-1.6.3.umd.min.detail.js.map \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.detail.js.map b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.detail.js.map new file mode 100644 index 0000000..8a57b51 --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.detail.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-1.6.3/./components/TraceTable.vue","webpack://kubewarden-1.6.3/./utils/duration-format.ts","webpack://kubewarden-1.6.3/./components/TraceChecklist.vue","webpack://kubewarden-1.6.3/components/TraceChecklist.vue","webpack://kubewarden-1.6.3/./components/TraceChecklist.vue?c473","webpack://kubewarden-1.6.3/./components/TraceChecklist.vue?17a3","webpack://kubewarden-1.6.3/components/TraceTable.vue","webpack://kubewarden-1.6.3/./components/TraceTable.vue?a899","webpack://kubewarden-1.6.3/./components/TraceTable.vue?a48d","webpack://kubewarden-1.6.3/./components/MetricsChecklist.vue?ab19","webpack://kubewarden-1.6.3/./components/TraceChecklist.vue?1214","webpack://kubewarden-1.6.3/./detail/policies.kubewarden.io.policyserver.vue","webpack://kubewarden-1.6.3/detail/policies.kubewarden.io.policyserver.vue","webpack://kubewarden-1.6.3/./detail/policies.kubewarden.io.policyserver.vue?5658","webpack://kubewarden-1.6.3/./detail/policies.kubewarden.io.policyserver.vue?dde1","webpack://kubewarden-1.6.3/./detail/policies.kubewarden.io.policyserver.vue?2c5e","webpack://kubewarden-1.6.3/./components/MetricsTab.vue","webpack://kubewarden-1.6.3/./modules/grafana.ts","webpack://kubewarden-1.6.3/./modules/metricsConfig.ts","webpack://kubewarden-1.6.3/./components/MetricsChecklist.vue","webpack://kubewarden-1.6.3/components/MetricsChecklist.vue","webpack://kubewarden-1.6.3/./components/MetricsChecklist.vue?f44c","webpack://kubewarden-1.6.3/./components/MetricsChecklist.vue?806c","webpack://kubewarden-1.6.3/components/MetricsTab.vue","webpack://kubewarden-1.6.3/./components/MetricsTab.vue?0f48","webpack://kubewarden-1.6.3/./components/MetricsTab.vue?5f74","webpack://kubewarden-1.6.3/./components/TraceTable.vue?cfe3","webpack://kubewarden-1.6.3/./utils/service.ts","webpack://kubewarden-1.6.3/./modules/jaegerTracing.ts","webpack://kubewarden-1.6.3/./detail/policies.kubewarden.io.policyserver.vue?c0d7","webpack://kubewarden-1.6.3/./components/TraceChecklist.vue?f21f","webpack://kubewarden-1.6.3/./components/MetricsChecklist.vue?ca6e","webpack://kubewarden-1.6.3/./components/TraceChecklist.vue?9d70","webpack://kubewarden-1.6.3/./detail/policies.kubewarden.io.admissionpolicy.vue","webpack://kubewarden-1.6.3/detail/policies.kubewarden.io.admissionpolicy.vue","webpack://kubewarden-1.6.3/./detail/policies.kubewarden.io.admissionpolicy.vue?9025","webpack://kubewarden-1.6.3/./detail/policies.kubewarden.io.admissionpolicy.vue?eb14","webpack://kubewarden-1.6.3/./components/Policies/PolicyDetail.vue","webpack://kubewarden-1.6.3/./components/RulesTable.vue","webpack://kubewarden-1.6.3/components/RulesTable.vue","webpack://kubewarden-1.6.3/./components/RulesTable.vue?fa84","webpack://kubewarden-1.6.3/./components/RulesTable.vue?66d0","webpack://kubewarden-1.6.3/components/Policies/PolicyDetail.vue","webpack://kubewarden-1.6.3/./components/Policies/PolicyDetail.vue?2754","webpack://kubewarden-1.6.3/./components/Policies/PolicyDetail.vue?92e0","webpack://kubewarden-1.6.3/./detail/policies.kubewarden.io.clusteradmissionpolicy.vue","webpack://kubewarden-1.6.3/detail/policies.kubewarden.io.clusteradmissionpolicy.vue","webpack://kubewarden-1.6.3/./detail/policies.kubewarden.io.clusteradmissionpolicy.vue?50e4","webpack://kubewarden-1.6.3/./detail/policies.kubewarden.io.clusteradmissionpolicy.vue?0db9","webpack://kubewarden-1.6.3/./detail/policies.kubewarden.io.policyserver.vue?d40e","webpack://kubewarden-1.6.3/./assets lazy ^\\.\\/.*\\.json$ namespace object","webpack://kubewarden-1.6.3/./components/TraceTable.vue?0423","webpack://kubewarden-1.6.3/./components/TraceTable.vue?3638","webpack://kubewarden-1.6.3/./components/MetricsChecklist.vue?6d71"],"names":["render","_vm","this","_c","_self","$fetchState","pending","refreshingCharts","attrs","showChecklist","controllerApp","controllerChart","tracingConfiguration","jaegerQuerySvc","openTelSvc","emptyPolicies","t","showTable","filteredValidations","TRACE_HEADERS","rowsPerPage","scopedSlots","_u","key","fn","row","staticClass","mode","modeColor","_v","_s","name","namespace","formatTime","startTime","duration","fullColspan","responseMessage","responseCode","mutated","emptyTracesLabel","staticRenderFns","dayjs","extend","_duration","ONE_MILLISECOND","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","UNIT_STEPS","unit","microseconds","ofPrevious","formatDuration","primaryUnit","secondaryUnit","_dropWhile","index","length","_round","primaryValue","Math","floor","primaryUnitString","secondaryValue","round","secondaryUnitString","class","badgeIcon","directives","rawName","value","expression","tracingEnabled","controllerLinkTooltip","controllerLinkDisabled","on","controllerAppRoute","props","type","Object","default","components","Banner","computed","mapGetters","chart","enabled","methods","prop","_this$controllerApp$s","_metadata$annotations","_metadata$annotations2","_metadata$annotations3","_metadata$annotations4","_metadata$annotations5","_this$currentCluster","metadata","spec","query","NAMESPACE","annotations","CATALOG","NAME","RELEASE_NAME","VERSION","REPO","SOURCE_REPO_NAME","REPO_TYPE","SOURCE_REPO_TYPE","CHART","$router","push","params","cluster","currentCluster","id","component","relativeTime","resource","String","relatedPolicies","Array","policy","BadgeState","Loading","SortableTable","TraceChecklist","mixins","ResourceFetch","types","APP","CLUSTER_REPO","SERVICE","hash","$store","getters","$fetchType","allHash","options","store","queryService","KUBEWARDEN","POLICY_SERVER","specificValidations","jaegerTraces","data","MODE_MAP","OPERATION_MAP","charts","allApps","allServices","_this$allApps","find","app","_app$spec","KUBEWARDEN_CHARTS","CONTROLLER","_this$charts","chartName","groupField","isPolicyServer","isEmpty","emptyTraces","_this$controllerApp","values","telemetry","tracing","jaegerServices","_this$allServices","filter","svc","_svc$metadata","labels","_svc$spec","ports","p","port","openTelemetryServices","_this$allServices2","_svc$metadata2","KUBERNETES","MANAGED_NAME","_svc$spec2","_this$tracingConfigur","flatMap","v","traces","opColor","op","time","___CSS_LOADER_API_IMPORT___","exports","module","i","policyGauges","_l","group","relatedPoliciesTotal","count","color","_e","tracesGauges","traceGaugeTotals","model","callback","$$v","RELATED_HEADERS","groupPreference","operation","proxy","active","CountGauge","MetricsTab","ResourceTabs","ResourceTable","Tab","TraceTable","CreateEditView","_CREATE","required","allRelatedPolicies","assignIfNotEmpty","reloadRequired","policyTraces","_group","mapPref","GROUP_RESOURCES","filteredTraces","policyTraceObj","out","_this$filteredTraces","hasNamespaceSelector","namespaceSelector","cattleDashboardNs","conflictingGrafanaDashboards","kubewardenServiceMonitor","kubewardenGrafanaDashboards","monitoringApp","monitoringChart","policyObj","policyServerObj","updateServiceMonitors","metricsProxy","policyName","async","grafanaProxy","config","grafana","grafanaService","base","path","e","handleGrowl","error","dispatch","root","findKubewardenDashboards","CONFIG_MAP","selector","addKubewardenDashboards","dashboardEnums","KubewardenDashboards","_existing$metadata","file","fileKey","existing","KubewardenDashboardLabels","DASHBOARD","PART_OF","GRAFANA_DASHBOARD","HelmAnnotations","configMapTemplate","JSON","stringify","save","findServiceMonitor","allServiceMonitors","_policyObj$spec","smName","policyServer","sm","_sm$spec","matchLabels","addKubewardenServiceMonitor","controllerNs","serviceMonitor","MONITORING","SERVICEMONITOR","_policyObj$spec2","serviceMonitorTemplate","kind","endpoints","interval","matchNames","serviceMonitorObj","monitoringLinkTooltip","$event","monitoringAppRoute","monitoringChartLink","serviceMonitorsTooltip","serviceMonitorButtonDisabled","addServiceMonitor","hasKubewardenDashboards","dashboardsTooltip","dashboardButtonDisabled","addDashboards","showConflictingDashboardsBanner","configMap","detailLocation","metricsEnabled","kubewardenDashboards","AsyncButton","controllerMetricsConfig","metrics","_this$controllerApp$m","btnCb","$emit","isArray","emptyProp","goToInstall","_this$monitoringApp$m","_this$monitoringApp$m2","_this$monitoringApp$s","_this$monitoringApp$s2","_this$monitoringApp$s3","_this$monitoringApp$s4","version","_this$controllerApp$s2","_this$currentCluster2","Boolean","DashboardMetrics","MetricsChecklist","debouncedRefreshCharts","debounce","init","refreshCharts","resourceMap","property","allRepos","allConfigMaps","allPolicyServers","allNamespaces","monitoringStatus","installed","METRICS_TYPE","metricsService","dashboardExists","_statusText","message","POLICY","watch","jaegerPolicyName","_this$allNamespaces","ns","_ns$metadata","_this$allConfigMaps","_configMap$metadata","monitoringServices","_this$allConfigMaps2","_configMap$metadata2","_this$allApps2","_app$spec2","_this$charts2","_svc$metadata3","policyServerSvcs","policyServerNames","map","ps","_ps$metadata","_svc$metadata4","_this$controllerApp2","monitoringEnabled","grafanaDashboardsInstalled","proxyUrl","service","view","links","idx","lastIndexOf","proxyUrlFromBase","slice","scheme","schemaNamePort","encodeURIComponent","cleanPath","replace","cleanBase","promises","Error","jaegerTraceRequest","forEach","res","Promise","all","o","scaffoldPolicyTrace","console","warn","_policy$metadata","_policy$metadata2","_policy$metadata3","apiPath","lookbackTime","JAEGER_PATH","url","filterTraces","reduce","acc","trace","_validationSpan$tags","validationSpan","spans","span","operationName","matchedTag","tags","tag","convertedTags","convertTagsToObject","traceID","allowed","response_message","response_code","updatedTrace","relatedPolicy","relatedTraces","arr","result","item","parseInt","parseFloat","content","__esModule","locals","add","PolicyDetail","hasRelationships","policyReadme","hasRules","rulesRows","rows","RULE_HEADERS","apiGroups","apiVersions","joinColumn","operations","resources","join","Markdown","RulesTable","_this$value","ARTIFACTHUB_PKG_ANNOTATION","artifactHubPackage","artifactHubPackageVersion","readme","parse","dashboardVars","_this$value2","policy_name","_this$value3","relationships","_this$rulesRows","_this$value4","rules","webpackAsyncContext","req","__webpack_require__","resolve","then","code","ids","keys"],"mappings":"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","file":"kubewarden-1.6.3.umd.min.detail.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending || _vm.refreshingCharts)?_c('Loading',{attrs:{\"mode\":\"relative\"}}):_c('div',[(_vm.showChecklist)?_c('TraceChecklist',{attrs:{\"controller-app\":_vm.controllerApp,\"controller-chart\":_vm.controllerChart,\"tracing-configuration\":_vm.tracingConfiguration,\"jaeger-query-svc\":_vm.jaegerQuerySvc,\"open-tel-svc\":_vm.openTelSvc}}):(!_vm.showChecklist && _vm.emptyPolicies)?_c('Banner',{attrs:{\"color\":\"error\",\"label\":_vm.t('kubewarden.tracing.noRelatedPolicies')}}):(_vm.showTable)?_c('SortableTable',{attrs:{\"rows\":_vm.filteredValidations,\"headers\":_vm.TRACE_HEADERS,\"table-actions\":false,\"row-actions\":false,\"key-field\":\"id\",\"default-sort-by\":\"startTime\",\"sub-expandable\":true,\"sub-expand-column\":true,\"sub-rows\":true,\"paging\":true,\"rows-per-page\":_vm.rowsPerPage},scopedSlots:_vm._u([{key:\"col:mode\",fn:function({row}){return [_c('td',[_c('BadgeState',{staticClass:\"text-capitalize\",attrs:{\"label\":row.mode,\"color\":_vm.modeColor(row.mode)}})],1)]}},{key:\"col:name\",fn:function({row}){return [_c('td',{staticClass:\"text-bold\"},[_vm._v(\" \"+_vm._s(row.name)+\" \")])]}},{key:\"col:namespace\",fn:function({row}){return [_c('td',[_vm._v(\" \"+_vm._s(row.namespace ? row.namespace : '-')+\" \")])]}},{key:\"col:startTime\",fn:function({row}){return [_c('td',[_vm._v(\" \"+_vm._s(_vm.formatTime(row.startTime))+\" \")])]}},{key:\"col:duration\",fn:function({row}){return [_c('td',[_vm._v(\" \"+_vm._s(_vm.duration(row.duration))+\" \")])]}},{key:\"sub-row\",fn:function({row, fullColspan}){return [_c('td',{staticClass:\"sub-row\",attrs:{\"colspan\":fullColspan}},[_c('div',{staticClass:\"details\"},[_c('section',{staticClass:\"col\"},[_c('div',{staticClass:\"title\"},[_vm._v(\" Response Message \")]),_c('span',{staticClass:\"text-info text-capitalize\"},[_vm._v(\" \"+_vm._s(row.responseMessage ? row.responseMessage : '-')+\" \")])]),_c('section',{staticClass:\"col\"},[_c('div',{staticClass:\"title\"},[_vm._v(\" Response Code \")]),_c('span',{staticClass:\"text-info\"},[_vm._v(\" \"+_vm._s(row.responseCode ? row.responseCode : '-')+\" \")])]),_c('section',{staticClass:\"col\"},[_c('div',{staticClass:\"title\"},[_vm._v(\" Mutated \")]),_c('span',{staticClass:\"text-info\"},[_vm._v(\" \"+_vm._s(row.mutated)+\" \")])])])])]}}])}):_c('Banner',{attrs:{\"color\":\"warning\",\"label\":_vm.t(_vm.emptyTracesLabel)}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import dayjs from 'dayjs';\nimport _dropWhile from 'lodash/dropWhile';\nimport _round from 'lodash/round';\nimport _duration from 'dayjs/plugin/duration';\n\ndayjs.extend(_duration);\n\nexport const STANDARD_DATE_FORMAT = 'YYYY-MM-DD';\nexport const STANDARD_TIME_FORMAT = 'HH:mm';\nexport const STANDARD_DATETIME_FORMAT = 'MMMM D YYYY, HH:mm:ss.SSS';\n\n/** @constant 1ms as the number of microseconds, which is the precision of Jaeger timestamps */\nexport const ONE_MILLISECOND = 1000 * 1;\n\nconst ONE_SECOND = 1000 * ONE_MILLISECOND;\nconst ONE_MINUTE = 60 * ONE_SECOND;\nconst ONE_HOUR = 60 * ONE_MINUTE;\nconst ONE_DAY = 24 * ONE_HOUR;\n\nconst UNIT_STEPS: { unit: string; microseconds: number; ofPrevious: number }[] = [\n {\n unit: 'd', microseconds: ONE_DAY, ofPrevious: 24\n },\n {\n unit: 'h', microseconds: ONE_HOUR, ofPrevious: 60\n },\n {\n unit: 'm', microseconds: ONE_MINUTE, ofPrevious: 60\n },\n {\n unit: 's', microseconds: ONE_SECOND, ofPrevious: 1000\n },\n {\n unit: 'ms', microseconds: ONE_MILLISECOND, ofPrevious: 1000\n },\n {\n unit: 'μs', microseconds: 1, ofPrevious: 1000\n },\n];\n\nexport function formatDuration(duration: number): string {\n // Drop all units that are too large except the last one\n const [primaryUnit, secondaryUnit] = _dropWhile(\n UNIT_STEPS,\n ({ microseconds }, index) => index < UNIT_STEPS.length - 1 && microseconds > duration\n );\n\n if (primaryUnit.ofPrevious === 1000) {\n // If the unit is decimal based, display as a decimal\n return `${ _round(duration / primaryUnit.microseconds, 2) }${ primaryUnit.unit }`;\n }\n\n const primaryValue = Math.floor(duration / primaryUnit.microseconds);\n const primaryUnitString = `${ primaryValue }${ primaryUnit.unit }`;\n const secondaryValue = Math.round((duration / secondaryUnit.microseconds) % primaryUnit.ofPrevious);\n const secondaryUnitString = `${ secondaryValue }${ secondaryUnit.unit }`;\n\n return secondaryValue === 0 ? primaryUnitString : `${ primaryUnitString } ${ secondaryUnitString }`;\n}","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('p',{staticClass:\"checklist__description mb-20\",attrs:{\"data-testid\":\"kw-tracing-checklist-description\"}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.tracing.description'))+\" \")]),_c('div',{staticClass:\"checklist__prereq mb-20\"},[_c('h2',[_vm._v(_vm._s(_vm.t('kubewarden.tracing.prerequisites.label')))]),_c('p',[_vm._v(_vm._s(_vm.t('kubewarden.tracing.prerequisites.description')))])]),_c('Banner',{attrs:{\"color\":\"warning\",\"label\":_vm.t('kubewarden.tracing.prerequisites.warning')}}),_c('div',{staticClass:\"checklist__container mt-20 mb-20\"},[_c('div',{staticClass:\"checklist__step mt-20 mb-20\",attrs:{\"data-testid\":\"kw-tracing-checklist-step-open-tel\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.openTelSvc)}),_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.tracing.openTelemetry', {}, true)),expression:\"t('kubewarden.tracing.openTelemetry', {}, true)\"}]})]),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-tracing-checklist-step-jaeger\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.jaegerQuerySvc)}),_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.tracing.jaeger', {}, true)),expression:\"t('kubewarden.tracing.jaeger', {}, true)\"}],attrs:{\"p\":\"\"}})]),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-tracing-checklist-step-config\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.tracingEnabled)}),_c('div',{staticClass:\"checklist__config\"},[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.tracing.config.label', {}, true)),expression:\"t('kubewarden.tracing.config.label', {}, true)\"}]}),_c('button',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.controllerLinkTooltip),expression:\"controllerLinkTooltip\"}],staticClass:\"btn role-primary ml-10\",attrs:{\"data-testid\":\"kw-tracing-checklist-step-config-button\",\"disabled\":_vm.controllerLinkDisabled},on:{\"click\":_vm.controllerAppRoute}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.tracing.config.link\"))+\" \")])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceChecklist.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceChecklist.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TraceChecklist.vue?vue&type=template&id=63ad3d60&scoped=true&\"\nimport script from \"./TraceChecklist.vue?vue&type=script&lang=js&\"\nexport * from \"./TraceChecklist.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TraceChecklist.vue?vue&type=style&index=0&id=63ad3d60&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"63ad3d60\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TraceTable.vue?vue&type=template&id=ab725830&scoped=true&\"\nimport script from \"./TraceTable.vue?vue&type=script&lang=js&\"\nexport * from \"./TraceTable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TraceTable.vue?vue&type=style&index=0&id=ab725830&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ab725830\",\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".checklist__container[data-v-cf603ff2]{display:flex;justify-content:center;flex-direction:column;border:1px solid var(--border);padding:10px}.checklist__config[data-v-cf603ff2],.checklist__step[data-v-cf603ff2]{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.checklist__step[data-v-cf603ff2]{min-height:40px}.conflicting-banner[data-v-cf603ff2]{display:flex;flex-direction:column}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".checklist__container[data-v-63ad3d60]{display:flex;justify-content:center;flex-direction:column;border:1px solid var(--border);padding:10px}.checklist__config[data-v-63ad3d60],.checklist__step[data-v-63ad3d60]{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.checklist__step[data-v-63ad3d60]{min-height:40px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',[(_vm.policyGauges)?[_c('div',{staticClass:\"row\"},[[_c('div',{staticClass:\"col span-6\"},[_c('h3',{attrs:{\"data-testid\":\"kw-ps-detail-status-title\"}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServer.policyGauge.byStatus'))+\" \")]),_c('div',{staticClass:\"gauges mb-20\"},_vm._l((_vm.policyGauges),function(group,key){return _c('CountGauge',{key:key,attrs:{\"total\":_vm.relatedPoliciesTotal,\"useful\":group.count || 0,\"graphical\":false,\"primary-color-var\":`--sizzle-${group.color}`,\"name\":key}})}),1)])],(!_vm.emptyTraces)?[_c('div',{staticClass:\"col span-6\"},[_c('h3',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServer.policyGauge.traces'))+\" \")]),_c('div',{staticClass:\"gauges mb-20\"},_vm._l((_vm.tracesGauges),function(group,key){return _c('CountGauge',{key:key,attrs:{\"useful\":group.count || 0,\"total\":_vm.traceGaugeTotals,\"graphical\":false,\"primary-color-var\":`--sizzle-${group.color}`,\"name\":key}})}),1)])]:_vm._e()],2)]:_vm._e(),_c('ResourceTabs',{attrs:{\"mode\":_vm.mode},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},[_c('Tab',{attrs:{\"name\":\"related-policies\",\"label\":\"Policies\",\"weight\":99},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('ResourceTable',{attrs:{\"rows\":_vm.relatedPolicies || [],\"headers\":_vm.RELATED_HEADERS,\"groupable\":true,\"group-by\":_vm.groupPreference,\"table-actions\":true,\"data-testid\":\"kw-ps-detail-related-policies-list\"},scopedSlots:_vm._u([{key:\"col:operation\",fn:function({ row }){return [_c('td',[_c('BadgeState',{attrs:{\"data-testid\":`kw-ps-detail-${ row.id }-state`,\"label\":row.operation,\"color\":_vm.color(row.operation)}})],1)]}}])})]},proxy:true}])}),_c('Tab',{staticClass:\"relative\",attrs:{\"name\":\"policy-tracing\",\"label\":\"Tracing\",\"weight\":98}},[_c('TraceTable',{attrs:{\"resource\":_vm.resource,\"related-policies\":_vm.relatedPolicies}})],1),_c('Tab',{staticClass:\"relative\",attrs:{\"name\":\"policy-metrics\",\"label\":\"Metrics\",\"weight\":97},scopedSlots:_vm._u([{key:\"default\",fn:function(props){return [_c('MetricsTab',{attrs:{\"resource\":_vm.resource,\"policy-server-obj\":_vm.value,\"active\":props.active}})]}}])})],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./policies.kubewarden.io.policyserver.vue?vue&type=template&id=a88dafa8&scoped=true&\"\nimport script from \"./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"\nexport * from \"./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"\nimport style0 from \"./policies.kubewarden.io.policyserver.vue?vue&type=style&index=0&id=a88dafa8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a88dafa8\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=style&index=0&id=a88dafa8&prod&lang=scss&scoped=true&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading',{attrs:{\"mode\":\"relative\"}}):_c('div',[(_vm.showChecklist)?_c('MetricsChecklist',{attrs:{\"cattle-dashboard-ns\":_vm.cattleDashboardNs,\"conflicting-grafana-dashboards\":_vm.conflictingGrafanaDashboards,\"controller-app\":_vm.controllerApp,\"controller-chart\":_vm.controllerChart,\"kubewarden-service-monitor\":_vm.kubewardenServiceMonitor,\"kubewarden-dashboards\":_vm.kubewardenGrafanaDashboards,\"monitoring-app\":_vm.monitoringApp,\"monitoring-chart\":_vm.monitoringChart,\"open-tel-svc\":_vm.openTelSvc,\"policy-obj\":_vm.policyObj,\"policy-server-obj\":_vm.policyServerObj},on:{\"updateServiceMonitors\":_vm.updateServiceMonitors}}):_vm._e(),(!_vm.showChecklist)?[(_vm.monitoringApp && !_vm.metricsProxy)?_c('Banner',{attrs:{\"color\":\"error\",\"label\":_vm.t('kubewarden.monitoring.warning.noProxy')}}):_vm._e(),(_vm.metricsProxy && _vm.active)?_c('DashboardMetrics',{attrs:{\"data-testid\":\"kw-ps-metrics-dashboard\",\"detail-url\":_vm.metricsProxy,\"summary-url\":_vm.metricsProxy,\"vars\":{'policy_name': _vm.policyName},\"graph-height\":\"825px\"}}):_vm._e()]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import isEmpty from 'lodash/isEmpty';\n\nimport { CONFIG_MAP, SERVICE } from '@shell/config/types';\n\nimport {\n CatalogApp,\n KubewardenDashboards,\n KubewardenDashboardLabels,\n GrafanaDashboardLabels,\n GrafanaDashboardAnnotations,\n HelmAnnotations\n} from '../types';\nimport { handleGrowl, GrowlConfig } from '../utils/handle-growl';\n\ninterface MetricsConfig {\n store: any,\n type: string\n}\n\ninterface DashboardConfig {\n store: any,\n monitoringApp: CatalogApp,\n controllerApp: CatalogApp\n}\n\nexport async function grafanaProxy(config: MetricsConfig): Promise {\n const { store, type } = config;\n\n try {\n const grafana = await grafanaService(store);\n\n if ( !isEmpty(grafana) ) {\n const base = `/api/v1/namespaces/${ grafana.metadata.namespace }/services`;\n const proxy = `/http:${ grafana.metadata.name }:80/proxy`;\n const path = `/d/${ type }?orgId=1&kiosk`;\n\n return base + proxy + path;\n }\n } catch (e) {\n handleGrowl({\n error: e as GrowlConfig | any, store, type: 'warning'\n });\n }\n\n return null;\n}\n\nexport async function grafanaService(store: any) {\n try {\n return await store.dispatch('cluster/find', {\n type: SERVICE,\n id: 'cattle-monitoring-system/rancher-monitoring-grafana'\n }, { root: true });\n } catch (e) {\n handleGrowl({\n error: e as GrowlConfig | any, store, type: 'warning'\n });\n }\n}\n\nexport async function findKubewardenDashboards(store: any) {\n try {\n return await store.dispatch('cluster/findMatching', {\n type: CONFIG_MAP,\n selector: `kubewarden/part-of=cattle-kubewarden-system`\n });\n } catch (e) {\n handleGrowl({\n error: e as GrowlConfig | any, store, type: 'warning'\n });\n }\n}\n\n/**\n * Creates a ConfigMap for the Grafana dashboard depending on the type supplied\n * @param `store, type` | Type of resource ( PolicyServer || (Cluster)AdmissionPolicy )\n */\nexport async function addKubewardenDashboards(config: DashboardConfig): Promise {\n const { store, monitoringApp, controllerApp } = config;\n\n if ( monitoringApp && controllerApp ) {\n /**\n * There are 2 dashboards for Kubewarden:\n * PolicyServer is the default one copied from https://grafana.com/grafana/dashboards/15314-kubewarden/\n * Policies have a condensed version\n */\n const dashboardEnums = Object.values(KubewardenDashboards);\n\n for ( const type of dashboardEnums ) {\n const file = await import(/* webpackChunkName: \"policyDashboard\" */ `../assets/${ type }.json`);\n const fileKey = `${ type }.json`;\n\n /** Check for existing configmaps */\n const existing = await findKubewardenDashboards(store);\n\n if ( existing && existing?.metadata?.name === type ) {\n return;\n }\n\n const labels: GrafanaDashboardLabels = {\n [KubewardenDashboardLabels.DASHBOARD]: type,\n [KubewardenDashboardLabels.PART_OF]: controllerApp.metadata.namespace,\n [KubewardenDashboardLabels.APP]: 'rancher-monitoring-grafana',\n [KubewardenDashboardLabels.GRAFANA_DASHBOARD]: '1',\n 'app.kubernetes.io/instance': monitoringApp.metadata.name\n };\n\n const annotations: GrafanaDashboardAnnotations = {\n [HelmAnnotations.NAME]: monitoringApp.metadata.name,\n [HelmAnnotations.NAMESPACE]: monitoringApp.metadata.namespace\n };\n\n const configMapTemplate = await store.dispatch(\n 'cluster/create',\n {\n type: CONFIG_MAP,\n metadata: {\n annotations,\n labels,\n name: type,\n namespace: 'cattle-dashboards',\n },\n data: { [fileKey]: JSON.stringify(file) },\n }\n );\n\n try {\n await configMapTemplate.save();\n } catch (e) {\n handleGrowl({ error: e as GrowlConfig | any, store });\n }\n }\n }\n}","import isEmpty from 'lodash/isEmpty';\nimport { MONITORING } from '@shell/config/types';\n\nimport { CatalogApp, Service, ServiceMonitor, ServiceMonitorSpec } from '../types';\nimport { handleGrowl, GrowlConfig } from '../utils/handle-growl';\n\ntype ServiceMonitorConfigured = {\n namespace: boolean,\n selectors?: {[key: string]: boolean}[];\n}\n\ninterface MonitoringConfig {\n serviceMonitorSpec: ServiceMonitorSpec[],\n controllerApp: CatalogApp,\n policyServerSvcs: Service[]\n}\n\ninterface ServiceMonitorConfig {\n store: any,\n policyObj?: any,\n policyServerObj?: any,\n controllerNs: string,\n allServiceMonitors?: ServiceMonitor[]\n serviceMonitor?: ServiceMonitor\n}\n\n/**\n * Determines if the Monitoring App is configured correctly with the namespace and label selectors for\n * the Kubewarden controller and policy servers.\n * @param config `serviceMonitorSpec, controllerApp, policyServerSvcs` | Needs monitoring app service monitor spec,\n * kubewarden controller app, and the policy server services.\n * @returns `boolean` | `true` if configured correctly\n */\nexport function monitoringIsConfigured(config: MonitoringConfig): boolean {\n const configured = serviceMonitorsConfigured(config);\n\n if ( Array.isArray(configured) ) {\n return configured?.some((c: ServiceMonitorConfigured) => {\n const selectorsConfigured = !isEmpty(c?.selectors) && c?.selectors?.some((selector) => {\n for (const key in selector) {\n if ( selector[key] && selector[key] === true ) {\n return true;\n }\n }\n\n return false;\n });\n\n return c.namespace && selectorsConfigured;\n });\n }\n\n return false;\n}\n\n/**\n * Searchs for matching `namespaceSelector` and `matchLabels` selector between `serviceMonitorSpec`, `controllerApp`, and `policyServerSvcs`\n * @param config `serviceMonitorSpec, controllerApp, policyServerSvcs` | Needs monitoring app service monitor spec,\n * kubewarden controller app, and the policy server services.\n * @returns `ServiceMonitorConfigured[] | boolean` | If `serviceMonitorSpec` is provided, will return a `ServiceMonitorConfigured` object\n * which contains a `namespace` boolean for a match and selectors[] for `matchLabels`\n */\nexport function serviceMonitorsConfigured(config: MonitoringConfig): ServiceMonitorConfigured[] | boolean {\n const { serviceMonitorSpec, controllerApp, policyServerSvcs } = config;\n\n if ( serviceMonitorSpec ) {\n return serviceMonitorSpec?.map((sm) => {\n const configured: ServiceMonitorConfigured = {\n namespace: false,\n selectors: []\n };\n\n /** Find a matching namespaceSelector to the controllerApp */\n if ( !isEmpty(controllerApp) ) {\n const hasNamespace: boolean = sm.namespaceSelector?.matchNames?.includes(controllerApp?.metadata?.namespace) || false;\n\n configured.namespace = hasNamespace;\n }\n\n /** Find matching label selectors for policy server services */\n if ( !isEmpty(policyServerSvcs) ) {\n policyServerSvcs.forEach((svc) => {\n if ( sm.selector?.matchLabels ) {\n for ( const key of Object.keys(sm.selector.matchLabels) ) {\n const hasLabel = svc?.metadata?.labels?.[key] && svc.metadata.labels[key] === sm.selector.matchLabels[key];\n\n configured?.selectors?.push({ [key]: !!hasLabel });\n }\n }\n });\n }\n\n return configured;\n });\n }\n\n return false;\n}\n\n/**\n * Searches provided ServiceMonitors for a matching resource based on the `selector.matchLabels` including:\n * `app=kubewarden-policy-server-`\n * @param config: `policyObj?, policyServerObj?, allServiceMonitors` | Needs either a policy object or policy server object with all fetched\n * ServiceMonitors\n * @returns `ServiceMonitor | void`\n */\nexport function findServiceMonitor(config: ServiceMonitorConfig): ServiceMonitor | void {\n const { policyObj, policyServerObj, allServiceMonitors } = config;\n\n if ( !isEmpty(allServiceMonitors) ) {\n const smName: string = policyObj ? policyObj.spec?.policyServer : policyServerObj?.id;\n\n return allServiceMonitors?.find(sm => sm?.spec?.selector?.matchLabels?.['app'] === `kubewarden-policy-server-${ smName }`);\n }\n}\n\n/**\n * Creates a Service Monitor for a PolicyServer when provided either a PS or a policy\n * @param config: `store, policyObj?, policyServerObj?, controllerNs` | Needs kubewarden-controller app namespace, either a policy server or policy.\n */\nexport async function addKubewardenServiceMonitor(config: ServiceMonitorConfig): Promise {\n const {\n store, policyObj, policyServerObj, controllerNs, serviceMonitor\n } = config;\n\n if ( store.getters['cluster/schemaFor'](MONITORING.SERVICEMONITOR) ) {\n const smName: string = policyObj ? policyObj.spec?.policyServer : policyServerObj?.id;\n\n const serviceMonitorTemplate: ServiceMonitor = {\n kind: 'ServiceMonitor',\n type: MONITORING.SERVICEMONITOR,\n metadata: {\n name: smName,\n namespace: controllerNs\n },\n spec: {\n endpoints: [{ interval: '10s', port: 'metrics' }],\n namespaceSelector: { matchNames: [controllerNs] },\n selector: { matchLabels: { app: `kubewarden-policy-server-${ smName }` } }\n }\n };\n\n if ( !serviceMonitor ) {\n const serviceMonitorObj = await store.dispatch(\n 'cluster/create',\n serviceMonitorTemplate\n );\n\n try {\n await serviceMonitorObj.save();\n } catch (e) {\n handleGrowl({ error: e as GrowlConfig | any, store });\n }\n }\n }\n}","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"checklist__container\"},[_c('div',{staticClass:\"checklist__prereq mb-20\"},[_c('h2',[_vm._v(_vm._s(_vm.t('kubewarden.monitoring.prerequisites.label')))]),_c('p',[_vm._v(_vm._s(_vm.t('kubewarden.monitoring.prerequisites.description')))])]),_c('Banner',{attrs:{\"color\":\"warning\",\"label\":_vm.t('kubewarden.monitoring.prerequisites.warning')}}),_c('div',{staticClass:\"mt-20 mb-20\"},[_c('div',{staticClass:\"checklist__step mt-20 mb-20\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-open-tel\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.openTelSvc)}),_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.tracing.openTelemetry', {}, true)),expression:\"t('kubewarden.tracing.openTelemetry', {}, true)\"}]})]),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-monitoring-app\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.monitoringApp)}),_c('div',{staticClass:\"checklist__config\"},[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.monitoring.prerequisites.monitoringApp.label', {}, true)),expression:\"t('kubewarden.monitoring.prerequisites.monitoringApp.label', {}, true)\"}],attrs:{\"p\":\"\"}}),(!_vm.monitoringApp)?_c('button',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.monitoringLinkTooltip),expression:\"monitoringLinkTooltip\"}],staticClass:\"btn role-primary ml-10\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-config-button\",\"disabled\":!_vm.monitoringChart},on:{\"click\":function($event){return _vm.monitoringAppRoute()}}},[_vm._v(\" \"+_vm._s(_vm.monitoringChartLink)+\" \")]):_vm._e()])]),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-service-monitor-map\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.kubewardenServiceMonitor)}),_c('div',{staticClass:\"checklist__config\"},[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.monitoring.prerequisites.serviceMonitor.label', {}, true)),expression:\"t('kubewarden.monitoring.prerequisites.serviceMonitor.label', {}, true)\"}],attrs:{\"p\":\"\"}}),(!_vm.kubewardenServiceMonitor)?_c('AsyncButton',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.serviceMonitorsTooltip),expression:\"serviceMonitorsTooltip\"}],staticClass:\"ml-10\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-service-monitor-button\",\"mode\":\"serviceMonitor\",\"disabled\":_vm.serviceMonitorButtonDisabled},on:{\"click\":_vm.addServiceMonitor}}):_vm._e()],1)]),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-config-map\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.hasKubewardenDashboards)}),_c('div',{staticClass:\"checklist__config\"},[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.monitoring.prerequisites.configMap.label', {}, true)),expression:\"t('kubewarden.monitoring.prerequisites.configMap.label', {}, true)\"}],attrs:{\"p\":\"\"}}),(!_vm.hasKubewardenDashboards)?_c('AsyncButton',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.dashboardsTooltip),expression:\"dashboardsTooltip\"}],staticClass:\"ml-10\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-config-map-button\",\"mode\":\"grafanaDashboard\",\"disabled\":_vm.dashboardButtonDisabled},on:{\"click\":_vm.addDashboards}}):_vm._e()],1)]),(_vm.showConflictingDashboardsBanner)?_c('Banner',{attrs:{\"color\":\"error\"}},[_c('div',{staticClass:\"conflicting-banner\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.monitoring.prerequisites.configMap.conflictingDashboardsBanner', { count: _vm.conflictingGrafanaDashboards.length }, true))+\" \")]),_vm._l((_vm.conflictingGrafanaDashboards),function(configMap){return _c('n-link',{key:configMap.metadata.name,staticClass:\"text-bold\",attrs:{\"to\":configMap.detailLocation}},[_vm._v(\" \"+_vm._s(configMap.metadata.name)+\" \")])})],2)]):_vm._e(),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-controller-config\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.metricsEnabled)}),_c('div',{staticClass:\"checklist__config\"},[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.monitoring.prerequisites.controllerConfig.label', {}, true)),expression:\"t('kubewarden.monitoring.prerequisites.controllerConfig.label', {}, true)\"}],attrs:{\"p\":\"\"}}),(!_vm.metricsEnabled)?_c('button',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.controllerLinkTooltip),expression:\"controllerLinkTooltip\"}],staticClass:\"btn role-primary ml-10\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-config-button\",\"disabled\":_vm.controllerLinkDisabled},on:{\"click\":function($event){return _vm.controllerAppRoute()}}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.monitoring.prerequisites.controllerConfig.button\"))+\" \")]):_vm._e()])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsChecklist.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsChecklist.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MetricsChecklist.vue?vue&type=template&id=cf603ff2&scoped=true&\"\nimport script from \"./MetricsChecklist.vue?vue&type=script&lang=js&\"\nexport * from \"./MetricsChecklist.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MetricsChecklist.vue?vue&type=style&index=0&id=cf603ff2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cf603ff2\",\n null\n \n)\n\nexport default component.exports","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MetricsTab.vue?vue&type=template&id=4829eb55&\"\nimport script from \"./MetricsTab.vue?vue&type=script&lang=js&\"\nexport * from \"./MetricsTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".policy-table-container[data-v-ab725830]{display:flex;flex-direction:column;gap:1rem}.filter[data-v-ab725830]{display:flex;flex-direction:row;justify-content:flex-end;align-self:flex-end;align-items:center}.filter>*[data-v-ab725830]{margin:10px;max-width:33%}.filter[data-v-ab725830]>:first-child{margin-left:0}.filter[data-v-ab725830]>:last-child{margin-right:0}.filter__category[data-v-ab725830]{min-width:200px;height:unset}.filter__reset[data-v-ab725830],.filter__search[data-v-ab725830]{height:61px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export function proxyUrl(service: any, port: number): string {\n const view: string = service?.links['view'];\n const idx: number = view.lastIndexOf(`/`);\n\n return proxyUrlFromBase(view.slice(0, idx), 'http', service?.metadata.name, port);\n}\n\nexport function proxyUrlFromBase(base: string, scheme: string, name: string, port: number, path?: any): string {\n const schemaNamePort = (scheme ? `${ encodeURIComponent(scheme) }:` : '') + encodeURIComponent(name) + (port ? `:${ encodeURIComponent(port) }` : '');\n\n const cleanPath = `/${ (path || '').replace(/^\\/+/g, '') }`;\n const cleanBase = base.replace(/\\/+$/g, '');\n\n const out = `${ cleanBase }/${ schemaNamePort }/proxy${ cleanPath }`;\n\n return out;\n}\n","import isEmpty from 'lodash/isEmpty';\n\nimport {\n KUBEWARDEN, JaegerConfig, PolicyTrace, PolicyTraceConfig, Tag\n} from '../types';\nimport { proxyUrl } from '../utils/service';\n\n/** TODO: Update the `any` types throughout this file */\n\n/**\n * Fetches trace reports from Jaeger for each related policy or singular policy.\n * @param config `JaegerConfig` | Contains the `store`, `jaegerQueryService`, `resource` (policy-server or policy type),\n * `relatedPolicies?` needed for policy server, `policy?` for individual policies, `time?` for trace timeframe.\n * @returns `PolicyTraceConfig | null` | A scaffold object which contains the policy name, cluster id, and traces for the policy.\n */\nexport async function jaegerTraces(config: JaegerConfig): Promise {\n const {\n store, queryService, resource, relatedPolicies, policy, time\n } = config;\n\n try {\n const proxy = proxyUrl(queryService, 16686);\n\n const promises = [];\n\n if ( !isEmpty(relatedPolicies) ) {\n relatedPolicies?.forEach((p: any) => {\n const hash = jaegerTraceRequest(store, proxy, p, time);\n\n if ( hash ) {\n promises.push(hash);\n }\n });\n } else if ( policy ) {\n promises.push(jaegerTraceRequest(store, proxy, policy, time));\n } else {\n throw new Error('Policy is undefined');\n }\n\n let res = await Promise.all(promises);\n\n res = res.flatMap(o => o?.data);\n\n return scaffoldPolicyTrace(store, res, resource, relatedPolicies, policy);\n } catch (e) {\n console.warn(`Error fetching Jaeger traces: ${ e }`); // eslint-disable-line no-console\n }\n\n return null;\n}\n\nexport function jaegerPolicyName(policy: any) {\n let out = null;\n\n switch (policy?.kind) {\n case 'ClusterAdmissionPolicy':\n out = `clusterwide-${ policy?.metadata?.name }`;\n break;\n\n case 'AdmissionPolicy':\n out = `namespaced-${ policy?.metadata?.namespace }-${ policy?.metadata?.name }`;\n break;\n\n default:\n break;\n }\n\n return out;\n}\n\nfunction jaegerTraceRequest(store: any, proxyUrl: any, policy: any, time?: any) {\n let apiPath = null;\n\n const name = jaegerPolicyName(policy);\n const lookbackTime = time || '2d';\n\n const options = `lookback=${ lookbackTime }&tags={\"policy_id\"%3A\"${ name }\"}`;\n\n // The service `kubewarden-policy-server` is **not** a k8s Service\n apiPath = `api/traces?service=kubewarden-policy-server&operation=validation&${ options }`;\n const JAEGER_PATH = `${ proxyUrl + apiPath }`;\n\n return store.dispatch('cluster/request', { url: JAEGER_PATH });\n}\n\nfunction scaffoldPolicyTrace(store: any, traces: any, resource: any, relatedPolicies: any, policy: any): any {\n const currentCluster = store.getters['currentCluster'];\n const out = [];\n\n function filterTraces(p: any) {\n const policyName = jaegerPolicyName(p);\n\n return traces.reduce((acc: any, trace: any): PolicyTrace[] => {\n let out = {};\n\n const validationSpan = trace.spans.find((span: any) => span.operationName === 'validation');\n const matchedTag = validationSpan?.tags?.find((tag: any) => tag?.key === 'policy_id' && tag?.value === policyName);\n\n if ( matchedTag ) {\n const convertedTags = convertTagsToObject(validationSpan.tags);\n\n out = {\n id: trace.traceID,\n allowed: convertedTags.allowed,\n mode: p.spec.mode,\n name: convertedTags.name,\n operation: convertedTags.operation,\n kind: convertedTags.kind,\n namespace: convertedTags.namespace || null,\n startTime: validationSpan.startTime,\n duration: validationSpan.duration,\n responseMessage: convertedTags.response_message,\n responseCode: convertedTags.response_code,\n mutated: convertedTags.mutated\n };\n }\n\n if ( !isEmpty(out) ) {\n acc.push(out);\n store.dispatch('kubewarden/updatePolicyTraces', {\n policyName: p.metadata.name,\n cluster: currentCluster?.id,\n updatedTrace: out\n });\n }\n\n return acc;\n }, []);\n }\n\n if ( resource === KUBEWARDEN.POLICY_SERVER ) {\n for ( const relatedPolicy of relatedPolicies ) {\n const relatedTraces = filterTraces(relatedPolicy);\n\n if ( !isEmpty(relatedTraces) ) {\n out.push({\n policyName: relatedPolicy.metadata.name,\n cluster: currentCluster?.id,\n traces: relatedTraces\n });\n }\n }\n } else {\n const relatedTraces = filterTraces(policy);\n\n if ( !isEmpty(relatedTraces) ) {\n out.push({\n policyName: policy.metadata.name,\n cluster: currentCluster?.id,\n traces: relatedTraces\n });\n }\n }\n\n return out;\n}\n\nexport function convertTagsToObject(arr: Tag[]): Record {\n const result: Record = {};\n\n for (const item of arr) {\n switch (item.type) {\n case 'string':\n result[item.key] = item.value as string;\n break;\n case 'int64':\n result[item.key] = parseInt(item.value as string, 10);\n break;\n case 'float64':\n result[item.key] = parseFloat(item.value as string);\n break;\n case 'bool':\n result[item.key] = item.value === 'true';\n break;\n default:\n result[item.key] = item.value;\n }\n }\n\n return result;\n}\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".relative[data-v-a88dafa8]{position:relative}.policy__mode[data-v-a88dafa8]{display:flex;align-items:center}.policy__mode i[data-v-a88dafa8]{margin-left:5px;font-size:22px;color:var(--warning)}.gauges[data-v-a88dafa8],.gaugesContainer[data-v-a88dafa8]{display:flex}.gauges[data-v-a88dafa8]{justify-content:space-around;flex-wrap:wrap;justify-content:left}.gauges .count-gauge[data-v-a88dafa8]{width:46%;margin-bottom:10px;flex:initial}.gauges>*[data-v-a88dafa8]{flex:1;margin-right:1.75%}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceChecklist.vue?vue&type=style&index=0&id=63ad3d60&prod&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsChecklist.vue?vue&type=style&index=0&id=cf603ff2&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdateModeDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdateModeDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateModeDialog.vue?vue&type=template&id=36b40387&scoped=true&\"\nimport script from \"./UpdateModeDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateModeDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdateModeDialog.vue?vue&type=style&index=0&id=36b40387&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36b40387\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyReadmePanel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyReadmePanel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyReadmePanel.vue?vue&type=template&id=1cec5e9c&scoped=true&\"\nimport script from \"./PolicyReadmePanel.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyReadmePanel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicyReadmePanel.vue?vue&type=style&index=0&id=1cec5e9c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1cec5e9c\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=style&index=0&id=b012c5bc&prod&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".policy-table-container[data-v-73f021fc]{display:flex;flex-direction:column;gap:1rem;padding:1rem}.policy-table-actions[data-v-73f021fc]{display:flex;justify-content:space-between;align-items:center}.filter[data-v-73f021fc]{width:100%;display:grid;grid-template-rows:1fr;grid-template-columns:repeat(2,1fr) .25fr;grid-template-areas:\\\"attributes search reset\\\";gap:1rem}.filter>*[data-v-73f021fc]{margin:.5rem 0}.filter__attributes[data-v-73f021fc]{grid-area:attributes}.filter__search[data-v-73f021fc]{grid-area:search}.filter__reset[data-v-73f021fc]{grid-area:reset}.filter__reset p[data-v-73f021fc]{line-height:1.5;white-space:wrap}[data-v-73f021fc] tr:hover{cursor:pointer}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Config.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Config.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Config.vue?vue&type=template&id=29773f24&scoped=true&\"\nimport script from \"./Config.vue?vue&type=script&lang=js&\"\nexport * from \"./Config.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Config.vue?vue&type=style&index=0&id=29773f24&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"29773f24\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyReadmePanel.vue?vue&type=style&index=0&id=1cec5e9c&prod&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"[data-v-5ae37dc8] .step-container{height:auto}.step__basic[data-v-5ae37dc8]{display:flex;flex-direction:column;flex:1;overflow-x:hidden}.step__basic .spacer[data-v-5ae37dc8]{line-height:2}.step__values__controls[data-v-5ae37dc8]{display:flex;margin-bottom:15px}.step__values__controls[data-v-5ae37dc8]>:not(:last-of-type){margin-right:10px}.step__values__content[data-v-5ae37dc8],.step__values__controls--spacer[data-v-5ae37dc8]{flex:1}.step__values__content[data-v-5ae37dc8] .tab-container{overflow:auto}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Values.vue?vue&type=style&index=0&id=5ae37dc8&prod&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".step__values__controls[data-v-d467cb12]{display:flex;margin-bottom:15px}.step__values__controls[data-v-d467cb12]>:not(:last-of-type){margin-right:10px}.step__values__content[data-v-d467cb12],.step__values__controls--spacer[data-v-d467cb12]{flex:1}.step__values__content[data-v-d467cb12] .tab-container{overflow:auto}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading',{attrs:{\"mode\":\"relative\"}}):_c('div',[(!_vm.hideArtifactHubBanner)?[_c('Banner',{staticClass:\"type-banner mb-20 mt-0\",attrs:{\"data-testid\":\"kw-policy-create-ah-banner\",\"color\":\"warning\",\"closable\":true},on:{\"close\":function($event){return _vm.closeBanner('updateHideBannerArtifactHub')}}},[_c('div',[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.policies.noArtifactHub', {}, true)),expression:\"t('kubewarden.policies.noArtifactHub', {}, true)\"}],staticClass:\"mb-10\"}),_c('AsyncButton',{attrs:{\"mode\":\"artifactHub\"},on:{\"click\":_vm.addArtifactHub}})],1)])]:_vm._e(),(!_vm.hideAirgapBanner)?[_c('Banner',{staticClass:\"type-banner mb-20 mt-0\",attrs:{\"data-testid\":\"kw-policy-create-ag-banner\",\"color\":\"warning\",\"closable\":true,\"label\":_vm.t('kubewarden.policies.airgap.banner')},on:{\"close\":function($event){return _vm.closeBanner('updateHideBannerAirgapPolicy')}}})]:_vm._e(),(_vm.loadingPackages)?_c('Loading'):_vm._e(),(_vm.value && !_vm.loadingPackages)?_c('Wizard',{ref:\"wizard\",staticClass:\"wizard\",attrs:{\"data-testid\":\"kw-policy-create-wizard\",\"errors\":_vm.errors,\"steps\":_vm.steps,\"show-banner\":false,\"edit-first-step\":true},on:{\"next\":_vm.reset,\"cancel\":_vm.done,\"finish\":_vm.finish},scopedSlots:_vm._u([{key:\"policies\",fn:function(){return [_c('PolicyTable',{attrs:{\"data-testid\":\"kw-policy-create-table\",\"value\":_vm.packages},on:{\"selectType\":function($event){return _vm.selectType($event)}}})]},proxy:true},{key:\"values\",fn:function(){return [_c('div',{staticClass:\"banner__title\"},[_c('h2',[_vm._v(_vm._s(_vm.bannerTitle))]),(!_vm.customPolicy)?[_c('p',{staticClass:\"banner__short-description\"},[_vm._v(\" \"+_vm._s(_vm.shortDescription)+\" \")]),_c('button',{staticClass:\"btn btn-sm role-link banner__readme-button\",on:{\"click\":_vm.showReadme}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyConfig.description.showReadme'))+\" \")])]:_vm._e()],2),_c('Values',{attrs:{\"value\":_vm.value,\"chart-values\":_vm.chartValues,\"yaml-values\":_vm.yamlValues,\"mode\":_vm.mode,\"custom-policy\":_vm.customPolicy},on:{\"editor\":$event => _vm.yamlOption = $event,\"updateYamlValues\":$event => _vm.yamlValues = $event}})]},proxy:true},{key:\"finish\",fn:function(){return [_c('AsyncButton',{attrs:{\"data-testid\":\"kw-policy-create-finish-button\",\"disabled\":!_vm.canFinish,\"mode\":\"finish\"},on:{\"click\":_vm.finish}})]},proxy:true}],null,false,3245187313),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}}):_vm._e(),(_vm.packageValues && !_vm.customPolicy)?[_c('PolicyReadmePanel',{ref:\"readmePanel\",attrs:{\"package-values\":_vm.packageValues}})]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"policy-table-container\"},[_c('div',{staticClass:\"filter\"},[(_vm.attributeOptions.length)?_c('LabeledSelect',{staticClass:\"filter__attributes\",attrs:{\"data-testid\":\"kw-table-filter-source\",\"clearable\":true,\"taggable\":true,\"mode\":_vm.mode,\"multiple\":true,\"label-key\":\"kubewarden.utils.attributes.label\",\"options\":_vm.attributeOptions},on:{\"selecting\":e => _vm.handleAttributeSelect(e)},model:{value:(_vm.attributes),callback:function ($$v) {_vm.attributes=$$v},expression:\"attributes\"}}):_vm._e(),_c('LabeledInput',{ref:\"searchQuery\",staticClass:\"input-sm filter__search\",attrs:{\"data-testid\":\"kw-table-filter-search\",\"mode\":_vm.mode,\"label\":_vm.t('kubewarden.utils.search'),\"placeholder\":_vm.t('kubewarden.generic.name')},model:{value:(_vm.searchQuery),callback:function ($$v) {_vm.searchQuery=$$v},expression:\"searchQuery\"}}),_c('button',{ref:\"btn\",staticClass:\"btn role-tertiary filter__reset\",attrs:{\"data-testid\":\"kw-table-filter-refresh\",\"type\":\"button\"},on:{\"click\":_vm.refresh}},[_c('p',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.utils.resetFilter'))+\" \")])])],1),_c('div',{staticClass:\"policy-table-actions\"},[_c('Checkbox',{attrs:{\"label\":_vm.t('kubewarden.utils.official.label'),\"data-testid\":\"kw-table-filter-official\"},model:{value:(_vm.showKubewardenOfficial),callback:function ($$v) {_vm.showKubewardenOfficial=$$v},expression:\"showKubewardenOfficial\"}}),_c('button',{ref:\"btn\",staticClass:\"btn role-tertiary\",attrs:{\"data-testid\":\"kw-table-custom-buttom\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.$emit('selectType', 'custom')}}},[_c('p',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.utils.custom.create'))+\" \")])])],1),_c('SortableTableWrapper',{attrs:{\"rows\":_vm.filteredSubtypes,\"headers\":_vm.POLICY_TABLE_HEADERS,\"table-actions\":false,\"row-actions\":false,\"key-field\":\"package_id\",\"default-sort-by\":\"name\",\"paging\":true,\"search\":false},on:{\"selectRow\":(row) => _vm.$emit('selectType', row)}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { ArtifactHubPackage } from '../types';\n\n/**\n * Extracts resource kinds from a list of ArtifactHub packages with the `kubewarden/resources` annotation.\n * @param artifactHubPackages\n * @returns `string[]` | Resource kinds\n */\nexport function resourcesFromAnnotation(artifactHubPackages: ArtifactHubPackage[]): string[] | void {\n const out: string[] = [];\n\n const resources = artifactHubPackages?.flatMap((artifactHubPackage) => {\n const annotation = artifactHubPackage?.data?.['kubewarden/resources'];\n\n if ( annotation ) {\n return annotation;\n }\n });\n\n resources?.flatMap((resource) => {\n if ( resource ) {\n const split = resource.split(',');\n\n if ( split.length > 1 ) {\n split.forEach((s: string) => out.push(s.trim()));\n } else {\n out.push(resource);\n }\n }\n\n return [];\n })?.sort();\n\n if ( !out || out?.length === 0 ) {\n return [];\n }\n\n return [...new Set(out.filter(Boolean))];\n}\n\n/**\n * Checks the resources within a ArtifactHub package's `kubewarden/resources` annotation to determine if\n * the policy is targeting non-namespaced resources. Needed to gate CAP from AP grid.\n * @param artifactHubPackage `schemas`\n * @returns Boolean\n */\nexport function isGlobalPolicy(artifactHubPackage: ArtifactHubPackage, schemas: any): Boolean {\n if ( artifactHubPackage ) {\n const resources: string[] | undefined = artifactHubPackage.data?.['kubewarden/resources']?.split(',');\n let targetsNonNamespaced: Boolean = false;\n\n if ( resources ) {\n for ( const resource of resources ) {\n targetsNonNamespaced = schemas?.some((schema: any) => (\n schema?.attributes?.kind === resource && (schema?.attributes?.namespaced === false || undefined)\n ));\n }\n }\n\n return targetsNonNamespaced;\n }\n\n return false;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('SortableTable',{ref:\"sortableTable\",attrs:{\"rows\":_vm.rows,\"headers\":_vm.headers,\"table-actions\":_vm.tableActions,\"row-actions\":_vm.rowActions,\"key-field\":_vm.keyField,\"default-sort-by\":_vm.defaultSortBy,\"paging\":_vm.paging,\"search\":_vm.search}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SortableTableWrapper.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SortableTableWrapper.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SortableTableWrapper.vue?vue&type=template&id=7934d794&\"\nimport script from \"./SortableTableWrapper.vue?vue&type=script&lang=js&\"\nexport * from \"./SortableTableWrapper.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyTable.vue?vue&type=template&id=73f021fc&scoped=true&\"\nimport script from \"./PolicyTable.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyTable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicyTable.vue?vue&type=style&index=0&id=73f021fc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73f021fc\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Create.vue?vue&type=template&id=b012c5bc&scoped=true&\"\nimport script from \"./Create.vue?vue&type=script&lang=js&\"\nexport * from \"./Create.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Create.vue?vue&type=style&index=0&id=b012c5bc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b012c5bc\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Values.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Values.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Values.vue?vue&type=template&id=5ae37dc8&scoped=true&\"\nimport script from \"./Values.vue?vue&type=script&lang=js&\"\nexport * from \"./Values.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Values.vue?vue&type=style&index=0&id=5ae37dc8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ae37dc8\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./policies.kubewarden.io.policyserver.vue?vue&type=template&id=1955e4de&\"\nimport script from \"./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"\nexport * from \"./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading',{attrs:{\"mode\":\"relative\"}}):_c('div',[(_vm.isCreate || _vm.isEdit)?_c('div',{staticClass:\"step__values__controls\"},[_c('ButtonGroup',{attrs:{\"data-testid\":\"kw-policy-config-yaml-option\",\"options\":_vm.YAML_OPTIONS,\"inactive-class\":\"bg-disabled btn-sm\",\"active-class\":\"bg-primary btn-sm\"},model:{value:(_vm.yamlOption),callback:function ($$v) {_vm.yamlOption=$$v},expression:\"yamlOption\"}})],1):_vm._e(),_c('div',{staticClass:\"scroll__container\"},[_c('div',{staticClass:\"scroll__content\"},[(_vm.showForm)?[_c('Tabbed',{ref:\"tabs\",staticClass:\"step__values__content\",attrs:{\"side-tabs\":true},on:{\"changed\":function($event){return _vm.tabChanged($event)}}},[(_vm.valuesComponent)?[_c(_vm.valuesComponent,{tag:\"component\",attrs:{\"mode\":_vm.mode,\"custom-policy\":_vm.customPolicy},model:{value:(_vm.chartValues),callback:function ($$v) {_vm.chartValues=$$v},expression:\"chartValues\"}})]:_vm._e()],2)]:((_vm.isCreate || _vm.isEdit) && !_vm.showForm)?[_c('YamlEditor',{ref:\"yaml\",staticClass:\"step__values__content\",attrs:{\"data-testid\":\"kw-policy-config-yaml-editor\",\"scrolling\":true,\"initial-yaml-values\":_vm.originalYamlValues,\"editor-mode\":_vm.editorMode,\"hide-preview-buttons\":true},on:{\"onChanges\":_vm.updateYamlValues},model:{value:(_vm.currentYamlValues),callback:function ($$v) {_vm.currentYamlValues=$$v},expression:\"currentYamlValues\"}})]:_vm._e(),_c('ResourceCancelModal',{ref:\"cancelModal\",attrs:{\"data-testid\":\"kw-policy-config-yaml-cancel\",\"is-cancel-modal\":false,\"is-form\":true},on:{\"cancel-cancel\":function($event){_vm.preYamlOption = _vm.yamlOption},\"confirm-cancel\":function($event){_vm.yamlOption = _vm.preYamlOption}}})],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Values.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Values.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Values.vue?vue&type=template&id=d467cb12&scoped=true&\"\nimport script from \"./Values.vue?vue&type=script&lang=js&\"\nexport * from \"./Values.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Values.vue?vue&type=style&index=0&id=d467cb12&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d467cb12\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isCreate)?_c('Create',{attrs:{\"value\":_vm.value,\"mode\":_vm.mode}}):_c('CruResource',{attrs:{\"resource\":_vm.value,\"mode\":_vm.realMode,\"can-yaml\":false},on:{\"finish\":_vm.finish}},[_c('Config',{attrs:{\"value\":_vm.value,\"mode\":_vm.realMode},on:{\"updateYamlValues\":_vm.updateYamlValuesFromEdit}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=template&id=27ab086c&\"\nimport script from \"./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"\nexport * from \"./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".content[data-v-29773f24]{position:relative;z-index:1}.banner__title[data-v-29773f24]{padding-top:10px;margin-bottom:10px;border-bottom:1px solid var(--border);min-height:60px}.banner__readme-button[data-v-29773f24]{padding:0 7px 0 0}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTable.vue?vue&type=style&index=0&id=73f021fc&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProgressBarMulti.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProgressBarMulti.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProgressBarMulti.vue?vue&type=template&id=abc33690&scoped=true&\"\nimport script from \"./ProgressBarMulti.vue?vue&type=script&lang=js&\"\nexport * from \"./ProgressBarMulti.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProgressBarMulti.vue?vue&type=style&index=0&id=abc33690&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"abc33690\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicySummaryGraph.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicySummaryGraph.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicySummaryGraph.vue?vue&type=template&id=68a4b45d&\"\nimport script from \"./PolicySummaryGraph.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicySummaryGraph.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicySummaryGraph.vue?vue&type=style&index=0&id=68a4b45d&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".col-scale{position:relative}.col-scale .trigger{width:100%}.scale{margin:0;padding:0;line-height:normal}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_vm._v(\" \"+_vm._s(_vm.resources)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTableResources.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTableResources.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyTableResources.vue?vue&type=template&id=7d974c91&\"\nimport script from \"./PolicyTableResources.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyTableResources.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyReportSummary.vue?vue&type=style&index=0&id=80bba75c&prod&lang=scss&scoped=true&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',_vm._l((_vm.resourceLabels),function(resource,i){return _c('span',{key:i},[_vm._v(\" \"+_vm._s(resource)+\" \")])}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyResources.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyResources.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyResources.vue?vue&type=template&id=2d2cff57&\"\nimport script from \"./PolicyResources.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyResources.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.canShow)?_c('div',{staticClass:\"pr-summary\"},[_c('v-popover',{staticClass:\"text-center hand\",attrs:{\"placement\":\"top\",\"open-group\":_vm.value.id,\"trigger\":\"click\",\"offset\":\"1\"},scopedSlots:_vm._u([{key:\"popover\",fn:function(){return [_c('div',{staticClass:\"pr-summary__content\"},[_c('div',_vm._l((_vm.summaryParts),function(obj){return _c('div',{key:obj.key,staticClass:\"counts\"},[_c('span',{staticClass:\"text-left pr-20\",class:{[obj.textColor]: true}},[_vm._v(\" \"+_vm._s(obj.label)+\" \")]),_c('span',{staticClass:\"text-right\"},[_vm._v(\" \"+_vm._s(obj.value)+\" \")])])}),0)])]},proxy:true}],null,false,3136338994)},[[_c('div',{staticClass:\"pr-summary__container\"},_vm._l((_vm.summaryParts),function(obj){return _c('div',{key:`${obj.key}-badge`},[(obj.value)?_c('div',{staticClass:\"badge\",class:{[obj.bgColor]: true}},[_c('span',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(obj.label),expression:\"obj.label\"}]},[_vm._v(_vm._s(obj.value))])]):_vm._e()])}),0)]],2)],1):_c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyReportSummary.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyReportSummary.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyReportSummary.vue?vue&type=template&id=80bba75c&scoped=true&\"\nimport script from \"./PolicyReportSummary.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyReportSummary.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicyReportSummary.vue?vue&type=style&index=0&id=80bba75c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"80bba75c\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyServerDeployment.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyServerDeployment.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyServerDeployment.vue?vue&type=template&id=2a8202a5&scoped=true&\"\nimport script from \"./PolicyServerDeployment.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyServerDeployment.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicyServerDeployment.vue?vue&type=style&index=0&id=2a8202a5&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2a8202a5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_vm._v(\" \"+_vm._s(_vm.features)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTableFeatures.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTableFeatures.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyTableFeatures.vue?vue&type=template&id=7eb8d6dc&\"\nimport script from \"./PolicyTableFeatures.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyTableFeatures.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.stateDisplay)?_c('BadgeState',{attrs:{\"color\":_vm.stateBackground,\"label\":_vm.capitalizeMessage(_vm.stateDisplay)}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyServerStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyServerStatus.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyServerStatus.vue?vue&type=template&id=3d2005ff&\"\nimport script from \"./PolicyServerStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyServerStatus.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTableBadges.vue?vue&type=style&index=0&id=27742bc9&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a ","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTableBadges.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTableBadges.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyTableBadges.vue?vue&type=template&id=27742bc9&scoped=true&\"\nimport script from \"./PolicyTableBadges.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyTableBadges.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicyTableBadges.vue?vue&type=style&index=0&id=27742bc9&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"27742bc9\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n\x3c!-- RESOURCE DEPLOYMENT ICON --\x3e\n\n\x3c!-- NODE ICON --\x3e\n\n\x3c!-- RESOURCE OTHER ICON --\x3e\n\n\n`;var Dw={name:"ForceDirectedTreeChart",components:{BadgeState:Vn["a"]},props:{data:{type:[Array,Object],required:!0},fdcConfig:{type:Object,required:!0}},data(){return{dataWatcher:void 0,parsedInfo:void 0,root:void 0,allNodesData:void 0,allLinks:void 0,rootNode:void 0,node:void 0,link:void 0,svg:void 0,zoom:void 0,simulation:void 0,isChartFirstRendered:!1,isChartFirstRenderAnimationFinished:!1,moreInfo:{}}},methods:{watcherFunction(e){if(e.length)if(this.isChartFirstRendered){const e=this.fdcConfig.parseData(this.data),t=this.flatten(e);let n=!1;t.forEach(e=>{const t=this.allNodesData.findIndex(t=>e.matchingId===t.data.matchingId);t>-1&&this.allNodesData[t].data.state!==e.state&&(this.allNodesData[t].data.state=e.state,this.allNodesData[t].data.stateLabel=e.stateLabel,this.allNodesData[t].data.stateColor=e.stateColor,n=!0,this.allNodesData[t].data.active&&this.setDetailsInfo(this.allNodesData[t].data,!1))}),n&&this.updateChart(!1,!1)}else this.parsedInfo=this.fdcConfig.parseData(this.data),this.setDetailsInfo(this.parsedInfo,!1),this.parsedInfo.active=!0,this.renderChart(),this.updateChart(!0,!0),this.isChartFirstRendered=!0},renderChart(){this.zoom=Rw().scaleExtent([1/8,16]).on("zoom",this.zoomed);const e=ww.scale(1).translate(0,0);this.rootNode=this.svg.append("g").attr("class","root-node"),this.svg.call(this.zoom),this.svg.call(this.zoom.transform,e),this.simulation=Ep().force("charge",xp().strength(this.fdcConfig.simulationParams.fdcStrength).distanceMax(this.fdcConfig.simulationParams.fdcDistanceMax)).force("collision",$d(this.fdcConfig.simulationParams.fdcForceCollide)).force("center",ud(this.fdcConfig.chartWidth/2,this.fdcConfig.chartHeight/2)).alphaDecay(this.fdcConfig.simulationParams.fdcAlphaDecay).on("tick",this.ticked).on("end",()=>{this.isChartFirstRenderAnimationFinished||(this.zoomFit(),this.isChartFirstRenderAnimationFinished=!0)})},updateChart(e,t){e&&(this.root=Bp(this.parsedInfo)),t&&(this.allNodesData=this.flatten(this.root),this.allLinks=this.root.links()),this.link=this.rootNode.selectAll(".link").data(this.allLinks,e=>e.target.id),this.link.exit().remove();const n=this.link.enter().append("line").attr("class","link").style("opacity","0.2").style("stroke-width",4);this.link=n.merge(this.link),this.node=this.rootNode.selectAll(".node").data(this.allNodesData,e=>e.id).attr("class",this.mainNodeClass),this.node.exit().remove();const r=this.node.enter().append("g").attr("class",this.mainNodeClass).style("opacity",1).on("click",(e,t)=>{this.setDetailsInfo(t.data,!0)}).call(cd().on("start",this.dragStarted).on("drag",this.dragging).on("end",this.dragEnded));r.append("circle").attr("r",this.setNodeRadius),r.append("circle").attr("r",e=>this.setNodeRadius(e)-5).attr("class","node-hover-layer"),r.append("svg").html(e=>{const t=this.fdcConfig.fetchNodeIcon(e);return Iw(t)}).attr("x",this.nodeImagePosition).attr("y",this.nodeImagePosition).attr("height",this.nodeImageSize).attr("width",this.nodeImageSize),this.node=r.merge(this.node),this.simulation.nodes(this.allNodesData),this.simulation.force("link",Ud().id(e=>e.id).distance(100).links(this.allLinks))},mainNodeClass(e){var t,n;const r=null!==(t=e.data)&&void 0!==t&&t.state?e.data.state.toLowerCase():"unkown_status",i=["node"];Lw["a"][r]&&Lw["a"][r].color?i.push("node-"+Lw["a"][r].color):i.push("node-default-fill"),null!==(n=e.data)&&void 0!==n&&n.active&&i.push("active");const a=this.fdcConfig.extendNodeClass(e).concat(i);return a.join(" ")},setNodeRadius(e){const{radius:t}=this.fdcConfig.nodeDimensions(e);return t},nodeImageSize(e){const{size:t}=this.fdcConfig.nodeDimensions(e);return t},nodeImagePosition(e){const{position:t}=this.fdcConfig.nodeDimensions(e);return t},setDetailsInfo(e,t){this.moreInfo=Object.assign([],this.fdcConfig.infoDetails(e)),t&&(this.allNodesData.forEach((t,n)=>{t.data.matchingId===e.matchingId?this.allNodesData[n].data.active=!0:this.allNodesData[n].data.active=!1}),this.updateChart(!1,!1))},zoomFit(){const e=Yu(".root-node"),t=30,n=e.node().getBoundingClientRect(),r=e.node().getBBox(),i=e.node().parentElement,a=i.clientWidth,o=i.clientHeight,s=n.width,l=n.height,c=r.x+s/2,u=r.y+l/2;if(0===s||0===l)return;const d=1/Math.max(s/(a-t),l/(o-t)),p=[a/2-d*c,o/2-d*u],f=ww.translate(p[0],p[1]).scale(d);this.svg.call(this.zoom.transform,f)},ticked(){this.link.attr("x1",e=>e.source.x).attr("y1",e=>e.source.y).attr("x2",e=>e.target.x).attr("y2",e=>e.target.y),this.node.attr("transform",e=>`translate(${e.x}, ${e.y})`)},dragStarted(e,t){e.active||this.simulation.alphaTarget(.3).restart(),t.fx=t.x,t.fy=t.y},dragging(e,t){t.fx=e.x,t.fy=e.y},dragEnded(e,t){e.active||this.simulation.alphaTarget(0),t.fx=void 0,t.fy=void 0},zoomed(e){this.rootNode.attr("transform",e.transform)},flatten(e){const t=[];let n=0;function r(e){e.children&&e.children.forEach(r),e.id?++n:e.id=++n,t.push(e)}return r(e),t}},mounted(){this.svg=Yu("#tree").append("svg").attr("viewBox",`0 0 ${this.fdcConfig.chartWidth} ${this.fdcConfig.chartHeight}`).attr("preserveAspectRatio","none"),this.dataWatcher=this.$watch(this.fdcConfig.watcherProp,(function(e){this.watcherFunction(e)}))},unmounted(){this.dataWatcher()}},Mw=Dw,Pw=(n("b535"),Object(L["a"])(Mw,Er,xr,!1,null,null,null)),$w=Pw.exports,jw=n("ea69");function Bw(e){var t,n;return(null===(t=e.query)||void 0===t?void 0:t.mode)===w["y"]?w["y"]:null!==(n=e.params)&&void 0!==n&&n.id?e.query.mode||w["C"]:w["t"]}async function Uw(e,t){let n;const r={headers:{accept:"application/yaml"}};return t.hasLink("view")&&(n=(await t.followLink("view",r)).data),t.cleanForDownload(n)}var Fw={components:{Loading:q["a"],DetailTop:wr,ForceDirectedTreeChart:$w,ResourceYaml:Bn["a"],Masthead:Wn,IconMessage:gn},mixins:[jn["a"]],props:{storeOverride:{type:String,default:null},resourceOverride:{type:String,default:null},parentRouteOverride:{type:String,default:null},flexContent:{type:Boolean,default:!1},componentTestid:{type:String,default:"resource-details"}},async fetch(){const e=this.$store,t=this.$route,n=t.params;let r=this.resourceOverride||n.resource;const i=this.storeOverride||e.getters["currentStore"](r),a=this.realMode;let{namespace:o,id:l}=n;const c=[w["r"],w["y"],w["A"]].includes(a)?w["t"]:a,u=e.getters["type-map/hasGraph"](r),d=!!u,p=e.getters["type-map/hasCustomDetail"](r,l),f=e.getters["type-map/hasCustomEdit"](r,l),h=e.getters[i+"/all"](s["x"]),m=t.query[w["a"]];let v,g=!1;v=c!==w["C"]||!p||m&&m!==w["u"]?c===w["C"]&&d&&m===w["x"]?w["x"]:!f||m&&m!==w["s"]?w["D"]:w["s"]:w["u"],this.as=v;const b=e.getters["type-map/optionsFor"](r);this.showMasthead=![w["t"],w["v"]].includes(c)||b.resourceEditMasthead;const y=b.canYaml;b.resource&&(r=b.resource);const _=e.getters[i+"/schemaFor"](r);let E,x,O,A;if(a===w["t"]||a===w["y"]){var S;o||(o=e.getters["defaultNamespace"]);const t={type:r};null!==_&&void 0!==_&&null!==(S=_.attributes)&&void 0!==S&&S.namespaced&&(t.metadata={namespace:o}),O=await e.dispatch(i+"/create",t),x=await e.dispatch(i+"/clone",{resource:O}),E=await e.dispatch(i+"/clone",{resource:O}),!0===E.forceYaml&&(v=w["D"],this.as=v),v===w["D"]&&(A=Object(Un["b"])(h,r,t))}else{var N;if(v===w["x"]){const e=await Object(jw["b"])({cluster:{inStoreType:"management",type:s["g"].CLUSTER},bundle:{inStoreType:"management",type:s["g"].BUNDLE},bundleDeployment:{inStoreType:"management",type:s["g"].BUNDLE_DEPLOYMENT}},this.$store);this.canViewChart=e.cluster&&e.bundle&&e.bundleDeployment}let t=l;null!==(N=_.attributes)&&void 0!==N&&N.namespaced&&o&&(t=`${o}/${t}`);try{O=await e.dispatch(i+"/find",{type:r,id:t,opt:{watch:!0}})}catch(k){404!==k.status&&403!==k.status||e.dispatch("loadingError",new Error(this.t("nav.failWhale.resourceIdNotFound",{resource:r,fqid:t},!0))),O={},g=t}E=a===w["C"]?O:await e.dispatch(i+"/clone",{resource:O}),x=await e.dispatch(i+"/clone",{resource:O}),v===w["D"]&&(A=await Uw(this.$store,O)),v===w["x"]&&(this.chartData=O),[w["r"],w["y"],w["A"]].includes(a)&&(E.cleanForNew(),A=E.cleanYaml(A,a))}E=await e.dispatch(i+"/cleanForDetail",E);const C={hasGraph:d,getGraphConfig:u,hasCustomDetail:p,hasCustomEdit:f,canViewYaml:y,resource:r,as:v,yaml:A,initialModel:x,liveModel:O,mode:c,value:E,notFound:g};for(const s in C)this[s]=C[s];this.mode===w["t"]&&this.value.applyDefaults(this,a)},data(){return{chartData:null,resourceSubtype:null,hasGraph:null,hasCustomDetail:null,hasCustomEdit:null,resource:null,asYaml:null,yaml:null,liveModel:null,initialModel:null,mode:null,as:null,value:null,model:null,notFound:null,canViewChart:!0}},computed:{realMode(){const e=Bw(this.$route);return e},isView(){return this.mode===w["C"]},isYaml(){return this.as===w["D"]},isDetail(){return this.as===w["u"]},isGraph(){return this.as===w["x"]},offerPreview(){return this.as===w["D"]&&[w["v"],w["r"],w["y"],w["A"]].includes(this.mode)},showComponent(){switch(this.as){case w["u"]:return this.detailComponent;case w["s"]:return this.editComponent}return null}},watch:{"$route.query"(e,t){const n=Object(en["e"])(e),r=Object(en["e"])(t);delete n[w["h"]],delete r[w["h"]],this.isView||(delete n[w["a"]],delete r[w["a"]]);const i=Object.keys(Object(en["g"])(n,r));(i.includes(w["e"])||i.includes(w["a"]))&&this.$fetch()},async"value.metadata.resourceVersion"(e,t){this.mode===w["C"]&&this.as===w["D"]&&e&&t&&e!==t&&(this.yaml=await Uw(this.$store,this.liveModel))}},created(){const e=this.$route.params.id,t=this.resourceOverride||this.$route.params.resource,n=this.$store.getters["type-map/optionsFor"](t),r=n.resourceDetail||n.resource||t,i=n.resourceEdit||n.resource||t;this.detailComponent=this.$store.getters["type-map/importDetail"](r,e),this.editComponent=this.$store.getters["type-map/importEdit"](i,e)},methods:{setSubtype(e){this.resourceSubtype=e},keyAction(e){const t=this.liveModel;null!==t&&void 0!==t&&t[e]&&t[e]()}}},Gw=Fw,Hw=(n("a68b"),Object(L["a"])(Gw,Pn,$n,!1,null,"34e1a2c7",null)),Vw=Hw.exports,qw={name:"KubewardenResourceCreate",components:{ResourceDetail:Vw}},zw=qw,Kw=Object(L["a"])(zw,Dn,Mn,!1,null,null,null),Yw=Kw.exports,Ww=function(){var e=this,t=e._self._c;return t("ResourceDetail")},Xw=[],Zw={name:"KubewardenResourcedId",components:{ResourceDetail:Vw}},Jw=Zw,Qw=Object(L["a"])(Jw,Ww,Xw,!1,null,null,null),eE=Qw.exports,tE=function(){var e=this,t=e._self._c;return t("ResourceDetail")},nE=[],rE={name:"KubewardenResourcedNamespaceId",components:{ResourceDetail:Vw}},iE=rE,aE=Object(L["a"])(iE,tE,nE,!1,null,null,null),oE=aE.exports;const sE=[{name:"c-cluster-"+l["k"],path:"/c/:cluster/"+l["k"],component:bt,meta:{product:l["k"],pkg:l["k"]}},{name:`c-cluster-${l["k"]}-${l["q"]}`,path:`/c/:cluster/${l["k"]}/${l["q"]}`,component:Dt,meta:{product:l["k"],pkg:l["k"]}},{name:`c-cluster-${l["k"]}-resource`,path:`/c/:cluster/${l["k"]}/:resource`,component:In,meta:{product:l["k"],pkg:l["k"]}},{name:`c-cluster-${l["k"]}-resource-create`,path:`/c/:cluster/${l["k"]}/:resource/create`,component:Yw,meta:{product:l["k"],pkg:l["k"]}},{name:`c-cluster-${l["k"]}-resource-id`,path:`/c/:cluster/${l["k"]}/:resource/:id`,component:eE,meta:{product:l["k"],pkg:l["k"]}},{name:`c-cluster-${l["k"]}-resource-namespace-id`,path:`/c/:cluster/${l["k"]}/:resource/:namespace/:id`,component:oE,meta:{product:l["k"],pkg:l["k"]}}];var lE=sE,cE={airGapped:e=>e.airGapped,hideBannerDefaults:e=>e.hideBannerDefaults,hideBannerArtifactHub:e=>e.hideBannerArtifactHub,hideBannerAirgapPolicy:e=>e.hideBannerAirgapPolicy,controllerApp:e=>e.controllerApp,kubewardenCrds:e=>e.kubewardenCrds,policyReports:e=>e.policyReports,clusterPolicyReports:e=>e.clusterPolicyReports,policyTraces:e=>e.policyTraces,refreshingCharts:e=>e.refreshingCharts},uE={updateAirGapped(e,t){e.airGapped=t},updateHideBannerDefaults(e,t){e.hideBannerDefaults=t},updateHideBannerArtifactHub(e,t){e.hideBannerArtifactHub=t},updateHideBannerAirgapPolicy(e,t){e.hideBannerAirgapPolicy=t},updateControllerApp(e,t){var n;(null===(n=e.controllerApp)||void 0===n?void 0:n.id)===(null===t||void 0===t?void 0:t.id)?(e.controllerApp.metadata=t.metadata,e.controllerApp.spec=t.spec,e.controllerApp.status=t.status):e.controllerApp=t},removeControllerApp(e,t){var n;const r=(null===(n=e.controllerApp)||void 0===n?void 0:n.id)===(null===t||void 0===t?void 0:t.id);r&&(e.controllerApp=null)},updateKubewardenCrds(e,t){const n=e.kubewardenCrds.find(e=>{var n,r;return(null===e||void 0===e||null===(n=e.metadata)||void 0===n?void 0:n.name)===(null===t||void 0===t||null===(r=t.metadata)||void 0===r?void 0:r.name)});n?(n.metadata=t.metadata,n.spec=t.spec,n.status=t.status):e.kubewardenCrds.push(t)},removeKubewardenCrds(e,t){const n=e.kubewardenCrds.findIndex(e=>{var n,r;return(null===e||void 0===e||null===(n=e.metadata)||void 0===n?void 0:n.name)===(null===t||void 0===t||null===(r=t.metadata)||void 0===r?void 0:r.name)});-1!==n&&e.kubewardenCrds.splice(n,1)},updateReports(e,{reportArrayKey:t,updatedReport:n}){const r=e[t],i=r.find(e=>e.id===n.id);i?(i.results=n.results,i.summary=n.summary):r.push(n)},removePolicyReportById(e,t){const n=e.policyReports.findIndex(e=>e.id===t);-1!==n&&e.policyReports.splice(n,1)},updatePolicyTraces(e,t){const{policyName:n,cluster:r,updatedTrace:i}=t,a=e.policyTraces.find(e=>e.policyName===n);let o=null===a||void 0===a?void 0:a.traces.find(e=>e.id===i.id);o?o=i:a?null===a||void 0===a||a.traces.push(i):e.policyTraces.push({policyName:n,cluster:r,traces:[i]})},removeTraceById(e,t,n){const r=e.policyTraces.find(e=>e.policyName===t.policyName),i=null===r||void 0===r?void 0:r.traces.findIndex(e=>e.id===n.id);i&&-1!==i&&(null===r||void 0===r||r.traces.splice(i,1))},updateRefreshingCharts(e,t){e.refreshingCharts=t}},dE={updateAirGapped({commit:e},t){e("updateAirGapped",t)},updateHideBannerDefaults({commit:e},t){e("updateHideBannerDefaults",t)},updateHideBannerArtifactHub({commit:e},t){e("updateHideBannerArtifactHub",t)},updateHideBannerAirgapPolicy({commit:e},t){e("updateHideBannerAirgapPolicy",t)},updatePolicyReports({commit:e},t){e("updateReports",{reportArrayKey:"policyReports",updatedReport:t})},updateClusterPolicyReports({commit:e},t){e("updateReports",{reportArrayKey:"clusterPolicyReports",updatedReport:t})},updatePolicyTraces({commit:e},t){e("updatePolicyTraces",t)},removePolicyTraceById({commit:e},t,n){e("removePolicyTraceById",t,n)},updateRefreshingCharts({commit:e},t){e("updateRefreshingCharts",t)},updateControllerApp({commit:e},t){e("updateControllerApp",t)},removeControllerApp({commit:e},t){e("removeControllerApp",t)},updateKubewardenCrds({commit:e},t){e("updateKubewardenCrds",t)},removeKubewardenCrds({commit:e},t){e("removeKubewardenCrds",t)}};const pE=e=>({state:()=>({airGapped:e.airGapped,fleetRepos:e.fleetRepos,hideBannerDefaults:e.hideBannerDefaults,hideBannerArtifactHub:e.hideBannerArtifactHub,hideBannerAirgapPolicy:e.hideBannerAirgapPolicy,controllerApp:e.controllerApp,kubewardenCrds:e.kubewardenCrds,policyReports:e.policyReports,clusterPolicyReports:e.clusterPolicyReports,policyTraces:e.policyTraces,refreshingCharts:e.refreshingCharts}),getters:{...cE},mutations:{...uE},actions:{...dE}}),fE={namespace:l["k"]};var hE={specifics:pE({airGapped:!1,fleetRepos:[],hideBannerDefaults:!1,hideBannerArtifactHub:!1,hideBannerAirgapPolicy:!1,controllerApp:null,kubewardenCrds:[],policyReports:[],clusterPolicyReports:[],policyTraces:[],refreshingCharts:!1}),config:fE},mE=n("8bbf"),vE=n.n(mE),gE=n("8276"),bE=n("3e09"),yE=n.n(bE);const _E=["code","li","a","p","b","br","ul","pre","span","div","i","em","strong","h1","h2","h3","h4","h5","h6","table","thead","tr","th","tbody","td","blockquote"];yE.a.addHook("uponSanitizeAttribute",(e,t)=>{"A"===e.tagName&&"target"===t.attrName&&"_blank"===t.attrValue&&(t.forceKeepAttr=!0)}),yE.a.addHook("afterSanitizeAttributes",e=>{if("A"===e.tagName&&"_blank"===(null===e||void 0===e?void 0:e.target)){var t;const n=["noopener","noreferrer","nofollow"],r=null!==(t=e.rel)&&void 0!==t&&t.length?e.rel.split(" "):[],i=Object(he["l"])([...n,...r]);e.setAttribute("rel",i.join(" "))}});const wE=(e,t={ALLOWED_TAGS:_E})=>yE.a.sanitize(e,t);function EE(e){const t=typeof e;return"string"===t?wE(e):e&&"object"===t&&"string"===typeof e.content?{...e,content:wE(e.content)}:e}function xE(e,{value:t,oldValue:n,modifiers:r}){const i=EE(t);gE["a"].bind(e,{value:i,oldValue:n,modifiers:r})}const OE={...gE["a"],bind:xE,update:xE};vE.a.directive("clean-tooltip",OE);const AE={inserted(e,t){e.innerHTML=wE(t.value)},componentUpdated(e,t){e.innerHTML=wE(t.value)},unbind(e){e.innerHTML=""}};vE.a.directive("clean-html",AE);const SE=async e=>{await Object(z["g"])(e,!1),await Object(z["g"])(e,!0)};var NE=function(e,t){a(e),e.metadata=n("9224"),e.addProduct(n("6102")),e.addDashboardStore(hE.config.namespace,hE.specifics,hE.config),e.addRoutes(lE),e.addNavHooks(SE),e.addPanel(o["d"].RESOURCE_LIST,{path:[{urlPath:"explorer/projectsnamespaces",endsWith:!0}]},{component:()=>n.e(0).then(n.bind(null,"6ba7"))}),e.addPanel(o["d"].RESOURCE_LIST,{resource:[s["r"],s["H"].CRON_JOB,s["H"].DAEMON_SET,s["H"].DEPLOYMENT,s["H"].JOB,s["H"].STATEFUL_SET,s["j"],s["z"]]},{component:()=>n.e(0).then(n.bind(null,"6ba7"))}),e.addTableColumn(o["f"].RESOURCE,{path:[{urlPath:"explorer/projectsnamespaces",endsWith:!0}]},{name:"policy-reports",labelKey:"kubewarden.policyReporter.headers.policyReports.label",getValue:e=>e,weight:3,formatter:"PolicyReportSummary"}),e.addTableColumn(o["f"].RESOURCE,{resource:[s["r"],s["H"].CRON_JOB,s["H"].DAEMON_SET,s["H"].DEPLOYMENT,s["H"].JOB,s["H"].STATEFUL_SET,s["j"],s["z"]]},{name:"policy-reports",labelKey:"kubewarden.policyReporter.headers.label",getValue:e=>e,weight:3,formatter:"PolicyReportSummary"}),e.addTab(o["e"].RESOURCE_DETAIL,{resource:[s["n"],s["r"],s["H"].CRON_JOB,s["H"].DAEMON_SET,s["H"].DEPLOYMENT,s["H"].JOB,s["H"].STATEFUL_SET,s["j"],s["z"]]},{name:"policy-report-tab",labelKey:"kubewarden.policyReporter.headers.label",weight:-5,showHeader:!0,component:()=>n.e(13).then(n.bind(null,"8564"))})};t["default"]=NE},"1c46":function(e,t,n){var r=n("3bf1");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var i=n("0ed3").default;i("141ab997",r,!0,{sourceMap:!1,shadowMode:!1})},"1cbd":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,".percentage-bar[data-v-620caa7e]{display:flex;flex-direction:row}.percentage-bar .percentage-value[data-v-620caa7e]{word-break:keep-all}",""]),e.exports=t},"1d01":function(e,t,n){var r=n("7ed4");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var i=n("0ed3").default;i("d968b8fe",r,!0,{sourceMap:!1,shadowMode:!1})},"1d19":function(e,t,n){"use strict";n.d(t,"c",(function(){return s})),n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return m}));var r=n("e24b"),i=n("2cb5");const a={"[object Boolean]":"boolean","[object Number]":"number","[object String]":"string","[object Function]":"function","[object Array]":"array","[object Date]":"date","[object RegExp]":"regexp","[object Object]":"object","[object FileList]":"filelist"},{toString:o}=Object.prototype;function s(e){if(null===e)return"null";if(void 0===e)return"undefined";let t=a[o.call(e)]||"object";return"object"===t&&(e instanceof Error?t="error":e instanceof Date&&(t="date")),t}function l(e,t){const n=e-t;return(n>0)-(n<0)}const c={undefined:0,null:1,boolean:2,number:3,string:4,array:5,object:6,instance:7,function:8,class:9,date:10};function u(e,t){const n=s(e),r=s(t),i=l(c[n],c[r]);if(i)return i;switch(n){case"boolean":case"number":return l(e,t);case"string":return l(e.localeCompare(t),0);case"array":{const n=e.length,r=t.length,i=Math.min(n,r);for(let a=0;a{for(let a=0;ae.match(h)?Object(i["q"])(e,10,"0"):e).join("").trim()}},"1d5f":function(e){e.exports=JSON.parse('{"hasStylesheet":"true"}')},"1db5":function(e,t,n){"use strict";n("8dcd")},"1ec9":function(e,t,n){var r=n("fa8a"),i=n("44d9"),a=n("1386"),o=n("052a"),s=n("2fab"),l=n("e3f8");function c(e){var t=this.__data__=new r(e);this.size=t.size}c.prototype.clear=i,c.prototype["delete"]=a,c.prototype.get=o,c.prototype.has=s,c.prototype.set=l,e.exports=c},"1f4e":function(e,t){const n="[A-Za-z$_][0-9A-Za-z$_]*",r=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],i=["true","false","null","undefined","NaN","Infinity"],a=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],o=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],s=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],l=["arguments","this","super","console","window","document","localStorage","module","global"],c=[].concat(s,a,o);function u(e){const t=e.regex,u=(e,{after:t})=>{const n="",end:""},f=/<[A-Za-z0-9\\._:-]+\s*\/>/,h={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{const n=e[0].length+e.index,r=e.input[n];if("<"===r||","===r)return void t.ignoreMatch();let i;">"===r&&(u(e,{after:n})||t.ignoreMatch());const a=e.input.substring(n);(i=a.match(/^\s+extends\s+/))&&0===i.index&&t.ignoreMatch()}},m={$pattern:n,keyword:r,literal:i,built_in:c,"variable.language":l},v="[0-9](_?[0-9])*",g=`\\.(${v})`,b="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",y={className:"number",variants:[{begin:`(\\b(${b})((${g})|\\.)?|(${g}))[eE][+-]?(${v})\\b`},{begin:`\\b(${b})\\b((${g})\\b|\\.)?|(${g})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},_={className:"subst",begin:"\\$\\{",end:"\\}",keywords:m,contains:[]},w={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,_],subLanguage:"xml"}},E={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,_],subLanguage:"css"}},x={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,_]},O=e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:d+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),A={className:"comment",variants:[O,e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},S=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,w,E,x,y];_.contains=S.concat({begin:/\{/,end:/\}/,keywords:m,contains:["self"].concat(S)});const N=[].concat(A,_.contains),C=N.concat([{begin:/\(/,end:/\)/,keywords:m,contains:["self"].concat(N)}]),k={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:m,contains:C},T={variants:[{match:[/class/,/\s+/,d,/\s+/,/extends/,/\s+/,t.concat(d,"(",t.concat(/\./,d),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,d],scope:{1:"keyword",3:"title.class"}}]},R={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...a,...o]}},L={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},I={variants:[{match:[/function/,/\s+/,d,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[k],illegal:/%/},D={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function M(e){return t.concat("(?!",e.join("|"),")")}const P={match:t.concat(/\b/,M([...s,"super"]),d,t.lookahead(/\(/)),className:"title.function",relevance:0},$={begin:t.concat(/\./,t.lookahead(t.concat(d,/(?![0-9A-Za-z$_(])/))),end:d,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},j={match:[/get|set/,/\s+/,d,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},k]},B="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",U={match:[/const|var|let/,/\s+/,d,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(B)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[k]};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:m,exports:{PARAMS_CONTAINS:C,CLASS_REFERENCE:R},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),L,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,w,E,x,A,y,R,{className:"attr",begin:d+t.lookahead(":"),relevance:0},U,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[A,e.REGEXP_MODE,{className:"function",begin:B,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:m,contains:C}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:p.begin,end:p.end},{match:f},{begin:h.begin,"on:begin":h.isTrulyOpeningTag,end:h.end}],subLanguage:"xml",contains:[{begin:h.begin,end:h.end,skip:!0,contains:["self"]}]}]},I,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[k,e.inherit(e.TITLE_MODE,{begin:d,className:"title.function"})]},{match:/\.\.\./,relevance:0},$,{match:"\\$"+d,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[k]},P,D,T,j,{match:/\$[(.]/}]}}function d(e){const t=u(e),a=n,o=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],s={beginKeywords:"namespace",end:/\{/,excludeEnd:!0,contains:[t.exports.CLASS_REFERENCE]},d={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:o},contains:[t.exports.CLASS_REFERENCE]},p={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},f=["type","namespace","interface","public","private","protected","implements","declare","abstract","readonly","enum","override"],h={$pattern:n,keyword:r.concat(f),literal:i,built_in:c.concat(o),"variable.language":l},m={className:"meta",begin:"@"+a},v=(e,t,n)=>{const r=e.contains.findIndex(e=>e.label===t);if(-1===r)throw new Error("can not find mode to replace");e.contains.splice(r,1,n)};Object.assign(t.keywords,h),t.exports.PARAMS_CONTAINS.push(m),t.contains=t.contains.concat([m,s,d]),v(t,"shebang",e.SHEBANG()),v(t,"use_strict",p);const g=t.contains.find(e=>"func.def"===e.label);return g.relevance=0,Object.assign(t,{name:"TypeScript",aliases:["ts","tsx"]}),t}e.exports=d},"1fcb":function(e,t,n){var r=n("3336"),i=n("c294"),a=i((function(e,t,n){r(e,t,n)}));e.exports=a},"1fce":function(e,t){function n(e,t){var n=-1,r=null==e?0:e.length,i=Array(r);while(++n-1)||n.indexOf(",")>-1||n.indexOf("/")>-1||r.StringUtilities.containsAny(i,e.specialCharacters))if(!t&&i.indexOf(",")>-1&&-1==i.indexOf("-")&&-1==i.indexOf("/")&&!r.StringUtilities.containsAny(n,e.specialCharacters)){var o=i.split(",");a+=this.i18n.at();for(var s=0;s0&&c.length>0&&(a+=", "),a+=c,a.length>0&&u.length>0&&(a+=", "),a+=u}else{var d=n.split("-");a+=r.StringUtilities.format(this.i18n.everyMinuteBetweenX0AndX1(),this.formatTime(i,d[0],""),this.formatTime(i,d[1],""))}else a+=this.i18n.atSpace()+this.formatTime(i,n,t);return a},e.prototype.getSecondsDescription=function(){var e=this,t=this.getSegmentDescription(this.expressionParts[0],this.i18n.everySecond(),(function(e){return e}),(function(t){return r.StringUtilities.format(e.i18n.everyX0Seconds(),t)}),(function(t){return e.i18n.secondsX0ThroughX1PastTheMinute()}),(function(t){return"0"==t?"":parseInt(t)<20?e.i18n.atX0SecondsPastTheMinute():e.i18n.atX0SecondsPastTheMinuteGt20()||e.i18n.atX0SecondsPastTheMinute()}));return t},e.prototype.getMinutesDescription=function(){var e=this,t=this.expressionParts[0],n=this.expressionParts[2],i=this.getSegmentDescription(this.expressionParts[1],this.i18n.everyMinute(),(function(e){return e}),(function(t){return r.StringUtilities.format(e.i18n.everyX0Minutes(),t)}),(function(t){return e.i18n.minutesX0ThroughX1PastTheHour()}),(function(r){try{return"0"==r&&-1==n.indexOf("/")&&""==t?e.i18n.everyHour():parseInt(r)<20?e.i18n.atX0MinutesPastTheHour():e.i18n.atX0MinutesPastTheHourGt20()||e.i18n.atX0MinutesPastTheHour()}catch(i){return e.i18n.atX0MinutesPastTheHour()}}));return i},e.prototype.getHoursDescription=function(){var e=this,t=this.expressionParts[2],n=this.getSegmentDescription(t,this.i18n.everyHour(),(function(t){return e.formatTime(t,"0","")}),(function(t){return r.StringUtilities.format(e.i18n.everyX0Hours(),t)}),(function(t){return e.i18n.betweenX0AndX1()}),(function(t){return e.i18n.atX0()}));return n},e.prototype.getDayOfWeekDescription=function(){var e=this,t=this.i18n.daysOfTheWeek(),n=null;return n="*"==this.expressionParts[5]?"":this.getSegmentDescription(this.expressionParts[5],this.i18n.commaEveryDay(),(function(e){var n=e;return e.indexOf("#")>-1?n=e.substr(0,e.indexOf("#")):e.indexOf("L")>-1&&(n=n.replace("L","")),t[parseInt(n)]}),(function(t){return 1==parseInt(t)?"":r.StringUtilities.format(e.i18n.commaEveryX0DaysOfTheWeek(),t)}),(function(t){return e.i18n.commaX0ThroughX1()}),(function(t){var n=null;if(t.indexOf("#")>-1){var r=t.substring(t.indexOf("#")+1),i=null;switch(r){case"1":i=e.i18n.first();break;case"2":i=e.i18n.second();break;case"3":i=e.i18n.third();break;case"4":i=e.i18n.fourth();break;case"5":i=e.i18n.fifth();break}n=e.i18n.commaOnThe()+i+e.i18n.spaceX0OfTheMonth()}else if(t.indexOf("L")>-1)n=e.i18n.commaOnTheLastX0OfTheMonth();else{var a="*"!=e.expressionParts[3];n=a?e.i18n.commaAndOnX0():e.i18n.commaOnlyOnX0()}return n})),n},e.prototype.getMonthDescription=function(){var e=this,t=this.i18n.monthsOfTheYear(),n=this.getSegmentDescription(this.expressionParts[4],"",(function(e){return t[parseInt(e)-1]}),(function(t){return 1==parseInt(t)?"":r.StringUtilities.format(e.i18n.commaEveryX0Months(),t)}),(function(t){return e.i18n.commaMonthX0ThroughMonthX1()||e.i18n.commaX0ThroughX1()}),(function(t){return e.i18n.commaOnlyInMonthX0?e.i18n.commaOnlyInMonthX0():e.i18n.commaOnlyInX0()}));return n},e.prototype.getDayOfMonthDescription=function(){var e=this,t=null,n=this.expressionParts[3];switch(n){case"L":t=this.i18n.commaOnTheLastDayOfTheMonth();break;case"WL":case"LW":t=this.i18n.commaOnTheLastWeekdayOfTheMonth();break;default:var i=n.match(/(\d{1,2}W)|(W\d{1,2})/);if(i){var a=parseInt(i[0].replace("W","")),o=1==a?this.i18n.firstWeekday():r.StringUtilities.format(this.i18n.weekdayNearestDayX0(),a.toString());t=r.StringUtilities.format(this.i18n.commaOnTheX0OfTheMonth(),o);break}var s=n.match(/L-(\d{1,2})/);if(s){var l=s[1];t=r.StringUtilities.format(this.i18n.commaDaysBeforeTheLastDayOfTheMonth(),l);break}if("*"==n&&"*"!=this.expressionParts[5])return"";t=this.getSegmentDescription(n,this.i18n.commaEveryDay(),(function(t){return"L"==t?e.i18n.lastDay():e.i18n.dayX0?r.StringUtilities.format(e.i18n.dayX0(),t):t}),(function(t){return"1"==t?e.i18n.commaEveryDay():e.i18n.commaEveryX0Days()}),(function(t){return e.i18n.commaBetweenDayX0AndX1OfTheMonth()}),(function(t){return e.i18n.commaOnDayX0OfTheMonth()}));break}return t},e.prototype.getYearDescription=function(){var e=this,t=this.getSegmentDescription(this.expressionParts[6],"",(function(e){return/^\d+$/.test(e)?new Date(parseInt(e),1).getFullYear().toString():e}),(function(t){return r.StringUtilities.format(e.i18n.commaEveryX0Years(),t)}),(function(t){return e.i18n.commaYearX0ThroughYearX1()||e.i18n.commaX0ThroughX1()}),(function(t){return e.i18n.commaOnlyInYearX0?e.i18n.commaOnlyInYearX0():e.i18n.commaOnlyInX0()}));return t},e.prototype.getSegmentDescription=function(e,t,n,i,a,o){var s=this,l=null;if(e)if("*"===e)l=t;else if(r.StringUtilities.containsAny(e,["/","-",","]))if(e.indexOf("/")>-1){var c=e.split("/");if(l=r.StringUtilities.format(i(c[1]),c[1]),c[0].indexOf("-")>-1){var u=this.generateBetweenSegmentDescription(c[0],a,n);0!=u.indexOf(", ")&&(l+=", "),l+=u}else if(!r.StringUtilities.containsAny(c[0],["*",","])){var d=r.StringUtilities.format(o(c[0]),n(c[0]));d=d.replace(", ",""),l+=r.StringUtilities.format(this.i18n.commaStartingX0(),d)}}else if(e.indexOf(",")>-1){c=e.split(",");for(var p="",f=0;f0&&c.length>2&&(p+=",",f0&&c.length>1&&(f==c.length-1||2==c.length)&&(p+=this.i18n.spaceAnd()+" "),c[f].indexOf("-")>-1){u=this.generateBetweenSegmentDescription(c[f],(function(e){return s.i18n.commaX0ThroughX1()}),n);u=u.replace(", ",""),p+=u}else p+=n(c[f]);l=r.StringUtilities.format(o(e),p)}else e.indexOf("-")>-1&&(l=this.generateBetweenSegmentDescription(e,a,n));else l=r.StringUtilities.format(o(e),n(e));else l="";return l},e.prototype.generateBetweenSegmentDescription=function(e,t,n){var i="",a=e.split("-"),o=n(a[0]),s=n(a[1]);s=s.replace(":00",":59");var l=t(e);return i+=r.StringUtilities.format(l,o,s),i},e.prototype.formatTime=function(e,t,n){var r=parseInt(e),i="",a=!1;this.options.use24HourTimeFormat||(a=this.i18n.setPeriodBeforeTime&&this.i18n.setPeriodBeforeTime(),i=a?this.getPeriod(r)+" ":" "+this.getPeriod(r),r>12&&(r-=12),0===r&&(r=12));var o=t,s="";return n&&(s=":"+("00"+n).substring(n.length)),""+(a?i:"")+("00"+r.toString()).substring(r.toString().length)+":"+("00"+o.toString()).substring(o.toString().length)+s+(a?"":i)},e.prototype.transformVerbosity=function(e,t){return t||(e=e.replace(new RegExp(", "+this.i18n.everyMinute(),"g"),""),e=e.replace(new RegExp(", "+this.i18n.everyHour(),"g"),""),e=e.replace(new RegExp(this.i18n.commaEveryDay(),"g"),""),e=e.replace(/\, ?$/,"")),e},e.prototype.getPeriod=function(e){return e>=12?this.i18n.pm&&this.i18n.pm()||"PM":this.i18n.am&&this.i18n.am()||"AM"},e.locales={},e}();t.ExpressionDescriptor=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e.format=function(e){for(var t=[],n=1;n-1}))},e}();t.StringUtilities=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){void 0===t&&(t=!0),this.expression=e,this.dayOfWeekStartIndexZero=t}return e.prototype.parse=function(){var e=this.extractParts(this.expression);return this.normalize(e),this.validate(e),e},e.prototype.extractParts=function(e){if(!this.expression)throw new Error("Expression is empty");var t=e.trim().split(/[ ]+/);if(t.length<5)throw new Error("Expression has only "+t.length+" part"+(1==t.length?"":"s")+". At least 5 parts are required.");if(5==t.length)t.unshift(""),t.push("");else if(6==t.length)/\d{4}$/.test(t[5])?t.unshift(""):t.push("");else if(t.length>7)throw new Error("Expression has "+t.length+" parts; too many!");return t},e.prototype.normalize=function(e){var t=this;if(e[3]=e[3].replace("?","*"),e[5]=e[5].replace("?","*"),e[2]=e[2].replace("?","*"),0==e[0].indexOf("0/")&&(e[0]=e[0].replace("0/","*/")),0==e[1].indexOf("0/")&&(e[1]=e[1].replace("0/","*/")),0==e[2].indexOf("0/")&&(e[2]=e[2].replace("0/","*/")),0==e[3].indexOf("1/")&&(e[3]=e[3].replace("1/","*/")),0==e[4].indexOf("1/")&&(e[4]=e[4].replace("1/","*/")),0==e[5].indexOf("1/")&&(e[5]=e[5].replace("1/","*/")),0==e[6].indexOf("1/")&&(e[6]=e[6].replace("1/","*/")),e[5]=e[5].replace(/(^\d)|([^#/\s]\d)/g,(function(e){var n=e.replace(/\D/,""),r=n;return t.dayOfWeekStartIndexZero?"7"==n&&(r="0"):r=(parseInt(n)-1).toString(),e.replace(n,r)})),"L"==e[5]&&(e[5]="6"),"?"==e[3]&&(e[3]="*"),e[3].indexOf("W")>-1&&(e[3].indexOf(",")>-1||e[3].indexOf("-")>-1))throw new Error("The 'W' character can be specified only when the day-of-month is a single day, not a range or list of days.");var n={SUN:0,MON:1,TUE:2,WED:3,THU:4,FRI:5,SAT:6};for(var r in n)e[5]=e[5].replace(new RegExp(r,"gi"),n[r].toString());var i={JAN:1,FEB:2,MAR:3,APR:4,MAY:5,JUN:6,JUL:7,AUG:8,SEP:9,OCT:10,NOV:11,DEC:12};for(var a in i)e[4]=e[4].replace(new RegExp(a,"gi"),i[a].toString());"0"==e[0]&&(e[0]=""),/\*|\-|\,|\//.test(e[2])||!/\*|\//.test(e[1])&&!/\*|\//.test(e[0])||(e[2]+="-"+e[2]);for(var o=0;o-1&&!/^\*|\-|\,/.test(e[o])){var s=null;switch(o){case 4:s="12";break;case 5:s="6";break;case 6:s="9999";break;default:s=null;break}if(null!=s){var l=e[o].split("/");e[o]=l[0]+"-"+s+"/"+l[1]}}},e.prototype.validate=function(e){this.assertNoInvalidCharacters("DOW",e[5]),this.assertNoInvalidCharacters("DOM",e[3])},e.prototype.assertNoInvalidCharacters=function(e,t){var n=t.match(/[A-KM-VX-Z]+/gi);if(n&&n.length)throw new Error(e+" part contains invalid values: '"+n.toString()+"'")},e}();t.CronParser=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},e.prototype.atX0MinutesPastTheHourGt20=function(){return null},e.prototype.commaMonthX0ThroughMonthX1=function(){return null},e.prototype.commaYearX0ThroughYearX1=function(){return null},e.prototype.use24HourTimeFormatByDefault=function(){return!1},e.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"An error occured when generating the expression description. Check the cron expression syntax."},e.prototype.everyMinute=function(){return"every minute"},e.prototype.everyHour=function(){return"every hour"},e.prototype.atSpace=function(){return"At "},e.prototype.everyMinuteBetweenX0AndX1=function(){return"Every minute between %s and %s"},e.prototype.at=function(){return"At"},e.prototype.spaceAnd=function(){return" and"},e.prototype.everySecond=function(){return"every second"},e.prototype.everyX0Seconds=function(){return"every %s seconds"},e.prototype.secondsX0ThroughX1PastTheMinute=function(){return"seconds %s through %s past the minute"},e.prototype.atX0SecondsPastTheMinute=function(){return"at %s seconds past the minute"},e.prototype.everyX0Minutes=function(){return"every %s minutes"},e.prototype.minutesX0ThroughX1PastTheHour=function(){return"minutes %s through %s past the hour"},e.prototype.atX0MinutesPastTheHour=function(){return"at %s minutes past the hour"},e.prototype.everyX0Hours=function(){return"every %s hours"},e.prototype.betweenX0AndX1=function(){return"between %s and %s"},e.prototype.atX0=function(){return"at %s"},e.prototype.commaEveryDay=function(){return", every day"},e.prototype.commaEveryX0DaysOfTheWeek=function(){return", every %s days of the week"},e.prototype.commaX0ThroughX1=function(){return", %s through %s"},e.prototype.first=function(){return"first"},e.prototype.second=function(){return"second"},e.prototype.third=function(){return"third"},e.prototype.fourth=function(){return"fourth"},e.prototype.fifth=function(){return"fifth"},e.prototype.commaOnThe=function(){return", on the "},e.prototype.spaceX0OfTheMonth=function(){return" %s of the month"},e.prototype.lastDay=function(){return"the last day"},e.prototype.commaOnTheLastX0OfTheMonth=function(){return", on the last %s of the month"},e.prototype.commaOnlyOnX0=function(){return", only on %s"},e.prototype.commaAndOnX0=function(){return", and on %s"},e.prototype.commaEveryX0Months=function(){return", every %s months"},e.prototype.commaOnlyInX0=function(){return", only in %s"},e.prototype.commaOnTheLastDayOfTheMonth=function(){return", on the last day of the month"},e.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", on the last weekday of the month"},e.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s days before the last day of the month"},e.prototype.firstWeekday=function(){return"first weekday"},e.prototype.weekdayNearestDayX0=function(){return"weekday nearest day %s"},e.prototype.commaOnTheX0OfTheMonth=function(){return", on the %s of the month"},e.prototype.commaEveryX0Days=function(){return", every %s days"},e.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", between day %s and %s of the month"},e.prototype.commaOnDayX0OfTheMonth=function(){return", on day %s of the month"},e.prototype.commaEveryHour=function(){return", every hour"},e.prototype.commaEveryX0Years=function(){return", every %s years"},e.prototype.commaStartingX0=function(){return", starting %s"},e.prototype.daysOfTheWeek=function(){return["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},e.prototype.monthsOfTheYear=function(){return["January","February","March","April","May","June","July","August","September","October","November","December"]},e}();t.en=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),i=n(5);r.ExpressionDescriptor.initialize(new i.enLocaleLoader),t.default=r.ExpressionDescriptor;var a=r.ExpressionDescriptor.toString;t.toString=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3),i=function(){function e(){}return e.prototype.load=function(e){e["en"]=new r.en},e}();t.enLocaleLoader=i}])}))},"212d":function(e,t,n){var r=n("bf10"),i=n("201b"),a=r(i,"Promise");e.exports=a},"21a1":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,".operator .vs__dropdown-option[data-v-3512fedb]{padding:3px 6px 3px 6px!important}.remove-expression[data-v-3512fedb]{padding:8px;position:absolute;margin-bottom:10px;right:0;top:0;z-index:2}.remove-expression i[data-v-3512fedb]{font-size:2em}.remove-container[data-v-3512fedb]{display:flex;justify-content:center}.match-expression-header[data-v-3512fedb],.match-expression-row[data-v-3512fedb]{display:grid;grid-template-columns:1fr 1fr 1fr;margin:5px 0;grid-gap:1.75%}.match-expression-header>LABEL[data-v-3512fedb],.match-expression-row>LABEL[data-v-3512fedb]{margin:0}.match-expression-header[data-v-3512fedb]:not(.view),.match-expression-row[data-v-3512fedb]:not(.view){grid-template-columns:repeat(3,1fr) 50px}.match-expression-row>div>input[data-v-3512fedb]{min-height:40px!important}.match-expression-header-matching[data-v-3512fedb],.match-expression-row-matching[data-v-3512fedb]{grid-template-columns:1fr 1fr 1fr 1fr}.match-expression-header-matching[data-v-3512fedb]:not(.view),.match-expression-row-matching[data-v-3512fedb]:not(.view){grid-template-columns:1fr 1fr 1fr 1fr 100px}",""]),e.exports=t},"21a3":function(e,t){const n="2.0.0",r=256,i=Number.MAX_SAFE_INTEGER||9007199254740991,a=16,o=r-6,s=["major","premajor","minor","preminor","patch","prepatch","prerelease"];e.exports={MAX_LENGTH:r,MAX_SAFE_COMPONENT_LENGTH:a,MAX_SAFE_BUILD_LENGTH:o,MAX_SAFE_INTEGER:i,RELEASE_TYPES:s,SEMVER_SPEC_VERSION:n,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}},"220e":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,'.chart-container{display:flex;background-color:var(--body-bg);position:relative;border:1px solid var(--border);border-radius:var(--border-radius);min-height:100px}.chart-container .loading-container{content:"";position:absolute;top:0;left:0;width:100%;height:100%;border-radius:var(--border-radius);background-color:var(--body-bg);z-index:2;display:flex;align-items:center;justify-content:center;flex-direction:column}.chart-container .loading-container i{font-size:24px}.chart-container #tree{width:70%;height:-moz-fit-content;height:fit-content}.chart-container #tree svg{margin-top:3px}.chart-container #tree .link{stroke:var(--darker)}.chart-container #tree .node{cursor:pointer}.chart-container #tree .node.active .node-hover-layer{display:block}.chart-container #tree .node.repo.active>circle{transform:scale(1.2)}.chart-container #tree .node.bundle.active>circle{transform:scale(1.35)}.chart-container #tree .node.bundle-deployment.active>circle{transform:scale(1.6)}.chart-container #tree .node.node-default-fill>circle,.chart-container #tree .node.repo>circle{fill:var(--muted)}.chart-container #tree .node:not(.repo).node-success>circle{fill:var(--success)}.chart-container #tree .node:not(.repo).node-info>circle{fill:var(--info)}.chart-container #tree .node:not(.repo).node-warning>circle{fill:var(--warning)}.chart-container #tree .node:not(.repo).node-error>circle{fill:var(--error)}.chart-container #tree .node .node-hover-layer{stroke:var(--body-bg);stroke-width:2;display:none}.chart-container .more-info-container{width:30%;position:relative;border-left:1px solid var(--border);background-color:var(--body-bg);overflow:hidden}.chart-container .more-info-container,.chart-container .more-info-container .more-info{border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.chart-container .more-info-container .more-info{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;padding:20px;overflow-y:auto}.chart-container .more-info-container .more-info table td{vertical-align:top;padding-bottom:10px}.chart-container .more-info-container .more-info table td.align-middle{vertical-align:middle}.chart-container .more-info-container .more-info table .more-info-item-label{color:var(--darker);margin-right:8px}.chart-container .more-info-container .more-info table .single-error{color:var(--error)}.chart-container .more-info-container .more-info table p{line-height:1.5em}',""]),e.exports=t},"22a0":function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"mt-20 mb-20 sources__container"},[t("div",[t("LabeledInput",{ref:"authorityName",staticClass:"mb-20 mt-20",attrs:{"data-testid":"ps-config-authority-name-input",type:"multiline",label:e.t("kubewarden.policyServerConfig.sourceAuthorities.endpoint"),mode:e.mode,disabled:e.isView,placeholder:e.t("kubewarden.policyServerConfig.sourceAuthorities.placeholder"),required:""},model:{value:e.chartValues.registryName,callback:function(t){e.$set(e.chartValues,"registryName",t)},expression:"chartValues.registryName"}}),[e._l(e.chartValues.certs,(function(n,r){return[t("div",{key:r,staticClass:"sources__container__cert"},[t("LabeledInput",{ref:"authorityCert",refInFor:!0,staticClass:"p-10 col span-6",attrs:{"data-testid":"ps-config-authority-cert-input-"+r,type:"multiline",label:e.t("kubewarden.policyServerConfig.sourceAuthorities.certificate.label"),mode:e.mode,disabled:e.isView,required:"",placeholder:e.t("secret.certificate.certificatePlaceholder")},model:{value:e.chartValues.certs[r],callback:function(t){e.$set(e.chartValues.certs,r,t)},expression:"chartValues.certs[cIndex]"}}),t("div",{staticClass:"remove"},[t("button",{staticClass:"btn role-link remove",attrs:{"data-testid":"ps-config-authority-cert-remove-button-"+r,type:"button",disabled:e.isView},on:{click:function(t){return e.removeCert(r)}}},[e._v(" "+e._s(e.t("kubewarden.policyServerConfig.sourceAuthorities.certificate.remove"))+" ")])])],1)]})),t("button",{staticClass:"btn role-tertiary add",attrs:{"data-testid":"ps-config-authority-cert-add-button",type:"button",disabled:e.isView},on:{click:function(t){return e.addCertificate()}}},[e._v(" "+e._s(e.t("kubewarden.policyServerConfig.sourceAuthorities.certificate.add"))+" ")]),t("FileSelector",{staticClass:"btn role-link",attrs:{"data-testid":"ps-config-authority-select-file",label:e.t("kubewarden.policyServerConfig.sourceAuthorities.certificate.file"),disabled:e.isView},on:{selected:function(t){return e.handleSelectFile(t)}}})]],2),e._t("remove"),t("hr",{staticClass:"mt-20 mb-20"})],2)},i=[],a=n("da25"),o=n("bddd"),s=n("8b2c"),l=n("8e93"),c={props:{mode:{type:String,default:a["v"]},value:{type:Object,default:()=>{}}},components:{FileSelector:s["b"],LabeledInput:l["a"]},data(){return{chartValues:this.value}},watch:{"chartValues.registryName":"update","chartValues.certs":{deep:!0,handler:"update"}},computed:{isView(){return this.mode===a["C"]}},methods:{addCertificate(){this.chartValues.certs.push("")},handleSelectFile(e){Object(s["a"])("crt"),this.chartValues.certs.push(e)},removeCert(e){Object(o["h"])(this.chartValues.certs,e)},update(){this.$emit("update",this.value)}}},u=c,d=(n("3b52"),n("d802")),p=Object(d["a"])(u,r,i,!1,null,"5fa70040",null);t["default"]=p.exports},2357:function(e,t,n){var r=n("e972"),i=/^\s+/;function a(e){return e?e.slice(0,r(e)+1).replace(i,""):e}e.exports=a},2359:function(e,t,n){"use strict";var r=n("9ce4"),i=n("907c"),a=n("8535");const o="ns",s="project",l=o+"://",c=s+"://";var u=n("6d47");const d=e=>{const t=e["management/byId"](i["l"].SETTING,a["b"].UI_PERFORMANCE);let n={};if(null!==t&&void 0!==t&&t.value)try{n=JSON.parse(t.value)}catch(r){console.warn("ui-performance setting contains invalid data")}return Object.assign(a["a"],n||{})};function p(e,t,n){return t=f(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function f(e){var t=h(e,"string");return"symbol"===typeof t?t:String(t)}function h(e,t){if("object"!==typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}class m{isApplicable(e){return Array.isArray(e.namespaced)}isEnabled(e){var t;const n=e["currentProduct"];if("cluster"!==(null===n||void 0===n?void 0:n.inStore))return!1;if(null!==n&&void 0!==n&&n.showWorkspaceSwitcher)return!1;const r=d(e);return!(null===(t=r.forceNsFilterV2)||void 0===t||!t.enabled)}checkAndCreateParam(e){return this.isApplicable(e)?this.createParam(e.namespaced):""}createParam(e){if(!e||!e.length)return"";const t=e.map(e=>e.replace(l,"").replace(c,"")).join(",");return`${m.param}=${t}`}}p(m,"param","projectsornamespaces");var v=new m,g={data(){return{forceUpdateLiveAndDelayed:0}},computed:{...Object(r["a"])(["currentProduct","currentCluster","namespaceFilters"]),namespaceFilterRequired(){return this.__namespaceRequired&&!this.__validFilter},namespaceFilter(){return this.__namespaceRequired?this.__validFilter:""},__validFilter(){const e=this.namespaceFilters.length&&this.namespaceFilters.every(e=>e.startsWith(o)||e.startsWith(s));return e?this.namespaceFilters:null},__namespaceRequired(){return!!v.isEnabled(this.$store.getters)&&this.__areResourcesNamespaced},__areResourcesNamespaced(){return"cluster"===this.currentProduct.inStore&&(this.loadResources||[]).every(e=>{var t;const n=this.$store.getters["cluster/schemaFor"](e);return null===n||void 0===n||null===(t=n.attributes)||void 0===t?void 0:t.namespaced})}},watch:{async namespaceFilter(e){e&&(this.$options.name!==u["a"]&&this.$fetch&&await this.$fetch(),this.forceUpdateLiveAndDelayed=(new Date).getTime())}}};const b=4;t["a"]={mixins:[g],data(){const e=this.$store.getters["management/byId"](i["l"].SETTING,a["b"].UI_PERFORMANCE);let t={};if(e&&e.value)try{t=JSON.parse(e.value)}catch(n){console.warn("ui-performance setting contains invalid data")}else t=a["a"];return{perfConfig:t,init:!1,multipleResources:[],loadResources:[this.resource],hasManualRefresh:!1,watch:!0,isTooManyItemsToAutoUpdate:!1,force:!1,incremental:!1,fetchedResourceType:[]}},beforeDestroy(){this.init&&(this.$store.dispatch("resource-fetch/clearData"),this.fetchedResourceType.forEach(e=>{this.$store.dispatch(e.currStore+"/incrementLoadCounter",e.type)}))},computed:{...Object(r["a"])({refreshFlag:"resource-fetch/refreshFlag"}),rows(){const e=this.fetchedResourceType.find(e=>e.type===this.resource);return e?this.$store.getters[e.currStore+"/all"](this.resource):[]},loading(){return!this.rows.length&&this.$fetchState.pending}},watch:{refreshFlag(e){this.init&&e&&this.$fetch()}},methods:{$initializeFetchData(e,t=[],n){if(!this.init){const r=n||this.$store.getters["currentStore"]();this.__gatherResourceFetchData(e,t,r),this.watch||(this.force=!0),this.isTooManyItemsToAutoUpdate&&(this.hasManualRefresh=!0)}},$fetchType(e,t=[],n){var r;const i=n||this.$store.getters["currentStore"]();this.$initializeFetchData(e,t,i),this.fetchedResourceType.find(t=>t.type===e)||this.fetchedResourceType.push({type:e,currStore:i});let a=0;if(this.incremental){const t=this.__getCountForResources([e],this.namespaceFilter,i);a=Math.ceil(t/b)}const o={incremental:a,watch:this.watch,force:this.force,hasManualRefresh:this.hasManualRefresh},s=this.$store.getters[i+"/schemaFor"](e);return null!==s&&void 0!==s&&null!==(r=s.attributes)&&void 0!==r&&r.namespaced&&(o.namespaced=this.namespaceFilter),this.$store.dispatch(i+"/findAll",{type:e,opt:o})},__getCountForResources(e,t,n){const r=n||this.$store.getters["currentStore"]();return e.reduce((e,n)=>e+this.__getCountForResource(n,t,r),0)},__getCountForResource(e,t,n){var r,a,o;const s=null===(r=this.$store.getters[n+"/all"](i["c"])[0])||void 0===r?void 0:r.counts[""+e],l=t&&null!==s&&void 0!==s&&s.namespaces?null===s||void 0===s||null===(a=s.namespaces[t])||void 0===a?void 0:a.count:null===s||void 0===s||null===(o=s.summary)||void 0===o?void 0:o.count;return l||0},__gatherResourceFetchData(e,t,n){var r,i,a,o;this.init=!0;const s=null===(r=this.perfConfig)||void 0===r||null===(r=r.manualRefresh)||void 0===r?void 0:r.enabled,l=parseInt((null===(i=this.perfConfig)||void 0===i||null===(i=i.manualRefresh)||void 0===i?void 0:i.threshold)||"0",10),c=null===(a=this.perfConfig)||void 0===a||null===(a=a.incrementalLoading)||void 0===a?void 0:a.enabled,u=parseInt((null===(o=this.perfConfig)||void 0===o||null===(o=o.incrementalLoading)||void 0===o?void 0:o.threshold)||"0",10);this.multipleResources=t;let d=0,p=!0,f=!1,h=!1;const m=this.multipleResources.length?this.multipleResources:[e];d=this.__getCountForResources(m,this.namespaceFilter,n),s&&d>=l&&(p=!1,f=!0),h=c&&u>0&&d>=u,this.$store.dispatch("resource-fetch/updateIsTooManyItems",f),this.watch=p,this.isTooManyItemsToAutoUpdate=f,this.incremental=h}}}},2384:function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,".radio-group:focus{border:none;outline:none}.radio-group h3{position:relative}.radio-group.row{display:flex}.radio-group.row .radio-container{margin-right:10px}.radio-group .label{font-size:14px!important}",""]),e.exports=t},2419:function(e,t,n){var r=n("872c"),i=n("aa31"),a=n("7049");function o(e){var t=-1,n=null==e?0:e.length;this.__data__=new r;while(++te.value,mode:e.mode,"data-testid":"input-match-expression-operator-control-"+r},on:{input:e.update},model:{value:n.operator,callback:function(t){e.$set(n,"operator",t)},expression:"row.operator"}})],1),"Exists"===n.operator||"DoesNotExist"===n.operator?t("div",{staticClass:"no-value"},[t("label",{staticClass:"text-muted"},[e._v("…")])]):t("div",{attrs:{"data-testid":"input-match-expression-values-"+r}},[e.isView?t("div",[e._v(" "+e._s(n.values)+" ")]):t("input",{directives:[{name:"model",rawName:"v-model",value:n.values,expression:"row.values"}],attrs:{mode:e.mode,disabled:"Exists"===n.operator||"DoesNotExist"===n.operator,"data-testid":"input-match-expression-values-control-"+r},domProps:{value:n.values},on:{input:[function(t){t.target.composing||e.$set(n,"values",t.target.value)},e.update]}})]),e.showRemoveButton?t("div",{staticClass:"remove-container"},[e.isView?e._e():t("button",{staticClass:"btn role-link",style:{padding:"0px"},attrs:{type:"button",disabled:"view"===e.mode,"data-testid":"input-match-expression-remove-control-"+r},on:{click:function(t){return e.removeRule(n)}}},[t("t",{attrs:{k:"generic.remove"}})],1)]):e._e()])})),!e.isView&&e.showAddButton?t("div",{staticClass:"mt-20"},[t("button",{staticClass:"btn role-tertiary add",attrs:{type:"button","data-testid":"input-match-expression-add-rule"},on:{click:e.addRule}},[t("t",{attrs:{k:"workload.scheduling.affinity.matchExpressions.addRule"}})],1)]):e._e()],2)},c=[],u=n("47ab"),d=n("9ce4"),p=n("bddd"),f=n("e24b");function h(e,t){const n=Object.keys(e||{}),r=t||[];for(const i of n){const t=e[i],n=Object(p["e"])(r,{key:i,operator:"In"});n?Object(p["a"])(n.values,t):r.push({key:i,operator:"In",values:Object(p["g"])(t)?t:[t]})}return r}function m(e){const t={},n=[],r=[],i={};for(const a of e)"In"===a.operator&&(i[a.key]?Object(p["a"])(r,a.key):i[a.key]=!0);for(const a of e)"In"!==a.operator||1!==a.values.length||r.includes(a.key)?n.push(Object.assign({},a)):t[a.key]=a.values[0];return{matchLabels:t,matchExpressions:n}}var v=n("466b"),g={components:{Select:u["a"],LabeledSelect:v["a"]},props:{value:{type:[Array,Object],default:()=>[]},mode:{type:String,default:"edit"},type:{type:String,default:o["p"]},matchingSelectorDisplay:{type:Boolean,default:!1},initialEmptyRow:{type:Boolean,default:!1},showAddButton:{type:Boolean,default:!0},showRemoveButton:{type:Boolean,default:!0},showRemove:{type:Boolean,default:!0},keysSelectOptions:{type:Array,default:()=>[]}},data(){const e=this.$store.getters["i18n/t"],t=[{label:e("workload.scheduling.affinity.matchExpressions.in"),value:"In"},{label:e("workload.scheduling.affinity.matchExpressions.notIn"),value:"NotIn"},{label:e("workload.scheduling.affinity.matchExpressions.exists"),value:"Exists"},{label:e("workload.scheduling.affinity.matchExpressions.doesNotExist"),value:"DoesNotExist"}],n=[{label:e("workload.scheduling.affinity.matchExpressions.in"),value:"In"},{label:e("workload.scheduling.affinity.matchExpressions.notIn"),value:"NotIn"},{label:e("workload.scheduling.affinity.matchExpressions.exists"),value:"Exists"},{label:e("workload.scheduling.affinity.matchExpressions.doesNotExist"),value:"DoesNotExist"},{label:e("workload.scheduling.affinity.matchExpressions.lessThan"),value:"Lt"},{label:e("workload.scheduling.affinity.matchExpressions.greaterThan"),value:"Gt"}],r=this.type===o["p"]?n:t;let i;if(this.matchingSelectorDisplay){const e={matchFields:[],matchExpressions:[]};["matchFields","matchExpressions"].forEach(t=>{e[t]=this.parseRules(this.value[t],t)}),i=[...e.matchFields,...e.matchExpressions]}else Object(p["g"])(this.value)?(i=[...this.value],i=this.parseRules(i)):(i=h(this.value.matchLabels,this.value.matchExpressions),i=this.parseRules(i));if(!i.length&&this.initialEmptyRow&&!this.isView){const e={key:"",operator:"In",values:""};this.matchingSelectorDisplay&&(e.matching="matchExpressions"),i.push(e)}return{ops:r,rules:i,custom:[]}},computed:{isView(){return"view"===this.mode},node(){return o["p"]},pod(){return o["r"]},hasKeySelectOptions(){var e;return!(null===(e=this.keysSelectOptions)||void 0===e||!e.length)},matchingSelectOptions(){return[{label:this.t("workload.scheduling.affinity.matchExpressions.label"),value:"matchExpressions"},{label:this.t("workload.scheduling.affinity.matchFields.label"),value:"matchFields"}]},...Object(d["a"])({t:"i18n/t"})},methods:{parseRules(e,t){return null!==e&&void 0!==e&&e.length?e.map(e=>{const n=Object(f["e"])(e);return n.values&&"string"!==typeof n.values&&(n.values=n.values.join(", ")),t&&(n.matching=t),n}):[]},removeRule(e){Object(p["i"])(this.rules,e),this.update()},addRule(){const e={key:"",operator:"In",values:""};this.matchingSelectorDisplay&&(e.matching="matchExpressions"),this.rules.push(e)},update(){this.$nextTick(()=>{const e=this.rules.map(e=>{const t={key:e.key,operator:e.operator};this.matchingSelectorDisplay&&(t.matching=e.matching);let n=(e.values||"").trim();return"Exists"!==e.operator&&"DoesNotExist"!==e.operator||(n=null),null!==n&&(t.values=n.split(/\s*,\s*/)),t}).filter(e=>!!e);Object(p["g"])(this.value)||this.matchingSelectorDisplay?this.$emit("input",e):this.$emit("input",m(e))})}}},b=g,y=(n("9838"),n("d802")),_=Object(y["a"])(b,l,c,!1,null,"3512fedb",null),w=_.exports,E=function(){var e=this,t=e._self._c;return t("div",{staticClass:"info-box",class:{stepped:!!e.step}},[e.step?t("div",{staticClass:"step-number mb-10"},[t("h2",[e._v("Step "+e._s(e.step))])]):e._e(),e._t("default")],2)},x=[],O={props:{step:{type:Number,default:null}}},A=O,S=(n("2b9a"),Object(y["a"])(A,E,x,!1,null,"1c5683df",null)),N=S.exports,C={props:{mode:{type:String,default:a["t"]},value:{type:Object,default:()=>{}}},components:{KeyValue:s["a"],MatchExpressions:w,InfoBox:N},data(){var e,t;const n=Object.assign({},this.value)||{},r=(null===(e=this.value)||void 0===e?void 0:e.matchExpressions)||[],i=(null===(t=this.value)||void 0===t?void 0:t.matchLabels)||{};return{POD:o["r"],namespaceSelector:n,matchExpressions:r,matchLabels:i}},watch:{value:{deep:!0,handler(e){const t=(null===e||void 0===e?void 0:e.matchExpressions)||[],n=(null===e||void 0===e?void 0:e.matchLabels)||{};this.$set(this,"matchExpressions",t),this.$set(this,"matchLabels",n)}},matchExpressions(e){this.$set(this.namespaceSelector,"matchExpressions",e),this.$emit("input",this.namespaceSelector)},matchLabels(e){this.$set(this.namespaceSelector,"matchLabels",e),this.$emit("input",this.namespaceSelector)}}},k=C,T=Object(y["a"])(k,r,i,!1,null,null,null);t["default"]=T.exports},"2a46":function(e,t,n){var r=n("0e19"),i=n("ff00"),a=n("b4b4"),o="[object Object]",s=Function.prototype,l=Object.prototype,c=s.toString,u=l.hasOwnProperty,d=c.call(Object);function p(e){if(!a(e)||r(e)!=o)return!1;var t=i(e);if(null===t)return!0;var n=u.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==d}e.exports=p},"2b9a":function(e,t,n){"use strict";n("e9a5")},"2be1":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,".yaml-editor[data-v-93239522]{display:flex;flex-direction:column}.yaml-editor .fill[data-v-93239522]{flex:1}.yaml-editor[data-v-93239522] .code-mirror{position:relative}.yaml-editor[data-v-93239522] .code-mirror .CodeMirror,.yaml-editor[data-v-93239522] .code-mirror .CodeMirror .CodeMirror-gutters{background-color:var(--yaml-editor-bg)}.yaml-editor .diff-mode[data-v-93239522]{background-color:var(--diff-header-bg);padding:5px 5px;border-bottom-right-radius:0;border-bottom-left-radius:0}.yaml-editor .d2h-file-wrapper[data-v-93239522]{border-top-right-radius:0}",""]),e.exports=t},"2c3b":function(e,t,n){"use strict";n("ebaf")},"2c47":function(e,t){function n(e){const t=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:t.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:t.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}e.exports=n},"2cb5":function(e,t,n){"use strict";function r(e){return E(e||"").split("-").map(e=>i(e)).join(" ")}function i(e){return e=e||"",e.substr(0,1).toUpperCase()+e.substr(1)}function a(e,t,n=" ",r=!1){if(e=""+e,e.length>=t)return e;const i=t-e.length+1,a=new Array(i).join(n).substr(0,i);return r?e+a:a+e}n.d(t,"b",(function(){return r})),n.d(t,"r",(function(){return i})),n.d(t,"q",(function(){return a})),n.d(t,"f",(function(){return s})),n.d(t,"g",(function(){return l})),n.d(t,"n",(function(){return h})),n.d(t,"h",(function(){return m})),n.d(t,"m",(function(){return v})),n.d(t,"o",(function(){return g})),n.d(t,"i",(function(){return b})),n.d(t,"d",(function(){return E})),n.d(t,"a",(function(){return x})),n.d(t,"c",(function(){return O})),n.d(t,"k",(function(){return A})),n.d(t,"e",(function(){return S})),n.d(t,"l",(function(){return N})),n.d(t,"p",(function(){return k})),n.d(t,"j",(function(){return T}));const o={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function s(e){return String(e).replace(/[&<>"']/g,e=>o[e])}function l(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function c(e){e=Math.max(0,e||1);const t=[];let n;if(window.crypto&&window.crypto.getRandomValues){const r=new Uint32Array(e);for(window.crypto.getRandomValues(r),n=0;nt[e%t.length]).join(""):null}function m(e,t=2){return e<1&&t>=2?Math.round(100*e)/100+"%":e<10&&t>=1?Math.round(10*e)/10+"%":Math.round(e)+"%"}function v(e){return e.match(/.*[^aeiou]y$/i)?e.substr(0,e.length-1)+"ies":e.endsWith("ics")?e:e.endsWith("s")?e+"es":e+"s"}function g(e,t,n){return e.reduce((r,i,a)=>(a>=5||(r+=`${s(i)}`,a===e.length-1?r+=t:r+=a===e.length-2?n("generic.and"):n("generic.comma")),r),"")}function b(e,t=2,n=" ",r=null){e="string"===typeof e?e.split(/\n/):e||[];const i=new Array(t+1).join(n),a=e.map(e=>{let t="",n=e;if(r){const i=e.match(r);i&&(t=i[i.length-1],n=e.substr(i[0].length))}return`${t}${i}${n}`}),o=a.join("\n");return o}const y=/([a-z\d])([A-Z])/g;function _(e){return e.replace(y,"$1_$2").toLowerCase()}const w=/[ _]/g;function E(e){return _(e).replace(w,"-")}function x(e){return e=e||"",!e.match(/[^\r\n\t\x20-\x7F]/)}function O(e,t){return"float"===t?e=parseFloat(e)||null:"int"===t?(e=parseInt(e,10),isNaN(e)&&(e=null)):"boolean"===t&&("true"===e.toLowerCase()?e=!0:"false"===e.toLowerCase()&&(e=!1)),e}function A(e,t=[]){return t.some(t=>{const n=e||"",r=S(t);return n.match(r)})}function S(e,t=!0){return"string"===typeof e?t?new RegExp(`^${l(e)}$`,"i"):new RegExp(""+l(e),"i"):e}function N(e){return s(e||"").replace(/(\r\n|\r|\n)/g,"
\n")}const C=/[^."']+|"([^"]*)"|'([^']*)'/g;function k(e){return e.includes('"')||e.includes("'")?e.match(C).map(e=>e.replace(/['"]/g,"")):e.split(".")}function T(e){let t="";for(const n of e)n.includes(".")?t+=`."${n}"`:t+="."+n;return t.startsWith(".")&&(t=t.substr(1)),t}},"2cbd":function(e,t){function n(e,t){if(("constructor"!==t||"function"!==typeof e[t])&&"__proto__"!=t)return e[t]}e.exports=n},"2d03":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,"::v-deep P{font-size:medium;line-height:normal;font-weight:400;letter-spacing:normal;font-style:normal}.markdown blockquote{color:#656d76;border-left:.25em solid #d0d7de;padding:0 1em;margin-bottom:16px}.markdown table{border-collapse:collapse}.markdown TH{text-align:left;border:1px solid #e3e7eb}.markdown table tr th{font-weight:700;text-align:left;margin:0;padding:6px 13px}.markdown table tr td{text-align:left;margin:0;padding:6px 13px;border:1px solid #e3e7eb}.markdown table tr td :first-child,.markdown table tr th :first-child{margin-top:0}.markdown table tr td :last-child,.markdown table tr th :last-child{margin-bottom:0}",""]),e.exports=t},"2da2":function(e,t,n){var r=n("8148");r.Template=n("340e").Template,r.template=r.Template,e.exports=r},"2e63":function(e,t){function n(e,t){var n=-1,r=null==e?0:e.length;while(++nnew r(e,t).set.map(e=>e.map(e=>e.value).join(" ").trim().split(" "));e.exports=i},"2ed5":function(e,t,n){var r=n("73bd"),i=n("c02d");function a(e,t,n,a){var o=!n;n||(n={});var s=-1,l=t.length;while(++s/}]},s={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},l=e.inherit(e.APOS_STRING_MODE,{illegal:null}),c=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(s)}),u=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(s)}),d="[ \t\n]",p={scope:"string",variants:[c,l,u]},f={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},h=["false","null","true"],m=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],v=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],g=e=>{const t=[];return e.forEach(e=>{t.push(e),e.toLowerCase()===e?t.push(e.toUpperCase()):t.push(e.toLowerCase())}),t},b={keyword:m,literal:g(h),built_in:v},y=e=>e.map(e=>e.replace(/\|\d+$/,"")),_={variants:[{match:[/new/,t.concat(d,"+"),t.concat("(?!",y(v).join("\\b|"),"\\b)"),i],scope:{1:"keyword",4:"title.class"}}]},w=t.concat(r,"\\b(?!\\()"),E={variants:[{match:[t.concat(/::/,t.lookahead(/(?!class\b)/)),w],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[i,t.concat(/::/,t.lookahead(/(?!class\b)/)),w],scope:{1:"title.class",3:"variable.constant"}},{match:[i,t.concat("::",t.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[i,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},x={scope:"attr",match:t.concat(r,t.lookahead(":"),t.lookahead(/(?!::)/))},O={relevance:0,begin:/\(/,end:/\)/,keywords:b,contains:[x,a,E,e.C_BLOCK_COMMENT_MODE,p,f,_]},A={relevance:0,match:[/\b/,t.concat("(?!fn\\b|function\\b|",y(m).join("\\b|"),"|",y(v).join("\\b|"),"\\b)"),r,t.concat(d,"*"),t.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[O]};O.contains.push(A);const S=[x,E,e.C_BLOCK_COMMENT_MODE,p,f,_],N={begin:t.concat(/#\[\s*/,i),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:h,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:h,keyword:["new","array"]},contains:["self",...S]},...S,{scope:"meta",match:i}]};return{case_insensitive:!1,keywords:b,contains:[N,e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},o,{scope:"variable.language",match:/\$this\b/},a,A,E,{match:[/const/,/\s/,r],scope:{1:"keyword",3:"variable.constant"}},_,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:b,contains:["self",a,E,e.C_BLOCK_COMMENT_MODE,p,f]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},p,f]}}e.exports=n},3159:function(e,t,n){"use strict";n("f172")},3171:function(e,t,n){const r=n("579f"),i=(e,t,n=!1)=>{if(e instanceof r)return e;try{return new r(e,t)}catch(i){if(!n)return null;throw i}};e.exports=i},3213:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DiffStyleType=t.LineMatchingType=t.OutputFormatType=t.LineType=void 0,function(e){e["INSERT"]="insert",e["DELETE"]="delete",e["CONTEXT"]="context"}(t.LineType||(t.LineType={})),t.OutputFormatType={LINE_BY_LINE:"line-by-line",SIDE_BY_SIDE:"side-by-side"},t.LineMatchingType={LINES:"lines",WORDS:"words",NONE:"none"},t.DiffStyleType={WORD:"word",CHAR:"char"}},"330a":function(e,t,n){var r=n("e2e2"),i=n("9243"),a=n("6efc"),o=n("c316"),s=n("f72d"),l=n("dda8"),c=n("09b2"),u=n("41dd"),d="[object Map]",p="[object Set]",f=Object.prototype,h=f.hasOwnProperty;function m(e){if(null==e)return!0;if(s(e)&&(o(e)||"string"==typeof e||"function"==typeof e.splice||l(e)||u(e)||a(e)))return!e.length;var t=i(e);if(t==d||t==p)return!e.size;if(c(e))return!r(e).length;for(var n in e)if(h.call(e,n))return!1;return!0}e.exports=m},3336:function(e,t,n){var r=n("1ec9"),i=n("6a68"),a=n("51db"),o=n("71bd"),s=n("b506"),l=n("cc7f"),c=n("2cbd");function u(e,t,n,d,p){e!==t&&a(t,(function(a,l){if(p||(p=new r),s(a))o(e,t,l,n,u,d,p);else{var f=d?d(c(e,l),a,l+"",e,t,p):void 0;void 0===f&&(f=a),i(e,l,f)}}),l)}e.exports=u},"340e":function(e,t,n){(function(e){function t(e,t,n){var r;return t&&"object"==typeof t&&(void 0!==t[e]?r=t[e]:n&&t.get&&"function"==typeof t.get&&(r=t.get(e))),r}function n(e,t,n,r,i,a){function o(){}function s(){}var l;o.prototype=e,s.prototype=e.subs;var c=new o;for(l in c.subs=new s,c.subsText={},c.buf="",r=r||{},c.stackSubs=r,c.subsText=a,t)r[l]||(r[l]=t[l]);for(l in r)c.subs[l]=r[l];for(l in i=i||{},c.stackPartials=i,n)i[l]||(i[l]=n[l]);for(l in i)c.partials[l]=i[l];return c}e.Template=function(e,t,n,r){e=e||{},this.r=e.code||this.r,this.c=n,this.options=r||{},this.text=t||"",this.partials=e.partials||{},this.subs=e.subs||{},this.buf=""},e.Template.prototype={r:function(e,t,n){return""},v:u,t:c,render:function(e,t,n){return this.ri([e],t||{},n)},ri:function(e,t,n){return this.r(e,t,n)},ep:function(e,t){var r=this.partials[e],i=t[r.name];if(r.instance&&r.base==i)return r.instance;if("string"==typeof i){if(!this.c)throw new Error("No compiler available.");i=this.c.compile(i,this.options)}if(!i)return null;if(this.partials[e].base=i,r.subs){for(key in t.stackText||(t.stackText={}),r.subs)t.stackText[key]||(t.stackText[key]=void 0!==this.activeSub&&t.stackText[this.activeSub]?t.stackText[this.activeSub]:this.text);i=n(i,r.subs,r.partials,this.stackSubs,this.stackPartials,t.stackText)}return this.partials[e].instance=i,i},rp:function(e,t,n,r){var i=this.ep(e,n);return i?i.ri(t,n,r):""},rs:function(e,t,n){var r=e[e.length-1];if(d(r))for(var i=0;i=0;c--)if(o=n[c],a=t(e,o,l),void 0!==a){s=!0;break}return s?(i||"function"!=typeof a||(a=this.mv(a,n,r)),a):!i&&""},ls:function(e,t,n,r,i){var a=this.options.delimiters;return this.options.delimiters=i,this.b(this.ct(c(e.call(t,r)),t,n)),this.options.delimiters=a,!1},ct:function(e,t,n){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(e,this.options).render(t,n)},b:function(e){this.buf+=e},fl:function(){var e=this.buf;return this.buf="",e},ms:function(e,t,n,r,i,a,o){var s,l=t[t.length-1],c=e.call(l);return"function"==typeof c?!!r||(s=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(c,l,n,s.substring(i,a),o)):c},mv:function(e,t,n){var r=t[t.length-1],i=e.call(r);return"function"==typeof i?this.ct(c(i.call(r)),r,n):i},sub:function(e,t,n,r){var i=this.subs[e];i&&(this.activeSub=e,i(t,n,this,r),this.activeSub=!1)}};var r=/&/g,i=//g,o=/\'/g,s=/\"/g,l=/[&<>\"\']/;function c(e){return String(null===e||void 0===e?"":e)}function u(e){return e=c(e),l.test(e)?e.replace(r,"&").replace(i,"<").replace(a,">").replace(o,"'").replace(s,"""):e}var d=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}})(t)},"356f":function(e,t,n){var r=n("2589"),i=n("cfe4");function a(e,t){return null!=e&&i(e,t,r)}e.exports=a},3584:function(e,t,n){var r=n("06a5"),i=n("b4b4");function a(e,t,n,o,s){return e===t||(null==e||null==t||!i(e)&&!i(t)?e!==e&&t!==t:r(e,t,n,o,a,s))}e.exports=a},"35bb":function(e,t,n){var r=n("8045"),i=n("494f"),a=n("4fab"),o=a&&a.isMap,s=o?i(o):r;e.exports=s},"35d9":function(e,t,n){var r=n("f72d"),i=n("b4b4");function a(e){return i(e)&&r(e)}e.exports=a},3600:function(e,t,n){const r=n("3c28"),i=(e,t,n)=>r(e,t,n)<0;e.exports=i},"360f":function(e,t,n){const r=n("3c28"),i=(e,t,n)=>r(e,t,n)>0;e.exports=i},3675:function(e,t,n){"use strict";var r=function(){var e=this,t=e._self._c;return e.$fetchState.pending?t("Loading"):t("div",[t("div",{staticClass:"row mb-10"},[t("div",{staticClass:"col span-6"},[t("h4",[e._v(" "+e._s(e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.title"))+" ")]),t("LabeledInput",{attrs:{"data-testid":`ps-config-security-context-${e.configType}-seLinuxOptions-level-input`,mode:e.mode,disabled:e.disabled,label:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.level.label"),placeholder:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.level.placeholder")},on:{input:function(t){return e.updateData(t)}},model:{value:e.level,callback:function(t){e.level=t},expression:"level"}})],1)]),t("div",{staticClass:"row mb-10"},[t("div",{staticClass:"col span-6"},[t("LabeledInput",{attrs:{"data-testid":`ps-config-security-context-${e.configType}-seLinuxOptions-role-input`,mode:e.mode,disabled:e.disabled,label:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.role.label"),placeholder:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.role.placeholder")},on:{input:function(t){return e.updateData(t)}},model:{value:e.role,callback:function(t){e.role=t},expression:"role"}})],1)]),t("div",{staticClass:"row mb-10"},[t("div",{staticClass:"col span-6"},[t("LabeledInput",{attrs:{"data-testid":`ps-config-security-context-${e.configType}-seLinuxOptions-type-input`,mode:e.mode,disabled:e.disabled,label:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.type.label"),placeholder:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.type.placeholder")},on:{input:function(t){return e.updateData(t)}},model:{value:e.type,callback:function(t){e.type=t},expression:"type"}})],1)]),t("div",{staticClass:"row mb-40"},[t("div",{staticClass:"col span-6"},[t("LabeledInput",{attrs:{"data-testid":`ps-config-security-context-${e.configType}-seLinuxOptions-user-input`,mode:e.mode,disabled:e.disabled,label:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.user.label"),placeholder:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.user.placeholder")},on:{input:function(t){return e.updateData(t)}},model:{value:e.user,callback:function(t){e.user=t},expression:"user"}})],1)])])},i=[],a=n("da25"),o=n("15ca"),s=n("8e93"),l={props:{mode:{type:String,default:a["t"]},value:{type:Object,default:()=>{}},configType:{type:String,default:"container"},disabled:{type:Boolean,default:!1}},components:{Loading:o["a"],LabeledInput:s["a"]},async fetch(){},data(){var e,t,n,r;return{level:null===(e=this.value)||void 0===e?void 0:e.level,role:null===(t=this.value)||void 0===t?void 0:t.role,type:null===(n=this.value)||void 0===n?void 0:n.type,user:null===(r=this.value)||void 0===r?void 0:r.user}},methods:{updateData(){this.$emit("update-se-linux-options",{level:this.level,role:this.role,type:this.type,user:this.user})}}},c=l,u=n("d802"),d=Object(u["a"])(c,r,i,!1,null,null,null);t["a"]=d.exports},3819:function(e,t,n){var r=n("bf10"),i=n("201b"),a=r(i,"Set");e.exports=a},"38de":function(e,t,n){"use strict";var r=function(){var e=this,t=e._self._c;return t("section",{directives:[{name:"show",rawName:"v-show",value:e.active,expression:"active"}],attrs:{id:e.name,"aria-hidden":!e.active,role:"tabpanel"}},[e.shouldShowHeader?t("div",{staticClass:"tab-header"},[t("h2",[e._v(" "+e._s(e.labelDisplay)+" "),e.tooltip?t("i",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.tooltip,expression:"tooltip"}],staticClass:"icon icon-info icon-lg"}):e._e()]),e._t("tab-header-right")],2):e._e(),e._t("default",null,null,{active:e.active})],2)},i=[],a={inject:["addTab","removeTab","sideTabs"],props:{label:{default:null,type:String},labelKey:{default:null,type:String},name:{required:!0,type:String},tooltip:{default:null,type:[String,Object]},weight:{default:0,required:!1,type:Number},showHeader:{type:Boolean,default:null},displayAlertIcon:{type:Boolean,default:null},error:{type:Boolean,default:!1},badge:{default:0,required:!1,type:Number}},data(){return{active:null}},computed:{labelDisplay(){return this.labelKey?this.$store.getters["i18n/t"](this.labelKey):this.label?this.label:this.name},shouldShowHeader(){return null!==this.showHeader?this.showHeader:this.sideTabs||!1}},watch:{active(e){e&&this.$emit("active")}},mounted(){this.addTab(this)},beforeDestroy(){this.removeTab(this)}},o=a,s=(n("94fd"),n("d802")),l=Object(s["a"])(o,r,i,!1,null,"667bdd63",null);t["a"]=l.exports},3973:function(e,t,n){"use strict";n("4914")},"39dd":function(e,t,n){const r=n("f58d"),i=(e,t)=>e.sort((e,n)=>r(e,n,t));e.exports=i},"39f2":function(e,t,n){var r=n("73b4");function i(e,t){var n=null==e?0:e.length;return!!n&&r(e,t,0)>-1}e.exports=i},"3ad3":function(e,t,n){var r=n("4c0b"),i=r(Object.keys,Object);e.exports=i},"3b2d":function(e,t,n){const r=n("3171"),i=(e,t)=>{const n=r(e,t);return n&&n.prerelease.length?n.prerelease:null};e.exports=i},"3b52":function(e,t,n){"use strict";n("8212")},"3b54":function(e,t,n){var r=n("c364"),i=n("cb86"),a=n("c68c");function o(e,t,n){var o=-1,s=t.length,l={};while(++onew r(e,n).compare(new r(t,n));e.exports=i},"3c82":function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"row"},[t("div",{staticClass:"col span-12"},[t("h3",{attrs:{"data-testid":"ps-config-source-authorities-title"}},[e._v(" "+e._s(e.t("kubewarden.policyServerConfig.sourceAuthorities.title"))+" ")]),e._l(e.rows,(function(n,r){return[t("Authority",{key:r,ref:"authority",refInFor:!0,attrs:{mode:e.mode},on:{update:function(t){return e.updateAuthority(t,r)}},scopedSlots:e._u([{key:"remove",fn:function(){return[t("button",{staticClass:"btn role-link remove btn-sm",attrs:{"data-testid":"ps-config-authority-remove-button-"+r,type:"button",disabled:e.isView},on:{click:function(t){return e.removeRegistry(r)}}},[t("i",{staticClass:"icon icon-2x icon-x"})])]},proxy:!0}],null,!0),model:{value:e.rows[r],callback:function(t){e.$set(e.rows,r,t)},expression:"rows[index]"}})]})),t("button",{staticClass:"btn role-tertiary add",attrs:{"data-testid":"ps-config-source-authorities-add-button",type:"button",disabled:e.isView},on:{click:function(t){return e.addRegistry()}}},[e._v(" "+e._s(e.t("kubewarden.policyServerConfig.sourceAuthorities.add"))+" ")])],2)])},i=[],a=n("da25"),o=n("bddd"),s=n("e24b"),l=n("22a0"),c={props:{mode:{type:String,default:a["C"]},value:{type:[Array,Object],default:()=>({})}},components:{Authority:l["default"]},fetch(){if(this.value)for(const[e,t]of Object.entries(this.value))this.rows.push({registryName:e,certs:t});else this.value={}},data(){return{rows:[]}},computed:{isView(){return this.mode===a["C"]}},methods:{addRegistry(){this.rows.push({registryName:"",certs:[]})},deleteAuthority(e){if(!Object(s["i"])(this.value)){const t=Object.keys(this.value)[e];this.$delete(this.value,[t])}},removeRegistry(e){Object(o["h"])(this.rows,e),this.deleteAuthority(e)},updateAuthority(e,t){const{registryName:n,certs:r}=e;Object(s["i"])(this.value)||this.deleteAuthority(t),this.$set(this.value,[n],r||[]),this.$emit("update",this.value)}}},u=c,d=(n("6522"),n("d802")),p=Object(d["a"])(u,r,i,!1,null,"189c4c6b",null);t["default"]=p.exports},"3c84":function(e,t,n){var r=n("a0b7");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var i=n("0ed3").default;i("ad7ac62a",r,!0,{sourceMap:!1,shadowMode:!1})},"3ca3":function(e,t,n){"use strict";n.r(t),n.d(t,"DEFAULT_POLICY_SERVER",(function(){return c})),n.d(t,"default",(function(){return u}));var r=n("330a"),i=n.n(r),a=n("907c"),o=n("90cd"),s=n("d892");class l extends s["d"]{get _availableActions(){const e=super._availableActions,t={action:"openLogs",enabled:!0,icon:"icon icon-fw icon-chevron-right",label:"View Logs"};return e.unshift(t),e}get allRelatedPolicies(){return async()=>{const e=[o["f"].ADMISSION_POLICY,o["f"].CLUSTER_ADMISSION_POLICY],t=e.filter(e=>this.$rootGetters["cluster/canList"](e)).map(e=>this.$dispatch("cluster/findAll",{type:e,opt:{force:!0}},{root:!0}));try{const e=await Promise.all(t);if(e)return e.flatMap(e=>e).filter(e=>{var t,n;return(null===(t=e.spec)||void 0===t?void 0:t.policyServer)===(null===(n=this.metadata)||void 0===n?void 0:n.name)})}catch(n){console.warn("Error fetching related policies: "+n)}}}get policyGauges(){return async()=>{const e={},t=["Active","Pending"],n=await this.allRelatedPolicies();if(!n)return e;for(const r of t.values())e[r]||(e[r]={color:Object(s["b"])(r).replace("text-",""),count:0});return null===n||void 0===n||n.map(t=>{const{stateDisplay:n}=t;e[n].count++}),e}}get tracesGauges(){return e=>{const t={};return i()(e)||null===e||void 0===e||e.flatMap(e=>{var n;null===e||void 0===e||null===(n=e.traces)||void 0===n||n.map(e=>{const{allowed:n,mode:r,mutated:i}=e;"monitor"!==r&&(t["Denied"]&&!n?t["Denied"].count++:n?t["Mutated"]&&i?t["Mutated"].count++:i&&n&&(t["Mutated"]={color:Object(s["c"])("mutated"),count:1}):t["Denied"]={color:Object(s["c"])("denied"),count:1})})}),t}}get matchingDeployment(){return async()=>{try{var e;return await this.$dispatch("cluster/findMatching",{type:a["H"].DEPLOYMENT,selector:"kubewarden/policy-server="+(null===(e=this.metadata)||void 0===e?void 0:e.name)},{root:!0})}catch(t){console.warn("Error matching policy-server to deployment",t)}}}get matchingPods(){return async()=>{try{var e;return await this.$dispatch("cluster/findMatching",{type:a["r"],selector:"app=kubewarden-policy-server-"+(null===(e=this.metadata)||void 0===e?void 0:e.name)},{root:!0})}catch(t){console.warn("Error matching policy-server to pod",t)}}}async openLogs(){try{const e=await this.matchingPods();i()(e)||this.$dispatch("wm/open",{id:this.id+"-logs",label:this.nameDisplay,icon:"file",component:"ContainerLogs",attrs:{pod:e[0]}},{root:!0})}catch(e){console.warn("Error dispatching console for pod",e)}}}const c={apiVersion:"policies.kubewarden.io/v1alpha2",kind:"PolicyServer",metadata:{annotations:{},labels:{},name:""},spec:{annotations:{},env:[{name:"KUBEWARDEN_LOG_FMT",value:"otlp"},{name:"KUBEWARDEN_LOG_LEVEL",value:"info"}],image:"ghcr.io/kubewarden/policy-server:latest",replicas:1,serviceAccountName:"",verificationConfig:"",insecureSources:[],sourceAuthorities:{}}};class u extends l{}},"3daa":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,".vertical[data-v-01996ade]{flex-direction:column;width:100%}.subtle[data-v-01996ade]{opacity:.7}.message-icon[data-v-01996ade]{display:flex;align-items:center;justify-content:center;flex:1;flex-direction:column}.message-icon>I[data-v-01996ade]{font-size:64px;margin-bottom:20px}.message-icon>I.info[data-v-01996ade]{color:var(--primary)}.message-icon>I.error[data-v-01996ade]{color:var(--error)}.message-icon>I.warning[data-v-01996ade]{color:var(--warning)}.message-icon>I.success[data-v-01996ade]{color:var(--success)}.message-icon>.message[data-v-01996ade]{font-size:20px;margin-bottom:40px;max-width:60%;text-align:center;line-height:30px}",""]),e.exports=t},"3db8":function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e._self._c;return t("div",[t("div",{staticClass:"row"},[t("Banner",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.policyServerConfig.verification.description",{},!0),expression:"t('kubewarden.policyServerConfig.verification.description', {}, true)"}],staticClass:"type-banner mb-20 mt-0",attrs:{"data-testid":"ps-config-verification-banner",color:"info"}})],1),t("div",{staticClass:"row"},[t("div",{staticClass:"col span-6"},[t("LabeledSelect",{attrs:{"data-testid":"ps-config-verification-select",mode:e.mode,label:e.t("kubewarden.policyServerConfig.verification.label"),options:e.options},model:{value:e.vConfig,callback:function(t){e.vConfig=t},expression:"vConfig"}})],1)])])},i=[],a=n("330a"),o=n.n(a),s=n("da25"),l=n("6418"),c=n("466b"),u={props:{mode:{type:String,default:s["t"]},value:{type:Object,default:null},configMaps:{type:Array,required:!0}},components:{Banner:l["a"],LabeledSelect:c["a"]},data(){return{vConfig:this.value.verificationConfig}},watch:{vConfig(e){this.$emit("update-vconfig","verificationConfig",e)}},computed:{options(){return o()(this.configMaps)?[]:this.configMaps.map(e=>e.id)}}},d=u,p=n("d802"),f=Object(p["a"])(d,r,i,!1,null,null,null);t["default"]=f.exports},"3ddb":function(e,t){function n(e){const t=["true","false","iota","nil"],n=["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"],r=["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],i=["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],a={keyword:i,type:r,literal:t,built_in:n};return{name:"Go",aliases:["golang"],keywords:a,illegal:"e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?n-1:0),i=1;i/gm),X=v(/\${[\w\W]*}/gm),Z=v(/^data-[\-\w.\u00B7-\uFFFF]/),J=v(/^aria-[\-\w]+$/),Q=v(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ee=v(/^(?:\w+script|data):/i),te=v(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ne=v(/^html$/i),re=function(){return"undefined"===typeof window?null:window},ie=function(t,n){if("object"!==e(t)||"function"!==typeof t.createPolicy)return null;var r=null,i="data-tt-policy-suffix";n.currentScript&&n.currentScript.hasAttribute(i)&&(r=n.currentScript.getAttribute(i));var a="dompurify"+(r?"#"+r:"");try{return t.createPolicy(a,{createHTML:function(e){return e},createScriptURL:function(e){return e}})}catch(o){return console.warn("TrustedTypes policy "+a+" could not be created."),null}};function ae(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:re(),n=function(e){return ae(e)};if(n.version="2.4.5",n.removed=[],!t||!t.document||9!==t.document.nodeType)return n.isSupported=!1,n;var r=t.document,a=t.document,o=t.DocumentFragment,s=t.HTMLTemplateElement,l=t.Node,c=t.Element,u=t.NodeFilter,d=t.NamedNodeMap,p=void 0===d?t.NamedNodeMap||t.MozNamedAttrMap:d,f=t.HTMLFormElement,h=t.DOMParser,v=t.trustedTypes,g=c.prototype,b=P(g,"cloneNode"),y=P(g,"nextSibling"),_=P(g,"childNodes"),L=P(g,"parentNode");if("function"===typeof s){var I=a.createElement("template");I.content&&I.content.ownerDocument&&(a=I.content.ownerDocument)}var oe=ie(v,r),se=oe?oe.createHTML(""):"",le=a,ce=le.implementation,ue=le.createNodeIterator,de=le.createDocumentFragment,pe=le.getElementsByTagName,fe=r.importNode,he={};try{he=M(a).documentMode?a.documentMode:{}}catch(It){}var me={};n.isSupported="function"===typeof L&&ce&&"undefined"!==typeof ce.createHTMLDocument&&9!==he;var ve,ge,be=Y,ye=W,_e=X,we=Z,Ee=J,xe=ee,Oe=te,Ae=Q,Se=null,Ne=D({},[].concat(i($),i(j),i(B),i(F),i(H))),Ce=null,ke=D({},[].concat(i(V),i(q),i(z),i(K))),Te=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Re=null,Le=null,Ie=!0,De=!0,Me=!1,Pe=!0,$e=!1,je=!1,Be=!1,Ue=!1,Fe=!1,Ge=!1,He=!1,Ve=!0,qe=!1,ze="user-content-",Ke=!0,Ye=!1,We={},Xe=null,Ze=D({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Je=null,Qe=D({},["audio","video","img","source","image","track"]),et=null,tt=D({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),nt="http://www.w3.org/1998/Math/MathML",rt="http://www.w3.org/2000/svg",it="http://www.w3.org/1999/xhtml",at=it,ot=!1,st=null,lt=D({},[nt,rt,it],A),ct=["application/xhtml+xml","text/html"],ut="text/html",dt=null,pt=a.createElement("form"),ft=function(e){return e instanceof RegExp||e instanceof Function},ht=function(t){dt&&dt===t||(t&&"object"===e(t)||(t={}),t=M(t),ve=ve=-1===ct.indexOf(t.PARSER_MEDIA_TYPE)?ut:t.PARSER_MEDIA_TYPE,ge="application/xhtml+xml"===ve?A:O,Se="ALLOWED_TAGS"in t?D({},t.ALLOWED_TAGS,ge):Ne,Ce="ALLOWED_ATTR"in t?D({},t.ALLOWED_ATTR,ge):ke,st="ALLOWED_NAMESPACES"in t?D({},t.ALLOWED_NAMESPACES,A):lt,et="ADD_URI_SAFE_ATTR"in t?D(M(tt),t.ADD_URI_SAFE_ATTR,ge):tt,Je="ADD_DATA_URI_TAGS"in t?D(M(Qe),t.ADD_DATA_URI_TAGS,ge):Qe,Xe="FORBID_CONTENTS"in t?D({},t.FORBID_CONTENTS,ge):Ze,Re="FORBID_TAGS"in t?D({},t.FORBID_TAGS,ge):{},Le="FORBID_ATTR"in t?D({},t.FORBID_ATTR,ge):{},We="USE_PROFILES"in t&&t.USE_PROFILES,Ie=!1!==t.ALLOW_ARIA_ATTR,De=!1!==t.ALLOW_DATA_ATTR,Me=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Pe=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,$e=t.SAFE_FOR_TEMPLATES||!1,je=t.WHOLE_DOCUMENT||!1,Fe=t.RETURN_DOM||!1,Ge=t.RETURN_DOM_FRAGMENT||!1,He=t.RETURN_TRUSTED_TYPE||!1,Ue=t.FORCE_BODY||!1,Ve=!1!==t.SANITIZE_DOM,qe=t.SANITIZE_NAMED_PROPS||!1,Ke=!1!==t.KEEP_CONTENT,Ye=t.IN_PLACE||!1,Ae=t.ALLOWED_URI_REGEXP||Ae,at=t.NAMESPACE||it,Te=t.CUSTOM_ELEMENT_HANDLING||{},t.CUSTOM_ELEMENT_HANDLING&&ft(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Te.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&ft(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Te.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"===typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Te.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),$e&&(De=!1),Ge&&(Fe=!0),We&&(Se=D({},i(H)),Ce=[],!0===We.html&&(D(Se,$),D(Ce,V)),!0===We.svg&&(D(Se,j),D(Ce,q),D(Ce,K)),!0===We.svgFilters&&(D(Se,B),D(Ce,q),D(Ce,K)),!0===We.mathMl&&(D(Se,F),D(Ce,z),D(Ce,K))),t.ADD_TAGS&&(Se===Ne&&(Se=M(Se)),D(Se,t.ADD_TAGS,ge)),t.ADD_ATTR&&(Ce===ke&&(Ce=M(Ce)),D(Ce,t.ADD_ATTR,ge)),t.ADD_URI_SAFE_ATTR&&D(et,t.ADD_URI_SAFE_ATTR,ge),t.FORBID_CONTENTS&&(Xe===Ze&&(Xe=M(Xe)),D(Xe,t.FORBID_CONTENTS,ge)),Ke&&(Se["#text"]=!0),je&&D(Se,["html","head","body"]),Se.table&&(D(Se,["tbody"]),delete Re.tbody),m&&m(t),dt=t)},mt=D({},["mi","mo","mn","ms","mtext"]),vt=D({},["foreignobject","desc","title","annotation-xml"]),gt=D({},["title","style","font","a","script"]),bt=D({},j);D(bt,B),D(bt,U);var yt=D({},F);D(yt,G);var _t=function(e){var t=L(e);t&&t.tagName||(t={namespaceURI:at,tagName:"template"});var n=O(e.tagName),r=O(t.tagName);return!!st[e.namespaceURI]&&(e.namespaceURI===rt?t.namespaceURI===it?"svg"===n:t.namespaceURI===nt?"svg"===n&&("annotation-xml"===r||mt[r]):Boolean(bt[n]):e.namespaceURI===nt?t.namespaceURI===it?"math"===n:t.namespaceURI===rt?"math"===n&&vt[r]:Boolean(yt[n]):e.namespaceURI===it?!(t.namespaceURI===rt&&!vt[r])&&(!(t.namespaceURI===nt&&!mt[r])&&(!yt[n]&&(gt[n]||!bt[n]))):!("application/xhtml+xml"!==ve||!st[e.namespaceURI]))},wt=function(e){x(n.removed,{element:e});try{e.parentNode.removeChild(e)}catch(It){try{e.outerHTML=se}catch(It){e.remove()}}},Et=function(e,t){try{x(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(It){x(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!Ce[e])if(Fe||Ge)try{wt(t)}catch(It){}else try{t.setAttribute(e,"")}catch(It){}},xt=function(e){var t,n;if(Ue)e=""+e;else{var r=S(e,/^[\r\n\t ]+/);n=r&&r[0]}"application/xhtml+xml"===ve&&at===it&&(e=''+e+"");var i=oe?oe.createHTML(e):e;if(at===it)try{t=(new h).parseFromString(i,ve)}catch(It){}if(!t||!t.documentElement){t=ce.createDocument(at,"template",null);try{t.documentElement.innerHTML=ot?se:i}catch(It){}}var o=t.body||t.documentElement;return e&&n&&o.insertBefore(a.createTextNode(n),o.childNodes[0]||null),at===it?pe.call(t,je?"html":"body")[0]:je?t.documentElement:o},Ot=function(e){return ue.call(e.ownerDocument||e,e,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT,null,!1)},At=function(e){return e instanceof f&&("string"!==typeof e.nodeName||"string"!==typeof e.textContent||"function"!==typeof e.removeChild||!(e.attributes instanceof p)||"function"!==typeof e.removeAttribute||"function"!==typeof e.setAttribute||"string"!==typeof e.namespaceURI||"function"!==typeof e.insertBefore||"function"!==typeof e.hasChildNodes)},St=function(t){return"object"===e(l)?t instanceof l:t&&"object"===e(t)&&"number"===typeof t.nodeType&&"string"===typeof t.nodeName},Nt=function(e,t,r){me[e]&&w(me[e],(function(e){e.call(n,t,r,dt)}))},Ct=function(e){var t;if(Nt("beforeSanitizeElements",e,null),At(e))return wt(e),!0;if(T(/[\u0080-\uFFFF]/,e.nodeName))return wt(e),!0;var r=ge(e.nodeName);if(Nt("uponSanitizeElement",e,{tagName:r,allowedTags:Se}),e.hasChildNodes()&&!St(e.firstElementChild)&&(!St(e.content)||!St(e.content.firstElementChild))&&T(/<[/\w]/g,e.innerHTML)&&T(/<[/\w]/g,e.textContent))return wt(e),!0;if("select"===r&&T(/\n\n \n\n \n \n \n \n\n \n \n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ResourceTable.vue?vue&type=template&id=ab9d5006&\"\nimport script from \"./ResourceTable.vue?vue&type=script&lang=js&\"\nexport * from \"./ResourceTable.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".dashboard[data-v-12f32b18],.dashboard .head[data-v-12f32b18]{display:flex;flex-direction:column}.dashboard .head[data-v-12f32b18]{justify-content:space-between;align-content:center;outline:1px solid var(--border);border-radius:var(--border-radius);margin:0 0 64px 0;padding:20px;gap:20px}.dashboard .head-title[data-v-12f32b18]{display:flex;flex-direction:column;gap:5px}.dashboard .head-title h1[data-v-12f32b18]{margin:0}.dashboard .head-version-container[data-v-12f32b18]{display:flex;flex-direction:row;align-items:center}.dashboard .head-upgrade[data-v-12f32b18]{display:flex;align-items:center}.dashboard .head-upgrade[data-v-12f32b18],.dashboard .head-version[data-v-12f32b18]{border-radius:var(--border-radius);padding:4px 8px}.dashboard .head-subheader[data-v-12f32b18]{font-size:1.2rem;font-weight:500;color:var(--text-secondary)}.dashboard .head-links[data-v-12f32b18]{display:flex;gap:10px}.dashboard .get-started[data-v-12f32b18]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));grid-gap:20px}.dashboard .get-started .card-container[data-v-12f32b18]{min-height:420px;padding:0}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","export * from \"-!../../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Bar.vue?vue&type=style&index=0&id=b4f4e2ae&prod&lang=scss&scoped=true&\"","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".flex-content[data-v-1a42fcca]{display:flex;flex-direction:column;flex-grow:1}.footer[data-v-1a42fcca]{margin-top:20px;right:0;position:sticky;bottom:0;background-color:var(--header-bg);margin-left:-20px;margin-right:-20px;margin-bottom:-20px;padding:10px 20px}.footer.edit[data-v-1a42fcca]{border-top:var(--header-border-size) solid var(--header-border)}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=23723280&scoped=true&\"\nimport script from \"./Loading.vue?vue&type=script&lang=js&\"\nexport * from \"./Loading.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Loading.vue?vue&type=style&index=0&id=23723280&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"23723280\",\n null\n \n)\n\nexport default component.exports","var map = {\n\t\"./kubewarden/_index\": \"61e7\",\n\t\"./kubewarden/_index.vue\": \"61e7\",\n\t\"./kubewarden/admission\": \"f0e8\",\n\t\"./kubewarden/admission/\": \"f0e8\",\n\t\"./kubewarden/admission/ContextAware\": \"78b7\",\n\t\"./kubewarden/admission/ContextAware/\": \"78b7\",\n\t\"./kubewarden/admission/ContextAware/Resource\": \"01af\",\n\t\"./kubewarden/admission/ContextAware/Resource.vue\": \"01af\",\n\t\"./kubewarden/admission/ContextAware/index\": \"78b7\",\n\t\"./kubewarden/admission/ContextAware/index.vue\": \"78b7\",\n\t\"./kubewarden/admission/General\": \"ff83\",\n\t\"./kubewarden/admission/General.vue\": \"ff83\",\n\t\"./kubewarden/admission/NamespaceSelector\": \"2835\",\n\t\"./kubewarden/admission/NamespaceSelector/\": \"2835\",\n\t\"./kubewarden/admission/NamespaceSelector/index\": \"2835\",\n\t\"./kubewarden/admission/NamespaceSelector/index.vue\": \"2835\",\n\t\"./kubewarden/admission/Rules\": \"6b71\",\n\t\"./kubewarden/admission/Rules/\": \"6b71\",\n\t\"./kubewarden/admission/Rules/Rule\": \"63a1\",\n\t\"./kubewarden/admission/Rules/Rule.vue\": \"63a1\",\n\t\"./kubewarden/admission/Rules/index\": \"6b71\",\n\t\"./kubewarden/admission/Rules/index.vue\": \"6b71\",\n\t\"./kubewarden/admission/Settings\": \"4d67\",\n\t\"./kubewarden/admission/Settings.vue\": \"4d67\",\n\t\"./kubewarden/admission/index\": \"f0e8\",\n\t\"./kubewarden/admission/index.vue\": \"f0e8\",\n\t\"./kubewarden/policy-server\": \"b118\",\n\t\"./kubewarden/policy-server/\": \"b118\",\n\t\"./kubewarden/policy-server/General\": \"d8b3\",\n\t\"./kubewarden/policy-server/General.vue\": \"d8b3\",\n\t\"./kubewarden/policy-server/Registry/Authority\": \"22a0\",\n\t\"./kubewarden/policy-server/Registry/Authority.vue\": \"22a0\",\n\t\"./kubewarden/policy-server/Registry/Index\": \"6b48\",\n\t\"./kubewarden/policy-server/Registry/Index.vue\": \"6b48\",\n\t\"./kubewarden/policy-server/Registry/SourceAuthorities\": \"3c82\",\n\t\"./kubewarden/policy-server/Registry/SourceAuthorities.vue\": \"3c82\",\n\t\"./kubewarden/policy-server/SecurityContexts\": \"4d89\",\n\t\"./kubewarden/policy-server/SecurityContexts.vue\": \"4d89\",\n\t\"./kubewarden/policy-server/SecurityContexts/ContainerConfiguration\": \"da16\",\n\t\"./kubewarden/policy-server/SecurityContexts/ContainerConfiguration.vue\": \"da16\",\n\t\"./kubewarden/policy-server/SecurityContexts/PodConfiguration\": \"f155\",\n\t\"./kubewarden/policy-server/SecurityContexts/PodConfiguration.vue\": \"f155\",\n\t\"./kubewarden/policy-server/Verification\": \"3db8\",\n\t\"./kubewarden/policy-server/Verification.vue\": \"3db8\",\n\t\"./kubewarden/policy-server/index\": \"b118\",\n\t\"./kubewarden/policy-server/index.vue\": \"b118\"\n};\n\nfunction webpackAsyncContext(req) {\n\treturn Promise.resolve().then(function() {\n\t\tif(!__webpack_require__.o(map, req)) {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t}\n\n\t\tvar id = map[req];\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"15d2\";\nmodule.exports = webpackAsyncContext;","/*\nLanguage: Nginx config\nAuthor: Peter Leonov \nContributors: Ivan Sagalaev \nCategory: config, web\nWebsite: https://www.nginx.com\n*/\n\n/** @type LanguageFn */\nfunction nginx(hljs) {\n const regex = hljs.regex;\n const VAR = {\n className: 'variable',\n variants: [\n { begin: /\\$\\d+/ },\n { begin: /\\$\\{\\w+\\}/ },\n { begin: regex.concat(/[$@]/, hljs.UNDERSCORE_IDENT_RE) }\n ]\n };\n const LITERALS = [\n \"on\",\n \"off\",\n \"yes\",\n \"no\",\n \"true\",\n \"false\",\n \"none\",\n \"blocked\",\n \"debug\",\n \"info\",\n \"notice\",\n \"warn\",\n \"error\",\n \"crit\",\n \"select\",\n \"break\",\n \"last\",\n \"permanent\",\n \"redirect\",\n \"kqueue\",\n \"rtsig\",\n \"epoll\",\n \"poll\",\n \"/dev/poll\"\n ];\n const DEFAULT = {\n endsWithParent: true,\n keywords: {\n $pattern: /[a-z_]{2,}|\\/dev\\/poll/,\n literal: LITERALS\n },\n relevance: 0,\n illegal: '=>',\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'string',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR\n ],\n variants: [\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /'/,\n end: /'/\n }\n ]\n },\n // this swallows entire URLs to avoid detecting numbers within\n {\n begin: '([a-z]+):/',\n end: '\\\\s',\n endsWithParent: true,\n excludeEnd: true,\n contains: [ VAR ]\n },\n {\n className: 'regexp',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR\n ],\n variants: [\n {\n begin: \"\\\\s\\\\^\",\n end: \"\\\\s|\\\\{|;\",\n returnEnd: true\n },\n // regexp locations (~, ~*)\n {\n begin: \"~\\\\*?\\\\s+\",\n end: \"\\\\s|\\\\{|;\",\n returnEnd: true\n },\n // *.example.com\n { begin: \"\\\\*(\\\\.[a-z\\\\-]+)+\" },\n // sub.example.*\n { begin: \"([a-z\\\\-]+\\\\.)+\\\\*\" }\n ]\n },\n // IP\n {\n className: 'number',\n begin: '\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'\n },\n // units\n {\n className: 'number',\n begin: '\\\\b\\\\d+[kKmMgGdshdwy]?\\\\b',\n relevance: 0\n },\n VAR\n ]\n };\n\n return {\n name: 'Nginx config',\n aliases: [ 'nginxconf' ],\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: \"upstream location\",\n end: /;|\\{/,\n contains: DEFAULT.contains,\n keywords: { section: \"upstream location\" }\n },\n {\n className: 'section',\n begin: regex.concat(hljs.UNDERSCORE_IDENT_RE + regex.lookahead(/\\s+\\{/)),\n relevance: 0\n },\n {\n begin: regex.lookahead(hljs.UNDERSCORE_IDENT_RE + '\\\\s'),\n end: ';|\\\\{',\n contains: [\n {\n className: 'attribute',\n begin: hljs.UNDERSCORE_IDENT_RE,\n starts: DEFAULT\n }\n ],\n relevance: 0\n }\n ],\n illegal: '[^\\\\s\\\\}\\\\{]'\n };\n}\n\nmodule.exports = nginx;\n","import { SETTING } from '@shell/config/settings';\nimport { COUNT, MANAGEMENT } from '@shell/config/types';\nimport { GC_DEFAULTS, GC_PREFERENCES } from './gc-types';\n\nclass GarbageCollect {\n private static ENABLE_DEBUG_LOGGING = false;\n\n /**\n * Don't run GC if it's been run within 5 seconds\n */\n private static GC_RE_RUN_GAP = 1000 * 5;\n\n private cachedGcPrefs: GC_PREFERENCES = GC_DEFAULTS;\n\n private cachedGcPrefsStamp = '';\n\n private debugLog = (...args: any) => {\n if (GarbageCollect.ENABLE_DEBUG_LOGGING) {\n console.debug('GC', ...args); // eslint-disable-line no-console\n }\n };\n\n /**\n * Time the GC last ran\n */\n private gcLastRun: number | null = 0;\n\n /**\n * To avoid JSON.parse on the `ui-performance` setting keep a local cache\n */\n private getUiPerfGarbageCollection = (rootState: any) => {\n const uiPerfSetting = rootState.management.types[MANAGEMENT.SETTING]?.list.find((s: any) => s.id === SETTING.UI_PERFORMANCE);\n\n if (!uiPerfSetting || !uiPerfSetting.value) {\n // Could be in the process of logging out\n return undefined;\n }\n const stamp = `${ uiPerfSetting.metadata.generation }-${ uiPerfSetting.metadata.resourceVersion }`;\n\n if (this.cachedGcPrefsStamp !== stamp) {\n this.debugLog(`Updating ${ SETTING.UI_PERFORMANCE } cache`);\n this.cachedGcPrefsStamp = stamp;\n const uiPerfSettingParsed = JSON.parse(uiPerfSetting.value);\n\n this.cachedGcPrefs = uiPerfSettingParsed.garbageCollection;\n }\n\n return this.cachedGcPrefs;\n };\n\n /**\n * The last time a resource was accessed by either find or getters style functions\n */\n private lastAccessedCache: {\n [store: string]: {\n [type: string]: number;\n }\n } = {}\n\n /**\n * Track when a logged in route changes.\n */\n private lastRouteChange = 0;\n\n // ------------- GC Enabled ---------------------\n\n gcEnabledAll(pseudoCtx: any, type: string) {\n return this.gcEnabledForStore(pseudoCtx.state) && this.gcEnabledSetting(pseudoCtx) && this.gcEnabledForType(pseudoCtx, type);\n }\n\n gcEnabledSetting(pseudoCtx: any) {\n const { rootState } = pseudoCtx;\n\n // Don't use a getter... as we'll end up triggering ourselves again\n const uiPerfGarbageCollection = this.getUiPerfGarbageCollection(rootState);\n\n return uiPerfGarbageCollection?.enabled;\n }\n\n gcEnabledForStore(state: any) {\n return state?.config?.supportsGc;\n }\n\n /**\n * Store can require certain types are not GC'd (for example `cluster` and `schema`s, `counts`, etc)\n */\n gcEnabledForType(pseudoCtx: any, type: string) {\n const { getters } = pseudoCtx;\n\n if (!type || getters.gcIgnoreTypes[type]) {\n return false;\n }\n\n return true;\n }\n\n gcEnabledInterval(pseudoCtx: any) {\n const { rootState } = pseudoCtx;\n\n // Don't use a getter... as we'll end up triggering ourselves again\n const uiPerfGarbageCollection = this.getUiPerfGarbageCollection(rootState);\n\n return {\n enabled: uiPerfGarbageCollection?.enabledInterval,\n interval: uiPerfGarbageCollection?.interval || 0\n };\n }\n\n gcEnabledRoute(pseudoCtx: any) {\n const { rootState } = pseudoCtx;\n\n // Don't use a getter... as we'll end up triggering ourselves again\n const uiPerfGarbageCollection = this.getUiPerfGarbageCollection(rootState);\n\n return uiPerfGarbageCollection?.enabledOnNavigate;\n }\n\n // ------------- GC (actual) ---------------------\n\n /**\n * Remove stale resource types from the store and stop watching them for changes\n */\n garbageCollect(ctx: any, ignoreTypes: {[type: string]: boolean} = {}) {\n const now = new Date().getTime();\n\n // Is gc currently running OR has run in the past GC_RE_RUN_GAP return early\n if (this.gcLastRun === null || now - this.gcLastRun < GarbageCollect.GC_RE_RUN_GAP) {\n this.debugLog('Skipping (running or recently run)', this.gcLastRun ? new Date(this.gcLastRun) : 'running');\n\n return;\n }\n\n this.gcLastRun = null;\n const gcd: {[type: string]: number} = {};\n\n try {\n const { getters, rootState, dispatch } = ctx;\n\n if (!rootState.clusterReady) {\n this.debugLog('Skipping (cluster not ready)');\n this.gcLastRun = new Date().getTime();\n\n return ;\n }\n this.debugLog(`------ Started ------`);\n\n const uiPerfGarbageCollection = this.getUiPerfGarbageCollection(rootState);\n\n if (!uiPerfGarbageCollection) {\n return ;\n }\n const maxAge = uiPerfGarbageCollection.ageThreshold * 1000;\n const maxCount = uiPerfGarbageCollection.countThreshold;\n\n this.debugLog(`Max Age: ${ maxAge }. Max Count: ${ maxCount }`);// , 'Cache', this.lastAccessedCache\n\n const store = ctx.state.config.namespace;\n\n // this.debugLog('Cache', this.lastAccessedCache);\n\n Object.entries((this.lastAccessedCache[store] || {})).forEach(([type, lastAccessed]) => {\n if (!lastAccessed) {\n // There's no last accessed time... gc is probably disabled in another way\n this.debugLog(`${ type }: Skipping (no accessed time)`);\n\n return;\n }\n\n if (!this.gcEnabledForType(ctx, type)) {\n // This specific store is telling us to ignore the type (for example `cluster` store will not GC schema's, counts, etc)\n this.debugLog(`${ type }: Skipping (type ignored by store)`);\n\n return;\n }\n\n if (ignoreTypes[type]) {\n // We're going to a place that needs the resource\n this.debugLog(`${ type }: Skipping (navigating to type)`);\n\n return;\n }\n\n if (now - lastAccessed <= maxAge) {\n // The resource was recently accessed\n\n this.debugLog(`${ type }: Skipping (recently accessed)`);\n\n return;\n }\n\n if (this.lastRouteChange !== undefined && this.lastRouteChange < lastAccessed ) {\n // The resource is being used in the current route/page\n this.debugLog(`${ type }: Skipping (used in current route/page)`);\n\n return;\n }\n\n const countFromResource = getters.all(COUNT)[0].counts[type]?.summary.count;\n const currentCount = countFromResource ?? 0;\n\n if (currentCount === undefined || currentCount < maxCount) {\n // There's too few resources, we might as well keep them to avoid a network request when we need them again\n this.debugLog(`${ type }: Skipping (too few of resource)`);\n\n return;\n }\n\n this.debugLog(`${ type }: Removing from store`);\n dispatch('forgetType', type);\n gcd[type] = currentCount;\n });\n\n this.gcLastRun = new Date().getTime();\n } catch (e) {\n this.debugLog(`: Error`, e);\n this.gcLastRun = new Date().getTime();\n }\n\n if (Object.keys(gcd).length > 0) {\n console.info('Garbage Collected Resources', gcd); // eslint-disable-line no-console\n }\n\n this.debugLog(`------ Finished ------`);\n }\n\n // ------------- GC Update local cache ---------------------\n\n /**\n * Update the time that the resource type was accessed\n * This needs to run after any type initialisation (aka registerType)\n */\n gcUpdateLastAccessed(pseudoCtx: any, type: string) {\n if (!this.gcEnabledAll(pseudoCtx, type)) {\n return;\n }\n const store = pseudoCtx.state.config.namespace;\n\n if (!this.lastAccessedCache[store]) {\n this.lastAccessedCache[store] = {};\n }\n\n this.lastAccessedCache[store][type] = new Date().getTime();\n }\n\n /**\n * Update the time the user last changed routes\n */\n gcUpdateRouteChanged() {\n this.lastRouteChange = new Date().getTime();\n }\n\n // ------------- GC reset ---------------------\n\n /**\n * Remove all cached access times for the given store\n */\n gcResetStore(state: any) {\n const store = state.config.namespace;\n\n delete this.lastAccessedCache[store];\n\n this.debugLog('Forgetting Store:', store);\n }\n\n /**\n * Remove cached access time for the given resource type\n */\n gcResetType(state: any, type: string) {\n const store = state.config.namespace;\n\n if (!this.lastAccessedCache[store]) {\n return;\n }\n delete this.lastAccessedCache[store][type];\n\n this.debugLog('Forgetting Type:', store, type);\n }\n}\n\nconst gc = new GarbageCollect();\n\nexport default gc;\n","import merge from 'lodash/merge';\n\nimport { SCHEMA } from '@shell/config/types';\nimport { SPOOFED_API_PREFIX, SPOOFED_PREFIX } from '@shell/store/type-map';\nimport { createYaml } from '@shell/utils/create-yaml';\nimport { classify } from '@shell/plugins/dashboard-store/classify';\nimport { normalizeType } from './normalize';\nimport garbageCollect from '@shell/utils/gc/gc';\nimport { addSchemaIndexFields } from '@shell/plugins/steve/schema.utils';\nimport { addParam } from '@shell/utils/url';\n\nexport const _ALL = 'all';\nexport const _MERGE = 'merge';\nexport const _MULTI = 'multi';\nexport const _ALL_IF_AUTHED = 'allIfAuthed';\nexport const _NONE = 'none';\n\nconst SCHEMA_CHECK_RETRIES = 15;\nconst HAVE_ALL_CHECK_RETRIES = 15;\nconst RETRY_LOG = 10;\n\nexport async function handleSpoofedRequest(rootGetters, schemaStore, opt, product) {\n // Handle spoofed types instead of making an actual request\n // Spoofing is handled here to ensure it's done for both yaml and form editing.\n // It became apparent that this was the only place that both intersected\n if (opt.url.includes(SPOOFED_PREFIX) || opt.url.includes(SPOOFED_API_PREFIX)) {\n const [empty, scheme, type, ...rest] = opt.url.split('/'); // eslint-disable-line no-unused-vars\n const id = rest.join('/'); // Cover case where id contains '/'\n const isApi = scheme === SPOOFED_API_PREFIX;\n const typemapGetter = id ? 'getSpoofedInstance' : 'getSpoofedInstances';\n\n const schemas = rootGetters[`${ schemaStore }/all`](SCHEMA);\n // getters return async getSpoofedInstance/getSpoofedInstances fn\n const instance = await rootGetters[`type-map/${ typemapGetter }`](type, product, id);\n const data = isApi ? createYaml(schemas, type, instance) : instance;\n\n return id && !isApi ? data : { data };\n }\n}\n\nexport async function loadSchemas(ctx, watch = true) {\n const {\n getters, dispatch, commit, rootGetters\n } = ctx;\n const res = await dispatch('findAll', { type: SCHEMA, opt: { url: 'schemas', load: false } });\n const spoofedTypes = rootGetters['type-map/allSpoofedSchemas'] ;\n\n if (Array.isArray(res.data)) {\n res.data = res.data.concat(spoofedTypes);\n } else if (Array.isArray(res)) {\n res.data = res.concat(spoofedTypes);\n }\n\n res.data.forEach(addSchemaIndexFields);\n\n commit('loadAll', {\n ctx,\n type: SCHEMA,\n data: res.data,\n revision: res.revision\n });\n\n if ( watch !== false ) {\n dispatch('watch', {\n type: SCHEMA,\n revision: res.revision\n });\n }\n\n const all = getters.all(SCHEMA);\n\n return all;\n}\n\nconst findAllGetter = (getters, type, opt) => {\n return opt.namespaced ? getters.matching(type, null, opt.namespaced, { skipSelector: true }) : getters.all(type);\n};\n\nexport default {\n request() {\n throw new Error('Not Implemented');\n },\n\n loadSchemas,\n\n // Load a page of data for a given type\n // Used for incremental loading when enabled\n async loadDataPage(ctx, { type, opt }) {\n const { getters, commit, dispatch } = ctx;\n\n type = getters.normalizeType(type);\n\n // if there's no registered type, then register it so\n // that we don't have issues on 'loadAdd' mutation\n if ( !getters.typeRegistered(type) ) {\n commit('registerType', type);\n }\n\n const loadCount = getters['loadCounter'](type);\n\n try {\n const res = await dispatch('request', { opt, type });\n\n const newLoadCount = getters['loadCounter'](type);\n\n // Load count changed, so we changed page or started a new load\n // after this page load was started, so don't continue with incremental load\n if (loadCount !== newLoadCount) {\n return;\n }\n\n commit('loadAdd', {\n ctx,\n type,\n data: res.data,\n });\n\n if (res.pagination?.next) {\n dispatch('loadDataPage', {\n type,\n opt: {\n ...opt,\n url: res.pagination?.next\n }\n });\n } else {\n // We have everything!\n if (opt.hasManualRefresh) {\n dispatch('resource-fetch/updateManualRefreshIsLoading', false, { root: true });\n }\n if (opt.namespaced) {\n commit('setHaveNamespace', { type, namespace: opt.namespaced });\n } else {\n commit('setHaveAll', { type });\n }\n }\n } catch (e) {\n if (opt.hasManualRefresh) {\n dispatch('resource-fetch/updateManualRefreshIsLoading', false, { root: true });\n }\n\n return Promise.reject(e);\n }\n },\n\n async findAll(ctx, { type, opt }) {\n const {\n getters, commit, dispatch, rootGetters\n } = ctx;\n\n opt = opt || {};\n type = getters.normalizeType(type);\n\n if ( !getters.typeRegistered(type) ) {\n commit('registerType', type);\n }\n\n // No need to request the resources if we have them already\n if ( opt.force !== true && (getters['haveAll'](type) || getters['haveAllNamespace'](type, opt.namespaced))) {\n const args = {\n type,\n revision: '',\n // watchNamespace - used sometimes when we haven't fetched the results of a single namespace\n // namespaced - used when we have fetched the result of a single namespace (see https://github.com/rancher/dashboard/pull/7329/files)\n namespace: opt.watchNamespace || opt.namespaced\n };\n\n if (opt.watch !== false ) {\n dispatch('watch', args);\n }\n\n return findAllGetter(getters, type, opt);\n }\n\n let load = (opt.load === undefined ? _ALL : opt.load);\n\n if ( opt.load === false || opt.load === _NONE ) {\n load = _NONE;\n } else if ( opt.load === _ALL_IF_AUTHED ) {\n const header = rootGetters['auth/fromHeader'];\n\n if ( `${ header }` === 'true' || `${ header }` === 'none' ) {\n load = _ALL;\n } else {\n load = _MULTI;\n }\n }\n\n const typeOptions = rootGetters['type-map/optionsFor'](type);\n\n console.log(`Find All: [${ ctx.state.config.namespace }] ${ type }`); // eslint-disable-line no-console\n opt = opt || {};\n opt.url = getters.urlFor(type, null, opt);\n opt.stream = opt.stream !== false && load !== _NONE;\n opt.depaginate = typeOptions?.depaginate;\n\n let skipHaveAll = false;\n\n // if it's incremental loading, we do two parallel requests\n // on for a limit of 100, to quickly show data\n // another one with 1st page of the subset of the resource we are fetching\n // the default is 4 pages, but it can be changed on mixin/resource-fetch.js\n if (opt.incremental) {\n commit('incrementLoadCounter', type);\n\n if (opt.hasManualRefresh) {\n dispatch('resource-fetch/updateManualRefreshIsLoading', true, { root: true });\n }\n\n const pageFetchOpts = {\n ...opt,\n url: addParam(opt.url, 'limit', `${ opt.incremental }`),\n };\n\n // this is where we \"hijack\" the limit for the dispatch('request') some lines below\n // and therefore have 2 initial requests in parallel\n opt.url = addParam(opt.url, 'limit', '100');\n skipHaveAll = true;\n\n // since we are forcing a request, clear the haveAll\n // needed for the resource-fetch mixin, otherwise the incremental indicator\n // won't pop-up again when manual refreshing\n if (opt.force) {\n commit('forgetType', type);\n }\n\n dispatch('loadDataPage', { type, opt: pageFetchOpts });\n }\n\n let streamStarted = false;\n let out;\n\n let queue = [];\n let streamCollection;\n\n opt.onData = function(data) {\n if ( streamStarted ) {\n // Batch loads into groups of 10 to reduce vuex overhead\n queue.push(data);\n\n if ( queue.length > 10 ) {\n const tmp = queue;\n\n queue = [];\n commit('loadMulti', { ctx, data: tmp });\n }\n } else {\n // The first line is the collection object (sans `data`)\n commit('forgetAll', { type });\n streamStarted = true;\n streamCollection = data;\n }\n };\n\n try {\n if (!opt.incremental && opt.hasManualRefresh) {\n dispatch('resource-fetch/updateManualRefreshIsLoading', true, { root: true });\n }\n\n const res = await dispatch('request', { opt, type });\n\n if ( streamStarted ) {\n // Flush any remaining entries left over that didn't get loaded by onData\n if ( queue.length ) {\n commit('loadMulti', { ctx, data: queue });\n queue = [];\n }\n commit('loadedAll', { type });\n const all = getters.all(type);\n\n res.finishDeferred(all);\n out = streamCollection;\n } else {\n out = res;\n }\n } catch (e) {\n if (!opt.incremental && opt.hasManualRefresh) {\n dispatch('resource-fetch/updateManualRefreshIsLoading', false, { root: true });\n }\n\n return Promise.reject(e);\n }\n\n if ( load === _NONE ) {\n if (!opt.incremental && opt.hasManualRefresh) {\n dispatch('resource-fetch/updateManualRefreshIsLoading', false, { root: true });\n }\n\n return out;\n } else if ( out.data ) {\n if ( load === _MULTI ) {\n // This has the effect of adding the response to the store,\n // without replacing all the existing content for that type,\n // and without marking that type as having 'all 'loaded.\n //\n // This is used e.g. to load a partial list of settings before login\n // while still knowing we need to load the full list later.\n commit('loadMulti', {\n ctx,\n data: out.data\n });\n } else if (load === _MERGE) {\n // This is like loadMulti (updates existing entries) but also removes entries that no longer exist\n // This allows changes to existing resources to be reflected in place in the UI\n // (normally not needed as Rancher updates come over socket and are handled individually)\n commit('loadMerge', {\n ctx,\n type,\n data: out.data,\n existing: true\n });\n } else {\n commit('loadAll', {\n ctx,\n type,\n data: out.data,\n revision: out.revision,\n skipHaveAll,\n namespace: opt.namespaced\n });\n }\n }\n\n // ToDo: SM if we start a \"bigger\" watch (such as watch without a namespace vs a watch with a namespace), we should stop the stop the \"smaller\" watch so we don't have duplicate events coming back\n if ( opt.watch !== false ) {\n const args = {\n type,\n revision: out.revision,\n namespace: opt.watchNamespace || opt.namespaced, // it could be either apparently\n // ToDo: SM namespaced is sometimes a boolean and sometimes a string, I don't see it as especially broken but we should refactor that in the future\n force: opt.forceWatch === true,\n };\n\n dispatch('watch', args);\n }\n\n const all = findAllGetter(getters, type, opt);\n\n if (!opt.incremental && opt.hasManualRefresh) {\n dispatch('resource-fetch/updateManualRefreshIsLoading', false, { root: true });\n }\n\n garbageCollect.gcUpdateLastAccessed(ctx, type);\n\n return all;\n },\n\n async findMatching(ctx, {\n type,\n selector,\n opt,\n namespace\n }) {\n const {\n getters, commit, dispatch, rootGetters\n } = ctx;\n\n opt = opt || {};\n console.log(`Find Matching: [${ ctx.state.config.namespace }] ${ type }`, selector); // eslint-disable-line no-console\n type = getters.normalizeType(type);\n\n if ( !getters.typeRegistered(type) ) {\n commit('registerType', type);\n }\n if ( opt.force !== true && getters['haveSelector'](type, selector) ) {\n return getters.matching( type, selector, namespace );\n }\n\n const typeOptions = rootGetters['type-map/optionsFor'](type);\n\n opt = opt || {};\n opt.labelSelector = selector;\n opt.url = getters.urlFor(type, null, opt);\n opt.depaginate = typeOptions?.depaginate;\n\n const res = await dispatch('request', { opt, type });\n\n if ( opt.load === false ) {\n return res.data;\n }\n\n commit('loadSelector', {\n ctx,\n type,\n entries: res.data,\n selector,\n revision: res.revision,\n });\n\n if ( opt.watch !== false ) {\n dispatch('watch', {\n type,\n selector,\n revision: res.revision,\n force: opt.forceWatch === true,\n });\n }\n\n garbageCollect.gcUpdateLastAccessed(ctx, type);\n\n return getters.matching( type, selector, namespace );\n },\n\n // opt:\n // filter: Filter by fields, e.g. {field: value, anotherField: anotherValue} (default: none)\n // limit: Number of records to return per page (default: 1000)\n // sortBy: Sort by field\n // sortOrder: asc or desc\n // url: Use this specific URL instead of looking up the URL for the type/id. This should only be used for bootstrapping schemas on startup.\n // @TODO depaginate: If the response is paginated, retrieve all the pages. (default: true)\n async find(ctx, { type, id, opt }) {\n if (!id) {\n console.error('Attempting to find a resource with no id', type, id); // eslint-disable-line no-console\n\n return;\n }\n\n const { getters, dispatch } = ctx;\n\n opt = opt || {};\n\n type = normalizeType(type);\n\n console.log(`Find: [${ ctx.state.config.namespace }] ${ type } ${ id }`); // eslint-disable-line no-console\n let out;\n\n if ( opt.force !== true ) {\n out = getters.byId(type, id);\n\n if ( out ) {\n return out;\n }\n }\n\n opt = opt || {};\n opt.url = getters.urlFor(type, id, opt);\n\n const res = await dispatch('request', { opt, type });\n\n await dispatch('load', { data: res });\n\n if ( opt.watch !== false ) {\n const watchMsg = {\n type,\n id,\n revision: res?.metadata?.resourceVersion,\n force: opt.forceWatch === true,\n };\n\n const idx = id.indexOf('/');\n\n if ( idx > 0 ) {\n watchMsg.namespace = id.substr(0, idx);\n watchMsg.id = id.substr(idx + 1);\n }\n\n dispatch('watch', watchMsg);\n }\n\n out = getters.byId(type, id);\n\n garbageCollect.gcUpdateLastAccessed(ctx, type);\n\n return out;\n },\n\n load(ctx, { data, existing }) {\n const { getters, commit } = ctx;\n\n let type = normalizeType(data.type);\n\n if ( !getters.typeRegistered(type) ) {\n commit('registerType', type);\n }\n\n if ( data.baseType && data.baseType !== data.type ) {\n type = normalizeType(data.baseType);\n\n if ( !getters.typeRegistered(type) ) {\n commit('registerType', type);\n }\n }\n // Inject special fields for indexing schemas\n if ( type === SCHEMA ) {\n addSchemaIndexFields(data);\n }\n\n const keyField = getters.keyFieldForType(type);\n const id = data?.[keyField] || existing?.[keyField];\n\n if ( !id ) {\n console.warn('Attempting to load a resource with no id', data, existing); // eslint-disable-line no-console\n\n return;\n }\n\n commit('load', {\n ctx,\n data,\n existing\n });\n\n if ( type === SCHEMA ) {\n commit('type-map/schemaChanged', null, { root: true });\n }\n\n return getters['byId'](type, id);\n },\n\n loadMulti(ctx, data) {\n const { commit } = ctx;\n\n commit('loadMulti', {\n data,\n ctx,\n });\n },\n\n batchChanges(ctx, batch) {\n const { commit } = ctx;\n\n commit('batchChanges', {\n ctx,\n batch\n });\n },\n\n loadAll(ctx, { type, data }) {\n const { commit } = ctx;\n\n commit('loadAll', {\n ctx,\n type,\n data\n });\n },\n\n create(ctx, data) {\n return classify(ctx, data);\n },\n\n createMany(ctx, data) {\n return data.map((d) => classify(ctx, d));\n },\n\n createPopulated(ctx, userData) {\n const data = ctx.getters['defaultFor'](userData.type);\n\n merge(data, userData);\n\n return classify(ctx, data);\n },\n\n clone(ctx, { resource } = {}) {\n return classify(ctx, resource.toJSON(), true);\n },\n\n // Forget a type in the store\n // Remove all entries for that type and stop watching it\n forgetType({ commit, dispatch, state }, type) {\n state.started\n .filter((entry) => entry.type === type)\n .forEach((entry) => dispatch('unwatch', entry));\n\n commit('forgetType', type);\n },\n\n promptRemove({ commit, state }, resources ) {\n commit('action-menu/togglePromptRemove', resources, { root: true });\n },\n\n promptModal({ commit, state }, data ) {\n commit('action-menu/togglePromptModal', data, { root: true });\n },\n\n resourceAction({ getters, dispatch }, {\n resource, actionName, body, opt,\n }) {\n throw new Error('Not Implemented');\n },\n\n collectionAction({ getters, dispatch }, {\n type, actionName, body, opt\n }) {\n throw new Error('Not Implemented');\n },\n\n cleanForNew(ctx, resource) {\n throw new Error('Not Implemented');\n },\n\n createNamespace(ctx, resource) {\n throw new Error('Not Implemented');\n },\n\n cleanForDiff(ctx, resource) {\n throw new Error('Not Implemented');\n },\n\n // Clean a resource for the ResourceDetail page\n // This can ensure common, required properties exists that might have been removed\n cleanForDetail(ctx, resource) {\n return resource;\n },\n\n cleanForDownload(ctx, resource) {\n return resource;\n },\n\n // Wait for a schema that is expected to exist that may not have been loaded yet (for instance when loadCluster is still running).\n async waitForSchema({ getters, dispatch }, { type }) {\n let tries = SCHEMA_CHECK_RETRIES;\n let schema = null;\n\n while (!schema && tries > 0) {\n schema = getters['schemaFor'](type);\n\n if (!schema) {\n if (tries === RETRY_LOG) {\n console.warn(`Schema for ${ type } not available... retrying...`); // eslint-disable-line no-console\n }\n await new Promise((resolve) => setTimeout(resolve, 1000));\n tries--;\n }\n }\n\n if (tries === 0) {\n // Ran out of tries - fetch the schemas again\n console.warn(`Schema for ${ type } still unavailable... loading schemas again...`); // eslint-disable-line no-console\n await dispatch('loadSchemas', true);\n }\n },\n\n async waitForHaveAll({ getters }, { type, throwError = false, attempts = HAVE_ALL_CHECK_RETRIES }) {\n let tries = attempts;\n let haveAll = null;\n\n while (!haveAll && tries > 0) {\n haveAll = getters['haveAll'](type);\n\n if (!haveAll) {\n if (tries === RETRY_LOG) {\n console.warn(`wait for all of ${ type } continuing...`); // eslint-disable-line no-console\n }\n await new Promise((resolve) => setTimeout(resolve, 1000));\n tries--;\n }\n }\n\n if (tries === 0 && throwError) {\n throw new Error(`Failed to wait for all of ${ type }`);\n }\n },\n\n incrementLoadCounter({ commit }, resource) {\n commit('incrementLoadCounter', resource);\n },\n\n garbageCollect(ctx, ignoreTypes) {\n return garbageCollect.garbageCollect(ctx, ignoreTypes);\n },\n\n gcResetStore({ state }) {\n garbageCollect.gcResetStore(state);\n }\n};\n","import { SETTING } from '@shell/config/settings';\nimport { MANAGEMENT } from '@shell/config/types';\n\nlet favIconSet = false;\n\nexport function haveSetFavIcon() {\n return favIconSet;\n}\n\nexport function setFavIcon(store) {\n const res = store.getters['management/byId'](MANAGEMENT.SETTING, SETTING.FAVICON);\n const brandSetting = store.getters['management/byId'](MANAGEMENT.SETTING, SETTING.BRAND);\n const link = findIconLink(document.head.getElementsByTagName('link'));\n\n if (link) {\n let brandImage;\n\n if (brandSetting?.value === 'suse') {\n brandImage = require('~shell/assets/brand/suse/favicon.png');\n } else if (brandSetting?.value === 'csp') {\n brandImage = require('~shell/assets/brand/csp/favicon.png');\n }\n\n link.href = res?.value || brandImage || defaultFavIcon;\n favIconSet = true;\n }\n}\n\nfunction getCurrentFavIcon() {\n const link = findIconLink(document.head.getElementsByTagName('link'));\n\n return link ? link.href : '';\n}\n\nfunction findIconLink(links) {\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n\n if (link.rel?.includes('icon')) {\n return link;\n }\n }\n\n return undefined;\n}\n\nconst defaultFavIcon = getCurrentFavIcon();\n","\n/**\n * Some plugins won't be bundled with the dashboard build but loaded on demand at run time.\n * This file allows 'manager' style plugins to defined how to determine if a unknown route\n * belongs to one of their associated plugins and how that plugin can be loaded\n */\nclass DynamicPluginLoader {\n dynamicPluginLoaders = [];\n\n register(reg) {\n this.dynamicPluginLoaders.push(reg);\n }\n\n async check({ route, store }) {\n for (const dpl of this.dynamicPluginLoaders) {\n // Check that the route is valid and then load the plugin associated with it\n const res = await dpl.load({ route, store });\n\n if (res) {\n return res;\n }\n }\n }\n}\n\nconst dynamicPluginLoader = new DynamicPluginLoader();\n\nexport default dynamicPluginLoader;\n","import { REDIRECTED } from '@shell/config/cookies';\nimport { NAME as EXPLORER } from '@shell/config/product/explorer';\nimport {\n SETUP, TIMED_OUT, UPGRADED, _FLAGGED, _UNFLAG\n} from '@shell/config/query-params';\nimport { SETTING } from '@shell/config/settings';\nimport { MANAGEMENT, NORMAN, DEFAULT_WORKSPACE } from '@shell/config/types';\nimport { _ALL_IF_AUTHED } from '@shell/plugins/dashboard-store/actions';\nimport { applyProducts } from '@shell/store/type-map';\nimport { findBy } from '@shell/utils/array';\nimport { ClusterNotFoundError, RedirectToError } from '@shell/utils/error';\nimport { get } from '@shell/utils/object';\nimport { setFavIcon, haveSetFavIcon } from '@shell/utils/favicon';\nimport dynamicPluginLoader from '@shell/pkg/dynamic-plugin-loader';\nimport { AFTER_LOGIN_ROUTE, WORKSPACE } from '@shell/store/prefs';\nimport { BACK_TO } from '@shell/config/local-storage';\nimport { NAME as FLEET_NAME } from '@shell/config/product/fleet.js';\nimport { canViewResource } from '@shell/utils/auth';\n\nconst getPackageFromRoute = (route) => {\n if (!route?.meta) {\n return;\n }\n // Sometimes meta is an array... sometimes not\n const arraySafe = Array.isArray(route.meta) ? route.meta : [route.meta];\n\n return arraySafe.find((m) => !!m.pkg)?.pkg;\n};\n\nconst getResourceFromRoute = (to) => {\n let resource = to.params?.resource;\n\n if (!resource) {\n resource = findMeta(to, 'resource');\n }\n\n return resource;\n};\n\nlet beforeEachSetup = false;\n\nfunction findMeta(route, key) {\n if (route?.meta) {\n const meta = Array.isArray(route.meta) ? route.meta : [route.meta];\n\n for (let i = 0; i < meta.length; i++) {\n if (meta[i][key]) {\n return meta[i][key];\n }\n }\n }\n\n return undefined;\n}\n\nexport function getClusterFromRoute(to) {\n let cluster = to.params?.cluster;\n\n if (!cluster) {\n cluster = findMeta(to, 'cluster');\n }\n\n return cluster;\n}\n\nexport function getProductFromRoute(to) {\n let product = to.params?.product;\n\n if ( !product ) {\n const match = to.name?.match(/^c-cluster-([^-]+)/);\n\n if ( match ) {\n product = match[1];\n }\n }\n\n // If still no product, see if the route indicates the product via route metadata\n if (!product) {\n product = findMeta(to, 'product');\n }\n\n return product;\n}\n\nfunction setProduct(store, to, redirect) {\n let product = getProductFromRoute(to);\n\n // since all products are hardcoded as routes (ex: c-local-explorer), if we match the wildcard route it means that the product does not exist\n if ((product && (!to.matched.length || (to.matched.length && to.matched[0].path === '/c/:cluster/:product'))) ||\n // if the product grabbed from the route is not registered, then we don't have it!\n (product && !store.getters['type-map/isProductRegistered'](product))) {\n store.dispatch('loadingError', new Error(store.getters['i18n/t']('nav.failWhale.productNotFound', { productNotFound: product }, true)));\n\n return () => redirect(302, '/fail-whale');\n }\n\n if ( !product ) {\n product = EXPLORER;\n }\n\n const oldProduct = store.getters['productId'];\n const oldStore = store.getters['currentProduct']?.inStore;\n\n if ( product !== oldProduct ) {\n store.commit('setProduct', product);\n }\n\n const neuStore = store.getters['currentProduct']?.inStore;\n\n if ( neuStore !== oldStore ) {\n // If the product store changes, clear the catalog.\n // There might be management catalog items in it vs cluster.\n store.commit('catalog/reset');\n }\n\n return false;\n}\n\n/**\n * Check that the resource is valid, if not redirect to fail whale\n *\n * This requires that\n * - product is set\n * - product's store is set and setup (so we can check schema's within it)\n * - product's store has the schemaFor getter (extension stores might not have it)\n * - there's a resource associated with route (meta or param)\n */\nfunction invalidResource(store, to, redirect) {\n const product = store.getters['currentProduct'];\n const resource = getResourceFromRoute(to);\n\n // In order to check a resource is valid we need these\n if (!product || !resource) {\n return false;\n }\n\n if (canViewResource(store, resource)) {\n return false;\n }\n\n // Unknown resource, redirect to fail whale\n\n store.dispatch('loadingError', new Error(store.getters['i18n/t']('nav.failWhale.resourceNotFound', { resource }, true)));\n\n return () => redirect(302, '/fail-whale');\n}\n\nexport default async function({\n route, app, store, redirect, $cookies, req, isDev, from, $plugin, next\n}) {\n if ( route.path && typeof route.path === 'string') {\n // Ignore webpack hot module reload requests\n if ( route.path.startsWith('/__webpack_hmr/') ) {\n return;\n }\n\n // Ignore the error page\n if ( route.path.startsWith('/fail-whale') ) {\n return;\n }\n }\n\n // This tells Ember not to redirect back to us once you've already been to dashboard once.\n if ( !$cookies.get(REDIRECTED) ) {\n $cookies.set(REDIRECTED, 'true', {\n path: '/',\n sameSite: true,\n secure: true,\n });\n }\n\n const upgraded = route.query[UPGRADED] === _FLAGGED;\n\n if ( upgraded ) {\n app.router.applyQuery({ [UPGRADED]: _UNFLAG });\n\n store.dispatch('growl/success', {\n title: store.getters['i18n/t']('serverUpgrade.title'),\n message: store.getters['i18n/t']('serverUpgrade.message'),\n timeout: 0,\n });\n }\n\n // Initial ?setup=admin-password can technically be on any route\n let initialPass = route.query[SETUP];\n let firstLogin = null;\n\n try {\n // Load settings, which will either be just the public ones if not logged in, or all if you are\n await store.dispatch('management/findAll', {\n type: MANAGEMENT.SETTING,\n opt: {\n load: _ALL_IF_AUTHED, url: `/v1/${ MANAGEMENT.SETTING }`, redirectUnauthorized: false\n }\n });\n\n // Set the favicon - use custom one from store if set\n if (!haveSetFavIcon()) {\n setFavIcon(store);\n }\n\n const res = store.getters['management/byId'](MANAGEMENT.SETTING, SETTING.FIRST_LOGIN);\n const plSetting = store.getters['management/byId'](MANAGEMENT.SETTING, SETTING.PL);\n\n firstLogin = res?.value === 'true';\n\n if (!initialPass && plSetting?.value === 'Harvester') {\n initialPass = 'admin';\n }\n } catch (e) {\n }\n\n if ( firstLogin === null ) {\n try {\n const res = await store.dispatch('rancher/find', {\n type: 'setting',\n id: SETTING.FIRST_LOGIN,\n opt: { url: `/v3/settings/${ SETTING.FIRST_LOGIN }` }\n });\n\n firstLogin = res?.value === 'true';\n\n const plSetting = await store.dispatch('rancher/find', {\n type: 'setting',\n id: SETTING.PL,\n opt: { url: `/v3/settings/${ SETTING.PL }` }\n });\n\n if (!initialPass && plSetting?.value === 'Harvester') {\n initialPass = 'admin';\n }\n } catch (e) {\n }\n }\n\n // TODO show error if firstLogin and default pass doesn't work\n if ( firstLogin ) {\n const ok = await tryInitialSetup(store, initialPass);\n\n if (ok) {\n if (initialPass) {\n store.dispatch('auth/setInitialPass', initialPass);\n }\n\n return redirect({ name: 'auth-setup' });\n } else {\n return redirect({ name: 'auth-login' });\n }\n }\n\n // Make sure you're actually logged in\n function isLoggedIn(me) {\n store.commit('auth/hasAuth', true);\n store.commit('auth/loggedInAs', me.id);\n }\n\n function notLoggedIn() {\n store.commit('auth/hasAuth', true);\n\n if ( route.name === 'index' ) {\n return redirect(302, '/auth/login');\n } else {\n return redirect(302, `/auth/login?${ TIMED_OUT }`);\n }\n }\n\n function noAuth() {\n store.commit('auth/hasAuth', false);\n }\n\n if ( store.getters['auth/enabled'] !== false && !store.getters['auth/loggedIn'] ) {\n // `await` so we have one successfully request whilst possibly logged in (ensures fromHeader is populated from `x-api-cattle-auth`)\n await store.dispatch('auth/getUser');\n\n const v3User = store.getters['auth/v3User'] || {};\n\n if (v3User?.mustChangePassword) {\n return redirect({ name: 'auth-setup' });\n }\n\n // In newer versions the API calls return the auth state instead of having to make a new call all the time.\n const fromHeader = store.getters['auth/fromHeader'];\n\n if ( fromHeader === 'none' ) {\n noAuth();\n } else if ( fromHeader === 'true' ) {\n const me = await findMe(store);\n\n isLoggedIn(me);\n } else if ( fromHeader === 'false' ) {\n notLoggedIn();\n } else {\n // Older versions look at principals and see what happens\n try {\n const me = await findMe(store);\n\n isLoggedIn(me);\n } catch (e) {\n const status = e?._status;\n\n if ( status === 404 ) {\n noAuth();\n } else {\n if ( status === 401 ) {\n notLoggedIn();\n } else {\n store.commit('setError', { error: e, locationError: new Error('Auth Middleware') });\n }\n\n return;\n }\n }\n }\n\n store.dispatch('gcStartIntervals');\n }\n\n const backTo = window.localStorage.getItem(BACK_TO);\n\n if (backTo) {\n window.localStorage.removeItem(BACK_TO);\n\n window.location.href = backTo;\n }\n\n // GC should be notified of route change before any find/get request is made that might be used for that page\n store.dispatch('gcRouteChanged', route);\n\n // Load stuff\n let localCheckResource = false;\n\n await applyProducts(store, $plugin);\n\n // Setup a beforeEach hook once to keep track of the current product\n if ( !beforeEachSetup ) {\n beforeEachSetup = true;\n // This only needs to happen when beforeEach hook hasn't run (the initial load)\n localCheckResource = true;\n\n store.app.router.beforeEach((to, from, next) => {\n // NOTE - This beforeEach runs AFTER this middleware. So anything in this middleware that requires it must set it manually\n let redirected = setProduct(store, to, redirect);\n\n if (redirected) {\n return redirected();\n }\n\n redirected = invalidResource(store, to, redirect);\n\n if (redirected) {\n return redirected();\n }\n\n next();\n });\n\n // Call it for the initial pageload\n const redirected = setProduct(store, route, redirect);\n\n if (redirected) {\n return redirected();\n }\n\n store.app.router.afterEach((to, from) => {\n // Clear state used to record if back button was used for navigation\n setTimeout(() => {\n window._popStateDetected = false;\n }, 1);\n });\n }\n\n try {\n let clusterId = get(route, 'params.cluster');\n\n // Route can provide cluster ID via metadata\n if (!clusterId && route) {\n clusterId = getClusterFromRoute(route);\n }\n\n const pkg = getPackageFromRoute(route);\n const product = getProductFromRoute(route);\n\n const oldPkg = getPackageFromRoute(from);\n const oldProduct = getProductFromRoute(from);\n\n // Leave an old pkg where we weren't before?\n const oldPkgPlugin = oldPkg ? Object.values($plugin.getPlugins()).find((p) => p.name === oldPkg) : null;\n\n if (oldPkg && oldPkg !== pkg ) {\n // Execute anything optional the plugin wants to. For example resetting it's store to remove data\n await oldPkgPlugin.onLeave(store, {\n clusterId,\n product,\n oldProduct,\n oldIsExt: !!oldPkg\n });\n }\n\n // Sometimes this needs to happen before or alongside other things... but is always needed\n const always = [\n store.dispatch('loadManagement')\n ];\n\n // Entering a new package where we weren't before?\n const newPkgPlugin = pkg ? Object.values($plugin.getPlugins()).find((p) => p.name === pkg) : null;\n\n // Note - We can't block on oldPkg !== newPkg because on a fresh load the `from` route equals the `to` route\n if (pkg && (oldPkg !== pkg || from.fullPath === route.fullPath)) {\n // Execute mandatory store actions\n await Promise.all(always);\n\n // Execute anything optional the plugin wants to\n await newPkgPlugin.onEnter(store, {\n clusterId,\n product,\n oldProduct,\n oldIsExt: !!oldPkg\n });\n }\n\n if (!route.matched?.length) {\n // If there are no matching routes we could be trying to nav to a page belonging to a dynamic plugin which needs loading\n await Promise.all([\n ...always,\n ]);\n\n // If a plugin claims the route and is loaded correctly we'll get a route back\n const newLocation = await dynamicPluginLoader.check({ route, store });\n\n // If we have a new location, double check that it's actually valid\n const resolvedRoute = newLocation ? store.app.router.resolve(newLocation) : null;\n\n if (resolvedRoute?.route.matched.length) {\n // Note - don't use `redirect` or `store.app.route` (breaks feature by failing to run middleware in default layout)\n return next(newLocation);\n }\n }\n\n // Ensure that the activeNamespaceCache is updated given the change of context either from or to a place where it uses workspaces\n // When fleet moves to it's own package this should be moved to pkg onEnter/onLeave\n if ((oldProduct === FLEET_NAME || product === FLEET_NAME) && oldProduct !== product) {\n // See note above for store.app.router.beforeEach, need to setProduct manually, for the moment do this in a targeted way\n const redirected = setProduct(store, route, redirect);\n\n if (redirected) {\n return redirected();\n }\n\n store.commit('updateWorkspace', {\n value: store.getters['prefs/get'](WORKSPACE) || DEFAULT_WORKSPACE,\n getters: store.getters\n });\n }\n\n // Always run loadCluster, it handles 'unload' as well\n // Run them in parallel\n await Promise.all([\n ...always,\n store.dispatch('loadCluster', {\n id: clusterId,\n oldPkg: oldPkgPlugin,\n newPkg: newPkgPlugin,\n product,\n oldProduct,\n targetRoute: route\n })\n ]);\n\n if (localCheckResource) {\n const redirected = invalidResource(store, route, redirect);\n\n if (redirected) {\n return redirected();\n }\n }\n\n if (!clusterId) {\n clusterId = store.getters['defaultClusterId']; // This needs the cluster list, so no parallel\n const isSingleProduct = store.getters['isSingleProduct'];\n\n if (isSingleProduct?.afterLoginRoute) {\n const value = {\n name: 'c-cluster-product',\n ...isSingleProduct.afterLoginRoute,\n params: {\n cluster: clusterId,\n ...isSingleProduct.afterLoginRoute?.params\n },\n };\n\n await store.dispatch('prefs/set', {\n key: AFTER_LOGIN_ROUTE,\n value,\n });\n }\n }\n } catch (e) {\n if ( e.name === ClusterNotFoundError.name ) {\n return redirect(302, '/home');\n } if ( e.name === RedirectToError.name ) {\n return redirect(302, e.url);\n } else {\n // Sets error 500 if lost connection to API\n store.commit('setError', { error: e, locationError: new Error(store.getters['i18n/t']('nav.failWhale.authMiddleware')) });\n\n return redirect(302, '/fail-whale');\n }\n }\n}\n\nasync function findMe(store) {\n // First thing we do in loadManagement is fetch principals anyway.... so don't ?me=true here\n const principals = await store.dispatch('rancher/findAll', {\n type: NORMAN.PRINCIPAL,\n opt: {\n url: '/v3/principals',\n redirectUnauthorized: false,\n }\n });\n\n const me = findBy(principals, 'me', true);\n\n return me;\n}\n\nasync function tryInitialSetup(store, password = 'admin') {\n try {\n const res = await store.dispatch('auth/login', {\n provider: 'local',\n body: {\n username: 'admin',\n password\n },\n });\n\n return res._status === 200;\n } catch (e) {\n console.error('Error trying initial setup', e); // eslint-disable-line no-console\n\n return false;\n }\n}\n","import { ActionLocation, CardLocation, ExtensionPoint } from '@shell/core/types';\nimport { isMac } from '@shell/utils/platform';\nimport { ucFirst, randomStr } from '@shell/utils/string';\nimport {\n _EDIT, _CONFIG, _DETAIL, _LIST, _CREATE\n} from '@shell/config/query-params';\nimport { getProductFromRoute } from '@shell/middleware/authenticated';\nimport { isEqual } from '@shell/utils/object';\n\nfunction checkRouteProduct($route, locationConfigParam) {\n const product = getProductFromRoute($route);\n\n // alias for the homepage\n if (locationConfigParam === 'home' && $route.name === 'home') {\n return true;\n } else if (locationConfigParam === product) {\n return true;\n }\n\n return false;\n}\n\nfunction checkRouteMode({ name, query }, locationConfigParam) {\n if (locationConfigParam === _EDIT && query.mode && query.mode === _EDIT && !query.as) {\n return true;\n } else if (locationConfigParam === _CONFIG && query.as && query.as === _CONFIG) {\n return true;\n } else if (locationConfigParam === _DETAIL && !query.as && name.includes('-id') && (!query.mode || query?.mode !== _EDIT)) {\n return true;\n // alias to target all list views\n } else if (locationConfigParam === _LIST && !name.includes('-id') && name.includes('-resource')) {\n return true;\n // alias to target create views\n } else if (locationConfigParam === _CREATE && name.endsWith('-create')) {\n return true;\n }\n\n return false;\n}\n\nfunction checkExtensionRouteBinding($route, locationConfig, context) {\n // if no configuration is passed, consider it as global\n if (!Object.keys(locationConfig).length) {\n return true;\n }\n\n const { params } = $route;\n\n // \"params\" to be checked based on the locationConfig\n // This has become overloaded with mode and context\n const paramsToCheck = [\n 'product',\n 'resource',\n 'namespace',\n 'cluster',\n 'id',\n 'mode',\n 'path',\n 'hash',\n // url query params\n 'queryParam',\n // Custom context specific params provided by the extension, not to be confused with location params\n 'context',\n ];\n\n let res = true;\n\n for (let i = 0; i < paramsToCheck.length; i++) {\n const param = paramsToCheck[i];\n\n if (locationConfig[param]) {\n const asArray = Array.isArray(locationConfig[param]) ? locationConfig[param] : [locationConfig[param]];\n\n for (let x = 0; x < asArray.length; x++) {\n const locationConfigParam = asArray[x];\n\n if (locationConfigParam) {\n if (param === 'hash') {\n res = $route.hash ? $route.hash.includes(locationConfigParam) : false;\n // handle \"product\" in a separate way...\n } else if (param === 'product') {\n res = checkRouteProduct($route, locationConfigParam);\n // also handle \"mode\" in a separate way because it mainly depends on query params\n } else if (param === 'mode') {\n res = checkRouteMode($route, locationConfigParam);\n } else if (param === 'resource') {\n // Match exact resource but also allow resource of '*' to match any resource\n res = (params[param] && locationConfigParam === '*') || locationConfigParam === params[param];\n } else if (param === 'context') {\n // Need all keys and values to match\n res = isEqual(locationConfigParam, context);\n // evaluate queryParam in route\n } else if (param === 'queryParam') {\n res = isEqual(locationConfigParam, $route.query);\n // evaluate path in route\n } else if (param === 'path' && locationConfigParam.urlPath) {\n if (locationConfigParam.endsWith) {\n res = $route.path.endsWith(locationConfigParam.urlPath);\n } else if (!Object.keys(locationConfigParam).includes('exact') || locationConfigParam.exact) {\n res = locationConfigParam.urlPath === $route.path;\n } else {\n res = $route.path.includes(locationConfigParam.urlPath);\n }\n } else if (locationConfigParam === params[param]) {\n res = true;\n } else {\n res = false;\n }\n }\n\n // If a single location config param is good then this is an param (aka ['pods', 'configmap'] = pods or configmaps)\n if (res) {\n break;\n }\n }\n\n // If a single param (set of location config params) is bad then this is not an acceptable location\n if (!res) {\n break;\n }\n }\n }\n\n return res;\n}\n\nexport function getApplicableExtensionEnhancements(pluginCtx, actionType, uiArea, currRoute, translationCtx = pluginCtx, context) {\n const extensionEnhancements = [];\n\n // gate it so that we prevent errors on older versions of dashboard\n if (pluginCtx.$plugin?.getUIConfig) {\n const actions = pluginCtx.$plugin.getUIConfig(actionType, uiArea);\n\n actions.forEach((action, i) => {\n if (checkExtensionRouteBinding(currRoute, action.locationConfig, context || {})) {\n // ADD CARD PLUGIN UI ENHANCEMENT\n if (actionType === ExtensionPoint.CARD) {\n // intercept to apply translation\n if (uiArea === CardLocation.CLUSTER_DASHBOARD_CARD && action.labelKey) {\n actions[i].label = translationCtx.t(action.labelKey);\n }\n\n // ADD ACTION PLUGIN UI ENHANCEMENT\n } else if (actionType === ExtensionPoint.ACTION) {\n // TABLE ACTION\n if (uiArea === ActionLocation.TABLE) {\n // intercept to apply translation\n if (action.labelKey) {\n actions[i].label = translationCtx.t(action.labelKey);\n }\n\n // bulkable flag\n actions[i].bulkable = actions[i].multiple || actions[i].bulkable;\n\n // populate action identifier to prevent errors\n if (!actions[i].action) {\n actions[i].action = `custom-table-action-${ randomStr(10).toLowerCase() }`;\n }\n }\n\n // extract simplified shortcut definition on plugin - HEADER ACTION\n if (uiArea === ActionLocation.HEADER && action.shortcut) {\n // if it's a string, then assume CTRL for windows and META for mac\n if (typeof action.shortcut === 'string') {\n actions[i].shortcutLabel = () => {\n return isMac ? `(\\u2318-${ action.shortcut.toUpperCase() })` : `(Ctrl-${ action.shortcut.toUpperCase() })`;\n };\n actions[i].shortcutKey = { windows: ['ctrl', action.shortcut], mac: ['meta', action.shortcut] };\n // correct check for an Object type in JS... handle the object passed\n } else if (typeof action.shortcut === 'object' && !Array.isArray(action.shortcut) && action.shortcut !== null) {\n actions[i].shortcutKey = action.shortcut;\n const keyboardCombo = isMac ? actions[i].shortcut.mac : actions[i].shortcut.windows ? actions[i].shortcut.windows : [];\n let scLabel = '';\n\n keyboardCombo.forEach((key, i) => {\n if (i < keyboardCombo.length - 1) {\n if (key === 'meta') {\n key = '\\u2318';\n } else {\n key = ucFirst(key);\n }\n scLabel += `${ key }`;\n scLabel += '-';\n } else {\n scLabel += `${ key.toUpperCase() }`;\n }\n });\n\n actions[i].shortcutLabel = () => {\n return `(${ scLabel })`;\n };\n }\n }\n }\n\n extensionEnhancements.push(actions[i]);\n }\n });\n }\n\n return extensionEnhancements;\n}\n","/*\n * Jexl\n * Copyright 2019 Tom Shawver\n */\n\nclass PromiseSync {\n constructor(fn) {\n fn(this._resolve.bind(this), this._reject.bind(this))\n }\n\n catch(rejected) {\n if (this.error) {\n try {\n this._resolve(rejected(this.error))\n } catch (e) {\n this._reject(e)\n }\n }\n return this\n }\n\n then(resolved, rejected) {\n if (!this.error) {\n try {\n this._resolve(resolved(this.value))\n } catch (e) {\n this._reject(e)\n }\n }\n if (rejected) this.catch(rejected)\n return this\n }\n\n _reject(error) {\n this.value = undefined\n this.error = error\n }\n\n _resolve(val) {\n if (val instanceof PromiseSync) {\n if (val.error) {\n this._reject(val.error)\n } else {\n this._resolve(val.value)\n }\n } else {\n this.value = val\n this.error = undefined\n }\n }\n}\n\nPromiseSync.all = vals =>\n new PromiseSync(resolve => {\n const resolved = vals.map(val => {\n while (val instanceof PromiseSync) {\n if (val.error) throw Error(val.error)\n val = val.value\n }\n return val\n })\n resolve(resolved)\n })\n\nPromiseSync.resolve = val => new PromiseSync(resolve => resolve(val))\n\nPromiseSync.reject = error =>\n new PromiseSync((resolve, reject) => reject(error))\n\nmodule.exports = PromiseSync\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".sources__container[data-v-5fa70040]{position:relative;display:block}.sources__container__cert[data-v-5fa70040]{display:grid;grid-template-columns:auto 150px;align-items:center;margin-bottom:10px}.sources__container__cert>.remove[data-v-5fa70040]{text-align:right}.sources__container>.remove[data-v-5fa70040]{position:absolute;padding:0;top:0;right:0}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.roletemplate.vue?vue&type=style&index=0&id=5050d908&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a \r\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Bar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Bar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Bar.vue?vue&type=template&id=b4f4e2ae&scoped=true&\"\nimport script from \"./Bar.vue?vue&type=script&lang=js&\"\nexport * from \"./Bar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Bar.vue?vue&type=style&index=0&id=b4f4e2ae&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b4f4e2ae\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PercentageBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PercentageBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PercentageBar.vue?vue&type=template&id=620caa7e&scoped=true&\"\nimport script from \"./PercentageBar.vue?vue&type=script&lang=js&\"\nexport * from \"./PercentageBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PercentageBar.vue?vue&type=style&index=0&id=620caa7e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"620caa7e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ConsumptionGauge.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ConsumptionGauge.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ConsumptionGauge.vue?vue&type=template&id=3f3d0a16&\"\nimport script from \"./ConsumptionGauge.vue?vue&type=script&lang=js&\"\nexport * from \"./ConsumptionGauge.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ConsumptionGauge.vue?vue&type=style&index=0&id=3f3d0a16&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.card.isLoaded)?_c('div',{class:_vm.setLoading},[_c('i',{staticClass:\"icon-spinner animate-spin\"})]):_c('div',{staticClass:\"d-main\",class:_vm.setLoading},[_c('div',{staticClass:\"d-header\"},[_c('n-link',{attrs:{\"to\":_vm.card.link}},[_c('h1',[_vm._v(\" \"+_vm._s(_vm.t(_vm.card.title))+\" \")])])],1),_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t(_vm.card.description)),expression:\"t(card.description)\"}]}),_c('n-link',{staticClass:\"btn role-secondary\",attrs:{\"to\":_vm.card.cta}},[_vm._v(\" \"+_vm._s(_vm.t(_vm.card.linkText))+\" \")]),_c('hr'),_c('div',{staticClass:\"d-slot\"},[_c('h2',[_vm._v(_vm._s(_vm.t(_vm.card.slotTitle)))]),_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Card.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Card.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Card.vue?vue&type=template&id=3335bcf8&scoped=true&\"\nimport script from \"./Card.vue?vue&type=script&lang=js&\"\nexport * from \"./Card.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Card.vue?vue&type=style&index=0&id=3335bcf8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3335bcf8\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DashboardView.vue?vue&type=template&id=12f32b18&scoped=true&\"\nimport script from \"./DashboardView.vue?vue&type=script&lang=js&\"\nexport * from \"./DashboardView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DashboardView.vue?vue&type=style&index=0&id=12f32b18&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"12f32b18\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',{staticClass:\"container\"},[(!_vm.install)?_c('div',{staticClass:\"title p-10\"},[_c('div',{staticClass:\"logo mt-20 mb-10\"},[_c('img',{attrs:{\"src\":require(\"../../assets/icon-kubewarden.svg\"),\"height\":\"64\"}})]),_c('h1',{staticClass:\"mb-20\",attrs:{\"data-testid\":\"kw-install-title\"}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.title\"))+\" \")]),_c('div',{staticClass:\"description\"},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.description\"))+\" \")]),(!_vm.hasSchema)?_c('button',{staticClass:\"btn role-primary mt-20\",attrs:{\"data-testid\":\"kw-initial-install-button\"},on:{\"click\":function($event){_vm.install = true}}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.appInstall.button\"))+\" \")]):_vm._e()]):[(_vm.isAirgap)?[_c('Banner',{staticClass:\"mb-20 mt-20\",attrs:{\"color\":\"warning\"}},[_c('span',{attrs:{\"data-testid\":\"kw-install-ag-warning\"}},[_vm._v(_vm._s(_vm.t('kubewarden.dashboard.prerequisites.airGapped.warning')))])]),_c('Markdown',{model:{value:(_vm.docs.airgap),callback:function ($$v) {_vm.$set(_vm.docs, \"airgap\", $$v)},expression:\"docs.airgap\"}})]:[_c('InstallWizard',{ref:\"wizard\",attrs:{\"init-step-index\":_vm.initStepIndex,\"steps\":_vm.installSteps,\"data-testid\":\"kw-install-wizard\"},scopedSlots:_vm._u([{key:\"certmanager\",fn:function(){return [_c('h2',{staticClass:\"mt-20 mb-10\",attrs:{\"data-testid\":\"kw-cm-title\"}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.certManager.title\"))+\" \")]),_c('p',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.certManager.description\"))+\" \")]),_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.dashboard.prerequisites.certManager.manualStep', null, true)),expression:\"t('kubewarden.dashboard.prerequisites.certManager.manualStep', null, true)\"}]}),_c('CopyCode',{staticClass:\"m-10 p-10\",attrs:{\"data-testid\":\"kw-cm-copy-code\"}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.certManager.applyCommand\"))+\" \")]),_c('button',{staticClass:\"btn role-secondary\",attrs:{\"data-testid\":\"kw-cm-open-shell\",\"disabled\":!_vm.shellEnabled,\"type\":\"button\"},on:{\"shortkey\":function($event){return _vm.currentCluster.openShell()},\"click\":function($event){return _vm.currentCluster.openShell()}}},[_c('i',{staticClass:\"icon icon-terminal icon-lg\"}),_vm._v(_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.certManager.openShell\"))+\" \")]),_vm._t(\"default\",function(){return [_c('Banner',{staticClass:\"mb-20 mt-20\",attrs:{\"color\":\"info\",\"label\":_vm.t('kubewarden.dashboard.prerequisites.certManager.stepProgress')}})]})]},proxy:true},{key:\"install\",fn:function(){return [(!_vm.kubewardenRepo)?[_c('h2',{staticClass:\"mt-20 mb-10\",attrs:{\"data-testid\":\"kw-repo-title\"}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.repository.title\"))+\" \")]),_c('p',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.repository.description\"))+\" \")]),_c('AsyncButton',{attrs:{\"mode\":\"kubewardenRepository\",\"data-testid\":\"kw-repo-add-button\"},on:{\"click\":_vm.addRepository}})]:[_c('h2',{staticClass:\"mt-20 mb-10\",attrs:{\"data-testid\":\"kw-app-install-title\"}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.appInstall.title\"))+\" \")]),_c('p',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.appInstall.description\"))+\" \")]),_c('div',{staticClass:\"chart-route\"},[(!_vm.controllerChart && !_vm.reloadReady)?_c('Loading',{staticClass:\"mt-20\",attrs:{\"mode\":\"relative\"}}):(!_vm.controllerChart && _vm.reloadReady)?[_c('Banner',{attrs:{\"color\":\"warning\"}},[_c('span',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.dashboard.appInstall.reload' ))+\" \")]),_c('button',{staticClass:\"ml-10 btn btn-sm role-primary\",attrs:{\"data-testid\":\"kw-app-install-reload\"},on:{\"click\":function($event){return _vm.reload()}}},[_vm._v(\" \"+_vm._s(_vm.t('generic.reload'))+\" \")])])]:[_c('button',{staticClass:\"btn role-primary mt-20\",attrs:{\"data-testid\":\"kw-app-install-button\",\"disabled\":!_vm.controllerChart},on:{\"click\":function($event){$event.preventDefault();return _vm.chartRoute.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.appInstall.button\"))+\" \")])]],2)]]},proxy:true}],null,true)})]]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('code',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"}],staticClass:\"copy\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.clicked.apply(null, arguments)}}},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// src/clipboard-polyfill/ClipboardItem/data-types.ts\nvar TEXT_PLAIN = \"text/plain\";\nvar TEXT_HTML = \"text/html\";\n\n// src/clipboard-polyfill/debug.ts\nvar debugLogImpl = (s) => {\n};\nfunction debugLog(s) {\n debugLogImpl(s);\n}\nfunction setDebugLog(logFn) {\n debugLogImpl = logFn;\n}\nvar showWarnings = true;\nfunction suppressWarnings() {\n showWarnings = false;\n}\nfunction shouldShowWarnings() {\n return showWarnings;\n}\nfunction warnOrLog() {\n (console.warn || console.log).apply(console, arguments);\n}\nvar warn = warnOrLog.bind(\"[clipboard-polyfill]\");\n\n// src/clipboard-polyfill/builtins/window-globalThis.ts\nvar originalWindow = typeof window === \"undefined\" ? void 0 : window;\nvar originalGlobalThis = typeof globalThis === \"undefined\" ? void 0 : globalThis;\n\n// src/clipboard-polyfill/builtins/promise-constructor.ts\nvar _a, _b, _c;\nvar promiseConstructorImpl = (_c = (_a = originalWindow) == null ? void 0 : _a.Promise) != null ? _c : (_b = originalGlobalThis) == null ? void 0 : _b.Promise;\nfunction getPromiseConstructor() {\n if (!promiseConstructorImpl) {\n throw new Error(\n \"No `Promise` implementation available for `clipboard-polyfill`. Consider using: https://github.com/lgarron/clipboard-polyfill#flat-file-version-with-promise-included\"\n );\n }\n return promiseConstructorImpl;\n}\n\n// src/clipboard-polyfill/builtins/builtin-globals.ts\nvar originalNavigator = typeof navigator === \"undefined\" ? void 0 : navigator;\nvar originalNavigatorClipboard = originalNavigator == null ? void 0 : originalNavigator.clipboard;\nvar _a2;\nvar originalNavigatorClipboardRead = (_a2 = originalNavigatorClipboard == null ? void 0 : originalNavigatorClipboard.read) == null ? void 0 : _a2.bind(\n originalNavigatorClipboard\n);\nvar _a3;\nvar originalNavigatorClipboardReadText = (_a3 = originalNavigatorClipboard == null ? void 0 : originalNavigatorClipboard.readText) == null ? void 0 : _a3.bind(\n originalNavigatorClipboard\n);\nvar _a4;\nvar originalNavigatorClipboardWrite = (_a4 = originalNavigatorClipboard == null ? void 0 : originalNavigatorClipboard.write) == null ? void 0 : _a4.bind(\n originalNavigatorClipboard\n);\nvar _a5;\nvar originalNavigatorClipboardWriteText = (_a5 = originalNavigatorClipboard == null ? void 0 : originalNavigatorClipboard.writeText) == null ? void 0 : _a5.bind(\n originalNavigatorClipboard\n);\nvar _a6;\nvar originalWindowClipboardItem = (_a6 = originalWindow) == null ? void 0 : _a6.ClipboardItem;\nvar promiseConstructor = getPromiseConstructor();\n\n// src/clipboard-polyfill/strategies/internet-explorer.ts\nvar ieWindow = originalWindow;\nfunction seemToBeInIE() {\n return typeof ClipboardEvent === \"undefined\" && typeof (ieWindow == null ? void 0 : ieWindow.clipboardData) !== \"undefined\" && typeof (ieWindow == null ? void 0 : ieWindow.clipboardData.setData) !== \"undefined\";\n}\nfunction writeTextIE(text) {\n if (!ieWindow.clipboardData) {\n return false;\n }\n var success = ieWindow.clipboardData.setData(\"Text\", text);\n if (success) {\n debugLog(\"writeTextIE worked\");\n }\n return success;\n}\nfunction readTextIE() {\n if (!ieWindow.clipboardData) {\n throw new Error(\"Cannot read IE clipboard Data \");\n }\n var text = ieWindow.clipboardData.getData(\"Text\");\n if (text === \"\") {\n throw new Error(\n \"Empty clipboard or could not read plain text from clipboard\"\n );\n }\n return text;\n}\n\n// src/clipboard-polyfill/strategies/dom.ts\nfunction copyListener(tracker, data, e) {\n debugLog(\"listener called\");\n tracker.success = true;\n for (var type in data) {\n var value = data[type];\n var clipboardData = e.clipboardData;\n clipboardData.setData(type, value);\n if (type === TEXT_PLAIN && clipboardData.getData(type) !== value) {\n debugLog(\"setting text/plain failed\");\n tracker.success = false;\n }\n }\n e.preventDefault();\n}\nfunction execCopy(data) {\n var tracker = { success: false };\n var listener = copyListener.bind(this, tracker, data);\n document.addEventListener(\"copy\", listener);\n try {\n document.execCommand(\"copy\");\n } finally {\n document.removeEventListener(\"copy\", listener);\n }\n return tracker.success;\n}\nfunction copyUsingTempSelection(e, data) {\n selectionSet(e);\n var success = execCopy(data);\n selectionClear();\n return success;\n}\nfunction copyUsingTempElem(data) {\n var tempElem = document.createElement(\"div\");\n tempElem.setAttribute(\"style\", \"-webkit-user-select: text !important\");\n tempElem.textContent = \"temporary element\";\n document.body.appendChild(tempElem);\n var success = copyUsingTempSelection(tempElem, data);\n document.body.removeChild(tempElem);\n return success;\n}\nfunction copyTextUsingDOM(str) {\n debugLog(\"copyTextUsingDOM\");\n var tempElem = document.createElement(\"div\");\n tempElem.setAttribute(\"style\", \"-webkit-user-select: text !important\");\n var spanParent = tempElem;\n if (tempElem.attachShadow) {\n debugLog(\"Using shadow DOM.\");\n spanParent = tempElem.attachShadow({ mode: \"open\" });\n }\n var span = document.createElement(\"span\");\n span.innerText = str;\n spanParent.appendChild(span);\n document.body.appendChild(tempElem);\n selectionSet(span);\n var result = document.execCommand(\"copy\");\n selectionClear();\n document.body.removeChild(tempElem);\n return result;\n}\nfunction selectionSet(elem) {\n var sel = document.getSelection();\n if (sel) {\n var range = document.createRange();\n range.selectNodeContents(elem);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n}\nfunction selectionClear() {\n var sel = document.getSelection();\n if (sel) {\n sel.removeAllRanges();\n }\n}\n\n// src/clipboard-polyfill/implementations/write-fallback.ts\nfunction writeFallback(stringItem) {\n var hasTextPlain = TEXT_PLAIN in stringItem;\n if (seemToBeInIE()) {\n if (!hasTextPlain) {\n throw new Error(\"No `text/plain` value was specified.\");\n }\n if (writeTextIE(stringItem[TEXT_PLAIN])) {\n return true;\n } else {\n throw new Error(\"Copying failed, possibly because the user rejected it.\");\n }\n }\n if (execCopy(stringItem)) {\n debugLog(\"regular execCopy worked\");\n return true;\n }\n if (navigator.userAgent.indexOf(\"Edge\") > -1) {\n debugLog('UA \"Edge\" => assuming success');\n return true;\n }\n if (copyUsingTempSelection(document.body, stringItem)) {\n debugLog(\"copyUsingTempSelection worked\");\n return true;\n }\n if (copyUsingTempElem(stringItem)) {\n debugLog(\"copyUsingTempElem worked\");\n return true;\n }\n if (copyTextUsingDOM(stringItem[TEXT_PLAIN])) {\n debugLog(\"copyTextUsingDOM worked\");\n return true;\n }\n return false;\n}\n\n// src/clipboard-polyfill/promise/promise-compat.ts\nfunction promiseRecordMap(keys, f) {\n var promiseList = [];\n for (var i in keys) {\n var key = keys[i];\n promiseList.push(f(key));\n }\n return promiseConstructor.all(promiseList).then((vList) => {\n var dataOut = {};\n for (var i2 = 0; i2 < keys.length; i2++) {\n dataOut[keys[i2]] = vList[i2];\n }\n return dataOut;\n });\n}\nvar voidPromise = promiseConstructor.resolve();\nvar truePromiseFn = () => promiseConstructor.resolve(true);\nvar falsePromise = promiseConstructor.resolve(false);\nfunction rejectThrownErrors(executor) {\n return new promiseConstructor((resolve, reject) => {\n try {\n resolve(executor());\n } catch (e) {\n reject(e);\n }\n });\n}\n\n// src/clipboard-polyfill/implementations/text.ts\nfunction stringToStringItem(s) {\n var stringItem = {};\n stringItem[TEXT_PLAIN] = s;\n return stringItem;\n}\nfunction writeText(s) {\n return rejectThrownErrors(() => {\n if (originalNavigatorClipboardWriteText) {\n debugLog(\"Using `navigator.clipboard.writeText()`.\");\n return originalNavigatorClipboardWriteText(s).catch(\n writeTextStringFallback\n );\n }\n return promiseConstructor.resolve(writeTextStringFallback(s));\n });\n}\nfunction writeTextStringFallback(s) {\n if (!writeFallback(stringToStringItem(s))) {\n throw new Error(\"writeText() failed\");\n }\n}\nfunction readText() {\n return rejectThrownErrors(() => {\n if (originalNavigatorClipboardReadText) {\n debugLog(\"Using `navigator.clipboard.readText()`.\");\n return originalNavigatorClipboardReadText();\n }\n if (seemToBeInIE()) {\n var result = readTextIE();\n return promiseConstructor.resolve(result);\n }\n throw new Error(\"Read is not supported in your browser.\");\n });\n}\n\n// src/clipboard-polyfill/ClipboardItem/check.ts\nfunction hasItemWithType(clipboardItems, typeName) {\n for (var i in clipboardItems) {\n var item = clipboardItems[i];\n if (item.types.indexOf(typeName) !== -1) {\n return true;\n }\n }\n return false;\n}\n\n// src/clipboard-polyfill/ClipboardItem/ClipboardItemPolyfill.ts\nfunction ClipboardItemPolyfillImpl(items, options) {\n var _a7;\n var types = Object.keys(items);\n var _items = {};\n for (var type in items) {\n var item = items[type];\n if (typeof item === \"string\") {\n _items[type] = stringToBlob(type, item);\n } else {\n _items[type] = item;\n }\n }\n var presentationStyle = (_a7 = options == null ? void 0 : options.presentationStyle) != null ? _a7 : \"unspecified\";\n function getType(type2) {\n return promiseConstructor.resolve(_items[type2]);\n }\n return {\n types,\n presentationStyle,\n getType\n };\n}\nvar ClipboardItemPolyfill = ClipboardItemPolyfillImpl;\n\n// src/clipboard-polyfill/ClipboardItem/convert.ts\nfunction stringToBlob(type, str) {\n return new Blob([str], {\n type\n });\n}\nfunction blobToString(blob) {\n return new promiseConstructor((resolve, reject) => {\n var fileReader = new FileReader();\n fileReader.addEventListener(\"load\", () => {\n var result = fileReader.result;\n if (typeof result === \"string\") {\n resolve(result);\n } else {\n reject(\"could not convert blob to string\");\n }\n });\n fileReader.readAsText(blob);\n });\n}\nfunction clipboardItemToGlobalClipboardItem(clipboardItem) {\n return promiseRecordMap(clipboardItem.types, function(type) {\n return clipboardItem.getType(type);\n }).then((items) => {\n return new Promise((resolve, reject) => {\n var options = {};\n if (clipboardItem.presentationStyle) {\n options.presentationStyle = clipboardItem.presentationStyle;\n }\n if (originalWindowClipboardItem) {\n resolve(new originalWindowClipboardItem(items, options));\n } else {\n reject(\"window.ClipboardItem is not defined\");\n }\n });\n });\n}\nfunction textToClipboardItem(text) {\n var items = {};\n items[TEXT_PLAIN] = stringToBlob(text, TEXT_PLAIN);\n return new ClipboardItemPolyfill(items);\n}\nfunction getTypeAsString(clipboardItem, type) {\n return clipboardItem.getType(type).then((text) => {\n return blobToString(text);\n });\n}\nfunction toStringItem(data) {\n return promiseRecordMap(data.types, function(type) {\n return getTypeAsString(data, type);\n });\n}\n\n// src/clipboard-polyfill/implementations/blob.ts\nfunction write(data) {\n return rejectThrownErrors(() => {\n if (originalNavigatorClipboardWrite && originalWindowClipboardItem) {\n var originalNavigatorClipboardWriteCached = originalNavigatorClipboardWrite;\n debugLog(\"Using `navigator.clipboard.write()`.\");\n return promiseConstructor.all(data.map(clipboardItemToGlobalClipboardItem)).then(\n (globalClipboardItems) => {\n return originalNavigatorClipboardWriteCached(globalClipboardItems).then(truePromiseFn).catch((e) => {\n if (!hasItemWithType(data, TEXT_PLAIN) && !hasItemWithType(data, TEXT_HTML)) {\n throw e;\n }\n return falsePromise;\n });\n }\n );\n }\n return falsePromise;\n }).then((success) => {\n if (success) {\n return voidPromise;\n }\n var hasTextPlain = hasItemWithType(data, TEXT_PLAIN);\n if (shouldShowWarnings() && !hasTextPlain) {\n debugLog(\n \"clipboard.write() was called without a `text/plain` data type. On some platforms, this may result in an empty clipboard. Call suppressWarnings() to suppress this warning.\"\n );\n }\n return toStringItem(data[0]).then((stringItem) => {\n if (!writeFallback(stringItem)) {\n throw new Error(\"write() failed\");\n }\n });\n });\n}\nfunction read() {\n return rejectThrownErrors(() => {\n if (originalNavigatorClipboardRead) {\n debugLog(\"Using `navigator.clipboard.read()`.\");\n return originalNavigatorClipboardRead();\n }\n return readText().then((text) => {\n return [textToClipboardItem(text)];\n });\n });\n}\nexport {\n ClipboardItemPolyfill as ClipboardItem,\n read,\n readText,\n setDebugLog,\n suppressWarnings,\n write,\n writeText\n};\n//# sourceMappingURL=clipboard-polyfill.es6.js.map\n","import * as Clipboard from 'clipboard-polyfill';\n\nexport async function copyTextToClipboard(text) {\n await Clipboard.writeText(text);\n}\n","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyCode.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyCode.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CopyCode.vue?vue&type=template&id=5f6f7450&scoped=true&\"\nimport script from \"./CopyCode.vue?vue&type=script&lang=js&\"\nexport * from \"./CopyCode.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CopyCode.vue?vue&type=style&index=0&id=5f6f7450&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f6f7450\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"header mt-20 mb-20\"},[_c('div',{staticClass:\"title\"},[(_vm.showTitle)?[_c('div',{staticClass:\"product\"},[_vm._m(0),_c('div',{staticClass:\"subtitle mr-20\"},[_c('h2',{staticClass:\"mb-0\"},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.title'))+\" \")]),_c('span',{staticClass:\"subtext\"},[_vm._v(_vm._s(_vm.t('kubewarden.dashboard.install')))])])])]:_vm._e(),(_vm.steps.length > 1)?_c('div',{staticClass:\"subtitle\"},[_c('h2',{staticClass:\"mb-0\"},[_vm._v(\" \"+_vm._s(_vm.t('wizard.step', {number: _vm.activeStepIndex + 1}))+\" \")]),_vm._t(\"bannerSubtext\",function(){return [_c('span',{staticClass:\"subtext\"},[_vm._v(_vm._s(_vm.activeStep.label))])]})],2):_vm._e()],2),(_vm.steps.length > 1)?[_c('div',{staticClass:\"step-sequence\"},[_c('ul',{staticClass:\"steps\",attrs:{\"tabindex\":\"0\"}},[_vm._l((_vm.steps),function(step,idx){return [_c('li',{key:step.name + 'li',class:{\n step: true,\n active: step.name === _vm.activeStep.name,\n disabled: !_vm.isAvailable(step),\n },attrs:{\"id\":step.name,\"role\":\"presentation\"}},[_c('span',{staticClass:\"controls\",attrs:{\"aria-controls\":'step' + idx + 1,\"aria-selected\":step.name === _vm.activeStep.name,\"role\":\"tab\"},on:{\"click\":function($event){$event.preventDefault();return _vm.goToStep(idx + 1, true)}}},[_c('span',{staticClass:\"icon icon-lg\",class:{\n 'icon-dot': step.name === _vm.activeStep.name,\n 'icon-dot-open': step.name !== _vm.activeStep.name,\n }}),_c('span',[_vm._v(\" \"+_vm._s(step.label)+\" \")])])]),(idx !== _vm.steps.length - 1)?_c('div',{key:step.name,staticClass:\"divider\"}):_vm._e()]})],2)])]:_vm._e()],2),_vm._t(\"stepContainer mt-20\",function(){return [_vm._l((_vm.steps),function(step){return [(step.name === _vm.activeStep.name || step.hidden)?_c('div',{key:step.name,staticClass:\"step-container\",class:{ hide: step.name !== _vm.activeStep.name && step.hidden }},[_vm._t(step.name,null,{\"step\":step})],2):_vm._e()]})]},{\"activeStep\":_vm.activeStep})],2)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"product-image\"},[_c('img',{staticClass:\"logo\",attrs:{\"src\":require(\"../assets/icon-kubewarden.svg\")}})])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InstallWizard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InstallWizard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InstallWizard.vue?vue&type=template&id=438d868c&scoped=true&\"\nimport script from \"./InstallWizard.vue?vue&type=script&lang=js&\"\nexport * from \"./InstallWizard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InstallWizard.vue?vue&type=style&index=0&id=438d868c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"438d868c\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InstallView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InstallView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InstallView.vue?vue&type=template&id=37141aab&scoped=true&\"\nimport script from \"./InstallView.vue?vue&type=script&lang=js&\"\nexport * from \"./InstallView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InstallView.vue?vue&type=style&index=0&id=37141aab&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"37141aab\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=542d9c5a&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('PolicyReporter')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',[(!_vm.hasPolicyServerSchema)?[_c('div',[_c('h1',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyReporter.title'))+\" \")]),_c('Banner',{staticClass:\"mt-20 mb-20\",attrs:{\"label\":_vm.t('kubewarden.policyReporter.noSchema.banner'),\"color\":\"error\",\"data-testid\":\"kw-pr-noschema-banner\"}}),_c('div',{staticClass:\"install-route\"},[_c('n-link',{attrs:{\"to\":_vm.rootKubewardenRoute()}},[_c('button',{staticClass:\"btn role-primary mt-20\"},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyReporter.noSchema.link'))+\" \")])])],1)],1)]:(!_vm.canShowReporter)?[_c('Banner',{staticClass:\"mt-20 mb-20\",attrs:{\"color\":\"error\",\"data-testid\":\"kw-pr-incompatibile-banner\"}},[_c('p',[_vm._v(_vm._s(_vm.t('kubewarden.policyReporter.incompatible.banner')))]),(_vm.controllerVersion)?_c('p',{staticClass:\"mt-10\",attrs:{\"data-testid\":\"kw-pr-controller-version-badge\"}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyReporter.incompatible.current'))+\": \"),_c('span',{staticClass:\"version-badge\"},[_vm._v(_vm._s(_vm.controllerVersion))])]):_vm._e()])]:(_vm.canShowReporter)?[(!_vm.reporterCrds)?[_c('Banner',{attrs:{\"label\":_vm.t('kubewarden.policyReporter.incompatible.noCrds.banner'),\"data-testid\":\"kw-pr-no-crds-banner\",\"color\":\"error\"}})]:[(!_vm.reporterReportingService)?[_c('Banner',{attrs:{\"label\":_vm.t('kubewarden.policyReporter.service.main.banner.unavailable'),\"data-testid\":\"kw-pr-main-service-unavailable-banner\",\"color\":\"warning\"}})]:(!_vm.reporterUIService)?[_c('Banner',{attrs:{\"label\":_vm.t('kubewarden.policyReporter.service.ui.banner.unavailable'),\"data-testid\":\"kw-pr-ui-service-unavailable-banner\",\"color\":\"warning\"}})]:_vm._e(),(_vm.reporterUrl)?[_c('div',[_c('div',{staticClass:\"reporter__header mb-20\"},[_c('div',{staticClass:\"reporter__external-link\"},[_c('a',{attrs:{\"href\":_vm.reporterUrl,\"target\":\"_blank\",\"rel\":\"noopener nofollow\",\"data-testid\":\"kw-pr-reporter-link\"}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyReporter.link'))+\" \"),_c('i',{staticClass:\"icon icon-external-link\"})])])]),(_vm.reporterDeploymentState && _vm.reporterDeploymentState !== 'active')?[_c('Banner',{attrs:{\"label\":_vm.t('kubewarden.policyReporter.deployment.banner.unavailable', { state: _vm.reporterDeploymentState }),\"color\":\"warning\"}})]:[_c('div',{staticClass:\"reporter__container\"},[_c('iframe',{ref:\"frame\",attrs:{\"src\":_vm.reporterUrl,\"frameborder\":\"0\",\"data-testid\":\"kw-pr-iframe\"}})])]],2)]:_vm._e()]]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex';\nimport { allHashSettled } from '@shell/utils/promise';\n\nexport default {\n computed: { ...mapGetters(['currentCluster']) },\n data() {\n return { isLoadingSecondaryResources: false };\n },\n methods: {\n /**\n *\n * Function resourceManagerFetchSecondaryResources\n * This method is used to fetch what is called \"secondary resources\", which can be defined as resources that are needed to populate\n * the page/component itself (ex: used as options on a Select) but don't need to be put into Vuex store or watched to get constant updates.\n * This method allows to fetch resources for a given namespace to reduce the amount of results instead of needing to fetch all and filtering afterwards.\n *\n *\n * @param {String} resourceData.namespace - Namespace identifier\n * @param {Object} resourceData.data - Object containing info about the data needed to be fetched and how it should be parsed. Note: The KEY NEEDS to be the resource TYPE!\n * @param {Array} resourceData.data[TYPE].applyTo - The array of operations needed to be performed for the specific data TYPE\n * @param {String} resourceData.data[TYPE].applyTo[x].var - The 'this' property name that should be populated with the data fetched\n * @param {Boolean} resourceData.data[TYPE].applyTo[x].classify - Whether the data fetched should have a model applied to it\n * @param {Function} resourceData.data[TYPE].applyTo[x].parsingFunc - Optional parsing function if the fetched data needs to be parsed\n * @param {Boolean} onlyNamespaced - Only fetch namespaced resources\n */\n async resourceManagerFetchSecondaryResources(resourceData, onlyNamespaced = false) {\n const requests = {};\n const namespace = resourceData.namespace;\n\n // Only fetch types if the user is allowed to...\n Object.keys(resourceData.data).forEach((type) => {\n const schema = this.$store.getters['cluster/schemaFor'](type);\n\n if (schema) {\n let url = schema.links.collection;\n\n if (schema?.attributes?.namespaced && namespace) {\n url = `${ url }/${ namespace }`;\n } else if (onlyNamespaced) {\n // Type isn't namespaced and we've been requested to only fetch namespaced types\n return;\n }\n\n requests[type] = this.$store.dispatch('cluster/request', { url });\n }\n });\n\n if (Object.keys(requests).length) {\n // this is the flag/variable that we need to apply to all places that rely on this data. Ex: LabeledSelect\n this.isLoadingSecondaryResources = true;\n const hash = await allHashSettled(requests);\n const types = Object.keys(hash);\n\n for (let i = 0; i < types.length; i++) {\n const type = types[i];\n const status = hash[type].status;\n // if it's namespaced, we get the data on 'items' prop, for non-namespaced it's 'data' prop...\n const requestData = hash[type].value.items || hash[type].value.data || hash[type].value;\n\n if (status === 'fulfilled' && resourceData.data[type] && resourceData.data[type].applyTo?.length) {\n for (let y = 0; y < resourceData.data[type].applyTo.length; y++) {\n const apply = resourceData.data[type].applyTo[y];\n let resources = requestData;\n\n if (apply.classify) {\n resources = await this.$store.dispatch('cluster/createMany', requestData);\n }\n\n if (apply.parsingFunc) {\n this[apply.var] = apply.parsingFunc(resources);\n } else {\n this[apply.var] = resources;\n }\n }\n } else if (status === 'rejected') {\n console.error(`Resource Manager - secondary data request for type ${ type } has failed`, status.error); // eslint-disable-line no-console\n }\n }\n\n this.isLoadingSecondaryResources = false;\n }\n },\n\n /**\n * Clear the cached secondary resources\n *\n * @param {*} resourceData See resourceManagerFetchSecondaryResources\n * @param {*} onlyNamespaced Clear only namespaced resources\n */\n resourceManagerClearSecondaryResources(resourceData, onlyNamespaced = false) {\n Object.keys(resourceData.data).forEach((type) => {\n const schema = this.$store.getters['cluster/schemaFor'](type);\n\n if (schema) {\n if (!schema?.attributes?.namespaced && onlyNamespaced) {\n // resource isn't namespaced and we're only interested in namespaced resources\n return;\n }\n\n for (let y = 0; y < resourceData.data[type].applyTo.length; y++) {\n const apply = resourceData.data[type].applyTo[y];\n\n this[apply.var] = [];\n }\n }\n });\n }\n },\n};\n","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=72952751&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=72952751&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"72952751\",\n null\n \n)\n\nexport default component.exports","\nimport PolicyReporter from '../../../../../components/PolicyReporter/index.vue';\n\nexport default {\n name: 'KubewardenResourcedList',\n components: { PolicyReporter },\n};\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policy-reporter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policy-reporter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./policy-reporter.vue?vue&type=template&id=3096ae67&\"\nimport script from \"./policy-reporter.vue?vue&type=script&lang=ts&\"\nexport * from \"./policy-reporter.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ResourceList')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.namespaceFilterRequired)?_c('IconMessage',{attrs:{\"vertical\":true,\"subtle\":false,\"icon\":\"icon-filter_alt\"},scopedSlots:_vm._u([{key:\"message\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.t('resourceList.nsFiltering'))+\" \")]},proxy:true}],null,false,4238627989)}):_c('div',[(_vm.showMasthead)?_c('Masthead',{attrs:{\"type-display\":_vm.customTypeDisplay,\"schema\":_vm.schema,\"resource\":_vm.resource,\"show-incremental-loading-indicator\":_vm.showIncrementalLoadingIndicator,\"load-resources\":_vm.loadResources,\"load-indeterminate\":_vm.loadIndeterminate}},[_c('template',{slot:\"extraActions\"},[_vm._t(\"extraActions\")],2)],2):_vm._e(),_c('ExtensionPanel',{attrs:{\"resource\":{},\"type\":_vm.extensionType,\"location\":_vm.extensionLocation}}),(_vm.hasListComponent)?_c('div',[_c(_vm.listComponent,_vm._b({tag:\"component\",attrs:{\"incremental-loading-indicator\":_vm.showIncrementalLoadingIndicator,\"rows\":_vm.rows}},'component',_vm.$data,false))],1):_c('ResourceTable',{attrs:{\"schema\":_vm.schema,\"rows\":_vm.rows,\"loading\":_vm.loading,\"headers\":_vm.headers,\"group-by\":_vm.groupBy,\"has-advanced-filtering\":_vm.hasAdvancedFiltering,\"adv-filter-hide-labels-as-cols\":_vm.advFilterHideLabelsAsCols,\"adv-filter-prevent-filtering-labels\":_vm.advFilterPreventFilteringLabels,\"use-query-params-for-simple-filtering\":_vm.useQueryParamsForSimpleFiltering,\"force-update-live-and-delayed\":_vm.forceUpdateLiveAndDelayed}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('header',[_vm._t(\"typeDescription\",function(){return [_c('TypeDescription',{attrs:{\"resource\":_vm.resource}})]}),_c('div',{staticClass:\"title\"},[_c('h1',{staticClass:\"m-0\"},[_vm._v(\" \"+_vm._s(_vm._typeDisplay)+\" \"),(_vm.isExplorer)?_c('Favorite',{attrs:{\"resource\":_vm.favoriteResource || _vm.resource}}):_vm._e()],1),(_vm.showIncrementalLoadingIndicator)?_c('ResourceLoadingIndicator',{attrs:{\"resources\":_vm.loadResources,\"indeterminate\":_vm.loadIndeterminate}}):_vm._e()],1),_c('div',{staticClass:\"actions-container\"},[_vm._t(\"actions\",function(){return [_c('div',{staticClass:\"actions\"},[_vm._t(\"extraActions\"),_vm._t(\"createButton\",function(){return [(_vm.hasEditComponent && _vm._isCreatable)?_c('n-link',{staticClass:\"btn role-primary\",attrs:{\"to\":_vm._createLocation,\"data-testid\":_vm.componentTestid+'-create'}},[_vm._v(\" \"+_vm._s(_vm._createButtonlabel)+\" \")]):(_vm._isYamlCreatable)?_c('n-link',{staticClass:\"btn role-primary\",attrs:{\"to\":_vm._yamlCreateLocation,\"data-testid\":_vm.componentTestid+'-create-yaml'}},[_vm._v(\" \"+_vm._s(_vm.t(\"resourceList.head.createFromYaml\"))+\" \")]):_vm._e()]})],2)]})],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('i',{staticClass:\"favorite icon\",class:{'icon-star-open': !_vm.isFavorite, 'icon-star': _vm.isFavorite},attrs:{\"tabindex\":0,\"aria-checked\":!!_vm.isFavorite,\"aria-role\":\"button\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggle.apply(null, arguments)},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.preventDefault();return _vm.toggle.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;$event.preventDefault();return _vm.toggle.apply(null, arguments)}]}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Favorite.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Favorite.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Favorite.vue?vue&type=template&id=f74a378a&scoped=true&\"\nimport script from \"./Favorite.vue?vue&type=script&lang=js&\"\nexport * from \"./Favorite.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Favorite.vue?vue&type=style&index=0&id=f74a378a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f74a378a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.typeDescriptionKey)?_c('Banner',{staticClass:\"type-banner mb-20 mt-0\",attrs:{\"color\":\"info\",\"closable\":true,\"label-key\":_vm.typeDescriptionKey},on:{\"close\":_vm.hideTypeDescription}}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TypeDescription.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TypeDescription.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TypeDescription.vue?vue&type=template&id=23a42aff&\"\nimport script from \"./TypeDescription.vue?vue&type=script&lang=js&\"\nexport * from \"./TypeDescription.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.count && !_vm.haveAll)?_c('div',{staticClass:\"ml-10 resource-loading-indicator\"},[_c('div',{staticClass:\"inner\"},[_c('div',{staticClass:\"resource-loader\"},[_c('div',{staticClass:\"rl-bg\"},[_c('i',{staticClass:\"icon icon-spinner icon-spin\"}),_c('span',[_vm._v(_vm._s(_vm.t( 'resourceLoadingIndicator.loading' ))+\" \"),(!_vm.indeterminate)?_c('span',[_vm._v(_vm._s(_vm.count)+\" / \"+_vm._s(_vm.total))]):_vm._e()])])]),_c('div',{staticClass:\"resource-loader\",style:({width: _vm.width})},[_c('div',{staticClass:\"rl-fg\"},[_c('i',{staticClass:\"icon icon-spinner icon-spin\"}),_c('span',[_vm._v(_vm._s(_vm.t( 'resourceLoadingIndicator.loading' ))+\" \"),(!_vm.indeterminate)?_c('span',[_vm._v(_vm._s(_vm.count)+\" / \"+_vm._s(_vm.total))]):_vm._e()])])])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceLoadingIndicator.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceLoadingIndicator.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ResourceLoadingIndicator.vue?vue&type=template&id=6457c305&scoped=true&\"\nimport script from \"./ResourceLoadingIndicator.vue?vue&type=script&lang=js&\"\nexport * from \"./ResourceLoadingIndicator.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResourceLoadingIndicator.vue?vue&type=style&index=0&id=6457c305&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6457c305\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Masthead.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Masthead.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Masthead.vue?vue&type=template&id=c734c0f4&scoped=true&\"\nimport script from \"./Masthead.vue?vue&type=script&lang=js&\"\nexport * from \"./Masthead.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Masthead.vue?vue&type=style&index=0&id=c734c0f4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c734c0f4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"message-icon\",class:{'vertical': _vm.vertical, 'subtle': _vm.subtle}},[_c('i',{staticClass:\"icon\",class:{ [_vm.icon]: true, [_vm.iconState]: !!_vm.iconState}}),_c('div',{staticClass:\"message\"},[_vm._t(\"message\",function(){return [(_vm.messageKey)?[_vm._v(\" \"+_vm._s(_vm.t(_vm.messageKey))+\" \")]:[_vm._v(\" \"+_vm._s(_vm.message)+\" \")]]})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./IconMessage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./IconMessage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./IconMessage.vue?vue&type=template&id=01996ade&scoped=true&\"\nimport script from \"./IconMessage.vue?vue&type=script&lang=js&\"\nexport * from \"./IconMessage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./IconMessage.vue?vue&type=style&index=0&id=01996ade&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"01996ade\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.extensionData.length)?_c('div',_vm._l((_vm.extensionData),function(item,i){return _c('div',{key:`extensionData${_vm.location}${i}`},[_c(item.component,{tag:\"component\",attrs:{\"resource\":_vm.resource}})],1)}),0):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ExtensionPanel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ExtensionPanel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExtensionPanel.vue?vue&type=template&id=1a394d3c&\"\nimport script from \"./ExtensionPanel.vue?vue&type=script&lang=js&\"\nexport * from \"./ExtensionPanel.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=02ac34ae&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=02ac34ae&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"02ac34ae\",\n null\n \n)\n\nexport default component.exports","\nimport ResourceList from '@shell/components/ResourceList/index.vue';\n\nexport default {\n name: 'KubewardenResourcedList',\n components: { ResourceList },\n};\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=71a8ef42&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ResourceDetail')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending || _vm.notFound)?_c('Loading'):_c('div',[(_vm.showMasthead)?_c('Masthead',{attrs:{\"resource\":_vm.resource,\"value\":_vm.liveModel,\"mode\":_vm.mode,\"real-mode\":_vm.realMode,\"as\":_vm.as,\"has-graph\":_vm.hasGraph,\"has-detail\":_vm.hasCustomDetail,\"has-edit\":_vm.hasCustomEdit,\"can-view-yaml\":_vm.canViewYaml,\"resource-subtype\":_vm.resourceSubtype,\"parent-route-override\":_vm.parentRouteOverride,\"store-override\":_vm.storeOverride}},[(_vm.isView && _vm.isDetail)?_c('DetailTop',{attrs:{\"value\":_vm.liveModel}}):_vm._e()],1):_vm._e(),(_vm.isGraph && _vm.canViewChart)?_c('ForceDirectedTreeChart',{attrs:{\"data\":_vm.chartData,\"fdc-config\":_vm.getGraphConfig}}):(_vm.isYaml)?_c('ResourceYaml',{ref:\"resourceyaml\",class:{'flex-content': _vm.flexContent},attrs:{\"mode\":_vm.mode,\"yaml\":_vm.yaml,\"offer-preview\":_vm.offerPreview,\"done-route\":_vm.doneRoute,\"done-override\":_vm.value.doneOverride},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}}):_c(_vm.showComponent,_vm._b({ref:\"comp\",tag:\"component\",class:{'flex-content': _vm.flexContent},attrs:{\"done-params\":_vm.doneParams,\"done-route\":_vm.doneRoute,\"mode\":_vm.mode,\"initial-value\":_vm.initialModel,\"live-value\":_vm.liveModel,\"real-mode\":_vm.realMode},on:{\"set-subtype\":_vm.setSubtype},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},'component',_vm._data,false)),(_vm.isView)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['shift','d']),expression:\"['shift','d']\",modifiers:{\"once\":true}}],staticClass:\"hide\",attrs:{\"data-testid\":_vm.componentTestid + '-detail'},on:{\"shortkey\":function($event){return _vm.keyAction('goToDetail')}}}):_vm._e(),(_vm.isView)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['shift','c']),expression:\"['shift','c']\",modifiers:{\"once\":true}}],staticClass:\"hide\",attrs:{\"data-testid\":_vm.componentTestid + '-config'},on:{\"shortkey\":function($event){return _vm.keyAction('goToViewConfig')}}}):_vm._e(),(_vm.isView)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['shift','y']),expression:\"['shift','y']\",modifiers:{\"once\":true}}],staticClass:\"hide\",attrs:{\"data-testid\":_vm.componentTestid + '-yaml'},on:{\"shortkey\":function($event){return _vm.keyAction('goToViewYaml')}}}):_vm._e(),(_vm.isView)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['shift','e']),expression:\"['shift','e']\",modifiers:{\"once\":true}}],staticClass:\"hide\",attrs:{\"data-testid\":_vm.componentTestid + '-edit'},on:{\"shortkey\":function($event){return _vm.keyAction('goToEdit')}}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"masthead\"},[_c('header',[_c('div',{staticClass:\"title\"},[_c('div',{staticClass:\"primaryheader\"},[_c('h1',[(_vm.location)?_c('nuxt-link',{attrs:{\"to\":_vm.location}},[_vm._v(\" \"+_vm._s(_vm.parent.displayName)+\": \")]):_c('span',[_vm._v(_vm._s(_vm.parent.displayName)+\":\")]),(_vm.value.detailPageHeaderActionOverride && _vm.value.detailPageHeaderActionOverride(_vm.realMode))?_c('span',[_vm._v(_vm._s(_vm.value.detailPageHeaderActionOverride(_vm.realMode)))]):_c('t',{staticClass:\"mastehead-resource-title\",attrs:{\"k\":'resourceDetail.header.' + _vm.realMode,\"subtype\":_vm.resourceSubtype,\"name\":_vm.displayName,\"escapehtml\":false}}),(!_vm.isCreate && _vm.parent.showState)?_c('BadgeState',{staticClass:\"masthead-state\",attrs:{\"value\":_vm.value}}):_vm._e(),(!_vm.isCreate && _vm.value.injectionEnabled)?_c('span',{staticClass:\"masthead-istio\"},[_c('i',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.t('projectNamespaces.isIstioInjectionEnabled')),expression:\"t('projectNamespaces.isIstioInjectionEnabled')\"}],staticClass:\"icon icon-sm icon-istio\"})]):_vm._e()],1)]),(!_vm.isCreate)?_c('div',{staticClass:\"subheader\"},[(_vm.isNamespace && _vm.project)?_c('span',[_vm._v(_vm._s(_vm.t(\"resourceDetail.masthead.project\"))+\": \"),_c('nuxt-link',{attrs:{\"to\":_vm.project.detailLocation}},[_vm._v(_vm._s(_vm.project.nameDisplay))])],1):(_vm.isWorkspace)?_c('span',[_vm._v(_vm._s(_vm.t(\"resourceDetail.masthead.workspace\"))+\": \"),_c('nuxt-link',{attrs:{\"to\":_vm.workspaceLocation}},[_vm._v(_vm._s(_vm.namespace))])],1):(_vm.namespace && !_vm.hasMultipleNamespaces)?_c('span',[_vm._v(\" \"+_vm._s(_vm.t(\"resourceDetail.masthead.namespace\"))+\": \"),(!_vm.hideNamespaceLocation)?_c('nuxt-link',{attrs:{\"to\":_vm.namespaceLocation}},[_vm._v(\" \"+_vm._s(_vm.namespace)+\" \")]):_c('span',[_vm._v(\" \"+_vm._s(_vm.namespace)+\" \")])],1):_vm._e(),(_vm.parent.showAge)?_c('span',[_vm._v(_vm._s(_vm.t(\"resourceDetail.masthead.age\"))+\": \"),_c('LiveDate',{staticClass:\"live-date\",attrs:{\"value\":_vm.value.creationTimestamp}})],1):_vm._e(),(_vm.value.showPodRestarts)?_c('span',[_vm._v(_vm._s(_vm.t(\"resourceDetail.masthead.restartCount\"))+\":\"),_c('span',{staticClass:\"live-data\"},[_vm._v(\" \"+_vm._s(_vm.value.restartCount))])]):_vm._e()]):_vm._e()]),_vm._t(\"right\",function(){return [_c('div',{staticClass:\"actions-container align-start\"},[_c('div',{staticClass:\"actions\"},[(_vm.detailsAction && _vm.currentView === _vm.DETAIL_VIEW && _vm.isView)?_c('button',{staticClass:\"btn role-primary actions mr-10\",attrs:{\"type\":\"button\",\"disabled\":!_vm.detailsAction.enabled},on:{\"click\":_vm.invokeDetailsAction}},[_vm._v(\" \"+_vm._s(_vm.detailsAction.label)+\" \")]):_vm._e(),(_vm.showSensitiveToggle)?_c('ButtonGroup',{staticClass:\"mr-10\",attrs:{\"value\":!!_vm.hideSensitiveData,\"icon-size\":\"lg\",\"options\":_vm.sensitiveOptions},on:{\"input\":_vm.toggleSensitiveData}}):_vm._e(),(_vm.viewOptions && _vm.isView)?_c('ButtonGroup',{staticClass:\"mr-10\",attrs:{\"options\":_vm.viewOptions},model:{value:(_vm.currentView),callback:function ($$v) {_vm.currentView=$$v},expression:\"currentView\"}}):_vm._e(),(_vm.isView)?_c('button',{ref:\"actions\",staticClass:\"btn role-multi-action actions\",attrs:{\"aria-haspopup\":\"true\",\"type\":\"button\"},on:{\"click\":_vm.showActions}},[_c('i',{staticClass:\"icon icon-actions\"})]):_vm._e()],1)])]})],2),_c('ExtensionPanel',{attrs:{\"resource\":_vm.value,\"type\":_vm.extensionType,\"location\":_vm.extensionLocation}}),(_vm.banner && _vm.isView && !_vm.parent.hideBanner)?_c('Banner',{staticClass:\"state-banner mb-10\",attrs:{\"color\":_vm.banner.color,\"label\":_vm.banner.message}}):_vm._e(),(_vm.managedWarning.show)?_c('Banner',{staticClass:\"mb-20\",attrs:{\"color\":\"warning\",\"label\":_vm.t('resourceDetail.masthead.managedWarning', _vm.managedWarning)}}):_vm._e(),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Masthead.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Masthead.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Masthead.vue?vue&type=template&id=78de509a&scoped=true&\"\nimport script from \"./Masthead.vue?vue&type=script&lang=js&\"\nexport * from \"./Masthead.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Masthead.vue?vue&type=style&index=0&id=78de509a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"78de509a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"detail-top\",class:{empty: _vm.isEmpty}},[(_vm.hasNamespaces)?_c('div',{staticClass:\"labels\"},[_c('span',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.t('resourceDetail.detailTop.namespaces'))+\": \")]),_c('span',_vm._l((_vm.namespaces),function(namespace){return _c('nuxt-link',{key:namespace.name,staticClass:\"namespaceLinkList\",attrs:{\"to\":namespace.detailLocation}},[_vm._v(\" \"+_vm._s(namespace.name)+\" \")])}),1)]):_vm._e(),(_vm.description)?_c('div',{staticClass:\"description\"},[_c('span',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.t('resourceDetail.detailTop.description'))+\": \")]),_c('span',{staticClass:\"content\"},[_vm._v(_vm._s(_vm.description))])]):_vm._e(),(_vm.hasDetails)?_c('div',_vm._l((_vm.details),function(group,index){return _c('div',{key:index,staticClass:\"details\"},_vm._l((group),function(detail){return _c('div',{key:detail.label || detail.slotName,staticClass:\"detail\"},[_c('span',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(detail.label)+\": \")]),(detail.formatter)?_c(detail.formatter,_vm._b({tag:\"component\",attrs:{\"value\":detail.content}},'component',detail.formatterOpts,false)):_c('span',[_vm._v(_vm._s(detail.content))])],1)}),0)}),0):_vm._e(),(_vm.hasLabels)?_c('div',{staticClass:\"labels\"},[_c('div',{staticClass:\"tags\"},[_c('span',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.t('resourceDetail.detailTop.labels'))+\": \")]),_vm._l((_vm.labels),function(prop,key){return _c('Tag',{key:key + prop},[(_vm.internalIcons[key])?_c('i',{staticClass:\"icon\",class:_vm.internalIcons[key]}):_vm._e(),(_vm.internalTooltips[key])?_c('span',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(prop ? `${key} : ${prop}` : key),expression:\"prop ? `${key} : ${prop}` : key\"}]},[_c('span',[_vm._v(_vm._s(_vm.internalTooltips[key] ? _vm.internalTooltips[key] : key))]),(_vm.showAllLabels)?_c('span',[_vm._v(\": \"+_vm._s(key))]):_vm._e()]):_c('span',[_vm._v(_vm._s(prop ? `${key} : ${prop}` : key))])])}),(_vm.showFilteredSystemLabels)?_c('a',{staticClass:\"detail-top__label-button\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleLabels.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.t(`resourceDetail.detailTop.${_vm.showAllLabels? 'hideLabels' : 'showLabels'}`))+\" \")]):_vm._e()],2)]):_vm._e(),(_vm.hasAnnotations)?_c('div',{staticClass:\"annotations\"},[_c('span',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.t('resourceDetail.detailTop.annotations'))+\": \")]),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleAnnotations.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.t(`resourceDetail.detailTop.${_vm.annotationsVisible? 'hideAnnotations' : 'showAnnotations'}`, {annotations: _vm.annotationCount}))+\" \")]),(_vm.annotationsVisible)?_c('div',_vm._l((_vm.annotations),function(val,key){return _c('DetailText',{key:key,staticClass:\"annotation\",attrs:{\"value\":val,\"label\":key}})}),1):_vm._e()]):_vm._e(),_c('ExtensionPanel',{attrs:{\"resource\":_vm.value,\"type\":_vm.extensionType,\"location\":_vm.extensionLocation}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"tag\"},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Tag.vue?vue&type=template&id=0d281a35&scoped=true&\"\nimport script from \"./Tag.vue?vue&type=script&lang=js&\"\nexport * from \"./Tag.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Tag.vue?vue&type=style&index=0&id=0d281a35&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0d281a35\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:{'force-wrap': true, 'with-copy':_vm.copy}},[(_vm.labelKey)?_c('h5',{directives:[{name:\"t\",rawName:\"v-t\",value:(_vm.labelKey),expression:\"labelKey\"}]}):(_vm.label)?_c('h5',[_vm._v(\" \"+_vm._s(_vm.label)+\" \")]):_vm._e(),(_vm.isEmpty)?_c('span',{directives:[{name:\"t\",rawName:\"v-t\",value:('detailText.empty'),expression:\"'detailText.empty'\"}],staticClass:\"text-italic\"}):(_vm.isBinary)?_c('span',{staticClass:\"text-italic\"},[_vm._v(_vm._s(_vm.body))]):(_vm.jsonStr)?_c('CodeMirror',{class:{'conceal': _vm.concealed},attrs:{\"options\":{mode:{name:'javascript', json:true}, lineNumbers:false, foldGutter:false, readOnly:true},\"value\":_vm.jsonStr}}):_c('span',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.bodyHtml),expression:\"bodyHtml\"}],class:{'conceal': _vm.concealed, 'monospace': _vm.monospace && !_vm.isBinary},attrs:{\"data-testid\":\"detail-top_html\"}}),(!_vm.isBinary && !_vm.jsonStr && _vm.isLong && !_vm.expanded)?[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.expand.apply(null, arguments)}}},[_vm._v(_vm._s(_vm.plusMore))])]:_vm._e(),(_vm.copy && !_vm.isBinary)?_c('CopyToClipboard',{staticClass:\"role-tertiary\",attrs:{\"text\":_vm.value,\"action-color\":\"\"}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AsyncButton',_vm._b({attrs:{\"icon\":\"icon-copy\",\"show-label\":_vm.showLabel,\"action-label\":\"Copy\",\"waiting-label\":\"Copying...\",\"success-label\":\"Copied!\",\"error-label\":\"Error Copying\",\"delay\":2000},on:{\"click\":_vm.clicked}},'AsyncButton',_vm.$attrs,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyToClipboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyToClipboard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CopyToClipboard.vue?vue&type=template&id=421d1dba&\"\nimport script from \"./CopyToClipboard.vue?vue&type=script&lang=js&\"\nexport * from \"./CopyToClipboard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailText.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailText.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DetailText.vue?vue&type=template&id=348d5cf1&scoped=true&\"\nimport script from \"./DetailText.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailText.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailText.vue?vue&type=style&index=0&id=348d5cf1&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"348d5cf1\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailTop.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailTop.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DetailTop.vue?vue&type=template&id=ab4e0560&\"\nimport script from \"./DetailTop.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailTop.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailTop.vue?vue&type=style&index=0&id=ab4e0560&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"chart-container\"},[(!_vm.isChartFirstRenderAnimationFinished)?_c('div',{staticClass:\"loading-container\"},[_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isChartFirstRendered),expression:\"!isChartFirstRendered\"}]},[_vm._v(\" \"+_vm._s(_vm.t('fleet.fdc.loadingChart'))+\" \")]),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isChartFirstRendered && !_vm.isChartFirstRenderAnimationFinished),expression:\"isChartFirstRendered && !isChartFirstRenderAnimationFinished\"}]},[_vm._v(\" \"+_vm._s(_vm.t('fleet.fdc.renderingChart'))+\" \")]),_c('i',{staticClass:\"mt-10 icon-spinner icon-spin\"})]):_vm._e(),_c('div',{attrs:{\"id\":\"tree\"}}),_c('div',{staticClass:\"more-info-container\"},[_c('div',{staticClass:\"more-info\"},[_c('table',_vm._l((_vm.moreInfo),function(item,i){return _c('tr',{key:i},[(item.type !== 'single-error')?_c('td',{class:{'align-middle': item.type === 'state-badge'}},[_c('span',{staticClass:\"more-info-item-label\"},[_vm._v(_vm._s(_vm.t(item.labelKey))+\":\")])]):_vm._e(),(item.type === 'title-link')?_c('td',[(item.valueObj.detailLocation)?_c('span',[_c('n-link',{attrs:{\"to\":item.valueObj.detailLocation}},[_vm._v(\" \"+_vm._s(item.valueObj.id)+\" \")])],1):_c('span',[_vm._v(_vm._s(item.valueObj.id))])]):(item.type === 'state-badge')?_c('td',{staticClass:\"align-middle\"},[_c('span',[_c('BadgeState',{staticClass:\"state-bagde\",attrs:{\"color\":`bg-${item.valueObj.stateColor}`,\"label\":item.valueObj.stateLabel}})],1)]):_vm._e(),(item.type === 'single-error')?_c('td',{staticClass:\"single-error\",attrs:{\"colspan\":\"2\"}},[_c('p',[_vm._v(_vm._s(item.value))])]):_c('td',[_vm._v(\" \"+_vm._s(item.value)+\" \")])])}),0)])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","// This is to mitigate an issue where the SVG icons being imported from the project weren't being rendered on Firefox\n// To know more about this technique, check this doc: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs\nexport const getChartIcon = (type) => `\n\n\n\n\n\n\n\n\n\n\n\n\n\n`;\n","\n\n\n\n\n","import mod from \"-!../../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=4cb4c59b&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=4cb4c59b&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=34e1a2c7&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=34e1a2c7&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"34e1a2c7\",\n null\n \n)\n\nexport default component.exports","\nimport ResourceDetail from '@shell/components/ResourceDetail/index.vue';\n\nexport default {\n name: 'KubewardenResourceCreate',\n components: { ResourceDetail },\n};\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./create.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./create.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./create.vue?vue&type=template&id=5feb7205&\"\nimport script from \"./create.vue?vue&type=script&lang=ts&\"\nexport * from \"./create.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ResourceDetail')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport ResourceDetail from '@shell/components/ResourceDetail/index.vue';\n\nexport default {\n name: 'KubewardenResourcedId',\n components: { ResourceDetail },\n};\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./_id.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./_id.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./_id.vue?vue&type=template&id=6fbed2fe&\"\nimport script from \"./_id.vue?vue&type=script&lang=ts&\"\nexport * from \"./_id.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ResourceDetail')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport ResourceDetail from '@shell/components/ResourceDetail/index.vue';\n\nexport default {\n name: 'KubewardenResourcedNamespaceId',\n components: { ResourceDetail },\n};\n","import mod from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./_id.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./_id.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./_id.vue?vue&type=template&id=5953c8d8&\"\nimport script from \"./_id.vue?vue&type=script&lang=ts&\"\nexport * from \"./_id.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { KUBEWARDEN_PRODUCT_NAME, POLICY_REPORTER_PRODUCT } from '../types';\n\nimport Dashboard from '../pages/c/_cluster/kubewarden/index.vue';\nimport PolicyReport from '../pages/c/_cluster/kubewarden/_resource/policy-reporter.vue';\nimport KubewardenResourcedList from '../pages/c/_cluster/kubewarden/_resource/index.vue';\nimport CreateKubewardenResource from '../pages/c/_cluster/kubewarden/_resource/create.vue';\nimport ViewKubewardenResource from '../pages/c/_cluster/kubewarden/_resource/_id.vue';\nimport ViewKubewardenNsResource from '../pages/c/_cluster/kubewarden/_resource/_namespace/_id.vue';\n\nconst routes = [\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }`,\n component: Dashboard,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n },\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }-${ POLICY_REPORTER_PRODUCT }`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }/${ POLICY_REPORTER_PRODUCT }`,\n component: PolicyReport,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n },\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }-resource`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }/:resource`,\n component: KubewardenResourcedList,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n },\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }-resource-create`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }/:resource/create`,\n component: CreateKubewardenResource,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n },\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }-resource-id`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }/:resource/:id`,\n component: ViewKubewardenResource,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n },\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }-resource-namespace-id`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }/:resource/:namespace/:id`,\n component: ViewKubewardenNsResource,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n }\n];\n\nexport default routes;\n","import {\n CatalogApp, CustomResourceDefinition, PolicyReport, ClusterPolicyReport, PolicyTraceConfig\n} from '../../types';\nimport { StateConfig } from './index';\n\nexport default {\n airGapped: (state: StateConfig): Boolean => state.airGapped,\n hideBannerDefaults: (state: StateConfig): Boolean => state.hideBannerDefaults,\n hideBannerArtifactHub: (state: StateConfig): Boolean => state.hideBannerArtifactHub,\n hideBannerAirgapPolicy: (state: StateConfig): Boolean => state.hideBannerAirgapPolicy,\n controllerApp: (state: StateConfig): CatalogApp | null => state.controllerApp,\n kubewardenCrds: (state: StateConfig): CustomResourceDefinition[] => state.kubewardenCrds,\n policyReports: (state: StateConfig): PolicyReport[] => state.policyReports,\n clusterPolicyReports: (state: StateConfig): ClusterPolicyReport[] => state.clusterPolicyReports,\n policyTraces: (state: StateConfig): PolicyTraceConfig[] => state.policyTraces,\n refreshingCharts: (state: StateConfig): Boolean => state.refreshingCharts,\n};\n","import {\n CatalogApp, ClusterPolicyReport, CustomResourceDefinition, PolicyReport, PolicyTrace, PolicyTraceConfig\n} from '../../types';\nimport { StateConfig } from './index';\n\ntype ReportKeys = 'policyReports' | 'clusterPolicyReports';\n\nexport default {\n updateAirGapped(state: StateConfig, val: Boolean) {\n state.airGapped = val;\n },\n updateHideBannerDefaults(state: StateConfig, val: Boolean) {\n state.hideBannerDefaults = val;\n },\n updateHideBannerArtifactHub(state: StateConfig, val: Boolean) {\n state.hideBannerArtifactHub = val;\n },\n updateHideBannerAirgapPolicy(state: StateConfig, val: Boolean) {\n state.hideBannerAirgapPolicy = val;\n },\n\n /**\n * Updates/Adds Kubewarden Controller App into state\n * @param state\n * @param app `CatalogApp`\n */\n updateControllerApp(state: StateConfig, app: CatalogApp) {\n if ( state.controllerApp?.id === app?.id ) {\n state.controllerApp.metadata = app.metadata;\n state.controllerApp.spec = app.spec;\n state.controllerApp.status = app.status;\n } else {\n state.controllerApp = app;\n }\n },\n\n /**\n * Removes Kubewarden Controller App by ID\n * @param state\n * @param app `CatalogApp`\n */\n removeControllerApp(state: StateConfig, app: CatalogApp) {\n const existing = state.controllerApp?.id === app?.id;\n\n if ( existing ) {\n state.controllerApp = null;\n }\n },\n\n /**\n * Updates/Adds CRD to state\n * @param state\n * @param crd `CustomResourceDefinition`\n */\n updateKubewardenCrds(state: StateConfig, crd: CustomResourceDefinition) {\n const existingCrd = state.kubewardenCrds.find(c => c?.metadata?.name === crd?.metadata?.name);\n\n if ( existingCrd ) {\n existingCrd.metadata = crd.metadata;\n existingCrd.spec = crd.spec;\n existingCrd.status = crd.status;\n } else {\n state.kubewardenCrds.push(crd);\n }\n },\n\n /**\n * Removes CRD from state by `crd.metadata.name`\n * @param state\n * @param crd `CustomResourceDefinition`\n */\n removeKubewardenCrds(state: StateConfig, crd: CustomResourceDefinition) {\n const idx = state.kubewardenCrds.findIndex(c => c?.metadata?.name === crd?.metadata?.name);\n\n if ( idx !== -1 ) {\n state.kubewardenCrds.splice(idx, 1);\n }\n },\n\n /**\n * Updates/Adds a policy or cluster policy report to the store.\n * @param state - The current state object.\n * @param reportArrayKey - The key to the report array in the state to update (e.g., 'policyReports' or 'clusterPolicyReports').\n * @param updatedReport - The report object to update or add.\n */\n updateReports(\n state: StateConfig,\n { reportArrayKey, updatedReport }: { reportArrayKey: ReportKeys, updatedReport: T }\n ): void {\n const reportArray = state[reportArrayKey] as Array;\n const existingReport = reportArray.find(report => report.id === updatedReport.id);\n\n if ( existingReport ) {\n existingReport.results = updatedReport.results;\n existingReport.summary = updatedReport.summary;\n } else {\n reportArray.push(updatedReport);\n }\n },\n\n /**\n * Searches and then removes a report by id from the store\n * @param state\n * @param reportId\n */\n removePolicyReportById(state: StateConfig, reportId: String) {\n const idx = state.policyReports.findIndex(report => report.id === reportId);\n\n if ( idx !== -1 ) {\n state.policyReports.splice(idx, 1);\n }\n },\n\n /**\n * Finds the existing policy object and adds the related traces.\n * @param state\n * @param policy\n * @param updatedTrace\n */\n updatePolicyTraces(state: StateConfig, val: { policyName: string, cluster: string, updatedTrace: PolicyTrace }) {\n const { policyName, cluster, updatedTrace } = val;\n const existingPolicyObj = state.policyTraces.find((traceObj: PolicyTraceConfig) => traceObj.policyName === policyName);\n let existingTrace = existingPolicyObj?.traces.find((trace: PolicyTrace) => trace.id === updatedTrace.id);\n\n if ( existingTrace ) {\n existingTrace = updatedTrace;\n } else if ( !existingPolicyObj ) {\n state.policyTraces.push({\n policyName,\n cluster,\n traces: [updatedTrace]\n });\n } else {\n // If the trace doesn't exist, add it to the store\n existingPolicyObj?.traces.push(updatedTrace);\n }\n },\n /**\n * Searches for the existing policy object and removes a trace by the traceID from the store\n * @param state\n * @param policy\n * @param updatedTrace\n */\n removeTraceById(state: StateConfig, policy: PolicyTraceConfig, updatedTrace: PolicyTrace) {\n const existingPolicyObj = state.policyTraces.find((traceObj: PolicyTraceConfig) => traceObj.policyName === policy.policyName);\n const idx = existingPolicyObj?.traces.findIndex((trace: PolicyTrace) => trace.id === updatedTrace.id);\n\n if ( idx && idx !== -1 ) {\n existingPolicyObj?.traces.splice(idx, 1);\n }\n },\n\n updateRefreshingCharts(state: StateConfig, val: Boolean) {\n state.refreshingCharts = val;\n }\n};\n","import {\n CatalogApp, CustomResourceDefinition, PolicyReport, ClusterPolicyReport, PolicyTraceConfig, PolicyTrace\n} from '../../types';\n\nexport default {\n updateAirGapped({ commit }: any, val: Boolean) {\n commit('updateAirGapped', val);\n },\n\n // Defaults banner\n updateHideBannerDefaults({ commit }: any, val: Boolean) {\n commit('updateHideBannerDefaults', val);\n },\n\n // ArtifactHub banner\n updateHideBannerArtifactHub({ commit }: any, val: Boolean) {\n commit('updateHideBannerArtifactHub', val);\n },\n updateHideBannerAirgapPolicy({ commit }: any, val: Boolean) {\n commit('updateHideBannerAirgapPolicy', val);\n },\n\n // Policy and Cluster Policy Reports\n updatePolicyReports({ commit }: any, updatedReport: PolicyReport) {\n commit('updateReports', { reportArrayKey: 'policyReports', updatedReport });\n },\n updateClusterPolicyReports({ commit }: any, updatedReport: ClusterPolicyReport) {\n commit('updateReports', { reportArrayKey: 'clusterPolicyReports', updatedReport });\n },\n\n // Policy traces\n updatePolicyTraces({ commit }: any, val: { policyName: string, updatedTrace: PolicyTrace }) {\n commit('updatePolicyTraces', val);\n },\n removePolicyTraceById({ commit }: any, policy: PolicyTraceConfig, trace: PolicyTrace) {\n commit('removePolicyTraceById', policy, trace);\n },\n\n // Charts\n updateRefreshingCharts({ commit }: any, val: Boolean) {\n commit('updateRefreshingCharts', val);\n },\n\n // Catalog\n updateControllerApp({ commit }: any, val: CatalogApp) {\n commit('updateControllerApp', val);\n },\n removeControllerApp({ commit }: any, val: CatalogApp) {\n commit('removeControllerApp', val);\n },\n updateKubewardenCrds({ commit }: any, val: CustomResourceDefinition) {\n commit('updateKubewardenCrds', val);\n },\n removeKubewardenCrds({ commit }: any, val: CustomResourceDefinition) {\n commit('removeKubewardenCrds', val);\n }\n};\n","import { CoreStoreSpecifics, CoreStoreConfig } from '@shell/core/types';\n\nimport {\n KUBEWARDEN_PRODUCT_NAME,\n CatalogApp,\n CustomResourceDefinition,\n FleetGitRepo,\n PolicyReport,\n PolicyTraceConfig,\n ClusterPolicyReport\n} from '../../types';\n\nimport getters from './getters';\nimport mutations from './mutations';\nimport actions from './actions';\n\nexport interface StateConfig {\n airGapped: Boolean;\n fleetRepos: FleetGitRepo[];\n hideBannerDefaults: Boolean;\n hideBannerArtifactHub: Boolean;\n hideBannerAirgapPolicy: Boolean;\n controllerApp: CatalogApp | null;\n kubewardenCrds: CustomResourceDefinition[];\n policyReports: PolicyReport[];\n clusterPolicyReports: ClusterPolicyReport[];\n policyTraces: PolicyTraceConfig[];\n refreshingCharts: Boolean;\n}\n\nconst kubewardenFactory = (config: StateConfig): CoreStoreSpecifics => {\n return {\n state: (): StateConfig => {\n return {\n airGapped: config.airGapped,\n fleetRepos: config.fleetRepos,\n hideBannerDefaults: config.hideBannerDefaults,\n hideBannerArtifactHub: config.hideBannerArtifactHub,\n hideBannerAirgapPolicy: config.hideBannerAirgapPolicy,\n controllerApp: config.controllerApp,\n kubewardenCrds: config.kubewardenCrds,\n policyReports: config.policyReports,\n clusterPolicyReports: config.clusterPolicyReports,\n policyTraces: config.policyTraces,\n refreshingCharts: config.refreshingCharts\n };\n },\n\n getters: { ...getters },\n mutations: { ...mutations },\n actions: { ...actions },\n };\n};\n\nconst config: CoreStoreConfig = { namespace: KUBEWARDEN_PRODUCT_NAME };\n\nexport default {\n specifics: kubewardenFactory({\n airGapped: false,\n fleetRepos: [],\n hideBannerDefaults: false,\n hideBannerArtifactHub: false,\n hideBannerAirgapPolicy: false,\n controllerApp: null,\n kubewardenCrds: [],\n policyReports: [],\n clusterPolicyReports: [],\n policyTraces: [],\n refreshingCharts: false\n }),\n config\n};\n","import DOMPurify from 'dompurify';\nimport { uniq } from '@shell/utils/array';\n\nconst ALLOWED_TAGS = [\n 'code',\n 'li',\n 'a',\n 'p',\n 'b',\n 'br',\n 'ul',\n 'pre',\n 'span',\n 'div',\n 'i',\n 'em',\n 'strong',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'table',\n 'thead',\n 'tr',\n 'th',\n 'tbody',\n 'td',\n 'blockquote'\n];\n\n// Allow 'A' tags to keep the target=_blank attribute if they have it\nDOMPurify.addHook('uponSanitizeAttribute', (node, data) => {\n if (node.tagName === 'A' && data.attrName === 'target' && data.attrValue === '_blank') {\n data.forceKeepAttr = true;\n }\n});\n\n// Ensure if an 'A' tag has target=_blank that we add noopener, noreferrer and nofollow to the 'rel' attribute\nDOMPurify.addHook('afterSanitizeAttributes', (node) => {\n if (node.tagName === 'A' && node?.target === '_blank') {\n const rel = ['noopener', 'noreferrer', 'nofollow'];\n const existingRel = node.rel?.length ? node.rel.split(' ') : [];\n const combined = uniq([...rel, ...existingRel]);\n\n node.setAttribute('rel', combined.join(' '));\n }\n});\n\nexport const purifyHTML = (value, options = { ALLOWED_TAGS }) => {\n return DOMPurify.sanitize(value, options);\n};\n","import Vue from 'vue';\nimport { VTooltip } from 'v-tooltip';\nimport { purifyHTML } from './clean-html';\n\nfunction purifyContent(value) {\n const type = typeof value;\n\n if (type === 'string') {\n return purifyHTML(value);\n } else if (value && type === 'object' && typeof value.content === 'string') {\n return { ...value, content: purifyHTML(value.content) };\n } else {\n return value;\n }\n}\n\nfunction bind(el, { value, oldValue, modifiers }) {\n const purifiedValue = purifyContent(value);\n\n VTooltip.bind(\n el,\n {\n value: purifiedValue, oldValue, modifiers\n });\n}\n\nexport const VCleanTooltip = {\n ...VTooltip,\n bind,\n update: bind,\n};\n\nVue.directive('clean-tooltip', VCleanTooltip);\n","import Vue from 'vue';\nimport { purifyHTML } from './clean-html';\n\nexport const cleanHtmlDirective = {\n inserted(el, binding) {\n el.innerHTML = purifyHTML(binding.value);\n },\n componentUpdated(el, binding) {\n el.innerHTML = purifyHTML(binding.value);\n },\n unbind(el) {\n el.innerHTML = '';\n }\n};\n\nVue.directive('clean-html', cleanHtmlDirective);\n","import { importTypes } from '@rancher/auto-import';\nimport {\n IPlugin, TableColumnLocation, TabLocation, PanelLocation, OnNavToPackage\n} from '@shell/core/types';\nimport {\n NAMESPACE, POD, WORKLOAD_TYPES, INGRESS, SERVICE\n} from '@shell/config/types';\n\nimport kubewardenRoutes from './routes/kubewarden-routes';\nimport kubewardenStore from './store/kubewarden';\nimport { getReports } from './modules/policyReporter';\n\n// fix missing directives on dashboard v2.7.2\nimport '@shell/plugins/clean-tooltip-directive';\nimport '@shell/plugins/clean-html-directive';\n\nconst onEnter: OnNavToPackage = async(store) => {\n await getReports(store, false);\n await getReports(store, true);\n};\n\n// Init the package\nexport default function($plugin: IPlugin, args: any) {\n // Auto-import model, detail, edit from the folders\n importTypes($plugin);\n\n // Provide plugin metadata from package.json\n $plugin.metadata = require('./package.json');\n\n // Load product\n $plugin.addProduct(require('./config/kubewarden'));\n\n // Add Vuex store\n $plugin.addDashboardStore(kubewardenStore.config.namespace, kubewardenStore.specifics, kubewardenStore.config);\n\n // Routes\n $plugin.addRoutes(kubewardenRoutes);\n\n // Add hooks to Vue navigation world\n $plugin.addNavHooks(onEnter);\n\n /** Panels */\n $plugin.addPanel(\n PanelLocation.RESOURCE_LIST,\n { path: [{ urlPath: 'explorer/projectsnamespaces', endsWith: true }] },\n { component: () => import('./components/PolicyReporter/ReporterPanel.vue') }\n );\n\n $plugin.addPanel(\n PanelLocation.RESOURCE_LIST,\n {\n resource: [\n POD,\n WORKLOAD_TYPES.CRON_JOB,\n WORKLOAD_TYPES.DAEMON_SET,\n WORKLOAD_TYPES.DEPLOYMENT,\n WORKLOAD_TYPES.JOB,\n WORKLOAD_TYPES.STATEFUL_SET,\n INGRESS,\n SERVICE\n ]\n },\n { component: () => import('./components/PolicyReporter/ReporterPanel.vue') }\n );\n\n /** Columns */\n // Policy Reports for Project Namespaces\n $plugin.addTableColumn(\n TableColumnLocation.RESOURCE,\n { path: [{ urlPath: 'explorer/projectsnamespaces', endsWith: true }] },\n {\n name: 'policy-reports',\n labelKey: 'kubewarden.policyReporter.headers.policyReports.label',\n getValue: (row: any) => row,\n weight: 3,\n formatter: 'PolicyReportSummary'\n }\n );\n\n // Policy Reports for namespaced resources\n $plugin.addTableColumn(\n TableColumnLocation.RESOURCE,\n {\n resource: [\n POD,\n WORKLOAD_TYPES.CRON_JOB,\n WORKLOAD_TYPES.DAEMON_SET,\n WORKLOAD_TYPES.DEPLOYMENT,\n WORKLOAD_TYPES.JOB,\n WORKLOAD_TYPES.STATEFUL_SET,\n INGRESS,\n SERVICE\n ]\n },\n {\n name: 'policy-reports',\n labelKey: 'kubewarden.policyReporter.headers.label',\n getValue: (row: any) => row,\n weight: 3,\n formatter: 'PolicyReportSummary'\n }\n );\n\n /** Tabs */\n $plugin.addTab(\n TabLocation.RESOURCE_DETAIL,\n {\n resource: [\n NAMESPACE,\n POD,\n WORKLOAD_TYPES.CRON_JOB,\n WORKLOAD_TYPES.DAEMON_SET,\n WORKLOAD_TYPES.DEPLOYMENT,\n WORKLOAD_TYPES.JOB,\n WORKLOAD_TYPES.STATEFUL_SET,\n INGRESS,\n SERVICE\n ]\n },\n {\n name: 'policy-report-tab',\n labelKey: 'kubewarden.policyReporter.headers.label',\n weight: -5,\n showHeader: true,\n component: () => import('./components/PolicyReporter/ResourceTab.vue')\n }\n );\n}\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Authority.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Authority.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Authority.vue?vue&type=template&id=5fa70040&scoped=true&\"\nimport script from \"./Authority.vue?vue&type=script&lang=js&\"\nexport * from \"./Authority.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Authority.vue?vue&type=style&index=0&id=5fa70040&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5fa70040\",\n null\n \n)\n\nexport default component.exports","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","export const NAMESPACE_FILTER_ALL_PREFIX = 'all';\nexport const NAMESPACE_FILTER_NS_PREFIX = 'ns';\nexport const NAMESPACE_FILTER_P_PREFIX = 'project';\n\nexport const NAMESPACE_FILTER_NS_FULL_PREFIX = `${ NAMESPACE_FILTER_NS_PREFIX }://`;\nexport const NAMESPACE_FILTER_P_FULL_PREFIX = `${ NAMESPACE_FILTER_P_PREFIX }://`;\n\nexport const NAMESPACE_FILTER_ALL = NAMESPACE_FILTER_ALL_PREFIX;\nexport const NAMESPACE_FILTER_ALL_SYSTEM = `${ NAMESPACE_FILTER_ALL_PREFIX }://system`;\nexport const NAMESPACE_FILTER_ALL_USER = `${ NAMESPACE_FILTER_ALL_PREFIX }://user`;\nexport const NAMESPACE_FILTER_ALL_ORPHANS = `${ NAMESPACE_FILTER_ALL_PREFIX }://orphans`;\nexport const NAMESPACE_FILTER_NAMESPACED_PREFIX = 'namespaced://';\nexport const NAMESPACE_FILTER_NAMESPACED_YES = 'namespaced://true';\nexport const NAMESPACE_FILTER_NAMESPACED_NO = 'namespaced://false';\n\nexport const NAMESPACE_FILTER_KINDS = {\n DIVIDER: 'divider',\n PROJECT: 'project',\n NAMESPACE: 'namespace',\n SPECIAL: 'special'\n};\n\nconst SEPARATOR = '__%%__';\n\nexport const createNamespaceFilterKey = (clusterId, product) => {\n if (!product?.customNamespaceFilter) {\n return clusterId;\n }\n\n return createNamespaceFilterKeyWithId(clusterId, product.name);\n};\nexport const createNamespaceFilterKeyWithId = (clusterId, productId) => {\n return `${ clusterId }${ SEPARATOR }${ productId }`;\n};\n\nexport const splitNamespaceFilterKey = (key) => {\n const [clusterId, productId] = key.split(SEPARATOR);\n\n return {\n clusterId,\n productId\n };\n};\n","import { MANAGEMENT } from '@shell/config/types';\nimport { Store } from 'vuex';\nimport { DEFAULT_PERF_SETTING, PerfSettings, SETTING } from '@shell/config/settings';\n\nexport const fetchOrCreateSetting = async(store: Store, id: string, val: string, save = true): Promise => {\n let setting;\n\n try {\n setting = await store.dispatch('management/find', { type: MANAGEMENT.SETTING, id });\n } catch {\n const schema = store.getters['management/schemaFor'](MANAGEMENT.SETTING);\n const url = schema.linkFor('collection');\n\n setting = await store.dispatch('management/create', {\n type: MANAGEMENT.SETTING, metadata: { name: id }, value: val, default: val || ''\n });\n if ( save ) {\n await setting.save({ url });\n }\n }\n\n return setting;\n};\n\n/**\n * Fetch a specific setting that might not exist\n * We fetch all settings - reality is Rancher will have done this already, so there's no overhead in doing\n * this - but if we fetch a specific setting that does not exist, we will get a 404, which we don't want\n */\nexport const fetchSetting = async(store: Store, id: string): Promise => {\n const all = await store.dispatch('management/findAll', { type: MANAGEMENT.SETTING });\n const setting = (all || []).find((setting: any) => setting.id === id);\n\n return setting;\n};\n\nexport const setSetting = async(store: Store, id: string, val: string): Promise => {\n const setting = await fetchOrCreateSetting(store, id, val, false);\n\n setting.value = val;\n await setting.save();\n\n return setting;\n};\n\nexport const getPerformanceSetting = (rootGetters: Record any>): PerfSettings => {\n const perfSettingResource = rootGetters['management/byId'](MANAGEMENT.SETTING, SETTING.UI_PERFORMANCE);\n let perfSetting = {};\n\n if (perfSettingResource?.value) {\n try {\n perfSetting = JSON.parse(perfSettingResource.value);\n } catch (e) {\n console.warn('ui-performance setting contains invalid data'); // eslint-disable-line no-console\n }\n }\n\n // Start with the default and overwrite the values from the setting - ensures we have defaults for newly added options\n return Object.assign(DEFAULT_PERF_SETTING, perfSetting || {});\n};\n","import { NAMESPACE_FILTER_NS_FULL_PREFIX, NAMESPACE_FILTER_P_FULL_PREFIX } from '@shell/utils/namespace-filter';\nimport { getPerformanceSetting } from '@shell/utils/settings';\n\ntype Opt = { [key: string]: any, namespaced?: string[]}\n\nclass ProjectAndNamespaceFiltering {\n static param = 'projectsornamespaces'\n\n /**\n * Does the request `opt` definition require resources are fetched from a specific set namespaces/projects?\n */\n isApplicable(opt: Opt): boolean {\n return Array.isArray(opt.namespaced);\n }\n\n isEnabled(rootGetters: any): boolean {\n const currentProduct = rootGetters['currentProduct'];\n\n // Only enable for the cluster store at the moment. In theory this should work in management as well, as they're both 'steve' stores\n if (currentProduct?.inStore !== 'cluster') {\n return false;\n }\n\n if (currentProduct?.showWorkspaceSwitcher) {\n return false;\n }\n\n const perfConfig = getPerformanceSetting(rootGetters);\n\n if (!perfConfig.forceNsFilterV2?.enabled) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Check if `opt` requires resources from specific ns/projects, if so return the required query param (x=y)\n */\n checkAndCreateParam(opt: Opt): string {\n if (!this.isApplicable(opt)) {\n return '';\n }\n\n return this.createParam(opt.namespaced);\n }\n\n private createParam(namespaceFilter: string[] | undefined): string {\n if (!namespaceFilter || !namespaceFilter.length) {\n return '';\n }\n\n const projectsOrNamespaces = namespaceFilter\n .map((f) => f.replace(NAMESPACE_FILTER_NS_FULL_PREFIX, '')\n .replace(NAMESPACE_FILTER_P_FULL_PREFIX, ''))\n .join(',');\n\n return `${ ProjectAndNamespaceFiltering.param }=${ projectsOrNamespaces }`;\n }\n}\n\nexport default new ProjectAndNamespaceFiltering();\n","import { NAMESPACE_FILTER_NS_PREFIX, NAMESPACE_FILTER_P_PREFIX } from '@shell/utils/namespace-filter';\nimport { mapGetters } from 'vuex';\nimport { ResourceListComponentName } from '../components/ResourceList/resource-list.config';\nimport pAndNFiltering from '@shell/utils/projectAndNamespaceFiltering.utils';\n\n/**\n * Companion mixin used with `resource-fetch` for `ResourceList` to determine if the user needs to filter the list by a single namespace\n */\nexport default {\n\n data() {\n return { forceUpdateLiveAndDelayed: 0 };\n },\n\n computed: {\n ...mapGetters(['currentProduct', 'currentCluster', 'namespaceFilters']),\n\n /**\n * Does the user need to update the filter to supply a single namespace?\n */\n namespaceFilterRequired() {\n return this.__namespaceRequired && !this.__validFilter;\n },\n\n /**\n * Returns the namespace that requests should be filtered by\n */\n namespaceFilter() {\n return this.__namespaceRequired ? this.__validFilter : '';\n },\n\n /**\n * If the Project/Namespace filter from the header contains a valid ns / project filter ... return it\n */\n __validFilter() {\n const valid = this.namespaceFilters.length && this.namespaceFilters.every((f) => f.startsWith(NAMESPACE_FILTER_NS_PREFIX) || f.startsWith(NAMESPACE_FILTER_P_PREFIX));\n\n return valid ? this.namespaceFilters : null;\n },\n\n /**\n * Do we need to filter the list by a namespace? This will control whether the user is shown an error\n *\n * We shouldn't show an error on pages with resources that aren't namespaced\n */\n __namespaceRequired() {\n if (!pAndNFiltering.isEnabled(this.$store.getters)) {\n return false;\n }\n\n return this.__areResourcesNamespaced;\n },\n\n /**\n * Are all core list resources namespaced?\n */\n __areResourcesNamespaced() {\n // Only enable for the cluster store at the moment. In theory this should work in management as well, as they're both 'steve' stores\n if (this.currentProduct.inStore !== 'cluster') {\n return false;\n }\n\n return (this.loadResources || []).every((type) => {\n const schema = this.$store.getters['cluster/schemaFor'](type);\n\n return schema?.attributes?.namespaced;\n });\n },\n\n },\n\n watch: {\n async namespaceFilter(neu) {\n if (neu) {\n // When a NS filter is required and the user selects a different one, kick off a new set of API requests\n //\n // ResourceList has two modes\n // 1) ResourceList component handles API request to fetch resources\n // 2) Custom list component handles API request to fetch resources\n //\n // This covers case 2\n if (this.$options.name !== ResourceListComponentName && !!this.$fetch) {\n await this.$fetch();\n }\n // Ensure any live/delayed columns get updated\n this.forceUpdateLiveAndDelayed = new Date().getTime();\n }\n }\n }\n};\n","import { mapGetters } from 'vuex';\nimport { COUNT, MANAGEMENT } from '@shell/config/types';\nimport { SETTING, DEFAULT_PERF_SETTING } from '@shell/config/settings';\nimport ResourceFetchNamespaced from '@shell/mixins/resource-fetch-namespaced';\n\n// Number of pages to fetch when loading incrementally\nconst PAGES = 4;\n\nexport default {\n\n mixins: [ResourceFetchNamespaced],\n\n data() {\n // fetching the settings related to manual refresh from global settings\n const perfSetting = this.$store.getters['management/byId'](MANAGEMENT.SETTING, SETTING.UI_PERFORMANCE);\n let perfConfig = {};\n\n if (perfSetting && perfSetting.value) {\n try {\n perfConfig = JSON.parse(perfSetting.value);\n } catch (e) {\n console.warn('ui-performance setting contains invalid data'); // eslint-disable-line no-console\n }\n } else {\n perfConfig = DEFAULT_PERF_SETTING;\n }\n\n return {\n perfConfig,\n init: false,\n multipleResources: [],\n loadResources: [this.resource],\n // manual refresh vars\n hasManualRefresh: false,\n watch: true,\n isTooManyItemsToAutoUpdate: false,\n force: false,\n // incremental loading vars\n incremental: false,\n fetchedResourceType: [],\n };\n },\n beforeDestroy() {\n // make sure this only runs once, for the initialized instance\n if (this.init) {\n // clear up the store to make sure we aren't storing anything that might interfere with the next rendered list view\n this.$store.dispatch('resource-fetch/clearData');\n\n this.fetchedResourceType.forEach((item) => {\n this.$store.dispatch(`${ item.currStore }/incrementLoadCounter`, item.type);\n });\n }\n },\n\n computed: {\n ...mapGetters({ refreshFlag: 'resource-fetch/refreshFlag' }),\n rows() {\n const currResource = this.fetchedResourceType.find((item) => item.type === this.resource);\n\n if (currResource) {\n return this.$store.getters[`${ currResource.currStore }/all`](this.resource);\n } else {\n return [];\n }\n },\n loading() {\n return this.rows.length ? false : this.$fetchState.pending;\n },\n },\n watch: {\n refreshFlag(neu) {\n // this is where the data assignment will trigger the update of the list view...\n if (this.init && neu) {\n this.$fetch();\n }\n }\n },\n methods: {\n // this defines all the flags needed for the mechanism\n // to work. They should be defined based on the main list view\n // resource that is to be displayed. The secondary resources\n // fetched should follow what was defined (if it is manual and/or incremental)\n $initializeFetchData(type, multipleResources = [], storeType) {\n if (!this.init) {\n const currStore = storeType || this.$store.getters['currentStore']();\n\n this.__gatherResourceFetchData(type, multipleResources, currStore);\n\n // make sure after init that, if we have a manual refresh, we always set the force = true\n if (!this.watch) {\n this.force = true;\n }\n\n if (this.isTooManyItemsToAutoUpdate) {\n this.hasManualRefresh = true;\n }\n }\n },\n // data fetching for the mechanism\n $fetchType(type, multipleResources = [], storeType) {\n const currStore = storeType || this.$store.getters['currentStore']();\n\n this.$initializeFetchData(type, multipleResources, currStore);\n\n if (!this.fetchedResourceType.find((item) => item.type === type)) {\n this.fetchedResourceType.push({\n type,\n currStore\n });\n }\n\n let incremental = 0;\n\n if (this.incremental) {\n const resourceCount = this.__getCountForResources([type], this.namespaceFilter, currStore);\n\n incremental = Math.ceil(resourceCount / PAGES);\n }\n\n const opt = {\n incremental,\n watch: this.watch,\n force: this.force,\n hasManualRefresh: this.hasManualRefresh\n };\n\n const schema = this.$store.getters[`${ currStore }/schemaFor`](type);\n\n if (schema?.attributes?.namespaced) { // Is this specific resource namespaced (could be primary or secondary resource)?\n opt.namespaced = this.namespaceFilter; // namespaceFilter will only be populated if applicable for primary resource\n }\n\n return this.$store.dispatch(`${ currStore }/findAll`, {\n type,\n opt\n });\n },\n\n __getCountForResources(resourceNames, namespace, storeType) {\n const currStore = storeType || this.$store.getters['currentStore']();\n\n return resourceNames.reduce((res, type) => res + this.__getCountForResource(type, namespace, currStore), 0);\n },\n\n __getCountForResource(resourceName, namespace, storeType) {\n const resourceCounts = this.$store.getters[`${ storeType }/all`](COUNT)[0]?.counts[`${ resourceName }`]; // NB `rancher` store behaves differently, lacks counts but has resource\n const resourceCount = namespace && resourceCounts?.namespaces ? resourceCounts?.namespaces[namespace]?.count : resourceCounts?.summary?.count;\n\n return resourceCount || 0;\n },\n\n __gatherResourceFetchData(resourceName, multipleResources, currStore) {\n // flag to prevent a first data update being triggered from the requestData watcher\n this.init = true;\n\n // manual refresh settings config\n const manualDataRefreshEnabled = this.perfConfig?.manualRefresh?.enabled;\n const manualDataRefreshThreshold = parseInt(this.perfConfig?.manualRefresh?.threshold || '0', 10);\n\n // incremental loading settings config\n const incrementalLoadingEnabled = this.perfConfig?.incrementalLoading?.enabled;\n const incrementalLoadingThreshold = parseInt(this.perfConfig?.incrementalLoading?.threshold || '0', 10);\n\n // other vars\n this.multipleResources = multipleResources;\n let resourceCount = 0;\n\n // manual refresh vars\n let watch = true;\n let isTooManyItemsToAutoUpdate = false;\n\n // incremental loading vars\n let incremental = false;\n\n // get resource counts\n const resourcesForCount = this.multipleResources.length ? this.multipleResources : [resourceName];\n\n resourceCount = this.__getCountForResources(resourcesForCount, this.namespaceFilter, currStore);\n\n // manual refresh check\n if (manualDataRefreshEnabled && resourceCount >= manualDataRefreshThreshold) {\n watch = false;\n isTooManyItemsToAutoUpdate = true;\n }\n\n // incremental loading check\n incremental = incrementalLoadingEnabled && incrementalLoadingThreshold > 0 && resourceCount >= incrementalLoadingThreshold;\n\n // pass on the flag that controls the appearance of the manual refresh button on the sortable table\n this.$store.dispatch('resource-fetch/updateIsTooManyItems', isTooManyItemsToAutoUpdate);\n\n // set vars on mixin to be used on $fetchType\n this.watch = watch;\n this.isTooManyItemsToAutoUpdate = isTooManyItemsToAutoUpdate;\n this.incremental = incremental;\n },\n },\n};\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".radio-group:focus{border:none;outline:none}.radio-group h3{position:relative}.radio-group.row{display:flex}.radio-group.row .radio-container{margin-right:10px}.radio-group .label{font-size:14px!important}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/*\n * Jexl\n * Copyright 2019 Tom Shawver\n */\n\nconst handlers = require('./handlers')\nconst states = require('./states').states\n\n/**\n * The Parser is a state machine that converts tokens from the {@link Lexer}\n * into an Abstract Syntax Tree (AST), capable of being evaluated in any\n * context by the {@link Evaluator}. The Parser expects that all tokens\n * provided to it are legal and typed properly according to the grammar, but\n * accepts that the tokens may still be in an invalid order or in some other\n * unparsable configuration that requires it to throw an Error.\n * @param {{}} grammar The grammar map to use to parse Jexl strings\n * @param {string} [prefix] A string prefix to prepend to the expression string\n * for error messaging purposes. This is useful for when a new Parser is\n * instantiated to parse an subexpression, as the parent Parser's\n * expression string thus far can be passed for a more user-friendly\n * error message.\n * @param {{}} [stopMap] A mapping of token types to any truthy value. When the\n * token type is encountered, the parser will return the mapped value\n * instead of boolean false.\n */\nclass Parser {\n constructor(grammar, prefix, stopMap) {\n this._grammar = grammar\n this._state = 'expectOperand'\n this._tree = null\n this._exprStr = prefix || ''\n this._relative = false\n this._stopMap = stopMap || {}\n }\n\n /**\n * Processes a new token into the AST and manages the transitions of the state\n * machine.\n * @param {{type: }} token A token object, as provided by the\n * {@link Lexer#tokenize} function.\n * @throws {Error} if a token is added when the Parser has been marked as\n * complete by {@link #complete}, or if an unexpected token type is added.\n * @returns {boolean|*} the stopState value if this parser encountered a token\n * in the stopState mapb false if tokens can continue.\n */\n addToken(token) {\n if (this._state === 'complete') {\n throw new Error('Cannot add a new token to a completed Parser')\n }\n const state = states[this._state]\n const startExpr = this._exprStr\n this._exprStr += token.raw\n if (state.subHandler) {\n if (!this._subParser) {\n this._startSubExpression(startExpr)\n }\n const stopState = this._subParser.addToken(token)\n if (stopState) {\n this._endSubExpression()\n if (this._parentStop) return stopState\n this._state = stopState\n }\n } else if (state.tokenTypes[token.type]) {\n const typeOpts = state.tokenTypes[token.type]\n let handleFunc = handlers[token.type]\n if (typeOpts.handler) {\n handleFunc = typeOpts.handler\n }\n if (handleFunc) {\n handleFunc.call(this, token)\n }\n if (typeOpts.toState) {\n this._state = typeOpts.toState\n }\n } else if (this._stopMap[token.type]) {\n return this._stopMap[token.type]\n } else {\n throw new Error(\n `Token ${token.raw} (${token.type}) unexpected in expression: ${this._exprStr}`\n )\n }\n return false\n }\n\n /**\n * Processes an array of tokens iteratively through the {@link #addToken}\n * function.\n * @param {Array<{type: }>} tokens An array of tokens, as provided by\n * the {@link Lexer#tokenize} function.\n */\n addTokens(tokens) {\n tokens.forEach(this.addToken, this)\n }\n\n /**\n * Marks this Parser instance as completed and retrieves the full AST.\n * @returns {{}|null} a full expression tree, ready for evaluation by the\n * {@link Evaluator#eval} function, or null if no tokens were passed to\n * the parser before complete was called\n * @throws {Error} if the parser is not in a state where it's legal to end\n * the expression, indicating that the expression is incomplete\n */\n complete() {\n if (this._cursor && !states[this._state].completable) {\n throw new Error(`Unexpected end of expression: ${this._exprStr}`)\n }\n if (this._subParser) {\n this._endSubExpression()\n }\n this._state = 'complete'\n return this._cursor ? this._tree : null\n }\n\n /**\n * Indicates whether the expression tree contains a relative path identifier.\n * @returns {boolean} true if a relative identifier exists false otherwise.\n */\n isRelative() {\n return this._relative\n }\n\n /**\n * Ends a subexpression by completing the subParser and passing its result\n * to the subHandler configured in the current state.\n * @private\n */\n _endSubExpression() {\n states[this._state].subHandler.call(this, this._subParser.complete())\n this._subParser = null\n }\n\n /**\n * Places a new tree node at the current position of the cursor (to the 'right'\n * property) and then advances the cursor to the new node. This function also\n * handles setting the parent of the new node.\n * @param {{type: }} node A node to be added to the AST\n * @private\n */\n _placeAtCursor(node) {\n if (!this._cursor) {\n this._tree = node\n } else {\n this._cursor.right = node\n this._setParent(node, this._cursor)\n }\n this._cursor = node\n }\n\n /**\n * Places a tree node before the current position of the cursor, replacing\n * the node that the cursor currently points to. This should only be called in\n * cases where the cursor is known to exist, and the provided node already\n * contains a pointer to what's at the cursor currently.\n * @param {{type: }} node A node to be added to the AST\n * @private\n */\n _placeBeforeCursor(node) {\n this._cursor = this._cursor._parent\n this._placeAtCursor(node)\n }\n\n /**\n * Sets the parent of a node by creating a non-enumerable _parent property\n * that points to the supplied parent argument.\n * @param {{type: }} node A node of the AST on which to set a new\n * parent\n * @param {{type: }} parent An existing node of the AST to serve as the\n * parent of the new node\n * @private\n */\n _setParent(node, parent) {\n Object.defineProperty(node, '_parent', {\n value: parent,\n writable: true\n })\n }\n\n /**\n * Prepares the Parser to accept a subexpression by (re)instantiating the\n * subParser.\n * @param {string} [exprStr] The expression string to prefix to the new Parser\n * @private\n */\n _startSubExpression(exprStr) {\n let endStates = states[this._state].endStates\n if (!endStates) {\n this._parentStop = true\n endStates = this._stopMap\n }\n this._subParser = new Parser(this._grammar, exprStr, endStates)\n }\n}\n\nmodule.exports = Parser\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nmodule.exports = negate;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('p',{staticClass:\"col span-12 mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyConfig.namespaceSelector.description'))+\" \")]),[_c('InfoBox',{ref:\"infobox\"},[_c('div',{staticClass:\"row mb-20\"},[_c('div',{staticClass:\"col span-12\"},[_c('h4',[_c('t',{attrs:{\"k\":\"kubewarden.policyConfig.namespaceSelector.matchExpressions.label\"}}),_c('i',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.t('kubewarden.policyConfig.namespaceSelector.matchExpressions.tooltip')),expression:\"t('kubewarden.policyConfig.namespaceSelector.matchExpressions.tooltip')\"}],staticClass:\"icon icon-info icon-lg\"})],1),_c('span',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.t('kubewarden.policyConfig.namespaceSelector.matchExpressions.tooltip')),expression:\"t('kubewarden.policyConfig.namespaceSelector.matchExpressions.tooltip')\"}]}),_c('MatchExpressions',{ref:\"matchexp\",attrs:{\"mode\":_vm.mode,\"show-remove\":false,\"type\":_vm.POD},model:{value:(_vm.matchExpressions),callback:function ($$v) {_vm.matchExpressions=$$v},expression:\"matchExpressions\"}})],1)]),_c('h4',[_c('t',{attrs:{\"k\":\"kubewarden.policyConfig.namespaceSelector.matchLabels.label\"}}),_c('i',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.t('kubewarden.policyConfig.namespaceSelector.matchLabels.tooltip')),expression:\"t('kubewarden.policyConfig.namespaceSelector.matchLabels.tooltip')\"}],staticClass:\"icon icon-info icon-lg\"})],1),_c('div',{staticClass:\"row mb-20\"},[_c('div',{staticClass:\"col span-12\"},[_c('KeyValue',{attrs:{\"mode\":_vm.mode},model:{value:(_vm.matchLabels),callback:function ($$v) {_vm.matchLabels=$$v},expression:\"matchLabels\"}})],1)])])]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.showRemove && !_vm.isView)?_c('button',{staticClass:\"btn role-link remove-expression\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.$emit('remove')}}},[_c('i',{staticClass:\"icon icon-x\"})]):_vm._e(),(_vm.rules.length)?_c('div',{staticClass:\"match-expression-header\",class:{ 'view':_vm.isView, 'match-expression-header-matching': _vm.matchingSelectorDisplay }},[(_vm.matchingSelectorDisplay)?_c('label',[_vm._v(\" \"+_vm._s(_vm.t('workload.scheduling.affinity.matchExpressions.matchType'))+\" \")]):_vm._e(),_c('label',[_vm._v(\" \"+_vm._s(_vm.t('workload.scheduling.affinity.matchExpressions.key'))+\" \")]),_c('label',[_vm._v(\" \"+_vm._s(_vm.t('workload.scheduling.affinity.matchExpressions.operator'))+\" \")]),_c('label',[_vm._v(\" \"+_vm._s(_vm.t('workload.scheduling.affinity.matchExpressions.value'))+\" \")]),_c('span')]):_vm._e(),_vm._l((_vm.rules),function(row,index){return _c('div',{key:row.id,staticClass:\"match-expression-row\",class:{'view':_vm.isView, 'mb-10': index !== _vm.rules.length - 1, 'match-expression-row-matching': _vm.matchingSelectorDisplay}},[(_vm.matchingSelectorDisplay)?_c('div',{attrs:{\"data-testid\":`input-match-type-field-${index}`}},[(_vm.isView)?_c('div',[_vm._v(\" \"+_vm._s(row.matching)+\" \")]):_c('LabeledSelect',{attrs:{\"mode\":_vm.mode,\"options\":_vm.matchingSelectOptions,\"data-testid\":`input-match-type-field-control-${index}`},on:{\"selecting\":_vm.update},model:{value:(row.matching),callback:function ($$v) {_vm.$set(row, \"matching\", $$v)},expression:\"row.matching\"}})],1):_vm._e(),_c('div',{attrs:{\"data-testid\":`input-match-expression-key-${index}`}},[(_vm.isView)?_c('div',[_vm._v(\" \"+_vm._s(row.key)+\" \")]):(!_vm.hasKeySelectOptions)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(row.key),expression:\"row.key\"}],attrs:{\"mode\":_vm.mode,\"data-testid\":`input-match-expression-key-control-${index}`},domProps:{\"value\":(row.key)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(row, \"key\", $event.target.value)},_vm.update]}}):_c('LabeledSelect',{attrs:{\"mode\":_vm.mode,\"options\":_vm.keysSelectOptions,\"data-testid\":`input-match-expression-key-control-select-${index}`},model:{value:(row.key),callback:function ($$v) {_vm.$set(row, \"key\", $$v)},expression:\"row.key\"}})],1),_c('div',{attrs:{\"data-testid\":`input-match-expression-operator-${index}`}},[(_vm.isView)?_c('div',[_vm._v(\" \"+_vm._s(row.operator)+\" \")]):_c('Select',{staticClass:\"operator single\",attrs:{\"options\":_vm.ops,\"clearable\":false,\"reduce\":opt=>opt.value,\"mode\":_vm.mode,\"data-testid\":`input-match-expression-operator-control-${index}`},on:{\"input\":_vm.update},model:{value:(row.operator),callback:function ($$v) {_vm.$set(row, \"operator\", $$v)},expression:\"row.operator\"}})],1),(row.operator==='Exists' || row.operator==='DoesNotExist')?_c('div',{staticClass:\"no-value\"},[_c('label',{staticClass:\"text-muted\"},[_vm._v(\"…\")])]):_c('div',{attrs:{\"data-testid\":`input-match-expression-values-${index}`}},[(_vm.isView)?_c('div',[_vm._v(\" \"+_vm._s(row.values)+\" \")]):_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(row.values),expression:\"row.values\"}],attrs:{\"mode\":_vm.mode,\"disabled\":row.operator==='Exists' || row.operator==='DoesNotExist',\"data-testid\":`input-match-expression-values-control-${index}`},domProps:{\"value\":(row.values)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(row, \"values\", $event.target.value)},_vm.update]}})]),(_vm.showRemoveButton)?_c('div',{staticClass:\"remove-container\"},[(!_vm.isView)?_c('button',{staticClass:\"btn role-link\",style:({padding:'0px'}),attrs:{\"type\":\"button\",\"disabled\":_vm.mode==='view',\"data-testid\":`input-match-expression-remove-control-${index}`},on:{\"click\":function($event){return _vm.removeRule(row)}}},[_c('t',{attrs:{\"k\":\"generic.remove\"}})],1):_vm._e()]):_vm._e()])}),(!_vm.isView && _vm.showAddButton)?_c('div',{staticClass:\"mt-20\"},[_c('button',{staticClass:\"btn role-tertiary add\",attrs:{\"type\":\"button\",\"data-testid\":`input-match-expression-add-rule`},on:{\"click\":_vm.addRule}},[_c('t',{attrs:{\"k\":\"workload.scheduling.affinity.matchExpressions.addRule\"}})],1)]):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { isArray, addObject, findBy } from '@shell/utils/array';\nimport { get } from '@shell/utils/object';\n\nconst parseCache = {};\n\nconst OP_MAP = {\n '=': 'In',\n '==': 'In',\n '!=': 'NotIn',\n '<': 'Lt',\n '>': 'Gt',\n};\n\n// Parse a labelSelector string\nexport function parse(labelSelector) {\n // matchLabels:\n // comma-separated list, all rules ANDed together\n // spaces may be encoded as +\n //\n // Equals: foo = bar\n // Not Equals: bar != baz\n // Key Exists: optional.prefix/just-some-key\n // Key Doesn't: !optional.prefix/just-some-key\n // In Set: environment in (production,qa)\n // Not in Set: environment notin (production,qa)\n\n // Convert into matchExpressions, which newer resources support\n // and express the same things\n //\n // Object of:\n // key: optional.prefix/some-key\n // operator: In, NotIn, Exists, or DoesNotExist\n // values: [array, of, values, even, if, only, one]\n\n labelSelector = labelSelector.replace(/\\+/g, ' ');\n\n if ( parseCache[labelSelector] ) {\n return parseCache[labelSelector];\n }\n\n let match;\n const out = [];\n const parens = [];\n\n // Substitute out all the parenthetical lists because they might have commas in them\n match = labelSelector.match(/\\([^)]+\\)/g);\n if ( match && match.length ) {\n for ( const str of match ) {\n const val = str.replace(/^\\s*\\(\\s*/, '').replace(/\\s*\\)\\s*$/, '').split(/\\s*,\\s*/);\n\n parens.push(val);\n labelSelector = labelSelector.replace(str, ` @${ parens.length - 1 } `);\n }\n }\n\n const parts = labelSelector.split(/\\s*,\\s*/).filter((x) => !!x);\n\n for ( let rule of parts ) {\n rule = rule.trim();\n\n match = rule.match(/^(.*?)\\s+((not\\s*)?in)\\s+@(\\d+)*$/i);\n\n if ( match ) {\n out.push({\n key: match[1].trim(),\n operator: match[2].toLowerCase().replace(/\\s/g, '') === 'notin' ? 'NotIn' : 'In',\n values: parens[match[4].trim()],\n });\n\n continue;\n }\n\n match = rule.match(/^([^!=]*)\\s*(\\!=|=|==|>|<)\\s*([^!=]*)$/);\n if ( match ) {\n out.push({\n key: match[1].trim(),\n operator: OP_MAP[match[2]],\n values: [match[3].trim()],\n });\n\n continue;\n }\n\n if ( rule.startsWith('!') ) {\n out.push({\n key: rule.substr(1).trim(),\n operator: 'DoesNotExist'\n });\n\n continue;\n }\n\n out.push({\n key: rule.trim(),\n operator: 'Exists'\n });\n }\n\n parseCache[labelSelector] = out;\n\n return out;\n}\n\n// Convert a Selector object to matchExpressions\nexport function convertSelectorObj(obj) {\n return convert(obj.matchLabels || {}, obj.matchExpressions || []);\n}\n\n// Convert matchLabels to matchExpressions\n// Optionally combining with an existing set of matchExpressions\nexport function convert(matchLabelsObj, matchExpressions) {\n const keys = Object.keys(matchLabelsObj || {});\n const out = matchExpressions || [];\n\n for ( const key of keys ) {\n const value = matchLabelsObj[key];\n const existing = findBy(out, { key, operator: 'In' });\n\n if ( existing ) {\n addObject(existing.values, value);\n } else {\n out.push({\n key,\n operator: 'In',\n values: isArray(value) ? value : [value],\n });\n }\n }\n\n return out;\n}\n\n// Convert matchExpressions to matchLabels when possible,\n// returning the simplest combination of them.\nexport function simplify(matchExpressionsInput) {\n const matchLabels = {};\n const matchExpressions = [];\n\n // Look for keys with more than one \"In\" expression and disqualify them from simplifying\n const impossible = [];\n const seen = {};\n\n for ( const expr of matchExpressionsInput ) {\n if ( expr.operator !== 'In' ) {\n continue;\n }\n\n if ( seen[expr.key] ) {\n addObject(impossible, expr.key);\n } else {\n seen[expr.key] = true;\n }\n }\n\n for ( const expr of matchExpressionsInput ) {\n if ( expr.operator === 'In' && expr.values.length === 1 && !impossible.includes(expr.key) ) {\n matchLabels[expr.key] = expr.values[0];\n } else {\n matchExpressions.push(Object.assign({}, expr));\n }\n }\n\n return { matchLabels, matchExpressions };\n}\n\nexport function matches(obj, selector, labelKey = 'metadata.labels') {\n let rules = [];\n\n if ( typeof selector === 'string' ) {\n // labelSelector string\n rules = parse(selector);\n } else if ( isArray(selector) ) {\n // Already matchExpression\n rules = selector;\n } else if ( typeof selector === 'object' && selector ) {\n // matchLabels object\n rules = convert(selector);\n } else {\n return false;\n }\n\n const labels = get(obj, labelKey) || {};\n\n for ( const rule of rules ) {\n const value = labels[rule.key];\n const asInt = parseInt(value, 10);\n const exists = typeof labels[rule.key] !== 'undefined';\n\n switch ( rule.operator ) {\n case 'Exists':\n if ( !exists ) {\n return false;\n }\n break;\n case 'DoesNotExist':\n if ( exists ) {\n return false;\n }\n break;\n case 'In':\n // we need to cater empty strings because when creating a label with value = null it's translated into a empty string value ''\n if ( !rule.values.length || !rule.values.includes(value) ) {\n return false;\n }\n break;\n case 'NotIn':\n if ( rule.values.includes(value) ) {\n return false;\n }\n break;\n case 'Lt':\n if ( isNaN(asInt) || asInt >= Math.min.apply(null, rule.values) ) {\n return false;\n }\n break;\n case 'Gt':\n if ( isNaN(asInt) || asInt <= Math.max.apply(null, rule.values) ) {\n return false;\n }\n break;\n }\n }\n\n return true;\n}\n\nexport function matching(ary, selector, labelKey) {\n return ary.filter((obj) => matches(obj, selector, labelKey));\n}\n","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MatchExpressions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MatchExpressions.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MatchExpressions.vue?vue&type=template&id=3512fedb&scoped=true&\"\nimport script from \"./MatchExpressions.vue?vue&type=script&lang=js&\"\nexport * from \"./MatchExpressions.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MatchExpressions.vue?vue&type=style&index=0&id=3512fedb&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3512fedb\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"info-box\",class:{'stepped': !!_vm.step}},[(_vm.step)?_c('div',{staticClass:\"step-number mb-10\"},[_c('h2',[_vm._v(\"Step \"+_vm._s(_vm.step))])]):_vm._e(),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoBox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoBox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InfoBox.vue?vue&type=template&id=1c5683df&scoped=true&\"\nimport script from \"./InfoBox.vue?vue&type=script&lang=js&\"\nexport * from \"./InfoBox.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InfoBox.vue?vue&type=style&index=0&id=1c5683df&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1c5683df\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=7d09310e&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoBox.vue?vue&type=style&index=0&id=1c5683df&prod&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".yaml-editor[data-v-93239522]{display:flex;flex-direction:column}.yaml-editor .fill[data-v-93239522]{flex:1}.yaml-editor[data-v-93239522] .code-mirror{position:relative}.yaml-editor[data-v-93239522] .code-mirror .CodeMirror,.yaml-editor[data-v-93239522] .code-mirror .CodeMirror .CodeMirror-gutters{background-color:var(--yaml-editor-bg)}.yaml-editor .diff-mode[data-v-93239522]{background-color:var(--diff-header-bg);padding:5px 5px;border-bottom-right-radius:0;border-bottom-left-radius:0}.yaml-editor .d2h-file-wrapper[data-v-93239522]{border-top-right-radius:0}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./BadgeState.vue?vue&type=style&index=1&id=70e48e16&prod&lang=scss&\"","/*\nLanguage: Diff\nDescription: Unified and context diff\nAuthor: Vasily Polovnyov \nWebsite: https://www.gnu.org/software/diffutils/\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction diff(hljs) {\n const regex = hljs.regex;\n return {\n name: 'Diff',\n aliases: [ 'patch' ],\n contains: [\n {\n className: 'meta',\n relevance: 10,\n match: regex.either(\n /^@@ +-\\d+,\\d+ +\\+\\d+,\\d+ +@@/,\n /^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$/,\n /^--- +\\d+,\\d+ +----$/\n )\n },\n {\n className: 'comment',\n variants: [\n {\n begin: regex.either(\n /Index: /,\n /^index/,\n /={3,}/,\n /^-{3}/,\n /^\\*{3} /,\n /^\\+{3}/,\n /^diff --git/\n ),\n end: /$/\n },\n { match: /^\\*{15}$/ }\n ]\n },\n {\n className: 'addition',\n begin: /^\\+/,\n end: /$/\n },\n {\n className: 'deletion',\n begin: /^-/,\n end: /$/\n },\n {\n className: 'addition',\n begin: /^!/,\n end: /$/\n }\n ]\n };\n}\n\nmodule.exports = diff;\n","export function camelToTitle(str) {\n return dasherize((str || '')).split('-').map((str) => {\n return ucFirst(str);\n }).join(' ');\n}\n\nexport function ucFirst(str) {\n str = str || '';\n\n return str.substr(0, 1).toUpperCase() + str.substr(1);\n}\n\nexport function lcFirst(str) {\n str = str || '';\n\n return str.substr(0, 1).toLowerCase() + str.substr(1);\n}\n\nexport function strPad(str, toLength, padChars = ' ', right = false) {\n str = `${ str }`;\n\n if (str.length >= toLength) {\n return str;\n }\n\n const neededLen = toLength - str.length + 1;\n const padStr = (new Array(neededLen)).join(padChars).substr(0, neededLen);\n\n if (right) {\n return str + padStr;\n } else {\n return padStr + str;\n }\n}\n\n// Turn thing1 into thing00000001 so that the numbers sort numerically\nexport function sortableNumericSuffix(str) {\n str = str || '';\n const match = str.match(/^(.*[^0-9])([0-9]+)$/);\n\n if (match) {\n return match[1] + strPad(match[2], 8, '0');\n }\n\n return str;\n}\n\nconst entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\n\nexport function escapeHtml(html) {\n return String(html).replace(/[&<>\"']/g, (s) => {\n return entityMap[s];\n });\n}\n\n/**\n * Return HTML markup from escaped HTML string, allowing specific tags\n * @param text string\n * @returns string\n */\nexport function decodeHtml(text) {\n const div = document.createElement('div');\n\n div.innerHTML = text;\n\n return div.textContent || div.innerText || '';\n}\n\nexport function escapeRegex(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n}\n\nexport function random32(count) {\n count = Math.max(0, count || 1);\n\n const out = [];\n let i;\n\n if (window.crypto && window.crypto.getRandomValues) {\n const tmp = new Uint32Array(count);\n\n window.crypto.getRandomValues(tmp);\n for (i = 0; i < tmp.length; i++) {\n out[i] = tmp[i];\n }\n } else {\n for (i = 0; i < count; i++) {\n out[i] = Math.random() * 4294967296; // Math.pow(2,32);\n }\n }\n\n if (count === 1) {\n return out[0];\n } else {\n return out;\n }\n}\n\nconst alpha = 'abcdefghijklmnopqrstuvwxyz';\nconst num = '0123456789';\nconst sym = '!@#$%^&*()_+-=[]{};:,./<>?|';\n\nexport const CHARSET = {\n NUMERIC: num,\n NO_VOWELS: 'bcdfghjklmnpqrstvwxz2456789',\n ALPHA: alpha + alpha.toUpperCase(),\n ALPHA_NUM: alpha + alpha.toUpperCase() + num,\n ALPHA_LOWER: alpha,\n ALPHA_UPPER: alpha.toUpperCase(),\n HEX: `${ num }ABCDEF`,\n PASSWORD: alpha + alpha.toUpperCase() + num + alpha + alpha.toUpperCase() + num + sym,\n // ^-- includes alpha / ALPHA / num twice to reduce the occurrence of symbols\n};\n\nexport function randomStr(length = 16, chars = CHARSET.ALPHA_NUM) {\n if (!chars || !chars.length) {\n return null;\n }\n\n return random32(length).map((val) => {\n return chars[val % chars.length];\n }).join('');\n}\n\nexport function formatPercent(value, maxPrecision = 2) {\n if (value < 1 && maxPrecision >= 2) {\n return `${ Math.round(value * 100) / 100 }%`;\n } else if (value < 10 && maxPrecision >= 1) {\n return `${ Math.round(value * 10) / 10 }%`;\n } else {\n return `${ Math.round(value) }%`;\n }\n}\n\nexport function pluralize(str) {\n if ( str.match(/.*[^aeiou]y$/i) ) {\n return `${ str.substr(0, str.length - 1) }ies`;\n } else if ( str.endsWith('ics') ) {\n return str;\n } else if ( str.endsWith('s') ) {\n return `${ str }es`;\n } else {\n return `${ str }s`;\n }\n}\n\nexport function resourceNames(names, plusMore, t) {\n return names.reduce((res, name, i) => {\n if (i >= 5) {\n return res;\n }\n res += `${ escapeHtml( name ) }`;\n if (i === names.length - 1) {\n res += plusMore;\n } else {\n res += i === names.length - 2 ? t('generic.and') : t('generic.comma');\n }\n\n return res;\n }, '');\n}\n\nexport function indent(lines, count = 2, token = ' ', afterRegex = null) {\n if (typeof lines === 'string') {\n lines = lines.split(/\\n/);\n } else {\n lines = lines || [];\n }\n\n const padStr = (new Array(count + 1)).join(token);\n\n const out = lines.map((line) => {\n let prefix = '';\n let suffix = line;\n\n if (afterRegex) {\n const match = line.match(afterRegex);\n\n if (match) {\n prefix = match[match.length - 1];\n suffix = line.substr(match[0].length);\n }\n }\n\n return `${ prefix }${ padStr }${ suffix }`;\n });\n\n const str = out.join('\\n');\n\n return str;\n}\n\nconst decamelizeRegex = /([a-z\\d])([A-Z])/g;\n\nexport function decamelize(str) {\n return str.replace(decamelizeRegex, '$1_$2').toLowerCase();\n}\n\nconst dasherizeRegex = /[ _]/g;\n\nexport function dasherize(str) {\n return decamelize(str).replace(dasherizeRegex, '-');\n}\n\nexport function asciiLike(str) {\n str = str || '';\n\n if ( str.match(/[^\\r\\n\\t\\x20-\\x7F]/) ) {\n return false;\n }\n\n return true;\n}\n\nexport function coerceStringTypeToScalarType(val, type) {\n if ( type === 'float' ) {\n // Coerce strings to floats\n val = parseFloat(val) || null; // NaN becomes null\n } else if ( type === 'int' ) {\n // Coerce strings to ints\n val = parseInt(val, 10);\n\n if ( isNaN(val) ) {\n val = null;\n }\n } else if ( type === 'boolean') {\n // Coerce strings to boolean\n if (val.toLowerCase() === 'true') {\n val = true;\n } else if (val.toLowerCase() === 'false') {\n val = false;\n }\n }\n\n return val;\n}\n\nexport function matchesSomeRegex(stringRaw, regexes = []) {\n return regexes.some((regexRaw) => {\n const string = stringRaw || '';\n const regex = ensureRegex(regexRaw);\n\n return string.match(regex);\n });\n}\n\nexport function ensureRegex(strOrRegex, exact = true) {\n if ( typeof strOrRegex === 'string' ) {\n if ( exact ) {\n return new RegExp(`^${ escapeRegex(strOrRegex) }$`, 'i');\n } else {\n return new RegExp(`${ escapeRegex(strOrRegex) }`, 'i');\n }\n }\n\n return strOrRegex;\n}\n\nexport function nlToBr(value) {\n return escapeHtml(value || '').replace(/(\\r\\n|\\r|\\n)/g, '
\\n');\n}\n\nconst quotedMatch = /[^.\"']+|\"([^\"]*)\"|'([^']*)'/g;\n\nexport function splitObjectPath(path) {\n if ( path.includes('\"') || path.includes(\"'\") ) {\n // Path with quoted section\n return path.match(quotedMatch).map((x) => x.replace(/['\"]/g, ''));\n }\n\n // Regular path\n return path.split('.');\n}\n\nexport function joinObjectPath(ary) {\n let out = '';\n\n for ( const p of ary ) {\n if ( p.includes('.') ) {\n out += `.\"${ p }\"`;\n } else {\n out += `.${ p }`;\n }\n }\n\n if ( out.startsWith('.') ) {\n out = out.substr(1);\n }\n\n return out;\n}\n\nexport function shortenedImage(image) {\n return (image || '')\n .replace(/^(index\\.)?docker.io\\/(library\\/)?/, '')\n .replace(/:latest$/, '')\n .replace(/^(.*@sha256:)([0-9a-f]{8})[0-9a-f]+$/i, '$1$2…');\n}\n\nexport function isIpv4(ip) {\n const reg = /^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/;\n\n return reg.test(ip);\n}\n\nexport function sanitizeKey(k) {\n return (k || '').replace(/[^a-z0-9./_-]/ig, '');\n}\n\nexport function sanitizeValue(v) {\n return (v || '').replace(/[^a-z0-9._-]/ig, '');\n}\n\nexport function sanitizeIP(v) {\n return (v || '').replace(/[^a-z0-9.:_-]/ig, '');\n}\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"::v-deep P{font-size:medium;line-height:normal;font-weight:400;letter-spacing:normal;font-style:normal}.markdown blockquote{color:#656d76;border-left:.25em solid #d0d7de;padding:0 1em;margin-bottom:16px}.markdown table{border-collapse:collapse}.markdown TH{text-align:left;border:1px solid #e3e7eb}.markdown table tr th{font-weight:700;text-align:left;margin:0;padding:6px 13px}.markdown table tr td{text-align:left;margin:0;padding:6px 13px;border:1px solid #e3e7eb}.markdown table tr td :first-child,.markdown table tr th :first-child{margin-top:0}.markdown table tr td :last-child,.markdown table tr th :last-child{margin-bottom:0}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/*\n * Copyright 2011 Twitter, Inc.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// This file is for use with Node.js. See dist/ for browser files.\n\nvar Hogan = require('./compiler');\nHogan.Template = require('./template').Template;\nHogan.template = Hogan.Template;\nmodule.exports = Hogan;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/*\nLanguage: JSON\nDescription: JSON (JavaScript Object Notation) is a lightweight data-interchange format.\nAuthor: Ivan Sagalaev \nWebsite: http://www.json.org\nCategory: common, protocols, web\n*/\n\nfunction json(hljs) {\n const ATTRIBUTE = {\n className: 'attr',\n begin: /\"(\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n relevance: 1.01\n };\n const PUNCTUATION = {\n match: /[{}[\\],:]/,\n className: \"punctuation\",\n relevance: 0\n };\n const LITERALS = [\n \"true\",\n \"false\",\n \"null\"\n ];\n // NOTE: normally we would rely on `keywords` for this but using a mode here allows us\n // - to use the very tight `illegal: \\S` rule later to flag any other character\n // - as illegal indicating that despite looking like JSON we do not truly have\n // - JSON and thus improve false-positively greatly since JSON will try and claim\n // - all sorts of JSON looking stuff\n const LITERALS_MODE = {\n scope: \"literal\",\n beginKeywords: LITERALS.join(\" \"),\n };\n\n return {\n name: 'JSON',\n keywords:{\n literal: LITERALS,\n },\n contains: [\n ATTRIBUTE,\n PUNCTUATION,\n hljs.QUOTE_STRING_MODE,\n LITERALS_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: '\\\\S'\n };\n}\n\nmodule.exports = json;\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","/*\nLanguage: TOML, also INI\nDescription: TOML aims to be a minimal configuration file format that's easy to read due to obvious semantics.\nContributors: Guillaume Gomez \nCategory: common, config\nWebsite: https://github.com/toml-lang/toml\n*/\n\nfunction ini(hljs) {\n const regex = hljs.regex;\n const NUMBERS = {\n className: 'number',\n relevance: 0,\n variants: [\n { begin: /([+-]+)?[\\d]+_[\\d_]+/ },\n { begin: hljs.NUMBER_RE }\n ]\n };\n const COMMENTS = hljs.COMMENT();\n COMMENTS.variants = [\n {\n begin: /;/,\n end: /$/\n },\n {\n begin: /#/,\n end: /$/\n }\n ];\n const VARIABLES = {\n className: 'variable',\n variants: [\n { begin: /\\$[\\w\\d\"][\\w\\d_]*/ },\n { begin: /\\$\\{(.*?)\\}/ }\n ]\n };\n const LITERALS = {\n className: 'literal',\n begin: /\\bon|off|true|false|yes|no\\b/\n };\n const STRINGS = {\n className: \"string\",\n contains: [ hljs.BACKSLASH_ESCAPE ],\n variants: [\n {\n begin: \"'''\",\n end: \"'''\",\n relevance: 10\n },\n {\n begin: '\"\"\"',\n end: '\"\"\"',\n relevance: 10\n },\n {\n begin: '\"',\n end: '\"'\n },\n {\n begin: \"'\",\n end: \"'\"\n }\n ]\n };\n const ARRAY = {\n begin: /\\[/,\n end: /\\]/,\n contains: [\n COMMENTS,\n LITERALS,\n VARIABLES,\n STRINGS,\n NUMBERS,\n 'self'\n ],\n relevance: 0\n };\n\n const BARE_KEY = /[A-Za-z0-9_-]+/;\n const QUOTED_KEY_DOUBLE_QUOTE = /\"(\\\\\"|[^\"])*\"/;\n const QUOTED_KEY_SINGLE_QUOTE = /'[^']*'/;\n const ANY_KEY = regex.either(\n BARE_KEY, QUOTED_KEY_DOUBLE_QUOTE, QUOTED_KEY_SINGLE_QUOTE\n );\n const DOTTED_KEY = regex.concat(\n ANY_KEY, '(\\\\s*\\\\.\\\\s*', ANY_KEY, ')*',\n regex.lookahead(/\\s*=\\s*[^#\\s]/)\n );\n\n return {\n name: 'TOML, also INI',\n aliases: [ 'toml' ],\n case_insensitive: true,\n illegal: /\\S/,\n contains: [\n COMMENTS,\n {\n className: 'section',\n begin: /\\[+/,\n end: /\\]+/\n },\n {\n begin: DOTTED_KEY,\n className: 'attr',\n starts: {\n end: /$/,\n contains: [\n COMMENTS,\n ARRAY,\n LITERALS,\n VARIABLES,\n STRINGS,\n NUMBERS\n ]\n }\n }\n ]\n };\n}\n\nmodule.exports = ini;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Tab.vue?vue&type=template&id=667bdd63&scoped=true&\"\nimport script from \"./Tab.vue?vue&type=script&lang=js&\"\nexport * from \"./Tab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Tab.vue?vue&type=style&index=0&id=667bdd63&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"667bdd63\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.globalrole.vue?vue&type=style&index=0&id=effd72b0&prod&lang=scss&scoped=true&\"","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","export * from \"-!../../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Authority.vue?vue&type=style&index=0&id=5fa70040&prod&lang=scss&scoped=true&\"","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".container .title[data-v-37141aab]{display:flex;flex-wrap:wrap;flex-direction:column;justify-content:center;align-items:center;text-align:center;margin:100px 0}.container .description[data-v-37141aab]{line-height:20px}.container .chart-route[data-v-37141aab]{position:relative}.container .airgap-align[data-v-37141aab]{justify-content:start}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col span-12\"},[_c('h3',{attrs:{\"data-testid\":\"ps-config-source-authorities-title\"}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.sourceAuthorities.title'))+\" \")]),_vm._l((_vm.rows),function(row,index){return [_c('Authority',{key:index,ref:\"authority\",refInFor:true,attrs:{\"mode\":_vm.mode},on:{\"update\":function($event){return _vm.updateAuthority($event, index)}},scopedSlots:_vm._u([{key:\"remove\",fn:function(){return [_c('button',{staticClass:\"btn role-link remove btn-sm\",attrs:{\"data-testid\":`ps-config-authority-remove-button-${ index }`,\"type\":\"button\",\"disabled\":_vm.isView},on:{\"click\":function($event){return _vm.removeRegistry(index)}}},[_c('i',{staticClass:\"icon icon-2x icon-x\"})])]},proxy:true}],null,true),model:{value:(_vm.rows[index]),callback:function ($$v) {_vm.$set(_vm.rows, index, $$v)},expression:\"rows[index]\"}})]}),_c('button',{staticClass:\"btn role-tertiary add\",attrs:{\"data-testid\":\"ps-config-source-authorities-add-button\",\"type\":\"button\",\"disabled\":_vm.isView},on:{\"click\":function($event){return _vm.addRegistry()}}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.sourceAuthorities.add'))+\" \")])],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SourceAuthorities.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SourceAuthorities.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SourceAuthorities.vue?vue&type=template&id=189c4c6b&scoped=true&\"\nimport script from \"./SourceAuthorities.vue?vue&type=script&lang=js&\"\nexport * from \"./SourceAuthorities.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SourceAuthorities.vue?vue&type=style&index=0&id=189c4c6b&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"189c4c6b\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./LabeledSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./LabeledSelect.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabeledSelect.vue?vue&type=template&id=529406d8&scoped=true&\"\nimport script from \"./LabeledSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./LabeledSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LabeledSelect.vue?vue&type=style&index=0&id=529406d8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"529406d8\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=02ac34ae&prod&lang=scss&scoped=true&\"","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Select.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Select.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Select.vue?vue&type=template&id=55a8f708&scoped=true&\"\nimport script from \"./Select.vue?vue&type=script&lang=js&\"\nexport * from \"./Select.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Select.vue?vue&type=style&index=0&id=55a8f708&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"55a8f708\",\n null\n \n)\n\nexport default component.exports","/**\n * Sets the width of a DOM element. Adapted from [youmightnotneedjquery.com](https://youmightnotneedjquery.com/#set_width)\n * @param {Element} el - The target DOM element\n * @param {function | string | number} val - The desired width represented as a Number\n */\nexport function setWidth(el, val) {\n if (!el) {\n return;\n }\n\n if (typeof val === 'function') {\n val = val();\n }\n\n if (typeof val === 'string') {\n el.style.width = val;\n\n return;\n }\n\n el.style.width = `${ val }px`;\n}\n\n/**\n * Gets the width of a DOM element. Adapted from [youmightnotneedjquery.com](https://youmightnotneedjquery.com/#get_width)\n * @param {Element} el - The target DOM element\n * @returns Number representing the width for the provided element\n */\nexport function getWidth(el) {\n if (!el || !el.length) {\n return;\n }\n\n if (el.length) {\n return parseFloat(getComputedStyle(el[0]).width.replace('px', ''));\n } else {\n return parseFloat(getComputedStyle(el).width.replace('px', ''));\n }\n}\n","import Vue from 'vue';\nimport { _EDIT, _VIEW } from '@shell/config/query-params';\nimport { getWidth, setWidth } from '@shell/utils/width';\n\ninterface LabeledFormElement {\n raised: boolean;\n focused: boolean;\n blurred: number | null;\n}\n\nexport default Vue.extend({\n inheritAttrs: false,\n\n props: {\n mode: {\n type: String,\n default: _EDIT,\n },\n\n label: {\n type: String,\n default: null\n },\n\n labelKey: {\n type: String,\n default: null\n },\n\n placeholderKey: {\n type: String,\n default: null\n },\n\n tooltip: {\n type: [String, Object],\n default: null\n },\n\n hoverTooltip: {\n type: Boolean,\n default: true,\n },\n\n tooltipKey: {\n type: String,\n default: null\n },\n\n required: {\n type: Boolean,\n default: false,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n\n placeholder: {\n type: [String, Number],\n default: ''\n },\n\n value: {\n type: [String, Number, Object],\n default: ''\n },\n\n options: {\n default: null,\n type: Array\n },\n\n searchable: {\n default: false,\n type: Boolean\n },\n\n rules: {\n default: () => [],\n type: Array,\n // we only want functions in the rules array\n validator: (rules: any) => rules.every((rule: any) => ['function'].includes(typeof rule))\n },\n\n requireDirty: {\n default: true,\n type: Boolean\n }\n },\n\n data(): LabeledFormElement {\n return {\n raised: this.mode === _VIEW || !!`${ this.value }`,\n focused: false,\n blurred: null,\n };\n },\n\n computed: {\n requiredField(): boolean {\n // using \"any\" for a type on \"rule\" here is dirty but the use of the optional chaining operator makes it safe for what we're doing here.\n return (this.required || this.rules.some((rule: any): boolean => rule?.name === 'required'));\n },\n empty(): boolean {\n return !!`${ this.value }`;\n },\n\n isView(): boolean {\n return this.mode === _VIEW;\n },\n\n isDisabled(): boolean {\n return this.disabled || this.isView;\n },\n\n isSearchable(): boolean {\n const { searchable } = this;\n const options = ( this.options || [] );\n\n if (searchable || options.length >= 10) {\n return true;\n }\n\n return false;\n },\n validationMessage(): string | undefined {\n // we want to grab the required rule passed in if we can but if it's not there then we can just grab it from the formRulesGenerator\n const requiredRule = this.rules.find((rule: any) => rule?.name === 'required') as Function;\n const ruleMessages = [];\n const value = this?.value;\n\n if (requiredRule && this.blurred && !this.focused) {\n const message = requiredRule(value);\n\n if (!!message) {\n return message;\n }\n }\n\n for (const rule of this.rules as Function[]) {\n const message = rule(value);\n\n if (!!message && rule.name !== 'required') { // we're catching 'required' above so we can ignore it here\n ruleMessages.push(message);\n }\n }\n if (ruleMessages.length > 0 && (this.blurred || this.focused || !this.requireDirty)) {\n return ruleMessages.join(', ');\n } else {\n return undefined;\n }\n }\n },\n\n methods: {\n resizeHandler() {\n // since the DD is positioned there is no way to 'inherit' the size of the input, this calcs the size of the parent and set the dd width if it is smaller. If not let it grow with the regular styles\n this.$nextTick(() => {\n const DD = (this.$refs.select as HTMLElement).querySelector('ul.vs__dropdown-menu');\n\n const selectWidth = getWidth(this.$refs.select as Element) || 0;\n const dropWidth = getWidth(DD as Element) || 0;\n\n if (dropWidth < selectWidth) {\n setWidth(DD as Element, selectWidth);\n }\n });\n },\n onFocus() {\n this.$emit('on-focus');\n\n return this.onFocusLabeled();\n },\n\n onFocusLabeled() {\n this.raised = true;\n this.focused = true;\n },\n\n onBlur() {\n this.$emit('on-blur');\n\n return this.onBlurLabeled();\n },\n\n onBlurLabeled() {\n this.focused = false;\n\n if ( !this.value ) {\n this.raised = false;\n }\n\n this.blurred = Date.now();\n }\n }\n});\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".header[data-v-438d868c]{display:flex}.header .title[data-v-438d868c]{flex-basis:40%}.header .title[data-v-438d868c],.header .title .product[data-v-438d868c]{display:flex;align-items:center}.header .title .product-image[data-v-438d868c]{display:flex;min-width:40px;min-height:40px;margin:10px 10px 10px 0;overflow:hidden}.header .title .product-image .logo[data-v-438d868c]{max-width:40px;max-height:50px}.step-sequence[data-v-438d868c]{flex:1;min-height:60px;display:flex;width:100%}.step-sequence .steps[data-v-438d868c]{flex:1;margin:0 30px;display:flex;justify-content:space-between;align-items:center;list-style-type:none;padding:0}.step-sequence .steps[data-v-438d868c]:focus{outline:none;box-shadow:none}.step-sequence .steps li.step[data-v-438d868c]{display:flex;flex-direction:row;flex-grow:1;align-items:center}.step-sequence .steps li.step>span>span[data-v-438d868c]:last-of-type{padding-bottom:0}.step-sequence .steps li.step[data-v-438d868c]:last-of-type{flex-grow:0}.step-sequence .steps li.step .controls[data-v-438d868c]{display:flex;flex-direction:column;align-items:center;width:40px;overflow:visible;padding-top:15px}.step-sequence .steps li.step .controls>span[data-v-438d868c]{padding-bottom:5px;margin-bottom:5px;white-space:nowrap}.step-sequence .steps li.step.active .controls[data-v-438d868c]{color:var(--primary)}.step-sequence .steps li.step:not(.disabled) .controls:hover>*[data-v-438d868c]{color:var(--primary)!important;cursor:pointer}.step-sequence .steps li.step:not(.active) .controls>*[data-v-438d868c]{color:var(--input-disabled-text);text-decoration:none}.step-sequence .steps .divider[data-v-438d868c]{flex-basis:100%;border-top:1px solid var(--border);position:relative;height:1px;bottom:8px}.step-container[data-v-438d868c]{display:flex;flex-direction:column;justify-content:center;align-items:center}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.project.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.project.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./management.cattle.io.project.vue?vue&type=template&id=3a26ac99&scoped=true&\"\nimport script from \"./management.cattle.io.project.vue?vue&type=script&lang=js&\"\nexport * from \"./management.cattle.io.project.vue?vue&type=script&lang=js&\"\nimport style0 from \"./management.cattle.io.project.vue?vue&type=style&index=0&id=3a26ac99&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3a26ac99\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.loaded)?_c('div',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.html),expression:\"html\"}],staticClass:\"markdown\"}):_c('Loading')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Markdown.vue?vue&type=template&id=1e0a67a5&\"\nimport script from \"./Markdown.vue?vue&type=script&lang=js&\"\nexport * from \"./Markdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Markdown.vue?vue&type=style&index=0&id=1e0a67a5&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","// https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html#jls-3.10\nvar decimalDigits = '[0-9](_*[0-9])*';\nvar frac = `\\\\.(${decimalDigits})`;\nvar hexDigits = '[0-9a-fA-F](_*[0-9a-fA-F])*';\nvar NUMERIC = {\n className: 'number',\n variants: [\n // DecimalFloatingPointLiteral\n // including ExponentPart\n { begin: `(\\\\b(${decimalDigits})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n // excluding ExponentPart\n { begin: `\\\\b(${decimalDigits})((${frac})[fFdD]?\\\\b|\\\\.([fFdD]\\\\b)?)` },\n { begin: `(${frac})[fFdD]?\\\\b` },\n { begin: `\\\\b(${decimalDigits})[fFdD]\\\\b` },\n\n // HexadecimalFloatingPointLiteral\n { begin: `\\\\b0[xX]((${hexDigits})\\\\.?|(${hexDigits})?\\\\.(${hexDigits}))` +\n `[pP][+-]?(${decimalDigits})[fFdD]?\\\\b` },\n\n // DecimalIntegerLiteral\n { begin: '\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\b' },\n\n // HexIntegerLiteral\n { begin: `\\\\b0[xX](${hexDigits})[lL]?\\\\b` },\n\n // OctalIntegerLiteral\n { begin: '\\\\b0(_*[0-7])*[lL]?\\\\b' },\n\n // BinaryIntegerLiteral\n { begin: '\\\\b0[bB][01](_*[01])*[lL]?\\\\b' },\n ],\n relevance: 0\n};\n\n/*\n Language: Kotlin\n Description: Kotlin is an OSS statically typed programming language that targets the JVM, Android, JavaScript and Native.\n Author: Sergey Mashkov \n Website: https://kotlinlang.org\n Category: common\n */\n\nfunction kotlin(hljs) {\n const KEYWORDS = {\n keyword:\n 'abstract as val var vararg get set class object open private protected public noinline '\n + 'crossinline dynamic final enum if else do while for when throw try catch finally '\n + 'import package is in fun override companion reified inline lateinit init '\n + 'interface annotation data sealed internal infix operator out by constructor super '\n + 'tailrec where const inner suspend typealias external expect actual',\n built_in:\n 'Byte Short Char Int Long Boolean Float Double Void Unit Nothing',\n literal:\n 'true false null'\n };\n const KEYWORDS_WITH_LABEL = {\n className: 'keyword',\n begin: /\\b(break|continue|return|this)\\b/,\n starts: { contains: [\n {\n className: 'symbol',\n begin: /@\\w+/\n }\n ] }\n };\n const LABEL = {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '@'\n };\n\n // for string templates\n const SUBST = {\n className: 'subst',\n begin: /\\$\\{/,\n end: /\\}/,\n contains: [ hljs.C_NUMBER_MODE ]\n };\n const VARIABLE = {\n className: 'variable',\n begin: '\\\\$' + hljs.UNDERSCORE_IDENT_RE\n };\n const STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"\"\"',\n end: '\"\"\"(?=[^\"])',\n contains: [\n VARIABLE,\n SUBST\n ]\n },\n // Can't use built-in modes easily, as we want to use STRING in the meta\n // context as 'meta-string' and there's no syntax to remove explicitly set\n // classNames in built-in modes.\n {\n begin: '\\'',\n end: '\\'',\n illegal: /\\n/,\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '\"',\n end: '\"',\n illegal: /\\n/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VARIABLE,\n SUBST\n ]\n }\n ]\n };\n SUBST.contains.push(STRING);\n\n const ANNOTATION_USE_SITE = {\n className: 'meta',\n begin: '@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\s*:(?:\\\\s*' + hljs.UNDERSCORE_IDENT_RE + ')?'\n };\n const ANNOTATION = {\n className: 'meta',\n begin: '@' + hljs.UNDERSCORE_IDENT_RE,\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [\n hljs.inherit(STRING, { className: 'string' }),\n \"self\"\n ]\n }\n ]\n };\n\n // https://kotlinlang.org/docs/reference/whatsnew11.html#underscores-in-numeric-literals\n // According to the doc above, the number mode of kotlin is the same as java 8,\n // so the code below is copied from java.js\n const KOTLIN_NUMBER_MODE = NUMERIC;\n const KOTLIN_NESTED_COMMENT = hljs.COMMENT(\n '/\\\\*', '\\\\*/',\n { contains: [ hljs.C_BLOCK_COMMENT_MODE ] }\n );\n const KOTLIN_PAREN_TYPE = { variants: [\n {\n className: 'type',\n begin: hljs.UNDERSCORE_IDENT_RE\n },\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [] // defined later\n }\n ] };\n const KOTLIN_PAREN_TYPE2 = KOTLIN_PAREN_TYPE;\n KOTLIN_PAREN_TYPE2.variants[1].contains = [ KOTLIN_PAREN_TYPE ];\n KOTLIN_PAREN_TYPE.variants[1].contains = [ KOTLIN_PAREN_TYPE2 ];\n\n return {\n name: 'Kotlin',\n aliases: [\n 'kt',\n 'kts'\n ],\n keywords: KEYWORDS,\n contains: [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT,\n KEYWORDS_WITH_LABEL,\n LABEL,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n {\n className: 'function',\n beginKeywords: 'fun',\n end: '[(]|$',\n returnBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n relevance: 5,\n contains: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n returnBegin: true,\n relevance: 0,\n contains: [ hljs.UNDERSCORE_TITLE_MODE ]\n },\n {\n className: 'type',\n begin: //,\n keywords: 'reified',\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n endsParent: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n {\n begin: /:/,\n end: /[=,\\/]/,\n endsWithParent: true,\n contains: [\n KOTLIN_PAREN_TYPE,\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT\n ],\n relevance: 0\n },\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n STRING,\n hljs.C_NUMBER_MODE\n ]\n },\n KOTLIN_NESTED_COMMENT\n ]\n },\n {\n begin: [\n /class|interface|trait/,\n /\\s+/,\n hljs.UNDERSCORE_IDENT_RE\n ],\n beginScope: {\n 3: \"title.class\"\n },\n keywords: 'class interface trait',\n end: /[:\\{(]|$/,\n excludeEnd: true,\n illegal: 'extends implements',\n contains: [\n { beginKeywords: 'public protected internal private constructor' },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'type',\n begin: //,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n {\n className: 'type',\n begin: /[,:]\\s*/,\n end: /[<\\(,){\\s]|$/,\n excludeBegin: true,\n returnEnd: true\n },\n ANNOTATION_USE_SITE,\n ANNOTATION\n ]\n },\n STRING,\n {\n className: 'meta',\n begin: \"^#!/usr/bin/env\",\n end: '$',\n illegal: '\\n'\n },\n KOTLIN_NUMBER_MODE\n ]\n };\n}\n\nmodule.exports = kotlin;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".name-col div[data-v-0f9e8327]:after,.name-col div[data-v-0f9e8327]:before{content:unset;display:unset}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"mt-10\"},[_c('div',{staticClass:\"mb-30\"},[_vm._v(\" \"+_vm._s(_vm.t('promptRemove.attemptingToRemove', { type: _vm.type }))+\" \"),_c('span',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.podNames),expression:\"podNames\"}],staticClass:\"machine-name\"})]),_c('div',{staticClass:\"mb-30\"},[_c('Checkbox',{attrs:{\"label\":_vm.t('promptForceRemove.forceDelete')},model:{value:(_vm.forceDelete),callback:function ($$v) {_vm.forceDelete=$$v},expression:\"forceDelete\"}})],1),_c('Banner',{attrs:{\"color\":\"warning\",\"label-key\":\"promptForceRemove.podRemoveWarning\"}}),_vm._l((_vm.errors),function(error,i){return _c('Banner',{key:i,attrs:{\"color\":\"error\",\"label\":error}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./pod.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./pod.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pod.vue?vue&type=template&id=db441fb2&scoped=true&\"\nimport script from \"./pod.vue?vue&type=script&lang=js&\"\nexport * from \"./pod.vue?vue&type=script&lang=js&\"\nimport style0 from \"./pod.vue?vue&type=style&index=0&id=db441fb2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"db441fb2\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Rule.vue?vue&type=template&id=6f396b80&scoped=true&\"\nimport script from \"./Rule.vue?vue&type=script&lang=js&\"\nexport * from \"./Rule.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Rule.vue?vue&type=style&index=0&id=6f396b80&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6f396b80\",\n null\n \n)\n\nexport default component.exports","import { ANNOTATIONS_TO_IGNORE_REGEX, LABELS_TO_IGNORE_REGEX } from '@shell/config/labels-annotations';\nimport omitBy from 'lodash/omitBy';\nimport pickBy from 'lodash/pickBy';\nimport Vue from 'vue';\nimport { matchesSomeRegex } from '@shell/utils/string';\nimport Resource from '@shell/plugins/dashboard-store/resource-class';\n\n// these are defined elsewhere in Steve models and will cause the error \"Cannot set property of [object Object] which has only a getter\" if defined at top-level\nexport function cleanHybridResources(data) {\n const potentialNormanHoldovers = ['state', 'name', 'description', 'labels', 'annotations'];\n\n potentialNormanHoldovers.forEach((key) => delete data[key]);\n\n return data;\n}\n\nexport default class HybridModel extends Resource {\n constructor(data, ctx, rehydrateNamespace = null, setClone = false) {\n const cleanedData = cleanHybridResources(data);\n\n super(cleanedData, ctx, rehydrateNamespace, setClone);\n }\n\n get labels() {\n const all = this.metadata?.labels || {};\n\n return omitBy(all, (value, key) => {\n return matchesSomeRegex(key, LABELS_TO_IGNORE_REGEX);\n });\n }\n\n setLabels(val) {\n if ( !this.metadata ) {\n this.metadata = {};\n }\n\n const all = this.metadata.labels || {};\n const wasIgnored = pickBy(all, (value, key) => {\n return matchesSomeRegex(key, LABELS_TO_IGNORE_REGEX);\n });\n\n Vue.set(this.metadata, 'labels', { ...wasIgnored, ...val });\n }\n\n setLabel(key, val) {\n if ( val ) {\n if ( !this.metadata ) {\n this.metadata = {};\n }\n\n if ( !this.metadata.labels ) {\n this.metadata.labels = {};\n }\n\n Vue.set(this.metadata.labels, key, val);\n } else if ( this.metadata?.labels ) {\n Vue.set(this.metadata.labels, key, undefined);\n delete this.metadata.labels[key];\n }\n }\n\n get annotations() {\n const all = this.metadata?.annotations || {};\n\n return omitBy(all, (value, key) => {\n return matchesSomeRegex(key, ANNOTATIONS_TO_IGNORE_REGEX);\n });\n }\n\n setAnnotations(val) {\n if ( !this.metadata ) {\n this.metadata = {};\n }\n\n const all = this.metadata.annotations || {};\n const wasIgnored = pickBy(all, (value, key) => {\n return matchesSomeRegex(key, ANNOTATIONS_TO_IGNORE_REGEX);\n });\n\n Vue.set(this.metadata, 'annotations', { ...wasIgnored, ...val });\n }\n\n setAnnotation(key, val) {\n if ( val ) {\n if ( !this.metadata ) {\n this.metadata = {};\n }\n\n if ( !this.metadata.annotations ) {\n this.metadata.annotations = {};\n }\n\n Vue.set(this.metadata.annotations, key, val);\n } else if ( this.metadata?.annotations ) {\n Vue.set(this.metadata.annotations, key, undefined);\n delete this.metadata.annotations[key];\n }\n }\n\n get state() {\n return this.stateObj?.name || 'unknown';\n }\n}\n","import { DESCRIPTION } from '@shell/config/labels-annotations';\nimport HybridModel from './hybrid-class';\nimport { NEVER_ADD } from '@shell/utils/create-yaml';\nimport { deleteProperty } from '@shell/utils/object';\n\n// Some fields that are removed for YAML (NEVER_ADD) are required via API\nconst STEVE_ADD = [\n 'metadata.resourceVersion',\n 'metadata.fields',\n 'metadata.clusterName',\n 'metadata.deletionGracePeriodSeconds',\n 'metadata.generateName',\n];\nconst STEVE_NEVER_SAVE = NEVER_ADD.filter((na) => !STEVE_ADD.includes(na));\n\nexport default class SteveModel extends HybridModel {\n get name() {\n return this.metadata?.name || this._name;\n }\n\n get namespace() {\n return this.metadata?.namespace;\n }\n\n get description() {\n return this.metadata?.annotations?.[DESCRIPTION] || this.spec?.description || this._description;\n }\n\n /**\n * Set description based on the type of model available with private fallback\n */\n set description(value) {\n if (this.metadata?.annotations) {\n this.metadata.annotations[DESCRIPTION] = value;\n }\n\n if (this.spec) {\n this.spec.description = value;\n }\n\n this._description = value;\n }\n\n cleanForSave(data, forNew) {\n const val = super.cleanForSave(data);\n\n for (const field of STEVE_NEVER_SAVE) {\n deleteProperty(val, field);\n }\n\n return val;\n }\n}\n","export { default as Banner } from './Banner.vue';\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","export * from \"-!../../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SourceAuthorities.vue?vue&type=style&index=0&id=189c4c6b&prod&lang=scss&scoped=true&\"","var baseFor = require('./_baseFor'),\n castFunction = require('./_castFunction'),\n keysIn = require('./keysIn');\n\n/**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\nfunction forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, castFunction(iteratee), keysIn);\n}\n\nmodule.exports = forIn;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailText.vue?vue&type=style&index=0&id=348d5cf1&prod&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".radio-view{display:flex;flex-direction:column}.radio-view LABEL{color:var(--input-label)}.radio-group .text-label{display:block;padding-bottom:5px}.radio-container{position:relative;display:inline-flex;align-items:flex-start;margin:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-radius:var(--border-radius);padding-bottom:5px}.radio-container,.radio-container .radio-button-outer-container-description,.radio-container .radio-label{cursor:pointer}.radio-container.disabled,.radio-container.disabled .radio-button-outer-container-description,.radio-container.disabled .radio-label{cursor:not-allowed}.radio-container .radio-custom{height:14px;width:14px;min-height:14px;min-width:14px;background-color:var(--input-bg);border-radius:50%;transition:all .3s ease-out;border:1.5px solid var(--border);margin-top:5px}.radio-container .radio-custom:focus{outline:none;border-radius:50%}.radio-container input{display:none}.radio-container .radio-custom[aria-checked=true]{background-color:var(--primary);transform:rotate(0deg) scale(1);opacity:1;border:1.5px solid var(--primary)}.radio-container .radio-custom[aria-checked=true].text-muted{opacity:.25}.radio-container input:disabled~.radio-custom:not([aria-checked=true]){background-color:var(--disabled-bg);opacity:.25}.radio-container .radio-button-outer-container-description{color:var(--input-label);font-size:11px;margin-top:5px}.radio-container .labeling{display:inline-flex;flex-direction:column;margin:3px 10px 0 5px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export type GC_PREFERENCES = {\n enabled: boolean,\n enabledInterval: boolean,\n interval: number,\n enabledOnNavigate: boolean,\n ageThreshold: number,\n countThreshold: number\n}\n\nexport const GC_DEFAULTS: GC_PREFERENCES = {\n enabled: false,\n\n // When GC Runs\n enabledInterval: true,\n interval: 1 * 60 * 5,\n enabledOnNavigate: true,\n\n // How GC handles resources when GC'ing\n ageThreshold: 1 * 60 * 2,\n countThreshold: 500,\n};\n","/*\n * Jexl\n * Copyright 2019 Tom Shawver\n */\n\nconst numericRegex = /^-?(?:(?:[0-9]*\\.[0-9]+)|[0-9]+)$/\nconst identRegex = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/\nconst escEscRegex = /\\\\\\\\/\nconst whitespaceRegex = /^\\s*$/\nconst preOpRegexElems = [\n // Strings\n \"'(?:(?:\\\\\\\\')|[^'])*'\",\n '\"(?:(?:\\\\\\\\\")|[^\"])*\"',\n // Whitespace\n '\\\\s+',\n // Booleans\n '\\\\btrue\\\\b',\n '\\\\bfalse\\\\b'\n]\nconst postOpRegexElems = [\n // Identifiers\n '[a-zA-Z_\\\\$][a-zA-Z0-9_\\\\$]*',\n // Numerics (without negative symbol)\n '(?:(?:[0-9]*\\\\.[0-9]+)|[0-9]+)'\n]\nconst minusNegatesAfter = [\n 'binaryOp',\n 'unaryOp',\n 'openParen',\n 'openBracket',\n 'question',\n 'colon'\n]\n\n/**\n * Lexer is a collection of stateless, statically-accessed functions for the\n * lexical parsing of a Jexl string. Its responsibility is to identify the\n * \"parts of speech\" of a Jexl expression, and tokenize and label each, but\n * to do only the most minimal syntax checking; the only errors the Lexer\n * should be concerned with are if it's unable to identify the utility of\n * any of its tokens. Errors stemming from these tokens not being in a\n * sensible configuration should be left for the Parser to handle.\n * @type {{}}\n */\nclass Lexer {\n constructor(grammar) {\n this._grammar = grammar\n }\n\n /**\n * Splits a Jexl expression string into an array of expression elements.\n * @param {string} str A Jexl expression string\n * @returns {Array} An array of substrings defining the functional\n * elements of the expression.\n */\n getElements(str) {\n const regex = this._getSplitRegex()\n return str.split(regex).filter(elem => {\n // Remove empty strings\n return elem\n })\n }\n\n /**\n * Converts an array of expression elements into an array of tokens. Note that\n * the resulting array may not equal the element array in length, as any\n * elements that consist only of whitespace get appended to the previous\n * token's \"raw\" property. For the structure of a token object, please see\n * {@link Lexer#tokenize}.\n * @param {Array} elements An array of Jexl expression elements to be\n * converted to tokens\n * @returns {Array<{type, value, raw}>} an array of token objects.\n */\n getTokens(elements) {\n const tokens = []\n let negate = false\n for (let i = 0; i < elements.length; i++) {\n if (this._isWhitespace(elements[i])) {\n if (tokens.length) {\n tokens[tokens.length - 1].raw += elements[i]\n }\n } else if (elements[i] === '-' && this._isNegative(tokens)) {\n negate = true\n } else {\n if (negate) {\n elements[i] = '-' + elements[i]\n negate = false\n }\n tokens.push(this._createToken(elements[i]))\n }\n }\n // Catch a - at the end of the string. Let the parser handle that issue.\n if (negate) {\n tokens.push(this._createToken('-'))\n }\n return tokens\n }\n\n /**\n * Converts a Jexl string into an array of tokens. Each token is an object\n * in the following format:\n *\n * {\n * type: ,\n * [name]: ,\n * value: ,\n * raw: \n * }\n *\n * Type is one of the following:\n *\n * literal, identifier, binaryOp, unaryOp\n *\n * OR, if the token is a control character its type is the name of the element\n * defined in the Grammar.\n *\n * Name appears only if the token is a control string found in\n * {@link grammar#elements}, and is set to the name of the element.\n *\n * Value is the value of the token in the correct type (boolean or numeric as\n * appropriate). Raw is the string representation of this value taken directly\n * from the expression string, including any trailing spaces.\n * @param {string} str The Jexl string to be tokenized\n * @returns {Array<{type, value, raw}>} an array of token objects.\n * @throws {Error} if the provided string contains an invalid token.\n */\n tokenize(str) {\n const elements = this.getElements(str)\n return this.getTokens(elements)\n }\n\n /**\n * Creates a new token object from an element of a Jexl string. See\n * {@link Lexer#tokenize} for a description of the token object.\n * @param {string} element The element from which a token should be made\n * @returns {{value: number|boolean|string, [name]: string, type: string,\n * raw: string}} a token object describing the provided element.\n * @throws {Error} if the provided string is not a valid expression element.\n * @private\n */\n _createToken(element) {\n const token = {\n type: 'literal',\n value: element,\n raw: element\n }\n if (element[0] === '\"' || element[0] === \"'\") {\n token.value = this._unquote(element)\n } else if (element.match(numericRegex)) {\n token.value = parseFloat(element)\n } else if (element === 'true' || element === 'false') {\n token.value = element === 'true'\n } else if (this._grammar[element]) {\n token.type = this._grammar[element].type\n } else if (element.match(identRegex)) {\n token.type = 'identifier'\n } else {\n throw new Error(`Invalid expression token: ${element}`)\n }\n return token\n }\n\n /**\n * Escapes a string so that it can be treated as a string literal within a\n * regular expression.\n * @param {string} str The string to be escaped\n * @returns {string} the RegExp-escaped string.\n * @see https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions\n * @private\n */\n _escapeRegExp(str) {\n str = str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n if (str.match(identRegex)) {\n str = '\\\\b' + str + '\\\\b'\n }\n return str\n }\n\n /**\n * Gets a RegEx object appropriate for splitting a Jexl string into its core\n * elements.\n * @returns {RegExp} An element-splitting RegExp object\n * @private\n */\n _getSplitRegex() {\n if (!this._splitRegex) {\n // Sort by most characters to least, then regex escape each\n const elemArray = Object.keys(this._grammar)\n .sort((a, b) => {\n return b.length - a.length\n })\n .map(elem => {\n return this._escapeRegExp(elem)\n }, this)\n this._splitRegex = new RegExp(\n '(' +\n [\n preOpRegexElems.join('|'),\n elemArray.join('|'),\n postOpRegexElems.join('|')\n ].join('|') +\n ')'\n )\n }\n return this._splitRegex\n }\n\n /**\n * Determines whether the addition of a '-' token should be interpreted as a\n * negative symbol for an upcoming number, given an array of tokens already\n * processed.\n * @param {Array} tokens An array of tokens already processed\n * @returns {boolean} true if adding a '-' should be considered a negative\n * symbol; false otherwise\n * @private\n */\n _isNegative(tokens) {\n if (!tokens.length) return true\n return minusNegatesAfter.some(\n type => type === tokens[tokens.length - 1].type\n )\n }\n\n /**\n * A utility function to determine if a string consists of only space\n * characters.\n * @param {string} str A string to be tested\n * @returns {boolean} true if the string is empty or consists of only spaces;\n * false otherwise.\n * @private\n */\n _isWhitespace(str) {\n return !!str.match(whitespaceRegex)\n }\n\n /**\n * Removes the beginning and trailing quotes from a string, unescapes any\n * escaped quotes on its interior, and unescapes any escaped escape\n * characters. Note that this function is not defensive; it assumes that the\n * provided string is not empty, and that its first and last characters are\n * actually quotes.\n * @param {string} str A string whose first and last characters are quotes\n * @returns {string} a string with the surrounding quotes stripped and escapes\n * properly processed.\n * @private\n */\n _unquote(str) {\n const quote = str[0]\n const escQuoteRegex = new RegExp('\\\\\\\\' + quote, 'g')\n return str\n .substr(1, str.length - 2)\n .replace(escQuoteRegex, quote)\n .replace(escEscRegex, '\\\\')\n }\n}\n\nmodule.exports = Lexer\n","/*\nLanguage: C++\nCategory: common, system\nWebsite: https://isocpp.org\n*/\n\n/** @type LanguageFn */\nfunction cpp(hljs) {\n const regex = hljs.regex;\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\\\\n/ } ] });\n const DECLTYPE_AUTO_RE = 'decltype\\\\(auto\\\\)';\n const NAMESPACE_RE = '[a-zA-Z_]\\\\w*::';\n const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';\n const FUNCTION_TYPE_RE = '(?!struct)('\n + DECLTYPE_AUTO_RE + '|'\n + regex.optional(NAMESPACE_RE)\n + '[a-zA-Z_]\\\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE)\n + ')';\n\n const CPP_PRIMITIVE_TYPES = {\n className: 'type',\n begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n };\n\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = '\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)';\n const STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '(u8?|U|L)?\\'(' + CHARACTER_ESCAPES + '|.)',\n end: '\\'',\n illegal: '.'\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n\n const NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0b[01\\']+)' },\n { begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)' },\n { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)' }\n ],\n relevance: 0\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: { keyword:\n 'if else elif endif define undef warning error line '\n + 'pragma _Pragma ifdef ifndef include' },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, { className: 'string' }),\n {\n className: 'string',\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n const TITLE_MODE = {\n className: 'title',\n begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n\n const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\\\s*\\\\(';\n\n // https://en.cppreference.com/w/cpp/keyword\n const RESERVED_KEYWORDS = [\n 'alignas',\n 'alignof',\n 'and',\n 'and_eq',\n 'asm',\n 'atomic_cancel',\n 'atomic_commit',\n 'atomic_noexcept',\n 'auto',\n 'bitand',\n 'bitor',\n 'break',\n 'case',\n 'catch',\n 'class',\n 'co_await',\n 'co_return',\n 'co_yield',\n 'compl',\n 'concept',\n 'const_cast|10',\n 'consteval',\n 'constexpr',\n 'constinit',\n 'continue',\n 'decltype',\n 'default',\n 'delete',\n 'do',\n 'dynamic_cast|10',\n 'else',\n 'enum',\n 'explicit',\n 'export',\n 'extern',\n 'false',\n 'final',\n 'for',\n 'friend',\n 'goto',\n 'if',\n 'import',\n 'inline',\n 'module',\n 'mutable',\n 'namespace',\n 'new',\n 'noexcept',\n 'not',\n 'not_eq',\n 'nullptr',\n 'operator',\n 'or',\n 'or_eq',\n 'override',\n 'private',\n 'protected',\n 'public',\n 'reflexpr',\n 'register',\n 'reinterpret_cast|10',\n 'requires',\n 'return',\n 'sizeof',\n 'static_assert',\n 'static_cast|10',\n 'struct',\n 'switch',\n 'synchronized',\n 'template',\n 'this',\n 'thread_local',\n 'throw',\n 'transaction_safe',\n 'transaction_safe_dynamic',\n 'true',\n 'try',\n 'typedef',\n 'typeid',\n 'typename',\n 'union',\n 'using',\n 'virtual',\n 'volatile',\n 'while',\n 'xor',\n 'xor_eq'\n ];\n\n // https://en.cppreference.com/w/cpp/keyword\n const RESERVED_TYPES = [\n 'bool',\n 'char',\n 'char16_t',\n 'char32_t',\n 'char8_t',\n 'double',\n 'float',\n 'int',\n 'long',\n 'short',\n 'void',\n 'wchar_t',\n 'unsigned',\n 'signed',\n 'const',\n 'static'\n ];\n\n const TYPE_HINTS = [\n 'any',\n 'auto_ptr',\n 'barrier',\n 'binary_semaphore',\n 'bitset',\n 'complex',\n 'condition_variable',\n 'condition_variable_any',\n 'counting_semaphore',\n 'deque',\n 'false_type',\n 'future',\n 'imaginary',\n 'initializer_list',\n 'istringstream',\n 'jthread',\n 'latch',\n 'lock_guard',\n 'multimap',\n 'multiset',\n 'mutex',\n 'optional',\n 'ostringstream',\n 'packaged_task',\n 'pair',\n 'promise',\n 'priority_queue',\n 'queue',\n 'recursive_mutex',\n 'recursive_timed_mutex',\n 'scoped_lock',\n 'set',\n 'shared_future',\n 'shared_lock',\n 'shared_mutex',\n 'shared_timed_mutex',\n 'shared_ptr',\n 'stack',\n 'string_view',\n 'stringstream',\n 'timed_mutex',\n 'thread',\n 'true_type',\n 'tuple',\n 'unique_lock',\n 'unique_ptr',\n 'unordered_map',\n 'unordered_multimap',\n 'unordered_multiset',\n 'unordered_set',\n 'variant',\n 'vector',\n 'weak_ptr',\n 'wstring',\n 'wstring_view'\n ];\n\n const FUNCTION_HINTS = [\n 'abort',\n 'abs',\n 'acos',\n 'apply',\n 'as_const',\n 'asin',\n 'atan',\n 'atan2',\n 'calloc',\n 'ceil',\n 'cerr',\n 'cin',\n 'clog',\n 'cos',\n 'cosh',\n 'cout',\n 'declval',\n 'endl',\n 'exchange',\n 'exit',\n 'exp',\n 'fabs',\n 'floor',\n 'fmod',\n 'forward',\n 'fprintf',\n 'fputs',\n 'free',\n 'frexp',\n 'fscanf',\n 'future',\n 'invoke',\n 'isalnum',\n 'isalpha',\n 'iscntrl',\n 'isdigit',\n 'isgraph',\n 'islower',\n 'isprint',\n 'ispunct',\n 'isspace',\n 'isupper',\n 'isxdigit',\n 'labs',\n 'launder',\n 'ldexp',\n 'log',\n 'log10',\n 'make_pair',\n 'make_shared',\n 'make_shared_for_overwrite',\n 'make_tuple',\n 'make_unique',\n 'malloc',\n 'memchr',\n 'memcmp',\n 'memcpy',\n 'memset',\n 'modf',\n 'move',\n 'pow',\n 'printf',\n 'putchar',\n 'puts',\n 'realloc',\n 'scanf',\n 'sin',\n 'sinh',\n 'snprintf',\n 'sprintf',\n 'sqrt',\n 'sscanf',\n 'std',\n 'stderr',\n 'stdin',\n 'stdout',\n 'strcat',\n 'strchr',\n 'strcmp',\n 'strcpy',\n 'strcspn',\n 'strlen',\n 'strncat',\n 'strncmp',\n 'strncpy',\n 'strpbrk',\n 'strrchr',\n 'strspn',\n 'strstr',\n 'swap',\n 'tan',\n 'tanh',\n 'terminate',\n 'to_underlying',\n 'tolower',\n 'toupper',\n 'vfprintf',\n 'visit',\n 'vprintf',\n 'vsprintf'\n ];\n\n const LITERALS = [\n 'NULL',\n 'false',\n 'nullopt',\n 'nullptr',\n 'true'\n ];\n\n // https://en.cppreference.com/w/cpp/keyword\n const BUILT_IN = [ '_Pragma' ];\n\n const CPP_KEYWORDS = {\n type: RESERVED_TYPES,\n keyword: RESERVED_KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_IN,\n _type_hints: TYPE_HINTS\n };\n\n const FUNCTION_DISPATCH = {\n className: 'function.dispatch',\n relevance: 0,\n keywords: {\n // Only for relevance, not highlighting.\n _hint: FUNCTION_HINTS },\n begin: regex.concat(\n /\\b/,\n /(?!decltype)/,\n /(?!if)/,\n /(?!for)/,\n /(?!switch)/,\n /(?!while)/,\n hljs.IDENT_RE,\n regex.lookahead(/(<[^<>]+>|)\\s*\\(/))\n };\n\n const EXPRESSION_CONTAINS = [\n FUNCTION_DISPATCH,\n PREPROCESSOR,\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: 'new throw return else',\n end: /;/\n }\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([ 'self' ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n\n const FUNCTION_DECLARATION = {\n className: 'function',\n begin: '(' + FUNCTION_TYPE_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n { // to prevent it from being confused as the function title\n begin: DECLTYPE_AUTO_RE,\n keywords: CPP_KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [ TITLE_MODE ],\n relevance: 0\n },\n // needed because we do not have look-behind on the below rule\n // to prevent it from grabbing the final : in a :: pair\n {\n begin: /::/,\n relevance: 0\n },\n // initializers\n {\n begin: /:/,\n endsWithParent: true,\n contains: [\n STRINGS,\n NUMBERS\n ]\n },\n // allow for multiple declarations, e.g.:\n // extern void f(int), g(char);\n {\n relevance: 0,\n match: /,/\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES\n ]\n }\n ]\n },\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n\n return {\n name: 'C++',\n aliases: [\n 'cc',\n 'c++',\n 'h++',\n 'hpp',\n 'hh',\n 'hxx',\n 'cxx'\n ],\n keywords: CPP_KEYWORDS,\n illegal: ' rooms (9);`\n begin: '\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\\\s*<(?!<)',\n end: '>',\n keywords: CPP_KEYWORDS,\n contains: [\n 'self',\n CPP_PRIMITIVE_TYPES\n ]\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: CPP_KEYWORDS\n },\n {\n match: [\n // extra complexity to deal with `enum class` and `enum struct`\n /\\b(?:enum(?:\\s+(?:class|struct))?|class|struct|union)/,\n /\\s+/,\n /\\w+/\n ],\n className: {\n 1: 'keyword',\n 3: 'title.class'\n }\n }\n ])\n };\n}\n\nmodule.exports = cpp;\n","const MODES = (hljs) => {\n return {\n IMPORTANT: {\n scope: 'meta',\n begin: '!important'\n },\n BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE,\n HEXCOLOR: {\n scope: 'number',\n begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\b/\n },\n FUNCTION_DISPATCH: {\n className: \"built_in\",\n begin: /[\\w-]+(?=\\()/\n },\n ATTRIBUTE_SELECTOR_MODE: {\n scope: 'selector-attr',\n begin: /\\[/,\n end: /\\]/,\n illegal: '$',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n CSS_NUMBER_MODE: {\n scope: 'number',\n begin: hljs.NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n },\n CSS_VARIABLE: {\n className: \"attr\",\n begin: /--[A-Za-z][A-Za-z0-9_-]*/\n }\n };\n};\n\nconst TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'p',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n];\n\nconst MEDIA_FEATURES = [\n 'any-hover',\n 'any-pointer',\n 'aspect-ratio',\n 'color',\n 'color-gamut',\n 'color-index',\n 'device-aspect-ratio',\n 'device-height',\n 'device-width',\n 'display-mode',\n 'forced-colors',\n 'grid',\n 'height',\n 'hover',\n 'inverted-colors',\n 'monochrome',\n 'orientation',\n 'overflow-block',\n 'overflow-inline',\n 'pointer',\n 'prefers-color-scheme',\n 'prefers-contrast',\n 'prefers-reduced-motion',\n 'prefers-reduced-transparency',\n 'resolution',\n 'scan',\n 'scripting',\n 'update',\n 'width',\n // TODO: find a better solution?\n 'min-width',\n 'max-width',\n 'min-height',\n 'max-height'\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n 'active',\n 'any-link',\n 'blank',\n 'checked',\n 'current',\n 'default',\n 'defined',\n 'dir', // dir()\n 'disabled',\n 'drop',\n 'empty',\n 'enabled',\n 'first',\n 'first-child',\n 'first-of-type',\n 'fullscreen',\n 'future',\n 'focus',\n 'focus-visible',\n 'focus-within',\n 'has', // has()\n 'host', // host or host()\n 'host-context', // host-context()\n 'hover',\n 'indeterminate',\n 'in-range',\n 'invalid',\n 'is', // is()\n 'lang', // lang()\n 'last-child',\n 'last-of-type',\n 'left',\n 'link',\n 'local-link',\n 'not', // not()\n 'nth-child', // nth-child()\n 'nth-col', // nth-col()\n 'nth-last-child', // nth-last-child()\n 'nth-last-col', // nth-last-col()\n 'nth-last-of-type', //nth-last-of-type()\n 'nth-of-type', //nth-of-type()\n 'only-child',\n 'only-of-type',\n 'optional',\n 'out-of-range',\n 'past',\n 'placeholder-shown',\n 'read-only',\n 'read-write',\n 'required',\n 'right',\n 'root',\n 'scope',\n 'target',\n 'target-within',\n 'user-invalid',\n 'valid',\n 'visited',\n 'where' // where()\n];\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n 'after',\n 'backdrop',\n 'before',\n 'cue',\n 'cue-region',\n 'first-letter',\n 'first-line',\n 'grammar-error',\n 'marker',\n 'part',\n 'placeholder',\n 'selection',\n 'slotted',\n 'spelling-error'\n];\n\nconst ATTRIBUTES = [\n 'align-content',\n 'align-items',\n 'align-self',\n 'all',\n 'animation',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-timing-function',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-blend-mode',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-repeat',\n 'background-size',\n 'block-size',\n 'border',\n 'border-block',\n 'border-block-color',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-style',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-style',\n 'border-block-start-width',\n 'border-block-style',\n 'border-block-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-inline',\n 'border-inline-color',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-style',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-style',\n 'border-inline-start-width',\n 'border-inline-style',\n 'border-inline-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-decoration-break',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'caret-color',\n 'clear',\n 'clip',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'contain',\n 'content',\n 'content-visibility',\n 'counter-increment',\n 'counter-reset',\n 'cue',\n 'cue-after',\n 'cue-before',\n 'cursor',\n 'direction',\n 'display',\n 'empty-cells',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'flow',\n 'font',\n 'font-display',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-size',\n 'font-size-adjust',\n 'font-smoothing',\n 'font-stretch',\n 'font-style',\n 'font-synthesis',\n 'font-variant',\n 'font-variant-caps',\n 'font-variant-east-asian',\n 'font-variant-ligatures',\n 'font-variant-numeric',\n 'font-variant-position',\n 'font-variation-settings',\n 'font-weight',\n 'gap',\n 'glyph-orientation-vertical',\n 'grid',\n 'grid-area',\n 'grid-auto-columns',\n 'grid-auto-flow',\n 'grid-auto-rows',\n 'grid-column',\n 'grid-column-end',\n 'grid-column-start',\n 'grid-gap',\n 'grid-row',\n 'grid-row-end',\n 'grid-row-start',\n 'grid-template',\n 'grid-template-areas',\n 'grid-template-columns',\n 'grid-template-rows',\n 'hanging-punctuation',\n 'height',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'inline-size',\n 'isolation',\n 'justify-content',\n 'left',\n 'letter-spacing',\n 'line-break',\n 'line-height',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-block',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'marks',\n 'mask',\n 'mask-border',\n 'mask-border-mode',\n 'mask-border-outset',\n 'mask-border-repeat',\n 'mask-border-slice',\n 'mask-border-source',\n 'mask-border-width',\n 'mask-clip',\n 'mask-composite',\n 'mask-image',\n 'mask-mode',\n 'mask-origin',\n 'mask-position',\n 'mask-repeat',\n 'mask-size',\n 'mask-type',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'mix-blend-mode',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'padding',\n 'padding-block',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'pause',\n 'pause-after',\n 'pause-before',\n 'perspective',\n 'perspective-origin',\n 'pointer-events',\n 'position',\n 'quotes',\n 'resize',\n 'rest',\n 'rest-after',\n 'rest-before',\n 'right',\n 'row-gap',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-align',\n 'scroll-snap-stop',\n 'scroll-snap-type',\n 'scrollbar-color',\n 'scrollbar-gutter',\n 'scrollbar-width',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'speak',\n 'speak-as',\n 'src', // @font-face\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-all',\n 'text-align-last',\n 'text-combine-upright',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-style',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-emphasis-position',\n 'text-emphasis-style',\n 'text-indent',\n 'text-justify',\n 'text-orientation',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-transform',\n 'text-underline-position',\n 'top',\n 'transform',\n 'transform-box',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'unicode-bidi',\n 'vertical-align',\n 'visibility',\n 'voice-balance',\n 'voice-duration',\n 'voice-family',\n 'voice-pitch',\n 'voice-range',\n 'voice-rate',\n 'voice-stress',\n 'voice-volume',\n 'white-space',\n 'widows',\n 'width',\n 'will-change',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'writing-mode',\n 'z-index'\n // reverse makes sure longer attributes `font-weight` are matched fully\n // instead of getting false positives on say `font`\n].reverse();\n\n/*\nLanguage: SCSS\nDescription: Scss is an extension of the syntax of CSS.\nAuthor: Kurt Emch \nWebsite: https://sass-lang.com\nCategory: common, css, web\n*/\n\n/** @type LanguageFn */\nfunction scss(hljs) {\n const modes = MODES(hljs);\n const PSEUDO_ELEMENTS$1 = PSEUDO_ELEMENTS;\n const PSEUDO_CLASSES$1 = PSEUDO_CLASSES;\n\n const AT_IDENTIFIER = '@[a-z-]+'; // @font-face\n const AT_MODIFIERS = \"and or not only\";\n const IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n const VARIABLE = {\n className: 'variable',\n begin: '(\\\\$' + IDENT_RE + ')\\\\b',\n relevance: 0\n };\n\n return {\n name: 'SCSS',\n case_insensitive: true,\n illegal: '[=/|\\']',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n // to recognize keyframe 40% etc which are outside the scope of our\n // attribute value mode\n modes.CSS_NUMBER_MODE,\n {\n className: 'selector-id',\n begin: '#[A-Za-z0-9_-]+',\n relevance: 0\n },\n {\n className: 'selector-class',\n begin: '\\\\.[A-Za-z0-9_-]+',\n relevance: 0\n },\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: 'selector-tag',\n begin: '\\\\b(' + TAGS.join('|') + ')\\\\b',\n // was there, before, but why?\n relevance: 0\n },\n {\n className: 'selector-pseudo',\n begin: ':(' + PSEUDO_CLASSES$1.join('|') + ')'\n },\n {\n className: 'selector-pseudo',\n begin: ':(:)?(' + PSEUDO_ELEMENTS$1.join('|') + ')'\n },\n VARIABLE,\n { // pseudo-selector params\n begin: /\\(/,\n end: /\\)/,\n contains: [ modes.CSS_NUMBER_MODE ]\n },\n modes.CSS_VARIABLE,\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.join('|') + ')\\\\b'\n },\n { begin: '\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b' },\n {\n begin: /:/,\n end: /[;}{]/,\n relevance: 0,\n contains: [\n modes.BLOCK_COMMENT,\n VARIABLE,\n modes.HEXCOLOR,\n modes.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n modes.IMPORTANT,\n modes.FUNCTION_DISPATCH\n ]\n },\n // matching these here allows us to treat them more like regular CSS\n // rules so everything between the {} gets regular rule highlighting,\n // which is what we want for page and font-face\n {\n begin: '@(page|font-face)',\n keywords: {\n $pattern: AT_IDENTIFIER,\n keyword: '@page @font-face'\n }\n },\n {\n begin: '@',\n end: '[{;]',\n returnBegin: true,\n keywords: {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n },\n contains: [\n {\n begin: AT_IDENTIFIER,\n className: \"keyword\"\n },\n {\n begin: /[a-z-]+(?=:)/,\n className: \"attribute\"\n },\n VARIABLE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n modes.HEXCOLOR,\n modes.CSS_NUMBER_MODE\n ]\n },\n modes.FUNCTION_DISPATCH\n ]\n };\n}\n\nmodule.exports = scss;\n","/*\nLanguage: Markdown\nRequires: xml.js\nAuthor: John Crepezzi \nWebsite: https://daringfireball.net/projects/markdown/\nCategory: common, markup\n*/\n\nfunction markdown(hljs) {\n const regex = hljs.regex;\n const INLINE_HTML = {\n begin: /<\\/?[A-Za-z_]/,\n end: '>',\n subLanguage: 'xml',\n relevance: 0\n };\n const HORIZONTAL_RULE = {\n begin: '^[-\\\\*]{3,}',\n end: '$'\n };\n const CODE = {\n className: 'code',\n variants: [\n // TODO: fix to allow these to work with sublanguage also\n { begin: '(`{3,})[^`](.|\\\\n)*?\\\\1`*[ ]*' },\n { begin: '(~{3,})[^~](.|\\\\n)*?\\\\1~*[ ]*' },\n // needed to allow markdown as a sublanguage to work\n {\n begin: '```',\n end: '```+[ ]*$'\n },\n {\n begin: '~~~',\n end: '~~~+[ ]*$'\n },\n { begin: '`.+?`' },\n {\n begin: '(?=^( {4}|\\\\t))',\n // use contains to gobble up multiple lines to allow the block to be whatever size\n // but only have a single open/close tag vs one per line\n contains: [\n {\n begin: '^( {4}|\\\\t)',\n end: '(\\\\n)$'\n }\n ],\n relevance: 0\n }\n ]\n };\n const LIST = {\n className: 'bullet',\n begin: '^[ \\t]*([*+-]|(\\\\d+\\\\.))(?=\\\\s+)',\n end: '\\\\s+',\n excludeEnd: true\n };\n const LINK_REFERENCE = {\n begin: /^\\[[^\\n]+\\]:/,\n returnBegin: true,\n contains: [\n {\n className: 'symbol',\n begin: /\\[/,\n end: /\\]/,\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: 'link',\n begin: /:\\s*/,\n end: /$/,\n excludeBegin: true\n }\n ]\n };\n const URL_SCHEME = /[A-Za-z][A-Za-z0-9+.-]*/;\n const LINK = {\n variants: [\n // too much like nested array access in so many languages\n // to have any real relevance\n {\n begin: /\\[.+?\\]\\[.*?\\]/,\n relevance: 0\n },\n // popular internet URLs\n {\n begin: /\\[.+?\\]\\(((data|javascript|mailto):|(?:http|ftp)s?:\\/\\/).*?\\)/,\n relevance: 2\n },\n {\n begin: regex.concat(/\\[.+?\\]\\(/, URL_SCHEME, /:\\/\\/.*?\\)/),\n relevance: 2\n },\n // relative urls\n {\n begin: /\\[.+?\\]\\([./?&#].*?\\)/,\n relevance: 1\n },\n // whatever else, lower relevance (might not be a link at all)\n {\n begin: /\\[.*?\\]\\(.*?\\)/,\n relevance: 0\n }\n ],\n returnBegin: true,\n contains: [\n {\n // empty strings for alt or link text\n match: /\\[(?=\\])/ },\n {\n className: 'string',\n relevance: 0,\n begin: '\\\\[',\n end: '\\\\]',\n excludeBegin: true,\n returnEnd: true\n },\n {\n className: 'link',\n relevance: 0,\n begin: '\\\\]\\\\(',\n end: '\\\\)',\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: 'symbol',\n relevance: 0,\n begin: '\\\\]\\\\[',\n end: '\\\\]',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n const BOLD = {\n className: 'strong',\n contains: [], // defined later\n variants: [\n {\n begin: /_{2}/,\n end: /_{2}/\n },\n {\n begin: /\\*{2}/,\n end: /\\*{2}/\n }\n ]\n };\n const ITALIC = {\n className: 'emphasis',\n contains: [], // defined later\n variants: [\n {\n begin: /\\*(?!\\*)/,\n end: /\\*/\n },\n {\n begin: /_(?!_)/,\n end: /_/,\n relevance: 0\n }\n ]\n };\n\n // 3 level deep nesting is not allowed because it would create confusion\n // in cases like `***testing***` because where we don't know if the last\n // `***` is starting a new bold/italic or finishing the last one\n const BOLD_WITHOUT_ITALIC = hljs.inherit(BOLD, { contains: [] });\n const ITALIC_WITHOUT_BOLD = hljs.inherit(ITALIC, { contains: [] });\n BOLD.contains.push(ITALIC_WITHOUT_BOLD);\n ITALIC.contains.push(BOLD_WITHOUT_ITALIC);\n\n let CONTAINABLE = [\n INLINE_HTML,\n LINK\n ];\n\n [\n BOLD,\n ITALIC,\n BOLD_WITHOUT_ITALIC,\n ITALIC_WITHOUT_BOLD\n ].forEach(m => {\n m.contains = m.contains.concat(CONTAINABLE);\n });\n\n CONTAINABLE = CONTAINABLE.concat(BOLD, ITALIC);\n\n const HEADER = {\n className: 'section',\n variants: [\n {\n begin: '^#{1,6}',\n end: '$',\n contains: CONTAINABLE\n },\n {\n begin: '(?=^.+?\\\\n[=-]{2,}$)',\n contains: [\n { begin: '^[=-]*$' },\n {\n begin: '^',\n end: \"\\\\n\",\n contains: CONTAINABLE\n }\n ]\n }\n ]\n };\n\n const BLOCKQUOTE = {\n className: 'quote',\n begin: '^>\\\\s+',\n contains: CONTAINABLE,\n end: '$'\n };\n\n return {\n name: 'Markdown',\n aliases: [\n 'md',\n 'mkdown',\n 'mkd'\n ],\n contains: [\n HEADER,\n INLINE_HTML,\n LIST,\n BOLD,\n ITALIC,\n BLOCKQUOTE,\n CODE,\n HORIZONTAL_RULE,\n LINK,\n LINK_REFERENCE\n ]\n };\n}\n\nmodule.exports = markdown;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.globalrole.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.globalrole.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./management.cattle.io.globalrole.vue?vue&type=template&id=effd72b0&scoped=true&\"\nimport script from \"./management.cattle.io.globalrole.vue?vue&type=script&lang=js&\"\nexport * from \"./management.cattle.io.globalrole.vue?vue&type=script&lang=js&\"\nimport style0 from \"./management.cattle.io.globalrole.vue?vue&type=style&index=0&id=effd72b0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"effd72b0\",\n null\n \n)\n\nexport default component.exports","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionDropdown.vue?vue&type=style&index=0&id=70f0de36&prod&lang=scss&\"","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","// We use this file when building libraries - we don't want the dynamic code from the shell\n// to be imported again, so we substitute this file which does not have any requires\n\nexport function importCloudCredential(name) {\n return () => undefined;\n}\n\nexport function importMachineConfig(name) {\n return () => undefined;\n}\n\nexport function importLogin(name) {\n return () => undefined;\n}\n\nexport function importChart(name) {\n return () => undefined;\n}\n\nexport function importList(name) {\n return () => undefined;\n}\n\nexport function importDetail(name) {\n return () => undefined;\n}\n\nexport function importEdit(name) {\n return () => undefined;\n}\n\nexport function importDialog(name) {\n return () => undefined;\n}\n\nexport function listProducts() {\n return [];\n}\n\nexport function loadProduct(name, $plugin) {\n return () => undefined;\n}\n\nexport function loadTranslation(name) {\n return () => undefined;\n}\n\nexport function importCustomPromptRemove(name) {\n return () => undefined;\n}\n\nexport function resolveList(key) {\n return undefined;\n}\n\nexport function resolveChart(key) {\n return undefined;\n}\n\nexport function resolveEdit(key) {\n return undefined;\n}\n\nexport function resolveDetail(key) {\n return undefined;\n}\n\nexport function importWindowComponent(name) {\n return () => undefined;\n}\n\nexport function resolveWindowComponent(key) {\n return undefined;\n}\n\nexport function resolveMachineConfigComponent(key) {\n return undefined;\n}\n\nexport function resolveCloudCredentialComponent(key) {\n return undefined;\n}\n","// This file has 2 sections that control getting and using specializations of particular types\n// over the generic info that is specified or generated from schemas.\n//\n// 1) Getting info about types\n//\n// labelFor(schema, count) Get the display label for a schema. Count is (in English) 1 or not-1 for pluralizing\n// groupLabelFor(schema) Get the label for the API group of this schema's type\n// isIgnored(schema) Returns true if this type should be hidden from the tree\n// groupForBasicType(schema) Returns the group a type should be shown in basic view, or false-y if it shouldn't be shown.\n// typeWeightFor(type, forBasic) Get the weight value for a particular type label\n// groupWeightFor(group, forBasic) Get the weight value for a particular group\n// headersFor(schema) Returns the column definitions for a type to give to SortableTable\n// activeProducts() Returns the list of products that are installed and should be shown\n//\n// 2) Detecting and using custom list/detail/edit/header components\n//\n// hasCustomList(type) Does type have a custom list implementation?\n// hasCustomDetail(type[,subType]) Does type have a custom detail implementation?\n// hasCustomEdit(type[,subType]) Does type have a custom edit implementation?\n// importList(type) Returns a promise that resolves to the list component for type\n// importDetail(type[,subType]) Returns a promise that resolves to the detail component for type\n// importEdit(type[,subType]) Returns a promise that resolves to the edit component for type\n// optionsFor(schemaOrType) Return the configured options for a type (from configureType)\n//\n// 3) Changing specialization info about a type\n// For all:\n// let { thingYouWant } = DSL(instanceOfTheStore, 'product');\n//\n// product( Add a product into the nav\n// removable, -- Is the product removable (true) or built-in (false).\n// weight, -- Sort order and divider sections in the product menu. 3=global (fleet, ecm), 2=always on (apps, explorer) 1=other\n// showClusterSwitcher, -- Show the cluster switcher in the header (default true)\n// showNamespaceFilter, -- Show the namespace filter in the header (default false)\n// showWorkspaceSwitcher, -- Show the workspace switcher in the header (conflicts with namespace) (default false)\n// ifHave, -- Show this product only if the given capability is available\n// ifHaveGroup, -- Show this product only if the given group exists in the store [inStore]\n// ifHaveType, -- Show this product only if the given type exists in the store [inStore], This can also be specified as an object { type: TYPE, store: 'management' } if the type isn't in the current [inStore]\n// ifHaveVerb, -- In combination with ifHaveTYpe, show it only if the type also has this collectionMethod\n// inStore, -- Which store to look at for if* above and the left-nav, defaults to \"cluster\"\n// inExplorer, -- Determines if the product is to be scoped to the explorer\n// public, -- If true, show to all users. If false, only show when the Developer Tools pref is on (default true)\n// category, -- Group to show the product in for the nav hamburger menu\n// typeStoreMap, -- An object mapping types to the store that should be used to retrieve information about the type\n// hideSystemResources -- Hide resources in namespaces where namespace.isSystem === true, or a namespace managed by fleet (per its annotation) and hide those namespaces from ns/project list and nsfilter (default false)\n// hideNamespaceLocation -- Hide the namespace link in the ResourceDetail masthead of namespaced resources and hide the ExplorerProjectsNamespaces namespace link (default false)\n// })\n//\n// externalLink(stringOrFn) The product has an external page (function gets context object\n//\n// virtualType(obj) Add an item to the tree that goes to a route instead of an actual type.\n// -- obj can contain anything in the objects getTree returns.\n// -- obj must have a `name` that is unique among all virtual types.\n// -- `cluster` is automatically added to route.params if it exists.\n//\n// spoofedType(obj) Create a fake type that can be treated like a normal type\n//\n// basicType( Mark type(s) as always shown in the top of the nav\n// type(s), -- Type name or array of type names\n// group -- Group to show the type(s) under; false-y for top-level.\n// )\n// basicType( Mark all types in group as always shown in the top of the nav\n// group, -- Group to show\n// asLabel -- Label to display the group as; false-y for top-level.\n// )\n// ignoreType(type) Never show type\n// weightType( Set the weight (sorting) order of one or more types\n// typeOrArrayOfTypes,\n// weight, -- Higher numbers are shown first/higher up on the nav tree\n// forBasic -- Apply to basic type instead of regular type tree\n// )\n// mapType( Remap a type id to a display name\n// matchRegexOrString, -- Type to match, or regex that matches types\n// replacementStringOrFn, -- String to replace the type with, or\n// -- sync function: (type, capturedString, schemaObj => { return 'new-type'; }\n// mapWeight, -- Priority for apply this mapping (higher numbers applied first)\n// continueOnMatch -- If true, continue applying to hit other rules that might match the new type.\n// )\n// moveType( Change the group a type is in\n// matchRegexOrString, -- Type to match, or regex that matches types\n// newGroup, -- Group to move the type into\n// mapWeight, -- Priority for apply this mapping (higher numbers applied first)\n// )\n// componentForType( Map matching types to a single component name\n// ( (this is helpful if multiple types should be rendered by a single component)\n// matchRegexOrString, -- Type to match, or regex that matches types\n// replacementString -- String to replace the type with\n// )\n// configureType( Display options for a particular type\n// type, -- Type to apply to\n// options -- Object of options. Defaults/Supported: {\n// isCreatable: true, -- If false, disable create even if schema says it's allowed\n// isEditable: true, -- Ditto, for edit\n// isRemovable: true, -- Ditto, for remove/delete\n// showState: true, -- If false, hide state in columns and masthead\n// showAge: true, -- If false, hide age in columns and masthead\n// showConfigView: true -- If false, hide masthead config button in view mode\n// showListMasthead: true, -- If false, hide masthead in list view\n// canYaml: true,\n// resource: undefined -- Use this resource in ResourceDetails instead\n// resourceDetail: undefined -- Use this resource specifically for ResourceDetail's detail component\n// resourceEdit: undefined -- Use this resource specifically for ResourceDetail's edit component\n// depaginate: undefined -- Use this to depaginate requests for this type\n// resourceEditMasthead: true -- Show the Masthead in the edit resource component\n// customRoute: undefined,\n// hasGraph: undefined -- If true, render ForceDirectedTreeChart graph (ATTENTION: option graphConfig is needed also!!!)\n// graphConfig: undefined -- Use this to pass along the graph configuration\n// notFilterNamespace: undefined -- Define namespaces that do not need to be filtered\n// localOnly: False -- Hide this type from the nav/search bar on downstream clusters\n// }\n// )\n// ignoreGroup(group): Never show group or any types in it\n// weightGroup( Set the weight (sorting) of one or more groups\n// groupOrArrayOfGroups, -- see weightType...\n// weight\n// )\n// setGroupDefaultType( Set the default child type to show when the group is expanded\n// groupOrArrayOfGroups, -- see setGroupDefaultType...\n// defaultType\n// )\n// mapGroup( Remap a group name to a display name\n// matchRegexOrString, -- see mapType...\n// replacementString,\n// mapWeight,\n// continueOnMatch\n// )\nimport { AGE, NAME, NAMESPACE as NAMESPACE_COL, STATE } from '@shell/config/table-headers';\nimport {\n CATALOG,\n COUNT,\n SCHEMA,\n MANAGEMENT,\n NAMESPACE\n} from '@shell/config/types';\nimport { VIEW_IN_API, EXPANDED_GROUPS, FAVORITE_TYPES } from '@shell/store/prefs';\nimport {\n addObject, findBy, insertAt, isArray, removeObject, filterBy\n} from '@shell/utils/array';\nimport { clone, get } from '@shell/utils/object';\nimport {\n ensureRegex, escapeHtml, escapeRegex, ucFirst, pluralize\n} from '@shell/utils/string';\nimport {\n importChart, importList, importDetail, importEdit, listProducts, loadProduct, importCustomPromptRemove, resolveList, resolveEdit, resolveWindowComponent, importWindowComponent, importLogin, resolveChart, resolveDetail, importDialog, importMachineConfig, resolveMachineConfigComponent, resolveCloudCredentialComponent, importCloudCredential\n} from '@shell/utils/dynamic-importer';\n\nimport { NAME as EXPLORER } from '@shell/config/product/explorer';\nimport isObject from 'lodash/isObject';\nimport { normalizeType } from '@shell/plugins/dashboard-store/normalize';\nimport { sortBy } from '@shell/utils/sort';\n\nimport { haveV1Monitoring, haveV2Monitoring } from '@shell/utils/monitoring';\nimport { NEU_VECTOR_NAMESPACE } from '@shell/config/product/neuvector';\n\nexport const NAMESPACED = 'namespaced';\nexport const CLUSTER_LEVEL = 'cluster';\nexport const BOTH = 'both';\n\nexport const TYPE_MODES = {\n /**\n * allTypes usage: All resource types\n *\n * getTree usage: Remove ignored schemas, resources not applicable to ns, etc\n */\n ALL: 'all',\n /**\n * Represents resource types that should be shown at the top of the side nav.\n *\n * For example all fixed resource types above `More Resources` in the cluster explorer\n *\n * These will always be shown in the side nav\n *\n * allTypes usage: Resources that are in a group\n *\n * getTree usage: Remove ignored schemas, resources not applicable to ns, etc\n */\n BASIC: 'basic',\n /**\n * Represents any type of resource type that has been favourited\n *\n * These will always be shown in the side nav.\n *\n * allTypes usage: Resource types that have been favorited\n *\n * getTree usage: Remove ignored schemas, resources not applicable to ns, etc\n */\n FAVORITE: 'favorite',\n /**\n * Represents no virtual or spoofed types that have a count.\n *\n * For example the `More Resource` in the cluster explorer\n *\n * These will be shown in the side nav if there are resources in the ns filter OR the resource is not namespaces\n *\n * allTypes usage: All resource types that are not virtual or spoofed\n *\n * getTree usage: Remove types with no counts. Remove ignored schemas, resources not applicable to ns, etc\n */\n USED: 'used',\n};\n\nexport const ROOT = 'root';\n\nexport const SPOOFED_PREFIX = '__[[spoofed]]__';\nexport const SPOOFED_API_PREFIX = '__[[spoofedapi]]__';\n\nconst instanceMethods = {};\nconst graphConfigMap = {};\n\nconst FIELD_REGEX = /^\\$\\.metadata\\.fields\\[([0-9]*)\\]/;\n\nexport const IF_HAVE = {\n V1_MONITORING: 'v1-monitoring',\n V2_MONITORING: 'v2-monitoring',\n PROJECT: 'project',\n NO_PROJECT: 'no-project',\n NOT_V1_ISTIO: 'not-v1-istio',\n MULTI_CLUSTER: 'multi-cluster',\n NEUVECTOR_NAMESPACE: 'neuvector-namespace',\n ADMIN: 'admin-user',\n MCM_DISABLED: 'mcm-disabled',\n NOT_STANDALONE_HARVESTER: 'not-standalone-harvester',\n};\n\nexport function DSL(store, product, module = 'type-map') {\n // store.commit(`${ module }/product`, { name: product });\n\n return {\n product(inOpt) {\n const opt = {\n name: product,\n weight: 1,\n inStore: 'cluster',\n inExplorer: false,\n removable: true,\n showClusterSwitcher: true,\n showNamespaceFilter: false,\n public: true,\n filterMode: 'namespaces',\n ...inOpt\n };\n\n for ( const k of ['ifHaveGroup', 'ifHaveType'] ) {\n if ( opt[k] ) {\n opt[k] = regexToString(ensureRegex(opt[k]));\n }\n }\n\n store.commit(`${ module }/product`, opt);\n },\n\n basicType(types, group) {\n // Support passing in a map of types and using just the values\n if ( !isArray(types) && types && isObject(types) ) {\n types = Object.values(types);\n }\n\n store.commit(`${ module }/basicType`, {\n product, types, group\n });\n },\n\n // Type- and Group-dependent\n groupBy(type, field) {\n store.commit(`${ module }/groupBy`, { type, field });\n },\n\n headers(type, headers) {\n headers.forEach((header) => {\n // If on the client, then use the value getter if there is one\n if (header.getValue) {\n // we need to store the .value prop for the advanced filtering\n header.valueProp = header.value;\n header.value = header.getValue;\n }\n\n delete header.getValue;\n });\n\n store.commit(`${ module }/headers`, { type, headers });\n },\n\n hideBulkActions(type, field) {\n store.commit(`${ module }/hideBulkActions`, { type, field });\n },\n\n configureType(match, options) {\n if (options.graphConfig) {\n graphConfigMap[match] = options.graphConfig;\n delete options.graphConfig;\n }\n store.commit(`${ module }/configureType`, { ...options, match });\n },\n\n componentForType(match, replace) {\n store.commit(`${ module }/componentForType`, { match, replace });\n },\n\n ignoreType(regexOrString) {\n store.commit(`${ module }/ignoreType`, regexOrString);\n },\n\n ignoreGroup(regexOrString, cb) {\n store.commit(`${ module }/ignoreGroup`, { regexOrString, cb });\n },\n\n weightGroup(input, weight, forBasic) {\n if ( isArray(input) ) {\n store.commit(`${ module }/weightGroup`, {\n groups: input, weight, forBasic\n });\n } else {\n store.commit(`${ module }/weightGroup`, {\n group: input, weight, forBasic\n });\n }\n },\n\n setGroupDefaultType(input, defaultType) {\n if ( isArray(input) ) {\n store.commit(`${ module }/setGroupDefaultType`, { groups: input, defaultType });\n } else {\n store.commit(`${ module }/setGroupDefaultType`, { group: input, defaultType });\n }\n },\n\n weightType(input, weight, forBasic) {\n if ( isArray(input) ) {\n store.commit(`${ module }/weightType`, {\n types: input, weight, forBasic\n });\n } else {\n store.commit(`${ module }/weightType`, {\n type: input, weight, forBasic\n });\n }\n },\n\n mapGroup(match, replace, weight = 5, continueOnMatch = false) {\n store.commit(`${ module }/mapGroup`, {\n match, replace, weight, continueOnMatch\n });\n },\n\n mapType(match, replace, weight = 5, continueOnMatch = false) {\n store.commit(`${ module }/mapType`, {\n match, replace, weight, continueOnMatch\n });\n },\n\n moveType(match, group, weight = 5, continueOnMatch = false) {\n store.commit(`${ module }/moveType`, {\n match, group, weight,\n });\n },\n\n virtualType(obj) {\n store.commit(`${ module }/virtualType`, { product, obj });\n },\n\n spoofedType(obj) {\n store.commit(`${ module }/spoofedType`, { product, obj });\n }\n };\n}\n\nlet called = false;\n\nexport async function applyProducts(store, $plugin) {\n if (called) {\n return;\n }\n\n called = true;\n for ( const product of listProducts() ) {\n const impl = await loadProduct(product);\n\n if ( impl?.init ) {\n impl.init(store);\n }\n }\n // Load the products from all plugins\n $plugin.loadProducts();\n}\n\nexport function productsLoaded() {\n return called;\n}\n\nexport const state = function() {\n return {\n products: [],\n virtualTypes: {},\n spoofedTypes: {},\n basicTypes: {},\n groupIgnore: [],\n groupWeights: {},\n groupDefaultTypes: {},\n basicGroupWeights: { [ROOT]: 1000 },\n groupMappings: [],\n typeIgnore: [],\n basicTypeWeights: {},\n typeWeights: {},\n typeMappings: [],\n typeMoveMappings: [],\n typeToComponentMappings: [],\n typeOptions: [],\n groupBy: {},\n headers: {},\n hideBulkActions: {},\n schemaGeneration: 1,\n cache: {\n typeMove: {},\n groupLabel: {},\n ignore: {},\n list: {},\n chart: {},\n detail: {},\n edit: {},\n componentFor: {},\n promptRemove: {},\n windowComponents: {},\n 'machine-config': {},\n 'cloud-credential': {}\n\n },\n };\n};\n\nexport const getters = {\n // ----------------------------------------------------------------------------\n // 1 ) Getting info\n // ----------------------------------------------------------------------------\n // Turns a type name into a display label (e.g. management.cattle.io.cluster -> Cluster)\n labelFor(state, getters, rootState, rootGetters) {\n return (schema, count = 1, language = null) => {\n return _applyMapping(schema, state.typeMappings, 'id', false, () => {\n const key = `typeLabel.\"${ schema.id.toLowerCase() }\"`;\n\n if ( rootGetters['i18n/exists'](key, language) ) {\n return rootGetters['i18n/t'](key, { count }, language).trim();\n }\n\n const out = schema?.attributes?.kind || schema.id || '?';\n\n // Add spaces, but breaks typing names into jump menu naturally\n // out = ucFirst(out.replace(/([a-z])([A-Z])/g,'$1 $2'));\n\n if ( count === 1 ) {\n return out;\n }\n\n // This works for most things... if you don't like it, put in a typeLabel translation for above.\n return pluralize(out);\n });\n };\n },\n\n // Turns a group name into a display label (e.g. management.cattle.io.v3.cluster -> Cluster)\n groupLabelFor(state) {\n return (schemaOrName) => {\n let group = schemaOrName;\n\n if ( typeof schemaOrName === 'object' ) {\n let moved = false;\n\n for ( const rule of state.typeMoveMappings ) {\n const re = stringToRegex(rule.match);\n\n if ( schemaOrName.id.match(re) ) {\n moved = true;\n group = rule.replace;\n }\n }\n\n if ( !moved ) {\n group = group.attributes.group;\n }\n }\n\n if ( typeof group !== 'string' ) {\n return null;\n }\n\n const out = _applyMapping(group, state.groupMappings, null, state.cache.groupLabel, (group) => {\n const match = group.match(/^(.*)\\.k8s\\.io$/);\n\n if ( match ) {\n return match[1].split(/\\./).map((x) => ucFirst(x)).join('.');\n }\n\n return group;\n });\n\n return out;\n };\n },\n\n groupForBasicType(state) {\n return (product, schemaId) => {\n return state.basicTypes?.[product]?.[schemaId];\n };\n },\n\n optionsFor(state) {\n const def = {\n isCreatable: true,\n isEditable: true,\n isRemovable: true,\n showState: true,\n showAge: true,\n canYaml: true,\n namespaced: null,\n listGroups: [],\n depaginate: false,\n customRoute: undefined,\n resourceEditMasthead: true,\n };\n\n return (schemaOrType) => {\n if (!schemaOrType) {\n return {};\n }\n\n const type = (typeof schemaOrType === 'object' ? schemaOrType.id : schemaOrType);\n const found = state.typeOptions.find((entry) => {\n const re = stringToRegex(entry.match);\n\n return re.test(type);\n });\n\n const opts = Object.assign({}, def, found || {});\n\n return opts;\n };\n },\n\n isFavorite(state, getters, rootState, rootGetters) {\n return (schemaId) => {\n return rootGetters['prefs/get'](FAVORITE_TYPES).includes(schemaId) || false;\n };\n },\n\n typeWeightFor(state) {\n return (type, forBasic) => {\n type = type?.toLowerCase();\n\n if ( forBasic ) {\n return state.basicTypeWeights[type] || 0;\n } else {\n return state.typeWeights[type] || 0;\n }\n };\n },\n\n groupWeightFor(state) {\n return (group, forBasic) => {\n group = group.toLowerCase();\n\n if ( forBasic ) {\n return state.basicGroupWeights[group] || 0;\n } else {\n return state.groupWeights[group] || 0;\n }\n };\n },\n\n groupDefaultTypeFor(state) {\n return (group) => {\n group = group.toLowerCase();\n\n return state.groupDefaultTypes[group];\n };\n },\n\n getTree(state, getters, rootState, rootGetters) {\n // Name the function so it's easily identifiable when performance tracing\n return function getTree(productId, mode, allTypes, clusterId, namespaceMode, currentType, search) {\n // getTree has four modes:\n // - `basic` matches data types that should always be shown (even if there are 0 of them).\n // - `used` matches the data types where there are more than 0 of them in the current set of namespaces.\n // - `all` matches all types.\n // - `favorite` matches starred types.\n // namespaceMode: 'namespaced', 'cluster', or 'both'\n // namespaces: null means all, otherwise it will be an array of specific namespaces to include\n const isBasic = mode === TYPE_MODES.BASIC;\n\n let searchRegex;\n\n if ( search ) {\n searchRegex = new RegExp(`^(.*)(${ escapeRegex(search) })(.*)$`, 'i');\n }\n\n const root = { children: [] };\n\n // Add types from shortest to longest so that parents\n // get added before children\n const keys = Object.keys(allTypes).sort((a, b) => a.length - b.length);\n\n // Set these for later\n const currentLocal = rootGetters['i18n/current']();\n const defaultLocal = rootGetters['i18n/default']();\n\n for ( const type of keys ) {\n const typeObj = allTypes[type];\n\n if ( typeObj.schema && getters.isIgnored(typeObj.schema) ) {\n // Skip ignored groups & types\n continue;\n }\n\n const namespaced = typeObj.namespaced;\n\n if ( (namespaceMode === NAMESPACED && !namespaced ) || (namespaceMode === CLUSTER_LEVEL && namespaced) ) {\n // Skip types that are not the right namespace mode\n continue;\n }\n\n const inStore = rootGetters.currentStore(typeObj.name);\n const count = rootGetters[`${ inStore }/count`](typeObj);\n const groupForBasicType = getters.groupForBasicType(productId, typeObj.name);\n\n if ( typeObj.id === currentType ) {\n // If this is the type currently being shown, always show it\n } else if ( isBasic && !groupForBasicType ) {\n // If we want the basic tree only return basic types;\n continue;\n } else if ( mode === TYPE_MODES.USED && count <= 0 ) {\n // If there's none of this type, ignore this entry when viewing only in-use types\n // Note: count is sometimes null, which is <= 0.\n continue;\n }\n\n const label = typeObj.labelKey ? rootGetters['i18n/t'](typeObj.labelKey) || typeObj.label : typeObj.label;\n\n const labelDisplay = highlightLabel(label, count, typeObj.schema);\n\n if ( !labelDisplay ) {\n // Search happens in highlight and returns null if not found\n continue;\n }\n\n let group;\n\n if ( isBasic ) {\n group = _ensureGroup(root, groupForBasicType, true);\n } else if ( mode === TYPE_MODES.FAVORITE ) {\n group = _ensureGroup(root, 'starred');\n group.weight = 1000;\n } else if ( mode === TYPE_MODES.USED ) {\n group = _ensureGroup(root, `inUse::${ getters.groupLabelFor(typeObj.schema) }`);\n } else {\n group = _ensureGroup(root, typeObj.schema || typeObj.group || ROOT);\n }\n\n let route = typeObj.route;\n\n // Make the default route if one isn't set\n if (!route ) {\n route = {\n name: 'c-cluster-product-resource',\n params: {\n product: productId,\n cluster: clusterId,\n resource: typeObj.name,\n }\n };\n\n typeObj.route = route;\n }\n\n // Cluster ID and Product should always be set\n if ( route && typeof route === 'object' ) {\n route.params = route.params || {};\n route.params.cluster = clusterId;\n route.params.product = productId;\n }\n\n group.children.push({\n label,\n labelDisplay,\n mode: typeObj.mode,\n exact: typeObj.exact || false,\n namespaced,\n route,\n name: typeObj.name,\n weight: typeObj.weight || getters.typeWeightFor(typeObj.schema?.id || label, isBasic),\n overview: !!typeObj.overview,\n });\n }\n\n // Recursively sort the groups\n _sortGroup(root, mode);\n\n return root.children;\n\n // ----------------------\n\n function _ensureGroup(tree, schemaOrName, forBasic = false) {\n let name = getters.groupLabelFor(schemaOrName);\n const isRoot = ( name === ROOT || name.startsWith(`${ ROOT }::`) );\n\n if ( name && name.includes('::') ) {\n let parent;\n\n [parent, name] = name.split('::', 2);\n tree = _ensureGroup(tree, parent);\n }\n\n // Translate if an entry exists\n let label = name;\n const key = `nav.group.\"${ name }\"`;\n\n if ( rootGetters['i18n/exists'](key) ) {\n label = rootGetters['i18n/t'](key);\n }\n\n let group = findBy(tree.children, 'name', name);\n\n if ( !group ) {\n group = {\n name,\n label,\n weight: getters.groupWeightFor(name, forBasic),\n defaultType: getters.groupDefaultTypeFor(name),\n };\n\n tree.children.push(group);\n }\n\n if ( isRoot ) {\n group.isRoot = true;\n }\n\n if ( !group.children ) {\n group.children = [];\n }\n\n return group;\n }\n\n function highlightLabel(original, count, schema) {\n let label = escapeHtml(original);\n\n if ( searchRegex ) {\n let match = label.match(searchRegex);\n\n if (!match) {\n if ( currentLocal !== defaultLocal && schema ) {\n const defaultLabel = getters.labelFor(schema, count, defaultLocal);\n\n if (defaultLabel && defaultLabel !== label ) {\n label += ` (${ defaultLabel })`;\n match = label.match(searchRegex);\n }\n }\n }\n\n if ( match ) {\n label = `${ escapeHtml(match[1]) }${ escapeHtml(match[2]) }${ escapeHtml(match[3]) }`;\n } else {\n return null;\n }\n }\n\n return label;\n }\n };\n },\n\n isSpoofed(state, getters, rootState, rootGetters) {\n return (type, product) => {\n product = product || rootGetters['productId'];\n const productSpoofedTypes = state.spoofedTypes[product] || [];\n\n return productSpoofedTypes.some((st) => st.type === type);\n };\n },\n\n isVirtual(state, getters, rootState, rootGetters) {\n return (name, product) => {\n product = product || rootGetters['productId'];\n const productVirtualTypes = state.virtualTypes[product] || [];\n\n return productVirtualTypes.some((st) => st.name === name);\n };\n },\n\n getSpoofedInstances(state, getters, rootState, rootGetters) {\n return async(type, product) => {\n product = product || rootGetters['productId'];\n const getInstances = instanceMethods[product]?.[type] || (() => []);\n const instances = await getInstances();\n\n instances.forEach((instance) => {\n const type = instance.type;\n const id = instance.id;\n const link = `/${ SPOOFED_PREFIX }/${ type }/${ id }`;\n const apiLink = `/${ SPOOFED_API_PREFIX }/${ type }/${ id }`;\n\n instance.links = {\n remove: instance.links?.remove || link,\n self: instance.links?.self || link,\n update: instance.links?.update || link,\n view: instance.links?.view || apiLink,\n };\n instance.isSpoofed = true;\n });\n\n return instances;\n };\n },\n\n getSpoofedInstance(state, getters, rootState, rootGetters) {\n return async(type, product, id) => {\n const productInstances = await getters.getSpoofedInstances(type, product);\n\n return productInstances.find( (instance) => instance.id === id);\n };\n },\n\n allSpoofedTypes(state, getters, rootState, rootGetters) {\n return Object.values(state.spoofedTypes).flat();\n },\n\n spoofedSchemas(state, getters, rootState, rootGetters) {\n return (product) => {\n const types = state.spoofedTypes[product] || [];\n\n return types.flatMap((type) => {\n const schemas = type.schemas || [];\n\n return schemas.map((schema) => ({\n ...schema,\n isSpoofed: true\n }));\n });\n };\n },\n\n allSpoofedSchemas(state, getters, rootState, rootGetters) {\n return getters.allSpoofedTypes.flatMap((type) => {\n const schemas = type.schemas || [];\n\n return schemas.map((schema) => ({\n ...schema,\n isSpoofed: true\n }));\n });\n },\n\n /**\n * Given many things, create a list of menu items per schema given the mode\n */\n allTypes(state, getters, rootState, rootGetters) {\n // Name the function so it's easily identifiable when performance tracing\n return function allTypes(product, modes = [TYPE_MODES.ALL]) {\n const module = state.products.find((p) => p.name === product)?.inStore;\n const schemas = rootGetters[`${ module }/all`](SCHEMA);\n const isLocal = !rootGetters.currentCluster?.isLocal;\n const isRancher = rootGetters.isRancher;\n const counts = rootGetters[`${ module }/all`](COUNT)?.[0]?.counts || {};\n\n const out = {};\n\n // For performance reasons this must be super quick to iterate over.\n // For each schema...\n // 1) Determine if it's applicable given the mode\n // 2) For each applicable mode create a `Type` entry\n for ( const schema of schemas ) {\n let schemaModes = { };\n\n modes.forEach((m) => {\n schemaModes[m] = true;\n });\n\n const attrs = schema.attributes || {};\n const typeOptions = getters['optionsFor'](schema);\n\n schemaModes[TYPE_MODES.BASIC] = schemaModes[TYPE_MODES.BASIC] && getters.groupForBasicType(product, schema.id);\n\n if (Object.values(schemaModes).every((s) => !s)) {\n continue;\n }\n\n schemaModes[TYPE_MODES.FAVORITE] = schemaModes[TYPE_MODES.FAVORITE] && getters.isFavorite(schema.id);\n\n if (Object.values(schemaModes).every((s) => !s)) {\n continue;\n }\n\n const onlyBasic = schemaModes[TYPE_MODES.BASIC] && modes.length === 1;\n\n // This clause is only valid for non-basic modes. So if we have only basic... skip it\n if (!onlyBasic) {\n const invalidType = !attrs.kind ||\n (typeof typeOptions.ifRancherCluster !== 'undefined' && typeOptions.ifRancherCluster !== isRancher) ||\n (typeOptions.localOnly && isLocal);\n\n if (invalidType) {\n // Remove anything not basic\n schemaModes = { [TYPE_MODES.BASIC]: schemaModes[TYPE_MODES.BASIC] };\n }\n }\n\n // This is an expensive request to make, so only do it if we really need to\n let label;\n\n Object.entries(schemaModes).forEach(([mode, enabled]) => {\n if (!enabled) {\n return;\n }\n\n if (!out[mode]) {\n out[mode] = {};\n }\n\n if (!label) {\n label = getters.labelFor(schema, counts[schema.id]);\n }\n\n out[mode][schema.id] = {\n label,\n mode,\n weight: getters.typeWeightFor(schema?.id || label, mode === TYPE_MODES.BASIC),\n schema,\n name: schema.id,\n namespaced: typeOptions.namespaced === null ? attrs.namespaced : typeOptions.namespaced,\n route: typeOptions.customRoute\n };\n });\n }\n\n const nonUsedModes = modes.filter((m) => m !== TYPE_MODES.USED);\n const isDev = rootGetters['prefs/get'](VIEW_IN_API);\n\n // Add virtual and spoofed types\n if ( nonUsedModes.length ) {\n const virtualTypes = state.virtualTypes[product] || [];\n const spoofedTypes = state.spoofedTypes[product] || [];\n const allTypes = [...virtualTypes, ...spoofedTypes];\n const virtSpoofedModes = [...nonUsedModes];\n\n for ( const type of allTypes ) {\n const item = clone(type);\n const id = item.name;\n\n // Is there a virtual/spoofed type override for schema type?\n // Currently used by harvester, this should be investigated and removed if possible\n virtSpoofedModes.forEach((mode) => {\n if (out[mode]?.[id]) {\n delete out[mode][id];\n }\n });\n\n if ( item['public'] === false && !isDev ) {\n continue;\n }\n\n if (item.ifHave && !ifHave(rootGetters, item.ifHave)) {\n continue;\n }\n\n if ( item.ifHaveType ) {\n const targetedSchemas = typeof item.ifHaveType === 'string' ? schemas : rootGetters[`${ item.ifHaveType.store }/all`](SCHEMA);\n const type = typeof item.ifHaveType === 'string' ? item.ifHaveType : item.ifHaveType?.type;\n\n const haveIds = filterBy(targetedSchemas, 'id', normalizeType(type)).map((s) => s.id);\n\n if (!haveIds.length) {\n continue;\n }\n\n if (item.ifHaveVerb && !ifHaveVerb(rootGetters, module, item.ifHaveVerb, haveIds)) {\n continue;\n }\n }\n\n if ( item.ifHaveSubTypes ) {\n const hasSome = (item.ifHaveSubTypes || []).some((type) => {\n return !!findBy(schemas, 'id', normalizeType(type));\n });\n\n if (!hasSome) {\n continue;\n }\n }\n\n if ( typeof item.ifRancherCluster !== 'undefined' && item.ifRancherCluster !== rootGetters.isRancher ) {\n continue;\n }\n\n if (item.ifFeature && !rootGetters['features/get'](item.ifFeature)) {\n continue;\n }\n\n if (virtSpoofedModes.includes(TYPE_MODES.BASIC) && !getters.groupForBasicType(product, id) ) {\n virtSpoofedModes.splice(virtSpoofedModes.indexOf(TYPE_MODES.BASIC), 1);\n }\n\n if (virtSpoofedModes.includes(TYPE_MODES.FAVORITE) && !getters.isFavorite(id) ) { // mode === TYPE_MODES.FAVORITE &&\n virtSpoofedModes.splice(virtSpoofedModes.indexOf(TYPE_MODES.FAVORITE), 1);\n }\n\n // Ensure labelKey is taken into account... with a mock count\n // This is harmless if the translation doesn't require count\n if (item.labelKey && rootGetters['i18n/exists'](item.labelKey)) {\n item.label = rootGetters['i18n/t'](item.labelKey, { count: 2 }).trim();\n delete item.labelKey; // Label should really take precedence over labelKey, but it doesn't, so remove it\n } else {\n item.label = item.label || item.name;\n }\n\n virtSpoofedModes.forEach((mode) => {\n const isBasic = mode === TYPE_MODES.BASIC;\n const weight = type.weight || getters.typeWeightFor(item.label, isBasic);\n\n item.mode = mode;\n item.weight = weight;\n if (!out[mode]) {\n out[mode] = {};\n }\n out[mode][id] = item;\n });\n }\n }\n\n return out;\n };\n },\n\n groupByFor(state) {\n return (schema) => {\n return state.groupBy[schema?.id];\n };\n },\n\n hideBulkActionsFor(state) {\n return (schema) => {\n return state.hideBulkActions[schema.id];\n };\n },\n\n headersFor(state, getters, rootState, rootGetters) {\n return (schema) => {\n const attributes = schema.attributes || {};\n const columns = attributes.columns || [];\n const typeOptions = getters['optionsFor'](schema);\n\n // A specific list has been provided\n if ( state.headers[schema.id] ) {\n return state.headers[schema.id].map((entry) => {\n if ( typeof entry === 'string' ) {\n const col = findBy(columns, 'name', entry);\n\n if ( col ) {\n return fromSchema(col, rootGetters);\n } else {\n return null;\n }\n } else {\n return entry;\n }\n }).filter((col) => !!col);\n }\n\n // Otherwise make one up from schema\n const out = typeOptions.showState ? [STATE] : [];\n const namespaced = attributes.namespaced || false;\n let hasName = false;\n\n for ( const col of columns ) {\n if ( col.format === 'name' ) {\n hasName = true;\n out.push(NAME);\n if ( namespaced ) {\n out.push(NAMESPACE_COL);\n }\n } else {\n out.push(fromSchema(col, rootGetters));\n }\n }\n\n if ( !hasName ) {\n insertAt(out, 1, NAME);\n if ( namespaced ) {\n insertAt(out, 2, NAMESPACE_COL);\n }\n }\n\n // Age always goes last\n if ( out.includes(AGE) ) {\n removeObject(out, AGE);\n if ( typeOptions.showAge ) {\n out.push(AGE);\n }\n }\n\n return out;\n\n function fromSchema(col, rootGetters) {\n let formatter, width, formatterOpts;\n\n if ( (col.format === '' || col.format === 'date') && col.name === 'Age' ) {\n return AGE;\n }\n\n if ( col.format === 'date' || col.type === 'date' ) {\n formatter = 'Date';\n width = 120;\n formatterOpts = { multiline: true };\n }\n\n if ( col.type === 'number' || col.type === 'int' ) {\n formatter = 'Number';\n }\n\n const colName = col.name.includes(' ') ? col.name.split(' ').map((word) => word.charAt(0).toUpperCase() + word.substring(1) ).join('') : col.name;\n\n const exists = rootGetters['i18n/exists'];\n const t = rootGetters['i18n/t'];\n const labelKey = `tableHeaders.${ colName.charAt(0).toLowerCase() + colName.slice(1) }`;\n const description = col.description || '';\n const tooltip = description && description[description.length - 1] === '.' ? description.slice(0, -1) : description;\n\n return {\n name: col.name.toLowerCase(),\n label: exists(labelKey) ? t(labelKey) : col.name,\n value: _rowValueGetter(col),\n sort: [col.field],\n formatter,\n formatterOpts,\n width,\n tooltip\n };\n }\n };\n },\n\n // ------------------------------------\n // Custom list/detail/edit/header component detection\n //\n // Note: you can't refactor these into one function that does `@/${kind}/${type}`,\n // because babel needs some hardcoded idea where to look for the dependency.\n //\n // Note 2: Yes these are editing state in a getter for caching... it's ok, probably.\n // ------------------------------------\n hasCustomList(state, getters, rootState) {\n return (rawType) => {\n const key = getters.componentFor(rawType);\n\n return hasCustom(state, rootState, 'list', key, (key) => resolveList(key));\n };\n },\n\n hasCustomChart(state, getters, rootState) {\n return (rawType) => {\n const key = getters.componentFor(rawType);\n\n return hasCustom(state, rootState, 'chart', key, (key) => resolveChart(key));\n };\n },\n\n hasCustomDetail(state, getters, rootState) {\n return (rawType, subType) => {\n const key = getters.componentFor(rawType, subType);\n\n return hasCustom(state, rootState, 'detail', key, (key) => resolveDetail(key));\n };\n },\n\n hasGraph(state, getters) {\n return (resource) => {\n const typeOptions = getters['optionsFor'](resource);\n\n if (typeOptions && typeOptions.hasGraph) {\n return graphConfigMap[resource];\n }\n\n return null;\n };\n },\n\n hasCustomEdit(state, getters, rootState) {\n return (rawType, subType) => {\n const key = getters.componentFor(rawType, subType);\n\n return hasCustom(state, rootState, 'edit', key, (key) => resolveEdit(key));\n };\n },\n\n hasComponent(state, getters, rootState) {\n return (path) => {\n return hasCustom(state, rootState, 'edit', path, (path) => resolveEdit(path));\n };\n },\n\n hasCustomPromptRemove(state, getters, rootState) {\n return (rawType, subType) => {\n const key = getters.componentFor(rawType, subType);\n\n return hasCustom(state, rootState, 'promptRemove', key, () => require.resolve(`@shell/promptRemove/${ key }`));\n };\n },\n\n hasCustomWindowComponent(state, getters, rootState) {\n return (rawType, subType) => {\n const key = getters.componentFor(rawType, subType);\n\n return hasCustom(state, rootState, 'windowComponents', key, (key) => resolveWindowComponent(key));\n };\n },\n\n hasCustomMachineConfigComponent(state, getters, rootState) {\n return (rawType, subType) => {\n const key = getters.componentFor(rawType, subType);\n\n return hasCustom(state, rootState, 'machine-config', key, (key) => resolveMachineConfigComponent(key));\n };\n },\n\n hasCustomCloudCredentialComponent(state, getters, rootState) {\n return (rawType, subType) => {\n const key = getters.componentFor(rawType, subType);\n\n return hasCustom(state, rootState, 'cloud-credential', key, (key) => resolveCloudCredentialComponent(key));\n };\n },\n\n importComponent(state, getters) {\n return (path) => {\n return importEdit(path);\n };\n },\n\n importDialog(state, getters, rootState) {\n return (rawType, subType) => {\n return loadExtension(rootState, 'dialog', getters.componentFor(rawType, subType), importDialog);\n };\n },\n\n importList(state, getters, rootState) {\n return (rawType) => {\n return loadExtension(rootState, 'list', getters.componentFor(rawType), importList);\n };\n },\n\n importChart(state, getters, rootState) {\n return (rawType) => {\n return loadExtension(rootState, 'chart', getters.componentFor(rawType), importChart);\n };\n },\n\n importDetail(state, getters, rootState) {\n return (rawType, subType) => {\n return loadExtension(rootState, 'detail', getters.componentFor(rawType, subType), importDetail);\n };\n },\n\n importEdit(state, getters, rootState) {\n return (rawType, subType) => {\n return loadExtension(rootState, 'edit', getters.componentFor(rawType, subType), importEdit);\n };\n },\n\n importCustomPromptRemove(state, getters, rootState) {\n return (rawType, subType) => {\n return loadExtension(rootState, 'promptRemove', getters.componentFor(rawType, subType), importCustomPromptRemove);\n };\n },\n\n importWindowComponent(state, getters, rootState) {\n return (rawType, subType) => {\n return loadExtension(rootState, 'windowComponents', getters.componentFor(rawType, subType), importWindowComponent);\n };\n },\n\n importLogin(state, getters, rootState) {\n return (authType) => {\n return loadExtension(rootState, 'login', authType, importLogin);\n };\n },\n\n importMachineConfig(state, getters, rootState) {\n return (rawType, subType) => {\n return loadExtension(rootState, 'machine-config', getters.componentFor(rawType, subType), importMachineConfig);\n };\n },\n\n importCloudCredential(state, getters, rootState) {\n return (rawType, subType) => {\n return loadExtension(rootState, 'cloud-credential', getters.componentFor(rawType, subType), importCloudCredential);\n };\n },\n\n componentFor(state, getters) {\n return (type, subType) => {\n let key = type;\n\n if ( subType ) {\n key = `${ type }/${ subType }`;\n }\n\n if ( state.cache.componentFor[key] !== undefined ) {\n return state.cache.componentFor[key];\n }\n\n let out = type;\n\n const mapping = state.typeToComponentMappings.find((mapping) => {\n const re = stringToRegex(mapping.match);\n\n return re.test(key);\n });\n\n if ( mapping ) {\n out = mapping.replace;\n } else if ( subType ) {\n // Try again without the subType\n out = getters.componentFor(type);\n }\n\n state.cache.componentFor[key] = out;\n\n return out;\n };\n },\n\n isIgnored(state, getters, rootState, rootGetters) {\n return (schema) => {\n let out = false;\n\n for ( const rule of state.groupIgnore ) {\n const group = schema?.attributes?.group;\n\n if (group && group.match(stringToRegex(rule.type) && isObject(rule) && rule.type)) {\n out = rule.cb(rootGetters);\n break;\n }\n\n if ( group && typeof rule === 'string' && group.match(stringToRegex(rule)) ) {\n out = true;\n break;\n }\n }\n\n if ( !out ) {\n for ( const rule of state.typeIgnore ) {\n if ( schema.id.match(stringToRegex(rule)) ) {\n out = true;\n break;\n }\n }\n }\n\n state.cache.ignore[schema.id] = out;\n\n return out;\n };\n },\n\n activeProducts(state, getters, rootState, rootGetters) {\n const knownTypes = {};\n const knownGroups = {};\n const isDev = rootGetters['prefs/get'](VIEW_IN_API);\n\n if ( state.schemaGeneration < 0 ) {\n // This does nothing, but makes activeProducts depend on schemaGeneration\n // so that it can be used to update the product list on schema change.\n return;\n }\n\n return state.products.filter((p) => {\n const module = p.inStore;\n\n if ( p['public'] === false && !isDev ) {\n return false;\n }\n\n if ( p.ifGetter && !rootGetters[p.ifGetter] ) {\n return false;\n }\n\n if ( !knownTypes[module] ) {\n const schemas = rootGetters[`${ module }/all`](SCHEMA);\n\n knownTypes[module] = [];\n knownGroups[module] = [];\n\n for ( const s of schemas ) {\n knownTypes[module].push(s._id);\n\n if ( s._group ) {\n addObject(knownGroups[module], s._group);\n }\n }\n }\n\n if ( p.ifFeature) {\n const features = Array.isArray(p.ifFeature) ? p.ifFeature : [p.ifFeature];\n\n for (const f of features) {\n if (!rootGetters['features/get'](f)) {\n return false;\n }\n }\n }\n\n if ( p.ifHave && !ifHave(rootGetters, p.ifHave)) {\n return false;\n }\n\n if ( p.ifHaveType ) {\n const haveIds = knownTypes[module].filter((t) => t.match(stringToRegex(p.ifHaveType)) );\n\n if ( !haveIds.length ) {\n return false;\n }\n\n if ( p.ifHaveVerb && !ifHaveVerb(rootGetters, module, p.ifHaveVerb, haveIds)) {\n return false;\n }\n }\n\n if ( p.ifHaveGroup && !knownGroups[module].find((t) => t.match(stringToRegex(p.ifHaveGroup)) ) ) {\n return false;\n }\n\n return true;\n });\n },\n\n isProductActive(state, getters) {\n return (name) => {\n if ( findBy(getters['activeProducts'], 'name', name) ) {\n return true;\n }\n\n return false;\n };\n },\n\n rowValueGetter(state) {\n return (schema, colName) => {\n const col = _findColumnByName(schema, colName);\n\n return _rowValueGetter(col);\n };\n },\n\n isProductRegistered(state) {\n return (productName) => {\n const prod = state.products.find((p) => p.name === productName);\n\n return !!prod;\n };\n },\n};\n\nexport const mutations = {\n schemaChanged(state) {\n state.schemaGeneration = state.schemaGeneration + 1;\n },\n\n // Remove the specified product\n remove(state, { product, plugin }) {\n const existing = state.products.findIndex((p) => p.name === product);\n\n // Remove the product\n if (existing !== -1) {\n state.products.splice(existing, 1);\n }\n\n // Go through the basic types and remove the headers\n if (state.virtualTypes[product]) {\n delete state.virtualTypes[product];\n }\n\n if (state.basicTypes[product]) {\n // Remove table header configuration\n Object.keys(state.basicTypes[product]).forEach((type) => {\n delete state.headers[type];\n delete state.basicTypeWeights[type];\n delete state.cache.ignore[type];\n // These track whether the type has a custom component\n delete state.cache.detail[type];\n delete state.cache.edit[type];\n delete state.cache.list[type];\n\n // Delete all of the entries from the componentFor cache where the valye is the type\n // Can do this more efficiently\n Object.keys(state.cache.componentFor).forEach((k) => {\n const v = state.cache.componentFor[k];\n\n if (v === type) {\n delete state.cache.componentFor[k];\n }\n });\n });\n\n delete state.basicTypes[product];\n }\n\n if (plugin) {\n // kind is list, edit, detail etc\n Object.keys(plugin.types).forEach((kind) => {\n if (state.cache[kind]) {\n Object.keys(plugin.types[kind]).forEach((type) => {\n delete state.cache[kind][type];\n });\n }\n });\n }\n },\n\n product(state, obj) {\n const existing = findBy(state.products, 'name', obj.name);\n\n if ( existing ) {\n Object.assign(existing, obj);\n } else {\n addObject(state.products, obj);\n }\n },\n\n virtualType(state, { product, obj }) {\n if ( !state.virtualTypes[product] ) {\n state.virtualTypes[product] = [];\n }\n\n const copy = clone(obj);\n\n copy.virtual = true;\n\n const existing = findBy(state.virtualTypes[product], 'name', copy.name);\n\n if ( existing ) {\n Object.assign(existing, copy);\n } else {\n addObject(state.virtualTypes[product], copy);\n }\n },\n\n spoofedType(state, { product, obj }) {\n if ( !state.spoofedTypes[product] ) {\n state.spoofedTypes[product] = [];\n }\n\n const copy = clone(obj);\n\n instanceMethods[product] = instanceMethods[product] || {};\n instanceMethods[product][copy.type] = copy.getInstances;\n delete copy.getInstances;\n\n copy.name = copy.type;\n copy.isSpoofed = true;\n copy.virtual = true;\n copy.schemas.forEach((schema) => {\n schema.links = {\n collection: `/${ SPOOFED_PREFIX }/${ schema.id }`,\n ...(schema.links || {})\n };\n });\n\n const existing = findBy(state.spoofedTypes[product], 'type', copy.type);\n\n if ( existing ) {\n Object.assign(existing, copy);\n } else {\n addObject(state.spoofedTypes[product], copy);\n }\n },\n\n basicType(state, { product, group, types }) {\n if ( !product ) {\n product = EXPLORER;\n }\n\n if ( !group ) {\n group = ROOT;\n }\n\n if ( !isArray(types) ) {\n types = [types];\n }\n\n if ( !state.basicTypes[product] ) {\n state.basicTypes[product] = {};\n }\n\n for ( const t of types ) {\n state.basicTypes[product][t] = group;\n }\n },\n\n ignoreGroup(state, { regexOrString: match, cb }) {\n match = ensureRegex(match);\n // State shouldn't contain actual RegExp objects, because they don't serialize\n cb ? state.groupIgnore.push({\n type: regexToString(match),\n cb\n }) : state.groupIgnore.push(regexToString(match));\n },\n\n ignoreType(state, match) {\n match = ensureRegex(match);\n state.typeIgnore.push(regexToString(match));\n },\n\n groupBy(state, { type, field }) {\n state.groupBy[type] = field;\n },\n\n headers(state, { type, headers }) {\n state.headers[type] = headers;\n },\n\n hideBulkActions(state, { type, field }) {\n state.hideBulkActions[type] = field;\n },\n\n // weightGroup({group: 'core', weight: 99}); -- higher groups are shown first\n // These operate on group names *after* mapping but *before* translation\n weightGroup(state, {\n group, groups, weight, forBasic\n }) {\n if ( !groups ) {\n groups = [];\n }\n\n if ( group ) {\n groups.push(group);\n }\n\n const map = forBasic ? state.basicGroupWeights : state.groupWeights;\n\n for ( const g of groups ) {\n map[g.toLowerCase()] = weight;\n }\n },\n\n // setGroupDefaultType({group: 'core', defaultType: 'name'});\n // By default when a group is clicked, the first item is selected - this allows\n // this behaviour to be changed and a named child type can be chosen\n // These operate on group names *after* mapping but *before* translation\n setGroupDefaultType(state, { group, groups, defaultType }) {\n if ( !groups ) {\n groups = [];\n }\n\n if ( group ) {\n groups.push(group);\n }\n\n for ( const g of groups ) {\n state.groupDefaultTypes[g.toLowerCase()] = defaultType;\n }\n },\n\n // weightType('Cluster' 99); -- higher groups are shown first\n // These operate on *schema* type names, before mapping\n weightType(state, {\n type, types, weight, forBasic\n }) {\n if ( !types ) {\n types = [];\n }\n\n if ( type ) {\n types.push(type);\n }\n\n const map = forBasic ? state.basicTypeWeights : state.typeWeights;\n\n for ( const t of types ) {\n map[t.toLowerCase()] = weight;\n }\n },\n\n // mapGroup('ugly.thing', 'Nice Thing', 1);\n // mapGroup(/ugly.thing.(stuff)', '$1', 2);\n // mapGroup(/ugly.thing.(stuff)', function(groupStr, ruleObj, regexMatch, typeObj) { return ucFirst(group.id) } , 2);\n mapGroup(state, {\n match, replace, weight = 5, continueOnMatch = false\n }) {\n _addMapping(state.groupMappings, match, replace, weight, continueOnMatch);\n },\n\n mapType(state, {\n match, replace, weight = 5, continueOnMatch = false\n }) {\n _addMapping(state.typeMappings, match, replace, weight, continueOnMatch);\n },\n\n // moveType('apps.deployment', 'Core');\n moveType(state, { match, group, weight = 5 }) {\n _addMapping(state.typeMoveMappings, match, group, weight);\n },\n\n componentForType(state, { match, replace }) {\n match = ensureRegex(match);\n match = regexToString(match);\n state.typeToComponentMappings.push({ match, replace });\n },\n\n configureType(state, options) {\n const match = regexToString(ensureRegex(options.match));\n\n const idx = state.typeOptions.findIndex((obj) => obj.match === match);\n let obj = { ...options, match };\n\n if ( idx >= 0 ) {\n obj = Object.assign(state.typeOptions[idx], obj);\n state.typeOptions.splice(idx, 1, obj);\n } else {\n const obj = Object.assign({}, options, { match });\n\n state.typeOptions.push(obj);\n }\n },\n\n};\n\nexport const actions = {\n removeProduct({ commit }, metadata) {\n commit('remove', metadata);\n },\n\n addFavorite({ dispatch, rootGetters }, type) {\n const types = rootGetters['prefs/get'](FAVORITE_TYPES) || [];\n\n addObject(types, type);\n\n dispatch('prefs/set', { key: FAVORITE_TYPES, value: types }, { root: true });\n },\n\n removeFavorite({ dispatch, rootGetters }, type) {\n const types = rootGetters['prefs/get'](FAVORITE_TYPES) || [];\n\n removeObject(types, type);\n\n dispatch('prefs/set', { key: FAVORITE_TYPES, value: types }, { root: true });\n },\n\n toggleGroup({ dispatch, rootGetters }, { group, expanded }) {\n const groups = rootGetters['prefs/get'](EXPANDED_GROUPS);\n\n if ( expanded ) {\n addObject(groups, group);\n } else {\n removeObject(groups, group);\n }\n\n dispatch('prefs/set', { key: EXPANDED_GROUPS, value: groups }, { root: true });\n },\n\n configureType({ commit }, options) {\n commit('configureType', options);\n }\n};\n\nfunction _sortGroup(tree, mode) {\n const by = ['weight:desc', 'namespaced', 'label'];\n\n tree.children = sortBy(tree.children, by);\n\n for (const entry of tree.children ) {\n if ( entry.children ) {\n _sortGroup(entry, mode);\n }\n }\n}\n\nfunction _applyMapping(objOrValue, mappings, keyField, cache, defaultFn) {\n let key = objOrValue;\n let found = false;\n\n if ( keyField ) {\n if ( typeof objOrValue !== 'object' ) {\n return objOrValue;\n }\n\n key = get(objOrValue, keyField);\n\n if ( typeof key !== 'string' ) {\n return null;\n }\n }\n\n if ( key && cache && cache[key] ) {\n return cache[key];\n }\n\n let out = `${ key }`;\n\n for ( const rule of mappings ) {\n const re = stringToRegex(rule.match);\n const captured = out.match(re);\n\n if ( captured && rule.replace ) {\n out = out.replace(re, rule.replace);\n\n found = true;\n if ( !rule.continueOnMatch ) {\n break;\n }\n }\n }\n\n if ( !found && defaultFn ) {\n out = defaultFn(out, objOrValue);\n }\n\n if ( cache ) {\n cache[key] = out;\n }\n\n return out;\n}\n\nfunction _addMapping(mappings, match, replace, weight, continueOnMatch) {\n match = regexToString(ensureRegex(match));\n\n mappings.push({\n match,\n replace,\n weight,\n continueOnMatch,\n insertIndex: mappings.length,\n });\n\n // Re-sort the list by weight (highest first) and insert time (oldest first)\n mappings.sort((a, b) => {\n const pri = b.weight - a.weight;\n\n if ( pri ) {\n return pri;\n }\n\n return a.insertIndex - b.insertIndex;\n });\n}\n\n// Regexes can't be represented in state because they don't serialize to JSON..\nconst regexCache = {};\n\nfunction regexToString(regex) {\n return regex.source;\n}\n\nfunction stringToRegex(str) {\n let out = regexCache[str];\n\n if ( !out ) {\n out = new RegExp(str);\n regexCache[str] = out;\n }\n\n return out;\n}\n\nfunction ifHave(getters, option) {\n switch (option) {\n case IF_HAVE.V2_MONITORING: {\n return haveV2Monitoring(getters);\n }\n case IF_HAVE.V1_MONITORING: {\n return haveV1Monitoring(getters);\n }\n case IF_HAVE.PROJECT: {\n return !!project(getters);\n }\n case IF_HAVE.NO_PROJECT: {\n return !project(getters);\n }\n case IF_HAVE.NOT_V1_ISTIO: {\n return !isV1Istio(getters);\n }\n case IF_HAVE.MULTI_CLUSTER: {\n return getters.isMultiCluster;\n }\n case IF_HAVE.NEUVECTOR_NAMESPACE: {\n return getters[`cluster/all`](NAMESPACE).find((n) => n.metadata.name === NEU_VECTOR_NAMESPACE);\n }\n case IF_HAVE.ADMIN: {\n return isAdminUser(getters);\n }\n case IF_HAVE.MCM_DISABLED: {\n return !getters['isRancherInHarvester'];\n }\n case IF_HAVE.NOT_STANDALONE_HARVESTER: {\n return !getters['isStandaloneHarvester'];\n }\n default:\n return false;\n }\n}\n\n// Could list a larger set of resources that typically only an admin user would have\nexport function isAdminUser(getters) {\n const canEditSettings = (getters['management/schemaFor'](MANAGEMENT.SETTING)?.resourceMethods || []).includes('PUT');\n const canEditFeatureFlags = (getters['management/schemaFor'](MANAGEMENT.FEATURE)?.resourceMethods || []).includes('PUT');\n const canInstallApps = (getters['management/schemaFor'](CATALOG.APP)?.resourceMethods || []).includes('PUT');\n const canAddRepos = (getters['management/schemaFor'](CATALOG.CLUSTER_REPO)?.resourceMethods || []).includes('PUT');\n const canPutHelmOperations = (getters['management/schemaFor'](CATALOG.OPERATION)?.resourceMethods || []).includes('PUT');\n\n return canEditSettings && canEditFeatureFlags && canInstallApps && canAddRepos && canPutHelmOperations;\n}\n\nfunction _findColumnByName(schema, colName) {\n const attributes = schema.attributes || {};\n const columns = attributes.columns || [];\n\n return findBy(columns, 'name', colName);\n}\n\nfunction _rowValueGetter(col) {\n // 'field' comes from the schema - typically it is of the form $.metadata.field[N]\n // We will use JsonPath to look up this value, which is costly - so if we can detect this format\n // Use a more efficient function to get the value\n const value = col.field.startsWith('.') ? `$${ col.field }` : col.field;\n const found = value.match(FIELD_REGEX);\n\n if (found && found.length === 2) {\n const fieldIndex = parseInt(found[1], 10);\n\n return (row) => row.metadata?.fields?.[fieldIndex];\n }\n\n return value;\n}\n\n// Is V1 Istio installed?\nfunction isV1Istio(getters) {\n const cluster = getters['currentCluster'];\n\n return !!cluster?.status?.istioEnabled;\n}\n\nfunction ifHaveVerb(rootGetters, module, verb, haveIds) {\n for ( const haveId of haveIds ) {\n const schema = rootGetters[`${ module }/schemaFor`](haveId);\n const want = verb.toLowerCase();\n const collectionMethods = schema.collectionMethods || [];\n const resourceMethods = schema.resourceMethods || [];\n const have = [...collectionMethods, ...resourceMethods].map((x) => x.toLowerCase());\n\n if ( !have.includes(want) && !have.includes(`blocked-${ want }`) ) {\n return false;\n }\n }\n\n return true;\n}\n\n// Look at the namespace filters to determine if a project is selected\nexport function project(getters) {\n const clusterId = getters['currentCluster']?.id;\n\n if ( !clusterId ) {\n return null;\n }\n\n const filters = getters['namespaceFilters'];\n const namespaces = [];\n let projectName = null;\n\n for (const filter of filters) {\n const [type, id] = filter.split('://', 2);\n\n if (type === 'project') {\n if (projectName !== null) {\n // More than one project selected\n return null;\n }\n projectName = id;\n } else if (type === 'ns') {\n namespaces.push(id);\n } else {\n // Something other than project or namespace\n return null;\n }\n }\n\n // No project found?\n if (!projectName) {\n return null;\n }\n\n // We have one project and a set of namespaces\n // Check that all of the namespaces belong to the project\n const project = getters['management/byId'](MANAGEMENT.PROJECT, `${ clusterId }/${ projectName }`);\n\n // No additional namespaces means just the project is selected\n if (namespaces.length === 0) {\n return project;\n }\n\n // Convert the project namespaces into a map so we can check existence easily\n const prjNamespaceMap = project.namespaces.reduce((m, ns) => {\n m[ns.metadata.name] = true;\n\n return m;\n }, {});\n\n // All of the namespace filters must belong to the project\n const found = namespaces.reduce((total, ns) => {\n return prjNamespaceMap[ns] ? total + 1 : 0;\n }, 0);\n\n if (found !== namespaces.length) {\n return null;\n }\n\n return project;\n}\n\nfunction hasCustom(state, rootState, kind, key, fallback) {\n const cache = state.cache[kind];\n\n if ( cache[key] !== undefined ) {\n return cache[key];\n }\n\n // Check to see if the custom kind is provided by a plugin\n if (!!rootState.$plugin.getDynamic(kind, key)) {\n cache[key] = true;\n\n return cache[key];\n }\n\n // Fallback\n try {\n fallback(key);\n cache[key] = true;\n } catch (e) {\n cache[key] = false;\n }\n\n return cache[key];\n}\n\nfunction loadExtension(rootState, kind, key, fallback) {\n const ext = rootState.$plugin.getDynamic(kind, key);\n\n if (ext) {\n if (typeof ext === 'function') {\n return ext;\n }\n\n return () => ext;\n }\n\n return fallback(key);\n}\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.roletemplate.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.roletemplate.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./management.cattle.io.roletemplate.vue?vue&type=template&id=5050d908&scoped=true&\"\nimport script from \"./management.cattle.io.roletemplate.vue?vue&type=script&lang=js&\"\nexport * from \"./management.cattle.io.roletemplate.vue?vue&type=script&lang=js&\"\nimport style0 from \"./management.cattle.io.roletemplate.vue?vue&type=style&index=0&id=5050d908&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5050d908\",\n null\n \n)\n\nexport default component.exports","/*\nLanguage: C\nCategory: common, system\nWebsite: https://en.wikipedia.org/wiki/C_(programming_language)\n*/\n\n/** @type LanguageFn */\nfunction c(hljs) {\n const regex = hljs.regex;\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\\\\n/ } ] });\n const DECLTYPE_AUTO_RE = 'decltype\\\\(auto\\\\)';\n const NAMESPACE_RE = '[a-zA-Z_]\\\\w*::';\n const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';\n const FUNCTION_TYPE_RE = '('\n + DECLTYPE_AUTO_RE + '|'\n + regex.optional(NAMESPACE_RE)\n + '[a-zA-Z_]\\\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE)\n + ')';\n\n\n const TYPES = {\n className: 'type',\n variants: [\n { begin: '\\\\b[a-z\\\\d_]*_t\\\\b' },\n { match: /\\batomic_[a-z]{3,6}\\b/ }\n ]\n\n };\n\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = '\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)';\n const STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '(u8?|U|L)?\\'(' + CHARACTER_ESCAPES + \"|.)\",\n end: '\\'',\n illegal: '.'\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n\n const NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0b[01\\']+)' },\n { begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)' },\n { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)' }\n ],\n relevance: 0\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: { keyword:\n 'if else elif endif define undef warning error line '\n + 'pragma _Pragma ifdef ifndef include' },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, { className: 'string' }),\n {\n className: 'string',\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n const TITLE_MODE = {\n className: 'title',\n begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n\n const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\\\s*\\\\(';\n\n const C_KEYWORDS = [\n \"asm\",\n \"auto\",\n \"break\",\n \"case\",\n \"continue\",\n \"default\",\n \"do\",\n \"else\",\n \"enum\",\n \"extern\",\n \"for\",\n \"fortran\",\n \"goto\",\n \"if\",\n \"inline\",\n \"register\",\n \"restrict\",\n \"return\",\n \"sizeof\",\n \"struct\",\n \"switch\",\n \"typedef\",\n \"union\",\n \"volatile\",\n \"while\",\n \"_Alignas\",\n \"_Alignof\",\n \"_Atomic\",\n \"_Generic\",\n \"_Noreturn\",\n \"_Static_assert\",\n \"_Thread_local\",\n // aliases\n \"alignas\",\n \"alignof\",\n \"noreturn\",\n \"static_assert\",\n \"thread_local\",\n // not a C keyword but is, for all intents and purposes, treated exactly like one.\n \"_Pragma\"\n ];\n\n const C_TYPES = [\n \"float\",\n \"double\",\n \"signed\",\n \"unsigned\",\n \"int\",\n \"short\",\n \"long\",\n \"char\",\n \"void\",\n \"_Bool\",\n \"_Complex\",\n \"_Imaginary\",\n \"_Decimal32\",\n \"_Decimal64\",\n \"_Decimal128\",\n // modifiers\n \"const\",\n \"static\",\n // aliases\n \"complex\",\n \"bool\",\n \"imaginary\"\n ];\n\n const KEYWORDS = {\n keyword: C_KEYWORDS,\n type: C_TYPES,\n literal: 'true false NULL',\n // TODO: apply hinting work similar to what was done in cpp.js\n built_in: 'std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream '\n + 'auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set '\n + 'unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos '\n + 'asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp '\n + 'fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper '\n + 'isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow '\n + 'printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp '\n + 'strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan '\n + 'vfprintf vprintf vsprintf endl initializer_list unique_ptr',\n };\n\n const EXPRESSION_CONTAINS = [\n PREPROCESSOR,\n TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: 'new throw return else',\n end: /;/\n }\n ],\n keywords: KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([ 'self' ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n\n const FUNCTION_DECLARATION = {\n begin: '(' + FUNCTION_TYPE_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n { // to prevent it from being confused as the function title\n begin: DECLTYPE_AUTO_RE,\n keywords: KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [ hljs.inherit(TITLE_MODE, { className: \"title.function\" }) ],\n relevance: 0\n },\n // allow for multiple declarations, e.g.:\n // extern void f(int), g(char);\n {\n relevance: 0,\n match: /,/\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n TYPES\n ]\n }\n ]\n },\n TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n\n return {\n name: \"C\",\n aliases: [ 'h' ],\n keywords: KEYWORDS,\n // Until differentiations are added between `c` and `cpp`, `c` will\n // not be auto-detected to avoid auto-detect conflicts between C and C++\n disableAutodetect: true,\n illegal: '=]/,\n contains: [\n { beginKeywords: \"final class struct\" },\n hljs.TITLE_MODE\n ]\n }\n ]),\n exports: {\n preprocessor: PREPROCESSOR,\n strings: STRINGS,\n keywords: KEYWORDS\n }\n };\n}\n\nmodule.exports = c;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".text.info[data-v-5050d908]{display:flex;align-items:center}.text.info>span[data-v-5050d908]{margin-right:5px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"yaml-editor\"},[_c('div',{staticClass:\"text-right\"},[(_vm.isPreview && !_vm.hidePreviewButtons)?_c('span',{directives:[{name:\"trim-whitespace\",rawName:\"v-trim-whitespace\"}],staticClass:\"btn-group btn-sm diff-mode\"},[_c('button',{staticClass:\"btn btn-sm bg-default\",class:{'active': _vm.diffMode !== 'split'},attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.diffMode='unified'}}},[_vm._v(\"Unified\")]),_c('button',{staticClass:\"btn btn-sm bg-default\",class:{'active': _vm.diffMode === 'split'},attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.diffMode='split'}}},[_vm._v(\"Split\")])]):_vm._e()]),(_vm.showCodeEditor)?_c('CodeMirror',{ref:\"cm\",class:{fill: true, scrolling: _vm.scrolling},attrs:{\"value\":_vm.curValue,\"options\":_vm.codeMirrorOptions,\"showKeyMapBox\":true,\"data-testid\":_vm.componentTestid + '-code-mirror'},on:{\"onInput\":_vm.onInput,\"onReady\":_vm.onReady,\"onChanges\":_vm.onChanges}}):_c('FileDiff',{class:{fill: true, scrolling: _vm.scrolling},attrs:{\"filename\":'.yaml',\"side-by-side\":_vm.diffMode === 'split',\"orig\":_vm.original,\"neu\":_vm.curValue,\"footer-space\":80}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('resize-observer',{on:{\"notify\":_vm.fit}}),_c('div',{ref:\"root\",staticClass:\"root\",attrs:{\"id\":\"diffElement\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./FileDiff.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./FileDiff.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FileDiff.vue?vue&type=template&id=0137ea75&scoped=true&\"\nimport script from \"./FileDiff.vue?vue&type=script&lang=js&\"\nexport * from \"./FileDiff.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileDiff.vue?vue&type=style&index=0&id=0137ea75&prod&lang=scss&scoped=true&\"\nimport style1 from \"./FileDiff.vue?vue&type=style&index=1&id=0137ea75&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0137ea75\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./YamlEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./YamlEditor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./YamlEditor.vue?vue&type=template&id=93239522&scoped=true&\"\nimport script from \"./YamlEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./YamlEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./YamlEditor.vue?vue&type=style&index=0&id=93239522&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"93239522\",\n null\n \n)\n\nexport default component.exports","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".rules-row[data-v-6f396b80]{display:grid;grid-column-gap:1.75%;align-items:center}.global-rules[data-v-6f396b80],.rules-row[data-v-6f396b80]{grid-template-columns:.5fr 1fr 1fr 1fr 1fr .5fr}.namespaced-rules[data-v-6f396b80]{grid-template-columns:1fr 1fr 1fr 1fr .5fr}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ArrayList.vue?vue&type=style&index=0&id=0fc06aaa&prod&lang=scss&scoped=true&\"","/*!\n\n diff v5.1.0\n\nSoftware License Agreement (BSD License)\n\nCopyright (c) 2009-2015, Kevin Decker \n\nAll rights reserved.\n\nRedistribution and use of this software in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above\n copyright notice, this list of conditions and the\n following disclaimer.\n\n* Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the\n following disclaimer in the documentation and/or other\n materials provided with the distribution.\n\n* Neither the name of Kevin Decker nor the names of its\n contributors may be used to endorse or promote products\n derived from this software without specific prior\n written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\nIN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT\nOF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n@license\n*/\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = global || self, factory(global.Diff = {}));\n}(this, (function (exports) { 'use strict';\n\n function Diff() {}\n Diff.prototype = {\n diff: function diff(oldString, newString) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = options.callback;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n this.options = options;\n var self = this;\n\n function done(value) {\n if (callback) {\n setTimeout(function () {\n callback(undefined, value);\n }, 0);\n return true;\n } else {\n return value;\n }\n } // Allow subclasses to massage the input prior to running\n\n\n oldString = this.castInput(oldString);\n newString = this.castInput(newString);\n oldString = this.removeEmpty(this.tokenize(oldString));\n newString = this.removeEmpty(this.tokenize(newString));\n var newLen = newString.length,\n oldLen = oldString.length;\n var editLength = 1;\n var maxEditLength = newLen + oldLen;\n\n if (options.maxEditLength) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n\n var bestPath = [{\n newPos: -1,\n components: []\n }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);\n\n if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n // Identity per the equality and tokenizer\n return done([{\n value: this.join(newString),\n count: newString.length\n }]);\n } // Main worker method. checks all permutations of a given edit length for acceptance.\n\n\n function execEditLength() {\n for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\n var basePath = void 0;\n\n var addPath = bestPath[diagonalPath - 1],\n removePath = bestPath[diagonalPath + 1],\n _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;\n\n if (addPath) {\n // No one else is going to attempt to use this value, clear it\n bestPath[diagonalPath - 1] = undefined;\n }\n\n var canAdd = addPath && addPath.newPos + 1 < newLen,\n canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;\n\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n bestPath[diagonalPath] = undefined;\n continue;\n } // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the new string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n\n\n if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {\n basePath = clonePath(removePath);\n self.pushComponent(basePath.components, undefined, true);\n } else {\n basePath = addPath; // No need to clone, we've pulled it from the list\n\n basePath.newPos++;\n self.pushComponent(basePath.components, true, undefined);\n }\n\n _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done\n\n if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {\n return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));\n } else {\n // Otherwise track this path as a potential candidate and continue.\n bestPath[diagonalPath] = basePath;\n }\n }\n\n editLength++;\n } // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced, or until the edit length exceeds options.maxEditLength (if given),\n // in which case it will return undefined.\n\n\n if (callback) {\n (function exec() {\n setTimeout(function () {\n if (editLength > maxEditLength) {\n return callback();\n }\n\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n })();\n } else {\n while (editLength <= maxEditLength) {\n var ret = execEditLength();\n\n if (ret) {\n return ret;\n }\n }\n }\n },\n pushComponent: function pushComponent(components, added, removed) {\n var last = components[components.length - 1];\n\n if (last && last.added === added && last.removed === removed) {\n // We need to clone here as the component clone operation is just\n // as shallow array clone\n components[components.length - 1] = {\n count: last.count + 1,\n added: added,\n removed: removed\n };\n } else {\n components.push({\n count: 1,\n added: added,\n removed: removed\n });\n }\n },\n extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {\n var newLen = newString.length,\n oldLen = oldString.length,\n newPos = basePath.newPos,\n oldPos = newPos - diagonalPath,\n commonCount = 0;\n\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {\n newPos++;\n oldPos++;\n commonCount++;\n }\n\n if (commonCount) {\n basePath.components.push({\n count: commonCount\n });\n }\n\n basePath.newPos = newPos;\n return oldPos;\n },\n equals: function equals(left, right) {\n if (this.options.comparator) {\n return this.options.comparator(left, right);\n } else {\n return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();\n }\n },\n removeEmpty: function removeEmpty(array) {\n var ret = [];\n\n for (var i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n\n return ret;\n },\n castInput: function castInput(value) {\n return value;\n },\n tokenize: function tokenize(value) {\n return value.split('');\n },\n join: function join(chars) {\n return chars.join('');\n }\n };\n\n function buildValues(diff, components, newString, oldString, useLongestToken) {\n var componentPos = 0,\n componentLen = components.length,\n newPos = 0,\n oldPos = 0;\n\n for (; componentPos < componentLen; componentPos++) {\n var component = components[componentPos];\n\n if (!component.removed) {\n if (!component.added && useLongestToken) {\n var value = newString.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n var oldValue = oldString[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = diff.join(value);\n } else {\n component.value = diff.join(newString.slice(newPos, newPos + component.count));\n }\n\n newPos += component.count; // Common case\n\n if (!component.added) {\n oldPos += component.count;\n }\n } else {\n component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));\n oldPos += component.count; // Reverse add and remove so removes are output first to match common convention\n // The diffing algorithm is tied to add then remove output and this is the simplest\n // route to get the desired output with minimal overhead.\n\n if (componentPos && components[componentPos - 1].added) {\n var tmp = components[componentPos - 1];\n components[componentPos - 1] = components[componentPos];\n components[componentPos] = tmp;\n }\n }\n } // Special case handle for when one terminal is ignored (i.e. whitespace).\n // For this case we merge the terminal into the prior string and drop the change.\n // This is only available for string mode.\n\n\n var lastComponent = components[componentLen - 1];\n\n if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {\n components[componentLen - 2].value += lastComponent.value;\n components.pop();\n }\n\n return components;\n }\n\n function clonePath(path) {\n return {\n newPos: path.newPos,\n components: path.components.slice(0)\n };\n }\n\n var characterDiff = new Diff();\n function diffChars(oldStr, newStr, options) {\n return characterDiff.diff(oldStr, newStr, options);\n }\n\n function generateOptions(options, defaults) {\n if (typeof options === 'function') {\n defaults.callback = options;\n } else if (options) {\n for (var name in options) {\n /* istanbul ignore else */\n if (options.hasOwnProperty(name)) {\n defaults[name] = options[name];\n }\n }\n }\n\n return defaults;\n }\n\n //\n // Ranges and exceptions:\n // Latin-1 Supplement, 0080–00FF\n // - U+00D7 × Multiplication sign\n // - U+00F7 ÷ Division sign\n // Latin Extended-A, 0100–017F\n // Latin Extended-B, 0180–024F\n // IPA Extensions, 0250–02AF\n // Spacing Modifier Letters, 02B0–02FF\n // - U+02C7 ˇ ˇ Caron\n // - U+02D8 ˘ ˘ Breve\n // - U+02D9 ˙ ˙ Dot Above\n // - U+02DA ˚ ˚ Ring Above\n // - U+02DB ˛ ˛ Ogonek\n // - U+02DC ˜ ˜ Small Tilde\n // - U+02DD ˝ ˝ Double Acute Accent\n // Latin Extended Additional, 1E00–1EFF\n\n var extendedWordChars = /^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/;\n var reWhitespace = /\\S/;\n var wordDiff = new Diff();\n\n wordDiff.equals = function (left, right) {\n if (this.options.ignoreCase) {\n left = left.toLowerCase();\n right = right.toLowerCase();\n }\n\n return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);\n };\n\n wordDiff.tokenize = function (value) {\n // All whitespace symbols except newline group into one token, each newline - in separate token\n var tokens = value.split(/([^\\S\\r\\n]+|[()[\\]{}'\"\\r\\n]|\\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.\n\n for (var i = 0; i < tokens.length - 1; i++) {\n // If we have an empty string in the next field and we have only word chars before and after, merge\n if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {\n tokens[i] += tokens[i + 2];\n tokens.splice(i + 1, 2);\n i--;\n }\n }\n\n return tokens;\n };\n\n function diffWords(oldStr, newStr, options) {\n options = generateOptions(options, {\n ignoreWhitespace: true\n });\n return wordDiff.diff(oldStr, newStr, options);\n }\n function diffWordsWithSpace(oldStr, newStr, options) {\n return wordDiff.diff(oldStr, newStr, options);\n }\n\n var lineDiff = new Diff();\n\n lineDiff.tokenize = function (value) {\n var retLines = [],\n linesAndNewlines = value.split(/(\\n|\\r\\n)/); // Ignore the final empty token that occurs if the string ends with a new line\n\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n } // Merge the content and line separators into single tokens\n\n\n for (var i = 0; i < linesAndNewlines.length; i++) {\n var line = linesAndNewlines[i];\n\n if (i % 2 && !this.options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n } else {\n if (this.options.ignoreWhitespace) {\n line = line.trim();\n }\n\n retLines.push(line);\n }\n }\n\n return retLines;\n };\n\n function diffLines(oldStr, newStr, callback) {\n return lineDiff.diff(oldStr, newStr, callback);\n }\n function diffTrimmedLines(oldStr, newStr, callback) {\n var options = generateOptions(callback, {\n ignoreWhitespace: true\n });\n return lineDiff.diff(oldStr, newStr, options);\n }\n\n var sentenceDiff = new Diff();\n\n sentenceDiff.tokenize = function (value) {\n return value.split(/(\\S.+?[.!?])(?=\\s+|$)/);\n };\n\n function diffSentences(oldStr, newStr, callback) {\n return sentenceDiff.diff(oldStr, newStr, callback);\n }\n\n var cssDiff = new Diff();\n\n cssDiff.tokenize = function (value) {\n return value.split(/([{}:;,]|\\s+)/);\n };\n\n function diffCss(oldStr, newStr, callback) {\n return cssDiff.diff(oldStr, newStr, callback);\n }\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n }\n\n function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var objectPrototypeToString = Object.prototype.toString;\n var jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\n\n jsonDiff.useLongestToken = true;\n jsonDiff.tokenize = lineDiff.tokenize;\n\n jsonDiff.castInput = function (value) {\n var _this$options = this.options,\n undefinedReplacement = _this$options.undefinedReplacement,\n _this$options$stringi = _this$options.stringifyReplacer,\n stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) {\n return typeof v === 'undefined' ? undefinedReplacement : v;\n } : _this$options$stringi;\n return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' ');\n };\n\n jsonDiff.equals = function (left, right) {\n return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'));\n };\n\n function diffJson(oldObj, newObj, options) {\n return jsonDiff.diff(oldObj, newObj, options);\n } // This function handles the presence of circular references by bailing out when encountering an\n // object that is already on the \"stack\" of items being processed. Accepts an optional replacer\n\n function canonicalize(obj, stack, replacementStack, replacer, key) {\n stack = stack || [];\n replacementStack = replacementStack || [];\n\n if (replacer) {\n obj = replacer(key, obj);\n }\n\n var i;\n\n for (i = 0; i < stack.length; i += 1) {\n if (stack[i] === obj) {\n return replacementStack[i];\n }\n }\n\n var canonicalizedObj;\n\n if ('[object Array]' === objectPrototypeToString.call(obj)) {\n stack.push(obj);\n canonicalizedObj = new Array(obj.length);\n replacementStack.push(canonicalizedObj);\n\n for (i = 0; i < obj.length; i += 1) {\n canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);\n }\n\n stack.pop();\n replacementStack.pop();\n return canonicalizedObj;\n }\n\n if (obj && obj.toJSON) {\n obj = obj.toJSON();\n }\n\n if (_typeof(obj) === 'object' && obj !== null) {\n stack.push(obj);\n canonicalizedObj = {};\n replacementStack.push(canonicalizedObj);\n\n var sortedKeys = [],\n _key;\n\n for (_key in obj) {\n /* istanbul ignore else */\n if (obj.hasOwnProperty(_key)) {\n sortedKeys.push(_key);\n }\n }\n\n sortedKeys.sort();\n\n for (i = 0; i < sortedKeys.length; i += 1) {\n _key = sortedKeys[i];\n canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);\n }\n\n stack.pop();\n replacementStack.pop();\n } else {\n canonicalizedObj = obj;\n }\n\n return canonicalizedObj;\n }\n\n var arrayDiff = new Diff();\n\n arrayDiff.tokenize = function (value) {\n return value.slice();\n };\n\n arrayDiff.join = arrayDiff.removeEmpty = function (value) {\n return value;\n };\n\n function diffArrays(oldArr, newArr, callback) {\n return arrayDiff.diff(oldArr, newArr, callback);\n }\n\n function parsePatch(uniDiff) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var diffstr = uniDiff.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = uniDiff.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n list = [],\n i = 0;\n\n function parseIndex() {\n var index = {};\n list.push(index); // Parse diff metadata\n\n while (i < diffstr.length) {\n var line = diffstr[i]; // File header found, end parsing diff metadata\n\n if (/^(\\-\\-\\-|\\+\\+\\+|@@)\\s/.test(line)) {\n break;\n } // Diff index\n\n\n var header = /^(?:Index:|diff(?: -r \\w+)+)\\s+(.+?)\\s*$/.exec(line);\n\n if (header) {\n index.index = header[1];\n }\n\n i++;\n } // Parse file headers if they are defined. Unified diff requires them, but\n // there's no technical issues to have an isolated hunk without file header\n\n\n parseFileHeader(index);\n parseFileHeader(index); // Parse hunks\n\n index.hunks = [];\n\n while (i < diffstr.length) {\n var _line = diffstr[i];\n\n if (/^(Index:|diff|\\-\\-\\-|\\+\\+\\+)\\s/.test(_line)) {\n break;\n } else if (/^@@/.test(_line)) {\n index.hunks.push(parseHunk());\n } else if (_line && options.strict) {\n // Ignore unexpected content unless in strict mode\n throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));\n } else {\n i++;\n }\n }\n } // Parses the --- and +++ headers, if none are found, no lines\n // are consumed.\n\n\n function parseFileHeader(index) {\n var fileHeader = /^(---|\\+\\+\\+)\\s+(.*)$/.exec(diffstr[i]);\n\n if (fileHeader) {\n var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';\n var data = fileHeader[2].split('\\t', 2);\n var fileName = data[0].replace(/\\\\\\\\/g, '\\\\');\n\n if (/^\".*\"$/.test(fileName)) {\n fileName = fileName.substr(1, fileName.length - 2);\n }\n\n index[keyPrefix + 'FileName'] = fileName;\n index[keyPrefix + 'Header'] = (data[1] || '').trim();\n i++;\n }\n } // Parses a hunk\n // This assumes that we are at the start of a hunk.\n\n\n function parseHunk() {\n var chunkHeaderIndex = i,\n chunkHeaderLine = diffstr[i++],\n chunkHeader = chunkHeaderLine.split(/@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@/);\n var hunk = {\n oldStart: +chunkHeader[1],\n oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2],\n newStart: +chunkHeader[3],\n newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4],\n lines: [],\n linedelimiters: []\n }; // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n if (hunk.oldLines === 0) {\n hunk.oldStart += 1;\n }\n\n if (hunk.newLines === 0) {\n hunk.newStart += 1;\n }\n\n var addCount = 0,\n removeCount = 0;\n\n for (; i < diffstr.length; i++) {\n // Lines starting with '---' could be mistaken for the \"remove line\" operation\n // But they could be the header for the next file. Therefore prune such cases out.\n if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {\n break;\n }\n\n var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];\n\n if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\\\') {\n hunk.lines.push(diffstr[i]);\n hunk.linedelimiters.push(delimiters[i] || '\\n');\n\n if (operation === '+') {\n addCount++;\n } else if (operation === '-') {\n removeCount++;\n } else if (operation === ' ') {\n addCount++;\n removeCount++;\n }\n } else {\n break;\n }\n } // Handle the empty block count case\n\n\n if (!addCount && hunk.newLines === 1) {\n hunk.newLines = 0;\n }\n\n if (!removeCount && hunk.oldLines === 1) {\n hunk.oldLines = 0;\n } // Perform optional sanity checking\n\n\n if (options.strict) {\n if (addCount !== hunk.newLines) {\n throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n\n if (removeCount !== hunk.oldLines) {\n throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n }\n\n return hunk;\n }\n\n while (i < diffstr.length) {\n parseIndex();\n }\n\n return list;\n }\n\n // Iterator that traverses in the range of [min, max], stepping\n // by distance from a given start position. I.e. for [0, 4], with\n // start of 2, this will iterate 2, 3, 1, 4, 0.\n function distanceIterator (start, minLine, maxLine) {\n var wantForward = true,\n backwardExhausted = false,\n forwardExhausted = false,\n localOffset = 1;\n return function iterator() {\n if (wantForward && !forwardExhausted) {\n if (backwardExhausted) {\n localOffset++;\n } else {\n wantForward = false;\n } // Check if trying to fit beyond text length, and if not, check it fits\n // after offset location (or desired location on first iteration)\n\n\n if (start + localOffset <= maxLine) {\n return localOffset;\n }\n\n forwardExhausted = true;\n }\n\n if (!backwardExhausted) {\n if (!forwardExhausted) {\n wantForward = true;\n } // Check if trying to fit before text beginning, and if not, check it fits\n // before offset location\n\n\n if (minLine <= start - localOffset) {\n return -localOffset++;\n }\n\n backwardExhausted = true;\n return iterator();\n } // We tried to fit hunk before text beginning and beyond text length, then\n // hunk can't fit on the text. Return undefined\n\n };\n }\n\n function applyPatch(source, uniDiff) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof uniDiff === 'string') {\n uniDiff = parsePatch(uniDiff);\n }\n\n if (Array.isArray(uniDiff)) {\n if (uniDiff.length > 1) {\n throw new Error('applyPatch only works with a single input.');\n }\n\n uniDiff = uniDiff[0];\n } // Apply the diff to the input\n\n\n var lines = source.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = source.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n hunks = uniDiff.hunks,\n compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) {\n return line === patchContent;\n },\n errorCount = 0,\n fuzzFactor = options.fuzzFactor || 0,\n minLine = 0,\n offset = 0,\n removeEOFNL,\n addEOFNL;\n /**\n * Checks if the hunk exactly fits on the provided location\n */\n\n\n function hunkFits(hunk, toPos) {\n for (var j = 0; j < hunk.lines.length; j++) {\n var line = hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line;\n\n if (operation === ' ' || operation === '-') {\n // Context sanity check\n if (!compareLine(toPos + 1, lines[toPos], operation, content)) {\n errorCount++;\n\n if (errorCount > fuzzFactor) {\n return false;\n }\n }\n\n toPos++;\n }\n }\n\n return true;\n } // Search best fit offsets for each hunk based on the previous ones\n\n\n for (var i = 0; i < hunks.length; i++) {\n var hunk = hunks[i],\n maxLine = lines.length - hunk.oldLines,\n localOffset = 0,\n toPos = offset + hunk.oldStart - 1;\n var iterator = distanceIterator(toPos, minLine, maxLine);\n\n for (; localOffset !== undefined; localOffset = iterator()) {\n if (hunkFits(hunk, toPos + localOffset)) {\n hunk.offset = offset += localOffset;\n break;\n }\n }\n\n if (localOffset === undefined) {\n return false;\n } // Set lower text limit to end of the current hunk, so next ones don't try\n // to fit over already patched text\n\n\n minLine = hunk.offset + hunk.oldStart + hunk.oldLines;\n } // Apply patch hunks\n\n\n var diffOffset = 0;\n\n for (var _i = 0; _i < hunks.length; _i++) {\n var _hunk = hunks[_i],\n _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;\n\n diffOffset += _hunk.newLines - _hunk.oldLines;\n\n for (var j = 0; j < _hunk.lines.length; j++) {\n var line = _hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line,\n delimiter = _hunk.linedelimiters[j];\n\n if (operation === ' ') {\n _toPos++;\n } else if (operation === '-') {\n lines.splice(_toPos, 1);\n delimiters.splice(_toPos, 1);\n /* istanbul ignore else */\n } else if (operation === '+') {\n lines.splice(_toPos, 0, content);\n delimiters.splice(_toPos, 0, delimiter);\n _toPos++;\n } else if (operation === '\\\\') {\n var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;\n\n if (previousOperation === '+') {\n removeEOFNL = true;\n } else if (previousOperation === '-') {\n addEOFNL = true;\n }\n }\n }\n } // Handle EOFNL insertion/removal\n\n\n if (removeEOFNL) {\n while (!lines[lines.length - 1]) {\n lines.pop();\n delimiters.pop();\n }\n } else if (addEOFNL) {\n lines.push('');\n delimiters.push('\\n');\n }\n\n for (var _k = 0; _k < lines.length - 1; _k++) {\n lines[_k] = lines[_k] + delimiters[_k];\n }\n\n return lines.join('');\n } // Wrapper that supports multiple file patches via callbacks.\n\n function applyPatches(uniDiff, options) {\n if (typeof uniDiff === 'string') {\n uniDiff = parsePatch(uniDiff);\n }\n\n var currentIndex = 0;\n\n function processIndex() {\n var index = uniDiff[currentIndex++];\n\n if (!index) {\n return options.complete();\n }\n\n options.loadFile(index, function (err, data) {\n if (err) {\n return options.complete(err);\n }\n\n var updatedContent = applyPatch(data, index, options);\n options.patched(index, updatedContent, function (err) {\n if (err) {\n return options.complete(err);\n }\n\n processIndex();\n });\n });\n }\n\n processIndex();\n }\n\n function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n if (!options) {\n options = {};\n }\n\n if (typeof options.context === 'undefined') {\n options.context = 4;\n }\n\n var diff = diffLines(oldStr, newStr, options);\n\n if (!diff) {\n return;\n }\n\n diff.push({\n value: '',\n lines: []\n }); // Append an empty value to make cleanup easier\n\n function contextLines(lines) {\n return lines.map(function (entry) {\n return ' ' + entry;\n });\n }\n\n var hunks = [];\n var oldRangeStart = 0,\n newRangeStart = 0,\n curRange = [],\n oldLine = 1,\n newLine = 1;\n\n var _loop = function _loop(i) {\n var current = diff[i],\n lines = current.lines || current.value.replace(/\\n$/, '').split('\\n');\n current.lines = lines;\n\n if (current.added || current.removed) {\n var _curRange;\n\n // If we have previous context, start with that\n if (!oldRangeStart) {\n var prev = diff[i - 1];\n oldRangeStart = oldLine;\n newRangeStart = newLine;\n\n if (prev) {\n curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];\n oldRangeStart -= curRange.length;\n newRangeStart -= curRange.length;\n }\n } // Output our changes\n\n\n (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) {\n return (current.added ? '+' : '-') + entry;\n }))); // Track the updated file position\n\n\n if (current.added) {\n newLine += lines.length;\n } else {\n oldLine += lines.length;\n }\n } else {\n // Identical context lines. Track line changes\n if (oldRangeStart) {\n // Close out any changes that have been output (or join overlapping)\n if (lines.length <= options.context * 2 && i < diff.length - 2) {\n var _curRange2;\n\n // Overlapping\n (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines)));\n } else {\n var _curRange3;\n\n // end the range and output\n var contextSize = Math.min(lines.length, options.context);\n\n (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize))));\n\n var hunk = {\n oldStart: oldRangeStart,\n oldLines: oldLine - oldRangeStart + contextSize,\n newStart: newRangeStart,\n newLines: newLine - newRangeStart + contextSize,\n lines: curRange\n };\n\n if (i >= diff.length - 2 && lines.length <= options.context) {\n // EOF is inside this hunk\n var oldEOFNewline = /\\n$/.test(oldStr);\n var newEOFNewline = /\\n$/.test(newStr);\n var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;\n\n if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) {\n // special case: old has no eol and no trailing context; no-nl can end up before adds\n // however, if the old file is empty, do not output the no-nl line\n curRange.splice(hunk.oldLines, 0, '\\\\ No newline at end of file');\n }\n\n if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {\n curRange.push('\\\\ No newline at end of file');\n }\n }\n\n hunks.push(hunk);\n oldRangeStart = 0;\n newRangeStart = 0;\n curRange = [];\n }\n }\n\n oldLine += lines.length;\n newLine += lines.length;\n }\n };\n\n for (var i = 0; i < diff.length; i++) {\n _loop(i);\n }\n\n return {\n oldFileName: oldFileName,\n newFileName: newFileName,\n oldHeader: oldHeader,\n newHeader: newHeader,\n hunks: hunks\n };\n }\n function formatPatch(diff) {\n var ret = [];\n\n if (diff.oldFileName == diff.newFileName) {\n ret.push('Index: ' + diff.oldFileName);\n }\n\n ret.push('===================================================================');\n ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\\t' + diff.oldHeader));\n ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\\t' + diff.newHeader));\n\n for (var i = 0; i < diff.hunks.length; i++) {\n var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n if (hunk.oldLines === 0) {\n hunk.oldStart -= 1;\n }\n\n if (hunk.newLines === 0) {\n hunk.newStart -= 1;\n }\n\n ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');\n ret.push.apply(ret, hunk.lines);\n }\n\n return ret.join('\\n') + '\\n';\n }\n function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options));\n }\n function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n }\n\n function arrayEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n\n return arrayStartsWith(a, b);\n }\n function arrayStartsWith(array, start) {\n if (start.length > array.length) {\n return false;\n }\n\n for (var i = 0; i < start.length; i++) {\n if (start[i] !== array[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n function calcLineCount(hunk) {\n var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines),\n oldLines = _calcOldNewLineCount.oldLines,\n newLines = _calcOldNewLineCount.newLines;\n\n if (oldLines !== undefined) {\n hunk.oldLines = oldLines;\n } else {\n delete hunk.oldLines;\n }\n\n if (newLines !== undefined) {\n hunk.newLines = newLines;\n } else {\n delete hunk.newLines;\n }\n }\n function merge(mine, theirs, base) {\n mine = loadPatch(mine, base);\n theirs = loadPatch(theirs, base);\n var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.\n // Leaving sanity checks on this to the API consumer that may know more about the\n // meaning in their own context.\n\n if (mine.index || theirs.index) {\n ret.index = mine.index || theirs.index;\n }\n\n if (mine.newFileName || theirs.newFileName) {\n if (!fileNameChanged(mine)) {\n // No header or no change in ours, use theirs (and ours if theirs does not exist)\n ret.oldFileName = theirs.oldFileName || mine.oldFileName;\n ret.newFileName = theirs.newFileName || mine.newFileName;\n ret.oldHeader = theirs.oldHeader || mine.oldHeader;\n ret.newHeader = theirs.newHeader || mine.newHeader;\n } else if (!fileNameChanged(theirs)) {\n // No header or no change in theirs, use ours\n ret.oldFileName = mine.oldFileName;\n ret.newFileName = mine.newFileName;\n ret.oldHeader = mine.oldHeader;\n ret.newHeader = mine.newHeader;\n } else {\n // Both changed... figure it out\n ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);\n ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);\n ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);\n ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);\n }\n }\n\n ret.hunks = [];\n var mineIndex = 0,\n theirsIndex = 0,\n mineOffset = 0,\n theirsOffset = 0;\n\n while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {\n var mineCurrent = mine.hunks[mineIndex] || {\n oldStart: Infinity\n },\n theirsCurrent = theirs.hunks[theirsIndex] || {\n oldStart: Infinity\n };\n\n if (hunkBefore(mineCurrent, theirsCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(mineCurrent, mineOffset));\n mineIndex++;\n theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;\n } else if (hunkBefore(theirsCurrent, mineCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));\n theirsIndex++;\n mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;\n } else {\n // Overlap, merge as best we can\n var mergedHunk = {\n oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),\n oldLines: 0,\n newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),\n newLines: 0,\n lines: []\n };\n mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);\n theirsIndex++;\n mineIndex++;\n ret.hunks.push(mergedHunk);\n }\n }\n\n return ret;\n }\n\n function loadPatch(param, base) {\n if (typeof param === 'string') {\n if (/^@@/m.test(param) || /^Index:/m.test(param)) {\n return parsePatch(param)[0];\n }\n\n if (!base) {\n throw new Error('Must provide a base reference or pass in a patch');\n }\n\n return structuredPatch(undefined, undefined, base, param);\n }\n\n return param;\n }\n\n function fileNameChanged(patch) {\n return patch.newFileName && patch.newFileName !== patch.oldFileName;\n }\n\n function selectField(index, mine, theirs) {\n if (mine === theirs) {\n return mine;\n } else {\n index.conflict = true;\n return {\n mine: mine,\n theirs: theirs\n };\n }\n }\n\n function hunkBefore(test, check) {\n return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;\n }\n\n function cloneHunk(hunk, offset) {\n return {\n oldStart: hunk.oldStart,\n oldLines: hunk.oldLines,\n newStart: hunk.newStart + offset,\n newLines: hunk.newLines,\n lines: hunk.lines\n };\n }\n\n function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {\n // This will generally result in a conflicted hunk, but there are cases where the context\n // is the only overlap where we can successfully merge the content here.\n var mine = {\n offset: mineOffset,\n lines: mineLines,\n index: 0\n },\n their = {\n offset: theirOffset,\n lines: theirLines,\n index: 0\n }; // Handle any leading content\n\n insertLeading(hunk, mine, their);\n insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.\n\n while (mine.index < mine.lines.length && their.index < their.lines.length) {\n var mineCurrent = mine.lines[mine.index],\n theirCurrent = their.lines[their.index];\n\n if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {\n // Both modified ...\n mutualChange(hunk, mine, their);\n } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {\n var _hunk$lines;\n\n // Mine inserted\n (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine)));\n } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {\n var _hunk$lines2;\n\n // Theirs inserted\n (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their)));\n } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {\n // Mine removed or edited\n removal(hunk, mine, their);\n } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {\n // Their removed or edited\n removal(hunk, their, mine, true);\n } else if (mineCurrent === theirCurrent) {\n // Context identity\n hunk.lines.push(mineCurrent);\n mine.index++;\n their.index++;\n } else {\n // Context mismatch\n conflict(hunk, collectChange(mine), collectChange(their));\n }\n } // Now push anything that may be remaining\n\n\n insertTrailing(hunk, mine);\n insertTrailing(hunk, their);\n calcLineCount(hunk);\n }\n\n function mutualChange(hunk, mine, their) {\n var myChanges = collectChange(mine),\n theirChanges = collectChange(their);\n\n if (allRemoves(myChanges) && allRemoves(theirChanges)) {\n // Special case for remove changes that are supersets of one another\n if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {\n var _hunk$lines3;\n\n (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges));\n\n return;\n } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {\n var _hunk$lines4;\n\n (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges));\n\n return;\n }\n } else if (arrayEqual(myChanges, theirChanges)) {\n var _hunk$lines5;\n\n (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges));\n\n return;\n }\n\n conflict(hunk, myChanges, theirChanges);\n }\n\n function removal(hunk, mine, their, swap) {\n var myChanges = collectChange(mine),\n theirChanges = collectContext(their, myChanges);\n\n if (theirChanges.merged) {\n var _hunk$lines6;\n\n (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged));\n } else {\n conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);\n }\n }\n\n function conflict(hunk, mine, their) {\n hunk.conflict = true;\n hunk.lines.push({\n conflict: true,\n mine: mine,\n theirs: their\n });\n }\n\n function insertLeading(hunk, insert, their) {\n while (insert.offset < their.offset && insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n insert.offset++;\n }\n }\n\n function insertTrailing(hunk, insert) {\n while (insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n }\n }\n\n function collectChange(state) {\n var ret = [],\n operation = state.lines[state.index][0];\n\n while (state.index < state.lines.length) {\n var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one \"atomic\" modify change.\n\n if (operation === '-' && line[0] === '+') {\n operation = '+';\n }\n\n if (operation === line[0]) {\n ret.push(line);\n state.index++;\n } else {\n break;\n }\n }\n\n return ret;\n }\n\n function collectContext(state, matchChanges) {\n var changes = [],\n merged = [],\n matchIndex = 0,\n contextChanges = false,\n conflicted = false;\n\n while (matchIndex < matchChanges.length && state.index < state.lines.length) {\n var change = state.lines[state.index],\n match = matchChanges[matchIndex]; // Once we've hit our add, then we are done\n\n if (match[0] === '+') {\n break;\n }\n\n contextChanges = contextChanges || change[0] !== ' ';\n merged.push(match);\n matchIndex++; // Consume any additions in the other block as a conflict to attempt\n // to pull in the remaining context after this\n\n if (change[0] === '+') {\n conflicted = true;\n\n while (change[0] === '+') {\n changes.push(change);\n change = state.lines[++state.index];\n }\n }\n\n if (match.substr(1) === change.substr(1)) {\n changes.push(change);\n state.index++;\n } else {\n conflicted = true;\n }\n }\n\n if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {\n conflicted = true;\n }\n\n if (conflicted) {\n return changes;\n }\n\n while (matchIndex < matchChanges.length) {\n merged.push(matchChanges[matchIndex++]);\n }\n\n return {\n merged: merged,\n changes: changes\n };\n }\n\n function allRemoves(changes) {\n return changes.reduce(function (prev, change) {\n return prev && change[0] === '-';\n }, true);\n }\n\n function skipRemoveSuperset(state, removeChanges, delta) {\n for (var i = 0; i < delta; i++) {\n var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);\n\n if (state.lines[state.index + i] !== ' ' + changeContent) {\n return false;\n }\n }\n\n state.index += delta;\n return true;\n }\n\n function calcOldNewLineCount(lines) {\n var oldLines = 0;\n var newLines = 0;\n lines.forEach(function (line) {\n if (typeof line !== 'string') {\n var myCount = calcOldNewLineCount(line.mine);\n var theirCount = calcOldNewLineCount(line.theirs);\n\n if (oldLines !== undefined) {\n if (myCount.oldLines === theirCount.oldLines) {\n oldLines += myCount.oldLines;\n } else {\n oldLines = undefined;\n }\n }\n\n if (newLines !== undefined) {\n if (myCount.newLines === theirCount.newLines) {\n newLines += myCount.newLines;\n } else {\n newLines = undefined;\n }\n }\n } else {\n if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {\n newLines++;\n }\n\n if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {\n oldLines++;\n }\n }\n });\n return {\n oldLines: oldLines,\n newLines: newLines\n };\n }\n\n // See: http://code.google.com/p/google-diff-match-patch/wiki/API\n function convertChangesToDMP(changes) {\n var ret = [],\n change,\n operation;\n\n for (var i = 0; i < changes.length; i++) {\n change = changes[i];\n\n if (change.added) {\n operation = 1;\n } else if (change.removed) {\n operation = -1;\n } else {\n operation = 0;\n }\n\n ret.push([operation, change.value]);\n }\n\n return ret;\n }\n\n function convertChangesToXML(changes) {\n var ret = [];\n\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n\n ret.push(escapeHTML(change.value));\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n }\n\n return ret.join('');\n }\n\n function escapeHTML(s) {\n var n = s;\n n = n.replace(/&/g, '&');\n n = n.replace(//g, '>');\n n = n.replace(/\"/g, '"');\n return n;\n }\n\n exports.Diff = Diff;\n exports.applyPatch = applyPatch;\n exports.applyPatches = applyPatches;\n exports.canonicalize = canonicalize;\n exports.convertChangesToDMP = convertChangesToDMP;\n exports.convertChangesToXML = convertChangesToXML;\n exports.createPatch = createPatch;\n exports.createTwoFilesPatch = createTwoFilesPatch;\n exports.diffArrays = diffArrays;\n exports.diffChars = diffChars;\n exports.diffCss = diffCss;\n exports.diffJson = diffJson;\n exports.diffLines = diffLines;\n exports.diffSentences = diffSentences;\n exports.diffTrimmedLines = diffTrimmedLines;\n exports.diffWords = diffWords;\n exports.diffWordsWithSpace = diffWordsWithSpace;\n exports.merge = merge;\n exports.parsePatch = parsePatch;\n exports.structuredPatch = structuredPatch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.isView)?_c('button',{staticClass:\"file-selector btn\",attrs:{\"disabled\":_vm.disabled,\"type\":\"button\",\"data-testid\":\"file-selector__uploader-button\"},on:{\"click\":_vm.selectFile}},[_c('span',[_vm._v(_vm._s(_vm.label))]),_c('input',{ref:\"uploader\",staticClass:\"hide\",attrs:{\"type\":\"file\",\"multiple\":_vm.multiple,\"webkitdirectory\":_vm.directory,\"accept\":_vm.accept},on:{\"change\":_vm.fileChange}})]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./FileSelector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./FileSelector.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FileSelector.vue?vue&type=template&id=098b642d&\"\nimport script from \"./FileSelector.vue?vue&type=script&lang=js&\"\nexport * from \"./FileSelector.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".info-box[data-v-1c5683df]{border:2px solid var(--tabbed-border);padding:10px;margin-bottom:20px;border-radius:var(--border-radius);flex-grow:1;flex-basis:0;position:relative}.info-box .stepped[data-v-1c5683df]{padding-left:40px}.info-box .step-number[data-v-1c5683df]{border-radius:var(--border-radius);background:var(--secondary);color:var(--input-text);display:inline-block;padding:5px 10px}.info-box .step-list[data-v-1c5683df]{margin:0}.info-box .info-column[data-v-1c5683df]:not(:last-child){border-right:1px solid var(--tabbed-border)}.info-box .info-row[data-v-1c5683df]{margin-bottom:10px}.info-box .info-row .info-row-label[data-v-1c5683df]{padding-top:2px;display:inline-block}.info-box .info-column label[data-v-1c5683df],.info-box .info-row label[data-v-1c5683df]{color:var(--input-label)}.info-box .info-column .usage[data-v-1c5683df]{margin-bottom:10px}.info-box .info-column .usage label[data-v-1c5683df]{display:inline-block;font-size:12px;padding-top:6px}.info-box .info-column .flex-item-half[data-v-1c5683df]{align-items:center}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"code-mirror\",class:{['as-text-area']: _vm.asTextArea}},[(_vm.loaded)?_c('div',[(_vm.showKeyMapBox && !_vm.removeKeyMapBox && _vm.keyMapText)?_c('div',{staticClass:\"keymap overlay\"},[_c('div',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.t('codeMirror.keymap.tooltip')),expression:\"t('codeMirror.keymap.tooltip')\"}],staticClass:\"label\",attrs:{\"data-testid\":\"code-mirror-keymap\"},on:{\"mouseover\":function($event){return _vm.onKeyMapMouseOver(true)},\"mouseleave\":function($event){return _vm.onKeyMapMouseOver(false)}}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.keyMapText)+\" \")]),(_vm.showKeyMapCloseIcon)?_c('i',{staticClass:\"icon icon-close icon-sm\",on:{\"click\":_vm.closeKeyMapInfo}}):_vm._e()])]):_vm._e(),_c('codemirror',{ref:\"codeMirrorRef\",attrs:{\"value\":_vm.value,\"options\":_vm.combinedOptions,\"disabled\":_vm.isDisabled},on:{\"ready\":_vm.onReady,\"input\":_vm.onInput,\"changes\":_vm.onChanges,\"focus\":_vm.onFocus,\"blur\":_vm.onBlur}})],1):_c('div',[_vm._v(\" Loading... \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeMirror.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeMirror.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CodeMirror.vue?vue&type=template&id=5390b64f&\"\nimport script from \"./CodeMirror.vue?vue&type=script&lang=js&\"\nexport * from \"./CodeMirror.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CodeMirror.vue?vue&type=style&index=0&id=5390b64f&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".actions[data-v-db441fb2]{text-align:right}.machine-name[data-v-db441fb2]{font-weight:600}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ArrayList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ArrayList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ArrayList.vue?vue&type=template&id=0fc06aaa&scoped=true&\"\nimport script from \"./ArrayList.vue?vue&type=script&lang=js&\"\nexport * from \"./ArrayList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ArrayList.vue?vue&type=style&index=0&id=0fc06aaa&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0fc06aaa\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=6703bcf4&prod&lang=scss&scoped=true&\"","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","export * from \"-!../../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MatchExpressions.vue?vue&type=style&index=0&id=3512fedb&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyValue.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyValue.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./KeyValue.vue?vue&type=template&id=0c22da1d&\"\nimport script from \"./KeyValue.vue?vue&type=script&lang=js&\"\nexport * from \"./KeyValue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./KeyValue.vue?vue&type=style&index=0&id=0c22da1d&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".labels__header[data-v-5c717a60]{display:flex;justify-content:space-between}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a \n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceYaml.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceYaml.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ResourceYaml.vue?vue&type=template&id=1a42fcca&scoped=true&\"\nimport script from \"./ResourceYaml.vue?vue&type=script&lang=js&\"\nexport * from \"./ResourceYaml.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResourceYaml.vue?vue&type=style&index=0&id=1a42fcca&prod&lang=scss&scoped=true&\"\nimport style1 from \"./ResourceYaml.vue?vue&type=style&index=1&id=1a42fcca&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a42fcca\",\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".badge-state[data-v-70e48e16]{align-items:center;display:inline-flex;padding:2px 10px;border:1px solid transparent;border-radius:20px}.badge-state.bg-info[data-v-70e48e16]{border-color:var(--primary)}.badge-state.bg-error[data-v-70e48e16]{border-color:var(--error)}.badge-state.bg-warning[data-v-70e48e16]{border-color:var(--warning)}.badge-state.bg-success[data-v-70e48e16]{color:var(--success);background:transparent;border-color:var(--success)}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import { Store } from 'vuex';\nimport isEmpty from 'lodash/isEmpty';\nimport semver from 'semver';\nimport { randomStr } from '@shell/utils/string';\nimport { NAMESPACE } from '@shell/config/types';\nimport {\n KUBEWARDEN, CatalogApp, Severity, Result, PolicyReport, ClusterPolicyReport, PolicyReportResult, PolicyReportSummary, WG_POLICY_K8S\n} from '../types';\nimport * as coreTypes from '../core/core-resources';\nimport { createKubewardenRoute } from '../utils/custom-routing';\nimport { splitGroupKind, isResourceNamespaced } from './core';\nimport { fetchControllerApp } from './kubewardenController';\n\nfunction isValidAppVersion(controllerApp?: CatalogApp): boolean {\n return !!controllerApp &&\n !!controllerApp.spec?.chart?.metadata?.appVersion &&\n semver.gte(controllerApp.spec.chart.metadata.appVersion, '1.10.100');\n}\n\n/**\n * Fetches either PolicyReports or ClusterPolicyReports based on version compatibility and dispatches update actions.\n * @param store\n * @param isClusterLevel\n * @returns `PolicyReport[] | ClusterPolicyReport[] | void`\n */\nexport async function getReports(\n store: Store,\n isClusterLevel: boolean = false,\n resourceType?: string\n): Promise | void> {\n let outReports: Array = [];\n const reportTypes = [];\n\n if ( isClusterLevel ) {\n reportTypes.push(WG_POLICY_K8S.CLUSTER_POLICY_REPORT.TYPE);\n }\n\n if ( resourceType || !isClusterLevel ) {\n reportTypes.push(WG_POLICY_K8S.POLICY_REPORT.TYPE);\n }\n\n for ( const reportType of reportTypes ) {\n const schema = store.getters['cluster/schemaFor'](reportType);\n let controllerApp: CatalogApp | undefined = store.getters['kubewarden/controllerApp'];\n\n if ( !controllerApp ) {\n controllerApp = await fetchControllerApp(store);\n }\n\n if ( schema ) {\n try {\n const reports = await store.dispatch('cluster/findAll', { type: reportType }, { root: true });\n\n if ( !isEmpty(reports) ) {\n const updateAction = reportType === WG_POLICY_K8S.CLUSTER_POLICY_REPORT.TYPE ? 'kubewarden/updateClusterPolicyReports' : 'kubewarden/updatePolicyReports';\n\n reports.forEach((report: PolicyReport | ClusterPolicyReport) => store.dispatch(updateAction, report));\n\n outReports = outReports.concat(reports);\n }\n } catch (e) {\n console.warn(`Error fetching ${ reportType }: ${ e }`); // eslint-disable-line no-console\n }\n }\n }\n\n return outReports;\n}\n\n/**\n * Retrieves a filtered summary for both PolicyReports and ClusterPolicyReports.\n * @param store The store containing the reports.\n * @param resource The resource for which the summary is generated.\n * @param isClusterLevel Flag to determine if the summary should include cluster level reports.\n * @returns `PolicyReportSummary`.\n */\nexport function getFilteredSummary(\n store: Store,\n resource: any,\n isClusterLevel: boolean = false\n): PolicyReportSummary {\n const outSummary: PolicyReportSummary = {\n pass: 0,\n fail: 0,\n warn: 0,\n error: 0,\n skip: 0\n };\n const reportTypes: string[] = [];\n\n if ( isClusterLevel || resource?.type === NAMESPACE ) {\n reportTypes.push(WG_POLICY_K8S.CLUSTER_POLICY_REPORT.TYPE);\n }\n\n if ( isResourceNamespaced(resource) || resource?.type === NAMESPACE ) {\n reportTypes.push(WG_POLICY_K8S.POLICY_REPORT.TYPE);\n }\n\n for ( const report of reportTypes ) {\n const storeKey = report === WG_POLICY_K8S.CLUSTER_POLICY_REPORT.TYPE ? 'clusterPolicyReports' : 'policyReports';\n const reports = store.getters[`kubewarden/${ storeKey }`];\n\n if ( !isEmpty(reports) ) {\n const filtered: PolicyReportResult[] = getFilteredArrayOfReportResults(reports, resource, report === WG_POLICY_K8S.CLUSTER_POLICY_REPORT.TYPE);\n\n if ( !isEmpty(filtered) ) {\n filtered.forEach((r: PolicyReportResult) => {\n const resultVal = r.result;\n\n if ( resultVal ) {\n (outSummary as any)[resultVal]++;\n }\n });\n }\n }\n }\n\n return outSummary;\n}\n\n/**\n * Helper function to filter report results based on resource type and managed-by labels\n * @param reports\n * @param resource\n * @returns `PolicyReportResult[]`\n */\nfunction getFilteredArrayOfReportResults(\n reports: Array,\n resource: any,\n isClusterLevel?: boolean\n): PolicyReportResult[] {\n let outReports: Array = [];\n\n // Filter out reports based on 'app.kubernetes.io/managed-by' label\n reports = reports.filter(report => report.metadata?.labels?.['app.kubernetes.io/managed-by'] === 'kubewarden');\n\n if ( resource?.type === NAMESPACE ) {\n if ( isClusterLevel ) {\n // Include both PolicyReports and ClusterPolicyReports for Namespace when isClusterLevel is true\n outReports = reports.filter((report) => {\n if (report.scope) {\n return (\n report.scope.name === resource.name ||\n (('namespace' in report.scope) && report.scope.namespace === resource.name)\n );\n }\n });\n } else {\n // Filter PolicyReports for namespace scope\n outReports = reports.filter((report) => {\n if ( report.scope ) {\n return 'namespace' in report.scope && report.scope.namespace === resource?.name;\n }\n });\n }\n } else {\n outReports = reports;\n }\n\n const outResults: PolicyReportResult[] = [];\n\n // Find the report that is scoped to the resource name\n if ( resource?.type === 'namespace' ) {\n outReports.forEach((report: any) => {\n report.results?.forEach((result: any) => {\n outResults.push({\n ...result,\n scope: report.scope,\n kind: report.kind,\n policyName: result.properties?.['policy-name'],\n });\n });\n });\n } else {\n outReports.forEach((report: any) => {\n if ( report.scope?.name === resource.metadata.name ) {\n report.results?.forEach((result: any) => {\n outResults.push({\n ...result,\n policyName: result.properties?.['policy-name'],\n });\n });\n }\n });\n }\n\n if ( !isEmpty(outResults) ) {\n // Assign uid for SortableTable sub-row\n outResults?.forEach((report: any) => {\n Object.assign(report, { uid: randomStr() });\n });\n }\n\n return outResults;\n}\n\n/**\n * Filters PolicyReports for namespaced resources or the Namespace resource type\n * @param store\n * @param resource\n * @returns `PolicyReport | PolicyReportResult[] | null | void`\n */\nexport async function getFilteredReports(store: Store, resource: any): Promise {\n const schema = store.getters['cluster/schemaFor'](resource?.type);\n\n if ( schema ) {\n try {\n // Determine if we need to fetch cluster level reports or resource-specific reports\n const isClusterLevel = resource?.type === NAMESPACE || !isResourceNamespaced(resource);\n const resourceType = resource?.type;\n\n // Fetch the appropriate reports based on the resource context\n const reports = await getReports(store, isClusterLevel, resourceType);\n\n if ( reports && !isEmpty(reports) ) {\n // Filter and return the applicable report results\n return getFilteredArrayOfReportResults(reports, resource, isClusterLevel);\n }\n } catch (e) {\n console.warn(`Error fetching PolicyReports: ${ e }`); // eslint-disable-line no-console\n }\n }\n\n return null;\n}\n\n/**\n * Finds the resource (policy) that is connected to the PolicyReportResult and returns the route.\n * @param store\n * @param report: `PolicyReportResult`\n * @returns `createKubewardenRoute` | Will return a route to either a ClusterAdmissionPolicy or AdmissionPolicy\n */\nexport function getLinkForPolicy(store: Store, report: PolicyReportResult): Object | void {\n if ( report?.policy ) {\n const apSchema = store.getters['cluster/schemaFor'](KUBEWARDEN.ADMISSION_POLICY);\n const capSchema = store.getters['cluster/schemaFor'](KUBEWARDEN.CLUSTER_ADMISSION_POLICY);\n const policyType: string = report.properties?.['policy-namespace'] ? KUBEWARDEN.ADMISSION_POLICY : KUBEWARDEN.CLUSTER_ADMISSION_POLICY;\n\n if ( policyType === KUBEWARDEN.ADMISSION_POLICY && apSchema ) {\n return createKubewardenRoute({\n name: 'c-cluster-product-resource-namespace-id',\n params: {\n resource: policyType, id: report?.policyName, namespace: report.properties?.['policy-namespace']\n }\n });\n }\n\n if ( policyType === KUBEWARDEN.CLUSTER_ADMISSION_POLICY && capSchema ) {\n return createKubewardenRoute({\n name: 'c-cluster-product-resource-id',\n params: { resource: policyType, id: report?.policyName }\n });\n }\n }\n}\n\n/**\n * Finds the resource link from a policy report for a Namespace's tab component. Since the `type` is\n * not passed in from the report, it needs to be determined by the `kind` of the resource. For core\n * resources this works as is, but for non-core resources (e.g. `apps.deployments`), this is extrapolated\n * by the `apiVersion` combined with the `kind`.\n * @param report: `PolicyReport\n * @returns `Route | void`\n */\nexport function getLinkForResource(report: PolicyReport): Object | void {\n if ( !isEmpty(report.scope) ) {\n const resource = report.scope;\n\n if ( resource ) {\n const isCore = Object.values(coreTypes).find(type => resource.kind === type.attributes.kind);\n let resourceType;\n\n if ( isCore ) {\n resourceType = resource.kind.toLowerCase();\n } else {\n resourceType = splitGroupKind(resource);\n }\n\n if ( resourceType ) {\n if ( resource.namespace ) {\n return {\n name: 'c-cluster-product-resource-namespace-id',\n params: {\n resource: resourceType, id: resource.name, namespace: resource.namespace\n }\n };\n }\n\n return {\n name: 'c-cluster-product-resource-id',\n params: { resource: resourceType, id: resource.name }\n };\n }\n }\n }\n}\n\n/**\n * Determines color for PolicyReport status\n * @param result | PolicyReport summary result || report resource.result\n * @returns string\n */\nexport function colorForResult(result: Result): string {\n switch (result) {\n case Result.FAIL:\n return 'text-error';\n case Result.ERROR:\n return 'sizzle-warning';\n case Result.PASS:\n return 'text-success';\n case Result.WARN:\n return 'text-warning';\n case Result.SKIP:\n return 'text-darker';\n default:\n return 'text-muted';\n }\n}\n\n/**\n * Determines color for PolicyReport severity\n * @param severity | PolicyReport severity\n * @returns string\n */\nexport function colorForSeverity(severity: Severity): string {\n switch (severity) {\n case Severity.INFO:\n return 'bg-info';\n case Severity.LOW:\n return 'bg-warning';\n case Severity.MEDIUM:\n return 'bg-warning';\n case Severity.HIGH:\n return 'bg-warning';\n case Severity.CRITICAL:\n return 'bg-critical';\n default:\n return 'bg-muted';\n }\n}\n\n/**\n * Determines if the kubewarden-controller app has a compatible version for PolicyReports,\n * for kubewarden-controller version `>= 1.11` it requires an extension version of `>= 1.4.0`\n * for kubewarden-controller version `<= 1.10` it requires an extension version of `< 1.4.0`\n * @param string\n * @param string\n * @returns Object\n */\nexport function newPolicyReportCompatible(controllerAppVersion: string, uiPluginVersion: string): Object | void {\n if (semver.gte(uiPluginVersion, '1.4.0')) {\n return {\n oldPolicyReports: semver.gt(controllerAppVersion, '1.10.100'),\n newPolicyReports: true\n };\n }\n\n if (semver.lt(uiPluginVersion, '1.4.0')) {\n return {\n oldPolicyReports: true,\n newPolicyReports: semver.lte(controllerAppVersion, '1.10.100')\n };\n }\n\n return {\n oldPolicyReports: true,\n newPolicyReports: true\n };\n}","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".favorite[data-v-f74a378a]{position:relative;cursor:pointer;font-size:20px;transform:ease-in-out-all 1s}.favorite.icon-star-open[data-v-f74a378a]{color:var(--muted)}.favorite.icon-star-closed[data-v-f74a378a]{color:var(--body-text)}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".unlabeled-select[data-v-55a8f708]{position:relative}.unlabeled-select[data-v-55a8f708] .v-select.select-input-view .vs__actions{visibility:hidden}.unlabeled-select .vs--multiple[data-v-55a8f708] .vs__selected-options .vs__selected{width:auto}.unlabeled-select[data-v-55a8f708] .labeled-tooltip.error .status-icon{top:7px;right:2px}.unlabeled-select[data-v-55a8f708] .vs__selected-options{display:flex;margin:3px}.unlabeled-select[data-v-55a8f708] .vs__selected-options .vs__selected{width:auto}.unlabeled-select[data-v-55a8f708] .v-select.vs--open .vs__dropdown-toggle{color:var(--outline)!important}.unlabeled-select.focused.success[data-v-55a8f708],.unlabeled-select.success[data-v-55a8f708]{border:solid 1px var(--success)}.unlabeled-select.focused.success .selected[data-v-55a8f708],.unlabeled-select.focused.success .vs__actions[data-v-55a8f708]:after,.unlabeled-select.focused.success input[data-v-55a8f708],.unlabeled-select.success .selected[data-v-55a8f708],.unlabeled-select.success .vs__actions[data-v-55a8f708]:after,.unlabeled-select.success input[data-v-55a8f708]{color:var(--success)}.unlabeled-select.focused.warning[data-v-55a8f708],.unlabeled-select.warning[data-v-55a8f708]{border:solid 1px var(--warning)}.unlabeled-select.focused.warning .selected[data-v-55a8f708],.unlabeled-select.focused.warning .vs__actions[data-v-55a8f708]:after,.unlabeled-select.focused.warning input[data-v-55a8f708],.unlabeled-select.warning .selected[data-v-55a8f708],.unlabeled-select.warning .vs__actions[data-v-55a8f708]:after,.unlabeled-select.warning input[data-v-55a8f708]{color:var(--warning)}.unlabeled-select.error[data-v-55a8f708],.unlabeled-select.focused.error[data-v-55a8f708]{border:solid 1px var(--error)}.unlabeled-select.error .vs__actions[data-v-55a8f708]:after,.unlabeled-select.error>label[data-v-55a8f708],.unlabeled-select.focused.error .vs__actions[data-v-55a8f708]:after,.unlabeled-select.focused.error>label[data-v-55a8f708]{color:var(--error)}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","/*\n * Jexl\n * Copyright 2019 Tom Shawver\n */\n\n/**\n * Evaluates an ArrayLiteral by returning its value, with each element\n * independently run through the evaluator.\n * @param {{type: 'ObjectLiteral', value: <{}>}} ast An expression tree with an\n * ObjectLiteral as the top node\n * @returns {Promise.<[]>} resolves to a map contained evaluated values.\n * @private\n */\nexports.ArrayLiteral = function(ast) {\n return this.evalArray(ast.value)\n}\n\n/**\n * Evaluates a BinaryExpression node by running the Grammar's evaluator for\n * the given operator.\n * @param {{type: 'BinaryExpression', operator: , left: {},\n * right: {}}} ast An expression tree with a BinaryExpression as the top\n * node\n * @returns {Promise<*>} resolves with the value of the BinaryExpression.\n * @private\n */\nexports.BinaryExpression = function(ast) {\n return this.Promise.all([this.eval(ast.left), this.eval(ast.right)]).then(\n arr => this._grammar[ast.operator].eval(arr[0], arr[1])\n )\n}\n\n/**\n * Evaluates a ConditionalExpression node by first evaluating its test branch,\n * and resolving with the consequent branch if the test is truthy, or the\n * alternate branch if it is not. If there is no consequent branch, the test\n * result will be used instead.\n * @param {{type: 'ConditionalExpression', test: {}, consequent: {},\n * alternate: {}}} ast An expression tree with a ConditionalExpression as\n * the top node\n * @private\n */\nexports.ConditionalExpression = function(ast) {\n return this.eval(ast.test).then(res => {\n if (res) {\n if (ast.consequent) {\n return this.eval(ast.consequent)\n }\n return res\n }\n return this.eval(ast.alternate)\n })\n}\n\n/**\n * Evaluates a FilterExpression by applying it to the subject value.\n * @param {{type: 'FilterExpression', relative: , expr: {},\n * subject: {}}} ast An expression tree with a FilterExpression as the top\n * node\n * @returns {Promise<*>} resolves with the value of the FilterExpression.\n * @private\n */\nexports.FilterExpression = function(ast) {\n return this.eval(ast.subject).then(subject => {\n if (ast.relative) {\n return this._filterRelative(subject, ast.expr)\n }\n return this._filterStatic(subject, ast.expr)\n })\n}\n\n/**\n * Evaluates an Identifier by either stemming from the evaluated 'from'\n * expression tree or accessing the context provided when this Evaluator was\n * constructed.\n * @param {{type: 'Identifier', value: , [from]: {}}} ast An expression\n * tree with an Identifier as the top node\n * @returns {Promise<*>|*} either the identifier's value, or a Promise that\n * will resolve with the identifier's value.\n * @private\n */\nexports.Identifier = function(ast) {\n if (!ast.from) {\n return ast.relative ? this._relContext[ast.value] : this._context[ast.value]\n }\n return this.eval(ast.from).then(context => {\n if (context === undefined || context === null) {\n return undefined\n }\n if (Array.isArray(context)) {\n context = context[0]\n }\n return context[ast.value]\n })\n}\n\n/**\n * Evaluates a Literal by returning its value property.\n * @param {{type: 'Literal', value: }} ast An expression\n * tree with a Literal as its only node\n * @returns {string|number|boolean} The value of the Literal node\n * @private\n */\nexports.Literal = function(ast) {\n return ast.value\n}\n\n/**\n * Evaluates an ObjectLiteral by returning its value, with each key\n * independently run through the evaluator.\n * @param {{type: 'ObjectLiteral', value: <{}>}} ast An expression tree with an\n * ObjectLiteral as the top node\n * @returns {Promise<{}>} resolves to a map contained evaluated values.\n * @private\n */\nexports.ObjectLiteral = function(ast) {\n return this.evalMap(ast.value)\n}\n\n/**\n * Evaluates a Transform node by applying a function from the transforms map\n * to the subject value.\n * @param {{type: 'Transform', name: , subject: {}}} ast An\n * expression tree with a Transform as the top node\n * @returns {Promise<*>|*} the value of the transformation, or a Promise that\n * will resolve with the transformed value.\n * @private\n */\nexports.Transform = function(ast) {\n const transform = this._transforms[ast.name]\n if (!transform) {\n throw new Error(`Transform ${ast.name} is not defined.`)\n }\n return this.Promise.all([\n this.eval(ast.subject),\n this.evalArray(ast.args || [])\n ]).then(arr => transform.apply(null, [arr[0]].concat(arr[1])))\n}\n\n/**\n * Evaluates a Unary expression by passing the right side through the\n * operator's eval function.\n * @param {{type: 'UnaryExpression', operator: , right: {}}} ast An\n * expression tree with a UnaryExpression as the top node\n * @returns {Promise<*>} resolves with the value of the UnaryExpression.\n * @constructor\n */\nexports.UnaryExpression = function(ast) {\n return this.eval(ast.right).then(right =>\n this._grammar[ast.operator].eval(right)\n )\n}\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","class LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var baseClone = require('./_baseClone'),\n baseMatches = require('./_baseMatches');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\nfunction matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n}\n\nmodule.exports = matches;\n","\n/**\n * Expose `isUrl`.\n */\n\nmodule.exports = isUrl;\n\n/**\n * RegExps.\n * A URL must match #1 and then at least one of #2/#3.\n * Use two levels of REs to avoid REDOS.\n */\n\nvar protocolAndDomainRE = /^(?:\\w+:)?\\/\\/(\\S+)$/;\n\nvar localhostDomainRE = /^localhost[\\:?\\d]*(?:[^\\:?\\d]\\S*)?$/\nvar nonLocalhostDomainRE = /^[^\\s\\.]+\\.\\S{2,}$/;\n\n/**\n * Loosely validate a URL `string`.\n *\n * @param {String} string\n * @return {Boolean}\n */\n\nfunction isUrl(string){\n if (typeof string !== 'string') {\n return false;\n }\n\n var match = string.match(protocolAndDomainRE);\n if (!match) {\n return false;\n }\n\n var everythingAfterProtocol = match[1];\n if (!everythingAfterProtocol) {\n return false;\n }\n\n if (localhostDomainRE.test(everythingAfterProtocol) ||\n nonLocalhostDomainRE.test(everythingAfterProtocol)) {\n return true;\n }\n\n return false;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading',{attrs:{\"mode\":\"relative\"}}):_c('div',[_c('Tab',{attrs:{\"name\":\"general\",\"label-key\":\"kubewarden.tabs.general.label\",\"weight\":99}},[_c('General',{attrs:{\"data-testid\":\"ps-config-general-tab\",\"mode\":_vm.mode,\"service-accounts\":_vm.serviceAccounts},on:{\"update-general\":_vm.updateGeneral},model:{value:(_vm.chartValues),callback:function ($$v) {_vm.chartValues=$$v},expression:\"chartValues\"}})],1),_c('Tab',{attrs:{\"name\":\"security-contexts\",\"label-key\":\"kubewarden.tabs.security-contexts.label\",\"weight\":98}},[_c('SecurityContexts',{attrs:{\"data-testid\":\"ps-config-security-contexts-tab\",\"mode\":_vm.mode},on:{\"update-security-contexts\":_vm.updateSecurityContexts},model:{value:(_vm.chartValues.spec),callback:function ($$v) {_vm.$set(_vm.chartValues, \"spec\", $$v)},expression:\"chartValues.spec\"}})],1),_c('Tab',{attrs:{\"name\":\"labels\",\"label-key\":\"generic.labelsAndAnnotations\",\"weight\":97}},[_c('Labels',{attrs:{\"data-testid\":\"ps-config-labels-tab\",\"mode\":_vm.mode},model:{value:(_vm.chartValues),callback:function ($$v) {_vm.chartValues=$$v},expression:\"chartValues\"}})],1),_c('Tab',{attrs:{\"name\":\"verification\",\"label-key\":\"kubewarden.tabs.verification.label\",\"weight\":96}},[_c('Verification',{attrs:{\"data-testid\":\"ps-config-verification-tab\",\"value\":_vm.chartValues.spec,\"mode\":_vm.mode,\"config-maps\":_vm.configMaps},on:{\"update-vconfig\":_vm.updateSpec}})],1),_c('Tab',{attrs:{\"name\":\"registry\",\"label-key\":\"kubewarden.tabs.registry.label\",\"weight\":95},on:{\"active\":_vm.refresh}},[_c('Registry',{ref:\"registry\",attrs:{\"data-testid\":\"ps-config-registry-tab\",\"value\":_vm.chartValues.spec,\"mode\":_vm.mode},on:{\"update-registry\":_vm.updateSpec}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:_vm.containerClass},[_c('div',{class:_vm.defaultSectionClass},[_c('div',{staticClass:\"labels\"},[_c('div',{staticClass:\"labels__header\"},[(_vm.showLabelTitle)?_c('h3',[_c('t',{attrs:{\"k\":\"labels.labels.title\"}})],1):_vm._e(),(_vm.value.hasSystemLabels)?_c('ToggleSwitch',{attrs:{\"name\":\"label-system-toggle\",\"on-label\":_vm.t('labels.labels.show')},model:{value:(_vm.toggler),callback:function ($$v) {_vm.toggler=$$v},expression:\"toggler\"}}):_vm._e()],1),_c('p',{staticClass:\"mt-10 mb-10\"},[_c('t',{attrs:{\"k\":\"labels.labels.description\"}})],1),_c('div',{class:_vm.columnsClass},[_vm._t(\"labels\",function(){return [[_c('KeyValue',{key:\"labels\",attrs:{\"value\":_vm.value.labels,\"protected-keys\":_vm.value.systemLabels || [],\"toggle-filter\":_vm.toggler,\"add-label\":_vm.t('labels.addLabel'),\"mode\":_vm.mode,\"read-allowed\":false,\"value-can-be-empty\":true},on:{\"input\":function($event){return _vm.value.setLabels($event)}}})]]},{\"toggler\":_vm.toggler})],2)])]),_c('div',{staticClass:\"spacer\"}),(_vm.showAnnotations)?_c('div',{class:_vm.sectionClass},[_c('KeyValue',{key:\"annotations\",attrs:{\"value\":_vm.value.annotations,\"add-label\":_vm.t('labels.addAnnotation'),\"mode\":_vm.mode,\"title\":_vm.t('labels.annotations.title'),\"title-protip\":_vm.annotationTitleTooltip,\"read-allowed\":false,\"value-can-be-empty\":true},on:{\"input\":function($event){return _vm.value.setAnnotations($event)}}})],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"toggle-container\"},[_c('span',{staticClass:\"label no-select hand\",class:{ active: !_vm.state},on:{\"click\":function($event){return _vm.toggle(false)}}},[_vm._v(_vm._s(_vm.offLabel))]),_c('label',{staticClass:\"switch hand\"},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.state},on:{\"input\":function($event){return _vm.toggle(null)}}}),_c('span',{staticClass:\"slider round\"})]),_c('span',{staticClass:\"label no-select hand\",class:{ active: _vm.state},on:{\"click\":function($event){return _vm.toggle(true)}}},[_vm._v(_vm._s(_vm.onLabel))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nexport default Vue.extend({\n props: {\n value: {\n type: [Boolean, String, Number],\n default: false\n },\n\n offValue: {\n type: [Boolean, String, Number],\n default: false,\n },\n\n onValue: {\n type: [Boolean, String, Number],\n default: true,\n },\n\n offLabel: {\n type: String,\n default: '',\n },\n\n onLabel: {\n type: String,\n default: '',\n },\n },\n data() {\n return { state: false as boolean | string | number };\n },\n\n watch: {\n value: {\n handler() {\n this.state = this.value === this.onValue;\n },\n immediate: true\n }\n },\n\n methods: {\n toggle(neu: boolean | string | number) {\n this.state = neu === null ? !this.state : neu;\n this.$emit('input', this.state ? this.onValue : this.offValue);\n }\n }\n});\n","import mod from \"-!../../../../../cache-loader/dist/cjs.js??ref--15-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../ts-loader/index.js??ref--15-3!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ToggleSwitch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../cache-loader/dist/cjs.js??ref--15-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../ts-loader/index.js??ref--15-3!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ToggleSwitch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ToggleSwitch.vue?vue&type=template&id=07f9b340&scoped=true&\"\nimport script from \"./ToggleSwitch.vue?vue&type=script&lang=ts&\"\nexport * from \"./ToggleSwitch.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ToggleSwitch.vue?vue&type=style&index=0&id=07f9b340&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"07f9b340\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Labels.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Labels.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Labels.vue?vue&type=template&id=5c717a60&scoped=true&\"\nimport script from \"./Labels.vue?vue&type=script&lang=js&\"\nexport * from \"./Labels.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Labels.vue?vue&type=style&index=0&id=5c717a60&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5c717a60\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=5a686260&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SequenceTree.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SequenceTree.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SequenceTree.vue?vue&type=template&id=4a3b1176&scoped=true&\"\nimport script from \"./SequenceTree.vue?vue&type=script&lang=js&\"\nexport * from \"./SequenceTree.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SequenceTree.vue?vue&type=style&index=0&id=4a3b1176&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4a3b1176\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=6703bcf4&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=6703bcf4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6703bcf4\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=e1c5c3d8&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',[_c('h3',{staticClass:\"mt-20\"},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.securityContexts.podConfig'))+\" \")]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col span-12 mb-40\"},[_c('Checkbox',{attrs:{\"mode\":_vm.mode,\"data-testid\":\"ps-config-security-context-pod-runAsNonRoot-input\",\"label-key\":\"kubewarden.policyServerConfig.securityContexts.runAsNonRoot.label\"},on:{\"input\":function($event){return _vm.updateData($event, 'runAsNonRoot')}},model:{value:(_vm.runAsNonRoot),callback:function ($$v) {_vm.runAsNonRoot=$$v},expression:\"runAsNonRoot\"}})],1)]),_c('div',{staticClass:\"row mb-20\"},[_c('div',{staticClass:\"col span-6\"},[_c('h4',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.securityContexts.fsGroup.label'))+\" \")]),_c('LabeledInput',{attrs:{\"data-testid\":\"ps-config-security-context-pod-fsGroup-input\",\"type\":\"number\",\"min\":\"0\",\"mode\":_vm.mode,\"disabled\":_vm.disabledByOsWindows,\"label\":_vm.t('kubewarden.policyServerConfig.securityContexts.fsGroup.label')},on:{\"input\":function($event){return _vm.updateData($event, 'fsGroup')}},model:{value:(_vm.fsGroup),callback:function ($$v) {_vm.fsGroup=_vm._n($$v)},expression:\"fsGroup\"}})],1)]),_c('div',{staticClass:\"row mb-20\"},[_c('div',{staticClass:\"col span-6\"},[_c('h4',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.securityContexts.fsGroupChangePolicy.label'))+\" \")]),_c('LabeledInput',{attrs:{\"data-testid\":\"ps-config-security-context-pod-fsGroupChangePolicy-input\",\"mode\":_vm.mode,\"disabled\":_vm.disabledByOsWindows,\"label\":_vm.t('kubewarden.policyServerConfig.securityContexts.fsGroupChangePolicy.label'),\"placeholder\":_vm.t('kubewarden.policyServerConfig.securityContexts.fsGroupChangePolicy.placeholder')},on:{\"input\":function($event){return _vm.updateData($event, 'fsGroupChangePolicy')}},model:{value:(_vm.fsGroupChangePolicy),callback:function ($$v) {_vm.fsGroupChangePolicy=$$v},expression:\"fsGroupChangePolicy\"}})],1)]),_c('div',{staticClass:\"row mb-20\"},[_c('div',{staticClass:\"col span-6\"},[_c('h4',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.securityContexts.runAsGroup'))+\" \")]),_c('LabeledInput',{attrs:{\"data-testid\":\"ps-config-security-context-pod-runAsGroup-input\",\"type\":\"number\",\"min\":\"0\",\"mode\":_vm.mode,\"disabled\":_vm.disabledByOsWindows,\"label\":_vm.t('kubewarden.policyServerConfig.securityContexts.runAsGroup')},on:{\"input\":function($event){return _vm.updateData($event, 'runAsGroup')}},model:{value:(_vm.runAsGroup),callback:function ($$v) {_vm.runAsGroup=_vm._n($$v)},expression:\"runAsGroup\"}})],1)]),_c('div',{staticClass:\"row mb-40\"},[_c('div',{staticClass:\"col span-6\"},[_c('h4',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.securityContexts.runAsUser'))+\" \")]),_c('LabeledInput',{attrs:{\"data-testid\":\"ps-config-security-context-pod-runAsUser-input\",\"type\":\"number\",\"min\":\"0\",\"mode\":_vm.mode,\"disabled\":_vm.disabledByOsWindows,\"label\":_vm.t('kubewarden.policyServerConfig.securityContexts.runAsUser')},on:{\"input\":function($event){return _vm.updateData($event, 'runAsUser')}},model:{value:(_vm.runAsUser),callback:function ($$v) {_vm.runAsUser=_vm._n($$v)},expression:\"runAsUser\"}})],1)]),_c('SeLinuxOptions',{attrs:{\"value\":_vm.seLinuxOptions,\"mode\":_vm.mode,\"config-type\":\"pod\",\"disabled\":_vm.disabledByOsWindows},on:{\"update-se-linux-options\":function($event){return _vm.updateData($event, 'seLinuxOptions')}}}),_c('SeccompProfile',{attrs:{\"value\":_vm.seccompProfile,\"mode\":_vm.mode,\"config-type\":\"pod\",\"disabled\":_vm.disabledByOsWindows},on:{\"update-seccomp-profile\":function($event){return _vm.updateData($event, 'seccompProfile')}}}),_c('div',{staticClass:\"row mb-40\"},[_c('div',{staticClass:\"col span-6\"},[_c('h4',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.securityContexts.supplementalGroups.label'))+\" \")]),_c('ArrayListInteger',{attrs:{\"value\":_vm.supplementalGroups,\"data-testid\":\"ps-config-security-context-pod-supplementalGroups-input\",\"add-label\":_vm.t('kubewarden.policyServerConfig.securityContexts.supplementalGroups.addLabel'),\"input-label\":_vm.t('kubewarden.policyServerConfig.securityContexts.supplementalGroups.label'),\"mode\":_vm.mode,\"disabled\":_vm.disabledByOsWindows},on:{\"input\":function($event){return _vm.updateData($event, 'supplementalGroups')}}})],1)]),_c('div',{staticClass:\"row mb-40\"},[_c('div',{staticClass:\"col\"},[_c('h4',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.securityContexts.sysctls.label'))+\" \")]),_c('SysctlsArrayList',{attrs:{\"value\":_vm.sysctls,\"data-testid\":\"ps-config-security-context-pod-sysctls-input\",\"add-label\":_vm.t('kubewarden.policyServerConfig.securityContexts.sysctls.addLabel'),\"input-label\":_vm.sysctlsInputLabel,\"input-placeholder-label\":_vm.sysctlsInputPlaceholderLabel,\"mode\":_vm.mode,\"disabled\":_vm.disabledByOsWindows},on:{\"input\":function($event){return _vm.updateData($event, 'sysctls')}}})],1)]),_c('WindowsOptions',{attrs:{\"value\":_vm.windowsOptions,\"mode\":_vm.mode,\"config-type\":\"pod\",\"disabled\":_vm.disabledByOsLinux},on:{\"update-windows-options\":function($event){return _vm.updateData($event, 'windowsOptions')}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('ArrayList',{staticClass:\"array-list-integer\",attrs:{\"value\":_vm.arrayListInteger,\"add-allowed\":true,\"add-label\":_vm.addLabel,\"disabled\":_vm.disabled,\"default-add-value\":0},on:{\"input\":_vm.handleArrayListUpdate},scopedSlots:_vm._u([{key:\"columns\",fn:function(scope){return [_c('LabeledInput',{attrs:{\"data-testid\":\"array-list-integer-input\",\"type\":\"number\",\"min\":\"0\",\"mode\":_vm.mode,\"disabled\":_vm.disabled,\"label\":_vm.inputLabel},on:{\"input\":function($event){return _vm.updateRow(scope.i, $event)}},model:{value:(scope.row.value),callback:function ($$v) {_vm.$set(scope.row, \"value\", _vm._n($$v))},expression:\"scope.row.value\"}})]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ArrayListInteger.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ArrayListInteger.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ArrayListInteger.vue?vue&type=template&id=c5877aee&scoped=true&\"\nimport script from \"./ArrayListInteger.vue?vue&type=script&lang=js&\"\nexport * from \"./ArrayListInteger.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ArrayListInteger.vue?vue&type=style&index=0&id=c5877aee&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c5877aee\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('ArrayList',{staticClass:\"sysctls-array-list\",attrs:{\"value\":_vm.value,\"add-allowed\":true,\"add-label\":_vm.addLabel,\"disabled\":_vm.disabled,\"default-add-value\":0},on:{\"add\":_vm.handleAddRow,\"remove\":_vm.handleRemoveRow},scopedSlots:_vm._u([{key:\"columns\",fn:function(scope){return [_c('LabeledInput',{attrs:{\"data-testid\":`ps-config-security-context-${_vm.configType}-sysctls-name-input`,\"mode\":_vm.mode,\"disabled\":_vm.disabled,\"label\":_vm.inputLabel.name,\"placeholder\":_vm.inputPlaceholderLabel.name,\"required\":\"\"},on:{\"input\":function($event){return _vm.updateRow(scope.i, 'name', $event)}},model:{value:(scope.row.value.name),callback:function ($$v) {_vm.$set(scope.row.value, \"name\", $$v)},expression:\"scope.row.value.name\"}}),_c('LabeledInput',{attrs:{\"data-testid\":`ps-config-security-context-${_vm.configType}-sysctls-value-input`,\"mode\":_vm.mode,\"disabled\":_vm.disabled,\"label\":_vm.inputLabel.value,\"placeholder\":_vm.inputPlaceholderLabel.value,\"required\":\"\"},on:{\"input\":function($event){return _vm.updateRow(scope.i, 'value', $event)}},model:{value:(scope.row.value.value),callback:function ($$v) {_vm.$set(scope.row.value, \"value\", $$v)},expression:\"scope.row.value.value\"}})]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SysctlsArrayList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SysctlsArrayList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SysctlsArrayList.vue?vue&type=template&id=2d8707da&scoped=true&\"\nimport script from \"./SysctlsArrayList.vue?vue&type=script&lang=js&\"\nexport * from \"./SysctlsArrayList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SysctlsArrayList.vue?vue&type=style&index=0&id=2d8707da&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2d8707da\",\n null\n \n)\n\nexport default component.exports","\n\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PodConfiguration.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PodConfiguration.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PodConfiguration.vue?vue&type=template&id=6f73e9b4&\"\nimport script from \"./PodConfiguration.vue?vue&type=script&lang=js&\"\nexport * from \"./PodConfiguration.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./NameNsDescription.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./NameNsDescription.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NameNsDescription.vue?vue&type=template&id=08979412&scoped=true&\"\nimport script from \"./NameNsDescription.vue?vue&type=script&lang=js&\"\nexport * from \"./NameNsDescription.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NameNsDescription.vue?vue&type=style&index=0&id=08979412&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"08979412\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./General.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./General.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./General.vue?vue&type=template&id=0f9e8327&scoped=true&\"\nimport script from \"./General.vue?vue&type=script&lang=js&\"\nexport * from \"./General.vue?vue&type=script&lang=js&\"\nimport style0 from \"./General.vue?vue&type=style&index=0&id=0f9e8327&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0f9e8327\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.list.js b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.list.js new file mode 100644 index 0000000..ed12b25 --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.list.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]||[]).push([[7],{"0e6c":function(e,t,s){"use strict";s.r(t);var r=function(){var e=this,t=e._self._c;return e.$fetchState.pending?t("Loading"):t("div",[t("Banner",{staticClass:"type-banner mb-20 mt-0",attrs:{"data-testid":"kw-ap-list-banner",color:"info",label:e.t("kubewarden.admissionPolicy.description")}}),t("PolicyList",{attrs:{"data-testid":"kw-ap-policy-list",resource:e.resource,rows:e.rows,schema:e.schema}})],1)},a=[],i=s("6418"),l=s("15ca"),n=s("7542"),o={components:{Banner:i["a"],Loading:l["a"],PolicyList:n["a"]},props:{resource:{type:String,required:!0},schema:{type:Object,required:!0}},async fetch(){await this.$store.dispatch("cluster/findAll",{type:this.resource})},computed:{rows(){return this.$store.getters["cluster/all"](this.resource)}}},c=o,u=s("d802"),d=Object(u["a"])(c,r,a,!1,null,null,null);t["default"]=d.exports},"2ed1":function(e,t,s){"use strict";s.r(t);var r=function(){var e=this,t=e._self._c;return e.$fetchState.pending?t("Loading"):t("div",[e.hideBannerDefaults?e._e():t("DefaultsBanner"),t("ResourceTable",{attrs:{schema:e.schema,rows:e.rows,"data-testid":"kw-ps-resource-table"}})],1)},a=[],i=s("907c"),l=s("4ac6"),n=s("15ca"),o=s("126f"),c=s("90cd"),u=s("91ad"),d={components:{DefaultsBanner:u["a"],Loading:n["a"],ResourceTable:o["a"]},props:{resource:{type:String,required:!0},schema:{type:Object,required:!0}},async fetch(){await this.$store.dispatch("cluster/findAll",{type:this.resource}),this.$store.getters["cluster/canList"](i["a"].APP)&&(await this.$store.dispatch("catalog/load"),this.hideBannerDefaults||(this.apps=await this.$store.dispatch("cluster/findAll",{type:i["a"].APP})))},data(){return{apps:null}},computed:{defaultsApp(){var e;return null===(e=this.apps)||void 0===e?void 0:e.find(e=>{var t;return(null===(t=e.spec)||void 0===t||null===(t=t.chart)||void 0===t||null===(t=t.metadata)||void 0===t||null===(t=t.annotations)||void 0===t?void 0:t[l["c"].RELEASE_NAME])===c["g"].RANCHER_DEFAULTS})},hideBannerDefaults(){return this.$store.getters["kubewarden/hideBannerDefaults"]||!!this.defaultsApp},rows(){return this.$store.getters["cluster/all"](this.resource)}}},p=d,h=s("d802"),f=Object(h["a"])(p,r,a,!1,null,null,null);t["default"]=f.exports},4952:function(e,t,s){var r=s("9099");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var a=s("0ed3").default;a("688bb416",r,!0,{sourceMap:!1,shadowMode:!1})},7542:function(e,t,s){"use strict";var r=function(){var e=this,t=e._self._c;return t("div",[t("div",{staticClass:"filter"},[t("LabeledSelect",{staticClass:"filter__resources",attrs:{clearable:!0,taggable:!0,multiple:!0,label:"Search by Resource",options:e.resourceOptions},model:{value:e.resources,callback:function(t){e.resources=t},expression:"resources"}}),t("LabeledSelect",{staticClass:"filter__mode",attrs:{clearable:!0,searchable:!1,options:e.modeOptions,multiple:!1,placement:"bottom",label:"Search by Mode"},model:{value:e.mode,callback:function(t){e.mode=t},expression:"mode"}}),t("button",{ref:"btn",staticClass:"btn, btn-sm, role-primary",attrs:{type:"button"},on:{click:e.resetFilter}},[e._v(" "+e._s(e.t("kubewarden.utils.resetFilter"))+" ")])],1),t("ResourceTable",{attrs:{schema:e.schema,rows:e.filteredRows,headers:e.headers}})],1)},a=[],i=s("71d2"),l=s.n(i),n=s("1d19"),o=s("466b"),c=s("126f"),u={components:{LabeledSelect:o["a"],ResourceTable:c["a"]},props:{resource:{type:String,required:!0},rows:{type:Array,required:!0},schema:{type:Object,required:!0}},data(){return{mode:null,resources:null}},created(){this.mode="All"},computed:{headers(){return this.$store.getters["type-map/headersFor"](this.schema)},filteredRows(){const e=this.rows||[],t=e.filter(e=>{const t=l()(e.spec.rules),s=t.flatMap(e=>e.resources),r=e.spec.mode;if(this.mode&&"All"!==this.mode&&this.mode!==r)return!1;if(this.resources)for(const a of this.resources)if(!s.includes(a))return!1;return!0});return Object(n["a"])(t,["id"])},modeOptions(){var e;const t=(null===(e=this.rows)||void 0===e?void 0:e.map(e=>{var t;return null===(t=e.spec)||void 0===t?void 0:t.mode}))||[];return t.unshift("All"),[...new Set(t)]},resourceOptions(){return this.flattenRule("resources")}},methods:{flattenRule(e){var t;const s=null===(t=this.rows)||void 0===t?void 0:t.flatMap(t=>{var s;const r=l()(null===(s=t.spec)||void 0===s?void 0:s.rules);return r.flatMap(t=>t[e])});return[...new Set(s)]||!1},hasNamespaceSelector(e){return e.namespaceSelector},resetFilter(){this.$set(this,"resources",null),this.$set(this,"mode","All")}}},d=u,p=(s("8485"),s("d802")),h=Object(p["a"])(d,r,a,!1,null,"a2185e04",null);t["a"]=h.exports},8485:function(e,t,s){"use strict";s("4952")},9099:function(e,t,s){var r=s("5eaa");t=r(!1),t.push([e.i,".filter[data-v-a2185e04]{display:flex;flex-direction:row;justify-content:flex-end;align-self:flex-end}.filter>*[data-v-a2185e04]{margin:10px}.filter[data-v-a2185e04]>:first-child{margin-left:0}.filter[data-v-a2185e04]>:last-child{margin-right:0}@media only screen and (min-width:480px){.filter[data-v-a2185e04]{width:100%}}@media only screen and (min-width:1281px){.filter[data-v-a2185e04]{width:75%}}.policy__mode[data-v-a2185e04]{display:flex;align-items:center}.policy__mode i[data-v-a2185e04]{margin-left:5px;font-size:22px;color:var(--warning)}",""]),e.exports=t},e216:function(e,t,s){"use strict";s.r(t);var r=function(){var e=this,t=e._self._c;return e.$fetchState.pending?t("Loading"):t("div",[t("Banner",{staticClass:"type-banner mb-20 mt-0",attrs:{"data-testid":"kw-cap-list-banner",color:"info",label:e.t("kubewarden.clusterAdmissionPolicy.description")}}),e.kwDefaultsHelmChartSettingsCompatible?e._e():t("DefaultsBanner",{attrs:{mode:"upgrade"}}),t("PolicyList",{attrs:{"data-testid":"kw-cap-policy-list",resource:e.resource,rows:e.rows,schema:e.schema}})],1)},a=[],i=s("907c"),l=s("6418"),n=s("15ca"),o=s("4ac6"),c=s("90cd"),u=s("d1f7"),d=s.n(u);function p(e,t){return!d.a.gt(t,"1.4.1")||d.a.gt(e,"1.9.9")}var h=s("7542"),f=s("91ad"),v={components:{Banner:l["a"],Loading:n["a"],PolicyList:h["a"],DefaultsBanner:f["a"]},props:{resource:{type:String,required:!0},schema:{type:Object,required:!0}},async fetch(){this.$store.getters["cluster/canList"](i["a"].APP)&&this.$store.dispatch("cluster/findAll",{type:i["a"].APP}),this.$store.getters["cluster/canList"](i["E"])&&this.$store.dispatch("cluster/findAll",{type:i["E"]}),await this.$store.dispatch("cluster/findAll",{type:this.resource})},computed:{rows(){return this.$store.getters["cluster/all"](this.resource)},allApps(){return this.$store.getters["cluster/all"](i["a"].APP)},kubewardenDefaultsApp(){var e;return this.allApps?null===(e=this.allApps)||void 0===e?void 0:e.find(e=>{var t,s;return(null===(t=e.spec)||void 0===t||null===(t=t.chart)||void 0===t||null===(t=t.metadata)||void 0===t||null===(t=t.annotations)||void 0===t?void 0:t[o["c"].RELEASE_NAME])===c["g"].RANCHER_DEFAULTS||(null===(s=e.spec)||void 0===s||null===(s=s.chart)||void 0===s||null===(s=s.metadata)||void 0===s?void 0:s.name)===c["h"].DEFAULTS}):null},kubewardenExtension(){const e=this.$store.getters["uiplugins/plugins"]||[];return null===e||void 0===e?void 0:e.find(e=>{var t;return null===e||void 0===e||null===(t=e.id)||void 0===t?void 0:t.includes(c["k"])})},kwDefaultsHelmChartSettingsCompatible(){var e,t;const s=null===(e=this.kubewardenDefaultsApp)||void 0===e||null===(e=e.spec)||void 0===e||null===(e=e.chart)||void 0===e||null===(e=e.metadata)||void 0===e?void 0:e.version,r=null===(t=this.kubewardenExtension)||void 0===t?void 0:t.version;return!s||!r||p(s,r)}}},m=v,b=s("d802"),w=Object(b["a"])(m,r,a,!1,null,null,null);t["default"]=w.exports}}]); +//# sourceMappingURL=kubewarden-1.6.3.umd.min.list.js.map \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.list.js.map b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.list.js.map new file mode 100644 index 0000000..9fa64cb --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.list.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-1.6.3/./list/policies.kubewarden.io.admissionpolicy.vue","webpack://kubewarden-1.6.3/list/policies.kubewarden.io.admissionpolicy.vue","webpack://kubewarden-1.6.3/./list/policies.kubewarden.io.admissionpolicy.vue?06c3","webpack://kubewarden-1.6.3/./list/policies.kubewarden.io.admissionpolicy.vue?a051","webpack://kubewarden-1.6.3/./list/policies.kubewarden.io.policyserver.vue","webpack://kubewarden-1.6.3/list/policies.kubewarden.io.policyserver.vue","webpack://kubewarden-1.6.3/./list/policies.kubewarden.io.policyserver.vue?c461","webpack://kubewarden-1.6.3/./list/policies.kubewarden.io.policyserver.vue?966f","webpack://kubewarden-1.6.3/./components/Policies/PolicyList.vue?d1bf","webpack://kubewarden-1.6.3/./components/Policies/PolicyList.vue","webpack://kubewarden-1.6.3/components/Policies/PolicyList.vue","webpack://kubewarden-1.6.3/./components/Policies/PolicyList.vue?b428","webpack://kubewarden-1.6.3/./components/Policies/PolicyList.vue?ab72","webpack://kubewarden-1.6.3/./components/Policies/PolicyList.vue?83fc","webpack://kubewarden-1.6.3/./components/Policies/PolicyList.vue?fb4b","webpack://kubewarden-1.6.3/./list/policies.kubewarden.io.clusteradmissionpolicy.vue","webpack://kubewarden-1.6.3/./modules/policies.ts","webpack://kubewarden-1.6.3/list/policies.kubewarden.io.clusteradmissionpolicy.vue","webpack://kubewarden-1.6.3/./list/policies.kubewarden.io.clusteradmissionpolicy.vue?7c32","webpack://kubewarden-1.6.3/./list/policies.kubewarden.io.clusteradmissionpolicy.vue?643a"],"names":["render","_vm","this","_c","_self","$fetchState","pending","staticClass","attrs","t","resource","rows","schema","staticRenderFns","components","Banner","Loading","PolicyList","props","type","String","required","Object","$store","dispatch","computed","getters","component","hideBannerDefaults","_e","DefaultsBanner","ResourceTable","CATALOG","APP","apps","data","defaultsApp","_this$apps","find","a","_a$spec","spec","chart","metadata","annotations","CATALOG_ANNOTATIONS","RELEASE_NAME","KUBEWARDEN_APPS","RANCHER_DEFAULTS","content","__esModule","default","module","i","locals","exports","add","resourceOptions","model","value","resources","callback","$$v","expression","modeOptions","mode","ref","on","resetFilter","_v","_s","filteredRows","headers","LabeledSelect","Array","created","out","filter","row","flatRules","flattenDeep","rules","flatResources","flatMap","r","rowMode","selected","includes","sortBy","_this$rows","map","_row$spec","unshift","Set","flattenRule","methods","option","_this$rows2","flattened","_row$spec2","hasNamespaceSelector","namespaceSelector","$set","___CSS_LOADER_API_IMPORT___","push","kwDefaultsHelmChartSettingsCompatible","kwDefaultsHelmChartSettings","kwDefaultsVersion","uiPluginVersion","semver","gt","UI_PLUGIN","allApps","kubewardenDefaultsApp","_this$allApps","_a$spec2","name","KUBEWARDEN_CHARTS","DEFAULTS","kubewardenExtension","extensionsInstalled","ext","_ext$id","id","KUBEWARDEN_PRODUCT_NAME","_this$kubewardenDefau","_this$kubewardenExten","version"],"mappings":"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","file":"kubewarden-1.6.3.umd.min.list.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',[_c('Banner',{staticClass:\"type-banner mb-20 mt-0\",attrs:{\"data-testid\":\"kw-ap-list-banner\",\"color\":\"info\",\"label\":_vm.t('kubewarden.admissionPolicy.description')}}),_c('PolicyList',{attrs:{\"data-testid\":\"kw-ap-policy-list\",\"resource\":_vm.resource,\"rows\":_vm.rows,\"schema\":_vm.schema}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.admissionpolicy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.admissionpolicy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./policies.kubewarden.io.admissionpolicy.vue?vue&type=template&id=08772963&\"\nimport script from \"./policies.kubewarden.io.admissionpolicy.vue?vue&type=script&lang=js&\"\nexport * from \"./policies.kubewarden.io.admissionpolicy.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',[(!_vm.hideBannerDefaults)?_c('DefaultsBanner'):_vm._e(),_c('ResourceTable',{attrs:{\"schema\":_vm.schema,\"rows\":_vm.rows,\"data-testid\":\"kw-ps-resource-table\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./policies.kubewarden.io.policyserver.vue?vue&type=template&id=2f23db10&\"\nimport script from \"./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"\nexport * from \"./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyList.vue?vue&type=template&id=a2185e04&scoped=true&\"\nimport script from \"./PolicyList.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicyList.vue?vue&type=style&index=0&id=a2185e04&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a2185e04\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyList.vue?vue&type=style&index=0&id=a2185e04&prod&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".filter[data-v-a2185e04]{display:flex;flex-direction:row;justify-content:flex-end;align-self:flex-end}.filter>*[data-v-a2185e04]{margin:10px}.filter[data-v-a2185e04]>:first-child{margin-left:0}.filter[data-v-a2185e04]>:last-child{margin-right:0}@media only screen and (min-width:480px){.filter[data-v-a2185e04]{width:100%}}@media only screen and (min-width:1281px){.filter[data-v-a2185e04]{width:75%}}.policy__mode[data-v-a2185e04]{display:flex;align-items:center}.policy__mode i[data-v-a2185e04]{margin-left:5px;font-size:22px;color:var(--warning)}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',[_c('Banner',{staticClass:\"type-banner mb-20 mt-0\",attrs:{\"data-testid\":\"kw-cap-list-banner\",\"color\":\"info\",\"label\":_vm.t('kubewarden.clusterAdmissionPolicy.description')}}),(!_vm.kwDefaultsHelmChartSettingsCompatible)?_c('DefaultsBanner',{attrs:{\"mode\":\"upgrade\"}}):_vm._e(),_c('PolicyList',{attrs:{\"data-testid\":\"kw-cap-policy-list\",\"resource\":_vm.resource,\"rows\":_vm.rows,\"schema\":_vm.schema}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import semver from 'semver';\n\n/**\n * Determines if the Kubewarden Extension is compatible with kubewarden-defaults version for displaying settings edit\n * for Kubewarden Extension `>= 1.4.2` it requires kubewarden-defaults version of `>= 2.0.0`\n * @param string\n * @param string\n * @returns Object\n */\nexport function kwDefaultsHelmChartSettings(kwDefaultsVersion: string, uiPluginVersion: string): Object | void {\n if (semver.gt(uiPluginVersion, '1.4.1')) {\n return semver.gt(kwDefaultsVersion, '1.9.9');\n }\n\n return true;\n}","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=template&id=5f1987aa&\"\nimport script from \"./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"\nexport * from \"./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.policyDashboard0.js b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.policyDashboard0.js new file mode 100644 index 0000000..50cbd15 --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.policyDashboard0.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]||[]).push([[8],{ec40:function(e){e.exports=JSON.parse('{"__inputs":[{"name":"DS_PROMETHEUS","label":"Prometheus","description":"Prometheus storing Kubewarden metrics","type":"datasource","pluginId":"prometheus","pluginName":"Prometheus"}],"__requires":[{"type":"grafana","id":"grafana","name":"Grafana","version":"7.1.5"},{"type":"panel","id":"heatmap","name":"Heatmap","version":""},{"type":"datasource","id":"prometheus","name":"Prometheus","version":"1.0.0"},{"type":"panel","id":"stat","name":"Stat","version":""},{"type":"panel","id":"timeseries","name":"Time series","version":""}],"annotations":{"list":[{"builtIn":1,"datasource":"-- Grafana --","enable":true,"hide":true,"iconColor":"rgba(0, 211, 255, 1)","name":"Annotations & Alerts","target":{"limit":100,"matchAny":false,"tags":[],"type":"dashboard"},"type":"dashboard"}]},"description":"Official dashboard for Kubewarden metrics","editable":true,"fiscalYearStartMonth":0,"gnetId":15314,"graphTooltip":0,"id":null,"iteration":1637931173543,"links":[],"liveNow":false,"panels":[{"collapsed":false,"datasource":null,"gridPos":{"h":0,"w":24,"x":0,"y":56},"id":1,"panels":[],"type":"row"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"green","mode":"fixed"},"custom":{"axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":10,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"green","value":null}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":7,"w":8,"x":0,"y":0},"legend":{"show":true,"values":false,"min":false,"max":false,"current":false,"total":true,"avg":false},"id":2,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom","total":true},"tooltip":{"mode":"single"}},"targets":[{"expr":"sum(rate(kubewarden_policy_evaluations_total{accepted=\\"true\\", policy_name=\\"$policy_name\\"}[$__rate_interval]))*100/sum(rate(kubewarden_policy_evaluations_total{policy_name=\\"$policy_name\\"}[$__rate_interval]))","interval":"","legendFormat":"Accepted Requests","refId":"A"}],"title":"$policy_name accepted requests","type":"graph"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"red","mode":"fixed"},"custom":{"axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":10,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"red","value":null}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":7,"w":8,"x":8,"y":0},"legend":{"show":true,"values":false,"min":false,"max":false,"current":false,"total":true,"avg":false},"id":3,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom","total":true},"tooltip":{"mode":"single"}},"targets":[{"expr":"sum(rate(kubewarden_policy_evaluations_total{accepted=\\"false\\", policy_name=\\"$policy_name\\"}[$__rate_interval]))*100/sum(rate(kubewarden_policy_evaluations_total{policy_name=\\"$policy_name\\"}[$__rate_interval]))","interval":"","legendFormat":"Rejected Requests","refId":"A"}],"title":"$policy_name rejected requests","type":"graph"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"purple","mode":"fixed"},"custom":{"axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":10,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"purple","value":null}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":7,"w":8,"x":16,"y":0},"legend":{"show":true,"values":false,"min":false,"max":false,"current":false,"total":true,"avg":false},"id":4,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom","total":true},"tooltip":{"mode":"single"}},"targets":[{"expr":"sum(rate(kubewarden_policy_evaluations_total{mutated=\\"true\\", policy_name=\\"$policy_name\\"}[$__rate_interval]))*100/sum(rate(kubewarden_policy_evaluations_total{policy_name=\\"$policy_name\\"}[$__rate_interval]))","interval":"","legendFormat":"Mutated Requests","refId":"A"}],"title":"$policy_name mutated requests","type":"graph"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"green","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"green","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":8,"x":0,"y":9},"id":5,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"7.1.5","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"true\\", policy_name=\\"$policy_name\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"$policy_name total accepted requests","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"red","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"red","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":8,"x":8,"y":9},"id":6,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"7.1.5","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"false\\", policy_name=\\"$policy_name\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"$policy_name total rejected requests","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"purple","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"purple","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":8,"x":16,"y":9},"id":7,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"7.1.5","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{mutated=\\"true\\", policy_name=\\"$policy_name\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"$policy_name total mutated requests","type":"stat"}],"refresh":"30s","schemaVersion":31,"style":"dark","tags":[],"templating":{"list":[{"current":{},"definition":"label_values(kubewarden_policy_evaluations_total{}, policy_name)","description":"Define the policy which you want to see the metrics","hide":0,"includeAll":false,"multi":false,"name":"policy_name","options":[],"query":{"query":"label_values(kubewarden_policy_evaluations_total{}, policy_name)","refId":"StandardVariableQuery"},"refresh":1,"regex":"","skipUrlSync":false,"sort":0,"type":"query"}]},"time":{"from":"now-1h","to":"now"},"timepicker":{},"timezone":"","title":"Kubewarden Policy","uid":"kubewarden-dashboard-policy","version":3}')}}]); +//# sourceMappingURL=kubewarden-1.6.3.umd.min.policyDashboard0.js.map \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.policyDashboard0.js.map b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.policyDashboard0.js.map new file mode 100644 index 0000000..3bd141c --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.policyDashboard0.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"kubewarden-1.6.3.umd.min.policyDashboard0.js","sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.policyDashboard1.js b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.policyDashboard1.js new file mode 100644 index 0000000..f665910 --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.policyDashboard1.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]||[]).push([[9],{"82e7":function(e){e.exports=JSON.parse('{"__inputs":[{"name":"DS_PROMETHEUS","label":"Prometheus","description":"Prometheus storing Kubewarden metrics","type":"datasource","pluginId":"prometheus","pluginName":"Prometheus"}],"__requires":[{"type":"grafana","id":"grafana","name":"Grafana","version":"8.2.3"},{"type":"panel","id":"heatmap","name":"Heatmap","version":""},{"type":"datasource","id":"prometheus","name":"Prometheus","version":"1.0.0"},{"type":"panel","id":"stat","name":"Stat","version":""},{"type":"panel","id":"timeseries","name":"Time series","version":""}],"annotations":{"list":[{"builtIn":1,"datasource":"-- Grafana --","enable":true,"hide":true,"iconColor":"rgba(0, 211, 255, 1)","name":"Annotations & Alerts","target":{"limit":100,"matchAny":false,"tags":[],"type":"dashboard"},"type":"dashboard"}]},"description":"Official Kubewarden Grafana dashboard. It allows the user to visualize an overview of the Kubewarden components as well as metrics for specific policies. ","editable":true,"fiscalYearStartMonth":0,"gnetId":15314,"graphTooltip":0,"id":null,"iteration":1637931173543,"links":[],"liveNow":false,"panels":[{"collapsed":false,"datasource":null,"gridPos":{"h":1,"w":24,"x":0,"y":0},"id":53,"panels":[],"title":"Kubewarden overview","type":"row"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"green","mode":"fixed"},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"green","value":null}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":8,"w":8,"x":0,"y":1},"id":50,"options":{"colorMode":"value","graphMode":"area","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"true\\",mutated=\\"false\\"})*100/sum(kubewarden_policy_evaluations_total{})","interval":"","legendFormat":"","refId":"A"}],"title":"Request accepted with no mutation percentage","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"red","mode":"fixed"},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"red","value":null}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":8,"w":8,"x":8,"y":1},"id":48,"options":{"colorMode":"value","graphMode":"area","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"false\\"})*100/sum(kubewarden_policy_evaluations_total{})","interval":"","legendFormat":"","refId":"A"}],"title":"Request rejection percentage ","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"purple","mode":"fixed"},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"green","value":null},{"color":"blue","value":50}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":8,"w":8,"x":16,"y":1},"id":51,"options":{"colorMode":"value","graphMode":"area","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{mutated=\\"true\\"})*100/sum(kubewarden_policy_evaluations_total{})","interval":"","legendFormat":"","refId":"A"}],"title":"Request mutation percentage ","type":"stat"},{"datasource":"${DS_PROMETHEUS}","fieldConfig":{"defaults":{"color":{"fixedColor":"green","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"green","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":6,"x":0,"y":9},"id":37,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"true\\",mutated=\\"false\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"Total accepted requests with no mutation","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"purple","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"blue","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":6,"x":6,"y":9},"id":39,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"/^sum\\\\(kubewarden_policy_evaluations_total\\\\{accepted=\\"true\\",mutated=\\"true\\"\\\\}\\\\)$/","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"true\\",mutated=\\"true\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"Total mutated requests","type":"stat"},{"datasource":"${DS_PROMETHEUS}","fieldConfig":{"defaults":{"color":{"fixedColor":"red","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"red","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":6,"x":12,"y":9},"id":40,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"false\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"Total rejected requests","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"blue","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"purple","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":6,"x":18,"y":9},"id":41,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total)","interval":"","legendFormat":"","refId":"A"}],"title":"Request count","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"green","mode":"fixed"},"custom":{"axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":10,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]}},"overrides":[]},"gridPos":{"h":8,"w":12,"x":0,"y":16},"id":67,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom"},"tooltip":{"mode":"single"}},"targets":[{"exemplar":true,"expr":"sum by (accepted) (\\n rate(kubewarden_policy_evaluations_total{accepted=\\"true\\"}[$__rate_interval])\\n)","interval":"","legendFormat":"Accepted requests","refId":"A"}],"title":"Accepted requests rate","type":"timeseries"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"red","mode":"fixed"},"custom":{"axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":10,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"red","value":null}]}},"overrides":[]},"gridPos":{"h":8,"w":12,"x":12,"y":16},"id":66,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom"},"tooltip":{"mode":"single"}},"targets":[{"exemplar":true,"expr":"sum by (accepted) (\\n rate(kubewarden_policy_evaluations_total{accepted=\\"false\\"}[$__rate_interval])\\n)","format":"time_series","interval":"","legendFormat":"Reject requests","refId":"A"}],"title":"Rejected requests rate","type":"timeseries"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"purple","mode":"fixed"},"custom":{"axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":10,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null}]}},"overrides":[]},"gridPos":{"h":8,"w":12,"x":0,"y":24},"id":68,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom"},"tooltip":{"mode":"single"}},"targets":[{"exemplar":true,"expr":"sum by (mutated) (\\n rate(kubewarden_policy_evaluations_total{mutated=\\"true\\"}[$__rate_interval])\\n)","interval":"","legendFormat":"Mutated requests","refId":"A"}],"title":"Mutated requests rate","type":"timeseries"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"blue","mode":"fixed"},"custom":{"axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":10,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]}},"overrides":[]},"gridPos":{"h":8,"w":12,"x":12,"y":24},"id":69,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom"},"tooltip":{"mode":"single"}},"targets":[{"exemplar":true,"expr":"sum (\\n rate(kubewarden_policy_evaluations_total[$__rate_interval])\\n)","interval":"","legendFormat":"All requests","refId":"A"}],"title":" Requests rate","type":"timeseries"},{"cards":{"cardPadding":null,"cardRound":null},"color":{"cardColor":"#b4ff00","colorScale":"sqrt","colorScheme":"interpolateOranges","exponent":0.5,"mode":"spectrum"},"dataFormat":"timeseries","datasource":null,"gridPos":{"h":8,"w":12,"x":0,"y":32},"heatmap":{},"hideZeroBuckets":false,"highlightCards":true,"id":59,"legend":{"show":true},"reverseYBuckets":false,"targets":[{"exemplar":true,"expr":"sum(rate(kubewarden_policy_evaluation_latency_milliseconds_bucket[$__rate_interval])) by (le)","format":"heatmap","interval":"","legendFormat":"{{le}}","refId":"A"}],"title":"Policies latency","tooltip":{"show":true,"showHistogram":false},"type":"heatmap","xAxis":{"show":true},"xBucketNumber":null,"xBucketSize":"","yAxis":{"decimals":null,"format":"ms","logBase":1,"max":"120","min":"0","show":true,"splitFactor":null,"width":null},"yBucketBound":"auto","yBucketNumber":10,"yBucketSize":10},{"datasource":null,"fieldConfig":{"defaults":{"color":{"mode":"thresholds"},"decimals":0,"mappings":[],"min":0,"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"#EAB839","value":101},{"color":"red","value":200}]},"unit":"ms"},"overrides":[]},"gridPos":{"h":8,"w":12,"x":12,"y":32},"id":61,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"value"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"histogram_quantile(.90, sum(rate(kubewarden_policy_evaluation_latency_milliseconds_bucket[$__interval])) by (le))","format":"heatmap","interval":"","legendFormat":"{{le}}","refId":"A"}],"title":"90th percentile evaluation latency","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"purple","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"blue","value":null}]}},"overrides":[]},"gridPos":{"h":8,"w":12,"x":0,"y":40},"id":42,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"true\\", mutated=\\"true\\",resource_request_operation=\\"CREATE\\",resource_kind=\\"Pod\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"Pod creation mutations","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"red","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"red","value":null}]}},"overrides":[]},"gridPos":{"h":8,"w":12,"x":12,"y":40},"id":8,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"false\\",resource_request_operation=\\"CREATE\\",resource_kind=\\"Pod\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"Pod creation rejections","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"blue","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"blue","value":null}]}},"overrides":[]},"gridPos":{"h":8,"w":12,"x":0,"y":48},"id":63,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_total{policy_status=\\"active\\"})","format":"time_series","interval":"","legendFormat":"{{policy_status}}","refId":"A"}],"title":"Policy activations","type":"stat"},{"datasource":null,"description":"Number of policies that evaluated some request","fieldConfig":{"defaults":{"color":{"mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]}},"overrides":[]},"gridPos":{"h":8,"w":12,"x":12,"y":48},"id":46,"options":{"colorMode":"value","graphMode":"area","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["distinctCount"],"fields":"/^policy_name$/","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"kubewarden_policy_evaluations_total{}","format":"table","interval":"","legendFormat":"","refId":"A"}],"title":"Policies evaluated","type":"stat"},{"collapsed":false,"datasource":null,"gridPos":{"h":1,"w":24,"x":0,"y":56},"id":30,"panels":[],"title":"$policy_name policy metrics","type":"row"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"green","mode":"fixed"},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"green","value":null}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":8,"w":8,"x":0,"y":57},"id":54,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"true\\",mutated=\\"false\\", policy_name=\\"$policy_name\\" })*100/sum(kubewarden_policy_evaluations_total{policy_name=\\"$policy_name\\"})","interval":"","legendFormat":"","refId":"A"}],"title":" $policy_name policy accepted request percentage","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"red","mode":"fixed"},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"red","value":null}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":8,"w":8,"x":8,"y":57},"id":56,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"false\\", policy_name=\\"$policy_name\\" })*100/sum(kubewarden_policy_evaluations_total{policy_name=\\"$policy_name\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"$policy_name policy request rejection percentage ","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"purple","mode":"fixed"},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"blue","value":null}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":8,"w":8,"x":16,"y":57},"id":57,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{mutated=\\"true\\", policy_name=\\"$policy_name\\" })*100/sum(kubewarden_policy_evaluations_total{policy_name=\\"$policy_name\\", accepted=\\"true\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"$policy_name policy mutation request percentage","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"green","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"green","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":8,"x":0,"y":65},"id":31,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"true\\",mutated=\\"false\\",policy_name=\\"$policy_name\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"Total accepted requests by $policy_name policy","type":"stat"},{"datasource":null,"description":"","fieldConfig":{"defaults":{"color":{"fixedColor":"red","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"red","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":8,"x":8,"y":65},"id":32,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"false\\",policy_name=\\"$policy_name\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"Total rejected requests by $policy_name policy","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"purple","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"blue","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":8,"x":16,"y":65},"id":33,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{mutated=\\"true\\",policy_name=\\"$policy_name\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"Total mutated requests by $policy_name policy","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"blue","mode":"fixed"},"custom":{"axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":10,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]}},"overrides":[]},"gridPos":{"h":9,"w":24,"x":0,"y":72},"id":34,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom"},"tooltip":{"mode":"single"}},"targets":[{"exemplar":true,"expr":"sum (\\n rate(kubewarden_policy_evaluations_total{policy_name=\\"$policy_name\\"}[$__rate_interval])\\n)","interval":"","legendFormat":"Policy request rate","refId":"A"}],"title":"Rate of requests to $policy_name policy","type":"timeseries"}],"refresh":"30s","schemaVersion":31,"style":"dark","tags":[],"templating":{"list":[{"current":{},"definition":"label_values(kubewarden_policy_evaluations_total{}, policy_name)","description":"Define the policy which you want to see the metrics","hide":0,"includeAll":false,"multi":false,"name":"policy_name","options":[],"query":{"query":"label_values(kubewarden_policy_evaluations_total{}, policy_name)","refId":"StandardVariableQuery"},"refresh":1,"regex":"","skipUrlSync":false,"sort":0,"type":"query"}]},"time":{"from":"now-1h","to":"now"},"timepicker":{},"timezone":"","title":"Kubewarden Policy Server","uid":"kubewarden-dashboard-policyserver","version":3}')}}]); +//# sourceMappingURL=kubewarden-1.6.3.umd.min.policyDashboard1.js.map \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.policyDashboard1.js.map b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.policyDashboard1.js.map new file mode 100644 index 0000000..3041820 --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.policyDashboard1.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"kubewarden-1.6.3.umd.min.policyDashboard1.js","sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.vendors~detail.js b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.vendors~detail.js new file mode 100644 index 0000000..eb8bad9 --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.vendors~detail.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]||[]).push([[10],{"0cb2":function(e,t,a){"use strict";var r=function(){var e=this,t=e._self._c;return t("div",{class:{"side-tabs":!!e.sideTabs,"tabs-only":e.tabsOnly}},[e.hideTabs?e._e():t("ul",{ref:"tablist",staticClass:"tabs",class:{clearfix:!e.sideTabs,vertical:e.sideTabs,horizontal:!e.sideTabs},attrs:{role:"tablist",tabindex:"0","data-testid":"tabbed-block"},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])||"button"in t&&2!==t.button?null:(t.preventDefault(),e.selectNext(1))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button?null:(t.preventDefault(),e.selectNext(-1))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),e.selectNext(1))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),e.selectNext(-1))}]}},[e._l(e.sortedTabs,(function(a){return t("li",{key:a.name,class:{tab:!0,active:a.active,disabled:a.disabled,error:a.error},attrs:{id:a.name,"data-testid":a.name,role:"presentation"}},[t("a",{attrs:{"data-testid":"btn-"+a.name,"aria-controls":"#"+a.name,"aria-selected":a.active,role:"tab"},on:{click:function(t){return t.preventDefault(),e.select(a.name,t)}}},[t("span",[e._v(e._s(a.labelDisplay))]),a.badge?t("span",{staticClass:"tab-badge"},[e._v(e._s(a.badge))]):e._e(),e.hasIcon(a)?t("i",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.t("validation.tab"),expression:"t('validation.tab')"}],staticClass:"conditions-alert-icon icon-error"}):e._e()])])})),e.sideTabs&&!e.sortedTabs.length?t("li",{staticClass:"tab disabled"},[t("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault()}}},[e._v("(None)")])]):e._e(),e.sideTabs&&e.showTabsAddRemove?t("ul",{staticClass:"tab-list-footer"},[t("li",[t("button",{staticClass:"btn bg-transparent",attrs:{type:"button"},on:{click:e.tabAddClicked}},[t("i",{staticClass:"icon icon-plus"})]),t("button",{staticClass:"btn bg-transparent",attrs:{type:"button",disabled:!e.sortedTabs.length},on:{click:e.tabRemoveClicked}},[t("i",{staticClass:"icon icon-minus"})])])]):e._e(),e._t("tab-row-extras")],2),t("div",{class:{"tab-container":!!e.tabs.length||!!e.sideTabs,"no-content":e.noContent,"tab-container--flat":!!e.flat}},[e._t("default")],2)])},s=[],n=a("a1d8"),i=a.n(n),o=a("330a"),l=a.n(o),d=a("bddd"),c=a("1d19"),u=a("1659"),h=a.n(u),p={name:"Tabbed",props:{defaultTab:{type:String,default:null},sideTabs:{type:Boolean,default:!1},hideSingleTab:{type:Boolean,default:!1},showTabsAddRemove:{type:Boolean,default:!1},scrollOnChange:{type:Boolean,default:!1},useHash:{type:Boolean,default:!0},noContent:{type:Boolean,default:!1},flat:{type:Boolean,default:!1},tabsOnly:{type:Boolean,default:!1}},provide(){const e=this.tabs;return{sideTabs:this.sideTabs,addTab(t){const a=Object(d["e"])(e,"name",t.name);a&&Object(d["i"])(e,a),Object(d["a"])(e,t)},removeTab(t){Object(d["i"])(e,t)}}},data(){return{tabs:[],activeTabName:null}},computed:{sortedTabs(){return Object(c["a"])(this.tabs,["weight:desc","labelDisplay","name"])},hideTabs(){return this.hideSingleTab&&1===this.sortedTabs.length}},watch:{sortedTabs(e){const{defaultTab:t,useHash:a}=this,r=e.find(e=>e.active),s=a?this.$route.hash:void 0,n=a?s.slice(1):void 0,o=e.find(e=>e.name===n&&!e.active),d=i()(e)||null;l()(r)?a&&!l()(o)?this.select(o.name):l()(t)||l()(e.find(e=>e.name===t))?null!==d&&void 0!==d&&d.name&&this.select(d.name):this.select(t):a&&(null===r||void 0===r?void 0:r.name)===n&&this.select(r.name)}},mounted(){this.useHash&&window.addEventListener("hashchange",this.hashChange)},unmounted(){this.useHash&&window.removeEventListener("hashchange",this.hashChange)},methods:{hasIcon(e){return e.displayAlertIcon||e.error&&!e.active},hashChange(){if(!this.scrollOnChange){const e=document.getElementsByTagName("main")[0];e&&(e.scrollTop=0)}this.select(this.$route.hash)},find(e){return this.sortedTabs.find(t=>t.name===e)},select(e){const{sortedTabs:t}=this,a=this.find(e),r="#"+e;if(a&&!a.disabled){if(this.useHash){const{$route:{hash:e},$router:{currentRoute:t}}=this;if(this.useHash&&e!==r){const e={...t};e.hash=r,this.$router.replace(e)}}for(const e of t)e.active=e.name===a.name;this.$emit("changed",{tab:a,selectedName:a.name}),this.activeTabName=a.name}},selectNext(e){const{sortedTabs:t}=this,a=t.findIndex(e=>e.active),r=n(a,e,t.length),s=t[r].name;function n(e,t,a){const r=e+t;return r>=a?0:r<=0?a-1:r}this.select(s),this.$nextTick(()=>{this.$refs.tablist.focus()})},tabAddClicked(){const e=h()(this.tabs,e=>e.active);this.$emit("addTab",e)},tabRemoveClicked(){const e=h()(this.tabs,e=>e.active);this.$emit("removeTab",e)}}},f=p,b=(a("63be"),a("d802")),m=Object(b["a"])(f,r,s,!1,null,"2a058e46",null);t["a"]=m.exports},1644:function(e,t,a){var r=a("5eaa");t=r(!1),t.push([e.i,".tabs[data-v-2a058e46]{list-style-type:none;margin:0;padding:0}.tabs.horizontal[data-v-2a058e46]{border:solid thin var(--border);border-bottom:0;display:flex;flex-direction:row}.tabs.horizontal+.tab-container[data-v-2a058e46]{border:solid thin var(--border)}.tabs.horizontal .tab.active[data-v-2a058e46]{border-bottom:solid 2px var(--primary)}.tabs[data-v-2a058e46]:focus{outline:none}.tabs:focus .tab.active a span[data-v-2a058e46]{text-decoration:underline}.tabs .tab[data-v-2a058e46]{position:relative;float:left;padding:0 8px 0 0;cursor:pointer}.tabs .tab A[data-v-2a058e46]{display:flex;align-items:center;padding:10px 15px}.tabs .tab A[data-v-2a058e46]:hover{text-decoration:none}.tabs .tab A:hover span[data-v-2a058e46]{text-decoration:underline}.tabs .tab .conditions-alert-icon[data-v-2a058e46]{color:var(--error);padding-left:4px}.tabs .tab[data-v-2a058e46]:last-child{padding-right:0}.tabs .tab.active>A[data-v-2a058e46]{color:var(--primary);text-decoration:none}.tabs .tab.error A>i[data-v-2a058e46]{color:var(--error)}.tabs .tab .tab-badge[data-v-2a058e46]{margin-left:5px;background-color:var(--link);color:#fff;border-radius:6px;padding:1px 7px;font-size:11px}.tab-container[data-v-2a058e46]{padding:20px}.tab-container.no-content[data-v-2a058e46]{padding:0 0 3px 0}.tab-container--flat[data-v-2a058e46]{padding:0}.tab-container--flat .side-tabs[data-v-2a058e46]{box-shadow:unset}.tabs-only[data-v-2a058e46]{margin-bottom:20px}.tabs-only .tab-container[data-v-2a058e46]{display:none}.tabs-only .tabs[data-v-2a058e46]{border:0;border-bottom:2px solid var(--border)}.side-tabs[data-v-2a058e46]{display:flex;box-shadow:0 0 20px var(--shadow);border-radius:calc(var(--border-radius)*2);background-color:var(--tabbed-sidebar-bg)}.side-tabs .tab-container[data-v-2a058e46]{padding:20px}.side-tabs .tabs[data-v-2a058e46]{width:200px;min-width:200px;display:flex;flex:1 0;flex-direction:column}.side-tabs .tabs .tab[data-v-2a058e46]{width:100%;border-left:5px solid transparent}.side-tabs .tabs .tab.toggle A[data-v-2a058e46],.side-tabs .tabs .tab A[data-v-2a058e46]{color:var(--primary)}.side-tabs .tabs .tab.active[data-v-2a058e46]{background-color:var(--body-bg);border-left:solid 5px var(--primary)}.side-tabs .tabs .tab.active A[data-v-2a058e46]{color:var(--input-label)}.side-tabs .tabs .tab.disabled[data-v-2a058e46]{background-color:var(--disabled-bg)}.side-tabs .tabs .tab.disabled A[data-v-2a058e46]{color:var(--disabled-text);text-decoration:none}.side-tabs .tabs .tab-list-footer[data-v-2a058e46]{list-style:none;padding:0;margin-top:auto}.side-tabs .tabs .tab-list-footer li[data-v-2a058e46]{display:flex;flex:1}.side-tabs .tabs .tab-list-footer li .btn[data-v-2a058e46]{flex:1 1;display:flex;justify-content:center}.side-tabs .tabs .tab-list-footer li button[data-v-2a058e46]:first-of-type{border-top:solid 1px var(--border);border-right:solid 1px var(--border);border-top-right-radius:0}.side-tabs .tabs .tab-list-footer li button[data-v-2a058e46]:last-of-type{border-top:solid 1px var(--border);border-top-left-radius:0}.side-tabs .tab-container[data-v-2a058e46]{width:calc(100% - 200px);flex-grow:1;background-color:var(--body-bg)}",""]),e.exports=t},1645:function(e,t,a){"use strict";a("1b16")},1659:function(e,t,a){var r=a("0ee5"),s=a("4b7a"),n=a("9b66"),i=Math.max;function o(e,t,a){var o=null==e?0:e.length;if(!o)return-1;var l=null==a?0:n(a);return l<0&&(l=i(o+l,0)),r(e,s(t,3),l)}e.exports=o},"1b16":function(e,t,a){var r=a("1cfd");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var s=a("0ed3").default;s("30fa9d8c",r,!0,{sourceMap:!1,shadowMode:!1})},"1bf1":function(e,t,a){var r=a("96ab");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var s=a("0ed3").default;s("d7b84d86",r,!0,{sourceMap:!1,shadowMode:!1})},"1ce3":function(e,t,a){"use strict";a("f9f6")},"1cfd":function(e,t,a){var r=a("5eaa");t=r(!1),t.push([e.i,".zero circle{stroke:var(--gauge-zero)}.count-gauge{padding:10px;position:relative;display:flex;flex-direction:row;align-items:center}.count-gauge.clickable{cursor:pointer}.count-gauge .data{display:flex;flex-direction:column;flex:1}.count-gauge .data label{opacity:.7}.count-gauge .graphical{width:40px;height:40px;margin-right:10px}.count-gauge h1{font-size:40px;line-height:36px;padding-bottom:5px;margin-bottom:0}@media only screen and (min-width:768px){.count-gauge h1{font-size:40px;line-height:36px}}.count-gauge .alerts{position:absolute;right:10px;top:5px;font-size:15px}.count-gauge .alerts .text-error{margin-left:5px}",""]),e.exports=t},"25a4":function(e,t,a){"use strict";a("8356")},"2da7":function(e,t,a){var r=a("dd50");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var s=a("0ed3").default;s("29fc7960",r,!0,{sourceMap:!1,shadowMode:!1})},"305c":function(e,t,a){"use strict";var r=a("da25"),s=a("8bbf"),n=a.n(s),i=a("cd6d");t["a"]=n.a.extend({...i["a"],props:{mode:{type:String,default:r["v"]},realMode:{type:String,default:r["v"]},as:{type:String,default:r["D"]},value:{type:Object,required:!0},initialValue:{type:Object,default:null},liveValue:{type:Object,default:null},doneEvent:{type:Boolean,default:!1}}})},"37ef":function(e,t,a){var r=a("7f2b"),s=r("round");e.exports=s},"476f":function(e,t,a){var r=a("1644");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var s=a("0ed3").default;s("776228d3",r,!0,{sourceMap:!1,shadowMode:!1})},"4b7e":function(e,t,a){var r=a("d0e7");function s(e,t,a,s){var n=e.length,i=s?n:-1;while((s?i--:++i0?t("GraphCircle",{attrs:{"primary-stroke-color":`rgba(var(${e.primaryColorVar}))`,"secondary-stroke-color":"rgb(var(--resource-gauge-back-circle))",percentage:e.percentage}}):e._e(),0===e.percentage?t("GraphCircle",{staticClass:"zero",attrs:{"primary-stroke-color":`rgba(var(${e.primaryColorVar}))`,"secondary-stroke-color":"rgb(var(--resource-gauge-back-circle))",percentage:100}}):e._e()],1):e._e(),t("div",{staticClass:"data"},[t("h1",[e._v(e._s(e.useful))]),t("label",[e._v(e._s(e.name))]),e.showAlerts?t("div",{staticClass:"alerts"},[t("span",{staticClass:"text-warning"},[t("i",{staticClass:"icon icon-warning"}),t("span",{staticClass:"count"},[e._v(e._s(e.warningCount))])]),t("span",{staticClass:"text-error"},[t("i",{staticClass:"icon icon-error"}),t("span",{staticClass:"count"},[e._v(e._s(e.errorCount))])])]):e._e()])])},s=[],n=function(){var e=this,t=e._self._c;return t("svg",{staticClass:"circle",attrs:{width:"100%",height:"100%",viewBox:e.viewBox}},[t("g",{attrs:{transform:e.transform}},[t("defs",[t("linearGradient",{attrs:{id:e.primaryStrokeColorId,x1:"0%",y1:"0%",x2:"100%",y2:"0%"}},[t("stop",{attrs:{offset:"50%","stop-color":e.primaryStrokeGradientColor||e.primaryStrokeColor}}),t("stop",{attrs:{offset:"100%","stop-color":e.primaryStrokeColor}})],1),t("linearGradient",{attrs:{id:e.secondaryStrokeColorId,x1:"0%",y1:"0%",x2:"100%",y2:"0%"}},[t("stop",{attrs:{offset:"50%","stop-color":e.secondaryStrokeGradientColor||e.secondaryStrokeColor}}),t("stop",{attrs:{offset:"100%","stop-color":e.secondaryStrokeColor}})],1)],1),t("circle",{attrs:{r:e.radius,cy:e.center,cx:e.center,"stroke-width":e.strokeWidth,stroke:`url(#${e.secondaryStrokeColorId})`,fill:"none"}}),t("circle",{attrs:{r:e.radius,cy:e.center,cx:e.center,"stroke-width":e.strokeWidth,stroke:`url(#${e.primaryStrokeColorId})`,"stroke-dasharray":e.circumference,"stroke-dashoffset":e.circumference*(1-e.percentage),fill:"none"}})]),e.showText?t("text",{staticStyle:{"font-size":"25","dominant-baseline":"middle","text-anchor":"middle"},attrs:{x:e.center,y:e.center,fill:`url(#${e.primaryStrokeColorId})`}},[e._v(" "+e._s(e.parsePercentage)+"% ")]):e._e()])},i=[];let o=0;var l={props:{percentage:{type:Number,default:.75},strokeWidth:{type:Number,default:22},primaryStrokeColor:{type:String,required:!0},primaryStrokeGradientColor:{type:String,default:null},secondaryStrokeColor:{type:String,required:!0},secondaryStrokeGradientColor:{type:String,default:null},rotate:{type:Number,default:90},showText:{type:Boolean,default:!1}},data(){return{id:o++}},computed:{viewportSize(){return 100},radius(){const e=this.viewportSize/2,t=this.strokeWidth/2;return e-t},center(){return this.viewportSize/2},viewBox(){return`0 0 ${this.viewportSize} ${this.viewportSize}`},circumference(){return 2*Math.PI*this.radius},transform(){return`rotate(${this.rotate}, ${this.center}, ${this.center})`},strokeDasharray(){return this.circumference},strokeDashoffset(){return this.circumference*(1-this.percentage)},primaryStrokeColorId(){return"primary-"+o},secondaryStrokeColorId(){return"secondary-"+o},parsePercentage(){return parseInt(100*this.percentage)||0}}},d=l,c=(a("a357"),a("d802")),u=Object(c["a"])(d,n,i,!1,null,"5f78e642",null),h=u.exports,p=function(){var e=this,t=e._self._c;return t("div",{staticClass:"gradient-box",class:{"show-tab":e.showTab,plain:e.plain},style:e.style},[e._t("default")],2)},f=[],b={props:{primaryColorVar:{type:String,default:null},showTab:{type:Boolean,default:!0},showSolid:{type:Boolean,default:!1},backgroundOpacityAdjustment:{type:Number,default:1},plain:{type:Boolean,default:!1}},computed:{leftColor(){return this.showSolid?this.primaryColor:this.customizePrimaryColorOpacity(.25*this.backgroundOpacityAdjustment)},rightColor(){return this.showSolid?this.primaryColor:this.customizePrimaryColorOpacity(.125*this.backgroundOpacityAdjustment)},primaryColor(){return this.customizePrimaryColorOpacity(1)},style(){if(!this.plain){const e=`background: transparent linear-gradient(94deg, ${this.leftColor} 0%, ${this.rightColor} 100%) 0% 0% no-repeat padding-box;`,t=this.showBorder?`border: 1px solid ${this.primaryColor};`:"",a=this.showTab?`border-left: 9px solid ${this.primaryColor};`:"";return`${e}${t}${a}`}return""}},methods:{customizePrimaryColorOpacity(e){return`rgba(var(${this.primaryColorVar}), ${e})`}}},m=b,v=(a("9e9f"),a("25a4"),Object(c["a"])(m,p,f,!1,null,"42940dc4",null)),g=v.exports,y={components:{GradientBox:g,GraphCircle:h},props:{name:{type:String,required:!0},total:{type:Number,required:!0},useful:{type:Number,required:!0},primaryColorVar:{type:String,default:null},warningCount:{type:Number,default:0},errorCount:{type:Number,default:0},location:{type:Object,default:null},plain:{type:Boolean,default:!1},graphical:{type:Boolean,default:!0}},computed:{percentage(){return 0===this.total?0:this.useful/this.total},clickable(){return!!this.location},showAlerts(){const e=this.warningCount+this.errorCount;return e>0}},methods:{visitLocation(){this.clickable&&this.$router.push(this.location)}}},x=y,w=(a("1645"),Object(c["a"])(x,r,s,!1,null,null,null));t["a"]=w.exports},"7d6c":function(e,t,a){var r=a("9ef5"),s=1/0,n=17976931348623157e292;function i(e){if(!e)return 0===e?e:0;if(e=r(e),e===s||e===-s){var t=e<0?-1:1;return t*n}return e===e?e:0}e.exports=i},"7d99":function(e,t,a){var r=a("4b7a"),s=a("4b7e");function n(e,t){return e&&e.length?s(e,r(t,3),!0):[]}e.exports=n},"7f2b":function(e,t,a){var r=a("201b"),s=a("9b66"),n=a("9ef5"),i=a("770e"),o=r.isFinite,l=Math.min;function d(e){var t=Math[e];return function(e,a){if(e=n(e),a=null==a?0:l(s(a),292),a&&o(e)){var r=(i(e)+"e").split("e"),d=t(r[0]+"e"+(+r[1]+a));return r=(i(d)+"e").split("e"),+(r[0]+"e"+(+r[1]-a))}return t(e)}}e.exports=d},8356:function(e,t,a){var r=a("db3f");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var s=a("0ed3").default;s("1fc9ca71",r,!0,{sourceMap:!1,shadowMode:!1})},"898f":function(e,t,a){var r=a("5eaa");t=r(!1),t.push([e.i,".dashboard-metrics[data-v-1e72d538] .external-link{position:absolute;left:200px;top:-45px}.dashboard-metrics[data-v-1e72d538] .frame{top:0}.dashboard-metrics.external-link-pull-left[data-v-1e72d538] .external-link{position:absolute;left:10px;top:-47px}",""]),e.exports=t},9648:function(e,t,a){var r=a("898f");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var s=a("0ed3").default;s("37c375f2",r,!0,{sourceMap:!1,shadowMode:!1})},"96ab":function(e,t,a){var r=a("5eaa");t=r(!1),t.push([e.i,".gradient-box{border-radius:5px}",""]),e.exports=t},"9b66":function(e,t,a){var r=a("7d6c");function s(e){var t=r(e),a=t%1;return t===t?a?t-a:t:0}e.exports=s},"9e9f":function(e,t,a){"use strict";a("1bf1")},a1d8:function(e,t){function a(e){return e&&e.length?e[0]:void 0}e.exports=a},a357:function(e,t,a){"use strict";a("6fc4")},b45b:function(e,t,a){"use strict";a.d(t,"a",(function(){return o})),a.d(t,"b",(function(){return l}));var r=a("f390"),s=a("4048");a("907c");const n=["100.2.0+up40.1.2","102.0.0+up40.1.2"];function i(e,t){return n.includes(e)?"/k8s/clusters/"+t:"local"===t?"":"/k8s/clusters/"+t}function o(e,t,a,r,n=!0){const o=Object(s["c"])(t);let l=n?`${i(e,a)}${o.path}`:o.path;return o.query.viewPanel&&(l=Object(s["a"])(l,"viewPanel",o.query.viewPanel)),l=Object(s["a"])(l,"orgId",o.query.orgId),l=Object(s["a"])(l,"kiosk",null),Object.entries(r).forEach(e=>{l=Object(s["a"])(l,e[0],e[1])}),l}async function l(e,t,a,n,o="cluster",l=null){if(!Object(r["b"])(t.getters))return!1;const d=Object(s["c"])(n);let c=i(e,a)+"/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-grafana:80/proxy/",u="http:rancher-monitoring-grafana:80/proxy/";l&&(c=`${i(e,a)}/api/v1/namespaces/cattle-project-${l}-monitoring/services/http:cattle-project-${l}-monitoring-grafana:80/proxy/`,u=`http:cattle-project-${l}-monitoring-grafana:80/proxy/`);const h=d.path.split(u)[1],p=h.split("/")[1],f=`${c}api/dashboards/uid/${p}`;try{return await t.dispatch(o+"/request",{url:f,redirectUnauthorized:!1}),!0}catch(b){return!1}}},be6d:function(e,t,a){!function(t,a){e.exports=a()}(0,(function(){"use strict";return function(e,t,a){e=e||{};var r=t.prototype,s={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};a.en.relativeTime=s;var n=function(t,r,n,i){for(var o,l,d,c=n.$locale().relativeTime||s,u=e.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],h=u.length,p=0;p0,b<=f.r||!f.r){b<=1&&p>0&&(f=u[p-1]);var m=c[f.l];l="string"==typeof m?m.replace("%d",b):m(b,r,f.l,d);break}}return r?l:(d?c.future:c.past).replace("%s",l)};r.to=function(e,t){return n(e,t,this,!0)},r.from=function(e,t){return n(e,t,this)};var i=function(e){return e.$u?a.utc():a()};r.toNow=function(e){return this.to(i(this),e)},r.fromNow=function(e){return this.from(i(this),e)}}}))},c389:function(e,t,a){"use strict";var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"dashboard-metrics",class:!e.hasSummaryAndDetail&&"external-link-pull-left"},[t("div",{staticClass:"graph-options mb-10"},[t("DashboardOptions",{attrs:{"has-summary-and-detail":e.hasSummaryAndDetail},model:{value:e.graphOptions,callback:function(t){e.graphOptions=t},expression:"graphOptions"}})],1),t("div",{staticClass:"info"},[e._t("default")],2),t("div",{staticClass:"graphs",style:{height:e.graphHeight}},["detail"===e.graphOptions.type?t("GrafanaDashboard",{key:"'detail'",staticClass:"col span-12 detail",attrs:{"background-color":e.graphBackgroundColor,theme:e.theme,"refresh-rate":e.graphOptions.refreshRate,range:e.graphOptions.range,url:e.detailUrl,vars:e.vars,"modify-prefix":e.modifyPrefix}}):t("GrafanaDashboard",{key:"'summary'",staticClass:"col span-12 summary",attrs:{"background-color":e.graphBackgroundColor,theme:e.theme,"refresh-rate":e.graphOptions.refreshRate,range:e.graphOptions.range,url:e.summaryUrl,vars:e.vars,"modify-prefix":e.modifyPrefix}})],1)])},s=[],n=function(){var e=this,t=e._self._c;return t("div",{staticClass:"graph-options"},[e.hasSummaryAndDetail?t("div",[t("ButtonGroup",{attrs:{options:e.detailSummaryOptions},model:{value:e.value.type,callback:function(t){e.$set(e.value,"type",t)},expression:"value.type"}})],1):t("div",[t("div")]),t("div",{staticClass:"range-refresh"},[t("LabeledSelect",{attrs:{options:e.rangeOptions,label:e.t("graphOptions.range")},model:{value:e.value.range,callback:function(t){e.$set(e.value,"range",t)},expression:"value.range"}}),t("LabeledSelect",{attrs:{options:e.refreshOptions,label:e.t("graphOptions.refresh")},model:{value:e.value.refreshRate,callback:function(t){e.$set(e.value,"refreshRate",t)},expression:"value.refreshRate"}})],1)])},i=[],o=a("cc2d"),l=a("466b"),d={components:{ButtonGroup:o["a"],LabeledSelect:l["a"]},props:{value:{type:Object,required:!0},hasSummaryAndDetail:{type:Boolean,default:!0}},data(){return{range:null,rangeOptions:[{label:this.t("generic.units.time.5m"),value:"5m"},{label:this.t("generic.units.time.1h"),value:"1h"},{label:this.t("generic.units.time.6h"),value:"6h"},{label:this.t("generic.units.time.1d"),value:"1d"},{label:this.t("generic.units.time.7d"),value:"7d"},{label:this.t("generic.units.time.30d"),value:"30d"}],refreshOptions:[{label:this.t("generic.units.time.5s"),value:"5s"},{label:this.t("generic.units.time.10s"),value:"10s"},{label:this.t("generic.units.time.30s"),value:"30s"},{label:this.t("generic.units.time.1m"),value:"1m"},{label:this.t("generic.units.time.5m"),value:"5m"},{label:this.t("generic.units.time.15m"),value:"15m"},{label:this.t("generic.units.time.30m"),value:"30m"},{label:this.t("generic.units.time.1h"),value:"1h"},{label:this.t("generic.units.time.2h"),value:"2h"},{label:this.t("generic.units.time.1d"),value:"1d"}],detailSummaryOptions:[{label:this.t("graphOptions.detail"),value:"detail"},{label:this.t("graphOptions.summary"),value:"summary"}]}}},c=d,u=(a("1ce3"),a("d802")),h=Object(u["a"])(c,n,i,!1,null,"b7bcaa58",null),p=h.exports,f=function(){var e=this,t=e._self._c;return t("div",{staticClass:"grafana-graph"},[e.error?t("Banner",{staticStyle:{"z-index":"1000"},attrs:{color:"error"}},[t("div",{staticClass:"text-center"},[e._v(" "+e._s(e.t("grafanaDashboard.failedToLoad"))+" "),t("a",{attrs:{href:"#"},on:{click:e.reload}},[e._v(e._s(e.t("grafanaDashboard.reload")))])])]):e._e(),t("iframe",{directives:[{name:"show",rawName:"v-show",value:!e.error,expression:"!error"}],ref:"frame",class:{loading:e.loading,frame:!0},attrs:{src:e.currentUrl,frameborder:"0",scrolling:"no"}}),e.loading?t("div",[t("Loading")],1):e._e(),e.loading||e.error?e._e():t("div",{staticClass:"external-link"},[t("a",{attrs:{href:e.grafanaUrl,target:"_blank",rel:"noopener nofollow"}},[e._v(e._s(e.t("grafanaDashboard.grafana"))+" "),t("i",{staticClass:"icon icon-external-link"})])])],1)},b=[],m=a("15ca"),v=a("6418"),g=a("b45b"),y=a("907c"),x={components:{Banner:v["a"],Loading:m["a"]},props:{url:{type:String,required:!0},vars:{type:Object,default:()=>({})},range:{type:String,default:null},refreshRate:{type:String,default:null},modifyPrefix:{type:Boolean,default:!0},backgroundColor:{type:String,default:"#1b1c21"},theme:{type:String,default:"dark"}},async fetch(){const e=this.$store.getters["currentProduct"].inStore;if(this.$store.getters[e+"/canList"](y["a"].APP))try{const t=await this.$store.dispatch(e+"/find",{type:y["a"].APP,id:"cattle-monitoring-system/rancher-monitoring"});this.monitoringVersion=null===t||void 0===t?void 0:t.currentVersion}catch(t){}},data(){return{loading:!1,error:!1,interval:null,errorTimer:null,monitoringVersion:""}},computed:{currentUrl(){return this.computeUrl()},grafanaUrl(){return this.currentUrl.replace("&kiosk","")},graphWindow(){var e;return null===(e=this.$refs.frame)||void 0===e?void 0:e.contentWindow},graphHistory(){var e;return null===(e=this.graphWindow)||void 0===e?void 0:e.history},graphDocument(){var e;return null===(e=this.graphWindow)||void 0===e?void 0:e.document}},watch:{currentUrl(e){var t;this.graphHistory&&null!==(t=this.graphWindow)&&void 0!==t&&t.angular&&this.graphWindow.location.replace(e)},error(e){e?this.errorTimer=setInterval(()=>{this.reload()},45e3):(clearInterval(this.errorTimer),this.errorTimer=null)}},mounted(){this.$refs.frame.onload=this.inject,this.poll()},beforeDestroy(){this.interval&&clearInterval(this.interval),this.errorTimer&&clearInterval(this.errorTimer)},methods:{poll(){this.interval&&(clearInterval(this.interval),this.interval=null),this.interval=setInterval(()=>{try{var e;const t=null===(e=this.$refs.frame)||void 0===e?void 0:e.contentWindow,a=t.document.getElementsByClassName("alert-error"),r=t.document.getElementsByClassName("panel-info-corner--error"),s=t.document.getElementsByClassName("panel-in-fullscreen"),n=t.document.getElementsByClassName("panel-container"),i=a.length>0||r.length>0,o=s.length>0||n.length>0,l=t.document.getElementsByTagName("pre"),d=l.length>0?l[0].innerText:"",c=d.includes('"status": "Failure"');if(i)throw new Error("An error was detected in the iframe");this.$set(this,"loading",!o),this.$set(this,"error",c)}catch(t){this.$set(this,"error",!0),this.$set(this,"loading",!1),clearInterval(this.interval),this.interval=null}},100)},computeFromTo(){return{from:"now-"+this.range,to:"now"}},computeUrl(){const e=this.url,t=this.$store.getters["currentCluster"].id,a=this.computeParams();return Object(g["a"])(this.monitoringVersion,e,t,a,this.modifyPrefix)},computeParams(){const e={},t=this.computeFromTo();return t.from&&(e.from=t.from),t.to&&(e.to=t.to),this.refreshRate&&(e.refresh=this.refreshRate),Object.keys(this.vars).length>0&&Object.entries(this.vars).forEach(t=>{const a="var-"+t[0];e[a]=t[1]}),e.theme=this.theme,e},reload(e){e&&e.preventDefault(),this.$refs.frame.contentWindow.location.reload(),this.poll()},injectCss(){var e;const t=document.createElement("style");t.innerHTML=`\n body .grafana-app .dashboard-content {\n background: ${this.backgroundColor};\n padding: 0;\n }\n\n body .grafana-app .layout {\n background: ${this.backgroundColor};\n }\n\n\n body .grafana-app .dashboard-content .panel-container {\n background-color: initial;\n border: none;\n }\n\n body .grafana-app .dashboard-content .panel-wrapper {\n height: 100%;\n }\n\n body .grafana-app .panel-menu-container {\n display: none;\n }\n\n body .grafana-app .panel-title {\n cursor: default;\n }\n\n body .grafana-app .panel-title .panel-title-text div {\n display: none;\n }\n `;const a=null===(e=this.$refs.frame)||void 0===e?void 0:e.contentWindow,r=null===a||void 0===a?void 0:a.document;r.head&&r.head.appendChild(t)},inject(){this.injectCss()}}},w=x,k=(a("f772"),Object(u["a"])(w,f,b,!1,null,"eeaaabda",null)),$=k.exports,C=a("9ce4"),T={components:{DashboardOptions:p,GrafanaDashboard:$},props:{detailUrl:{type:String,required:!0},summaryUrl:{type:String,default:""},vars:{type:Object,default:()=>({})},graphHeight:{type:String,required:!0},hasSummaryAndDetail:{type:Boolean,default:!0},modifyPrefix:{type:Boolean,default:!0}},data(){return{graphOptions:{range:"5m",refreshRate:"30s",type:"detail"}}},computed:{...Object(C["a"])(["prefs/theme"]),graphBackgroundColor(){return"dark"===this.theme?"#2e3035":"#f3f4f9"},theme(){return this["prefs/theme"]}}},_=T,S=(a("ec0b"),Object(u["a"])(_,r,s,!1,null,"1e72d538",null));t["a"]=S.exports},c422:function(e,t,a){"use strict";var r=function(){var e=this,t=e._self._c;return t("Tabbed",e._b({attrs:{"default-tab":e.defaultTab},on:{changed:e.tabChange}},"Tabbed",e.$attrs,!1),[e._t("default"),e.showConditions?t("Tab",{attrs:{"label-key":"resourceTabs.conditions.tab",name:"conditions",weight:-1,"display-alert-icon":e.conditionsHaveIssues}},[t("Conditions",{attrs:{value:e.value}})],1):e._e(),e.showEvents?t("Tab",{attrs:{"label-key":"resourceTabs.events.tab",name:"events",weight:-2}},["events"===e.selectedTab?t("SortableTable",{attrs:{rows:e.events,headers:e.eventHeaders,"key-field":"id",search:!1,"table-actions":!1,"row-actions":!1,"default-sort-by":"date"}}):e._e()],1):e._e(),e.showRelated?t("Tab",{attrs:{name:"related","label-key":"resourceTabs.related.tab",weight:-3}},[t("h3",{directives:[{name:"t",rawName:"v-t",value:"resourceTabs.related.from",expression:"'resourceTabs.related.from'"}]}),t("RelatedResources",{attrs:{"ignore-types":[e.value.type],value:e.value,direction:"from"}}),t("h3",{directives:[{name:"t",rawName:"v-t",value:"resourceTabs.related.to",expression:"'resourceTabs.related.to'"}],staticClass:"mt-20"}),t("RelatedResources",{attrs:{"ignore-types":[e.value.type],value:e.value,direction:"to"}})],1):e._e(),e._l(e.extensionTabs,(function(a,r){return t("Tab",{key:`${a.name}${r}`,attrs:{name:a.name,label:a.label,"label-key":a.labelKey,weight:a.weight,tooltip:a.tooltip,"show-header":a.showHeader,"display-alert-icon":a.displayAlertIcon,error:a.error,badge:a.badge}},[t(a.component,{tag:"component",attrs:{resource:e.value}})],1)}))],2)},s=[],n=a("0cb2"),i=a("38de"),o=a("305c"),l=function(){var e=this,t=e._self._c;return t("SortableTable",{attrs:{headers:e.headers,rows:e.rows,"key-field":"condition","default-sort-by":"condition","table-actions":!1,"row-actions":!1,search:!1},scopedSlots:e._u([{key:"cell:condition",fn:function({row:a}){return[t("span",{class:{"text-error":a.error}},[e._v(e._s(a.condition))])]}},{key:"cell:status",fn:function({row:a}){return[t("span",{class:{"text-error":a.error}},[e._v(e._s(a.status))])]}}])})},d=[],c=a("0fb1"),u={components:{SortableTable:c["b"]},props:{value:{type:Object,default:()=>({})}},computed:{headers(){return[{name:"condition",labelKey:"tableHeaders.condition",value:"condition",width:150,sort:"condition",dashIfEmpty:!0},{name:"status",labelKey:"tableHeaders.status",value:"status",width:75,sort:"status",dashIfEmpty:!0},{name:"time",labelKey:"tableHeaders.updated",value:"time",sort:"time",formatter:"LiveDate",formatterOpts:{addSuffix:!0},width:125,dashIfEmpty:!0},{name:"message",labelKey:"tableHeaders.message",value:"message",sort:["message"],dashIfEmpty:!0}]},rows(){var e;return((null===(e=this.value.status)||void 0===e?void 0:e.conditions)||[]).map(e=>{let t=e.message||"";return e.reason&&(t=`[${e.reason}] ${t}`.trim()),{condition:e.type||"Unknown",status:e.status||"Unknown",error:e.error,time:e.lastProbeTime||e.lastUpdateTime||e.lastTransitionTime,message:t}})}}},h=u,p=a("d802"),f=Object(p["a"])(h,l,d,!1,null,null,null),b=f.exports,m=a("907c"),v=a("da25"),g=function(){var e=this,t=e._self._c;return t("ResourceTable",{attrs:{schema:null,rows:e.rows,headers:e.headers,search:!1,"table-actions":!1,namespaced:!0,"mangle-action-resources":e.getRealResources,"paging-label":"sortableTable.paging.generic",groupable:!1},scopedSlots:e._u([{key:"cell:state",fn:function({row:e}){return[e.real?t("BadgeState",{attrs:{value:e.real}}):t("BadgeState",{attrs:{value:e}})]}}])})},y=[],x=a("126f"),w=a("9c09"),k=a("462f"),$=a("1d19"),C=a("bcb3"),T=a("f17a"),_={components:{ResourceTable:x["a"],BadgeState:T["a"]},props:{value:{type:Object,required:!0},rel:{type:String,default:null},direction:{type:String,default:"to"},ignoreTypes:{type:Array,default:()=>[]}},data(){return{loadedResources:1}},computed:{filteredRelationships(){var e;let t=(null===(e=this.value)||void 0===e||null===(e=e.metadata)||void 0===e?void 0:e.relationships)||[];return t=t.filter(e=>{const t=e[this.direction+"Type"];return!(!t||this.ignoreTypes.includes(t))&&(!this.rel||e.rel===this.rel)}),t},rows(){if(this.loadedResources<1)return;const e=this.$store.getters["clusterId"],t=this.$store.getters["currentStore"](),a=[];for(const r of this.filteredRelationships){const s=r.state||"active",n=Object(w["c"])(s,r.error,r.transitioning),i=r[this.direction+"Type"],o=this.$store.getters[t+"/schemaFor"](i);let l=r[this.direction+"Id"];if(!l)continue;let d=null;const c=l.indexOf("/"),u=`${i}/${d}/${l}`;c>0&&(d=l.substr(0,c),l=l.substr(c+1));const h={name:`c-cluster-product-resource${d?"-namespace":""}-id`,params:{product:C["a"],cluster:"management"===t?"local":e,resource:i,namespace:d,id:l}};a.push({type:i,real:this.$store.getters[t+"/byId"](i,r[this.direction+"Id"]),id:r[this.direction+"Id"],state:s,metadata:{namespace:d,name:l},_key:u,name:l,namespace:d,nameDisplay:l,nameSort:Object($["b"])(l).toLowerCase(),stateColor:n,detailLocation:h,typeDisplay:this.$store.getters["type-map/labelFor"](o),stateDisplay:Object(w["g"])(s),stateBackground:n.replace("text-","bg-"),groupByLabel:d})}return a},headers(){return[k["H"],k["M"],k["s"],k["t"]]}},methods:{async getRealResources(e){const t=this.$store.getters["currentStore"](),a=await Promise.allSettled(e.map(e=>this.$store.dispatch(t+"/find",{type:e.type,id:e.id}))),r=[];for(let s=0;s({})},mode:{type:String,default:v["C"]},defaultTab:{type:String,default:null},needConditions:{type:Boolean,default:!0},needEvents:{type:Boolean,default:!0},needRelated:{type:Boolean,default:!0},extensionParams:{type:Object,default:null}},data(){const e=this.$store.getters["currentStore"](m["f"]);return{hasEvents:this.$store.getters[e+"/schemaFor"](m["f"]),allEvents:[],selectedTab:this.defaultTab,didLoadEvents:!1,extensionTabs:Object(B["a"])(this,M["c"].TAB,M["e"].RESOURCE_DETAIL,this.$route,this,this.extensionParams)}},beforeDestroy(){this.$store.dispatch("cluster/forgetType",m["f"])},computed:{showConditions(){const e=this.$store.getters["currentStore"](this.value.type);var t;return!!this.$store.getters[e+"/schemaFor"](this.value.type)&&(this.isView&&this.needConditions&&(null===(t=this.value)||void 0===t?void 0:t.type)&&this.$store.getters[e+"/pathExistsInSchema"](this.value.type,"status.conditions"))},showEvents(){return this.isView&&this.needEvents&&this.hasEvents},showRelated(){return this.isView&&this.needRelated},eventHeaders(){return[{name:"type",label:this.t("tableHeaders.type"),value:"eventType",sort:"eventType"},{name:"reason",label:this.t("tableHeaders.reason"),value:"reason",sort:"reason"},{name:"date",label:this.t("tableHeaders.updated"),value:"date",sort:"date:desc",formatter:"LiveDate",formatterOpts:{addSuffix:!0},width:125},{name:"message",label:this.t("tableHeaders.message"),value:"message",sort:"message"}]},events(){return this.allEvents.filter(e=>{var t,a;return(null===(t=e.involvedObject)||void 0===t?void 0:t.uid)===(null===(a=this.value)||void 0===a||null===(a=a.metadata)||void 0===a?void 0:a.uid)}).map(e=>({reason:`${e.reason||this.t("generic.unknown")}${e.count>1?` (${e.count})`:""}`.trim(),message:e.message||this.t("generic.unknown"),date:e.lastTimestamp||e.firstTimestamp||e.metadata.creationTimestamp,eventType:e.eventType}))},conditionsHaveIssues(){var e;return!!this.showConditions&&(null===(e=this.value.status)||void 0===e||null===(e=e.conditions)||void 0===e?void 0:e.filter(e=>!Object(w["e"])(e)).some(e=>e.error))}},methods:{tabChange(e){if(this.selectedTab=null===e||void 0===e?void 0:e.selectedName,!this.didLoadEvents&&"events"===this.selectedTab){const e=this.$store.getters["currentStore"](m["f"]);this.$store.dispatch(e+"/findAll",{type:m["f"]}).then(e=>{this.allEvents=e,this.didLoadEvents=!0})}}}},R=D,I=Object(p["a"])(R,r,s,!1,null,null,null);t["a"]=I.exports},d0e7:function(e,t){function a(e,t,a){var r=-1,s=e.length;t<0&&(t=-t>s?0:s+t),a=a>s?s:a,a<0&&(a+=s),s=t>a?0:a-t>>>0,t>>>=0;var n=Array(s);while(++r\nimport head from 'lodash/head';\nimport isEmpty from 'lodash/isEmpty';\nimport { addObject, removeObject, findBy } from '@shell/utils/array';\nimport { sortBy } from '@shell/utils/sort';\nimport findIndex from 'lodash/findIndex';\n\nexport default {\n name: 'Tabbed',\n\n props: {\n defaultTab: {\n type: String,\n default: null,\n },\n\n sideTabs: {\n type: Boolean,\n default: false\n },\n\n hideSingleTab: {\n type: Boolean,\n default: false\n },\n\n showTabsAddRemove: {\n type: Boolean,\n default: false\n },\n\n // whether or not to scroll to the top of the new tab on tab change. This is particularly ugly with side tabs\n scrollOnChange: {\n type: Boolean,\n default: false\n },\n\n useHash: {\n type: Boolean,\n default: true,\n },\n\n noContent: {\n type: Boolean,\n default: false,\n },\n\n // Remove padding and box-shadow\n flat: {\n type: Boolean,\n default: false,\n },\n\n tabsOnly: {\n type: Boolean,\n default: false,\n }\n },\n\n provide() {\n const tabs = this.tabs;\n\n return {\n sideTabs: this.sideTabs,\n\n addTab(tab) {\n const existing = findBy(tabs, 'name', tab.name);\n\n if ( existing ) {\n removeObject(tabs, existing);\n }\n\n addObject(tabs, tab);\n },\n\n removeTab(tab) {\n removeObject(tabs, tab);\n }\n };\n },\n\n data() {\n return {\n tabs: [],\n activeTabName: null,\n };\n },\n\n computed: {\n // keep the tabs list ordered for dynamic tabs\n sortedTabs() {\n return sortBy(this.tabs, ['weight:desc', 'labelDisplay', 'name']);\n },\n\n // hide tabs based on tab count IF flag is active\n hideTabs() {\n return this.hideSingleTab && this.sortedTabs.length === 1;\n }\n },\n\n watch: {\n sortedTabs(tabs) {\n const {\n defaultTab,\n useHash\n } = this;\n const activeTab = tabs.find((t) => t.active);\n\n const hash = useHash ? this.$route.hash : undefined;\n const windowHash = useHash ? hash.slice(1) : undefined;\n const windowHashTabMatch = tabs.find((t) => t.name === windowHash && !t.active);\n const firstTab = head(tabs) || null;\n\n if (isEmpty(activeTab)) {\n if (useHash && !isEmpty(windowHashTabMatch)) {\n this.select(windowHashTabMatch.name);\n } else if (!isEmpty(defaultTab) && !isEmpty(tabs.find((t) => t.name === defaultTab))) {\n this.select(defaultTab);\n } else if (firstTab?.name) {\n this.select(firstTab.name);\n }\n } else if (useHash && activeTab?.name === windowHash) {\n this.select(activeTab.name);\n }\n },\n },\n\n mounted() {\n if ( this.useHash ) {\n window.addEventListener('hashchange', this.hashChange);\n }\n },\n\n unmounted() {\n if ( this.useHash ) {\n window.removeEventListener('hashchange', this.hashChange);\n }\n },\n\n methods: {\n hasIcon(tab) {\n return tab.displayAlertIcon || (tab.error && !tab.active);\n },\n hashChange() {\n if (!this.scrollOnChange) {\n const scrollable = document.getElementsByTagName('main')[0];\n\n if (scrollable) {\n scrollable.scrollTop = 0;\n }\n }\n\n this.select(this.$route.hash);\n },\n\n find(name) {\n return this.sortedTabs.find((x) => x.name === name );\n },\n\n select(name/* , event */) {\n const { sortedTabs } = this;\n\n const selected = this.find(name);\n const hashName = `#${ name }`;\n\n if ( !selected || selected.disabled) {\n return;\n }\n /**\n * Exclude logic with URL anchor (hash) for projects without routing logic (vue-router)\n */\n if ( this.useHash ) {\n const {\n $route: { hash: routeHash },\n $router: { currentRoute },\n } = this;\n\n if (this.useHash && routeHash !== hashName) {\n const kurrentRoute = { ...currentRoute };\n\n kurrentRoute.hash = hashName;\n\n this.$router.replace(kurrentRoute);\n }\n }\n\n for ( const tab of sortedTabs ) {\n tab.active = (tab.name === selected.name);\n }\n\n this.$emit('changed', { tab: selected, selectedName: selected.name });\n this.activeTabName = selected.name;\n },\n\n selectNext(direction) {\n const { sortedTabs } = this;\n const currentIdx = sortedTabs.findIndex((x) => x.active);\n const nextIdx = getCyclicalIdx(currentIdx, direction, sortedTabs.length);\n const nextName = sortedTabs[nextIdx].name;\n\n this.select(nextName);\n\n this.$nextTick(() => {\n this.$refs.tablist.focus();\n });\n\n function getCyclicalIdx(currentIdx, direction, tabsLength) {\n const nxt = currentIdx + direction;\n\n if (nxt >= tabsLength) {\n return 0;\n } else if (nxt <= 0) {\n return tabsLength - 1;\n } else {\n return nxt;\n }\n }\n },\n\n tabAddClicked() {\n const activeTabIndex = findIndex(this.tabs, (tab) => tab.active);\n\n this.$emit('addTab', activeTabIndex);\n },\n\n tabRemoveClicked() {\n const activeTabIndex = findIndex(this.tabs, (tab) => tab.active);\n\n this.$emit('removeTab', activeTabIndex);\n },\n },\n};\n\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=2a058e46&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=2a058e46&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2a058e46\",\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".tabs[data-v-2a058e46]{list-style-type:none;margin:0;padding:0}.tabs.horizontal[data-v-2a058e46]{border:solid thin var(--border);border-bottom:0;display:flex;flex-direction:row}.tabs.horizontal+.tab-container[data-v-2a058e46]{border:solid thin var(--border)}.tabs.horizontal .tab.active[data-v-2a058e46]{border-bottom:solid 2px var(--primary)}.tabs[data-v-2a058e46]:focus{outline:none}.tabs:focus .tab.active a span[data-v-2a058e46]{text-decoration:underline}.tabs .tab[data-v-2a058e46]{position:relative;float:left;padding:0 8px 0 0;cursor:pointer}.tabs .tab A[data-v-2a058e46]{display:flex;align-items:center;padding:10px 15px}.tabs .tab A[data-v-2a058e46]:hover{text-decoration:none}.tabs .tab A:hover span[data-v-2a058e46]{text-decoration:underline}.tabs .tab .conditions-alert-icon[data-v-2a058e46]{color:var(--error);padding-left:4px}.tabs .tab[data-v-2a058e46]:last-child{padding-right:0}.tabs .tab.active>A[data-v-2a058e46]{color:var(--primary);text-decoration:none}.tabs .tab.error A>i[data-v-2a058e46]{color:var(--error)}.tabs .tab .tab-badge[data-v-2a058e46]{margin-left:5px;background-color:var(--link);color:#fff;border-radius:6px;padding:1px 7px;font-size:11px}.tab-container[data-v-2a058e46]{padding:20px}.tab-container.no-content[data-v-2a058e46]{padding:0 0 3px 0}.tab-container--flat[data-v-2a058e46]{padding:0}.tab-container--flat .side-tabs[data-v-2a058e46]{box-shadow:unset}.tabs-only[data-v-2a058e46]{margin-bottom:20px}.tabs-only .tab-container[data-v-2a058e46]{display:none}.tabs-only .tabs[data-v-2a058e46]{border:0;border-bottom:2px solid var(--border)}.side-tabs[data-v-2a058e46]{display:flex;box-shadow:0 0 20px var(--shadow);border-radius:calc(var(--border-radius)*2);background-color:var(--tabbed-sidebar-bg)}.side-tabs .tab-container[data-v-2a058e46]{padding:20px}.side-tabs .tabs[data-v-2a058e46]{width:200px;min-width:200px;display:flex;flex:1 0;flex-direction:column}.side-tabs .tabs .tab[data-v-2a058e46]{width:100%;border-left:5px solid transparent}.side-tabs .tabs .tab.toggle A[data-v-2a058e46],.side-tabs .tabs .tab A[data-v-2a058e46]{color:var(--primary)}.side-tabs .tabs .tab.active[data-v-2a058e46]{background-color:var(--body-bg);border-left:solid 5px var(--primary)}.side-tabs .tabs .tab.active A[data-v-2a058e46]{color:var(--input-label)}.side-tabs .tabs .tab.disabled[data-v-2a058e46]{background-color:var(--disabled-bg)}.side-tabs .tabs .tab.disabled A[data-v-2a058e46]{color:var(--disabled-text);text-decoration:none}.side-tabs .tabs .tab-list-footer[data-v-2a058e46]{list-style:none;padding:0;margin-top:auto}.side-tabs .tabs .tab-list-footer li[data-v-2a058e46]{display:flex;flex:1}.side-tabs .tabs .tab-list-footer li .btn[data-v-2a058e46]{flex:1 1;display:flex;justify-content:center}.side-tabs .tabs .tab-list-footer li button[data-v-2a058e46]:first-of-type{border-top:solid 1px var(--border);border-right:solid 1px var(--border);border-top-right-radius:0}.side-tabs .tabs .tab-list-footer li button[data-v-2a058e46]:last-of-type{border-top:solid 1px var(--border);border-top-left-radius:0}.side-tabs .tab-container[data-v-2a058e46]{width:calc(100% - 200px);flex-grow:1;background-color:var(--body-bg)}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CountGauge.vue?vue&type=style&index=0&id=248b86e0&prod&lang=scss&\"","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Circle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Circle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Circle.vue?vue&type=template&id=5f78e642&scoped=true&\"\nimport script from \"./Circle.vue?vue&type=script&lang=js&\"\nexport * from \"./Circle.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Circle.vue?vue&type=style&index=0&id=5f78e642&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f78e642\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gradient-box\",class:{'show-tab': _vm.showTab, 'plain': _vm.plain},style:(_vm.style)},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./GradientBox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./GradientBox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GradientBox.vue?vue&type=template&id=42940dc4&scoped=true&\"\nimport script from \"./GradientBox.vue?vue&type=script&lang=js&\"\nexport * from \"./GradientBox.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GradientBox.vue?vue&type=style&index=0&id=42940dc4&prod&lang=scss&\"\nimport style1 from \"./GradientBox.vue?vue&type=style&index=1&id=42940dc4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42940dc4\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CountGauge.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CountGauge.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CountGauge.vue?vue&type=template&id=248b86e0&\"\nimport script from \"./CountGauge.vue?vue&type=script&lang=js&\"\nexport * from \"./CountGauge.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CountGauge.vue?vue&type=style&index=0&id=248b86e0&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var baseIteratee = require('./_baseIteratee'),\n baseWhile = require('./_baseWhile');\n\n/**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\nfunction dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, baseIteratee(predicate, 3), true)\n : [];\n}\n\nmodule.exports = dropWhile;\n","var root = require('./_root'),\n toInteger = require('./toInteger'),\n toNumber = require('./toNumber'),\n toString = require('./toString');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite,\n nativeMin = Math.min;\n\n/**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\nfunction createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n}\n\nmodule.exports = createRound;\n","// style-loader: Adds some css to the DOM by adding a \r\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardOptions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardOptions.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DashboardOptions.vue?vue&type=template&id=b7bcaa58&scoped=true&\"\nimport script from \"./DashboardOptions.vue?vue&type=script&lang=js&\"\nexport * from \"./DashboardOptions.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DashboardOptions.vue?vue&type=style&index=0&id=b7bcaa58&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b7bcaa58\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"grafana-graph\"},[(_vm.error)?_c('Banner',{staticStyle:{\"z-index\":\"1000\"},attrs:{\"color\":\"error\"}},[_c('div',{staticClass:\"text-center\"},[_vm._v(\" \"+_vm._s(_vm.t('grafanaDashboard.failedToLoad'))+\" \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":_vm.reload}},[_vm._v(_vm._s(_vm.t('grafanaDashboard.reload')))])])]):_vm._e(),_c('iframe',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.error),expression:\"!error\"}],ref:\"frame\",class:{loading: _vm.loading, frame: true},attrs:{\"src\":_vm.currentUrl,\"frameborder\":\"0\",\"scrolling\":\"no\"}}),(_vm.loading)?_c('div',[_c('Loading')],1):_vm._e(),(!_vm.loading && !_vm.error)?_c('div',{staticClass:\"external-link\"},[_c('a',{attrs:{\"href\":_vm.grafanaUrl,\"target\":\"_blank\",\"rel\":\"noopener nofollow\"}},[_vm._v(_vm._s(_vm.t('grafanaDashboard.grafana'))+\" \"),_c('i',{staticClass:\"icon icon-external-link\"})])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./GrafanaDashboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./GrafanaDashboard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GrafanaDashboard.vue?vue&type=template&id=eeaaabda&scoped=true&\"\nimport script from \"./GrafanaDashboard.vue?vue&type=script&lang=js&\"\nexport * from \"./GrafanaDashboard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GrafanaDashboard.vue?vue&type=style&index=0&id=eeaaabda&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"eeaaabda\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardMetrics.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardMetrics.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DashboardMetrics.vue?vue&type=template&id=1e72d538&scoped=true&\"\nimport script from \"./DashboardMetrics.vue?vue&type=script&lang=js&\"\nexport * from \"./DashboardMetrics.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DashboardMetrics.vue?vue&type=style&index=0&id=1e72d538&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1e72d538\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Tabbed',_vm._b({attrs:{\"default-tab\":_vm.defaultTab},on:{\"changed\":_vm.tabChange}},'Tabbed',_vm.$attrs,false),[_vm._t(\"default\"),(_vm.showConditions)?_c('Tab',{attrs:{\"label-key\":\"resourceTabs.conditions.tab\",\"name\":\"conditions\",\"weight\":-1,\"display-alert-icon\":_vm.conditionsHaveIssues}},[_c('Conditions',{attrs:{\"value\":_vm.value}})],1):_vm._e(),(_vm.showEvents)?_c('Tab',{attrs:{\"label-key\":\"resourceTabs.events.tab\",\"name\":\"events\",\"weight\":-2}},[(_vm.selectedTab === 'events')?_c('SortableTable',{attrs:{\"rows\":_vm.events,\"headers\":_vm.eventHeaders,\"key-field\":\"id\",\"search\":false,\"table-actions\":false,\"row-actions\":false,\"default-sort-by\":\"date\"}}):_vm._e()],1):_vm._e(),(_vm.showRelated)?_c('Tab',{attrs:{\"name\":\"related\",\"label-key\":\"resourceTabs.related.tab\",\"weight\":-3}},[_c('h3',{directives:[{name:\"t\",rawName:\"v-t\",value:('resourceTabs.related.from'),expression:\"'resourceTabs.related.from'\"}]}),_c('RelatedResources',{attrs:{\"ignore-types\":[_vm.value.type],\"value\":_vm.value,\"direction\":\"from\"}}),_c('h3',{directives:[{name:\"t\",rawName:\"v-t\",value:('resourceTabs.related.to'),expression:\"'resourceTabs.related.to'\"}],staticClass:\"mt-20\"}),_c('RelatedResources',{attrs:{\"ignore-types\":[_vm.value.type],\"value\":_vm.value,\"direction\":\"to\"}})],1):_vm._e(),_vm._l((_vm.extensionTabs),function(tab,i){return _c('Tab',{key:`${tab.name}${i}`,attrs:{\"name\":tab.name,\"label\":tab.label,\"label-key\":tab.labelKey,\"weight\":tab.weight,\"tooltip\":tab.tooltip,\"show-header\":tab.showHeader,\"display-alert-icon\":tab.displayAlertIcon,\"error\":tab.error,\"badge\":tab.badge}},[_c(tab.component,{tag:\"component\",attrs:{\"resource\":_vm.value}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('SortableTable',{attrs:{\"headers\":_vm.headers,\"rows\":_vm.rows,\"key-field\":\"condition\",\"default-sort-by\":\"condition\",\"table-actions\":false,\"row-actions\":false,\"search\":false},scopedSlots:_vm._u([{key:\"cell:condition\",fn:function({row}){return [_c('span',{class:{'text-error': row.error}},[_vm._v(_vm._s(row.condition))])]}},{key:\"cell:status\",fn:function({row}){return [_c('span',{class:{'text-error': row.error}},[_vm._v(_vm._s(row.status))])]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Conditions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Conditions.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Conditions.vue?vue&type=template&id=14e4eb96&\"\nimport script from \"./Conditions.vue?vue&type=script&lang=js&\"\nexport * from \"./Conditions.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ResourceTable',{attrs:{\"schema\":null,\"rows\":_vm.rows,\"headers\":_vm.headers,\"search\":false,\"table-actions\":false,\"namespaced\":true,\"mangle-action-resources\":_vm.getRealResources,\"paging-label\":\"sortableTable.paging.generic\",\"groupable\":false},scopedSlots:_vm._u([{key:\"cell:state\",fn:function({row}){return [(row.real)?_c('BadgeState',{attrs:{\"value\":row.real}}):_c('BadgeState',{attrs:{\"value\":row}})]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedResources.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedResources.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RelatedResources.vue?vue&type=template&id=8ef6c89e&\"\nimport script from \"./RelatedResources.vue?vue&type=script&lang=js&\"\nexport * from \"./RelatedResources.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=4247fc1f&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".gradient-box.plain[data-v-42940dc4]{border:1px solid var(--border)}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".graph-options[data-v-b7bcaa58],.graph-options .range-refresh[data-v-b7bcaa58]{display:flex;flex-direction:row;justify-content:flex-end}.graph-options[data-v-b7bcaa58]{justify-content:space-between;align-items:center}.graph-options .labeled-select[data-v-b7bcaa58]{width:100px;margin-left:10px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".grafana-graph[data-v-eeaaabda]{position:relative;min-height:100%;min-width:100%}.grafana-graph[data-v-eeaaabda] .content{position:relative;display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;padding:0}.grafana-graph[data-v-eeaaabda] .overlay{position:static;background-color:initial}.grafana-graph iframe[data-v-eeaaabda]{position:absolute;left:0;right:0;top:20px;bottom:0;width:100%;height:100%;overflow:hidden}.grafana-graph iframe.loading[data-v-eeaaabda]{visibility:hidden}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):t.dayjs_plugin_duration=s()}(this,function(){\"use strict\";var t,s,n=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,i={years:31536e6,months:2592e6,days:864e5,hours:36e5,minutes:6e4,seconds:1e3,weeks:6048e5},e=function(t){return t instanceof u},r=function(t,s,n){return new u(t,n,s.$l)},o=function(t){return s.p(t)+\"s\"},u=function(){function s(t,s,e){var u=this;if(this.$d={},this.$l=e||\"en\",s)return r(t*i[o(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach(function(s){u.$d[o(s)]=t[s]}),this.calMilliseconds(),this;if(\"string\"==typeof t){var h=t.match(n);if(h)return this.$d.years=h[2],this.$d.months=h[3],this.$d.weeks=h[4],this.$d.days=h[5],this.$d.hours=h[6],this.$d.minutes=h[7],this.$d.seconds=h[8],this.calMilliseconds(),this}return this}var u=s.prototype;return u.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce(function(s,n){return s+(t.$d[n]||0)*(i[n]||1)},0)},u.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=Math.floor(t/31536e6),t%=31536e6,this.$d.months=Math.floor(t/2592e6),t%=2592e6,this.$d.days=Math.floor(t/864e5),t%=864e5,this.$d.hours=Math.floor(t/36e5),t%=36e5,this.$d.minutes=Math.floor(t/6e4),t%=6e4,this.$d.seconds=Math.floor(t/1e3),t%=1e3,this.$d.milliseconds=t},u.toISOString=function(){var t=this.$d.years?this.$d.years+\"Y\":\"\",s=this.$d.months?this.$d.months+\"M\":\"\",n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=n?n+\"D\":\"\",e=this.$d.hours?this.$d.hours+\"H\":\"\",r=this.$d.minutes?this.$d.minutes+\"M\":\"\",o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3);var u=o?o+\"S\":\"\",h=\"P\"+t+s+i+(e||r||u?\"T\":\"\")+e+r+u;return\"P\"===h?\"P0D\":h},u.toJSON=function(){return this.toISOString()},u.as=function(t){return this.$ms/(i[o(t)]||1)},u.get=function(t){var s=this.$ms,n=o(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?Math.floor(s/i[n]):this.$d[n],s},u.add=function(t,s,n){var u;return u=s?t*i[o(s)]:e(t)?t.$ms:r(t,this).$ms,r(this.$ms+u*(n?-1:1),this)},u.subtract=function(t,s){return this.add(t,s,!0)},u.locale=function(t){var s=this.clone();return s.$l=t,s},u.clone=function(){return r(this.$ms,this)},u.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},u.milliseconds=function(){return this.get(\"milliseconds\")},u.asMilliseconds=function(){return this.as(\"milliseconds\")},u.seconds=function(){return this.get(\"seconds\")},u.asSeconds=function(){return this.as(\"seconds\")},u.minutes=function(){return this.get(\"minutes\")},u.asMinutes=function(){return this.as(\"minutes\")},u.hours=function(){return this.get(\"hours\")},u.asHours=function(){return this.as(\"hours\")},u.days=function(){return this.get(\"days\")},u.asDays=function(){return this.as(\"days\")},u.weeks=function(){return this.get(\"weeks\")},u.asWeeks=function(){return this.as(\"weeks\")},u.months=function(){return this.get(\"months\")},u.asMonths=function(){return this.as(\"months\")},u.years=function(){return this.get(\"years\")},u.asYears=function(){return this.as(\"years\")},s}();return function(n,i,o){t=o,s=o().$utils(),o.duration=function(t,s){return r(t,{},s)},o.isDuration=e}});\n","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardMetrics.vue?vue&type=style&index=0&id=1e72d538&prod&lang=scss&scoped=true&\"","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./GrafanaDashboard.vue?vue&type=style&index=0&id=eeaaabda&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=2a058e46&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=2a058e46&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2a058e46\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartReadme.vue?vue&type=style&index=0&id=39794b21&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceCancelModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceCancelModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ResourceCancelModal.vue?vue&type=template&id=7090e1b4&scoped=true&\"\nimport script from \"./ResourceCancelModal.vue?vue&type=script&lang=js&\"\nexport * from \"./ResourceCancelModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResourceCancelModal.vue?vue&type=style&index=0&id=7090e1b4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7090e1b4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"wrapper\"},[_c('div',{staticClass:\"chart-readmes\"},[(_vm.appReadme)?_c('Markdown',{staticClass:\"md md-desc mb-20\",on:{\"loaded\":function($event){_vm.appReadmeLoaded = true}},model:{value:(_vm.appReadme),callback:function ($$v) {_vm.appReadme=$$v},expression:\"appReadme\"}}):_vm._e(),(_vm.appReadme && _vm.readme && _vm.appReadmeLoaded && _vm.readmeLoaded)?_c('h1',{staticClass:\"pt-10\"},[_vm._v(\" \"+_vm._s(_vm.t('catalog.install.appReadmeTitle'))+\" \")]):_vm._e(),(_vm.readme)?_c('Markdown',{staticClass:\"md md-desc\",on:{\"loaded\":function($event){_vm.readmeLoaded = true}},model:{value:(_vm.readme),callback:function ($$v) {_vm.readme=$$v},expression:\"readme\"}}):_vm._e()],1),_c('div')])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartReadme.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartReadme.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ChartReadme.vue?vue&type=template&id=39794b21&scoped=true&\"\nimport script from \"./ChartReadme.vue?vue&type=script&lang=js&\"\nexport * from \"./ChartReadme.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ChartReadme.vue?vue&type=style&index=0&id=39794b21&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"39794b21\",\n null\n \n)\n\nexport default component.exports","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".confirm-modal .btn[data-v-7090e1b4]{margin:0 10px}.confirm-modal .v--modal-box[data-v-7090e1b4]{background-color:var(--default);box-shadow:none;min-height:200px}.confirm-modal .v--modal-box .body[data-v-7090e1b4]{min-height:75px;padding:10px 0 0 15px}.confirm-modal .v--modal-box .body p[data-v-7090e1b4]{margin-top:10px}.confirm-modal .v--modal-box .header[data-v-7090e1b4]{background-color:var(--error);padding:15px 0 0 15px;height:50px}.confirm-modal .v--modal-box .header h4[data-v-7090e1b4]{color:#fff}.confirm-modal .v--modal-box .footer[data-v-7090e1b4]{border-top:1px solid var(--border);text-align:center;padding:10px 0 0 15px;height:60px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\n","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CruResourceFooter.vue?vue&type=style&index=0&id=3e3d0b47&prod&lang=scss&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".chart-readmes>h1[data-v-39794b21]{border-top:var(--header-border-size) solid var(--header-border)}.md[data-v-39794b21]{overflow:auto;max-width:100%;line-height:1.6}.md[data-v-39794b21] *+H1,.md[data-v-39794b21] *+H2,.md[data-v-39794b21] *+H3,.md[data-v-39794b21] *+H4,.md[data-v-39794b21] *+H5,.md[data-v-39794b21] *+H6{margin-top:20px}.md[data-v-39794b21] code{font-size:13.5px;white-space:break-spaces;word-wrap:break-word;padding-left:5px;padding-right:5px;border:0}.md[data-v-39794b21] pre{white-space:break-spaces;word-break:break-word}.md[data-v-39794b21]>h1:first-of-type{display:none}.md[data-v-39794b21] p{margin-bottom:.5em}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Wizard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Wizard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Wizard.vue?vue&type=template&id=41c6a168&scoped=true&\"\nimport script from \"./Wizard.vue?vue&type=script&lang=js&\"\nexport * from \"./Wizard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Wizard.vue?vue&type=style&index=0&id=41c6a168&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"41c6a168\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Wizard.vue?vue&type=style&index=0&id=41c6a168&prod&lang=scss&scoped=true&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{staticClass:\"cru\"},[_vm._t(\"noticeBanner\"),(_vm.description)?_c('p',{staticClass:\"description\"},[_vm._v(\" \"+_vm._s(_vm.description)+\" \")]):_vm._e(),_c((_vm.isView? 'div' : 'form'),{tag:\"form\",staticClass:\"create-resource-container cru__form\",attrs:{\"data-testid\":\"cru-form\"},on:{\"submit\":function($event){$event.preventDefault();},\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onPressEnter($event)}}},[(_vm.hasErrors)?_c('div',{staticClass:\"cru__errors\",attrs:{\"id\":\"cru-errors\"}},_vm._l((_vm.errors),function(err,i){return _c('Banner',{key:i,attrs:{\"color\":\"error\",\"data-testid\":`error-banner${i}`,\"label\":_vm.stringify(_vm.mappedErrors[err].message),\"icon\":_vm.mappedErrors[err].icon,\"closable\":true},on:{\"close\":function($event){return _vm.closeError(i)}}})}),1):_vm._e(),(_vm.showSubtypeSelection)?_c('div',{staticClass:\"subtypes-container cru__content\"},[_vm._t(\"subtypes\",function(){return _vm._l((_vm.subtypes),function(subtype){return _c('div',{key:subtype.id,staticClass:\"subtype-banner\",class:{ selected: subtype.id === _vm._selectedSubtype },on:{\"click\":function($event){return _vm.selectType(subtype.id, $event)}}},[_vm._t(\"subtype-content\",function(){return [_c('div',{staticClass:\"subtype-container\"},[_c('div',{staticClass:\"subtype-logo\"},[(subtype.bannerImage)?_c('img',{attrs:{\"src\":subtype.bannerImage,\"alt\":(_vm.resource.type ? _vm.resource.type + ': ' : '') + (subtype.label || '')}}):_c('div',{staticClass:\"round-image\"},[(subtype.bannerAbbrv)?_c('div',{staticClass:\"banner-abbrv\"},[(_vm.$store.getters['i18n/exists'](subtype.bannerAbbrv))?_c('span',[_vm._v(_vm._s(_vm.t(subtype.bannerAbbrv)))]):_c('span',{style:({fontSize: _vm.abbrSizes[subtype.bannerAbbrv.length]})},[_vm._v(_vm._s(subtype.bannerAbbrv))])]):_c('div',[_vm._v(\" \"+_vm._s(subtype.id.slice(0, 1).toUpperCase())+\" \")])])]),_c('div',{staticClass:\"subtype-body\"},[_c('div',{staticClass:\"title\",class:{'with-description': !!subtype.description}},[_c('h5',[(_vm.$store.getters['i18n/exists'](subtype.label))?_c('span',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t(subtype.label)),expression:\"t(subtype.label)\"}]}):_c('span',[_vm._v(_vm._s(subtype.label))])]),(subtype.docLink)?_c('a',{staticClass:\"flex-right\",attrs:{\"href\":subtype.docLink,\"target\":\"_blank\",\"rel\":\"noopener nofollow\"}},[_vm._v(_vm._s(_vm.t('generic.moreInfo'))+\" \"),_c('i',{staticClass:\"icon icon-external-link\"})]):_vm._e()]),(subtype.description)?_c('hr'):_vm._e(),(subtype.description)?_c('div',{staticClass:\"description\"},[(_vm.$store.getters['i18n/exists'](subtype.description))?_c('span',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t(subtype.description, {}, true)),expression:\"t(subtype.description, {}, true)\"}]}):_c('span',[_vm._v(_vm._s(subtype.description))])]):_vm._e()])])]})],2)})},{\"subtypes\":_vm.subtypes})],2):_vm._e(),(_vm.showAsForm && _vm.steps.length)?[(_vm._selectedSubtype || !_vm.subtypes.length)?_c('div',{staticClass:\"resource-container cru__content cru__content-wizard\"},[(_vm.resource)?_c('Wizard',{ref:\"Wizard\",staticClass:\"wizard\",attrs:{\"header-mode\":_vm.mode,\"steps\":_vm.steps,\"errors\":_vm.errors,\"finish-mode\":_vm.finishMode},on:{\"error\":e=>_vm.errors = e},scopedSlots:_vm._u([{key:\"stepContainer\",fn:function({activeStep}){return [_vm._l((_vm.steps),function(step){return [(step.name === activeStep.name || step.hidden)?_c('div',{key:step.name,staticClass:\"step-container__step\",class:{'hide': step.name !== activeStep.name && step.hidden}},[_vm._t(step.name,null,{\"step\":step})],2):_vm._e()]})]}},{key:\"controlsContainer\",fn:function({showPrevious, next, back, activeStep, canNext, activeStepIndex, visibleSteps}){return [[_c('CruResourceFooter',{staticClass:\"cru__footer\",attrs:{\"mode\":_vm.mode,\"is-form\":_vm.showAsForm,\"show-cancel\":_vm.showCancel},on:{\"cancel-confirmed\":_vm.confirmCancel},scopedSlots:_vm._u([_vm._l((_vm.$scopedSlots),function(_,slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)},[_c('div',{staticClass:\"controls-steps\"},[(_vm.showYaml)?_c('button',{staticClass:\"btn role-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.showPreviewYaml}},[_c('t',{attrs:{\"k\":\"cruResource.previewYaml\"}})],1):_vm._e(),(showPrevious)?[_c('button',{staticClass:\"btn role-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return back()}}},[_c('t',{attrs:{\"k\":\"wizard.previous\"}})],1)]:_vm._e(),(activeStepIndex === visibleSteps.length-1)?[(!_vm.showSubtypeSelection && !_vm.isView)?_c('AsyncButton',{ref:\"save\",attrs:{\"disabled\":!activeStep.ready,\"mode\":_vm.finishButtonMode || _vm.mode},on:{\"click\":function($event){return _vm.$emit('finish', $event)}}}):_vm._e()]:[_c('button',{staticClass:\"btn role-primary\",attrs:{\"disabled\":!canNext,\"type\":\"button\"},on:{\"click\":function($event){return next()}}},[_c('t',{attrs:{\"k\":\"wizard.next\"}})],1)]],2)])]]}}],null,true)}):_vm._e()],1):_vm._e()]:(_vm.showAsForm)?[(_vm._selectedSubtype || !_vm.subtypes.length)?_c('div',{staticClass:\"resource-container cru__content\",style:([_vm.minHeight ? { 'min-height': _vm.minHeight } : {}])},[_vm._t(\"default\")],2):_vm._e(),_vm._t(\"form-footer\",function(){return [_c('CruResourceFooter',{staticClass:\"cru__footer\",attrs:{\"mode\":_vm.mode,\"is-form\":_vm.showAsForm,\"show-cancel\":_vm.showCancel,\"component-testid\":_vm.componentTestid},on:{\"cancel-confirmed\":_vm.confirmCancel},scopedSlots:_vm._u([_vm._l((_vm.$scopedSlots),function(_,slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}}),{key:\"default\",fn:function(){return [(!_vm.isView)?_c('div',[(_vm.showYaml)?_c('button',{staticClass:\"btn role-secondary\",attrs:{\"data-testid\":_vm.componentTestid + '-yaml',\"type\":\"button\"},on:{\"click\":_vm.showPreviewYaml}},[_c('t',{attrs:{\"k\":\"cruResource.previewYaml\"}})],1):_vm._e(),(!_vm.showSubtypeSelection)?_c('AsyncButton',{ref:\"save\",attrs:{\"disabled\":!_vm.canSave,\"mode\":_vm.finishButtonMode || _vm.mode,\"data-testid\":_vm.componentTestid + '-save'},on:{\"click\":function($event){return _vm.clickSave($event)}}}):_vm._e()],1):_vm._e()]},proxy:true}],null,true)})]})]:(_vm.showYaml)?_c('section',{staticClass:\"cru-resource-yaml-container resource-container cru__content\"},[_c('ResourceYaml',{ref:\"resourceyaml\",staticClass:\"resource-container cru__content\",attrs:{\"value\":_vm.resource,\"mode\":_vm.mode,\"initial-yaml-for-diff\":_vm.initialYaml,\"yaml\":_vm.resourceYaml,\"offer-preview\":_vm.isEdit,\"done-route\":_vm.doneRoute,\"done-override\":_vm.resource.doneOverride,\"errors\":_vm.errors,\"apply-hooks\":_vm.applyHooks},on:{\"error\":e=>_vm.$emit('error', e)},scopedSlots:_vm._u([{key:\"yamlFooter\",fn:function({yamlSave, showPreview, yamlPreview, yamlUnpreview}){return [_vm._t(\"cru-yaml-footer\",function(){return [_c('CruResourceFooter',{staticClass:\"cru__footer\",attrs:{\"done-route\":_vm.doneRoute,\"mode\":_vm.mode,\"is-form\":_vm.showAsForm},on:{\"cancel-confirmed\":_vm.confirmCancel},scopedSlots:_vm._u([{key:\"default\",fn:function({checkCancel}){return [_c('div',{staticClass:\"controls-middle\"},[(showPreview)?_c('button',{staticClass:\"btn role-secondary\",attrs:{\"type\":\"button\",\"data-testid\":_vm.componentTestid + '-yaml-yaml'},on:{\"click\":yamlUnpreview}},[_c('t',{attrs:{\"k\":\"resourceYaml.buttons.continue\"}})],1):_vm._e(),(!showPreview && _vm.isEdit)?_c('button',{staticClass:\"btn role-secondary\",attrs:{\"data-testid\":_vm.componentTestid + '-yaml-yaml-preview',\"disabled\":!_vm.canDiff,\"type\":\"button\"},on:{\"click\":yamlPreview}},[_c('t',{attrs:{\"k\":\"resourceYaml.buttons.diff\"}})],1):_vm._e()]),(_vm._selectedSubtype || !_vm.subtypes.length)?_c('div',{staticClass:\"controls-right\"},[_c('button',{staticClass:\"btn role-secondary\",attrs:{\"data-testid\":_vm.componentTestid + '-yaml-cancel',\"type\":\"button\"},on:{\"click\":function($event){return checkCancel(false)}}},[_c('t',{attrs:{\"k\":\"cruResource.backToForm\"}})],1),(!_vm.showSubtypeSelection)?_c('AsyncButton',{attrs:{\"data-testid\":_vm.componentTestid + '-yaml-save',\"disabled\":!_vm.canSave,\"action-label\":_vm.isEdit ? _vm.t('generic.save') : _vm.t('generic.create')},on:{\"click\":cb=>yamlSave(cb)}}):_vm._e()],1):_vm._e()]}}],null,true)})]})]}}],null,true)})],1):_vm._e()],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"cru-resource-footer\"},[_vm._t(\"footer-prefix\"),_vm._t(\"cancel\",function(){return [(!_vm.isView && _vm.showCancel)?_c('button',{staticClass:\"btn role-secondary\",attrs:{\"id\":\"cru-cancel\",\"data-testid\":_vm.componentTestid + '-cancel',\"type\":\"button\"},on:{\"click\":function($event){_vm.confirmCancelRequired ? _vm.checkCancel(true) : _vm.$emit('cancel-confirmed', true)}}},[_c('t',{attrs:{\"k\":\"generic.cancel\"}})],1):_vm._e()]}),_vm._t(\"default\",function(){return [(!_vm.isView)?_c('AsyncButton',{attrs:{\"data-testid\":_vm.componentTestid + '-create',\"mode\":_vm.finishButtonMode || _vm.mode},on:{\"click\":function($event){return _vm.$emit('finish', $event)}}}):_vm._e()]},{\"checkCancel\":_vm.checkCancel}),_c('ResourceCancelModal',{ref:\"cancelModal\",attrs:{\"is-cancel-modal\":_vm.isCancelModal,\"is-form\":_vm.isForm},on:{\"confirm-cancel\":function($event){return _vm.confirmCancel($event)}}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CruResourceFooter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CruResourceFooter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CruResourceFooter.vue?vue&type=template&id=3e3d0b47&\"\nimport script from \"./CruResourceFooter.vue?vue&type=script&lang=js&\"\nexport * from \"./CruResourceFooter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CruResourceFooter.vue?vue&type=style&index=0&id=3e3d0b47&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n $emit('error', e)\"\n >\n \n \n \n \n \n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CruResource.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CruResource.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CruResource.vue?vue&type=template&id=8082eba2&scoped=true&\"\nimport script from \"./CruResource.vue?vue&type=script&lang=js&\"\nexport * from \"./CruResource.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CruResource.vue?vue&type=style&index=0&id=8082eba2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8082eba2\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.vendors~markdown.js b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.vendors~markdown.js new file mode 100644 index 0000000..683adee --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.vendors~markdown.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_1_6_3"]||[]).push([[12],{3104:function(e,t,u){(function(e,u){u(t)})(0,(function(e){"use strict";function t(e,t){for(var u=0;ue.length)&&(t=e.length);for(var u=0,n=new Array(t);u=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(){return{baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}function l(t){e.defaults=t}e.defaults=s();var a=/[&<>"']/,D=/[&<>"']/g,o=/[<>"']|&(?!#?\w+;)/,c=/[<>"']|&(?!#?\w+;)/g,h={"&":"&","<":"<",">":">",'"':""","'":"'"},p=function(e){return h[e]};function f(e,t){if(t){if(a.test(e))return e.replace(D,p)}else if(o.test(e))return e.replace(c,p);return e}var g=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function F(e){return e.replace(g,(function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var A=/(^|[^\[])\^/g;function d(e,t){e="string"===typeof e?e:e.source,t=t||"";var u={replace:function(t,n){return n=n.source||n,n=n.replace(A,"$1"),e=e.replace(t,n),u},getRegex:function(){return new RegExp(e,t)}};return u}var k=/[^\w:]/g,C=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function E(e,t,u){if(e){var n;try{n=decodeURIComponent(F(u)).replace(k,"").toLowerCase()}catch(r){return null}if(0===n.indexOf("javascript:")||0===n.indexOf("vbscript:")||0===n.indexOf("data:"))return null}t&&!C.test(u)&&(u=w(t,u));try{u=encodeURI(u).replace(/%25/g,"%")}catch(r){return null}return u}var x={},m=/^[^:]+:\/*[^/]*$/,b=/^([^:]+:)[\s\S]*$/,B=/^([^:]+:\/*[^/]*)[\s\S]*$/;function w(e,t){x[" "+e]||(m.test(e)?x[" "+e]=e+"/":x[" "+e]=z(e,"/",!0)),e=x[" "+e];var u=-1===e.indexOf(":");return"//"===t.substring(0,2)?u?t:e.replace(b,"$1")+t:"/"===t.charAt(0)?u?t:e.replace(B,"$1")+t:e+t}var v={exec:function(){}};function y(e){for(var t,u,n=1;n=0&&"\\"===u[r])n=!n;return n?"|":" |"})),n=u.split(/ \|/),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),n.length>t)n.splice(t);else while(n.length1)1&t&&(u+=e),t>>=1,e+=e;return u+e}function T(e,t,u,n){var r=t.href,i=t.title?f(t.title):null,s=e[1].replace(/\\([\[\]])/g,"$1");if("!"!==e[0].charAt(0)){n.state.inLink=!0;var l={type:"link",raw:u,href:r,title:i,text:s,tokens:n.inlineTokens(s,[])};return n.state.inLink=!1,l}return{type:"image",raw:u,href:r,title:i,text:f(s)}}function I(e,t){var u=e.match(/^(\s+)(?:```)/);if(null===u)return t;var n=u[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);if(null===t)return e;var u=t[0];return u.length>=n.length?e.slice(n.length):e})).join("\n")}var Z=function(){function t(t){this.options=t||e.defaults}var u=t.prototype;return u.space=function(e){var t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}},u.code=function(e){var t=this.rules.block.code.exec(e);if(t){var u=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?u:z(u,"\n")}}},u.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var u=t[0],n=I(u,t[3]||"");return{type:"code",raw:u,lang:t[2]?t[2].trim():t[2],text:n}}},u.heading=function(e){var t=this.rules.block.heading.exec(e);if(t){var u=t[2].trim();if(/#$/.test(u)){var n=z(u,"#");this.options.pedantic?u=n.trim():n&&!/ $/.test(n)||(u=n.trim())}var r={type:"heading",raw:t[0],depth:t[1].length,text:u,tokens:[]};return this.lexer.inline(r.text,r.tokens),r}},u.hr=function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}},u.blockquote=function(e){var t=this.rules.block.blockquote.exec(e);if(t){var u=t[0].replace(/^ *>[ \t]?/gm,"");return{type:"blockquote",raw:t[0],tokens:this.lexer.blockTokens(u,[]),text:u}}},u.list=function(e){var t=this.rules.block.list.exec(e);if(t){var u,n,r,s,l,a,D,o,c,h,p,f,g=t[1].trim(),F=g.length>1,A={type:"list",raw:"",ordered:F,start:F?+g.slice(0,-1):"",loose:!1,items:[]};g=F?"\\d{1,9}\\"+g.slice(-1):"\\"+g,this.options.pedantic&&(g=F?g:"[*+-]");var d=new RegExp("^( {0,3}"+g+")((?:[\t ][^\\n]*)?(?:\\n|$))");while(e){if(f=!1,!(t=d.exec(e)))break;if(this.rules.block.hr.test(e))break;if(u=t[0],e=e.substring(u.length),o=t[2].split("\n",1)[0],c=e.split("\n",1)[0],this.options.pedantic?(s=2,p=o.trimLeft()):(s=t[2].search(/[^ ]/),s=s>4?1:s,p=o.slice(s),s+=t[1].length),a=!1,!o&&/^ *$/.test(c)&&(u+=c+"\n",e=e.substring(c.length+1),f=!0),!f){var k=new RegExp("^ {0,"+Math.min(3,s-1)+"}(?:[*+-]|\\d{1,9}[.)])((?: [^\\n]*)?(?:\\n|$))"),C=new RegExp("^ {0,"+Math.min(3,s-1)+"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)"),E=new RegExp("^( {0,"+Math.min(3,s-1)+"})(```|~~~)");while(e){if(h=e.split("\n",1)[0],o=h,this.options.pedantic&&(o=o.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),E.test(o))break;if(this.rules.block.heading.test(o))break;if(k.test(o))break;if(C.test(e))break;if(o.search(/[^ ]/)>=s||!o.trim())p+="\n"+o.slice(s);else{if(a)break;p+="\n"+o}a||o.trim()||(a=!0),u+=h+"\n",e=e.substring(h.length+1)}}A.loose||(D?A.loose=!0:/\n *\n *$/.test(u)&&(D=!0)),this.options.gfm&&(n=/^\[[ xX]\] /.exec(p),n&&(r="[ ] "!==n[0],p=p.replace(/^\[[ xX]\] +/,""))),A.items.push({type:"list_item",raw:u,task:!!n,checked:r,loose:!1,text:p}),A.raw+=u}A.items[A.items.length-1].raw=u.trimRight(),A.items[A.items.length-1].text=p.trimRight(),A.raw=A.raw.trimRight();var x=A.items.length;for(l=0;l1)return!0}return!1}));!A.loose&&m.length&&b&&(A.loose=!0,A.items[l].loose=!0)}return A}},u.html=function(e){var t=this.rules.block.html.exec(e);if(t){var u={type:"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:t[0]};return this.options.sanitize&&(u.type="paragraph",u.text=this.options.sanitizer?this.options.sanitizer(t[0]):f(t[0]),u.tokens=[],this.lexer.inline(u.text,u.tokens)),u}},u.def=function(e){var t=this.rules.block.def.exec(e);if(t){t[3]&&(t[3]=t[3].substring(1,t[3].length-1));var u=t[1].toLowerCase().replace(/\s+/g," ");return{type:"def",tag:u,raw:t[0],href:t[2],title:t[3]}}},u.table=function(e){var t=this.rules.block.table.exec(e);if(t){var u={type:"table",header:_(t[1]).map((function(e){return{text:e}})),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(u.header.length===u.align.length){u.raw=t[0];var n,r,i,s,l=u.align.length;for(n=0;n/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):f(t[0]):t[0]}},u.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var u=t[2].trim();if(!this.options.pedantic&&/^$/.test(u))return;var n=z(u.slice(0,-1),"\\");if((u.length-n.length)%2===0)return}else{var r=$(t[2],"()");if(r>-1){var i=0===t[0].indexOf("!")?5:4,s=i+t[1].length+r;t[2]=t[2].substring(0,r),t[0]=t[0].substring(0,s).trim(),t[3]=""}}var l=t[2],a="";if(this.options.pedantic){var D=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(l);D&&(l=D[1],a=D[3])}else a=t[3]?t[3].slice(1,-1):"";return l=l.trim(),/^$/.test(u)?l.slice(1):l.slice(1,-1)),T(t,{href:l?l.replace(this.rules.inline._escapes,"$1"):l,title:a?a.replace(this.rules.inline._escapes,"$1"):a},t[0],this.lexer)}},u.reflink=function(e,t){var u;if((u=this.rules.inline.reflink.exec(e))||(u=this.rules.inline.nolink.exec(e))){var n=(u[2]||u[1]).replace(/\s+/g," ");if(n=t[n.toLowerCase()],!n||!n.href){var r=u[0].charAt(0);return{type:"text",raw:r,text:r}}return T(u,n,u[0],this.lexer)}},u.emStrong=function(e,t,u){void 0===u&&(u="");var n=this.rules.inline.emStrong.lDelim.exec(e);if(n&&(!n[3]||!u.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var r=n[1]||n[2]||"";if(!r||r&&(""===u||this.rules.inline.punctuation.exec(u))){var i,s,l=n[0].length-1,a=l,D=0,o="*"===n[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;o.lastIndex=0,t=t.slice(-1*e.length+l);while(null!=(n=o.exec(t)))if(i=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],i)if(s=i.length,n[3]||n[4])a+=s;else if(!((n[5]||n[6])&&l%3)||(l+s)%3){if(a-=s,!(a>0)){if(s=Math.min(s,s+a+D),Math.min(l,s)%2){var c=e.slice(1,l+n.index+s);return{type:"em",raw:e.slice(0,l+n.index+s+1),text:c,tokens:this.lexer.inlineTokens(c,[])}}var h=e.slice(2,l+n.index+s-1);return{type:"strong",raw:e.slice(0,l+n.index+s+1),text:h,tokens:this.lexer.inlineTokens(h,[])}}}else D+=s}}},u.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var u=t[2].replace(/\n/g," "),n=/[^ ]/.test(u),r=/^ /.test(u)&&/ $/.test(u);return n&&r&&(u=u.substring(1,u.length-1)),u=f(u,!0),{type:"codespan",raw:t[0],text:u}}},u.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},u.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2],[])}},u.autolink=function(e,t){var u,n,r=this.rules.inline.autolink.exec(e);if(r)return"@"===r[2]?(u=f(this.options.mangle?t(r[1]):r[1]),n="mailto:"+u):(u=f(r[1]),n=u),{type:"link",raw:r[0],text:u,href:n,tokens:[{type:"text",raw:u,text:u}]}},u.url=function(e,t){var u;if(u=this.rules.inline.url.exec(e)){var n,r;if("@"===u[2])n=f(this.options.mangle?t(u[0]):u[0]),r="mailto:"+n;else{var i;do{i=u[0],u[0]=this.rules.inline._backpedal.exec(u[0])[0]}while(i!==u[0]);n=f(u[0]),r="www."===u[1]?"http://"+n:n}return{type:"link",raw:u[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}},u.inlineText=function(e,t){var u,n=this.rules.inline.text.exec(e);if(n)return u=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(n[0]):f(n[0]):n[0]:f(this.options.smartypants?t(n[0]):n[0]),{type:"text",raw:n[0],text:u}},t}(),O={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?]+)>?(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:v,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};O.def=d(O.def).replace("label",O._label).replace("title",O._title).getRegex(),O.bullet=/(?:[*+-]|\d{1,9}[.)])/,O.listItemStart=d(/^( *)(bull) */).replace("bull",O.bullet).getRegex(),O.list=d(O.list).replace(/bull/g,O.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+O.def.source+")").getRegex(),O._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",O._comment=/|$)/,O.html=d(O.html,"i").replace("comment",O._comment).replace("tag",O._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),O.paragraph=d(O._paragraph).replace("hr",O.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",O._tag).getRegex(),O.blockquote=d(O.blockquote).replace("paragraph",O.paragraph).getRegex(),O.normal=y({},O),O.gfm=y({},O.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),O.gfm.table=d(O.gfm.table).replace("hr",O.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",O._tag).getRegex(),O.gfm.paragraph=d(O._paragraph).replace("hr",O.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",O.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",O._tag).getRegex(),O.pedantic=y({},O.normal,{html:d("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",O._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:v,paragraph:d(O.normal._paragraph).replace("hr",O.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",O.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var q={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:v,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[^*]+(?=[^*])|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:v,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\.5&&(u="x"+u.toString(16)),n+="&#"+u+";";return n}q._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",q.punctuation=d(q.punctuation).replace(/punctuation/g,q._punctuation).getRegex(),q.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,q.escapedEmSt=/\\\*|\\_/g,q._comment=d(O._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),q.emStrong.lDelim=d(q.emStrong.lDelim).replace(/punct/g,q._punctuation).getRegex(),q.emStrong.rDelimAst=d(q.emStrong.rDelimAst,"g").replace(/punct/g,q._punctuation).getRegex(),q.emStrong.rDelimUnd=d(q.emStrong.rDelimUnd,"g").replace(/punct/g,q._punctuation).getRegex(),q._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,q._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,q._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,q.autolink=d(q.autolink).replace("scheme",q._scheme).replace("email",q._email).getRegex(),q._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,q.tag=d(q.tag).replace("comment",q._comment).replace("attribute",q._attribute).getRegex(),q._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,q._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,q._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,q.link=d(q.link).replace("label",q._label).replace("href",q._href).replace("title",q._title).getRegex(),q.reflink=d(q.reflink).replace("label",q._label).replace("ref",O._label).getRegex(),q.nolink=d(q.nolink).replace("ref",O._label).getRegex(),q.reflinkSearch=d(q.reflinkSearch,"g").replace("reflink",q.reflink).replace("nolink",q.nolink).getRegex(),q.normal=y({},q),q.pedantic=y({},q.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:d(/^!?\[(label)\]\((.*?)\)/).replace("label",q._label).getRegex(),reflink:d(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",q._label).getRegex()}),q.gfm=y({},q.normal,{escape:d(q.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\0?t[t.length-1].raw+="\n":t.push(u);else if(u=this.tokenizer.code(e))e=e.substring(u.raw.length),n=t[t.length-1],!n||"paragraph"!==n.type&&"text"!==n.type?t.push(u):(n.raw+="\n"+u.raw,n.text+="\n"+u.text,this.inlineQueue[this.inlineQueue.length-1].src=n.text);else if(u=this.tokenizer.fences(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.heading(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.hr(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.blockquote(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.list(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.html(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.def(e))e=e.substring(u.raw.length),n=t[t.length-1],!n||"paragraph"!==n.type&&"text"!==n.type?this.tokens.links[u.tag]||(this.tokens.links[u.tag]={href:u.href,title:u.title}):(n.raw+="\n"+u.raw,n.text+="\n"+u.raw,this.inlineQueue[this.inlineQueue.length-1].src=n.text);else if(u=this.tokenizer.table(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.lheading(e))e=e.substring(u.raw.length),t.push(u);else if(r=e,this.options.extensions&&this.options.extensions.startBlock&&function(){var t=1/0,u=e.slice(1),n=void 0;s.options.extensions.startBlock.forEach((function(e){n=e.call({lexer:this},u),"number"===typeof n&&n>=0&&(t=Math.min(t,n))})),t<1/0&&t>=0&&(r=e.substring(0,t+1))}(),this.state.top&&(u=this.tokenizer.paragraph(r)))n=t[t.length-1],i&&"paragraph"===n.type?(n.raw+="\n"+u.raw,n.text+="\n"+u.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):t.push(u),i=r.length!==e.length,e=e.substring(u.raw.length);else if(u=this.tokenizer.text(e))e=e.substring(u.raw.length),n=t[t.length-1],n&&"text"===n.type?(n.raw+="\n"+u.raw,n.text+="\n"+u.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):t.push(u);else if(e){var l="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(l);break}throw new Error(l)}return this.state.top=!0,t},n.inline=function(e,t){this.inlineQueue.push({src:e,tokens:t})},n.inlineTokens=function(e,t){var u,n,r,i=this;void 0===t&&(t=[]);var s,l,a,D=e;if(this.tokens.links){var o=Object.keys(this.tokens.links);if(o.length>0)while(null!=(s=this.tokenizer.rules.inline.reflinkSearch.exec(D)))o.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(D=D.slice(0,s.index)+"["+R("a",s[0].length-2)+"]"+D.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}while(null!=(s=this.tokenizer.rules.inline.blockSkip.exec(D)))D=D.slice(0,s.index)+"["+R("a",s[0].length-2)+"]"+D.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);while(null!=(s=this.tokenizer.rules.inline.escapedEmSt.exec(D)))D=D.slice(0,s.index)+"++"+D.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);while(e)if(l||(a=""),l=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some((function(n){return!!(u=n.call({lexer:i},e,t))&&(e=e.substring(u.raw.length),t.push(u),!0)}))))if(u=this.tokenizer.escape(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.tag(e))e=e.substring(u.raw.length),n=t[t.length-1],n&&"text"===u.type&&"text"===n.type?(n.raw+=u.raw,n.text+=u.text):t.push(u);else if(u=this.tokenizer.link(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(u.raw.length),n=t[t.length-1],n&&"text"===u.type&&"text"===n.type?(n.raw+=u.raw,n.text+=u.text):t.push(u);else if(u=this.tokenizer.emStrong(e,D,a))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.codespan(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.br(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.del(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.autolink(e,j))e=e.substring(u.raw.length),t.push(u);else if(this.state.inLink||!(u=this.tokenizer.url(e,j))){if(r=e,this.options.extensions&&this.options.extensions.startInline&&function(){var t=1/0,u=e.slice(1),n=void 0;i.options.extensions.startInline.forEach((function(e){n=e.call({lexer:this},u),"number"===typeof n&&n>=0&&(t=Math.min(t,n))})),t<1/0&&t>=0&&(r=e.substring(0,t+1))}(),u=this.tokenizer.inlineText(r,L))e=e.substring(u.raw.length),"_"!==u.raw.slice(-1)&&(a=u.raw.slice(-1)),l=!0,n=t[t.length-1],n&&"text"===n.type?(n.raw+=u.raw,n.text+=u.text):t.push(u);else if(e){var c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(c);break}throw new Error(c)}}else e=e.substring(u.raw.length),t.push(u);return t},u(t,null,[{key:"rules",get:function(){return{block:O,inline:q}}}]),t}(),Q=function(){function t(t){this.options=t||e.defaults}var u=t.prototype;return u.code=function(e,t,u){var n=(t||"").match(/\S*/)[0];if(this.options.highlight){var r=this.options.highlight(e,n);null!=r&&r!==e&&(u=!0,e=r)}return e=e.replace(/\n$/,"")+"\n",n?'
'+(u?e:f(e,!0))+"
\n":"
"+(u?e:f(e,!0))+"
\n"},u.blockquote=function(e){return"
\n"+e+"
\n"},u.html=function(e){return e},u.heading=function(e,t,u,n){if(this.options.headerIds){var r=this.options.headerPrefix+n.slug(u);return"'+e+"\n"}return""+e+"\n"},u.hr=function(){return this.options.xhtml?"
\n":"
\n"},u.list=function(e,t,u){var n=t?"ol":"ul",r=t&&1!==u?' start="'+u+'"':"";return"<"+n+r+">\n"+e+"\n"},u.listitem=function(e){return"
  • "+e+"
  • \n"},u.checkbox=function(e){return" "},u.paragraph=function(e){return"

    "+e+"

    \n"},u.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},u.tablerow=function(e){return"\n"+e+"\n"},u.tablecell=function(e,t){var u=t.header?"th":"td",n=t.align?"<"+u+' align="'+t.align+'">':"<"+u+">";return n+e+"\n"},u.strong=function(e){return""+e+""},u.em=function(e){return""+e+""},u.codespan=function(e){return""+e+""},u.br=function(){return this.options.xhtml?"
    ":"
    "},u.del=function(e){return""+e+""},u.link=function(e,t,u){if(e=E(this.options.sanitize,this.options.baseUrl,e),null===e)return u;var n='",n},u.image=function(e,t,u){if(e=E(this.options.sanitize,this.options.baseUrl,e),null===e)return u;var n=''+u+'":">",n},u.text=function(e){return e},t}(),U=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,u){return""+u},t.image=function(e,t,u){return""+u},t.br=function(){return""},e}(),M=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var u=e,n=0;if(this.seen.hasOwnProperty(u)){n=this.seen[e];do{n++,u=e+"-"+n}while(this.seen.hasOwnProperty(u))}return t||(this.seen[e]=n,this.seen[u]=0),u},t.slug=function(e,t){void 0===t&&(t={});var u=this.serialize(e);return this.getNextSafeSlug(u,t.dryrun)},e}(),N=function(){function t(t){this.options=t||e.defaults,this.options.renderer=this.options.renderer||new Q,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new U,this.slugger=new M}t.parse=function(e,u){var n=new t(u);return n.parse(e)},t.parseInline=function(e,u){var n=new t(u);return n.parseInline(e)};var u=t.prototype;return u.parse=function(e,t){void 0===t&&(t=!0);var u,n,r,i,s,l,a,D,o,c,h,p,f,g,A,d,k,C,E,x="",m=e.length;for(u=0;u0&&"paragraph"===A.tokens[0].type?(A.tokens[0].text=C+" "+A.tokens[0].text,A.tokens[0].tokens&&A.tokens[0].tokens.length>0&&"text"===A.tokens[0].tokens[0].type&&(A.tokens[0].tokens[0].text=C+" "+A.tokens[0].tokens[0].text)):A.tokens.unshift({type:"text",text:C}):g+=C),g+=this.parse(A.tokens,f),o+=this.renderer.listitem(g,k,d);x+=this.renderer.list(o,h,p);continue;case"html":x+=this.renderer.html(c.text);continue;case"paragraph":x+=this.renderer.paragraph(this.parseInline(c.tokens));continue;case"text":o=c.tokens?this.parseInline(c.tokens):c.text;while(u+1An error occurred:

    "+f(a.message+"",!0)+"
    ";throw a}}J.options=J.setOptions=function(e){return y(J.defaults,e),l(J.defaults),J},J.getDefaults=s,J.defaults=e.defaults,J.use=function(){for(var e=arguments.length,t=new Array(e),u=0;uAn error occurred:

    "+f(n.message+"",!0)+"
    ";throw n}},J.Parser=N,J.parser=N.parse,J.Renderer=Q,J.TextRenderer=U,J.Lexer=P,J.lexer=P.lex,J.Tokenizer=Z,J.Slugger=M,J.parse=J;var X=J.options,G=J.setOptions,V=J.use,H=J.walkTokens,K=J.parseInline,W=J,Y=N.parse,ee=P.lex;e.Lexer=P,e.Parser=N,e.Renderer=Q,e.Slugger=M,e.TextRenderer=U,e.Tokenizer=Z,e.getDefaults=s,e.lexer=ee,e.marked=J,e.options=X,e.parse=W,e.parseInline=K,e.parser=Y,e.setOptions=G,e.use=V,e.walkTokens=H,Object.defineProperty(e,"__esModule",{value:!0})}))}}]); +//# sourceMappingURL=kubewarden-1.6.3.umd.min.vendors~markdown.js.map \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.vendors~markdown.js.map b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.vendors~markdown.js.map new file mode 100644 index 0000000..ad4a43e --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/kubewarden-1.6.3.umd.min.vendors~markdown.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-1.6.3//home/runner/work/kubewarden-ui/kubewarden-ui/node_modules/marked/lib/marked.umd.js"],"names":["global","factory","exports","this","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","_unsupportedIterableToArray","o","minLen","_arrayLikeToArray","n","toString","call","slice","constructor","name","Array","from","test","arr","len","arr2","_createForOfIteratorHelperLoose","allowArrayLike","it","Symbol","iterator","next","bind","isArray","done","value","TypeError","getDefaults","baseUrl","breaks","extensions","gfm","headerIds","headerPrefix","highlight","langPrefix","mangle","pedantic","renderer","sanitize","sanitizer","silent","smartLists","smartypants","tokenizer","walkTokens","xhtml","changeDefaults","newDefaults","defaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape","html","encode","replace","unescapeTest","unescape","_","toLowerCase","charAt","String","fromCharCode","parseInt","substring","caret","edit","regex","opt","source","obj","val","getRegex","RegExp","nonWordAndColonTest","originIndependentUrl","cleanUrl","base","href","prot","decodeURIComponent","e","indexOf","resolveUrl","encodeURI","baseUrls","justDomain","protocol","domain","rtrim","relativeBase","noopTest","exec","merge","arguments","hasOwnProperty","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","split","trim","shift","pop","splice","push","c","invert","l","suffLen","currChar","findClosingBracket","b","level","checkSanitizeDeprecation","console","warn","repeatString","pattern","result","outputLink","cap","link","raw","lexer","title","text","state","inLink","token","type","tokens","inlineTokens","indentCodeCompensation","matchIndentToCode","indentToCode","map","node","matchIndentInNode","indentInNode","join","Tokenizer","options","_proto","space","src","rules","block","newline","code","codeBlockStyle","fences","lang","heading","trimmed","depth","inline","hr","blockquote","blockTokens","list","istask","ischecked","indent","blankLine","endsWithBlankLine","line","nextLine","rawLine","itemContents","endEarly","bull","isordered","ordered","start","loose","items","itemRegex","trimLeft","search","nextBulletRegex","Math","min","hrRegex","fencesBeginRegex","task","checked","trimRight","top","spacers","filter","t","hasMultipleLineBreaks","every","_step","chars","lineBreaks","_iterator","_char","pre","def","tag","table","item","header","align","rows","j","k","lheading","paragraph","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","_escapes","reflink","links","nolink","emStrong","maskedSrc","prevChar","lDelim","nextChar","punctuation","rDelim","rLength","lLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","lastIndex","_text","index","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","url","prevCapZero","_backpedal","inlineText","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","normal","reflinkSearch","out","charCodeAt","random","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","Lexer","create","inlineQueue","lex","lexInline","lastToken","cutSrc","lastParagraphClipped","_this","leading","tabs","repeat","some","extTokenizer","startBlock","startIndex","Infinity","tempSrc","tempStart","forEach","getStartIndex","errMsg","error","Error","_this2","keepPrevChar","keys","includes","lastIndexOf","startInline","get","Renderer","_code","infostring","quote","_html","slugger","id","slug","body","startatt","listitem","checkbox","tablerow","content","tablecell","flags","image","TextRenderer","Slugger","seen","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","Parser","textRenderer","parse","parser","parseInline","l2","l3","cell","itemBody","ret","renderers","unshift","marked","callback","err","pending","setTimeout","_tokens","message","setOptions","use","_len","args","_key","hasExtensions","opts","apply","concat","childTokens","pack","ext","prevRenderer","_len2","_key2","_loop","prop","_len3","_key3","_loop2","prevTokenizer","_len4","_key4","_walkTokens","_loop3","_step2","_iterator2","_step3","_iterator3","_step4","_iterator4","_cell"],"mappings":"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","file":"kubewarden-1.6.3.umd.min.vendors~markdown.js","sourcesContent":["/**\n * marked - a markdown parser\n * Copyright (c) 2011-2022, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.marked = {}));\n})(this, (function (exports) { 'use strict';\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n function getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n }\n exports.defaults = getDefaults();\n function changeDefaults(newDefaults) {\n exports.defaults = newDefaults;\n }\n\n /**\n * Helpers\n */\n var escapeTest = /[&<>\"']/;\n var escapeReplace = /[&<>\"']/g;\n var escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\n var escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n var escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n var getEscapeReplacement = function getEscapeReplacement(ch) {\n return escapeReplacements[ch];\n };\n\n function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n }\n var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n /**\n * @param {string} html\n */\n\n function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n\n return '';\n });\n }\n var caret = /(^|[^\\[])\\^/g;\n /**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\n\n function edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n var obj = {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n }\n var nonWordAndColonTest = /[^\\w:]/g;\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n /**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\n\n function cleanUrl(sanitize, base, href) {\n if (sanitize) {\n var prot;\n\n try {\n prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n\n return href;\n }\n var baseUrls = {};\n var justDomain = /^[^:]+:\\/*[^/]*$/;\n var protocol = /^([^:]+:)[\\s\\S]*$/;\n var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n /**\n * @param {string} base\n * @param {string} href\n */\n\n function resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n\n base = baseUrls[' ' + base];\n var relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n }\n var noopTest = {\n exec: function noopTest() {}\n };\n function merge(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n }\n function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n\n while (--curr >= 0 && str[curr] === '\\\\') {\n escaped = !escaped;\n }\n\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n var i = 0; // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n\n if (!cells[0].trim()) {\n cells.shift();\n }\n\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) {\n cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n\n return cells;\n }\n /**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\n\n function rtrim(str, c, invert) {\n var l = str.length;\n\n if (l === 0) {\n return '';\n } // Length of suffix matching the invert condition.\n\n\n var suffLen = 0; // Step left until we fail to match the invert condition.\n\n while (suffLen < l) {\n var currChar = str.charAt(l - suffLen - 1);\n\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n }\n function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n var l = str.length;\n var level = 0,\n i = 0;\n\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n\n if (level < 0) {\n return i;\n }\n }\n }\n\n return -1;\n }\n function checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n } // copied from https://stackoverflow.com/a/5450113/806777\n\n /**\n * @param {string} pattern\n * @param {number} count\n */\n\n function repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n\n var result = '';\n\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n\n count >>= 1;\n pattern += pattern;\n }\n\n return result + pattern;\n }\n\n function outputLink(cap, link, raw, lexer) {\n var href = link.href;\n var title = link.title ? escape(link.title) : null;\n var text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n var token = {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: text,\n tokens: lexer.inlineTokens(text, [])\n };\n lexer.state.inLink = false;\n return token;\n }\n\n return {\n type: 'image',\n raw: raw,\n href: href,\n title: title,\n text: escape(text)\n };\n }\n\n function indentCodeCompensation(raw, text) {\n var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n var indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(function (node) {\n var matchIndentInNode = node.match(/^\\s+/);\n\n if (matchIndentInNode === null) {\n return node;\n }\n\n var indentInNode = matchIndentInNode[0];\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n }).join('\\n');\n }\n /**\n * Tokenizer\n */\n\n\n var Tokenizer = /*#__PURE__*/function () {\n function Tokenizer(options) {\n this.options = options || exports.defaults;\n }\n\n var _proto = Tokenizer.prototype;\n\n _proto.space = function space(src) {\n var cap = this.rules.block.newline.exec(src);\n\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n };\n\n _proto.code = function code(src) {\n var cap = this.rules.block.code.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n };\n\n _proto.fences = function fences(src) {\n var cap = this.rules.block.fences.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw: raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: text\n };\n }\n };\n\n _proto.heading = function heading(src) {\n var cap = this.rules.block.heading.exec(src);\n\n if (cap) {\n var text = cap[2].trim(); // remove trailing #s\n\n if (/#$/.test(text)) {\n var trimmed = rtrim(text, '#');\n\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n var token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text,\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.hr = function hr(src) {\n var cap = this.rules.block.hr.exec(src);\n\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n };\n\n _proto.blockquote = function blockquote(src) {\n var cap = this.rules.block.blockquote.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens: this.lexer.blockTokens(text, []),\n text: text\n };\n }\n };\n\n _proto.list = function list(src) {\n var cap = this.rules.block.list.exec(src);\n\n if (cap) {\n var raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;\n var bull = cap[1].trim();\n var isordered = bull.length > 1;\n var list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? \"\\\\d{1,9}\\\\\" + bull.slice(-1) : \"\\\\\" + bull;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n } // Get next list item\n\n\n var itemRegex = new RegExp(\"^( {0,3}\" + bull + \")((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))\"); // Check if current bullet point can start a new List Item\n\n while (src) {\n endEarly = false;\n\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) {\n // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n line = cap[2].split('\\n', 1)[0];\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) {\n // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n var nextBulletRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:[*+-]|\\\\d{1,9}[.)])((?: [^\\\\n]*)?(?:\\\\n|$))\");\n var hrRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)\");\n var fencesBeginRegex = new RegExp(\"^( {0,\" + Math.min(3, indent - 1) + \"})(```|~~~)\"); // Check if following lines should be included in List Item\n\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n line = rawLine; // Re-align to follow commonmark nesting rules\n\n if (this.options.pedantic) {\n line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n } // End list item if found code fences\n\n\n if (fencesBeginRegex.test(line)) {\n break;\n } // End list item if found start of new heading\n\n\n if (this.rules.block.heading.test(line)) {\n break;\n } // End list item if found start of new bullet\n\n\n if (nextBulletRegex.test(line)) {\n break;\n } // Horizontal rule found\n\n\n if (hrRegex.test(src)) {\n break;\n }\n\n if (line.search(/[^ ]/) >= indent || !line.trim()) {\n // Dedent if possible\n itemContents += '\\n' + line.slice(indent);\n } else if (!blankLine) {\n // Until blank line, item doesn't need indentation\n itemContents += '\\n' + line;\n } else {\n // Otherwise, improper indentation ends this item\n break;\n }\n\n if (!blankLine && !line.trim()) {\n // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n } // Check for task list items\n\n\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n list.raw += raw;\n } // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n\n\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n var l = list.items.length; // Item child tokens handled here at end because we needed to have the final item to trim it first\n\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n var spacers = list.items[i].tokens.filter(function (t) {\n return t.type === 'space';\n });\n var hasMultipleLineBreaks = spacers.every(function (t) {\n var chars = t.raw.split('');\n var lineBreaks = 0;\n\n for (var _iterator = _createForOfIteratorHelperLoose(chars), _step; !(_step = _iterator()).done;) {\n var _char = _step.value;\n\n if (_char === '\\n') {\n lineBreaks += 1;\n }\n\n if (lineBreaks > 1) {\n return true;\n }\n }\n\n return false;\n });\n\n if (!list.loose && spacers.length && hasMultipleLineBreaks) {\n // Having a single line break doesn't mean a list is loose. A single line break is terminating the last list item\n list.loose = true;\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n };\n\n _proto.html = function html(src) {\n var cap = this.rules.block.html.exec(src);\n\n if (cap) {\n var token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n\n if (this.options.sanitize) {\n token.type = 'paragraph';\n token.text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.tokens = [];\n this.lexer.inline(token.text, token.tokens);\n }\n\n return token;\n }\n };\n\n _proto.def = function def(src) {\n var cap = this.rules.block.def.exec(src);\n\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n type: 'def',\n tag: tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n };\n\n _proto.table = function table(src) {\n var cap = this.rules.block.table.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1]).map(function (c) {\n return {\n text: c\n };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n var l = item.align.length;\n var i, j, k, row;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.rows.length;\n\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(function (c) {\n return {\n text: c\n };\n });\n } // parse child tokens inside headers and cells\n // header child tokens\n\n\n l = item.header.length;\n\n for (j = 0; j < l; j++) {\n item.header[j].tokens = [];\n this.lexer.inline(item.header[j].text, item.header[j].tokens);\n } // cell child tokens\n\n\n l = item.rows.length;\n\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n\n for (k = 0; k < row.length; k++) {\n row[k].tokens = [];\n this.lexer.inline(row[k].text, row[k].tokens);\n }\n }\n\n return item;\n }\n }\n };\n\n _proto.lheading = function lheading(src) {\n var cap = this.rules.block.lheading.exec(src);\n\n if (cap) {\n var token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.paragraph = function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n\n if (cap) {\n var token = {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.text = function text(src) {\n var cap = this.rules.block.text.exec(src);\n\n if (cap) {\n var token = {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.escape = function escape$1(src) {\n var cap = this.rules.inline.escape.exec(src);\n\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n };\n\n _proto.tag = function tag(src) {\n var cap = this.rules.inline.tag.exec(src);\n\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.link = function link(src) {\n var cap = this.rules.inline.link.exec(src);\n\n if (cap) {\n var trimmedUrl = cap[2].trim();\n\n if (!this.options.pedantic && /^$/.test(trimmedUrl)) {\n return;\n } // ending angle bracket cannot be escaped\n\n\n var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n var lastParenIndex = findClosingBracket(cap[2], '()');\n\n if (lastParenIndex > -1) {\n var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n var linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n\n var href = cap[2];\n var title = '';\n\n if (this.options.pedantic) {\n // split pedantic href and title\n var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n\n if (/^$/.test(trimmedUrl)) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n };\n\n _proto.reflink = function reflink(src, links) {\n var cap;\n\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n\n if (!link || !link.href) {\n var text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text: text\n };\n }\n\n return outputLink(cap, link, cap[0], this.lexer);\n }\n };\n\n _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {\n if (prevChar === void 0) {\n prevChar = '';\n }\n\n var match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return; // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n\n if (match[3] && prevChar.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDF70-\\uDF81\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/)) return;\n var nextChar = match[1] || match[2] || '';\n\n if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {\n var lLength = match[0].length - 1;\n var rDelim,\n rLength,\n delimTotal = lLength,\n midDelimTotal = 0;\n var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0; // Clip maskedSrc to same section of string as src (move to lexer?)\n\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) {\n // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); // Create `em` if smallest delimiter has odd char count. *a***\n\n if (Math.min(lLength, rLength) % 2) {\n var _text = src.slice(1, lLength + match.index + rLength);\n\n return {\n type: 'em',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: _text,\n tokens: this.lexer.inlineTokens(_text, [])\n };\n } // Create 'strong' if smallest delimiter has even char count. **a***\n\n\n var text = src.slice(2, lLength + match.index + rLength - 1);\n return {\n type: 'strong',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: text,\n tokens: this.lexer.inlineTokens(text, [])\n };\n }\n }\n };\n\n _proto.codespan = function codespan(src) {\n var cap = this.rules.inline.code.exec(src);\n\n if (cap) {\n var text = cap[2].replace(/\\n/g, ' ');\n var hasNonSpaceChars = /[^ ]/.test(text);\n var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.br = function br(src) {\n var cap = this.rules.inline.br.exec(src);\n\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n };\n\n _proto.del = function del(src) {\n var cap = this.rules.inline.del.exec(src);\n\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2], [])\n };\n }\n };\n\n _proto.autolink = function autolink(src, mangle) {\n var cap = this.rules.inline.autolink.exec(src);\n\n if (cap) {\n var text, href;\n\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.url = function url(src, mangle) {\n var cap;\n\n if (cap = this.rules.inline.url.exec(src)) {\n var text, href;\n\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n var prevCapZero;\n\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n\n text = escape(cap[0]);\n\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.inlineText = function inlineText(src, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n\n if (cap) {\n var text;\n\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n\n return {\n type: 'text',\n raw: cap[0],\n text: text\n };\n }\n };\n\n return Tokenizer;\n }();\n\n /**\n * Block-Level Grammar\n */\n\n var block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?]+)>?(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n };\n block._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\n block._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n block.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex();\n block.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n block.listItemStart = edit(/^( *)(bull) */).replace('bull', block.bullet).getRegex();\n block.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block.def.source + ')').getRegex();\n block._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\n block._comment = /|$)/;\n block.html = edit(block.html, 'i').replace('comment', block._comment).replace('tag', block._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n block.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '').replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();\n /**\n * Normal Block Grammar\n */\n\n block.normal = merge({}, block);\n /**\n * GFM Block Grammar\n */\n\n block.gfm = merge({}, block.normal, {\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n\n });\n block.gfm.table = edit(block.gfm.table).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n block.gfm.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n /**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\n block.pedantic = merge({}, block.normal, {\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n paragraph: edit(block.normal._paragraph).replace('hr', block.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n });\n /**\n * Inline-Level Grammar\n */\n\n var inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment' + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^',\n // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^[^_*]*?\\_\\_[^_*]*?\\*[^_*]*?(?=\\_\\_)|[^*]+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?\\_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~';\n inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, \n\n inline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n inline.escapedEmSt = /\\\\\\*|\\\\_/g;\n inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n inline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();\n inline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n inline.tag = edit(inline.tag).replace('comment', inline._comment).replace('attribute', inline._attribute).getRegex();\n inline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n inline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\n inline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n inline.link = edit(inline.link).replace('label', inline._label).replace('href', inline._href).replace('title', inline._title).getRegex();\n inline.reflink = edit(inline.reflink).replace('label', inline._label).replace('ref', block._label).getRegex();\n inline.nolink = edit(inline.nolink).replace('ref', block._label).getRegex();\n inline.reflinkSearch = edit(inline.reflinkSearch, 'g').replace('reflink', inline.reflink).replace('nolink', inline.nolink).getRegex();\n /**\n * Normal Inline Grammar\n */\n\n inline.normal = merge({}, inline);\n /**\n * Pedantic Inline Grammar\n */\n\n inline.pedantic = merge({}, inline.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline._label).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline._label).getRegex()\n });\n /**\n * GFM Inline Grammar\n */\n\n inline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n /**\n * Block Lexer\n */\n\n\n var Lexer = /*#__PURE__*/function () {\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || exports.defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n var rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n\n\n /**\n * Static Lex Method\n */\n Lexer.lex = function lex(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n ;\n\n Lexer.lexInline = function lexInline(src, options) {\n var lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n ;\n\n var _proto = Lexer.prototype;\n\n _proto.lex = function lex(src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n var next;\n\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n /**\n * Lexing\n */\n ;\n\n _proto.blockTokens = function blockTokens(src, tokens) {\n var _this = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, function (_, leading, tabs) {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n var token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // newline\n\n\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n\n continue;\n } // code\n\n\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.\n\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // fences\n\n\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // heading\n\n\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // hr\n\n\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // blockquote\n\n\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // list\n\n\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // html\n\n\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // def\n\n\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n\n continue;\n } // table (gfm)\n\n\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // lheading\n\n\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startBlock) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this.options.extensions.startBlock.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n } // text\n\n\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n };\n\n _proto.inline = function inline(src, tokens) {\n this.inlineQueue.push({\n src: src,\n tokens: tokens\n });\n }\n /**\n * Lexing/Compiling\n */\n ;\n\n _proto.inlineTokens = function inlineTokens(src, tokens) {\n var _this2 = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n var token, lastToken, cutSrc; // String with links masked to avoid interference with em and strong\n\n var maskedSrc = src;\n var match;\n var keepPrevChar, prevChar; // Mask out reflinks\n\n if (this.tokens.links) {\n var links = Object.keys(this.tokens.links);\n\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n } // Mask out other blocks\n\n\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n } // Mask out escaped em & strong delimiters\n\n\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n\n keepPrevChar = false; // extensions\n\n if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this2\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // escape\n\n\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // tag\n\n\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // link\n\n\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // reflink, nolink\n\n\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // em & strong\n\n\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // code\n\n\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // br\n\n\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // del (gfm)\n\n\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // autolink\n\n\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // url (gfm)\n\n\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startInline) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this2.options.extensions.startInline.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.slice(-1) !== '_') {\n // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _createClass(Lexer, null, [{\n key: \"rules\",\n get: function get() {\n return {\n block: block,\n inline: inline\n };\n }\n }]);\n\n return Lexer;\n }();\n\n /**\n * Renderer\n */\n\n var Renderer = /*#__PURE__*/function () {\n function Renderer(options) {\n this.options = options || exports.defaults;\n }\n\n var _proto = Renderer.prototype;\n\n _proto.code = function code(_code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n\n if (this.options.highlight) {\n var out = this.options.highlight(_code, lang);\n\n if (out != null && out !== _code) {\n escaped = true;\n _code = out;\n }\n }\n\n _code = _code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    ' + (escaped ? _code : escape(_code, true)) + '
    \\n';\n }\n\n return '
    ' + (escaped ? _code : escape(_code, true)) + '
    \\n';\n }\n /**\n * @param {string} quote\n */\n ;\n\n _proto.blockquote = function blockquote(quote) {\n return \"
    \\n\" + quote + \"
    \\n\";\n };\n\n _proto.html = function html(_html) {\n return _html;\n }\n /**\n * @param {string} text\n * @param {string} level\n * @param {string} raw\n * @param {any} slugger\n */\n ;\n\n _proto.heading = function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n var id = this.options.headerPrefix + slugger.slug(raw);\n return \"\" + text + \"\\n\";\n } // ignore IDs\n\n\n return \"\" + text + \"\\n\";\n };\n\n _proto.hr = function hr() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n };\n\n _proto.list = function list(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.listitem = function listitem(text) {\n return \"
  • \" + text + \"
  • \\n\";\n };\n\n _proto.checkbox = function checkbox(checked) {\n return ' ';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.paragraph = function paragraph(text) {\n return \"

    \" + text + \"

    \\n\";\n }\n /**\n * @param {string} header\n * @param {string} body\n */\n ;\n\n _proto.table = function table(header, body) {\n if (body) body = \"\" + body + \"\";\n return '\\n' + '\\n' + header + '\\n' + body + '
    \\n';\n }\n /**\n * @param {string} content\n */\n ;\n\n _proto.tablerow = function tablerow(content) {\n return \"\\n\" + content + \"\\n\";\n };\n\n _proto.tablecell = function tablecell(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align ? \"<\" + type + \" align=\\\"\" + flags.align + \"\\\">\" : \"<\" + type + \">\";\n return tag + content + (\"\\n\");\n }\n /**\n * span level renderer\n * @param {string} text\n */\n ;\n\n _proto.strong = function strong(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.em = function em(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.codespan = function codespan(text) {\n return \"\" + text + \"\";\n };\n\n _proto.br = function br() {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.del = function del(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n ;\n\n _proto.link = function link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '
    ';\n return out;\n }\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n ;\n\n _proto.image = function image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = \"\\\"\"' : '>';\n return out;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n return Renderer;\n }();\n\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n var TextRenderer = /*#__PURE__*/function () {\n function TextRenderer() {}\n\n var _proto = TextRenderer.prototype;\n\n // no need for block level renderers\n _proto.strong = function strong(text) {\n return text;\n };\n\n _proto.em = function em(text) {\n return text;\n };\n\n _proto.codespan = function codespan(text) {\n return text;\n };\n\n _proto.del = function del(text) {\n return text;\n };\n\n _proto.html = function html(text) {\n return text;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n _proto.link = function link(href, title, text) {\n return '' + text;\n };\n\n _proto.image = function image(href, title, text) {\n return '' + text;\n };\n\n _proto.br = function br() {\n return '';\n };\n\n return TextRenderer;\n }();\n\n /**\n * Slugger generates header id\n */\n var Slugger = /*#__PURE__*/function () {\n function Slugger() {\n this.seen = {};\n }\n /**\n * @param {string} value\n */\n\n\n var _proto = Slugger.prototype;\n\n _proto.serialize = function serialize(value) {\n return value.toLowerCase().trim() // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '') // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n * @param {string} originalSlug\n * @param {boolean} isDryRun\n */\n ;\n\n _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {\n var slug = originalSlug;\n var occurenceAccumulator = 0;\n\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n\n return slug;\n }\n /**\n * Convert string to unique id\n * @param {object} [options]\n * @param {boolean} [options.dryrun] Generates the next unique slug without\n * updating the internal accumulator.\n */\n ;\n\n _proto.slug = function slug(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n };\n\n return Slugger;\n }();\n\n /**\n * Parsing & Compiling\n */\n\n var Parser = /*#__PURE__*/function () {\n function Parser(options) {\n this.options = options || exports.defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n /**\n * Static Parse Method\n */\n\n\n Parser.parse = function parse(tokens, options) {\n var parser = new Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n ;\n\n Parser.parseInline = function parseInline(tokens, options) {\n var parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n ;\n\n var _proto = Parser.prototype;\n\n _proto.parse = function parse(tokens, top) {\n if (top === void 0) {\n top = true;\n }\n\n var out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space':\n {\n continue;\n }\n\n case 'hr':\n {\n out += this.renderer.hr();\n continue;\n }\n\n case 'heading':\n {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n\n case 'code':\n {\n out += this.renderer.code(token.text, token.lang, token.escaped);\n continue;\n }\n\n case 'table':\n {\n header = ''; // header\n\n cell = '';\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {\n header: true,\n align: token.align[j]\n });\n }\n\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.rows.length;\n\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n cell = '';\n l3 = row.length;\n\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {\n header: false,\n align: token.align[k]\n });\n }\n\n body += this.renderer.tablerow(cell);\n }\n\n out += this.renderer.table(header, body);\n continue;\n }\n\n case 'blockquote':\n {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n\n case 'list':\n {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = '';\n\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = '';\n\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n\n case 'html':\n {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n\n case 'paragraph':\n {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n\n case 'text':\n {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n ;\n\n _proto.parseInline = function parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n var out = '',\n i,\n token,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape':\n {\n out += renderer.text(token.text);\n break;\n }\n\n case 'html':\n {\n out += renderer.html(token.text);\n break;\n }\n\n case 'link':\n {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'image':\n {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n\n case 'strong':\n {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'em':\n {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'codespan':\n {\n out += renderer.codespan(token.text);\n break;\n }\n\n case 'br':\n {\n out += renderer.br();\n break;\n }\n\n case 'del':\n {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'text':\n {\n out += renderer.text(token.text);\n break;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n };\n\n return Parser;\n }();\n\n /**\n * Marked\n */\n\n function marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n if (callback) {\n var highlight = opt.highlight;\n var tokens;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n var done = function done(err) {\n var out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n return err ? callback(err) : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n if (!tokens.length) return done();\n var pending = 0;\n marked.walkTokens(tokens, function (token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(function () {\n highlight(token.text, token.lang, function (err, code) {\n if (err) {\n return done(err);\n }\n\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n try {\n var _tokens = Lexer.lex(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(_tokens, opt.walkTokens);\n }\n\n return Parser.parse(_tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n }\n /**\n * Options\n */\n\n marked.options = marked.setOptions = function (opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n };\n\n marked.getDefaults = getDefaults;\n marked.defaults = exports.defaults;\n /**\n * Use Extension\n */\n\n marked.use = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var opts = merge.apply(void 0, [{}].concat(args));\n var extensions = marked.defaults.extensions || {\n renderers: {},\n childTokens: {}\n };\n var hasExtensions;\n args.forEach(function (pack) {\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n hasExtensions = true;\n pack.extensions.forEach(function (ext) {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n\n if (ext.renderer) {\n // Renderer extensions\n var prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;\n\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var ret = ext.renderer.apply(this, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n\n if (ext.tokenizer) {\n // Tokenizer Extensions\n if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n\n if (ext.start) {\n // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n\n if (ext.childTokens) {\n // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n } // ==-- Parse \"overwrite\" extensions --== //\n\n\n if (pack.renderer) {\n (function () {\n var renderer = marked.defaults.renderer || new Renderer();\n\n var _loop = function _loop(prop) {\n var prevRenderer = renderer[prop]; // Replace renderer with func to run extension, but fall back if false\n\n renderer[prop] = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var ret = pack.renderer[prop].apply(renderer, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.renderer) {\n _loop(prop);\n }\n\n opts.renderer = renderer;\n })();\n }\n\n if (pack.tokenizer) {\n (function () {\n var tokenizer = marked.defaults.tokenizer || new Tokenizer();\n\n var _loop2 = function _loop2(prop) {\n var prevTokenizer = tokenizer[prop]; // Replace tokenizer with func to run extension, but fall back if false\n\n tokenizer[prop] = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var ret = pack.tokenizer[prop].apply(tokenizer, args);\n\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.tokenizer) {\n _loop2(prop);\n }\n\n opts.tokenizer = tokenizer;\n })();\n } // ==-- Parse WalkTokens extensions --== //\n\n\n if (pack.walkTokens) {\n var _walkTokens = marked.defaults.walkTokens;\n\n opts.walkTokens = function (token) {\n pack.walkTokens.call(this, token);\n\n if (_walkTokens) {\n _walkTokens.call(this, token);\n }\n };\n }\n\n if (hasExtensions) {\n opts.extensions = extensions;\n }\n\n marked.setOptions(opts);\n });\n };\n /**\n * Run callback for every token\n */\n\n\n marked.walkTokens = function (tokens, callback) {\n var _loop3 = function _loop3() {\n var token = _step.value;\n callback.call(marked, token);\n\n switch (token.type) {\n case 'table':\n {\n for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {\n var cell = _step2.value;\n marked.walkTokens(cell.tokens, callback);\n }\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {\n var row = _step3.value;\n\n for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n var _cell = _step4.value;\n marked.walkTokens(_cell.tokens, callback);\n }\n }\n\n break;\n }\n\n case 'list':\n {\n marked.walkTokens(token.items, callback);\n break;\n }\n\n default:\n {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {\n // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {\n marked.walkTokens(token[childTokens], callback);\n });\n } else if (token.tokens) {\n marked.walkTokens(token.tokens, callback);\n }\n }\n }\n };\n\n for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n _loop3();\n }\n };\n /**\n * Parse Inline\n * @param {string} src\n */\n\n\n marked.parseInline = function (src, opt) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked.parseInline(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n try {\n var tokens = Lexer.lexInline(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n return Parser.parseInline(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n };\n /**\n * Expose\n */\n\n\n marked.Parser = Parser;\n marked.parser = Parser.parse;\n marked.Renderer = Renderer;\n marked.TextRenderer = TextRenderer;\n marked.Lexer = Lexer;\n marked.lexer = Lexer.lex;\n marked.Tokenizer = Tokenizer;\n marked.Slugger = Slugger;\n marked.parse = marked;\n var options = marked.options;\n var setOptions = marked.setOptions;\n var use = marked.use;\n var walkTokens = marked.walkTokens;\n var parseInline = marked.parseInline;\n var parse = marked;\n var parser = Parser.parse;\n var lexer = Lexer.lex;\n\n exports.Lexer = Lexer;\n exports.Parser = Parser;\n exports.Renderer = Renderer;\n exports.Slugger = Slugger;\n exports.TextRenderer = TextRenderer;\n exports.Tokenizer = Tokenizer;\n exports.getDefaults = getDefaults;\n exports.lexer = lexer;\n exports.marked = marked;\n exports.options = options;\n exports.parse = parse;\n exports.parseInline = parseInline;\n exports.parser = parser;\n exports.setOptions = setOptions;\n exports.use = use;\n exports.walkTokens = walkTokens;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/1.6.3/plugin/package.json b/extensions/kubewarden/1.6.3/plugin/package.json new file mode 100644 index 0000000..b3a407c --- /dev/null +++ b/extensions/kubewarden/1.6.3/plugin/package.json @@ -0,0 +1,20 @@ +{ + "name": "kubewarden", + "description": "Kubewarden extension for Rancher Manager", + "icon": "https://raw.githubusercontent.com/rancher/ui-plugin-charts/main/icons/kubewarden/1.6.3-icon-kubewarden.svg", + "version": "1.6.3", + "private": false, + "rancher": true, + "engines": { + "node": ">=16" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "5.0.8", + "@vue/cli-service": "5.0.8", + "@vue/cli-plugin-typescript": "5.0.8" + }, + "files": [ + "**/*" + ], + "main": "kubewarden-1.6.3.umd.min.js" +} \ No newline at end of file diff --git a/icons/kubewarden/1.6.3-icon-kubewarden.svg b/icons/kubewarden/1.6.3-icon-kubewarden.svg new file mode 100644 index 0000000..99494a4 --- /dev/null +++ b/icons/kubewarden/1.6.3-icon-kubewarden.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/index.yaml b/index.yaml index a9c0d1b..c3b65f9 100644 --- a/index.yaml +++ b/index.yaml @@ -44,6 +44,26 @@ entries: - assets/elemental/elemental-1.2.0.tgz version: 1.2.0 kubewarden: + - annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/kube-version: '>= v1.16.0-0 < v1.31.0-0' + catalog.cattle.io/namespace: cattle-ui-plugin-system + catalog.cattle.io/os: linux + catalog.cattle.io/permits-os: linux, windows + catalog.cattle.io/rancher-version: '>= 2.7.5-0' + catalog.cattle.io/scope: management + catalog.cattle.io/ui-component: plugins + apiVersion: v2 + appVersion: 1.6.3 + created: "2024-07-26T10:59:05.557920541-04:00" + description: Kubewarden extension for Rancher Manager + digest: e526a8eb486427a04d6837c3256c1f6acb51e7dcfdd8b604dd6e75c7bf0abf32 + icon: https://raw.githubusercontent.com/rancher/ui-plugin-charts/main/icons/kubewarden/1.6.3-icon-kubewarden.svg + name: kubewarden + type: application + urls: + - assets/kubewarden/kubewarden-1.6.3.tgz + version: 1.6.3 - annotations: catalog.cattle.io/certified: rancher catalog.cattle.io/kube-version: '>= v1.16.0-0 < v1.31.0-0' @@ -566,4 +586,4 @@ entries: urls: - assets/neuvector-ui-ext/neuvector-ui-ext-1.0.0.tgz version: 1.0.0 -generated: "2024-07-17T06:48:26.173914905-04:00" +generated: "2024-07-26T10:59:05.557401704-04:00" diff --git a/manifest.json b/manifest.json index a1d5a16..0356096 100644 --- a/manifest.json +++ b/manifest.json @@ -43,7 +43,8 @@ "1.5.0", "1.6.0", "1.6.1", - "1.6.2" + "1.6.2", + "1.6.3" ] } }