diff --git a/cursos/dagger/00_actividades/01_modulo_1.md b/cursos/dagger/00_actividades/01_modulo_1.md new file mode 100644 index 00000000..3bd47935 --- /dev/null +++ b/cursos/dagger/00_actividades/01_modulo_1.md @@ -0,0 +1,3 @@ +# Módulo 1: Primeros Pasos con Dagger + +## diff --git a/cursos/dagger/01_dagger_101/01_que_es_dagger.md b/cursos/dagger/01_dagger_101/01_que_es_dagger.md new file mode 100644 index 00000000..fc4f6029 --- /dev/null +++ b/cursos/dagger/01_dagger_101/01_que_es_dagger.md @@ -0,0 +1,62 @@ +# ¿Qué es dagger? + +![Intro1](./../_media/01/intro1.svg) + +Dagger es un herramienta que permite crear y correr funciones dentro de containers con el propósito principal de integrar y desplegar código. + +Gracias a su particular diseño y al empleo de buildkit permite el empleo de contenedores por cada función de nuestro workflow. + +En palabras de su creador: ```Dagger es el primer motor de containerización de funciones```. + +## ¿Por qué usar dagger? + +### La filosofía + +Dagger parte de una filosofía clara: + +1. La construcción y testeo de software es un proceso "íntimo" al propio desarrollo y debe acompañarlo en todas sus fases. +2. El proceso debe poder expresarse en lenguajes conocidos (Go, NodeJS, Python...) y ser ejecutable en **cualquier** entorno (incluido el local). +3. La ejecución de nuestro proceso de dagger, por su naturaleza repetitiva, debe ser rápida, evitando realizar pasos innecesarios y solo revisitando aquellos que sean necesarios. +4. La construcción de nuestro proceso debería poderse beneficiar de piezas o módulos públicas o privadas puestas a nuestra disposición por la comunidad y/o terceros. + +Partiendo de esta filosofía, dagger ha sido construido de manera que: + +- Puede correr en todos los sitios (1) (2) exactamente igual que los contenedores de software. +- La ejecución crea un (DAG)[https://en.wikipedia.org/wiki/Directed_acyclic_graph] (grafo acíclico directo) para poder cachear todos y cada uno de los pasos y evitar volverlos a realizar en sucesivas iteraciones (salvo que sea necesario). +- Puede expresarse en los principales lenguajes de programación y beneficiarse de cualquier librería o módulo que tengamos a nuestra disposición en el stack elegido. +- Permite el empleo de módulos y funciones de terceros (daggerverse) de manera eficiente y sin preocuparnos del lenguaje en que estén expresados. + +Estos principios de construcción se destilan en una herramienta con la que implimentar una clara *estrategia de plataforma*. + +### La estrategia + +Cuando el equipo de plataforma se enfrenta a gestionar los ciclos de construcción y despliegue del software de una organización se encuentra con el siguiente **dilema**: + + +1. **Ansia de control**: la tentación de controlar de manera férrea los ciclos de integración y despliegue está justificada: a mayor control, mayor facilidad y seguridad en el trabajo de plataforma. +2. **Necesidad de flexibilidad**: no obstante, los equipos de desarrollo lidian con problemas específicos y propios de cada micro-servicio que motivan su necesidad de dar soluciones **ad hoc**. + +Si el control es excesivo: + +1. Se forman "cuellos de botella" donde varios equipos de desarrollo están esperando a que el equipo de plataforma ofrezca una solución a su problema específico. +2. El equipo de plataforma pierde eficacia al tener que adaptar su ciclo de trabajo a las necesidades propias de cada desarrollo pudiendo llegar a colapsar por inoperancia. + +Por otra parte, si la flexibilidad es total: + +1. Se crea una "jungla de tecnologías y soluciones" al permitir que cada equipo de desarrollo llegue a una solución específica para su problema lo cual hace inmantenible e ingestionable la plataforma a largo plazo. + +¿Cuál es, entonces, el equilibrio óptimo de control y flexibilidad? ¿Qué conjunto de herramientas pueden satisfacer ambas necesidades? + +Dagger aporta, aquí, su estrategia: + +* a) El equipo de plataforma emplea las características modulares y de neutralidad de lenguaje de dagger para ofrecer un conjunto de librerías y rutinas de trabajo en plataforma. +Estos elementos constituyen el marco de trabajo que permite que el control resida en el equipo de plataforma. + +* b) Por otra parte, los equipos de desarrollo emplean los módulos y funciones ofrecidas por plataforma en sus propios workflows utilizando el lenguaje de su preferencia y adaptándolo a sus necesidades específicas, obteniendo así la flexibilidad que reclaman y, manteniéndose al mismo tiempo dentro del marco ofrecido por plataforma. + + + + + + + diff --git a/cursos/dagger/01_dagger_101/01_que_es_helm.md b/cursos/dagger/01_dagger_101/01_que_es_helm.md new file mode 100755 index 00000000..dae8ca72 --- /dev/null +++ b/cursos/dagger/01_dagger_101/01_que_es_helm.md @@ -0,0 +1,81 @@ +# ¿Qué es HELM? + +![Intro1](./../_media/01/intro1.svg) + +Helm es una herramienta de gestión de artefactos de Kubernetes que permite instalar y gestionar conjuntos de recursos (services, deployments, jobs, configmaps...) como si de una sola aplicación se tratase. + +A veces llamado el apt/yum de Kubernetes, su empleo permite una mayor eficiencia y mejor gestión de las operaciones en k8s. + +## ¿Cuáles son los problemas que pretende resolver Helm? + +Todo lo que existe en kubernetes se expresa en forma de artefactos (objetos). Para que una aplicación funcione correctamente en Kubernetes, se pueden llegar a necesitar decenas e incluso centenas de estos objetos que además son dependientes entre sí. + +![Intro2](./../_media/01/intro2.png) + +*Fig 1. Conjunto de artefactos para una posible instalación de wordpress* + +Tal y como se puede apreciar en la figura 1, una aplicación en kubernetes puede emplear una cantidad importante de artefactos que: + +1. Necesitan desplegarse conjuntamente para que la aplicación funcione. +1. Es necesario borrar para "desinstalar" una aplicación. +1. Pueden tener que modificarse (actualizarse) por grupo en determinados momentos. + +Una de las soluciones a las que se suele recurrir para poder realizar estas tareas es la de la expresión de todos los artefactos en un único fichero de yaml (separados entre sí por ---) y recurrir al kubectl para poder lanzarlos y borrarlos. + +```shell +kubectl {create|apply|delete} +``` + +Esto, evidentemente, trae problemas a la hora de realizar modificaciones a ese bloque de código, así, se "inventan" soluciones como ficheros en bash que formateen cada artefacto y lo envíen al bloque final que se pasa al kubectl... + +Helm da respuesta a este problema mediante el concepto de release. + +Una release de Helm es una instalación de un grupo de artefactos de kubernetes que tratamos como si fuese una unidad: + +![Intro3](./../_media/01/intro3.png) + +*Fig 2. Casos de uso de una release desde Helm* + +Al existir la release, nos podemos despreocupar del conjunto, grande o pequeño, de artefactos que la integran, y tratarlo todo como una unidad. + +> Helm abstrae la complejidad de las aplicaciones residentes en kubernetes y las presenta como **releases** sobre las que podemos operar sin preocuparnos de su estructura interna ni del número de artefactos que la componen. + +Un segundo problema que presentan las aplicaciones en K8s es su configuración. Los artefactos que componen una aplicación en kubernetes tienen una configuración que expresa su funcionamiento y su forma de interactuar con los demás. Normalmente, estos objetos suelen tener dos partes bien diferenciadas: +- **Estructura**: elementos más o menos inmutables del objeto (Kind, Name, apiVersion, annotations, volumes...) + +- **Datos**: elementos más volátiles: valores de variables de entorno, puertos, límites de ejecución... + +Al administrar una aplicación en k8s, las operaciones suelen comportar la edición de los ficheros de artefactos (expresados en yaml) para modificar los valores (la parte de datos) generalmente sin tocar la estructura de los mismos. Al poco tiempo, se hace evidente la necesidad de usar algún tipo de sistema de [plantillas](https://es.wikipedia.org/wiki/Plantilla) que permita diferenciar la estructura (inmutable) de los artefactos de k8s de los datos (configuración volátil). Helm da una respuesta a este problema mediante un potente lenguaje de plantillas: el [go templates](https://pkg.go.dev/text/template?tab=doc). + +Mediante Helm, las aplicaciones (el grupo de artefactos que las conforman) se describen en un conjunto de plantillas, que conforman su estructura, que se pueden rellenar con la configuración que deseemos. + +Al conjunto de plantillas de artefactos que definen una aplicación concreta, en Helm se le da el nombre de **Chart**. + +![Intro4](./../_media/01/intro4.png) + +*Fig 3. Chart de helm* + +> Helm expresa la estructura de una aplicación mediante un conjunto de pantillas al que denomina **Chart** + +Una chart de Helm, por tanto, no es un conjunto de artefactos de Kubernetes: es un conjunto de plantillas de artefactos al que, aplicando la configuración que deseemos, produce lo que realmente se desplegará en nuestro clúster; esto es, la **release**. + +![Intro5](./../_media/01/intro5.png) + +*Fig 4. Esquema de conceptos en Helm* + +> Al aplicar nuestra configuración deseada a una chart obtenemos una release que es lo que realmente se desplegará en nuestro clúster de k8s. + +## ¿Por qué se le llama a Helm el apt/yum de Kubernetes? + +Como vimos en la sección anterior, Helm emplea charts que son conjuntos de plantillas para expresar la estructura de una aplicación para Kubernetes. Existe un [repositorio de charts](https://hub.helm.sh/) (al igual que existe para apt o yum) donde podemos encontrar plantillas para muchas aplicaciones y servicios (MariaDB, Wordpress, RabbitMQ, Elastic Search...) + +Podemos, por tanto, escoger la chart de cualquier aplicación del repositorio y, con un simple comando, instalarla en nuestro clúster. (Al igual que ocurre con apt o yum). Además, podremos establecer muchos de sus parámetros de configuración para definir el comportamiento que deseemos e instalarla. + +En un ejemplo, la chart de [MariaDB](https://hub.helm.sh/charts/bitnami/mariadb) + +## Tarea +**Echa un vistazo a la sección de "parameters" de la chart de MariaDB. Identifica algunos de los valores configurables.** + + + + diff --git a/cursos/dagger/01_dagger_101/02_empleo_basico_helm.md b/cursos/dagger/01_dagger_101/02_empleo_basico_helm.md new file mode 100755 index 00000000..51e38460 --- /dev/null +++ b/cursos/dagger/01_dagger_101/02_empleo_basico_helm.md @@ -0,0 +1,88 @@ +# Empleo básico de Helm + +## De la instalación de Helm + +Helm funciona como un cli que podemos instalar en nuestro PC local (al igual que [kubectl](https://kubernetes.io/docs/reference/kubectl/overview/)). De hecho, vamos a necesitar que kubectl esté instalado en el sistema donde queramos correr Helm. + +Para instalar Helm basta con seguir alguno de los métodos que se describen en esta [guía](https://helm.sh/docs/intro/install/). + +Una vez que lo tengamos instalado podremos ver su versión: +```shell +~ helm version --short +v3.0.0-rc.3+g2ed2067 +``` +## De la interacción con las releases + +Como sabemos, mediante Helm vemos las entidades residentes en nuestro clúster en forma de releases. + +En esta sección veremos las formas básicas de controlarlas. + +### a) Listado de releases +Parar obtener un listado de las releases de nuestro clúster, podemos recurrir a [helm list](https://helm.sh/docs/helm/helm_list/). + +Helm aisla las releases mediante [namespaces](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/) de kubernetes, así que, normalmente listamos las releases de un namespace concreto: + +```shell +~ helm ls -n curso-helm + +NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION +mi-bbdd curso-helm 1 2020-07-19 17:45:19.944032634 +0000 UTC deployed mariadb-7.6.1 10.3.23 +``` + +Como podemos ver, el listado de releases del namespace "curso-helm" nos da los siguientes resultados: +- Una release llamada mi-bbdd. +- El namespace al que pertenece. +- El número de revisión (sobre esto hablaremos más adelante). +- La fecha del último cambio. +- Su estado (en este caso, desplegada). +- El nombre y versión de la chart. +- La versión de la aplicación (sobre las diferencias entre versión de chart y aplicación hablaremos en otra sección). + +Si queremos ver todas las releases de todos los namespaces de un clúster, podemos recurrir al flag `--all-namespaces`: + +```shell +~ helm list --all-namespaces +NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION +mi-bbdd curso-helm 1 2020-07-19 17:45:19.944032634 +0000 UTC deployed mariadb-7.6.1 10.3.23 +``` + +> Helm distingue entre namespaces a la hora de interactuar con las **releases**. Por lo tanto, pueden existir dos releases con el mismo nombre en distintos namespaces. + +### b) Obtención de información de una release +Además de su listado, Helm nos ofrece otros métodos para obtener información de las releases existentes en un clúster. + +Mediante el comando [helm get](https://helm.sh/docs/helm/helm_get/) se pueden obtener distintas facetas relativas a una release: + +```shell +# obtener toda la información disponible relativa a una release +~ helm get all mi-bbdd -n curso-helm + +# obtener el manifiesto de una release +~ helm get manifest mi-bbdd -n curso-helm + +# obtener los valores de una release +~ helm get values mi-bbdd -n curso-helm +``` + +Existen varias facetas recuperables de la información relativa a una release, por ahora nos basta con conocer: +- **all**: toda la información disponible. +- **manifest**: el renderizado completo en yaml de la release (un fichero único con todos los artefactos y sus valores tal y como está instalado en el clúster) +- **values**: la configuración (la parte de datos) de la release, tanto la que aportamos nosotros a la hora de crearla como la que está establecida por defecto por parte de los desarrolladores de la chart. + +> Mediante el comando helm get se pueden obtener distintas facetas de la información existente sobre una release determinada. + +### c) Borrado de releases +Para eliminar una release de nuestro clúster, basta con emplear [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/). + +```shell +~ helm uninstall mi-bbdd -n curso-helm +release "mi-bbdd" uninstalled +``` + +Como se puede apreciar en el ejemplo, es necesario enviar como parámetros el nombre de la release y el namespace en el que está instalada. + +El comando elimina completamente la presencia de la release (borra todos los artefactos y su configuración del clúster) aunque esto se puede parametrizar como veremos más adelante. + +### d) Instalación de releases +A esta parte dedicaremos la sección siguiente de la presente lección. + diff --git a/cursos/dagger/01_dagger_101/03_de_la_instalacion_de_releases.md b/cursos/dagger/01_dagger_101/03_de_la_instalacion_de_releases.md new file mode 100755 index 00000000..620af166 --- /dev/null +++ b/cursos/dagger/01_dagger_101/03_de_la_instalacion_de_releases.md @@ -0,0 +1,23 @@ +# De la instalación de releases + +Como sabemos, Helm crea instalaciones (releases) de aplicaciones mediante la interpolación de la configuración que deseemos en un conjunto de plantillas que reciben el nombre de charts. + +Esta sección está dedicada al estudio de los pormenores del empleo de charts predefinidas para su instalación en un clúster de k8s. + +## Búsqueda de charts + +Como ya vimos en secciones anteriores, existe un repositorio oficial de charts de Helm en: [helm hub](https://hub.helm.sh/). + +El código de estas charts se puede encontrar normalmente en un repositorio público alojado en esta [dirección](https://github.com/helm/charts). + +### Tarea +Prueba a entrar en helm hub y busca las siguientes charts: +- MariaDB de bitnami. +- Wordpress de bitnami. +- La versión 7.7.1 del elastic stack. + +## Empleo de charts: los repos +Existen, como hemos visto, repositorios públicos de charts de Helm que podemos usar. + +No obstante, y al igual que ocurre con las imágenes de docker, Helm necesita descargar la chart al sistema para poder emplearla. + diff --git a/cursos/dagger/README.md b/cursos/dagger/README.md new file mode 100755 index 00000000..f0f4c10f --- /dev/null +++ b/cursos/dagger/README.md @@ -0,0 +1,2 @@ +# Introducción + diff --git a/cursos/dagger/_cdn/copy-code.js b/cursos/dagger/_cdn/copy-code.js new file mode 100755 index 00000000..86698602 --- /dev/null +++ b/cursos/dagger/_cdn/copy-code.js @@ -0,0 +1 @@ +!function () { "use strict"; function r(o) { return (r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o })(o) } !function (o, e) { void 0 === e && (e = {}); var t = e.insertAt; if (o && "undefined" != typeof document) { var n = document.head || document.getElementsByTagName("head")[0], c = document.createElement("style"); c.type = "text/css", "top" === t && n.firstChild ? n.insertBefore(c, n.firstChild) : n.appendChild(c), c.styleSheet ? c.styleSheet.cssText = o : c.appendChild(document.createTextNode(o)) } }(".docsify-copy-code-button,.docsify-copy-code-button span{cursor:pointer;transition:all .25s ease}.docsify-copy-code-button{position:absolute;z-index:1;top:0;right:0;overflow:visible;padding:.65em .8em;border:0;border-radius:0;outline:0;font-size:1em;background:grey;background:var(--theme-color,grey);color:#fff;opacity:0}.docsify-copy-code-button span{border-radius:3px;background:inherit;pointer-events:none}.docsify-copy-code-button .error,.docsify-copy-code-button .success{position:absolute;z-index:-100;top:50%;left:0;padding:.5em .65em;font-size:.825em;opacity:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.docsify-copy-code-button.error .error,.docsify-copy-code-button.success .success{opacity:1;-webkit-transform:translate(-115%,-50%);transform:translate(-115%,-50%)}.docsify-copy-code-button:focus,pre:hover .docsify-copy-code-button{opacity:1}"), document.querySelector('link[href*="docsify-copy-code"]') && console.warn("[Deprecation] Link to external docsify-copy-code stylesheet is no longer necessary."), window.DocsifyCopyCodePlugin = { init: function () { return function (o, e) { o.ready(function () { console.warn("[Deprecation] Manually initializing docsify-copy-code using window.DocsifyCopyCodePlugin.init() is no longer necessary.") }) } } }, window.$docsify = window.$docsify || {}, window.$docsify.plugins = [function (o, s) { o.doneEach(function () { var o = Array.apply(null, document.querySelectorAll("pre[data-lang]")), c = { buttonText: "Copiar", errorText: "Error", successText: "Copiado" }; s.config.copyCode && Object.keys(c).forEach(function (t) { var n = s.config.copyCode[t]; "string" == typeof n ? c[t] = n : "object" === r(n) && Object.keys(n).some(function (o) { var e = -1 < location.href.indexOf(o); return c[t] = e ? n[o] : c[t], e }) }); var e = ['"].join(""); o.forEach(function (o) { o.insertAdjacentHTML("beforeend", e) }) }), o.mounted(function () { document.querySelector(".content").addEventListener("click", function (o) { if (o.target.classList.contains("docsify-copy-code-button")) { var e = "BUTTON" === o.target.tagName ? o.target : o.target.parentNode, t = document.createRange(), n = e.parentNode.querySelector("code"), c = window.getSelection(); t.selectNode(n), c.removeAllRanges(), c.addRange(t); try { document.execCommand("copy") && (e.classList.add("success"), setTimeout(function () { e.classList.remove("success") }, 1e3)) } catch (o) { console.error("docsify-copy-code: ".concat(o)), e.classList.add("error"), setTimeout(function () { e.classList.remove("error") }, 1e3) } "function" == typeof (c = window.getSelection()).removeRange ? c.removeRange(t) : "function" == typeof c.removeAllRanges && c.removeAllRanges() } }) }) }].concat(window.$docsify.plugins || []) }(); diff --git a/cursos/dagger/_cdn/motor.js b/cursos/dagger/_cdn/motor.js new file mode 100755 index 00000000..4153578a --- /dev/null +++ b/cursos/dagger/_cdn/motor.js @@ -0,0 +1 @@ +!function(){function s(n){var r=Object.create(null);return function(e){var t=c(e)?e:JSON.stringify(e);return r[t]||(r[t]=n(e))}}var a=s(function(e){return e.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()})}),l=Object.prototype.hasOwnProperty,h=Object.assign||function(e){for(var t=arguments,n=1;n/gm),Ve=F(/^data-[\-\w.\u00B7-\uFFFF]/),Xe=F(/^aria-[\-\w]+$/),Ke=F(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Qe=F(/^(?:\w+script|data):/i),Je=F(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g),et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function tt(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t

').querySelector("svg img")&&(o=!0)}catch(e){}}(),function(){try{var e=F("</title><img>");$e(/<\/title/,e.querySelector("title").innerHTML)&&(s=!0)}catch(e){}}());function he(e){return _.call(e.ownerDocument||e,e,r.SHOW_ELEMENT|r.SHOW_COMMENT|r.SHOW_TEXT,function(){return r.FILTER_ACCEPT},!1)}function fe(e){return"object"===(void 0===h?"undefined":et(h))?e instanceof h:e&&"object"===(void 0===e?"undefined":et(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName}function ge(e,t,n){E[e]&&we(E[e],function(e){e.call(d,t,n,pe)})}function me(e){var t=void 0;if(ge("beforeSanitizeElements",e,null),function(e){return!(e instanceof f||e instanceof g||"string"==typeof e.nodeName&&"string"==typeof e.textContent&&"function"==typeof e.removeChild&&e.attributes instanceof a&&"function"==typeof e.removeAttribute&&"function"==typeof e.setAttribute&&"string"==typeof e.namespaceURI)}(e))return C(e),!0;var n=Le(e.nodeName);if(ge("uponSanitizeElement",e,{tagName:n,allowedTags:D}),("svg"===n||"math"===n)&&0!==e.querySelectorAll("p, br").length)return C(e),!0;if(D[n]&&!U[n])return"noscript"===n&&$e(/<\/noscript/i,e.innerHTML)?(C(e),!0):"noembed"===n&&$e(/<\/noembed/i,e.innerHTML)?(C(e),!0):(!Y||e.firstElementChild||e.content&&e.content.firstElementChild||!$e(/</g,e.textContent)||(Te(d.removed,{element:e.cloneNode()}),e.innerHTML?e.innerHTML=Re(e.innerHTML,/</g,"<"):e.innerHTML=Re(e.textContent,/</g,"<")),V&&3===e.nodeType&&(t=e.textContent,t=Re(t,O," "),t=Re(t,$," "),e.textContent!==t&&(Te(d.removed,{element:e.cloneNode()}),e.textContent=t)),ge("afterSanitizeElements",e,null),!1);if(ie&&!se[n]&&"function"==typeof e.insertAdjacentHTML)try{var r=e.innerHTML;e.insertAdjacentHTML("AfterEnd",b?b.createHTML(r):r)}catch(e){}return C(e),!0}function ve(e,t,n){if(re&&("id"===t||"name"===t)&&(n in l||n in de))return!1;if(W&&$e(M,t));else if(Z&&$e(N,t));else{if(!q[t]||B[t])return!1;if(ce[t]);else if($e(j,Re(n,P,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==Fe(n,"data:")||!le[e])if(G&&!$e(z,Re(n,P,"")));else if(n)return!1}return!0}function ye(e){var t=void 0,n=void 0,r=void 0,i=void 0,a=void 0;ge("beforeSanitizeAttributes",e,null);var o=e.attributes;if(o){var s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:q};for(a=o.length;a--;){var l=t=o[a],c=l.name,u=l.namespaceURI;if(n=Oe(t.value),r=Le(c),s.attrName=r,s.attrValue=n,s.keepAttr=!0,s.forceKeepAttr=void 0,ge("uponSanitizeAttribute",e,s),n=s.attrValue,!s.forceKeepAttr){if("name"===r&&"IMG"===e.nodeName&&o.id)i=o.id,o=Ee(o,[]),R("id",e),R(c,e),_e(o,i)>a&&e.setAttribute("id",i.value);else{if("INPUT"===e.nodeName&&"type"===r&&"file"===n&&s.keepAttr&&(q[r]||!B[r]))continue;"id"===c&&e.setAttribute(c,""),R(c,e)}if(s.keepAttr)if(Y&&$e(/\/>/i,n))R(c,e);else if($e(/svg|math/i,e.namespaceURI)&&$e(Me("</("+Ae(ke(se),"|")+")","i"),n))R(c,e);else{V&&(n=Re(n,O," "),n=Re(n,$," "));var p=e.nodeName.toLowerCase();if(ve(p,r,n))try{u?e.setAttributeNS(u,c,n):e.setAttribute(c,n),Se(d.removed)}catch(e){}}}}ge("afterSanitizeAttributes",e,null)}}function be(e){var t=void 0,n=he(e);for(ge("beforeSanitizeShadowDOM",e,null);t=n.nextNode();)ge("uponSanitizeShadowNode",t,null),me(t)||(t.content instanceof p&&be(t.content),ye(t));ge("afterSanitizeShadowDOM",e,null)}return d.sanitize=function(e,t){var n=void 0,r=void 0,i=void 0,a=void 0,o=void 0;if("string"!=typeof(e=e||"\x3c!--\x3e")&&!fe(e)){if("function"!=typeof e.toString)throw Ne("toString is not a function");if("string"!=typeof(e=e.toString()))throw Ne("dirty is not a string, aborting")}if(!d.isSupported){if("object"===et(c.toStaticHTML)||"function"==typeof c.toStaticHTML){if("string"==typeof e)return c.toStaticHTML(e);if(fe(e))return c.toStaticHTML(e.outerHTML)}return e}if(K||L(t),d.removed=[],"string"==typeof e&&(ae=!1),ae);else if(e instanceof h)1===(r=(n=F("\x3c!--\x3e")).ownerDocument.importNode(e,!0)).nodeType&&"BODY"===r.nodeName?n=r:"HTML"===r.nodeName?n=r:n.appendChild(r);else{if(!J&&!V&&!X&&ne&&-1===e.indexOf("<"))return b?b.createHTML(e):e;if(!(n=F(e)))return J?null:k}n&&Q&&C(n.firstChild);for(var s=he(ae?e:n);i=s.nextNode();)3===i.nodeType&&i===a||me(i)||(i.content instanceof p&&be(i.content),ye(i),a=i);if(a=null,ae)return e;if(J){if(ee)for(o=S.call(n.ownerDocument);n.firstChild;)o.appendChild(n.firstChild);else o=n;return te&&(o=T.call(u,o,!0)),o}var l=X?n.outerHTML:n.innerHTML;return V&&(l=Re(l,O," "),l=Re(l,$," ")),b&&ne?b.createHTML(l):l},d.setConfig=function(e){L(e),K=!0},d.clearConfig=function(){pe=null,K=!1},d.isValidAttribute=function(e,t,n){pe||L({});var r=Le(e),i=Le(t);return ve(r,i,n)},d.addHook=function(e,t){"function"==typeof t&&(E[e]=E[e]||[],Te(E[e],t))},d.removeHook=function(e){E[e]&&Se(E[e])},d.removeHooks=function(e){E[e]&&(E[e]=[])},d.removeAllHooks=function(){E={}},d}();function H(e){var t,n=e.loaded,r=e.total,i=e.step;P||function(){var e=g("div");e.classList.add("progress"),o(v,e),P=e}(),t=i?80<(t=parseInt(P.style.width||0,10)+i)?80:t:Math.floor(n/r*100),P.style.opacity=1,P.style.width=95<=t?"100%":t+"%",95<=t&&(clearTimeout(j),j=setTimeout(function(e){P.style.opacity=0,P.style.width="0%"},200))}var q={};function I(a,e,t){void 0===e&&(e=!1),void 0===t&&(t={});function n(){o.addEventListener.apply(o,arguments)}var o=new XMLHttpRequest,r=q[a];if(r)return{then:function(e){return e(r.content,r.opt)},abort:p};for(var i in o.open("GET",a),t)l.call(t,i)&&o.setRequestHeader(i,t[i]);return o.send(),{then:function(r,i){if(void 0===i&&(i=p),e){var t=setInterval(function(e){return H({step:Math.floor(5*Math.random()+1)})},500);n("progress",H),n("loadend",function(e){H(e),clearInterval(t)})}n("error",i),n("load",function(e){var t=e.target;if(400<=t.status)i(t);else{var n=q[a]={content:t.response,opt:{updatedAt:o.getResponseHeader("last-modified")}};r(n.content,n.opt)}})},abort:function(e){return 4!==o.readyState&&o.abort()}}}function U(e,t){e.innerHTML=e.innerHTML.replace(/var\(\s*--theme-color.*?\)/g,t)}function B(e,t,r,i){void 0===i&&(i=p);var a=e._hooks[t],o=function(t){var e=a[t];if(t>=a.length)i(r);else if("function"==typeof e)if(2===e.length)e(r,function(e){r=e,o(t+1)});else{var n=e(r);r=void 0===n?r:n,o(t+1)}else o(t+1)};o(0)}var Z=u.title;function W(){var e=m("section.cover");if(e){var t=e.getBoundingClientRect().height;window.pageYOffset>=t||e.classList.contains("hidden")?_(v,"add","sticky"):_(v,"remove","sticky")}}function G(e,t,r,n){var i=[];null!=(t=m(t))&&(i=b(t,"a"));var a,o=decodeURI(e.toURL(e.getCurrentPath()));return i.sort(function(e,t){return t.href.length-e.href.length}).forEach(function(e){var t=e.getAttribute("href"),n=r?e.parentNode:e;0!==o.indexOf(t)||a?_(n,"remove","active"):(a=e,_(n,"add","active"))}),n&&(u.title=a?a.title||a.innerText+" - "+Z:Z),a}var Y=decodeURIComponent,V=encodeURIComponent;function X(e){var n={};return(e=e.trim().replace(/^(\?|#|&)/,""))&&e.split("&").forEach(function(e){var t=e.replace(/\+/g," ").split("=");n[t[0]]=t[1]&&Y(t[1])}),n}function K(e,t){void 0===t&&(t=[]);var n=[];for(var r in e)-1<t.indexOf(r)||n.push(e[r]?(V(r)+"="+V(e[r])).toLowerCase():V(r));return n.length?"?"+n.join("&"):""}var Q=s(function(e){return/(:|(\/{2}))/g.test(e)}),J=s(function(e){return e.split(/[?#]/)[0]}),ee=s(function(e){if(/\/$/g.test(e))return e;var t=e.match(/(\S*\/)[^/]+$/);return t?t[1]:""}),te=s(function(e){return e.replace(/^\/+/,"/").replace(/([^:])\/{2,}/g,"$1/")}),ne=s(function(e){for(var t=e.replace(/^\//,"").split("/"),n=[],r=0,i=t.length;r<i;r++){var a=t[r];".."===a?n.pop():"."!==a&&n.push(a)}return"/"+n.join("/")});function re(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return te(e.join("/"))}var ie=s(function(e){return e.replace("#","?id=")});function ae(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var oe=(function(e,t,n){return t&&ae(e.prototype,t),n&&ae(e,n),e}(se,[{key:"getIntermediateValue",value:function(e){return this.decimal?e:Math.round(e)}},{key:"getFinalValue",value:function(){return this.end}}]),se);function se(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,se),this.start=e.start,this.end=e.end,this.decimal=e.decimal}function le(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var ce=(function(e,t,n){return t&&le(e.prototype,t),n&&le(e,n),e}(ue,[{key:"begin",value:function(){return this.isRunning||this.next===this.end||(this.frame=window.requestAnimationFrame(this._tick.bind(this))),this}},{key:"stop",value:function(){return window.cancelAnimationFrame(this.frame),this.isRunning=!1,this.frame=null,this.timeStart=null,this.next=null,this}},{key:"on",value:function(e,t){return this.events[e]=this.events[e]||[],this.events[e].push(t),this}},{key:"_emit",value:function(e,t){var n=this,r=this.events[e];r&&r.forEach(function(e){return e.call(n,t)})}},{key:"_tick",value:function(e){this.isRunning=!0;var t=this.next||this.start;this.timeStart||(this.timeStart=e),this.timeElapsed=e-this.timeStart,this.next=this.ease(this.timeElapsed,this.start,this.end-this.start,this.duration),this._shouldTick(t)?(this._emit("tick",this.tweener.getIntermediateValue(this.next)),this.frame=window.requestAnimationFrame(this._tick.bind(this))):(this._emit("tick",this.tweener.getFinalValue()),this._emit("done",null))}},{key:"_shouldTick",value:function(e){return{up:this.next<this.end&&e<=this.next,down:this.next>this.end&&e>=this.next}[this.direction]}},{key:"_defaultEase",value:function(e,t,n,r){return(e/=r/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}}]),ue);function ue(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,ue),this.duration=e.duration||1e3,this.ease=e.easing||this._defaultEase,this.tweener=e.tweener||new oe(e),this.start=this.tweener.start,this.end=this.tweener.end,this.frame=null,this.next=null,this.isRunning=!1,this.events={},this.direction=this.start<this.end?"up":"down"}var pe={},de=!1,he=null,fe=!0,ge=0;function me(e){if(fe){for(var t,n=m(".sidebar"),r=b(".anchor"),i=y(n,".sidebar-nav"),a=y(n,"li.active"),o=document.documentElement,s=(o&&o.scrollTop||document.body.scrollTop)-ge,l=0,c=r.length;l<c;l+=1){var u=r[l];if(u.offsetTop>s){t=t||u;break}t=u}if(t){var p=pe[ve(e,t.getAttribute("data-id"))];if(p&&p!==a&&(a&&a.classList.remove("active"),p.classList.add("active"),a=p,!de&&v.classList.contains("sticky"))){var d=n.clientHeight,h=a.offsetTop+a.clientHeight+40,f=h-0<d,g=a.offsetTop>=i.scrollTop&&h<=i.scrollTop+d?i.scrollTop:f?0:h-d;n.scrollTop=g}}}}function ve(e,t){return decodeURIComponent(e)+"?id="+decodeURIComponent(t)}function ye(e,t){if(t){var n=S().topMargin,r=y("#"+t);r&&function(e,t){void 0===t&&(t=0),he&&he.stop(),fe=!1,he=new ce({start:window.pageYOffset,end:e.getBoundingClientRect().top+window.pageYOffset-t,duration:500}).on("tick",function(e){return window.scrollTo(0,e)}).on("done",function(){fe=!0,he=null}).begin()}(r,n);var i=pe[ve(e,t)],a=y(m(".sidebar"),"li.active");a&&a.classList.remove("active"),i&&i.classList.add("active")}}var be=u.scrollingElement||u.documentElement;var it="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function at(e,t){return e(t={exports:{}},t.exports),t.exports}var ot=at(function(v,e){!function(){var b={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:/^ {0,3}(`{3,}|~{3,})([^`~\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6}) +([^\n]*?)(?: +#+)? *(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|<![A-Z][\\s\\S]*?>\\n*|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\n*|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:p,table:p,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\n]+)*)/,text:/^[^\n]+/};function l(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||m.defaults,this.rules=b.normal,this.options.pedantic?this.rules=b.pedantic:this.options.gfm&&(this.rules=b.gfm)}b._label=/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,b._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,b.def=e(b.def).replace("label",b._label).replace("title",b._title).getRegex(),b.bullet=/(?:[*+-]|\d{1,9}\.)/,b.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,b.item=e(b.item,"gm").replace(/bull/g,b.bullet).getRegex(),b.list=e(b.list).replace(/bull/g,b.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+b.def.source+")").getRegex(),b._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",b._comment=/<!--(?!-?>)[\s\S]*?-->/,b.html=e(b.html,"i").replace("comment",b._comment).replace("tag",b._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),b.paragraph=e(b._paragraph).replace("hr",b.hr).replace("heading"," {0,3}#{1,6} +").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}|~{3,})[^`\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",b._tag).getRegex(),b.blockquote=e(b.blockquote).replace("paragraph",b.paragraph).getRegex(),b.normal=h({},b),b.gfm=h({},b.normal,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),b.pedantic=h({},b.normal,{html:e("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",b._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:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,fences:p,paragraph:e(b.normal._paragraph).replace("hr",b.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",b.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()}),l.rules=b,l.lex=function(e,t){return new l(t).lex(e)},l.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},l.prototype.token=function(e,t){var n,r,i,a,o,s,l,c,u,p,d,h,f,g,m,v;for(e=e.replace(/^ +$/gm,"");e;)if((i=this.rules.newline.exec(e))&&(e=e.substring(i[0].length),1<i[0].length&&this.tokens.push({type:"space"})),i=this.rules.code.exec(e)){var y=this.tokens[this.tokens.length-1];e=e.substring(i[0].length),y&&"paragraph"===y.type?y.text+="\n"+i[0].trimRight():(i=i[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",codeBlockStyle:"indented",text:this.options.pedantic?i:w(i,"\n")}))}else if(i=this.rules.fences.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"code",lang:i[2]?i[2].trim():i[2],text:i[3]||""});else if(i=this.rules.heading.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"heading",depth:i[1].length,text:i[2]});else if((i=this.rules.nptable.exec(e))&&(s={type:"table",header:x(i[1].replace(/^ *| *\| *$/g,"")),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3]?i[3].replace(/\n$/,"").split("\n"):[]}).header.length===s.align.length){for(e=e.substring(i[0].length),d=0;d<s.align.length;d++)/^ *-+: *$/.test(s.align[d])?s.align[d]="right":/^ *:-+: *$/.test(s.align[d])?s.align[d]="center":/^ *:-+ *$/.test(s.align[d])?s.align[d]="left":s.align[d]=null;for(d=0;d<s.cells.length;d++)s.cells[d]=x(s.cells[d],s.header.length);this.tokens.push(s)}else if(i=this.rules.hr.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"hr"});else if(i=this.rules.blockquote.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"blockquote_start"}),i=i[0].replace(/^ *> ?/gm,""),this.token(i,t),this.tokens.push({type:"blockquote_end"});else if(i=this.rules.list.exec(e)){for(e=e.substring(i[0].length),l={type:"list_start",ordered:g=1<(a=i[2]).length,start:g?+a:"",loose:!1},this.tokens.push(l),n=!(c=[]),f=(i=i[0].match(this.rules.item)).length,d=0;d<f;d++)p=(s=i[d]).length,~(s=s.replace(/^ *([*+-]|\d+\.) */,"")).indexOf("\n ")&&(p-=s.length,s=this.options.pedantic?s.replace(/^ {1,4}/gm,""):s.replace(new RegExp("^ {1,"+p+"}","gm"),"")),d!==f-1&&(o=b.bullet.exec(i[d+1])[0],(1<a.length?1===o.length:1<o.length||this.options.smartLists&&o!==a)&&(e=i.slice(d+1).join("\n")+e,d=f-1)),r=n||/\n\n(?!\s*$)/.test(s),d!==f-1&&(n="\n"===s.charAt(s.length-1),r=r||n),r&&(l.loose=!0),v=void 0,(m=/^\[[ xX]\] /.test(s))&&(v=" "!==s[1],s=s.replace(/^\[[ xX]\] +/,"")),u={type:"list_item_start",task:m,checked:v,loose:r},c.push(u),this.tokens.push(u),this.token(s,!1),this.tokens.push({type:"list_item_end"});if(l.loose)for(f=c.length,d=0;d<f;d++)c[d].loose=!0;this.tokens.push({type:"list_end"})}else if(i=this.rules.html.exec(e))e=e.substring(i[0].length),this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&("pre"===i[1]||"script"===i[1]||"style"===i[1]),text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(i[0]):k(i[0]):i[0]});else if(t&&(i=this.rules.def.exec(e)))e=e.substring(i[0].length),i[3]&&(i[3]=i[3].substring(1,i[3].length-1)),h=i[1].toLowerCase().replace(/\s+/g," "),this.tokens.links[h]||(this.tokens.links[h]={href:i[2],title:i[3]});else if((i=this.rules.table.exec(e))&&(s={type:"table",header:x(i[1].replace(/^ *| *\| *$/g,"")),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3]?i[3].replace(/\n$/,"").split("\n"):[]}).header.length===s.align.length){for(e=e.substring(i[0].length),d=0;d<s.align.length;d++)/^ *-+: *$/.test(s.align[d])?s.align[d]="right":/^ *:-+: *$/.test(s.align[d])?s.align[d]="center":/^ *:-+ *$/.test(s.align[d])?s.align[d]="left":s.align[d]=null;for(d=0;d<s.cells.length;d++)s.cells[d]=x(s.cells[d].replace(/^ *\| *| *\| *$/g,""),s.header.length);this.tokens.push(s)}else if(i=this.rules.lheading.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"heading",depth:"="===i[2].charAt(0)?1:2,text:i[1]});else if(t&&(i=this.rules.paragraph.exec(e)))e=e.substring(i[0].length),this.tokens.push({type:"paragraph",text:"\n"===i[1].charAt(i[1].length-1)?i[1].slice(0,-1):i[1]});else if(i=this.rules.text.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"text",text:i[0]});else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0));return this.tokens};var n={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:p,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*<\[])\*(?!\*)|^_([^\s<][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_<][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s<"][\s\S]*?[^\s\*])\*(?!\*|[^\spunctuation])|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:p,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\<!\[`*]|\b_|$)|[^ ](?= {2,}\n))|(?= {2,}\n))/};function u(e,t){if(this.options=t||m.defaults,this.links=e,this.rules=n.normal,this.renderer=this.options.renderer||new r,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.pedantic?this.rules=n.pedantic:this.options.gfm&&(this.options.breaks?this.rules=n.breaks:this.rules=n.gfm)}function r(e){this.options=e||m.defaults}function i(){}function c(e){this.tokens=[],this.token=null,this.options=e||m.defaults,this.options.renderer=this.options.renderer||new r,this.renderer=this.options.renderer,this.renderer.options=this.options,this.slugger=new t}function t(){this.seen={}}function k(e,t){if(t){if(k.escapeTest.test(e))return e.replace(k.escapeReplace,function(e){return k.replacements[e]})}else if(k.escapeTestNoEncode.test(e))return e.replace(k.escapeReplaceNoEncode,function(e){return k.replacements[e]});return e}function d(e){return e.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function e(n,e){return n=n.source||n,e=e||"",{replace:function(e,t){return t=(t=t.source||t).replace(/(^|[^\[])\^/g,"$1"),n=n.replace(e,t),this},getRegex:function(){return new RegExp(n,e)}}}function a(e,t,n){if(e){try{var r=decodeURIComponent(d(n)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return null}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return null}t&&!s.test(n)&&(n=function(e,t){o[" "+e]||(/^[^:]+:\/*[^/]*$/.test(e)?o[" "+e]=e+"/":o[" "+e]=w(e,"/",!0));return e=o[" "+e],"//"===t.slice(0,2)?e.replace(/:[\s\S]*/,":")+t:"/"===t.charAt(0)?e.replace(/(:\/*[^/]*)[\s\S]*/,"$1")+t:e+t}(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n}n._punctuation="!\"#$%&'()*+,\\-./:;<=>?@\\[^_{|}~",n.em=e(n.em).replace(/punctuation/g,n._punctuation).getRegex(),n._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,n._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,n._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.autolink=e(n.autolink).replace("scheme",n._scheme).replace("email",n._email).getRegex(),n._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,n.tag=e(n.tag).replace("comment",b._comment).replace("attribute",n._attribute).getRegex(),n._label=/(?:\[[^\[\]]*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,n._href=/<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*/,n._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,n.link=e(n.link).replace("label",n._label).replace("href",n._href).replace("title",n._title).getRegex(),n.reflink=e(n.reflink).replace("label",n._label).getRegex(),n.normal=h({},n),n.pedantic=h({},n.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:e(/^!?\[(label)\]\((.*?)\)/).replace("label",n._label).getRegex(),reflink:e(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",n._label).getRegex()}),n.gfm=h({},n.normal,{escape:e(n.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)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\<!\[`*~]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))|(?= {2,}\n|[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))/}),n.gfm.url=e(n.gfm.url,"i").replace("email",n.gfm._extended_email).getRegex(),n.breaks=h({},n.gfm,{br:e(n.br).replace("{2,}","*").getRegex(),text:e(n.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()}),u.rules=n,u.output=function(e,t,n){return new u(t,n).output(e)},u.prototype.output=function(e){for(var t,n,r,i,a,o,s="";e;)if(a=this.rules.escape.exec(e))e=e.substring(a[0].length),s+=k(a[1]);else if(a=this.rules.tag.exec(e))!this.inLink&&/^<a /i.test(a[0])?this.inLink=!0:this.inLink&&/^<\/a>/i.test(a[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(a[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(a[0])&&(this.inRawBlock=!1),e=e.substring(a[0].length),s+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(a[0]):k(a[0]):a[0];else if(a=this.rules.link.exec(e)){var l=f(a[2],"()");if(-1<l){var c=4+a[1].length+l;a[2]=a[2].substring(0,l),a[0]=a[0].substring(0,c).trim(),a[3]=""}e=e.substring(a[0].length),this.inLink=!0,r=a[2],i=this.options.pedantic?(t=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(r))?(r=t[1],t[3]):"":a[3]?a[3].slice(1,-1):"",r=r.trim().replace(/^<([\s\S]*)>$/,"$1"),s+=this.outputLink(a,{href:u.escapes(r),title:u.escapes(i)}),this.inLink=!1}else if((a=this.rules.reflink.exec(e))||(a=this.rules.nolink.exec(e))){if(e=e.substring(a[0].length),t=(a[2]||a[1]).replace(/\s+/g," "),!(t=this.links[t.toLowerCase()])||!t.href){s+=a[0].charAt(0),e=a[0].substring(1)+e;continue}this.inLink=!0,s+=this.outputLink(a,t),this.inLink=!1}else if(a=this.rules.strong.exec(e))e=e.substring(a[0].length),s+=this.renderer.strong(this.output(a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.em.exec(e))e=e.substring(a[0].length),s+=this.renderer.em(this.output(a[6]||a[5]||a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.code.exec(e))e=e.substring(a[0].length),s+=this.renderer.codespan(k(a[2].trim(),!0));else if(a=this.rules.br.exec(e))e=e.substring(a[0].length),s+=this.renderer.br();else if(a=this.rules.del.exec(e))e=e.substring(a[0].length),s+=this.renderer.del(this.output(a[1]));else if(a=this.rules.autolink.exec(e))e=e.substring(a[0].length),r="@"===a[2]?"mailto:"+(n=k(this.mangle(a[1]))):n=k(a[1]),s+=this.renderer.link(r,null,n);else if(this.inLink||!(a=this.rules.url.exec(e))){if(a=this.rules.text.exec(e))e=e.substring(a[0].length),this.inRawBlock?s+=this.renderer.text(this.options.sanitize?this.options.sanitizer?this.options.sanitizer(a[0]):k(a[0]):a[0]):s+=this.renderer.text(k(this.smartypants(a[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else{if("@"===a[2])r="mailto:"+(n=k(a[0]));else{for(;o=a[0],a[0]=this.rules._backpedal.exec(a[0])[0],o!==a[0];);n=k(a[0]),r="www."===a[1]?"http://"+n:n}e=e.substring(a[0].length),s+=this.renderer.link(r,null,n)}return s},u.escapes=function(e){return e?e.replace(u.rules._escapes,"$1"):e},u.prototype.outputLink=function(e,t){var n=t.href,r=t.title?k(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,k(e[1]))},u.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},u.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,i=0;i<r;i++)t=e.charCodeAt(i),.5<Math.random()&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},r.prototype.code=function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,r);null!=i&&i!==e&&(n=!0,e=i)}return r?'<pre><code class="'+this.options.langPrefix+k(r,!0)+'">'+(n?e:k(e,!0))+"</code></pre>\n":"<pre><code>"+(n?e:k(e,!0))+"</code></pre>"},r.prototype.blockquote=function(e){return"<blockquote>\n"+e+"</blockquote>\n"},r.prototype.html=function(e){return e},r.prototype.heading=function(e,t,n,r){return this.options.headerIds?"<h"+t+' id="'+this.options.headerPrefix+r.slug(n)+'">'+e+"</h"+t+">\n":"<h"+t+">"+e+"</h"+t+">\n"},r.prototype.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},r.prototype.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"</"+r+">\n"},r.prototype.listitem=function(e){return"<li>"+e+"</li>\n"},r.prototype.checkbox=function(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},r.prototype.paragraph=function(e){return"<p>"+e+"</p>\n"},r.prototype.table=function(e,t){return"<table>\n<thead>\n"+e+"</thead>\n"+(t=t&&"<tbody>"+t+"</tbody>")+"</table>\n"},r.prototype.tablerow=function(e){return"<tr>\n"+e+"</tr>\n"},r.prototype.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"</"+n+">\n"},r.prototype.strong=function(e){return"<strong>"+e+"</strong>"},r.prototype.em=function(e){return"<em>"+e+"</em>"},r.prototype.codespan=function(e){return"<code>"+e+"</code>"},r.prototype.br=function(){return this.options.xhtml?"<br/>":"<br>"},r.prototype.del=function(e){return"<del>"+e+"</del>"},r.prototype.link=function(e,t,n){if(null===(e=a(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<a href="'+k(e)+'"';return t&&(r+=' title="'+t+'"'),r+=">"+n+"</a>"},r.prototype.image=function(e,t,n){if(null===(e=a(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<img src="'+e+'" alt="'+n+'"';return t&&(r+=' title="'+t+'"'),r+=this.options.xhtml?"/>":">"},r.prototype.text=function(e){return e},i.prototype.strong=i.prototype.em=i.prototype.codespan=i.prototype.del=i.prototype.text=function(e){return e},i.prototype.link=i.prototype.image=function(e,t,n){return""+n},i.prototype.br=function(){return""},c.parse=function(e,t){return new c(t).parse(e)},c.prototype.parse=function(e){this.inline=new u(e.links,this.options),this.inlineText=new u(e.links,h({},this.options,{renderer:new i})),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},c.prototype.next=function(){return this.token=this.tokens.pop(),this.token},c.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},c.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},c.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,d(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,i="",a="";for(n="",e=0;e<this.token.header.length;e++)n+=this.renderer.tablecell(this.inline.output(this.token.header[e]),{header:!0,align:this.token.align[e]});for(i+=this.renderer.tablerow(n),e=0;e<this.token.cells.length;e++){for(t=this.token.cells[e],n="",r=0;r<t.length;r++)n+=this.renderer.tablecell(this.inline.output(t[r]),{header:!1,align:this.token.align[r]});a+=this.renderer.tablerow(n)}return this.renderer.table(i,a);case"blockquote_start":for(a="";"blockquote_end"!==this.next().type;)a+=this.tok();return this.renderer.blockquote(a);case"list_start":a="";for(var o=this.token.ordered,s=this.token.start;"list_end"!==this.next().type;)a+=this.tok();return this.renderer.list(a,o,s);case"list_item_start":a="";var l=this.token.loose,c=this.token.checked,u=this.token.task;for(this.token.task&&(a+=this.renderer.checkbox(c));"list_item_end"!==this.next().type;)a+=l||"text"!==this.token.type?this.tok():this.parseText();return this.renderer.listitem(a,u,c);case"html":return this.renderer.html(this.token.text);case"paragraph":return this.renderer.paragraph(this.inline.output(this.token.text));case"text":return this.renderer.paragraph(this.parseText());default:var p='Token with "'+this.token.type+'" type was not found.';if(!this.options.silent)throw new Error(p);console.log(p)}},t.prototype.slug=function(e){var t=e.toLowerCase().trim().replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t))for(var n=t;this.seen[n]++,t=n+"-"+this.seen[n],this.seen.hasOwnProperty(t););return this.seen[t]=0,t},k.escapeTest=/[&<>"']/,k.escapeReplace=/[&<>"']/g,k.replacements={"&":"&","<":"<",">":">",'"':""","'":"'"},k.escapeTestNoEncode=/[<>"']|&(?!#?\w+;)/,k.escapeReplaceNoEncode=/[<>"']|&(?!#?\w+;)/g;var o={},s=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function p(){}function h(e){for(var t,n,r=arguments,i=1;i<arguments.length;i++)for(n in t=r[i])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}function x(e,t){var n=e.replace(/\|/g,function(e,t,n){for(var r=!1,i=t;0<=--i&&"\\"===n[i];)r=!r;return r?"|":" |"}).split(/ \|/),r=0;if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;r<n.length;r++)n[r]=n[r].trim().replace(/\\\|/g,"|");return n}function w(e,t,n){if(0===e.length)return"";for(var r=0;r<e.length;){var i=e.charAt(e.length-r-1);if(i!==t||n){if(i===t||!n)break;r++}else r++}return e.substr(0,e.length-r)}function f(e,t){if(-1===e.indexOf(t[1]))return-1;for(var n=0,r=0;r<e.length;r++)if("\\"===e[r])r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&--n<0)return r;return-1}function g(e){e&&e.sanitize&&!e.silent&&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")}function m(e,n,r){if(null==e)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if(r||"function"==typeof n){r||(r=n,n=null),g(n=h({},m.defaults,n||{}));var i,a,o=n.highlight,t=0;try{i=l.lex(e,n)}catch(e){return r(e)}a=i.length;function s(t){if(t)return n.highlight=o,r(t);var e;try{e=c.parse(i,n)}catch(e){t=e}return n.highlight=o,t?r(t):r(null,e)}if(!o||o.length<3)return s();if(delete n.highlight,!a)return s();for(;t<i.length;t++)!function(n){"code"!==n.type?--a||s():o(n.text,n.lang,function(e,t){return e?s(e):null==t||t===n.text?--a||s():(n.text=t,n.escaped=!0,void(--a||s()))})}(i[t])}else try{return g(n=n&&h({},m.defaults,n)),c.parse(l.lex(e,n),n)}catch(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",(n||m.defaults).silent)return"<p>An error occurred:</p><pre>"+k(e.message+"",!0)+"</pre>";throw e}}p.exec=p,m.options=m.setOptions=function(e){return h(m.defaults,e),m},m.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new r,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,xhtml:!1}},m.defaults=m.getDefaults(),m.Parser=c,m.parser=c.parse,m.Renderer=r,m.TextRenderer=i,m.Lexer=l,m.lexer=l.lex,m.InlineLexer=u,m.inlineLexer=u.output,m.Slugger=t,m.parse=m,v.exports=m}()});function st(e,t){if(void 0===t&&(t='<ul class="app-sub-sidebar">{inner}</ul>'),!e||!e.length)return"";var n="";return e.forEach(function(e){n+='<li><a class="section-link" href="'+e.slug+'">'+e.title+"</a></li>",e.children&&(n+=st(e.children,t))}),t.replace("{inner}",n)}function lt(e,t){return'<p class="'+e+'">'+t.slice(5).trim()+"</p>"}function ct(e,r){var i=[],a={};return e.forEach(function(e){var t=e.level||1,n=t-1;r<t||(a[n]?a[n].children=(a[n].children||[]).concat(e):i.push(e),a[t]=e)}),i}var ut={},pt=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g;function dt(e){return e.toLowerCase()}function ht(e){if("string"!=typeof e)return"";var t=e.trim().replace(/[A-Z]+/g,dt).replace(/<[^>\d]+>/g,"").replace(pt,"").replace(/\s/g,"-").replace(/-+/g,"-").replace(/^(\d)/,"_$1"),n=ut[t];return n=l.call(ut,t)?n+1:0,(ut[t]=n)&&(t=t+"-"+n),t}function ft(e,t){return'<img class="emoji" src="https://github.githubassets.com/images/icons/emoji/'+t+'.png" alt="'+t+'" />'}function gt(e){void 0===e&&(e="");var r={};return{str:e=e&&e.replace(/^'/,"").replace(/'$/,"").replace(/(?:^|\s):([\w-]+:?)=?([\w-%]+)?/g,function(e,t,n){return-1===t.indexOf(":")?(r[t]=n&&n.replace(/"/g,"")||!0,""):e}).trim(),config:r}}ht.clear=function(){ut={}};var mt,vt=at(function(e){var c=function(c){var u=/\blang(?:uage)?-([\w-]+)\b/i,t=0,F={manual:c.Prism&&c.Prism.manual,disableWorkerMessageHandler:c.Prism&&c.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof O?new O(e.type,F.util.encode(e.content),e.alias):Array.isArray(e)?e.map(F.util.encode):e.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function n(e,r){var i,t,a=F.util.type(e);switch(r=r||{},a){case"Object":if(t=F.util.objId(e),r[t])return r[t];for(var o in i={},r[t]=i,e)e.hasOwnProperty(o)&&(i[o]=n(e[o],r));return i;case"Array":return t=F.util.objId(e),r[t]?r[t]:(i=[],r[t]=i,e.forEach(function(e,t){i[t]=n(e,r)}),i);default:return e}},getLanguage:function(e){for(;e&&!u.test(e.className);)e=e.parentElement;return e?(e.className.match(u)||[,"none"])[1].toLowerCase():"none"},currentScript:function(){if("undefined"==typeof document)return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(e){var t=(/at [^(\r\n]*\((.*):.+:.+\)$/i.exec(e.stack)||[])[1];if(t){var n=document.getElementsByTagName("script");for(var r in n)if(n[r].src==t)return n[r]}return null}}},languages:{extend:function(e,t){var n=F.util.clone(F.languages[e]);for(var r in t)n[r]=t[r];return n},insertBefore:function(n,e,t,r){var i=(r=r||F.languages)[n],a={};for(var o in i)if(i.hasOwnProperty(o)){if(o==e)for(var s in t)t.hasOwnProperty(s)&&(a[s]=t[s]);t.hasOwnProperty(o)||(a[o]=i[o])}var l=r[n];return r[n]=a,F.languages.DFS(F.languages,function(e,t){t===l&&e!=n&&(this[e]=a)}),a},DFS:function e(t,n,r,i){i=i||{};var a=F.util.objId;for(var o in t)if(t.hasOwnProperty(o)){n.call(t,o,t[o],r||o);var s=t[o],l=F.util.type(s);"Object"!==l||i[a(s)]?"Array"!==l||i[a(s)]||(i[a(s)]=!0,e(s,n,o,i)):(i[a(s)]=!0,e(s,n,null,i))}}},plugins:{},highlightAll:function(e,t){F.highlightAllUnder(document,e,t)},highlightAllUnder:function(e,t,n){var r={callback:n,container:e,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};F.hooks.run("before-highlightall",r),r.elements=Array.prototype.slice.apply(r.container.querySelectorAll(r.selector)),F.hooks.run("before-all-elements-highlight",r);for(var i,a=0;i=r.elements[a++];)F.highlightElement(i,!0===t,r.callback)},highlightElement:function(e,t,n){var r=F.util.getLanguage(e),i=F.languages[r];e.className=e.className.replace(u,"").replace(/\s+/g," ")+" language-"+r;var a=e.parentNode;a&&"pre"===a.nodeName.toLowerCase()&&(a.className=a.className.replace(u,"").replace(/\s+/g," ")+" language-"+r);var o={element:e,language:r,grammar:i,code:e.textContent};function s(e){o.highlightedCode=e,F.hooks.run("before-insert",o),o.element.innerHTML=o.highlightedCode,F.hooks.run("after-highlight",o),F.hooks.run("complete",o),n&&n.call(o.element)}if(F.hooks.run("before-sanity-check",o),!o.code)return F.hooks.run("complete",o),void(n&&n.call(o.element));if(F.hooks.run("before-highlight",o),o.grammar)if(t&&c.Worker){var l=new Worker(F.filename);l.onmessage=function(e){s(e.data)},l.postMessage(JSON.stringify({language:o.language,code:o.code,immediateClose:!0}))}else s(F.highlight(o.code,o.grammar,o.language));else s(F.util.encode(o.code))},highlight:function(e,t,n){var r={code:e,grammar:t,language:n};return F.hooks.run("before-tokenize",r),r.tokens=F.tokenize(r.code,r.grammar),F.hooks.run("after-tokenize",r),O.stringify(F.util.encode(r.tokens),r.language)},matchGrammar:function(e,t,n,r,i,a,o){for(var s in n)if(n.hasOwnProperty(s)&&n[s]){var l=n[s];l=Array.isArray(l)?l:[l];for(var c=0;c<l.length;++c){if(o&&o==s+","+c)return;var u=l[c],p=u.inside,d=!!u.lookbehind,h=!!u.greedy,f=0,g=u.alias;if(h&&!u.pattern.global){var m=u.pattern.toString().match(/[imsuy]*$/)[0];u.pattern=RegExp(u.pattern.source,m+"g")}u=u.pattern||u;for(var v=r,y=i;v<t.length;y+=t[v].length,++v){var b=t[v];if(t.length>e.length)return;if(!(b instanceof O)){if(h&&v!=t.length-1){if(u.lastIndex=y,!(S=u.exec(e)))break;for(var k=S.index+(d&&S[1]?S[1].length:0),x=S.index+S[0].length,w=v,_=y,A=t.length;w<A&&(_<x||!t[w].type&&!t[w-1].greedy);++w)(_+=t[w].length)<=k&&(++v,y=_);if(t[v]instanceof O)continue;T=w-v,b=e.slice(y,_),S.index-=y}else{u.lastIndex=0;var S=u.exec(b),T=1}if(S){d&&(f=S[1]?S[1].length:0);x=(k=S.index+f)+(S=S[0].slice(f)).length;var E=b.slice(0,k),L=b.slice(x),C=[v,T];E&&(++v,y+=E.length,C.push(E));var R=new O(s,p?F.tokenize(S,p):S,g,S,h);if(C.push(R),L&&C.push(L),Array.prototype.splice.apply(t,C),1!=T&&F.matchGrammar(e,t,n,v,y,!0,s+","+c),a)break}else if(a)break}}}}},tokenize:function(e,t){var n=[e],r=t.rest;if(r){for(var i in r)t[i]=r[i];delete t.rest}return F.matchGrammar(e,n,t,0,0,!1),n},hooks:{all:{},add:function(e,t){var n=F.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=F.hooks.all[e];if(n&&n.length)for(var r,i=0;r=n[i++];)r(t)}},Token:O};function O(e,t,n,r,i){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!i}if(c.Prism=F,O.stringify=function(e,t){if("string"==typeof e)return e;if(Array.isArray(e))return e.map(function(e){return O.stringify(e,t)}).join("");var n={type:e.type,content:O.stringify(e.content,t),tag:"span",classes:["token",e.type],attributes:{},language:t};if(e.alias){var r=Array.isArray(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(n.classes,r)}F.hooks.run("wrap",n);var i=Object.keys(n.attributes).map(function(e){return e+'="'+(n.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+n.tag+' class="'+n.classes.join(" ")+'"'+(i?" "+i:"")+">"+n.content+"</"+n.tag+">"},!c.document)return c.addEventListener&&(F.disableWorkerMessageHandler||c.addEventListener("message",function(e){var t=JSON.parse(e.data),n=t.language,r=t.code,i=t.immediateClose;c.postMessage(F.highlight(r,F.languages[n],n)),i&&c.close()},!1)),F;var e=F.util.currentScript();if(e&&(F.filename=e.src,e.hasAttribute("data-manual")&&(F.manual=!0)),!F.manual){function n(){F.manual||F.highlightAll()}var r=document.readyState;"loading"===r||"interactive"===r&&e&&e.defer?document.addEventListener("DOMContentLoaded",n):window.requestAnimationFrame?window.requestAnimationFrame(n):window.setTimeout(n,16)}return F}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});e.exports&&(e.exports=c),void 0!==it&&(it.Prism=c),c.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:(?!<!--)[^"'\]]|"[^"]*"|'[^']*'|<!--[\s\S]*?-->)*\]\s*)?>/i,greedy:!0},cdata:/<!\[CDATA\[[\s\S]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},c.languages.markup.tag.inside["attr-value"].inside.entity=c.languages.markup.entity,c.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(c.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:c.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:c.languages[t]};var i={};i[e]={pattern:RegExp(/(<__[\s\S]*?>)(?:<!\[CDATA\[[\s\S]*?\]\]>\s*|[\s\S])*?(?=<\/__>)/.source.replace(/__/g,e),"i"),lookbehind:!0,greedy:!0,inside:r},c.languages.insertBefore("markup","cdata",i)}}),c.languages.xml=c.languages.extend("markup",{}),c.languages.html=c.languages.markup,c.languages.mathml=c.languages.markup,c.languages.svg=c.languages.markup,function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,inside:{rule:/@[\w-]+/}},url:{pattern:RegExp("url\\((?:"+t.source+"|[^\n\r()]*)\\)","i"),inside:{function:/^url/i,punctuation:/^\(|\)$/}},selector:RegExp("[^{}\\s](?:[^{};\"']|"+t.source+")*?(?=\\s*\\{)"),string:{pattern:t,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),e.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:n.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:e.languages.css}},alias:"language-css"}},n.tag))}(c),c.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},c.languages.javascript=c.languages.extend("clike",{"class-name":[c.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,function:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,operator:/--|\+\+|\*\*=?|=>|&&|\|\||[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?[.?]?|[~:]/}),c.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,c.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*[\s\S]*?\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,lookbehind:!0,inside:c.languages.javascript},{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,inside:c.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,lookbehind:!0,inside:c.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,lookbehind:!0,inside:c.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),c.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:c.languages.javascript}},string:/[\s\S]+/}}}),c.languages.markup&&c.languages.markup.tag.addInlined("script","javascript"),c.languages.js=c.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(e){e=e||document;var l={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(e.querySelectorAll("pre[data-src]")).forEach(function(e){if(!e.hasAttribute("data-src-loaded")){for(var t,n=e.getAttribute("data-src"),r=e,i=/\blang(?:uage)?-([\w-]+)\b/i;r&&!i.test(r.className);)r=r.parentNode;if(r&&(t=(e.className.match(i)||[,""])[1]),!t){var a=(n.match(/\.(\w+)$/)||[,""])[1];t=l[a]||a}var o=document.createElement("code");o.className="language-"+t,e.textContent="",o.textContent="Loading…",e.appendChild(o);var s=new XMLHttpRequest;s.open("GET",n,!0),s.onreadystatechange=function(){4==s.readyState&&(s.status<400&&s.responseText?(o.textContent=s.responseText,c.highlightElement(o),e.setAttribute("data-src-loaded","")):400<=s.status?o.textContent="✖ Error "+s.status+" while fetching file: "+s.statusText:o.textContent="✖ Error: File does not exist or is empty")},s.send(null)}})},document.addEventListener("DOMContentLoaded",function(){self.Prism.fileHighlight()}))});function yt(e,t){return"___"+e.toUpperCase()+t+"___"}mt=Prism,Object.defineProperties(mt.languages["markup-templating"]={},{buildPlaceholders:{value:function(r,i,e,a){if(r.language===i){var o=r.tokenStack=[];r.code=r.code.replace(e,function(e){if("function"==typeof a&&!a(e))return e;for(var t,n=o.length;-1!==r.code.indexOf(t=yt(i,n));)++n;return o[n]=e,t}),r.grammar=mt.languages.markup}}},tokenizePlaceholders:{value:function(h,f){if(h.language===f&&h.tokenStack){h.grammar=mt.languages[f];var g=0,m=Object.keys(h.tokenStack);!function e(t){for(var n=0;n<t.length&&!(g>=m.length);n++){var r=t[n];if("string"==typeof r||r.content&&"string"==typeof r.content){var i=m[g],a=h.tokenStack[i],o="string"==typeof r?r:r.content,s=yt(f,i),l=o.indexOf(s);if(-1<l){++g;var c=o.substring(0,l),u=new mt.Token(f,mt.tokenize(a,h.grammar),"language-"+f,a),p=o.substring(l+s.length),d=[];c&&d.push.apply(d,e([c])),d.push(u),p&&d.push.apply(d,e([p])),"string"==typeof r?t.splice.apply(t,[n,1].concat(d)):r.content=d}}else r.content&&e(r.content)}return t}(h.tokens)}}}});var bt={},kt={markdown:function(e){return{url:e}},mermaid:function(e){return{url:e}},iframe:function(e,t){return{html:'<iframe src="'+e+'" '+(t||"width=100% height=400")+"></iframe>"}},video:function(e,t){return{html:'<video src="'+e+'" '+(t||"controls")+">Not Support</video>"}},audio:function(e,t){return{html:'<audio src="'+e+'" '+(t||"controls")+">Not Support</audio>"}},code:function(e,t){var n=e.match(/\.(\w+)$/);return"md"===(n=t||n&&n[1])&&(n="markdown"),{url:e,lang:n}}},xt=function(i,e){var a=this;this.config=i,this.router=e,this.cacheTree={},this.toc=[],this.cacheTOC={},this.linkTarget=i.externalLinkTarget||"",this.linkRel="_blank"===this.linkTarget?i.externalLinkRel||"noopener":"",this.contentBase=e.getBasePath();var o,t=this._initRenderer();this.heading=t.heading;var n=i.markdown||{};o=r(n)?n(ot,t):(ot.setOptions(h(n,{renderer:h(t,n.renderer)})),ot),this._marked=o,this.compile=function(n){var r=!0,e=s(function(e){r=!1;var t="";return n?(t=c(n)?o(n):o.parser(n),t=i.noEmoji?t:function(e){return e.replace(/:\+1:/g,":thumbsup:").replace(/:-1:/g,":thumbsdown:").replace(/<(pre|template|code)[^>]*?>[\s\S]+?<\/(pre|template|code)>/g,function(e){return e.replace(/:/g,"__colon__")}).replace(/:(\w+?):/gi,window.emojify||ft).replace(/__colon__/g,":")}(t),ht.clear(),t):n})(n),t=a.router.parse().file;return r?a.toc=a.cacheTOC[t]:a.cacheTOC[t]=[].concat(a.toc),e}};xt.prototype.compileEmbed=function(e,t){var n,r=gt(t),i=r.str,a=r.config;if(t=i,a.include){var o;if(Q(e)||(e=re(this.contentBase,ee(this.router.getCurrentPath()),e)),a.type&&(o=kt[a.type]))(n=o.call(this,e,t)).type=a.type;else{var s="code";/\.(md|markdown)/.test(e)?s="markdown":/\.mmd/.test(e)?s="mermaid":/\.html?/.test(e)?s="iframe":/\.(mp4|ogg)/.test(e)?s="video":/\.mp3/.test(e)&&(s="audio"),(n=kt[s].call(this,e,t)).type=s}return n.fragment=a.fragment,n}},xt.prototype._matchNotCompileLink=function(e){for(var t=this.config.noCompileLinks||[],n=0;n<t.length;n++){var r=t[n];if((bt[r]||(bt[r]=new RegExp("^"+r+"$"))).test(e))return e}},xt.prototype._initRenderer=function(){var e=new ot.Renderer,t=this.linkTarget,n=this.linkRel,l=this.router,r=this.contentBase,c=this,i={};return i.heading=e.heading=function(e,t){var n=gt(e),r=n.str,i=n.config,a={level:t,title:r};/{docsify-ignore}/g.test(r)&&(r=r.replace("{docsify-ignore}",""),a.title=r,a.ignoreSubHeading=!0),/{docsify-ignore-all}/g.test(r)&&(r=r.replace("{docsify-ignore-all}",""),a.title=r,a.ignoreAllSubs=!0);var o=ht(i.id||r),s=l.toURL(l.getCurrentPath(),{id:o});return a.slug=s,c.toc.push(a),"<h"+t+' id="'+o+'"><a href="'+s+'" data-id="'+o+'" class="anchor"><span>'+r+"</span></a></h"+t+">"},i.code=function(e){return e.renderer.code=function(e,t){void 0===t&&(t="");var n=vt.languages[t]||vt.languages.markup;return'<pre v-pre data-lang="'+t+'"><code class="lang-'+t+'">'+vt.highlight(e.replace(/@DOCSIFY_QM@/g,"`"),n)+"</code></pre>"}}({renderer:e}),i.link=function(e){var t=e.renderer,s=e.router,l=e.linkTarget,c=e.linkRel,u=e.compilerClass;return t.link=function(e,t,n){void 0===t&&(t="");var r=[],i=gt(t),a=i.str,o=i.config;return l=o.target||l,c="_blank"===l?u.config.externalLinkRel||"noopener":"",t=a,Q(e)||u._matchNotCompileLink(e)||o.ignore?(!Q(e)&&e.startsWith("./")&&(e=document.URL.replace(/\/(?!.*\/).*/,"/").replace("#/./","")+e),r.push(0===e.indexOf("mailto:")?"":'target="'+l+'"'),r.push(0===e.indexOf("mailto:")?"":""!==c?' rel="'+c+'"':"")):(e===u.config.homepage&&(e="README"),e=s.toURL(e,null,s.getCurrentPath())),o.crossorgin&&"_self"===l&&"history"===u.config.routerMode&&-1===u.config.crossOriginLinks.indexOf(e)&&u.config.crossOriginLinks.push(e),o.disabled&&(r.push("disabled"),e="javascript:void(0)"),o.class&&r.push('class="'+o.class+'"'),o.id&&r.push('id="'+o.id+'"'),t&&r.push('title="'+t+'"'),'<a href="'+e+'" '+r.join(" ")+">"+n+"</a>"}}({renderer:e,router:l,linkTarget:t,linkRel:n,compilerClass:c}),i.paragraph=function(e){return e.renderer.paragraph=function(e){return/^!>/.test(e)?lt("tip",e):/^\?>/.test(e)?lt("warn",e):"<p>"+e+"</p>"}}({renderer:e}),i.image=function(e){var t=e.renderer,p=e.contentBase,d=e.router;return t.image=function(e,t,n){var r=e,i=[],a=gt(t),o=a.str,s=a.config;if(t=o,s["no-zoom"]&&i.push("data-no-zoom"),t&&i.push('title="'+t+'"'),s.size){var l=s.size.split("x"),c=l[0],u=l[1];u?i.push('width="'+c+'" height="'+u+'"'):i.push('width="'+c+'"')}return s.class&&i.push('class="'+s.class+'"'),s.id&&i.push('id="'+s.id+'"'),Q(e)||(r=re(p,ee(d.getCurrentPath()),e)),0<i.length?'<img src="'+r+'" data-origin="'+e+'" alt="'+n+'" '+i.join(" ")+" />":'<img src="'+r+'" data-origin="'+e+'" alt="'+n+'"'+i+">"}}({renderer:e,contentBase:r,router:l}),i.list=function(e){return e.renderer.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+" "+[/<li class="task-list-item">/.test(e.split('class="task-list"')[0])?'class="task-list"':"",n&&1<n?'start="'+n+'"':""].join(" ").trim()+">"+e+"</"+r+">"}}({renderer:e}),i.listitem=function(e){return e.renderer.listitem=function(e){return/^(<input.*type="checkbox"[^>]*>)/.test(e)?'<li class="task-list-item"><label>'+e+"</label></li>":"<li>"+e+"</li>"}}({renderer:e}),e.origin=i,e},xt.prototype.sidebar=function(e,t){var n=this.toc,r=this.router.getCurrentPath(),i="";if(e)i=this.compile(e);else{for(var a=0;a<n.length;a++)if(n[a].ignoreSubHeading){var o=n[a].level;n.splice(a,1);for(var s=a;o<n[s].level&&s<n.length;s++)n.splice(s,1)&&s--&&a++;a--}var l=this.cacheTree[r]||ct(n,t);i=st(l,"<ul>{inner}</ul>"),this.cacheTree[r]=l}return i},xt.prototype.subSidebar=function(e){if(e){var t=this.router.getCurrentPath(),n=this.cacheTree,r=this.toc;r[0]&&r[0].ignoreAllSubs&&r.splice(0),r[0]&&1===r[0].level&&r.shift();for(var i=0;i<r.length;i++)r[i].ignoreSubHeading&&r.splice(i,1)&&i--;var a=n[t]||ct(r,e);return n[t]=a,this.toc=[],st(a)}this.toc=[]},xt.prototype.header=function(e,t){return this.heading(e,t)},xt.prototype.article=function(e){return this.compile(e)},xt.prototype.cover=function(e){var t=this.toc.slice(),n=this.compile(e);return this.toc=t.slice(),n};var wt=function(e){var t=function(e){var t=e.match(/^[ \t]*(?=\S)/gm);return t?Math.min.apply(Math,t.map(function(e){return e.length})):0}(e);if(0===t)return e;var n=new RegExp("^[ \\t]{"+t+"}","gm");return e.replace(n,"")},_t={};function At(e,i){var o=e.compiler,a=e.raw;void 0===a&&(a="");var t=e.fetch,n=_t[a];if(n){var r=n.slice();return r.links=n.links,i(r)}var s=o._marked,l=s.lexer(a),c=[],u=s.InlineLexer.rules.link,p=l.links;l.forEach(function(e,a){"paragraph"===e.type&&(e.text=e.text.replace(new RegExp(u.source,"g"),function(e,t,n,r){var i=o.compileEmbed(n,r);return i&&c.push({index:a,embed:i}),e}))});var d=[];!function(e,o){var t,n=e.embedTokens,s=e.compile,l=(e.fetch,0),c=1;if(!n.length)return o({});for(;t=n[l++];){var r=function(a){return function(e){var t;if(e)if("markdown"===a.embed.type){var n=a.embed.url.split("/");n.pop(),n=n.join("/"),e=e.replace(/\[([^[\]]+)\]\(([^)]+)\)/g,function(e){var t=e.indexOf("(");return e.substring(t).startsWith("(.")?e.substring(0,t)+"("+window.location.protocol+"//"+window.location.host+n+"/"+e.substring(t+1,e.length-1)+")":e}),!0===(($docsify.frontMatter||{}).installed||!1)&&(e=$docsify.frontMatter.parseMarkdown(e)),t=s.lexer(e)}else if("code"===a.embed.type){if(a.embed.fragment){var r=a.embed.fragment,i=new RegExp("(?:###|\\/\\/\\/)\\s*\\["+r+"\\]([\\s\\S]*)(?:###|\\/\\/\\/)\\s*\\["+r+"\\]");e=wt((e.match(i)||[])[1]||"").trim()}t=s.lexer("```"+a.embed.lang+"\n"+e.replace(/`/g,"@DOCSIFY_QM@")+"\n```\n")}else"mermaid"===a.embed.type?(t=[{type:"html",text:'<div class="mermaid">\n'+e+"\n</div>"}]).links={}:(t=[{type:"html",text:e}]).links={};o({token:a,embedToken:t}),++c>=l&&o({})}}(t);t.embed.url?I(t.embed.url).then(r):r(t.embed.html)}}({compile:s,embedTokens:c,fetch:t},function(e){var t=e.embedToken,n=e.token;if(n){var r=n.index;d.forEach(function(e){r>e.start&&(r+=e.length)}),h(p,t.links),l=l.slice(0,r).concat(t,l.slice(r+1)),d.push({start:r,length:t.length-1})}else _t[a]=l.concat(),l.links=_t[a].links=p,i(l)})}function St(){var e=b(".markdown-section>script").filter(function(e){return!/template/.test(e.type)})[0];if(!e)return!1;var t=e.innerText.trim();if(!t)return!1;setTimeout(function(e){window.__EXECUTE_RESULT__=new Function(t)()},0)}function Tt(e,t,n){return t="function"==typeof n?n(t):"string"==typeof n?function(r,i){var a=[],o=0;return r.replace(T,function(t,e,n){a.push(r.substring(o,n-1)),o=n+=t.length+1,a.push(i&&i[t]||function(e){return("00"+("string"==typeof E[t]?e[E[t]]():E[t](e))).slice(-t.length)})}),o!==r.length&&a.push(r.substring(o)),function(e){for(var t="",n=0,r=e||new Date;n<a.length;n++)t+="string"==typeof a[n]?a[n]:a[n](r);return t}}(n)(new Date(t)):t,e.replace(/{docsify-updated}/g,t)}function Et(e){e=e||"<h1>404 - Not found</h1>",this._renderTo(".markdown-section",e),this.config.loadSidebar||this._renderSidebar(),!1===this.config.executeScript||void 0===window.Vue||St()?this.config.executeScript&&St():setTimeout(function(e){var t=window.__EXECUTE_RESULT__;t&&t.$destroy&&t.$destroy(),window.__EXECUTE_RESULT__=(new window.Vue).$mount("#main")},0)}function Lt(e){var t=e.config;e.compiler=new xt(t,e.router),window.__current_docsify_compiler__=e.compiler;var n=t.el||"#app",r=y("nav")||g("nav"),i=y(n),a="",o=v;if(i){if(t.repo&&(a+=function(e,t){return e?(/\/\//.test(e)||(e="https://github.com/"+e),'<a href="'+(e=e.replace(/^git\+/,""))+'" target="'+(t=t||"_blank")+'" class="github-corner" aria-label="View source on Github"><svg viewBox="0 0 250 250" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a>'):""}(t.repo,t.cornerExternalLinkTarge)),t.coverpage&&(a+=function(){var e=", 100%, 85%";return'<section class="cover show" style="background: '+("linear-gradient(to left bottom, hsl("+Math.floor(255*Math.random())+e+") 0%,hsl("+Math.floor(255*Math.random())+e+") 100%)")+'"><div class="cover-main">\x3c!--cover--\x3e</div><div class="mask"></div></section>'}()),t.logo){var s=/^data:image/.test(t.logo),l=/(?:http[s]?:)?\/\//.test(t.logo),c=/^\./.test(t.logo);s||l||c||(t.logo=re(e.router.getBasePath(),t.logo))}a+=function(e){var t=e.name?e.name:"",n='<button class="sidebar-toggle" aria-label="Menu"><div class="sidebar-toggle-button"><span></span><span></span><span></span></div></button><aside class="sidebar">'+(e.name?'<h1 class="app-name"><a class="app-name-link" data-nosearch>'+(e.logo?'<img alt="'+t+'" src='+e.logo+">":t)+"</a></h1>":"")+'<div class="sidebar-nav">\x3c!--sidebar--\x3e</div></aside>';return(f?n+"<main>":"<main>"+n)+'<section class="content"><article class="markdown-section" id="main">\x3c!--main--\x3e</article></section></main>'}(t),e._renderTo(i,a,!0)}else e.rendered=!0;t.mergeNavbar&&f?o=y(".sidebar"):(r.classList.add("app-nav"),t.repo||r.classList.add("no-badge")),t.loadNavbar&&k(o,r),t.themeColor&&(u.head.appendChild(g("div",function(e){return"<style>:root{--theme-color: "+e+";}</style>"}(t.themeColor)).firstElementChild),function(n){if(!(window.CSS&&window.CSS.supports&&window.CSS.supports("(--v:red)"))){var e=b("style:not(.inserted),link");[].forEach.call(e,function(e){if("STYLE"===e.nodeName)U(e,n);else if("LINK"===e.nodeName){var t=e.getAttribute("href");if(!/\.css$/.test(t))return;I(t).then(function(e){var t=g("style",e);d.appendChild(t),U(t,n)})}})}}(t.themeColor)),e._updateRender(),_(v,"ready")}var Ct={};function Rt(e){this.config=e}function Ft(e){var t=location.href.indexOf("#");location.replace(location.href.slice(0,0<=t?t:0)+"#"+e)}Rt.prototype.getBasePath=function(){return this.config.basePath},Rt.prototype.getFile=function(e,t){void 0===e&&(e=this.getCurrentPath());var n=this.config,r=this.getBasePath(),i="string"==typeof n.ext?n.ext:".md";return e=(e=function(e,t){return new RegExp("\\.("+t.replace(/^\./,"")+"|html)$","g").test(e)?e:/\/$/g.test(e)?e+"README"+t:""+e+t}(e=n.alias?function e(t,n,r){var i=Object.keys(n).filter(function(e){return(Ct[e]||(Ct[e]=new RegExp("^"+e+"$"))).test(t)&&t!==r})[0];return i?e(t.replace(Ct[i],n[i]),n,t):t}(e,n.alias):e,i))==="/README"+i&&n.homepage||e,e=Q(e)?e:re(r,e),t&&(e=e.replace(new RegExp("^"+r),"")),e},Rt.prototype.onchange=function(e){void 0===e&&(e=p),e()},Rt.prototype.getCurrentPath=function(){},Rt.prototype.normalize=function(){},Rt.prototype.parse=function(){},Rt.prototype.toURL=function(e,t,n){var r=n&&"#"===e[0],i=this.parse(ie(e));if(i.query=h({},i.query,t),e=(e=i.path+K(i.query)).replace(/\.md(\?)|\.md$/,"$1"),r){var a=n.indexOf("?");e=(0<a?n.substring(0,a):n)+e}if(this.config.relativePath&&0!==e.indexOf("/")){var o=n.substring(0,n.lastIndexOf("/")+1);return te(ne(o+e))}return te("/"+e)};var Ot=function(r){function e(e){r.call(this,e),this.mode="hash"}return r&&(e.__proto__=r),((e.prototype=Object.create(r&&r.prototype)).constructor=e).prototype.getBasePath=function(){var e=window.location.pathname||"",t=this.config.basePath;return/^(\/|https?:)/g.test(t)?t:te(e+"/"+t)},e.prototype.getCurrentPath=function(){var e=location.href,t=e.indexOf("#");return-1===t?"":e.slice(t+1)},e.prototype.onchange=function(n){void 0===n&&(n=p);var r=!1;x("click",function(e){var t="A"===e.target.tagName?e.target:e.target.parentNode;"A"!==t.tagName||/_blank/.test(t.target)||(r=!0)}),x("hashchange",function(e){var t=r?"navigate":"history";r=!1,n({event:e,source:t})})},e.prototype.normalize=function(){var e=this.getCurrentPath();if("/"===(e=ie(e)).charAt(0))return Ft(e);Ft("/"+e)},e.prototype.parse=function(e){void 0===e&&(e=location.href);var t="",n=e.indexOf("#");0<=n&&(e=e.slice(n+1));var r=e.indexOf("?");return 0<=r&&(t=e.slice(r+1),e=e.slice(0,r)),{path:e,file:this.getFile(e,!0),query:X(t)}},e.prototype.toURL=function(e,t,n){return"#"+r.prototype.toURL.call(this,e,t,n)},e}(Rt),$t=function(t){function e(e){t.call(this,e),this.mode="history"}return t&&(e.__proto__=t),((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype.getCurrentPath=function(){var e=this.getBasePath(),t=window.location.pathname;return e&&0===t.indexOf(e)&&(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash},e.prototype.onchange=function(r){var i=this;void 0===r&&(r=p),x("click",function(e){var t="A"===e.target.tagName?e.target:e.target.parentNode;if("A"===t.tagName&&!/_blank/.test(t.target)){e.preventDefault();var n=t.href;-1!==i.config.crossOriginLinks.indexOf(n)?window.open(n,"_self"):window.history.pushState({key:n},"",n),r({event:e,source:"navigate"})}}),x("popstate",function(e){r({event:e,source:"history"})})},e.prototype.parse=function(e){void 0===e&&(e=location.href);var t="",n=e.indexOf("?");0<=n&&(t=e.slice(n+1),e=e.slice(0,n));var r=re(location.origin),i=e.indexOf(r);return-1<i&&(e=e.slice(i+r.length)),{path:e,file:this.getFile(e),query:X(t)}},e}(Rt);var Mt={};function Nt(e){e.router.normalize(),e.route=e.router.parse(),v.setAttribute("data-page",e.route.file)}function zt(e){!function(e){function t(e){return v.classList.toggle("close")}null!=(e=m(e))&&(x(e,"click",function(e){e.stopPropagation(),t()}),f&&x(v,"click",function(e){return v.classList.contains("close")&&t()}))}("button.sidebar-toggle",e.router),function(e){null!=(e=m(e))&&x(e,"click",function(e){var t=e.target;"A"===t.nodeName&&t.nextSibling&&t.nextSibling.classList&&t.nextSibling.classList.contains("app-sub-sidebar")&&_(t.parentNode,"collapse")})}(".sidebar",e.router),e.config.coverpage?f||x("scroll",W):v.classList.add("sticky")}function Pt(t,n,r,i,a,e){t=e?t:t.replace(/\/$/,""),(t=ee(t))&&I(a.router.getFile(t+r)+n,!1,a.config.requestHeaders).then(i,function(e){return Pt(t,n,r,i,a)})}var jt=Object.freeze({__proto__:null,cached:s,hyphenate:a,hasOwn:l,merge:h,isPrimitive:c,noop:p,isFn:r,inBrowser:!0,isMobile:f,supportsPushState:i,parseQuery:X,stringifyQuery:K,isAbsolutePath:Q,removeParams:J,getParentPath:ee,cleanPath:te,resolvePath:ne,getPath:re,replaceSlug:ie});function Dt(){this._init()}var Ht,qt,It,Ut=Dt.prototype;function Bt(e,t,n){return It&&It.abort&&It.abort(),It=I(e,!0,n)}Ut._init=function(){var e=this;e.config=S(e),function(n){n._hooks={},n._lifecycle={},["init","mounted","beforeEach","afterEach","doneEach","ready"].forEach(function(e){var t=n._hooks[e]=[];n._lifecycle[e]=function(e){return t.push(e)}})}(e),function(t){[].concat(t.config.plugins).forEach(function(e){return r(e)&&e(t._lifecycle,t)})}(e),B(e,"init"),function(t){var e,n=t.config;e="history"===(n.routerMode||"hash")&&i?new $t(n):new Ot(n),t.router=e,Nt(t),Mt=t.route,e.onchange(function(e){Nt(t),t._updateRender(),Mt.path!==t.route.path?(t.$fetch(p,t.$resetEvents.bind(t,e.source)),Mt=t.route):t.$resetEvents(e.source)})}(e),Lt(e),zt(e),function(t){var e=t.config.loadSidebar;if(t.rendered){var n=G(t.router,".sidebar-nav",!0,!0);e&&n&&(n.parentNode.innerHTML+=window.__SUB_SIDEBAR__),t._bindEventOnRendered(n),t.$resetEvents(),B(t,"doneEach"),B(t,"ready")}else t.$fetch(function(e){return B(t,"ready")})}(e),B(e,"mounted")},Ut.route={},(Ht=Ut)._renderTo=function(e,t,n){var r=m(e);r&&(r[n?"outerHTML":"innerHTML"]=t)},Ht._renderSidebar=function(e){var t=this.config,n=t.maxLevel,r=t.subMaxLevel,i=t.loadSidebar;if(t.hideSidebar)return document.querySelector("aside.sidebar").remove(),document.querySelector("button.sidebar-toggle").remove(),document.querySelector("section.content").style.right="unset",document.querySelector("section.content").style.left="unset",document.querySelector("section.content").style.position="relative",document.querySelector("section.content").style.width="100%",null;this._renderTo(".sidebar-nav",this.compiler.sidebar(e,n));var a=G(this.router,".sidebar-nav",!0,!0);i&&a?a.parentNode.innerHTML+=this.compiler.subSidebar(r)||"":this.compiler.subSidebar(),this._bindEventOnRendered(a)},Ht._bindEventOnRendered=function(e){var t=this.config.autoHeader;if(function(e){var t=y(".cover.show");ge=t?t.offsetHeight:0;var n=m(".sidebar"),r=[];null!=n&&(r=b(n,"li"));for(var i=0,a=r.length;i<a;i+=1){var o=r[i],s=o.querySelector("a");if(s){var l=s.getAttribute("href");if("/"!==l){var c=e.parse(l),u=c.query.id,p=c.path;u&&(l=ve(p,u))}l&&(pe[decodeURIComponent(l)]=o)}}if(!f){var d=J(e.getCurrentPath());w("scroll",function(){return me(d)}),x("scroll",function(){return me(d)}),x(n,"mouseover",function(){de=!0}),x(n,"mouseleave",function(){de=!1})}}(this.router),t&&e){var n=m("#main"),r=n.children[0];r&&"H1"!==r.tagName&&k(n,g("div",this.compiler.header(e.innerText,1)).children[0])}},Ht._renderNav=function(e){e&&this._renderTo("nav",this.compiler.compile(e)),this.config.loadNavbar&&G(this.router,"nav")},Ht._renderMain=function(r,i,a){var o=this;if(void 0===i&&(i={}),!r)return Et.call(this,r);B(this,"beforeEach",r,function(e){function t(){i.updatedAt&&(n=Tt(n,i.updatedAt,o.config.formatUpdated)),B(o,"afterEach",n,function(e){return Et.call(o,e)})}var n;o.isHTML?(n=o.result=r,t(),a()):At({compiler:o.compiler,raw:e},function(e){n=o.compiler.compile(e),n=o.isRemoteUrl?D.sanitize(n):n,t(),a()})})},Ht._renderCover=function(e,t){var n=m(".cover");if(_(m("main"),t?"add":"remove","hidden"),e){_(n,"add","show");var r=this.coverIsHTML?e:this.compiler.cover(e),i=r.trim().match('<p><img.*?data-origin="(.*?)"[^a]+alt="(.*?)">([^<]*?)</p>$');if(i){if("color"===i[2])n.style.background=i[1]+(i[3]||"");else{var a=i[1];_(n,"add","has-mask"),Q(i[1])||(a=re(this.router.getBasePath(),i[1])),n.style.backgroundImage="url("+a+")",n.style.backgroundSize="cover",n.style.backgroundPosition="center center"}r=r.replace(i[0],"")}this._renderTo(".cover-main",r),W()}else _(n,"remove","show")},Ht._updateRender=function(){!function(e){var t=m(".app-name-link"),n=e.config.nameLink,r=e.route.path;if(t)if(c(e.config.nameLink))t.setAttribute("href",n);else if("object"==typeof n){var i=Object.keys(n).filter(function(e){return-1<r.indexOf(e)})[0];t.setAttribute("href",n[i])}}(this)},(qt=Ut)._loadSideAndNav=function(e,t,n,r){var i=this;return function(){if(!n)return r();Pt(e,t,n,function(e){i._renderSidebar(e),r()},i,!0)}},qt._fetch=function(n){var r=this;void 0===n&&(n=p);var e=this.route,i=e.path,a=K(e.query,["id"]),t=this.config,o=t.loadNavbar,s=t.requestHeaders,l=t.loadSidebar,c=this.router.getFile(i),u=Bt(c+a,0,s);this.isRemoteUrl=function(e){var t=e.match(/^([^:\/?#]+:)?(?:\/\/([^\/?#]*))?([^?#]+)?(\?[^#]*)?(#.*)?/);return"string"==typeof t[1]&&0<t[1].length&&t[1].toLowerCase()!==location.protocol||"string"==typeof t[2]&&0<t[2].length&&t[2].replace(new RegExp(":("+{"http:":80,"https:":443}[location.protocol]+")?$"),"")!==location.host}(c),this.isHTML=/\.html$/g.test(c),u.then(function(e,t){return r._renderMain(e,t,r._loadSideAndNav(i,a,l,n))},function(e){r._fetchFallbackPage(c,a,n)||r._fetch404(c,a,n)}),o&&Pt(i,a,o,function(e){return r._renderNav(e)},this,!0)},qt._fetchCover=function(){var t=this,e=this.config,n=e.coverpage,r=e.requestHeaders,i=this.route.query,a=ee(this.route.path);if(n){var o=null,s=this.route.path;if("string"==typeof n)"/"===s&&(o=n);else if(Array.isArray(n))o=-1<n.indexOf(s)&&"_coverpage";else{var l=n[s];o=!0===l?"_coverpage":l}var c=Boolean(o)&&this.config.onlyCover;return o?(o=this.router.getFile(a+o),this.coverIsHTML=/\.html$/g.test(o),I(o+K(i,["id"]),!1,r).then(function(e){return t._renderCover(e,c)})):this._renderCover(null,c),c}},qt.$fetch=function(e,t){var n=this;function r(){B(n,"doneEach"),e()}void 0===e&&(e=p),void 0===t&&(t=this.$resetEvents.bind(this)),this._fetchCover()?r():this._fetch(function(){t(),r()})},qt._fetchFallbackPage=function(n,r,i){var a=this;void 0===i&&(i=p);var e=this.config,t=e.requestHeaders,o=e.fallbackLanguages,s=e.loadSidebar;if(!o)return!1;var l=n.split("/")[1];if(-1===o.indexOf(l))return!1;var c=n.replace(new RegExp("^/"+l),"");return Bt(c+r,0,t).then(function(e,t){return a._renderMain(e,t,a._loadSideAndNav(n,r,s,i))},function(){return a._fetch404(n,r,i)}),!0},qt._fetch404=function(e,t,n){var r=this;void 0===n&&(n=p);var i=this.config,a=i.loadSidebar,o=i.requestHeaders,s=i.notFoundPage,l=this._loadSideAndNav(e,t,a,n);if(s){var c=function(t,e){var n,r,i=e.notFoundPage,a="_404"+(e.ext||".md");switch(typeof i){case"boolean":r=a;break;case"string":r=i;break;case"object":r=(n=Object.keys(i).sort(function(e,t){return t.length-e.length}).find(function(e){return t.match(new RegExp("^"+e))}))&&i[n]||a}return r}(e,this.config);return Bt(this.router.getFile(c),0,o).then(function(e,t){return r._renderMain(e,t,l)},function(){return r._renderMain(null,{},l)}),!0}return this._renderMain(null,{},l),!1},Ut.$resetEvents=function(e){var t=this,n=this.config.auto2top;"history"!==e&&(t.route.query.id&&ye(t.route.path,t.route.query.id),"navigate"===e&&n&&function(e){void 0===e&&(e=0),be.scrollTop=!0===e?0:Number(e)}(n)),this.config.loadNavbar&&G(this.router,"nav")},window.Docsify={util:jt,dom:t,get:I,slugify:ht,version:"4.11.4"},window.DocsifyCompiler=xt,window.marked=ot,window.Prism=vt,e(function(e){return new Dt})}(); diff --git a/cursos/dagger/_cdn/search.js b/cursos/dagger/_cdn/search.js new file mode 100755 index 00000000..23a3825c --- /dev/null +++ b/cursos/dagger/_cdn/search.js @@ -0,0 +1 @@ +!function () { var d = {}, l = { EXPIRE_KEY: "docsify.search.expires", INDEX_KEY: "docsify.search.index" }; function p(e) { var n = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }; return String(e).replace(/[&<>"']/g, function (e) { return n[e] }) } function h(e) { return e.text || "table" !== e.type || (e.text = e.cells.map(function (e) { return e.join(" | ") }).join(" |\n ")), e.text } function u(i, e, o, a) { void 0 === e && (e = ""); var s, n = window.marked.lexer(e), c = window.Docsify.slugify, d = {}; return n.forEach(function (e) { if ("heading" === e.type && e.depth <= a) { var n = function (e) { void 0 === e && (e = ""); var r = {}; return { str: e = e && e.replace(/^'/, "").replace(/'$/, "").replace(/(?:^|\s):([\w-]+:?)=?([\w-%]+)?/g, function (e, n, t) { return -1 === n.indexOf(":") ? (r[n] = t && t.replace(/"/g, "") || !0, "") : e }).trim(), config: r } }(e.text), t = n.str, r = n.config; s = r.id ? o.toURL(i, { id: c(r.id) }) : o.toURL(i, { id: c(p(e.text)) }), d[s] = { slug: s, title: t, body: "" } } else { if (!s) return; d[s] ? d[s].body ? (e.text = h(e), d[s].body += "\n" + (e.text || "")) : (e.text = h(e), d[s].body = d[s].body ? d[s].body + e.text : e.text) : d[s] = { slug: s, title: "", body: "" } } }), c.clear(), d } function c(e) { var i = [], o = []; Object.keys(d).forEach(function (n) { o = o.concat(Object.keys(d[n]).map(function (e) { return d[n][e] })) }); var a = (e = e.trim()).split(/[\s\-,\\/]+/); 1 !== a.length && (a = [].concat(e, a)); function n(e) { var n = o[e], s = 0, c = "", d = n.title && n.title.trim(), l = n.body && n.body.trim(), t = n.slug || ""; if (d && (a.forEach(function (e) { var n, t = new RegExp(e.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&"), "gi"), r = -1; if (n = d ? d.search(t) : -1, r = l ? l.search(t) : -1, 0 <= n || 0 <= r) { s += 0 <= n ? 3 : 0 <= r ? 2 : 0, r < 0 && (r = 0); var i, o = 0; o = 0 == (i = r < 11 ? 0 : r - 10) ? 70 : r + e.length + 60, l && o > l.length && (o = l.length); var a = "..." + p(l).substring(i, o).replace(t, '<em class="search-keyword">' + e + "</em>") + "..."; c += a } }), 0 < s)) { var r = { title: p(d), content: l ? c : "", url: t, score: s }; i.push(r) } } for (var t = 0; t < o.length; t++)n(t); return i.sort(function (e, n) { return n.score - e.score }) } function o(t, r) { var e = "auto" === t.paths, i = function (e) { return e ? l.EXPIRE_KEY + "/" + e : l.EXPIRE_KEY }(t.namespace), o = function (e) { return e ? l.INDEX_KEY + "/" + e : l.INDEX_KEY }(t.namespace), n = localStorage.getItem(i) < Date.now(); if (d = JSON.parse(localStorage.getItem(o)), n) d = {}; else if (!e) return; var a = e ? function (i) { var o = []; return Docsify.dom.findAll(".sidebar-nav a:not(.section-link):not([data-nosearch])").forEach(function (e) { var n = e.href, t = e.getAttribute("href"), r = i.parse(n).path; r && -1 === o.indexOf(r) && !Docsify.util.isAbsolutePath(t) && o.push(r) }), o }(r.router) : t.paths, s = a.length, c = 0; a.forEach(function (n) { if (d[n]) return c++; Docsify.get(r.router.getFile(n), !1, r.config.requestHeaders).then(function (e) { d[n] = u(n, e, r.router, t.depth), s === ++c && function (e, n, t) { localStorage.setItem(n, Date.now() + e), localStorage.setItem(t, JSON.stringify(d)) }(t.maxAge, i, o) }) }) } var f, m = ""; function i(e) { var n = Docsify.dom.find("div.search"), t = Docsify.dom.find(n, ".results-panel"), r = Docsify.dom.find(n, ".clear-button"), i = Docsify.dom.find(".sidebar-nav"), o = Docsify.dom.find(".app-name"); if (!e) return t.classList.remove("show"), r.classList.remove("show"), t.innerHTML = "", void (f.hideOtherSidebarContent && (i.classList.remove("hide"), o.classList.remove("hide"))); var a = c(e), s = ""; a.forEach(function (e) { s += '<div class="matching-post">\n<a href="' + e.url + '">\n<h2>' + e.title + "</h2>\n<p>" + e.content + "</p>\n</a>\n</div>" }), t.classList.add("show"), r.classList.add("show"), t.innerHTML = s || '<p class="empty">' + m + "</p>", f.hideOtherSidebarContent && (i.classList.add("hide"), o.classList.add("hide")) } function r(e) { f = e } function a(e, n) { var t = n.router.parse().query.s; r(e), Docsify.dom.style("\n.sidebar {\n padding-top: 0;\n}\n\n.search {\n margin-bottom: 20px;\n padding: 6px;\n border-bottom: 1px solid #eee;\n}\n\n.search .input-wrap {\n display: flex;\n align-items: center;\n}\n\n.search .results-panel {\n display: none;\n}\n\n.search .results-panel.show {\n display: block;\n}\n\n.search input {\n outline: none;\n border: none;\n width: 100%;\n padding: 0 7px;\n line-height: 36px;\n font-size: 14px;\n border: 1px solid transparent;\n}\n\n.search input:focus {\n box-shadow: 0 0 5px var(--theme-color, #42b983);\n border: 1px solid var(--theme-color, #42b983);\n}\n\n.search input::-webkit-search-decoration,\n.search input::-webkit-search-cancel-button,\n.search input {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.search .clear-button {\n cursor: pointer;\n width: 36px;\n text-align: right;\n display: none;\n}\n\n.search .clear-button.show {\n display: block;\n}\n\n.search .clear-button svg {\n transform: scale(.5);\n}\n\n.search h2 {\n font-size: 17px;\n margin: 10px 0;\n}\n\n.search a {\n text-decoration: none;\n color: inherit;\n}\n\n.search .matching-post {\n border-bottom: 1px solid #eee;\n}\n\n.search .matching-post:last-child {\n border-bottom: 0;\n}\n\n.search p {\n font-size: 14px;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n.search p.empty {\n text-align: center;\n}\n\n.app-name.hide, .sidebar-nav.hide {\n display: none;\n}"), function (e) { void 0 === e && (e = ""); var n = '<div class="input-wrap">\n <input type="search" value="' + e + '" aria-label="Search text" />\n <div class="clear-button">\n <svg width="26" height="24">\n <circle cx="12" cy="12" r="11" fill="#ccc" />\n <path stroke="white" stroke-width="2" d="M8.25,8.25,15.75,15.75" />\n <path stroke="white" stroke-width="2"d="M8.25,15.75,15.75,8.25" />\n </svg>\n </div>\n </div>\n <div class="results-panel"></div>\n </div>', t = Docsify.dom.create("div", n), r = Docsify.dom.find("aside"); Docsify.dom.toggleClass(t, "search"), Docsify.dom.before(r, t) }(t), function () { var e, n = Docsify.dom.find("div.search"), t = Docsify.dom.find(n, "input"), r = Docsify.dom.find(n, ".input-wrap"); Docsify.dom.on(n, "click", function (e) { return -1 === ["A", "H2", "P", "EM"].indexOf(e.target.tagName) && e.stopPropagation() }), Docsify.dom.on(t, "input", function (n) { clearTimeout(e), e = setTimeout(function (e) { return i(n.target.value.trim()) }, 100) }), Docsify.dom.on(r, "click", function (e) { "INPUT" !== e.target.tagName && (t.value = "", i()) }) }(), t && setTimeout(function (e) { return i(t) }, 500) } function s(e, n) { r(e), function (e, n) { var t = Docsify.dom.getNode('.search input[type="search"]'); if (t) if ("string" == typeof e) t.placeholder = e; else { var r = Object.keys(e).filter(function (e) { return -1 < n.indexOf(e) })[0]; t.placeholder = e[r] } }(e.placeholder, n.route.path), function (e, n) { if ("string" == typeof e) m = e; else { var t = Object.keys(e).filter(function (e) { return -1 < n.indexOf(e) })[0]; m = e[t] } }(e.noData, n.route.path) } var g = { placeholder: "Type to search", noData: "No Results!", paths: "auto", depth: 2, maxAge: 864e5, hideOtherSidebarContent: !1, namespace: void 0 }; $docsify.plugins = [].concat(function (e, n) { var t = Docsify.util, r = n.config.search || g; Array.isArray(r) ? g.paths = r : "object" == typeof r && (g.paths = Array.isArray(r.paths) ? r.paths : "auto", g.maxAge = t.isPrimitive(r.maxAge) ? r.maxAge : g.maxAge, g.placeholder = r.placeholder || g.placeholder, g.noData = r.noData || g.noData, g.depth = r.depth || g.depth, g.hideOtherSidebarContent = r.hideOtherSidebarContent || g.hideOtherSidebarContent, g.namespace = r.namespace || g.namespace); var i = "auto" === g.paths; e.mounted(function (e) { a(g, n), i || o(g, n) }), e.doneEach(function (e) { s(g, n), i && o(g, n) }) }, $docsify.plugins) }(); \ No newline at end of file diff --git a/cursos/dagger/_cdn/theme.css b/cursos/dagger/_cdn/theme.css new file mode 100755 index 00000000..9b611566 --- /dev/null +++ b/cursos/dagger/_cdn/theme.css @@ -0,0 +1 @@ +@import url("https://fonts.googleapis.com/css?family=Roboto+Mono|Source+Sans+Pro:300,400,600");*{-webkit-font-smoothing:antialiased;-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:none;-webkit-touch-callout:none;box-sizing:border-box}body:not(.ready){overflow:hidden}body:not(.ready) .app-nav,body:not(.ready)>nav,body:not(.ready) [data-cloak]{display:none}div#app{font-size:30px;font-weight:lighter;margin:40vh auto;text-align:center}div#app:empty:before{content:"Loading..."}.emoji{height:1.2rem;vertical-align:middle}.progress{background-color:var(--theme-color,#42b983);height:2px;left:0;position:fixed;right:0;top:0;transition:width .2s,opacity .4s;width:0;z-index:999999}.search .search-keyword,.search a:hover{color:var(--theme-color,#42b983)}.search .search-keyword{font-style:normal;font-weight:700}body,html{height:100%}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:#34495e;font-family:Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-size:15px;letter-spacing:0;margin:0;overflow-x:hidden}img{max-width:100%}a[disabled]{cursor:not-allowed;opacity:.6}kbd{border:1px solid #ccc;border-radius:3px;display:inline-block;font-size:12px!important;line-height:12px;margin-bottom:3px;padding:3px 5px;vertical-align:middle}li input[type=checkbox]{margin:0 .2em .25em 0;vertical-align:middle}.app-nav{margin:25px 60px 0 0;position:absolute;right:0;text-align:right;z-index:10}.app-nav.no-badge{margin-right:25px}.app-nav p{margin:0}.app-nav>a{margin:0 1rem;padding:5px 0}.app-nav li,.app-nav ul{display:inline-block;list-style:none;margin:0}.app-nav a{color:inherit;font-size:16px;text-decoration:none;transition:color .3s}.app-nav a.active,.app-nav a:hover{color:var(--theme-color,#42b983)}.app-nav a.active{border-bottom:2px solid var(--theme-color,#42b983)}.app-nav li{display:inline-block;margin:0 1rem;padding:5px 0;position:relative;cursor:pointer}.app-nav li ul{background-color:#fff;border:1px solid;border-color:#ddd #ddd #ccc;border-radius:4px;box-sizing:border-box;display:none;max-height:calc(100vh - 61px);overflow-y:auto;padding:10px 0;position:absolute;right:-15px;text-align:left;top:100%;white-space:nowrap}.app-nav li ul li{display:block;font-size:14px;line-height:1rem;margin:8px 14px;white-space:nowrap}.app-nav li ul a{display:block;font-size:inherit;margin:0;padding:0}.app-nav li ul a.active{border-bottom:0}.app-nav li:hover ul{display:block}.github-corner{border-bottom:0;position:fixed;right:0;text-decoration:none;top:0;z-index:1}.github-corner:hover .octo-arm{-webkit-animation:octocat-wave .56s ease-in-out;animation:octocat-wave .56s ease-in-out}.github-corner svg{color:#fff;fill:var(--theme-color,#42b983);height:80px;width:80px}main{display:block;position:relative;width:100vw;height:100%;z-index:0}main.hidden{display:none}.anchor{display:inline-block;text-decoration:none;transition:all .3s}.anchor span{color:#34495e}.anchor:hover{text-decoration:underline}.sidebar{border-right:1px solid rgba(0,0,0,.07);overflow-y:auto;padding:40px 0 0;position:absolute;top:0;bottom:0;left:0;transition:transform .25s ease-out;width:300px;z-index:20}.sidebar>h1{margin:0 auto 1rem;font-size:1.5rem;font-weight:300;text-align:center}.sidebar>h1 a{color:inherit;text-decoration:none}.sidebar>h1 .app-nav{display:block;position:static}.sidebar .sidebar-nav{line-height:2em;padding-bottom:40px}.sidebar li.collapse .app-sub-sidebar{display:none}.sidebar ul{margin:0 0 0 15px;padding:0}.sidebar li>p{font-weight:700;margin:0}.sidebar ul,.sidebar ul li{list-style:none}.sidebar ul li a{border-bottom:none;display:block}.sidebar ul li ul{padding-left:20px}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-thumb{background:transparent;border-radius:4px}.sidebar:hover::-webkit-scrollbar-thumb{background:hsla(0,0%,53.3%,.4)}.sidebar:hover::-webkit-scrollbar-track{background:hsla(0,0%,53.3%,.1)}.sidebar-toggle{background-color:transparent;background-color:hsla(0,0%,100%,.8);border:0;outline:none;padding:10px;position:absolute;bottom:0;left:0;text-align:center;transition:opacity .3s;width:284px;z-index:30;cursor:pointer}.sidebar-toggle:hover .sidebar-toggle-button{opacity:.4}.sidebar-toggle span{background-color:var(--theme-color,#42b983);display:block;margin-bottom:4px;width:16px;height:2px}body.sticky .sidebar,body.sticky .sidebar-toggle{position:fixed}.content{padding-top:60px;position:absolute;top:0;right:0;bottom:0;left:300px;transition:left .25s ease}.markdown-section{margin:0 auto;max-width:80%;padding:30px 15px 40px;position:relative}.markdown-section>*{box-sizing:border-box;font-size:inherit}.markdown-section>:first-child{margin-top:0!important}.markdown-section hr{border:none;border-bottom:1px solid #eee;margin:2em 0}.markdown-section iframe{border:1px solid #eee;width:1px;min-width:100%}.markdown-section table{border-collapse:collapse;border-spacing:0;display:block;margin-bottom:1rem;overflow:auto;width:100%}.markdown-section th{font-weight:700}.markdown-section td,.markdown-section th{border:1px solid #ddd;padding:6px 13px}.markdown-section tr{border-top:1px solid #ccc}.markdown-section p.tip,.markdown-section tr:nth-child(2n){background-color:#f8f8f8}.markdown-section p.tip{border-bottom-right-radius:2px;border-left:4px solid #f66;border-top-right-radius:2px;margin:2em 0;padding:12px 24px 12px 30px;position:relative}.markdown-section p.tip:before{background-color:#f66;border-radius:100%;color:#fff;content:"!";font-family:Dosis,Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-size:14px;font-weight:700;left:-12px;line-height:20px;position:absolute;height:20px;width:20px;text-align:center;top:14px}.markdown-section p.tip code{background-color:#efefef}.markdown-section p.tip em{color:#34495e}.markdown-section p.warn{background:rgba(66,185,131,.1);border-radius:2px;padding:1rem}.markdown-section ul.task-list>li{list-style-type:none}body.close .sidebar{transform:translateX(-300px)}body.close .sidebar-toggle{width:auto}body.close .content{left:0}@media print{.app-nav,.github-corner,.sidebar,.sidebar-toggle{display:none}}@media screen and (max-width:768px){.github-corner,.sidebar,.sidebar-toggle{position:fixed}.app-nav{margin-top:16px}.app-nav li ul{top:30px}main{height:auto;overflow-x:hidden}.sidebar{left:-300px;transition:transform .25s ease-out}.content{left:0;max-width:100vw;position:static;padding-top:20px;transition:transform .25s ease}.app-nav,.github-corner{transition:transform .25s ease-out}.sidebar-toggle{background-color:transparent;width:auto;padding:30px 30px 10px 10px}body.close .sidebar{transform:translateX(300px)}body.close .sidebar-toggle{background-color:hsla(0,0%,100%,.8);transition:background-color 1s;width:284px;padding:10px}body.close .content{transform:translateX(300px)}body.close .app-nav,body.close .github-corner{display:none}.github-corner:hover .octo-arm{-webkit-animation:none;animation:none}.github-corner .octo-arm{-webkit-animation:octocat-wave .56s ease-in-out;animation:octocat-wave .56s ease-in-out}}@-webkit-keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}section.cover{align-items:center;background-position:50%;background-repeat:no-repeat;background-size:cover;height:100vh;width:100vw;display:none}section.cover.show{display:flex}section.cover.has-mask .mask{background-color:#fff;opacity:.8;position:absolute;top:0;height:100%;width:100%}section.cover .cover-main{flex:1;margin:-20px 16px 0;text-align:center}section.cover a{color:inherit}section.cover a,section.cover a:hover{text-decoration:none}section.cover p{line-height:1.5rem;margin:1em 0}section.cover h1{color:inherit;font-size:2.5rem;font-weight:300;margin:.625rem 0 2.5rem;position:relative;text-align:center}section.cover h1 a{display:block}section.cover h1 small{bottom:-.4375rem;font-size:1rem;position:absolute}section.cover blockquote{font-size:1.5rem;text-align:center}section.cover ul{line-height:1.8;list-style-type:none;margin:1em auto;max-width:500px;padding:0}section.cover .cover-main>p:last-child a{border-radius:2rem;border:1px solid var(--theme-color,#42b983);box-sizing:border-box;color:var(--theme-color,#42b983);display:inline-block;font-size:1.05rem;letter-spacing:.1rem;margin:.5rem 1rem;padding:.75em 2rem;text-decoration:none;transition:all .15s ease}section.cover .cover-main>p:last-child a:last-child{background-color:var(--theme-color,#42b983);color:#fff}section.cover .cover-main>p:last-child a:last-child:hover{color:inherit;opacity:.8}section.cover .cover-main>p:last-child a:hover{color:inherit}section.cover blockquote>p>a{border-bottom:2px solid var(--theme-color,#42b983);transition:color .3s}section.cover blockquote>p>a:hover{color:var(--theme-color,#42b983)}.sidebar,body{background-color:#fff}.sidebar{color:#364149}.sidebar li{margin:6px 0}.sidebar ul li a{color:#505d6b;font-size:14px;font-weight:400;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.sidebar ul li a:hover{text-decoration:underline}.sidebar ul li ul{padding:0}.sidebar ul li.active>a{border-right:2px solid;color:var(--theme-color,#42b983);font-weight:600}.app-sub-sidebar li:before{content:"-";padding-right:4px;float:left}.markdown-section h1,.markdown-section h2,.markdown-section h3,.markdown-section h4,.markdown-section strong{color:#2c3e50;font-weight:600}.markdown-section a{color:var(--theme-color,#42b983);font-weight:600}.markdown-section h1{font-size:2rem;margin:0 0 1rem}.markdown-section h2{font-size:1.75rem;margin:45px 0 .8rem}.markdown-section h3{font-size:1.5rem;margin:40px 0 .6rem}.markdown-section h4{font-size:1.25rem}.markdown-section h5{font-size:1rem}.markdown-section h6{color:#777;font-size:1rem}.markdown-section figure,.markdown-section p{margin:1.2em 0}.markdown-section ol,.markdown-section p,.markdown-section ul{line-height:1.6rem;word-spacing:.05rem}.markdown-section ol,.markdown-section ul{padding-left:1.5rem}.markdown-section blockquote{border-left:4px solid var(--theme-color,#42b983);color:#858585;margin:2em 0;padding-left:20px}.markdown-section blockquote p{font-weight:600;margin-left:0}.markdown-section iframe{margin:1em 0}.markdown-section em{color:#7f8c8d}.markdown-section code{border-radius:2px;color:#e96900;font-size:.8rem;margin:0 2px;padding:3px 5px;white-space:pre-wrap}.markdown-section code,.markdown-section pre{background-color:#f8f8f8;font-family:Roboto Mono,Monaco,courier,monospace}.markdown-section pre{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;line-height:1.5rem;margin:1.2em 0;overflow:auto;padding:0 1.4rem;position:relative;word-wrap:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8e908c}.token.namespace{opacity:.7}.token.boolean,.token.number{color:#c76b29}.token.punctuation{color:#525252}.token.property{color:#c08b30}.token.tag{color:#2973b7}.token.string{color:var(--theme-color,#42b983)}.token.selector{color:#6679cc}.token.attr-name{color:#2973b7}.language-css .token.string,.style .token.string,.token.entity,.token.url{color:#22a2c9}.token.attr-value,.token.control,.token.directive,.token.unit{color:var(--theme-color,#42b983)}.token.function,.token.keyword{color:#e96900}.token.atrule,.token.regex,.token.statement{color:#22a2c9}.token.placeholder,.token.variable{color:#3d8fd1}.token.deleted{text-decoration:line-through}.token.inserted{border-bottom:1px dotted #202746;text-decoration:none}.token.italic{font-style:italic}.token.bold,.token.important{font-weight:700}.token.important{color:#c94922}.token.entity{cursor:help}.markdown-section pre>code{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;background-color:#f8f8f8;border-radius:2px;color:#525252;display:block;font-family:Roboto Mono,Monaco,courier,monospace;font-size:.8rem;line-height:inherit;margin:0 2px;max-width:inherit;overflow:inherit;padding:2.2em 5px;white-space:inherit}.markdown-section code:after,.markdown-section code:before{letter-spacing:.05rem}code .token{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;min-height:1.5rem;position:relative;left:auto}pre:after{color:#ccc;content:attr(data-lang);font-size:.6rem;font-weight:600;height:15px;line-height:15px;padding:5px 10px 0;position:absolute;right:0;text-align:right;top:0} \ No newline at end of file diff --git a/cursos/dagger/_config.yml b/cursos/dagger/_config.yml new file mode 100644 index 00000000..c7418817 --- /dev/null +++ b/cursos/dagger/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-slate \ No newline at end of file diff --git a/cursos/dagger/_coverpage.md b/cursos/dagger/_coverpage.md new file mode 100755 index 00000000..051e0360 --- /dev/null +++ b/cursos/dagger/_coverpage.md @@ -0,0 +1,33 @@ +<br> +<br> + +![logo](_media/icon.png) + +# Dagger <small></small> + +> Application delivery as code + +- Curso básico de dagger + + +[GitHub](https://github.com/prefapp/formacion/tree/master/cursos/dagger) +[Plataforma](https://prefapp.github.io/formacion/) +[Empezar](#Introducción) + +<!--- GB color ---> +<!--- Commit all, it will effect a random gradient color ---> +<!--- ![color](#000000) #black ---> +<!--- ![color](#FFFFFF) #white ---> +<!--- ![color](#393B45) #grey ---> +<!--- ![color](#063336) #green dark ---> +<!--- ![color](#548E8B) #green smooth ---> +<!--- ![color](#EB4E57) #red ---> +<!--- ![color](#F27F60) #orange ---> +<!--- ![color](#B9A66C) #gold ---> +<!--- ![color](#F3B54A) #yellow ---> +<!--- ![color](#355C7D) #blue dark ---> +<!--- ![color](#BFD1E5) #blue smooth ---> +<!--- ![color](#6C5B7B) #purple ---> +<!--- ![color](#584848) #brown ---> + +![color](#BFD1E5) diff --git a/cursos/dagger/_media/01/intro1.svg b/cursos/dagger/_media/01/intro1.svg new file mode 100644 index 00000000..34dcfe55 --- /dev/null +++ b/cursos/dagger/_media/01/intro1.svg @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="409px" height="316px" viewBox="0 0 409 316" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 51.3 (57544) - http://www.bohemiancoding.com/sketch --> + <title>Group + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cursos/dagger/_media/01/intro2.png b/cursos/dagger/_media/01/intro2.png new file mode 100644 index 00000000..5be8a7cd Binary files /dev/null and b/cursos/dagger/_media/01/intro2.png differ diff --git a/cursos/dagger/_media/01/intro3.png b/cursos/dagger/_media/01/intro3.png new file mode 100644 index 00000000..9c2cb5d6 Binary files /dev/null and b/cursos/dagger/_media/01/intro3.png differ diff --git a/cursos/dagger/_media/01/intro4.png b/cursos/dagger/_media/01/intro4.png new file mode 100644 index 00000000..bf21341b Binary files /dev/null and b/cursos/dagger/_media/01/intro4.png differ diff --git a/cursos/dagger/_media/01/intro5.png b/cursos/dagger/_media/01/intro5.png new file mode 100644 index 00000000..7fe795f2 Binary files /dev/null and b/cursos/dagger/_media/01/intro5.png differ diff --git a/cursos/dagger/_media/02/valores1.png b/cursos/dagger/_media/02/valores1.png new file mode 100644 index 00000000..a6b4dee3 Binary files /dev/null and b/cursos/dagger/_media/02/valores1.png differ diff --git a/cursos/dagger/_media/02/valores2.png b/cursos/dagger/_media/02/valores2.png new file mode 100644 index 00000000..a33a845e Binary files /dev/null and b/cursos/dagger/_media/02/valores2.png differ diff --git a/cursos/dagger/_media/02/valores3.png b/cursos/dagger/_media/02/valores3.png new file mode 100644 index 00000000..218c851c Binary files /dev/null and b/cursos/dagger/_media/02/valores3.png differ diff --git a/cursos/dagger/_media/favicon.ico b/cursos/dagger/_media/favicon.ico new file mode 100755 index 00000000..faf19040 Binary files /dev/null and b/cursos/dagger/_media/favicon.ico differ diff --git a/cursos/dagger/_media/favicon.svg b/cursos/dagger/_media/favicon.svg new file mode 100644 index 00000000..1e2db8a2 --- /dev/null +++ b/cursos/dagger/_media/favicon.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cursos/dagger/_media/icon.png b/cursos/dagger/_media/icon.png new file mode 100644 index 00000000..8d783cba Binary files /dev/null and b/cursos/dagger/_media/icon.png differ diff --git a/cursos/dagger/_sidebar.md b/cursos/dagger/_sidebar.md new file mode 100755 index 00000000..6dcbecc1 --- /dev/null +++ b/cursos/dagger/_sidebar.md @@ -0,0 +1,6 @@ +- Dagger 101 + - [¿Qué es Dagger?](./01_dagger_101/01_que_es_dagger.md) + - [📝 Actividades](./00_actividades/01_modulo_1.md) + + + diff --git a/cursos/dagger/index.html b/cursos/dagger/index.html new file mode 100755 index 00000000..a3f1f21a --- /dev/null +++ b/cursos/dagger/index.html @@ -0,0 +1,108 @@ + + + + + + PREFAPP-Dagger + + + + + + + + + + + + +

Cargando ...
+ + + + + + + + + + +