/*!*********************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/noyau/css/10_font.css ***!
  \*********************************************************************************************************************/
html {
    /* Il est interdit de rajouter des couleurs sans demander l'accord du PO */
    --cBlanc1: var(--cBlanc);
    /* inutilisé 2026-06-13  --cBlanc1p: #E0E0E0; */
    --cBlanc02: #F5F5F5;
    --cBlanc2: #F0F0F0;
    --cBlanc03: #dce1ea;
    --cBlanc3: #CCCFCC;
    /* inutilisé 2026-06-13  --cBlanc4: #AAAFAA; */
    --cBlanc5: #999C99;


    /* ============================================
       COULEURS TEXTE NOIR - UTILISATION OBLIGATOIRE
       ============================================ */

    /* --cNoir1 : ÉLÉMENTS D'EMPHASE
       - Titres : h1, h2, h3
       - Texte des boutons (quand pas de couleur définie)
       - Labels obligatoires (required)
       - Menus de navigation
       - Checkbox et radio boutons
       - Valeur principale dans les compteurs (ex: "3" dans "3 / 5")
    */
    --cNoir1: #181818;
    /* inutilisé 2026-06-13  --cNoir1o: #18181855; */

    /* --cNoir2 : CORPS DE TEXTE
       - Paragraphes <p>
       - Listes <li>, énumérations
       - Labels facultatifs
       - Texte saisi dans les inputs
       - Titres h4, h5, h6
       - Valeur secondaire dans les compteurs (ex: "/ 5" dans "3 / 5")
    */
    --cNoir2: #282828;

    /* --cNoir3 : TEXTE TERTIAIRE
       - Placeholders
       - Messages d'aide discrets
       - Texte désactivé
    */
    --cNoir3: #555;

    /* --cNoir4-5 : TEXTE TRÈS ATTÉNUÉ
       - Éléments désactivés
       - Texte décoratif
    */
    --cNoir4: #999;
    --cNoir5: #BBB;
    --cBlanc: #FFF;
    --cNoir: #000;
    --cTexte1: #222;
    /* inutilisé 2026-06-13  --cTexte2: #444; */
    --cForm: #000;
    /* inutilisé 2026-06-13  --cForm_b: #555; */

    /* ============================================
       PALETTES DE RÔLE — une seule forme, 8 paliers, toujours nommés pareil
       0 fond très pâle · 1 fond pâle · 2 bordure / moyen · 3 couleur pleine (bouton, lien,
       onglet actif, indicateur) · 4 foncé / survol · _a dégradé · _ah dégradé au survol ·
       t texte posé sur la couleur pleine.
       Accent est la couleur de l'espace où l'on est : elle change par une classe sur <body>
       (voir le bloc après html{}). Or, Rouge et Succes ne changent jamais.
       Décision PO 2026-09-05. Aucune autre couleur de rôle n'est admise.
       ============================================ */

    /* Accent : voir le bloc body { } après html { }. Elle vit sur body, pas ici — une
       variable dérivée (dégradé, halo) se calcule là où elle est déclarée, et doit donc
       être déclarée sur le même élément que la classe qui change la couleur. */

    /* Or — s'inscrire, connexion, tarif, mise en avant */
    --cOr0: #fefce8;
    --cOr1: #fef3c7;
    --cOr2: #f5d96b;
    --cOr3: #FFD814; /* l'or d'Amazon, texte foncé dessus (décision chef de projet 2026-10-07) */
    --cOr4: #FFCE12; /* son survol */
    --cOr_a: linear-gradient(to bottom, var(--cOr3), var(--cOr4) 100%);
    --cOr_ah: linear-gradient(to bottom, var(--cOr3), var(--cOr3) 100%);
    --cOrt: #181818; /* foncé : le blanc sur --cOr3 ne faisait que 2,0:1 de contraste, 8,8:1 ainsi (décision chef de projet 2026-10-07) */

    /* Rouge — erreur, alerte, suppression, geste dangereux */
    --cRouge0: #fdf3f2;
    --cRouge1: #fbe2df;
    --cRouge2: #f5aaa3;
    --cRouge3: #f15b4e;
    --cRouge4: #930000;
    --cRouge_a: linear-gradient(to bottom, var(--cRouge3), var(--cRouge4) 100%);
    --cRouge_ah: linear-gradient(to bottom, var(--cRouge3), var(--cRouge3) 100%);
    --cRouget: #FFF;

    /* Cœur « J'aime » — un rouge à lui, sang, bordeaux foncé : le rouge de la famille dit
       l'alerte et le danger, pas l'affection (décision chef de projet 2026-09-16).
       Deux crans, comme les autres familles : le pâle du survol, la couleur du cœur. */
    --cCoeur0: #f6e4e7;
    --cCoeur3: #c1192f;

    /* Succes — validation, confirmation */
    --cSucces0: #f0fbff;
    --cSucces1: #ddf1fa;
    --cSucces2: #93d3ea;
    --cSucces3: #0e9dc9;
    --cSucces4: #0b5f7a;
    --cSucces_a: linear-gradient(to bottom, var(--cSucces3), var(--cSucces4) 100%);
    --cSucces_ah: linear-gradient(to bottom, var(--cSucces3), var(--cSucces3) 100%);
    --cSuccest: #FFF;

    --cBackground: var(--cBlanc);

    /* Le bandeau des aperçus (pageRubrique.css, ≥ 1600px). UN PLATEAU UNI AU CENTRE, le dégradé
       sur les bords seulement (décision chef de projet 2026-09-24) : l'ancien dégradé allait
       du gris des bords au blanc du centre, et des cartes blanches identiques paraissaient
       blanches sur le gris et ternes sur le blanc. Sur le plateau, toutes se détachent
       pareil. Deux halos de couleur, tenus dans les bords, donnent un peu de vie : le bleu
       du site en haut à gauche, l'orange des illustrations en bas à droite. */
    --cBackgroundGrand:
        radial-gradient(14% 40% at 0% 25%, #436bc11f, transparent),
        radial-gradient(14% 40% at 100% 75%, #f39c341f, transparent),
        linear-gradient(90deg, #E8EBF0 0%, #F4F5F7 12%, #F4F5F7 88%, #E8EBF0 100%);

    /* Layout */
    --largeur: 1360px;
    /* inutilisé 2026-06-13  --maxWidth: 760px; */
    --cBg: var(--cBlanc);
    /* inutilisé 2026-06-13  --cBg_b: #CCC; */

    /* Noir transparent — ombres */
    --cOmbre: #0002;            /* environ 15% */
    --cOmbreForte: #0004;       /* environ 30% */

    /* transparent — overlays */
    --cOverlay: #0008;          /* environ 50% */
    --cBlancOverlay: #FFFC;     /* environ 80% */
    --cBlancVerre: #FFFFFF8C;   /* environ 55% — verre dépoli, toujours avec un flou (barre et bulle de l'aperçu) */

    /* Ombres composées */
    --ombrePortee: 0 4px 12px var(--cOmbre);
    --ombrePortee2: 0 0px 25px #000;
    --ombreModale: 0 10px 40px var(--cOmbreForte);
    --ombreInterne: 0 0 10px 10px inset var(--cBlanc02);

    /* Couleurs Noir gradients */
    /* inutilisé 2026-06-13  --cNoir3_a: linear-gradient(to bottom, #505858, #303838 100%); */
    /* inutilisé 2026-06-13  --cNoir3_ah: linear-gradient(to bottom, #505858, #505858 100%); */
    /* inutilisé 2026-06-13  --cNoir3_ahLight: linear-gradient(to bottom, #707878, #707878 100%); */
    /* inutilisé 2026-06-13  --cNoir3_at: #FFF; */


    /* inutilisé 2026-06-13  --sAlerte_s: #DEC4C4; */
    /* inutilisé 2026-06-13  --cTuto: #C6F; */
    /* inutilisé 2026-06-13  --cTuto_t: #000; */
    /* inutilisé 2026-06-13  --cTuto_ah: #d79af2; */
    /* inutilisé 2026-06-13  --cBlanc1_t: #181818; */
    /* inutilisé 2026-06-13  --cPlacehoder: #888; */
    /* inutilisé 2026-06-13  --cForm_s: #FFF; */
    /* inutilisé 2026-06-13  --bsCta: 0 7px 14px #3352, 0 3px 6px #0001; */

    /* Formulaires utilisateur */
    /* inutilisé 2026-06-13  --cFormUsr: #EEFAFF; */
    /* inutilisé 2026-06-13  --cFormUsr_b: #334; */
    /* inutilisé 2026-06-13  --cFormUsr_h: #FFF; */
    /* inutilisé 2026-06-13  --cFormUsr_bf: #0AF; */
    /* inutilisé 2026-06-13  --cFormUsr_cb: #059; */
    /* inutilisé 2026-06-13  --cForm_bf: #3C0; */
    /* inutilisé 2026-06-13  --cForm_cb: #590; */
    /* inutilisé 2026-06-13  --cKo_b: #F88; */

    /* Logo */
    /* inutilisé 2026-06-13  --cLogo1: #EBF7E4; */
    /* inutilisé 2026-06-13  --cLogo2: #C6E9AF; */

    --ffBase: 'Noto Sans', Arial, sans-serif;
    --ffMono: 'JetBrainsMono', 'Verdana', monospace;
    /* Police standard de l'écran public (tout ce qui est projeté) — seule source, lue aussi
       par les canvas via policeEcran() (kitPlugin/shared/police.ts). Décision 2026-08-29 :
       Noto Sans seule, pas de Scada ni Montserrat sur ce que voit le public. */
    --ffEcran: 'Noto Sans', sans-serif;
    /* Police des chiffres de l'écran public (tirages, compte à rebours, panneaux à volets) —
       chiffres monolarges garantis aux deux familles, lue par les canvas via policeChiffres().
       Décision 2026-08-29 : remplace 'Courier New' (police machine, absente d'Android/Linux). */
    --ffChiffres: 'Ubuntu Sans', 'Noto Sans', sans-serif;

    /* Il est interdit de rajouter des styles typo sans demander l'accord du PO */
    /* inutilisé 2026-06-13  --fTitre: normal normal 700 32px 'Scada', sans-serif; */
    --fH1: normal normal 700 32px 'Scada', sans-serif;
    --fH2: normal normal 700 24px 'Scada', sans-serif;
    --fH3: normal normal 400 22px 'Scada', sans-serif;
    --fH4: normal normal 400 18px 'Scada', sans-serif;
    /* Titre de l'événement sur l'écran public (.zoneTitreTexte) : police de l'écran, pas Scada.
       La taille est recalée à l'affichage par GestionnaireFondEnTete. Décision chef de projet 2026-09-14. */
    --fTitreEcran: normal normal 700 32px var(--ffEcran);
    --fMenu14: normal normal 400 14px 'Montserrat', sans-serif;
    /* Cran compact de la barre de pilotage (AdaptationBarre.ts) : la barre redéfinit --fMenu14 avec
       celle-ci pour son seul périmètre. Décision du chef de projet 2026-09-03. */
    --fMenu13: normal normal 400 13px 'Montserrat', sans-serif;
    --fCta16: normal normal 700 18px 'Montserrat', sans-serif;
    /* Remise en service le 2026-09-16 (décision chef de projet) : le mono d'un LIBELLÉ, par
       opposition à --fMono24b qui est le mono d'un GROS CHIFFRE (codes d'accès, compteurs).
       Première usagère : l'étiquette d'une scène sur la Vitrine (composants/etiquetteJaime.css).
       Le repli 'Courier New' est une vraie chasse fixe — celui de --ffMono (Verdana) n'en est
       pas une. */
    --fMono16: normal normal 400 16px 'JetBrainsMono', 'Courier New', Courier, monospace;
    /* inutilisé 2026-06-13  --fMono24: normal normal 400 24px 'JetBrainsMono', 'Courier New', Courier, monospace; */
    --fMono24b: normal normal 700 24px 'JetBrainsMono', 'Courier New', Courier, monospace;
    --fCta20: normal normal 700 20px 'Montserrat', sans-serif;
    /* inutilisé 2026-06-13  --fLegend16: normal normal 400 20px 'Scada', sans-serif; */
    --fLight14: italic normal 200 14px 'Noto Sans', Verdana, Geneva, Arial, sans-serif;
    --fMini11: italic normal 200 11px 'Noto Sans', Verdana, Geneva, Arial, sans-serif;
    --fText16: normal normal 400 16px 'Noto Sans', Verdana, Geneva, Arial, sans-serif;
    --fText16Strong: normal normal 700 16px 'Noto Sans', Verdana, Geneva, Arial, sans-serif;
    --fItalic16: italic normal 400 16px 'Noto Sans', Verdana, Geneva, Arial, sans-serif;
    --fAlerte16: italic small-caps 700 20px 'Noto Sans', Verdana, Geneva, Arial, sans-serif;
    --fLabel: normal normal 400 14px 'Noto Sans', Verdana, Geneva, Arial, sans-serif;

    --border: 1px solid #dce1ea;
    --borderR0: 3px;
    --borderR1: 5px;
    --borderR2: 7px;
    --borderCarte: 1px solid var(--cNoir4);
    --borderForm: 1px solid var(--cNoir5);
    --borderInput: 1px solid var(--cNoir5);

    /* Espacements — nommés par rôle (comme les bordures), accord PO 2026-07-03.
       Migration progressive : ne remplacer une valeur en dur que si le rôle ET la valeur
       correspondent (no-op visuel) ; aligner une dérive de valeur = décision à part. */
    --gapListe: 32px;   /* entre les éléments d'une liste. La colonne qui borde la liste (ex. panneau de filtres) prend le MÊME gap : deux rythmes différents côte à côte, c'est moche */
    --paddingCorps: 20px;   /* intérieur d'un corps de bloc / panneau / modale */
    --gapDefaut: 8px;       /* espace standard entre éléments frères (flex/grid) */
    --gapReduit: 4px;       /* variante volontairement plus serrée : listes compactes, groupes de boutons */
    --gapMoyen: 12px;    /* espacement intermédiaire entre éléments frères */
    --gapLarge: 20px;    /* espacement généreux entre groupes d'éléments */
    --gapColonnes: 4rem; /* entre deux colonnes de page de nature différente : le texte et son image, le menu et son contenu (décision chef de projet 2026-09-17) */
    --gapBlocs: 10rem;   /* le blanc entre deux blocs empilés d'une même colonne de lecture : l'article, ses questions, ses scénarios ; deux chapitres (décision chef de projet 2026-09-17) */
    --paddingMiniDiv: 8px 16px; /* padding de tout les blocs avec fond colorées */
    --paddingEtiquette: 3px 6px; /* padding des span et autres etiquette */
    --paddingCarte: 16px 20px;   /* intérieur d'une CARTE — son corps comme sa barre d'actions. La carte existe en trois exemplaires jumeaux (blocs.css, ilotScenarios.css, 55_scenariosCompatibles.css) : chacun recopiait le chiffre, ils lisent maintenant la même variable (décision chef de projet 2026-09-07) */
    --paddingCarteEtroit: 12px 20px; /* la même carte en fenêtre étroite, quand la barre d'actions passe sous le corps */
    --paddingCta: 15px 20px;     /* LE grand bouton : pleine largeur, min-width 180px, fonte --fCta16. La silhouette compacte, elle, prend --paddingCta14 (décision chef de projet 2026-09-07) */
    --paddingBadge: 4px 16px;    /* un badge en pilule, posé sur un bloc — pas la petite étiquette inline d'un récap, qui garde --paddingEtiquette */
    --paddingPastille: 6px 14px; /* une pastille NON cliquable : une étape, un état, un filtre posé */
    --paddingInput: 10px 12px;   /* l'intérieur d'un champ de saisie (--borderInput dit sa bordure) */
    --paddingCellule: 8px 16px 8px 0; /* une cellule de tableau : rien à gauche, la colonne commence au texte */
    --paddingCode: 12px 16px;    /* un bloc de code à recopier */
    --paddingLigneListe: 16px 0; /* une ligne LARGE d'une liste — une question qu'on déplie, un état vide. Les lignes ordinaires prennent --gapDefaut 0 */
    --paddingRecap: 10px 14px;   /* le rythme intérieur du récapitulatif de composition (blocs, actions, encadrés) */
    --paddingPage: 30px 40px;    /* l'enveloppe d'une page : .contenu, et les colonnes du bas de page */
    --paddingCarteLarge: 30px 25px; /* une carte qui doit respirer : une offre, une catégorie d'aperçu */
    --paddingRappel: 20px 40px 25px; /* une carte de rappel du compte (.divRappel), et tout bloc posé à côté d'elles sur la même page (.aide, .enAttente) : les titres et les textes tombent à l'aplomb */
    --paddingBandeau: 4rem;      /* le bandeau des aperçus, qui traverse la fenêtre sur grand écran */
    --retraitListeCourt: 20px;   /* le retrait d'un ul de liste courte — récap, progression, ul générique. Le retrait FRANC du rédactionnel est --retraitListe */
    --retraitListe: 40px;        /* le retrait d'un ul rédactionnel — article, chapitre, réponse de FAQ. Ce retrait franc dit que ces lignes sont un bloc à part, et non la suite du paragraphe */

    /* Boutons : un bouton ne choisit NI son padding, NI sa bordure, NI sa couleur
       (décision PO 2026-07-18). Il prend ces variables — ou pas de bordure, ou la
       couleur d'un rôle (primaire, danger, aperçu) — jamais une valeur à lui. */
    --paddingCta14V: 8px;                 /* l'air vertical d'un bouton compact, seul : la barre de pilotage en déduit sa hauteur (_studioIntegree.css) */
    --paddingCta14: var(--paddingCta14V) 16px; /* padding de tout bouton compact (.cta14, .ctaDiscret, toggles) */
    --borderCta: 1px solid var(--cNoir4); /* LA bordure d'un bouton : celle-ci ou aucune */
    --cCtaTexte: var(--cNoir2);         /* LE texte d'un bouton neutre : ce noir ou une couleur de rôle */
}

/* ============================================
   ACCENT — la couleur de l'espace où l'on est. Déclarée sur body, JAMAIS sur html
   ou :root : une variable dérivée (--cAccent_a, --cFormFocusHalo…) se calcule sur
   l'élément où elle est déclarée ; sur html elle figerait le bleu par défaut et la
   classe du body ne changerait plus que les valeurs directes.
   La classe du <body> choisit la teinte ; sans classe : bleu administration.
   Vitrine : baseVitrinePublic.twig pose bodyPageVitrine.
   Studio : studio/base.twig pose modeTester ou modeDiffuser selon l'onglet principal
   (la page se recharge à chaque changement de mode, pas de Turbo).
   Une règle qui a besoin d'Accent au niveau :root doit lire var(--cAccent…) sur
   l'élément concerné, pas déclarer une variable dérivée à la racine.
   ============================================ */

/* Bleu administration : compte, tarifs, données, Studio hors mode, onglet Préparer */
body {
    --cAccent0: #f1f4f8;
    --cAccent1: #e3eef8;
    --cAccent2: #accee8;
    --cAccent3: #436bc1;
    --cAccent4: #335bb1;
    --cAccent_a: linear-gradient(to bottom, var(--cAccent3), var(--cAccent4) 100%);
    --cAccent_ah: linear-gradient(to bottom, var(--cAccent3), var(--cAccent3) 100%);
    --cAccentt: #FFF;

    /* Focus des champs : l'accent, et son halo à 15 % */
    --cFormFocus: var(--cAccent3);
    --cFormFocusHalo: color-mix(in srgb, var(--cAccent3) 15%, transparent);
}

/* Vitrine, pages publiques : vert */
.bodyPageVitrine {
    --cAccent0: #f0f9f4;
    --cAccent1: #dcf2e5;
    --cAccent2: #9fd9b8;
    --cAccent3: #08914c;
    --cAccent4: #075524;
}

/* Studio, onglet Tester : violet */
.modeTester {
    --cAccent0: #f7f1f9;
    --cAccent1: #ecdcf3;
    --cAccent2: #d2a8e0;
    --cAccent3: #9b59b6;
    --cAccent4: #783b92;
}

/* Studio, onglet Diffuser : bleu diffusion */
.modeDiffuser {
    --cAccent0: #f0f6fb;
    --cAccent1: #e0eef8;
    --cAccent2: #a6cdea;
    --cAccent3: #308ed1;
    --cAccent4: #2572a9;
}

/* Bleu administration POSÉ SUR UN ÉLÉMENT, dans un autre espace (décision chef de projet
   2026-09-06) : un geste d'administration au milieu d'une page publique — créer un événement
   depuis la page d'une scène ou la page Configurer d'un scénario — se dit en bleu, pas dans
   la couleur de la page. Mêmes cinq valeurs que le body sans classe : c'est le même espace,
   ramené sur l'élément qui le porte (le bouton lui-même, pas sa barre : les voisins gardent
   la couleur de la page). Une règle qui lit var(--cAccent…) sur cet élément voit le bleu. */
.accentAdministration {
    --cAccent0: #f1f4f8;
    --cAccent1: #e3eef8;
    --cAccent2: #accee8;
    --cAccent3: #436bc1;
    --cAccent4: #335bb1;
}

/* ============================================
   TITRES ET TYPOGRAPHIE
   ============================================ */

h1, h2, h3 {
    color: var(--cNoir1);
}

h4 {
    color: var(--cNoir2);
}

h5, h6 {
    color: var(--cNoir3);
}

p, li {
    color: var(--cNoir2);
}

h1, h2, h3, h4, h5, h6 {
    font: var(--fH1);
}

button {
    font: var(--fCta16);
}

h1 {
    font: var(--fH1);
    margin: 10px 15px 5px 0;
    padding: 0;
}

h2 {
    font: var(--fH2);
    margin: 15px 10px 5px 0;
    padding: 0;
}

h3 {
    font: var(--fH3);
    padding: 0;
    margin: 25px 0 15px;
}

h4, h5 {
    font: var(--fH4);
}

h4, h5, h6 {
    margin: 25px 0 7px;
}

/* <i> est utilisée comme balise de suffixe (#2, #3…) sur les noms d'éléments.
   La balise <em> remplace <i> pour l'italique sémantique. */
i {
    display: inline-block;
    font-size: 75%;
    font-weight: 700;
    font-style: italic;
    font-family: var(--ffMono);
}
/*!**********************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/noyau/salle/kitPur/preview/pointeurPreview.css ***!
  \**********************************************************************************************************************************************/
/* Le pointeur fictif des aperçus (PointeurPreview.ts) : tout ce que la flèche de la souris
   (.curseurPreview) et le doigt du téléphone (.doigtParcours) ont en commun — le trait, le
   glissement qui grossit, le recul du clic, le rond du clic.

   Une variante ne déclare que sa position, et sa pointe dans le dessin de 48 px :
   --pointeurPointeX, --pointeurPointeY.

   --pointeurEchelle, posée sur le conteneur quand il est lui-même réduit (le cadre du
   téléphone) : le pointeur et son rond grossissent d'autant, pour garder à l'écran la taille et
   l'épaisseur de trait de la flèche. */

.pointeurPreview {
    pointer-events: none;
    /* La pointe est posée sur le point visé, et tout grossissement ou recul part d'elle : elle ne
       quitte jamais ce point. */
    margin: calc(-1 * var(--pointeurPointeY)) 0 0 calc(-1 * var(--pointeurPointeX));
    transform-origin: var(--pointeurPointeX) var(--pointeurPointeY);
    transform: scale(var(--pointeurEchelle, 1));
    transition: left 0.5s ease-out, top 0.5s ease-out, transform 0.2s ease-out, opacity 0.2s;
    filter: drop-shadow(2px 2px 2px var(--cOmbreForte)) drop-shadow(2px 2px 2px var(--cOmbreForte));
}

.pointeurPreview svg {
    display: block;
    width: 48px;
    height: 48px;
}

/* Blanc cerné de noir : un contour blanc disparaît sur les boutons blancs, le noir tranche sur
   tous. */
.pointeurPreview path {
    fill: var(--cBlanc);
    stroke: var(--cNoir);
    stroke-width: 1.5;
    stroke-linejoin: round;
}

/* Grossi pendant le glissement : on voit le pointeur partir et où il va. Il reprend sa taille à
   l'arrivée, pour ne rien cacher au moment du clic. */
.pointeurPreviewDeplacement {
    transform: scale(calc(var(--pointeurEchelle, 1) * 1.6));
}

/* La transition redonne left/top : sans eux, un déplacement lancé pendant le recul sauterait. */
.pointeurPreviewClic {
    transform: scale(calc(var(--pointeurEchelle, 1) * 0.75));
    transition: left 0.5s ease-out, top 0.5s ease-out, transform 0.1s ease-in, opacity 0.2s;
}

/* Le rond du clic (PointeurPreview.appuyerSur). Il s'OUVRE par animation (transform) et
   s'EFFACE par transition (opacity), à part : l'extinction rapide reprend l'opacité là où
   elle en est, sans saut — une animation relancée repartirait de zéro. */
.pointeurPreviewFlash {
    pointer-events: none;
    width: 60px;
    height: 60px;
    margin-left: -30px;
    margin-top: -30px;
    border-radius: 50%;
    /* Le même rond pour la souris et le doigt (décision chef de projet, 2026-10-06) : un disque
       sombre translucide cerclé de blanc se voit sur une page claire comme sur un fond foncé,
       aucune variante n'a à le recolorer. */
    background: var(--cOmbreForte);
    border: 3px solid var(--cBlanc);
    opacity: 1;
    transition: opacity 0.45s ease-out 0.15s;
    animation: pointeurPreviewFlashAnim 0.6s ease-out forwards;
}

/* Posée à la frame suivant la naissance du rond : l'effacement normal, sur la durée de l'ouverture. */
.pointeurPreviewFlashFondu {
    opacity: 0;
}

/* La cible a disparu sous le clic (bouton rangé, changement de cue) : le rond s'éteint tout
   de suite plutôt que de finir de s'ouvrir sur du vide. */
.pointeurPreviewFlashEteint {
    transition-duration: 0.15s;
    transition-delay: 0s;
}

@keyframes pointeurPreviewFlashAnim {
    0%   { transform: scale(0); }
    100% { transform: scale(calc(var(--pointeurEchelle, 1) * 2.5)); }
}

/*!****************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/noyau/salle/previewParticipant/css/doigtParcours.css ***!
  \****************************************************************************************************************************************************/
/* Le doigt des aperçus (DoigtParcours.ts) : celui de l'aperçu participant, et celui du
   téléphone posé à côté du grand écran de l'aperçu (TelephoneApercu.ts, entrée salleEcran).
   Une variante du pointeur commun (kitPur/preview/pointeurPreview.css), que l'hôte importe
   avant cette feuille : le trait, le glissement et le clic sont ceux de la flèche de souris. */

/* Dans l'écran du cadre, par-dessus l'iframe. Le bout de l'index est à (11,25 ; 2) de la grille
   de 28, soit (19,29 ; 3,43) px dans le dessin de 48 px. */
.doigtParcours {
    position: absolute;
    left: 50%;
    top: 70%;
    z-index: 2;
    opacity: 0;
    --pointeurPointeX: 19.29px;
    --pointeurPointeY: 3.43px;
}

.doigtParcoursVisible {
    opacity: 1;
}

/* Le rond du clic est celui du pointeur commun, même couleur que pour la souris : seule sa place
   dans le cadre est à lui. */
.doigtParcoursFlash {
    position: absolute;
    z-index: 1;
}

/*!*********************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/noyau/salle/previewParticipant/css/previewParticipant.css ***!
  \*********************************************************************************************************************************************************/
/* ============================================
   APERÇU DU PARCOURS PARTICIPANT
   Un cadre de téléphone ou de borne, la page participant en iframe dedans, le doigt par-dessus.
   Le cadre garde la taille réelle de l'écran ; entreePreviewParticipant.ts le réduit (transform)
   pour qu'il tienne dans la place disponible.
   ============================================ */

/* Le doigt, partagé avec le téléphone de l'aperçu du grand écran : une variante du pointeur
   fictif des aperçus, qu'il partage avec la flèche de souris. */

.apercuParticipant {
    margin: 0;
    height: 100vh;
    height: 100dvh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: var(--cBlanc2);
    color: var(--cNoir1);
    font: var(--fText16);
}

/* ---------- Barre du haut ---------- */

.apercuParticipantBarre {
    display: flex;
    align-items: center;
    gap: var(--gapLarge);
    padding: 12px 20px;
    background: var(--cBlanc);
    box-shadow: var(--ombrePortee);
}

.apercuParticipantTitres {
    flex: 1;
    min-width: 0;
}

.apercuParticipantTitres h1 {
    margin: 0;
    font: var(--fH4);
}

.apercuParticipantTitres p {
    margin: 0;
    font: var(--fLight14);
}

.apercuParticipantListe {
    display: flex;
    gap: var(--gapReduit);
}

.apercuParticipantListe a {
    padding: 4px 10px;
    border-radius: var(--borderR1);
    color: var(--cAccent3);
    text-decoration: none;
}

.apercuParticipantListe a[aria-current="page"] {
    background: var(--cAccent3);
    color: var(--cAccentt);
}

.apercuParticipantGrandEcran {
    color: var(--cAccent3);
    font: var(--fCta16);
    text-decoration: none;
}

.apercuParticipantRejouer {
    padding: 8px 16px;
    border: 0;
    border-radius: var(--borderR1);
    background: var(--cAccent3);
    color: var(--cAccentt);
    font: var(--fCta16);
    cursor: pointer;
}

.apercuParticipantRejouer:hover {
    background: var(--cAccent4);
}

/* ---------- Le cadre ---------- */

/* La place laissée en bas reçoit les sous-titres. */
.apercuParticipantScene {
    flex: 1;
    min-height: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px 16px 84px;
    overflow: hidden;
}

.apercuParticipantAppareil {
    flex: none;
    transform-origin: center;
    background: var(--cNoir1);
    box-shadow: var(--ombreModale);
}

.apercuParticipantAppareilTelephone {
    padding: 14px;
    border-radius: 52px;
}

.apercuParticipantAppareilBorne {
    padding: 36px 28px 64px;
    border-radius: 28px;
}

/* Taille posée par entreePreviewParticipant.ts, celle de l'écran réel du cadre. */
.apercuParticipantEcran {
    position: relative;
    overflow: hidden;
    background: var(--cBlanc);
}

.apercuParticipantAppareilTelephone .apercuParticipantEcran {
    border-radius: 38px;
}

.apercuParticipantAppareilBorne .apercuParticipantEcran {
    border-radius: 6px;
}

.apercuParticipantEcran iframe {
    display: block;
    width: 100%;
    height: 100%;
    border: 0;
}

/* ---------- Sous-titres (SousTitrePreview, kitPur) ---------- */

#previewSousTitre {
    position: fixed;
    left: 50%;
    bottom: 20px;
    z-index: 10;
    display: none;
    max-width: min(90vw, 720px);
    padding: 10px 22px;
    transform: translateX(-50%);
    border-radius: var(--borderR1);
    background: var(--cBlanc);
    color: var(--cNoir1);
    font: var(--fText16Strong);
    text-align: center;
    box-shadow: var(--ombrePortee2);
}

#previewSousTitre.previewSousTitreVisible {
    display: block;
}

/* ---------- Compte rendu : fin, ou arrêt sur une étape ---------- */

.apercuParticipantRapport {
    position: fixed;
    top: 76px;
    left: 50%;
    z-index: 11;
    max-width: min(90vw, 720px);
    padding: 10px 20px;
    transform: translateX(-50%);
    border-radius: var(--borderR1);
    background: var(--cSucces0);
    color: var(--cNoir1);
    font: var(--fText16);
    box-shadow: var(--ombrePortee);
}

.apercuParticipantRapport[hidden] {
    display: none;
}

.apercuParticipantRapportEchec {
    background: var(--cRouge0);
    color: var(--cRouge4);
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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VTtJQUNWLHdCQUF3QjtJQUN4Qix5QkFBeUI7SUFDekIsOEJBQThCO0FBQ2xDOztBQUVBO0lBQ0ksYUFBYTtJQUNiLG1CQUFtQjtBQUN2Qjs7QUFFQTtJQUNJLHVCQUF1QjtJQUN2QixtQkFBbUI7QUFDdkI7O0FBRUEsa0ZBQWtGO0FBQ2xGO0lBQ0ksa0JBQWtCO0lBQ2xCLGdCQUFnQjtJQUNoQix5QkFBeUI7QUFDN0I7O0FBRUE7SUFDSSxtQkFBbUI7QUFDdkI7O0FBRUE7SUFDSSxrQkFBa0I7QUFDdEI7O0FBRUE7SUFDSSxjQUFjO0lBQ2QsV0FBVztJQUNYLFlBQVk7SUFDWixTQUFTO0FBQ2I7O0FBRUEsaUVBQWlFOztBQUVqRTtJQUNJLGVBQWU7SUFDZixTQUFTO0lBQ1QsWUFBWTtJQUNaLFdBQVc7SUFDWCxhQUFhO0lBQ2IsMkJBQTJCO0lBQzNCLGtCQUFrQjtJQUNsQiwyQkFBMkI7SUFDM0IsOEJBQThCO0lBQzlCLHlCQUF5QjtJQUN6QixvQkFBb0I7SUFDcEIsMEJBQTBCO0lBQzFCLGtCQUFrQjtJQUNsQiwrQkFBK0I7QUFDbkM7O0FBRUE7SUFDSSxjQUFjO0FBQ2xCOztBQUVBLHFFQUFxRTs7QUFFckU7SUFDSSxlQUFlO0lBQ2YsU0FBUztJQUNULFNBQVM7SUFDVCxXQUFXO0lBQ1gsMkJBQTJCO0lBQzNCLGtCQUFrQjtJQUNsQiwyQkFBMkI7SUFDM0IsOEJBQThCO0lBQzlCLDJCQUEyQjtJQUMzQixvQkFBb0I7SUFDcEIsb0JBQW9CO0lBQ3BCLDhCQUE4QjtBQUNsQzs7QUFFQTtJQUNJLGFBQWE7QUFDakI7O0FBRUE7SUFDSSwwQkFBMEI7SUFDMUIscUJBQXFCO0FBQ3pCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc29mLy4vYXNzZXRzL25veWF1L2Nzcy8xMF9mb250LmNzcyIsIndlYnBhY2s6Ly9zb2YvLi9hc3NldHMvbm95YXUvc2FsbGUva2l0UHVyL3ByZXZpZXcvcG9pbnRldXJQcmV2aWV3LmNzcyIsIndlYnBhY2s6Ly9zb2YvLi9hc3NldHMvbm95YXUvc2FsbGUvcHJldmlld1BhcnRpY2lwYW50L2Nzcy9kb2lndFBhcmNvdXJzLmNzcyIsIndlYnBhY2s6Ly9zb2YvLi9hc3NldHMvbm95YXUvc2FsbGUvcHJldmlld1BhcnRpY2lwYW50L2Nzcy9wcmV2aWV3UGFydGljaXBhbnQuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbImh0bWwge1xuICAgIC8qIElsIGVzdCBpbnRlcmRpdCBkZSByYWpvdXRlciBkZXMgY291bGV1cnMgc2FucyBkZW1hbmRlciBsJ2FjY29yZCBkdSBQTyAqL1xuICAgIC0tY0JsYW5jMTogdmFyKC0tY0JsYW5jKTtcbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY0JsYW5jMXA6ICNFMEUwRTA7ICovXG4gICAgLS1jQmxhbmMwMjogI0Y1RjVGNTtcbiAgICAtLWNCbGFuYzI6ICNGMEYwRjA7XG4gICAgLS1jQmxhbmMwMzogI2RjZTFlYTtcbiAgICAtLWNCbGFuYzM6ICNDQ0NGQ0M7XG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWNCbGFuYzQ6ICNBQUFGQUE7ICovXG4gICAgLS1jQmxhbmM1OiAjOTk5Qzk5O1xuXG5cbiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgIENPVUxFVVJTIFRFWFRFIE5PSVIgLSBVVElMSVNBVElPTiBPQkxJR0FUT0lSRVxuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICAvKiAtLWNOb2lyMSA6IMOJTMOJTUVOVFMgRCdFTVBIQVNFXG4gICAgICAgLSBUaXRyZXMgOiBoMSwgaDIsIGgzXG4gICAgICAgLSBUZXh0ZSBkZXMgYm91dG9ucyAocXVhbmQgcGFzIGRlIGNvdWxldXIgZMOpZmluaWUpXG4gICAgICAgLSBMYWJlbHMgb2JsaWdhdG9pcmVzIChyZXF1aXJlZClcbiAgICAgICAtIE1lbnVzIGRlIG5hdmlnYXRpb25cbiAgICAgICAtIENoZWNrYm94IGV0IHJhZGlvIGJvdXRvbnNcbiAgICAgICAtIFZhbGV1ciBwcmluY2lwYWxlIGRhbnMgbGVzIGNvbXB0ZXVycyAoZXg6IFwiM1wiIGRhbnMgXCIzIC8gNVwiKVxuICAgICovXG4gICAgLS1jTm9pcjE6ICMxODE4MTg7XG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWNOb2lyMW86ICMxODE4MTg1NTsgKi9cblxuICAgIC8qIC0tY05vaXIyIDogQ09SUFMgREUgVEVYVEVcbiAgICAgICAtIFBhcmFncmFwaGVzIDxwPlxuICAgICAgIC0gTGlzdGVzIDxsaT4sIMOpbnVtw6lyYXRpb25zXG4gICAgICAgLSBMYWJlbHMgZmFjdWx0YXRpZnNcbiAgICAgICAtIFRleHRlIHNhaXNpIGRhbnMgbGVzIGlucHV0c1xuICAgICAgIC0gVGl0cmVzIGg0LCBoNSwgaDZcbiAgICAgICAtIFZhbGV1ciBzZWNvbmRhaXJlIGRhbnMgbGVzIGNvbXB0ZXVycyAoZXg6IFwiLyA1XCIgZGFucyBcIjMgLyA1XCIpXG4gICAgKi9cbiAgICAtLWNOb2lyMjogIzI4MjgyODtcblxuICAgIC8qIC0tY05vaXIzIDogVEVYVEUgVEVSVElBSVJFXG4gICAgICAgLSBQbGFjZWhvbGRlcnNcbiAgICAgICAtIE1lc3NhZ2VzIGQnYWlkZSBkaXNjcmV0c1xuICAgICAgIC0gVGV4dGUgZMOpc2FjdGl2w6lcbiAgICAqL1xuICAgIC0tY05vaXIzOiAjNTU1O1xuXG4gICAgLyogLS1jTm9pcjQtNSA6IFRFWFRFIFRSw4hTIEFUVMOJTlXDiVxuICAgICAgIC0gw4lsw6ltZW50cyBkw6lzYWN0aXbDqXNcbiAgICAgICAtIFRleHRlIGTDqWNvcmF0aWZcbiAgICAqL1xuICAgIC0tY05vaXI0OiAjOTk5O1xuICAgIC0tY05vaXI1OiAjQkJCO1xuICAgIC0tY0JsYW5jOiAjRkZGO1xuICAgIC0tY05vaXI6ICMwMDA7XG4gICAgLS1jVGV4dGUxOiAjMjIyO1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jVGV4dGUyOiAjNDQ0OyAqL1xuICAgIC0tY0Zvcm06ICMwMDA7XG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWNGb3JtX2I6ICM1NTU7ICovXG5cbiAgICAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgIFBBTEVUVEVTIERFIFLDlExFIOKAlCB1bmUgc2V1bGUgZm9ybWUsIDggcGFsaWVycywgdG91am91cnMgbm9tbcOpcyBwYXJlaWxcbiAgICAgICAwIGZvbmQgdHLDqHMgcMOibGUgwrcgMSBmb25kIHDDomxlIMK3IDIgYm9yZHVyZSAvIG1veWVuIMK3IDMgY291bGV1ciBwbGVpbmUgKGJvdXRvbiwgbGllbixcbiAgICAgICBvbmdsZXQgYWN0aWYsIGluZGljYXRldXIpIMK3IDQgZm9uY8OpIC8gc3Vydm9sIMK3IF9hIGTDqWdyYWTDqSDCtyBfYWggZMOpZ3JhZMOpIGF1IHN1cnZvbCDCt1xuICAgICAgIHQgdGV4dGUgcG9zw6kgc3VyIGxhIGNvdWxldXIgcGxlaW5lLlxuICAgICAgIEFjY2VudCBlc3QgbGEgY291bGV1ciBkZSBsJ2VzcGFjZSBvw7kgbCdvbiBlc3QgOiBlbGxlIGNoYW5nZSBwYXIgdW5lIGNsYXNzZSBzdXIgPGJvZHk+XG4gICAgICAgKHZvaXIgbGUgYmxvYyBhcHLDqHMgaHRtbHt9KS4gT3IsIFJvdWdlIGV0IFN1Y2NlcyBuZSBjaGFuZ2VudCBqYW1haXMuXG4gICAgICAgRMOpY2lzaW9uIFBPIDIwMjYtMDktMDUuIEF1Y3VuZSBhdXRyZSBjb3VsZXVyIGRlIHLDtGxlIG4nZXN0IGFkbWlzZS5cbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLyogQWNjZW50IDogdm9pciBsZSBibG9jIGJvZHkgeyB9IGFwcsOocyBodG1sIHsgfS4gRWxsZSB2aXQgc3VyIGJvZHksIHBhcyBpY2kg4oCUIHVuZVxuICAgICAgIHZhcmlhYmxlIGTDqXJpdsOpZSAoZMOpZ3JhZMOpLCBoYWxvKSBzZSBjYWxjdWxlIGzDoCBvw7kgZWxsZSBlc3QgZMOpY2xhcsOpZSwgZXQgZG9pdCBkb25jXG4gICAgICAgw6p0cmUgZMOpY2xhcsOpZSBzdXIgbGUgbcOqbWUgw6lsw6ltZW50IHF1ZSBsYSBjbGFzc2UgcXVpIGNoYW5nZSBsYSBjb3VsZXVyLiAqL1xuXG4gICAgLyogT3Ig4oCUIHMnaW5zY3JpcmUsIGNvbm5leGlvbiwgdGFyaWYsIG1pc2UgZW4gYXZhbnQgKi9cbiAgICAtLWNPcjA6ICNmZWZjZTg7XG4gICAgLS1jT3IxOiAjZmVmM2M3O1xuICAgIC0tY09yMjogI2Y1ZDk2YjtcbiAgICAtLWNPcjM6ICNGRkQ4MTQ7IC8qIGwnb3IgZCdBbWF6b24sIHRleHRlIGZvbmPDqSBkZXNzdXMgKGTDqWNpc2lvbiBjaGVmIGRlIHByb2pldCAyMDI2LTEwLTA3KSAqL1xuICAgIC0tY09yNDogI0ZGQ0UxMjsgLyogc29uIHN1cnZvbCAqL1xuICAgIC0tY09yX2E6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHZhcigtLWNPcjMpLCB2YXIoLS1jT3I0KSAxMDAlKTtcbiAgICAtLWNPcl9haDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdmFyKC0tY09yMyksIHZhcigtLWNPcjMpIDEwMCUpO1xuICAgIC0tY09ydDogIzE4MTgxODsgLyogZm9uY8OpIDogbGUgYmxhbmMgc3VyIC0tY09yMyBuZSBmYWlzYWl0IHF1ZSAyLDA6MSBkZSBjb250cmFzdGUsIDgsODoxIGFpbnNpIChkw6ljaXNpb24gY2hlZiBkZSBwcm9qZXQgMjAyNi0xMC0wNykgKi9cblxuICAgIC8qIFJvdWdlIOKAlCBlcnJldXIsIGFsZXJ0ZSwgc3VwcHJlc3Npb24sIGdlc3RlIGRhbmdlcmV1eCAqL1xuICAgIC0tY1JvdWdlMDogI2ZkZjNmMjtcbiAgICAtLWNSb3VnZTE6ICNmYmUyZGY7XG4gICAgLS1jUm91Z2UyOiAjZjVhYWEzO1xuICAgIC0tY1JvdWdlMzogI2YxNWI0ZTtcbiAgICAtLWNSb3VnZTQ6ICM5MzAwMDA7XG4gICAgLS1jUm91Z2VfYTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdmFyKC0tY1JvdWdlMyksIHZhcigtLWNSb3VnZTQpIDEwMCUpO1xuICAgIC0tY1JvdWdlX2FoOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB2YXIoLS1jUm91Z2UzKSwgdmFyKC0tY1JvdWdlMykgMTAwJSk7XG4gICAgLS1jUm91Z2V0OiAjRkZGO1xuXG4gICAgLyogQ8WTdXIgwqsgSidhaW1lIMK7IOKAlCB1biByb3VnZSDDoCBsdWksIHNhbmcsIGJvcmRlYXV4IGZvbmPDqSA6IGxlIHJvdWdlIGRlIGxhIGZhbWlsbGUgZGl0XG4gICAgICAgbCdhbGVydGUgZXQgbGUgZGFuZ2VyLCBwYXMgbCdhZmZlY3Rpb24gKGTDqWNpc2lvbiBjaGVmIGRlIHByb2pldCAyMDI2LTA5LTE2KS5cbiAgICAgICBEZXV4IGNyYW5zLCBjb21tZSBsZXMgYXV0cmVzIGZhbWlsbGVzIDogbGUgcMOibGUgZHUgc3Vydm9sLCBsYSBjb3VsZXVyIGR1IGPFk3VyLiAqL1xuICAgIC0tY0NvZXVyMDogI2Y2ZTRlNztcbiAgICAtLWNDb2V1cjM6ICNjMTE5MmY7XG5cbiAgICAvKiBTdWNjZXMg4oCUIHZhbGlkYXRpb24sIGNvbmZpcm1hdGlvbiAqL1xuICAgIC0tY1N1Y2NlczA6ICNmMGZiZmY7XG4gICAgLS1jU3VjY2VzMTogI2RkZjFmYTtcbiAgICAtLWNTdWNjZXMyOiAjOTNkM2VhO1xuICAgIC0tY1N1Y2NlczM6ICMwZTlkYzk7XG4gICAgLS1jU3VjY2VzNDogIzBiNWY3YTtcbiAgICAtLWNTdWNjZXNfYTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdmFyKC0tY1N1Y2NlczMpLCB2YXIoLS1jU3VjY2VzNCkgMTAwJSk7XG4gICAgLS1jU3VjY2VzX2FoOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB2YXIoLS1jU3VjY2VzMyksIHZhcigtLWNTdWNjZXMzKSAxMDAlKTtcbiAgICAtLWNTdWNjZXN0OiAjRkZGO1xuXG4gICAgLS1jQmFja2dyb3VuZDogdmFyKC0tY0JsYW5jKTtcblxuICAgIC8qIExlIGJhbmRlYXUgZGVzIGFwZXLDp3VzIChwYWdlUnVicmlxdWUuY3NzLCDiiaUgMTYwMHB4KS4gVU4gUExBVEVBVSBVTkkgQVUgQ0VOVFJFLCBsZSBkw6lncmFkw6lcbiAgICAgICBzdXIgbGVzIGJvcmRzIHNldWxlbWVudCAoZMOpY2lzaW9uIGNoZWYgZGUgcHJvamV0IDIwMjYtMDktMjQpIDogbCdhbmNpZW4gZMOpZ3JhZMOpIGFsbGFpdFxuICAgICAgIGR1IGdyaXMgZGVzIGJvcmRzIGF1IGJsYW5jIGR1IGNlbnRyZSwgZXQgZGVzIGNhcnRlcyBibGFuY2hlcyBpZGVudGlxdWVzIHBhcmFpc3NhaWVudFxuICAgICAgIGJsYW5jaGVzIHN1ciBsZSBncmlzIGV0IHRlcm5lcyBzdXIgbGUgYmxhbmMuIFN1ciBsZSBwbGF0ZWF1LCB0b3V0ZXMgc2UgZMOpdGFjaGVudFxuICAgICAgIHBhcmVpbC4gRGV1eCBoYWxvcyBkZSBjb3VsZXVyLCB0ZW51cyBkYW5zIGxlcyBib3JkcywgZG9ubmVudCB1biBwZXUgZGUgdmllIDogbGUgYmxldVxuICAgICAgIGR1IHNpdGUgZW4gaGF1dCDDoCBnYXVjaGUsIGwnb3JhbmdlIGRlcyBpbGx1c3RyYXRpb25zIGVuIGJhcyDDoCBkcm9pdGUuICovXG4gICAgLS1jQmFja2dyb3VuZEdyYW5kOlxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoMTQlIDQwJSBhdCAwJSAyNSUsICM0MzZiYzExZiwgdHJhbnNwYXJlbnQpLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoMTQlIDQwJSBhdCAxMDAlIDc1JSwgI2YzOWMzNDFmLCB0cmFuc3BhcmVudCksXG4gICAgICAgIGxpbmVhci1ncmFkaWVudCg5MGRlZywgI0U4RUJGMCAwJSwgI0Y0RjVGNyAxMiUsICNGNEY1RjcgODglLCAjRThFQkYwIDEwMCUpO1xuXG4gICAgLyogTGF5b3V0ICovXG4gICAgLS1sYXJnZXVyOiAxMzYwcHg7XG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLW1heFdpZHRoOiA3NjBweDsgKi9cbiAgICAtLWNCZzogdmFyKC0tY0JsYW5jKTtcbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY0JnX2I6ICNDQ0M7ICovXG5cbiAgICAvKiBOb2lyIHRyYW5zcGFyZW50IOKAlCBvbWJyZXMgKi9cbiAgICAtLWNPbWJyZTogIzAwMDI7ICAgICAgICAgICAgLyogZW52aXJvbiAxNSUgKi9cbiAgICAtLWNPbWJyZUZvcnRlOiAjMDAwNDsgICAgICAgLyogZW52aXJvbiAzMCUgKi9cblxuICAgIC8qIHRyYW5zcGFyZW50IOKAlCBvdmVybGF5cyAqL1xuICAgIC0tY092ZXJsYXk6ICMwMDA4OyAgICAgICAgICAvKiBlbnZpcm9uIDUwJSAqL1xuICAgIC0tY0JsYW5jT3ZlcmxheTogI0ZGRkM7ICAgICAvKiBlbnZpcm9uIDgwJSAqL1xuICAgIC0tY0JsYW5jVmVycmU6ICNGRkZGRkY4QzsgICAvKiBlbnZpcm9uIDU1JSDigJQgdmVycmUgZMOpcG9saSwgdG91am91cnMgYXZlYyB1biBmbG91IChiYXJyZSBldCBidWxsZSBkZSBsJ2FwZXLDp3UpICovXG5cbiAgICAvKiBPbWJyZXMgY29tcG9zw6llcyAqL1xuICAgIC0tb21icmVQb3J0ZWU6IDAgNHB4IDEycHggdmFyKC0tY09tYnJlKTtcbiAgICAtLW9tYnJlUG9ydGVlMjogMCAwcHggMjVweCAjMDAwO1xuICAgIC0tb21icmVNb2RhbGU6IDAgMTBweCA0MHB4IHZhcigtLWNPbWJyZUZvcnRlKTtcbiAgICAtLW9tYnJlSW50ZXJuZTogMCAwIDEwcHggMTBweCBpbnNldCB2YXIoLS1jQmxhbmMwMik7XG5cbiAgICAvKiBDb3VsZXVycyBOb2lyIGdyYWRpZW50cyAqL1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jTm9pcjNfYTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzUwNTg1OCwgIzMwMzgzOCAxMDAlKTsgKi9cbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY05vaXIzX2FoOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNTA1ODU4LCAjNTA1ODU4IDEwMCUpOyAqL1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jTm9pcjNfYWhMaWdodDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzcwNzg3OCwgIzcwNzg3OCAxMDAlKTsgKi9cbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY05vaXIzX2F0OiAjRkZGOyAqL1xuXG5cbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tc0FsZXJ0ZV9zOiAjREVDNEM0OyAqL1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jVHV0bzogI0M2RjsgKi9cbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY1R1dG9fdDogIzAwMDsgKi9cbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY1R1dG9fYWg6ICNkNzlhZjI7ICovXG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWNCbGFuYzFfdDogIzE4MTgxODsgKi9cbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY1BsYWNlaG9kZXI6ICM4ODg7ICovXG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWNGb3JtX3M6ICNGRkY7ICovXG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWJzQ3RhOiAwIDdweCAxNHB4ICMzMzUyLCAwIDNweCA2cHggIzAwMDE7ICovXG5cbiAgICAvKiBGb3JtdWxhaXJlcyB1dGlsaXNhdGV1ciAqL1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jRm9ybVVzcjogI0VFRkFGRjsgKi9cbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY0Zvcm1Vc3JfYjogIzMzNDsgKi9cbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY0Zvcm1Vc3JfaDogI0ZGRjsgKi9cbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY0Zvcm1Vc3JfYmY6ICMwQUY7ICovXG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWNGb3JtVXNyX2NiOiAjMDU5OyAqL1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jRm9ybV9iZjogIzNDMDsgKi9cbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY0Zvcm1fY2I6ICM1OTA7ICovXG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWNLb19iOiAjRjg4OyAqL1xuXG4gICAgLyogTG9nbyAqL1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jTG9nbzE6ICNFQkY3RTQ7ICovXG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWNMb2dvMjogI0M2RTlBRjsgKi9cblxuICAgIC0tZmZCYXNlOiAnTm90byBTYW5zJywgQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgLS1mZk1vbm86ICdKZXRCcmFpbnNNb25vJywgJ1ZlcmRhbmEnLCBtb25vc3BhY2U7XG4gICAgLyogUG9saWNlIHN0YW5kYXJkIGRlIGwnw6ljcmFuIHB1YmxpYyAodG91dCBjZSBxdWkgZXN0IHByb2pldMOpKSDigJQgc2V1bGUgc291cmNlLCBsdWUgYXVzc2lcbiAgICAgICBwYXIgbGVzIGNhbnZhcyB2aWEgcG9saWNlRWNyYW4oKSAoa2l0UGx1Z2luL3NoYXJlZC9wb2xpY2UudHMpLiBEw6ljaXNpb24gMjAyNi0wOC0yOSA6XG4gICAgICAgTm90byBTYW5zIHNldWxlLCBwYXMgZGUgU2NhZGEgbmkgTW9udHNlcnJhdCBzdXIgY2UgcXVlIHZvaXQgbGUgcHVibGljLiAqL1xuICAgIC0tZmZFY3JhbjogJ05vdG8gU2FucycsIHNhbnMtc2VyaWY7XG4gICAgLyogUG9saWNlIGRlcyBjaGlmZnJlcyBkZSBsJ8OpY3JhbiBwdWJsaWMgKHRpcmFnZXMsIGNvbXB0ZSDDoCByZWJvdXJzLCBwYW5uZWF1eCDDoCB2b2xldHMpIOKAlFxuICAgICAgIGNoaWZmcmVzIG1vbm9sYXJnZXMgZ2FyYW50aXMgYXV4IGRldXggZmFtaWxsZXMsIGx1ZSBwYXIgbGVzIGNhbnZhcyB2aWEgcG9saWNlQ2hpZmZyZXMoKS5cbiAgICAgICBEw6ljaXNpb24gMjAyNi0wOC0yOSA6IHJlbXBsYWNlICdDb3VyaWVyIE5ldycgKHBvbGljZSBtYWNoaW5lLCBhYnNlbnRlIGQnQW5kcm9pZC9MaW51eCkuICovXG4gICAgLS1mZkNoaWZmcmVzOiAnVWJ1bnR1IFNhbnMnLCAnTm90byBTYW5zJywgc2Fucy1zZXJpZjtcblxuICAgIC8qIElsIGVzdCBpbnRlcmRpdCBkZSByYWpvdXRlciBkZXMgc3R5bGVzIHR5cG8gc2FucyBkZW1hbmRlciBsJ2FjY29yZCBkdSBQTyAqL1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1mVGl0cmU6IG5vcm1hbCBub3JtYWwgNzAwIDMycHggJ1NjYWRhJywgc2Fucy1zZXJpZjsgKi9cbiAgICAtLWZIMTogbm9ybWFsIG5vcm1hbCA3MDAgMzJweCAnU2NhZGEnLCBzYW5zLXNlcmlmO1xuICAgIC0tZkgyOiBub3JtYWwgbm9ybWFsIDcwMCAyNHB4ICdTY2FkYScsIHNhbnMtc2VyaWY7XG4gICAgLS1mSDM6IG5vcm1hbCBub3JtYWwgNDAwIDIycHggJ1NjYWRhJywgc2Fucy1zZXJpZjtcbiAgICAtLWZINDogbm9ybWFsIG5vcm1hbCA0MDAgMThweCAnU2NhZGEnLCBzYW5zLXNlcmlmO1xuICAgIC8qIFRpdHJlIGRlIGwnw6l2w6luZW1lbnQgc3VyIGwnw6ljcmFuIHB1YmxpYyAoLnpvbmVUaXRyZVRleHRlKSA6IHBvbGljZSBkZSBsJ8OpY3JhbiwgcGFzIFNjYWRhLlxuICAgICAgIExhIHRhaWxsZSBlc3QgcmVjYWzDqWUgw6AgbCdhZmZpY2hhZ2UgcGFyIEdlc3Rpb25uYWlyZUZvbmRFblRldGUuIETDqWNpc2lvbiBjaGVmIGRlIHByb2pldCAyMDI2LTA5LTE0LiAqL1xuICAgIC0tZlRpdHJlRWNyYW46IG5vcm1hbCBub3JtYWwgNzAwIDMycHggdmFyKC0tZmZFY3Jhbik7XG4gICAgLS1mTWVudTE0OiBub3JtYWwgbm9ybWFsIDQwMCAxNHB4ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjtcbiAgICAvKiBDcmFuIGNvbXBhY3QgZGUgbGEgYmFycmUgZGUgcGlsb3RhZ2UgKEFkYXB0YXRpb25CYXJyZS50cykgOiBsYSBiYXJyZSByZWTDqWZpbml0IC0tZk1lbnUxNCBhdmVjXG4gICAgICAgY2VsbGUtY2kgcG91ciBzb24gc2V1bCBww6lyaW3DqHRyZS4gRMOpY2lzaW9uIGR1IGNoZWYgZGUgcHJvamV0IDIwMjYtMDktMDMuICovXG4gICAgLS1mTWVudTEzOiBub3JtYWwgbm9ybWFsIDQwMCAxM3B4ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjtcbiAgICAtLWZDdGExNjogbm9ybWFsIG5vcm1hbCA3MDAgMThweCAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWY7XG4gICAgLyogUmVtaXNlIGVuIHNlcnZpY2UgbGUgMjAyNi0wOS0xNiAoZMOpY2lzaW9uIGNoZWYgZGUgcHJvamV0KSA6IGxlIG1vbm8gZCd1biBMSUJFTEzDiSwgcGFyXG4gICAgICAgb3Bwb3NpdGlvbiDDoCAtLWZNb25vMjRiIHF1aSBlc3QgbGUgbW9ubyBkJ3VuIEdST1MgQ0hJRkZSRSAoY29kZXMgZCdhY2PDqHMsIGNvbXB0ZXVycykuXG4gICAgICAgUHJlbWnDqHJlIHVzYWfDqHJlIDogbCfDqXRpcXVldHRlIGQndW5lIHNjw6huZSBzdXIgbGEgVml0cmluZSAoY29tcG9zYW50cy9ldGlxdWV0dGVKYWltZS5jc3MpLlxuICAgICAgIExlIHJlcGxpICdDb3VyaWVyIE5ldycgZXN0IHVuZSB2cmFpZSBjaGFzc2UgZml4ZSDigJQgY2VsdWkgZGUgLS1mZk1vbm8gKFZlcmRhbmEpIG4nZW4gZXN0XG4gICAgICAgcGFzIHVuZS4gKi9cbiAgICAtLWZNb25vMTY6IG5vcm1hbCBub3JtYWwgNDAwIDE2cHggJ0pldEJyYWluc01vbm8nLCAnQ291cmllciBOZXcnLCBDb3VyaWVyLCBtb25vc3BhY2U7XG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWZNb25vMjQ6IG5vcm1hbCBub3JtYWwgNDAwIDI0cHggJ0pldEJyYWluc01vbm8nLCAnQ291cmllciBOZXcnLCBDb3VyaWVyLCBtb25vc3BhY2U7ICovXG4gICAgLS1mTW9ubzI0Yjogbm9ybWFsIG5vcm1hbCA3MDAgMjRweCAnSmV0QnJhaW5zTW9ubycsICdDb3VyaWVyIE5ldycsIENvdXJpZXIsIG1vbm9zcGFjZTtcbiAgICAtLWZDdGEyMDogbm9ybWFsIG5vcm1hbCA3MDAgMjBweCAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWY7XG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWZMZWdlbmQxNjogbm9ybWFsIG5vcm1hbCA0MDAgMjBweCAnU2NhZGEnLCBzYW5zLXNlcmlmOyAqL1xuICAgIC0tZkxpZ2h0MTQ6IGl0YWxpYyBub3JtYWwgMjAwIDE0cHggJ05vdG8gU2FucycsIFZlcmRhbmEsIEdlbmV2YSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgLS1mTWluaTExOiBpdGFsaWMgbm9ybWFsIDIwMCAxMXB4ICdOb3RvIFNhbnMnLCBWZXJkYW5hLCBHZW5ldmEsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgIC0tZlRleHQxNjogbm9ybWFsIG5vcm1hbCA0MDAgMTZweCAnTm90byBTYW5zJywgVmVyZGFuYSwgR2VuZXZhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgICAtLWZUZXh0MTZTdHJvbmc6IG5vcm1hbCBub3JtYWwgNzAwIDE2cHggJ05vdG8gU2FucycsIFZlcmRhbmEsIEdlbmV2YSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgLS1mSXRhbGljMTY6IGl0YWxpYyBub3JtYWwgNDAwIDE2cHggJ05vdG8gU2FucycsIFZlcmRhbmEsIEdlbmV2YSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgLS1mQWxlcnRlMTY6IGl0YWxpYyBzbWFsbC1jYXBzIDcwMCAyMHB4ICdOb3RvIFNhbnMnLCBWZXJkYW5hLCBHZW5ldmEsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgIC0tZkxhYmVsOiBub3JtYWwgbm9ybWFsIDQwMCAxNHB4ICdOb3RvIFNhbnMnLCBWZXJkYW5hLCBHZW5ldmEsIEFyaWFsLCBzYW5zLXNlcmlmO1xuXG4gICAgLS1ib3JkZXI6IDFweCBzb2xpZCAjZGNlMWVhO1xuICAgIC0tYm9yZGVyUjA6IDNweDtcbiAgICAtLWJvcmRlclIxOiA1cHg7XG4gICAgLS1ib3JkZXJSMjogN3B4O1xuICAgIC0tYm9yZGVyQ2FydGU6IDFweCBzb2xpZCB2YXIoLS1jTm9pcjQpO1xuICAgIC0tYm9yZGVyRm9ybTogMXB4IHNvbGlkIHZhcigtLWNOb2lyNSk7XG4gICAgLS1ib3JkZXJJbnB1dDogMXB4IHNvbGlkIHZhcigtLWNOb2lyNSk7XG5cbiAgICAvKiBFc3BhY2VtZW50cyDigJQgbm9tbcOpcyBwYXIgcsO0bGUgKGNvbW1lIGxlcyBib3JkdXJlcyksIGFjY29yZCBQTyAyMDI2LTA3LTAzLlxuICAgICAgIE1pZ3JhdGlvbiBwcm9ncmVzc2l2ZSA6IG5lIHJlbXBsYWNlciB1bmUgdmFsZXVyIGVuIGR1ciBxdWUgc2kgbGUgcsO0bGUgRVQgbGEgdmFsZXVyXG4gICAgICAgY29ycmVzcG9uZGVudCAobm8tb3AgdmlzdWVsKSA7IGFsaWduZXIgdW5lIGTDqXJpdmUgZGUgdmFsZXVyID0gZMOpY2lzaW9uIMOgIHBhcnQuICovXG4gICAgLS1nYXBMaXN0ZTogMzJweDsgICAvKiBlbnRyZSBsZXMgw6lsw6ltZW50cyBkJ3VuZSBsaXN0ZS4gTGEgY29sb25uZSBxdWkgYm9yZGUgbGEgbGlzdGUgKGV4LiBwYW5uZWF1IGRlIGZpbHRyZXMpIHByZW5kIGxlIE3Dik1FIGdhcCA6IGRldXggcnl0aG1lcyBkaWZmw6lyZW50cyBjw7R0ZSDDoCBjw7R0ZSwgYydlc3QgbW9jaGUgKi9cbiAgICAtLXBhZGRpbmdDb3JwczogMjBweDsgICAvKiBpbnTDqXJpZXVyIGQndW4gY29ycHMgZGUgYmxvYyAvIHBhbm5lYXUgLyBtb2RhbGUgKi9cbiAgICAtLWdhcERlZmF1dDogOHB4OyAgICAgICAvKiBlc3BhY2Ugc3RhbmRhcmQgZW50cmUgw6lsw6ltZW50cyBmcsOocmVzIChmbGV4L2dyaWQpICovXG4gICAgLS1nYXBSZWR1aXQ6IDRweDsgICAgICAgLyogdmFyaWFudGUgdm9sb250YWlyZW1lbnQgcGx1cyBzZXJyw6llIDogbGlzdGVzIGNvbXBhY3RlcywgZ3JvdXBlcyBkZSBib3V0b25zICovXG4gICAgLS1nYXBNb3llbjogMTJweDsgICAgLyogZXNwYWNlbWVudCBpbnRlcm3DqWRpYWlyZSBlbnRyZSDDqWzDqW1lbnRzIGZyw6hyZXMgKi9cbiAgICAtLWdhcExhcmdlOiAyMHB4OyAgICAvKiBlc3BhY2VtZW50IGfDqW7DqXJldXggZW50cmUgZ3JvdXBlcyBkJ8OpbMOpbWVudHMgKi9cbiAgICAtLWdhcENvbG9ubmVzOiA0cmVtOyAvKiBlbnRyZSBkZXV4IGNvbG9ubmVzIGRlIHBhZ2UgZGUgbmF0dXJlIGRpZmbDqXJlbnRlIDogbGUgdGV4dGUgZXQgc29uIGltYWdlLCBsZSBtZW51IGV0IHNvbiBjb250ZW51IChkw6ljaXNpb24gY2hlZiBkZSBwcm9qZXQgMjAyNi0wOS0xNykgKi9cbiAgICAtLWdhcEJsb2NzOiAxMHJlbTsgICAvKiBsZSBibGFuYyBlbnRyZSBkZXV4IGJsb2NzIGVtcGlsw6lzIGQndW5lIG3Dqm1lIGNvbG9ubmUgZGUgbGVjdHVyZSA6IGwnYXJ0aWNsZSwgc2VzIHF1ZXN0aW9ucywgc2VzIHNjw6luYXJpb3MgOyBkZXV4IGNoYXBpdHJlcyAoZMOpY2lzaW9uIGNoZWYgZGUgcHJvamV0IDIwMjYtMDktMTcpICovXG4gICAgLS1wYWRkaW5nTWluaURpdjogOHB4IDE2cHg7IC8qIHBhZGRpbmcgZGUgdG91dCBsZXMgYmxvY3MgYXZlYyBmb25kIGNvbG9yw6llcyAqL1xuICAgIC0tcGFkZGluZ0V0aXF1ZXR0ZTogM3B4IDZweDsgLyogcGFkZGluZyBkZXMgc3BhbiBldCBhdXRyZXMgZXRpcXVldHRlICovXG4gICAgLS1wYWRkaW5nQ2FydGU6IDE2cHggMjBweDsgICAvKiBpbnTDqXJpZXVyIGQndW5lIENBUlRFIOKAlCBzb24gY29ycHMgY29tbWUgc2EgYmFycmUgZCdhY3Rpb25zLiBMYSBjYXJ0ZSBleGlzdGUgZW4gdHJvaXMgZXhlbXBsYWlyZXMganVtZWF1eCAoYmxvY3MuY3NzLCBpbG90U2NlbmFyaW9zLmNzcywgNTVfc2NlbmFyaW9zQ29tcGF0aWJsZXMuY3NzKSA6IGNoYWN1biByZWNvcGlhaXQgbGUgY2hpZmZyZSwgaWxzIGxpc2VudCBtYWludGVuYW50IGxhIG3Dqm1lIHZhcmlhYmxlIChkw6ljaXNpb24gY2hlZiBkZSBwcm9qZXQgMjAyNi0wOS0wNykgKi9cbiAgICAtLXBhZGRpbmdDYXJ0ZUV0cm9pdDogMTJweCAyMHB4OyAvKiBsYSBtw6ptZSBjYXJ0ZSBlbiBmZW7DqnRyZSDDqXRyb2l0ZSwgcXVhbmQgbGEgYmFycmUgZCdhY3Rpb25zIHBhc3NlIHNvdXMgbGUgY29ycHMgKi9cbiAgICAtLXBhZGRpbmdDdGE6IDE1cHggMjBweDsgICAgIC8qIExFIGdyYW5kIGJvdXRvbiA6IHBsZWluZSBsYXJnZXVyLCBtaW4td2lkdGggMTgwcHgsIGZvbnRlIC0tZkN0YTE2LiBMYSBzaWxob3VldHRlIGNvbXBhY3RlLCBlbGxlLCBwcmVuZCAtLXBhZGRpbmdDdGExNCAoZMOpY2lzaW9uIGNoZWYgZGUgcHJvamV0IDIwMjYtMDktMDcpICovXG4gICAgLS1wYWRkaW5nQmFkZ2U6IDRweCAxNnB4OyAgICAvKiB1biBiYWRnZSBlbiBwaWx1bGUsIHBvc8OpIHN1ciB1biBibG9jIOKAlCBwYXMgbGEgcGV0aXRlIMOpdGlxdWV0dGUgaW5saW5lIGQndW4gcsOpY2FwLCBxdWkgZ2FyZGUgLS1wYWRkaW5nRXRpcXVldHRlICovXG4gICAgLS1wYWRkaW5nUGFzdGlsbGU6IDZweCAxNHB4OyAvKiB1bmUgcGFzdGlsbGUgTk9OIGNsaXF1YWJsZSA6IHVuZSDDqXRhcGUsIHVuIMOpdGF0LCB1biBmaWx0cmUgcG9zw6kgKi9cbiAgICAtLXBhZGRpbmdJbnB1dDogMTBweCAxMnB4OyAgIC8qIGwnaW50w6lyaWV1ciBkJ3VuIGNoYW1wIGRlIHNhaXNpZSAoLS1ib3JkZXJJbnB1dCBkaXQgc2EgYm9yZHVyZSkgKi9cbiAgICAtLXBhZGRpbmdDZWxsdWxlOiA4cHggMTZweCA4cHggMDsgLyogdW5lIGNlbGx1bGUgZGUgdGFibGVhdSA6IHJpZW4gw6AgZ2F1Y2hlLCBsYSBjb2xvbm5lIGNvbW1lbmNlIGF1IHRleHRlICovXG4gICAgLS1wYWRkaW5nQ29kZTogMTJweCAxNnB4OyAgICAvKiB1biBibG9jIGRlIGNvZGUgw6AgcmVjb3BpZXIgKi9cbiAgICAtLXBhZGRpbmdMaWduZUxpc3RlOiAxNnB4IDA7IC8qIHVuZSBsaWduZSBMQVJHRSBkJ3VuZSBsaXN0ZSDigJQgdW5lIHF1ZXN0aW9uIHF1J29uIGTDqXBsaWUsIHVuIMOpdGF0IHZpZGUuIExlcyBsaWduZXMgb3JkaW5haXJlcyBwcmVubmVudCAtLWdhcERlZmF1dCAwICovXG4gICAgLS1wYWRkaW5nUmVjYXA6IDEwcHggMTRweDsgICAvKiBsZSByeXRobWUgaW50w6lyaWV1ciBkdSByw6ljYXBpdHVsYXRpZiBkZSBjb21wb3NpdGlvbiAoYmxvY3MsIGFjdGlvbnMsIGVuY2FkcsOpcykgKi9cbiAgICAtLXBhZGRpbmdQYWdlOiAzMHB4IDQwcHg7ICAgIC8qIGwnZW52ZWxvcHBlIGQndW5lIHBhZ2UgOiAuY29udGVudSwgZXQgbGVzIGNvbG9ubmVzIGR1IGJhcyBkZSBwYWdlICovXG4gICAgLS1wYWRkaW5nQ2FydGVMYXJnZTogMzBweCAyNXB4OyAvKiB1bmUgY2FydGUgcXVpIGRvaXQgcmVzcGlyZXIgOiB1bmUgb2ZmcmUsIHVuZSBjYXTDqWdvcmllIGQnYXBlcsOndSAqL1xuICAgIC0tcGFkZGluZ1JhcHBlbDogMjBweCA0MHB4IDI1cHg7IC8qIHVuZSBjYXJ0ZSBkZSByYXBwZWwgZHUgY29tcHRlICguZGl2UmFwcGVsKSwgZXQgdG91dCBibG9jIHBvc8OpIMOgIGPDtHTDqSBkJ2VsbGVzIHN1ciBsYSBtw6ptZSBwYWdlICguYWlkZSwgLmVuQXR0ZW50ZSkgOiBsZXMgdGl0cmVzIGV0IGxlcyB0ZXh0ZXMgdG9tYmVudCDDoCBsJ2FwbG9tYiAqL1xuICAgIC0tcGFkZGluZ0JhbmRlYXU6IDRyZW07ICAgICAgLyogbGUgYmFuZGVhdSBkZXMgYXBlcsOndXMsIHF1aSB0cmF2ZXJzZSBsYSBmZW7DqnRyZSBzdXIgZ3JhbmQgw6ljcmFuICovXG4gICAgLS1yZXRyYWl0TGlzdGVDb3VydDogMjBweDsgICAvKiBsZSByZXRyYWl0IGQndW4gdWwgZGUgbGlzdGUgY291cnRlIOKAlCByw6ljYXAsIHByb2dyZXNzaW9uLCB1bCBnw6luw6lyaXF1ZS4gTGUgcmV0cmFpdCBGUkFOQyBkdSByw6lkYWN0aW9ubmVsIGVzdCAtLXJldHJhaXRMaXN0ZSAqL1xuICAgIC0tcmV0cmFpdExpc3RlOiA0MHB4OyAgICAgICAgLyogbGUgcmV0cmFpdCBkJ3VuIHVsIHLDqWRhY3Rpb25uZWwg4oCUIGFydGljbGUsIGNoYXBpdHJlLCByw6lwb25zZSBkZSBGQVEuIENlIHJldHJhaXQgZnJhbmMgZGl0IHF1ZSBjZXMgbGlnbmVzIHNvbnQgdW4gYmxvYyDDoCBwYXJ0LCBldCBub24gbGEgc3VpdGUgZHUgcGFyYWdyYXBoZSAqL1xuXG4gICAgLyogQm91dG9ucyA6IHVuIGJvdXRvbiBuZSBjaG9pc2l0IE5JIHNvbiBwYWRkaW5nLCBOSSBzYSBib3JkdXJlLCBOSSBzYSBjb3VsZXVyXG4gICAgICAgKGTDqWNpc2lvbiBQTyAyMDI2LTA3LTE4KS4gSWwgcHJlbmQgY2VzIHZhcmlhYmxlcyDigJQgb3UgcGFzIGRlIGJvcmR1cmUsIG91IGxhXG4gICAgICAgY291bGV1ciBkJ3VuIHLDtGxlIChwcmltYWlyZSwgZGFuZ2VyLCBhcGVyw6d1KSDigJQgamFtYWlzIHVuZSB2YWxldXIgw6AgbHVpLiAqL1xuICAgIC0tcGFkZGluZ0N0YTE0VjogOHB4OyAgICAgICAgICAgICAgICAgLyogbCdhaXIgdmVydGljYWwgZCd1biBib3V0b24gY29tcGFjdCwgc2V1bCA6IGxhIGJhcnJlIGRlIHBpbG90YWdlIGVuIGTDqWR1aXQgc2EgaGF1dGV1ciAoX3N0dWRpb0ludGVncmVlLmNzcykgKi9cbiAgICAtLXBhZGRpbmdDdGExNDogdmFyKC0tcGFkZGluZ0N0YTE0VikgMTZweDsgLyogcGFkZGluZyBkZSB0b3V0IGJvdXRvbiBjb21wYWN0ICguY3RhMTQsIC5jdGFEaXNjcmV0LCB0b2dnbGVzKSAqL1xuICAgIC0tYm9yZGVyQ3RhOiAxcHggc29saWQgdmFyKC0tY05vaXI0KTsgLyogTEEgYm9yZHVyZSBkJ3VuIGJvdXRvbiA6IGNlbGxlLWNpIG91IGF1Y3VuZSAqL1xuICAgIC0tY0N0YVRleHRlOiB2YXIoLS1jTm9pcjIpOyAgICAgICAgIC8qIExFIHRleHRlIGQndW4gYm91dG9uIG5ldXRyZSA6IGNlIG5vaXIgb3UgdW5lIGNvdWxldXIgZGUgcsO0bGUgKi9cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEFDQ0VOVCDigJQgbGEgY291bGV1ciBkZSBsJ2VzcGFjZSBvw7kgbCdvbiBlc3QuIETDqWNsYXLDqWUgc3VyIGJvZHksIEpBTUFJUyBzdXIgaHRtbFxuICAgb3UgOnJvb3QgOiB1bmUgdmFyaWFibGUgZMOpcml2w6llICgtLWNBY2NlbnRfYSwgLS1jRm9ybUZvY3VzSGFsb+KApikgc2UgY2FsY3VsZSBzdXJcbiAgIGwnw6lsw6ltZW50IG/DuSBlbGxlIGVzdCBkw6ljbGFyw6llIDsgc3VyIGh0bWwgZWxsZSBmaWdlcmFpdCBsZSBibGV1IHBhciBkw6lmYXV0IGV0IGxhXG4gICBjbGFzc2UgZHUgYm9keSBuZSBjaGFuZ2VyYWl0IHBsdXMgcXVlIGxlcyB2YWxldXJzIGRpcmVjdGVzLlxuICAgTGEgY2xhc3NlIGR1IDxib2R5PiBjaG9pc2l0IGxhIHRlaW50ZSA7IHNhbnMgY2xhc3NlIDogYmxldSBhZG1pbmlzdHJhdGlvbi5cbiAgIFZpdHJpbmUgOiBiYXNlVml0cmluZVB1YmxpYy50d2lnIHBvc2UgYm9keVBhZ2VWaXRyaW5lLlxuICAgU3R1ZGlvIDogc3R1ZGlvL2Jhc2UudHdpZyBwb3NlIG1vZGVUZXN0ZXIgb3UgbW9kZURpZmZ1c2VyIHNlbG9uIGwnb25nbGV0IHByaW5jaXBhbFxuICAgKGxhIHBhZ2Ugc2UgcmVjaGFyZ2Ugw6AgY2hhcXVlIGNoYW5nZW1lbnQgZGUgbW9kZSwgcGFzIGRlIFR1cmJvKS5cbiAgIFVuZSByw6hnbGUgcXVpIGEgYmVzb2luIGQnQWNjZW50IGF1IG5pdmVhdSA6cm9vdCBkb2l0IGxpcmUgdmFyKC0tY0FjY2VudOKApikgc3VyXG4gICBsJ8OpbMOpbWVudCBjb25jZXJuw6ksIHBhcyBkw6ljbGFyZXIgdW5lIHZhcmlhYmxlIGTDqXJpdsOpZSDDoCBsYSByYWNpbmUuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBCbGV1IGFkbWluaXN0cmF0aW9uIDogY29tcHRlLCB0YXJpZnMsIGRvbm7DqWVzLCBTdHVkaW8gaG9ycyBtb2RlLCBvbmdsZXQgUHLDqXBhcmVyICovXG5ib2R5IHtcbiAgICAtLWNBY2NlbnQwOiAjZjFmNGY4O1xuICAgIC0tY0FjY2VudDE6ICNlM2VlZjg7XG4gICAgLS1jQWNjZW50MjogI2FjY2VlODtcbiAgICAtLWNBY2NlbnQzOiAjNDM2YmMxO1xuICAgIC0tY0FjY2VudDQ6ICMzMzViYjE7XG4gICAgLS1jQWNjZW50X2E6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHZhcigtLWNBY2NlbnQzKSwgdmFyKC0tY0FjY2VudDQpIDEwMCUpO1xuICAgIC0tY0FjY2VudF9haDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdmFyKC0tY0FjY2VudDMpLCB2YXIoLS1jQWNjZW50MykgMTAwJSk7XG4gICAgLS1jQWNjZW50dDogI0ZGRjtcblxuICAgIC8qIEZvY3VzIGRlcyBjaGFtcHMgOiBsJ2FjY2VudCwgZXQgc29uIGhhbG8gw6AgMTUgJSAqL1xuICAgIC0tY0Zvcm1Gb2N1czogdmFyKC0tY0FjY2VudDMpO1xuICAgIC0tY0Zvcm1Gb2N1c0hhbG86IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jQWNjZW50MykgMTUlLCB0cmFuc3BhcmVudCk7XG59XG5cbi8qIFZpdHJpbmUsIHBhZ2VzIHB1YmxpcXVlcyA6IHZlcnQgKi9cbi5ib2R5UGFnZVZpdHJpbmUge1xuICAgIC0tY0FjY2VudDA6ICNmMGY5ZjQ7XG4gICAgLS1jQWNjZW50MTogI2RjZjJlNTtcbiAgICAtLWNBY2NlbnQyOiAjOWZkOWI4O1xuICAgIC0tY0FjY2VudDM6ICMwODkxNGM7XG4gICAgLS1jQWNjZW50NDogIzA3NTUyNDtcbn1cblxuLyogU3R1ZGlvLCBvbmdsZXQgVGVzdGVyIDogdmlvbGV0ICovXG4ubW9kZVRlc3RlciB7XG4gICAgLS1jQWNjZW50MDogI2Y3ZjFmOTtcbiAgICAtLWNBY2NlbnQxOiAjZWNkY2YzO1xuICAgIC0tY0FjY2VudDI6ICNkMmE4ZTA7XG4gICAgLS1jQWNjZW50MzogIzliNTliNjtcbiAgICAtLWNBY2NlbnQ0OiAjNzgzYjkyO1xufVxuXG4vKiBTdHVkaW8sIG9uZ2xldCBEaWZmdXNlciA6IGJsZXUgZGlmZnVzaW9uICovXG4ubW9kZURpZmZ1c2VyIHtcbiAgICAtLWNBY2NlbnQwOiAjZjBmNmZiO1xuICAgIC0tY0FjY2VudDE6ICNlMGVlZjg7XG4gICAgLS1jQWNjZW50MjogI2E2Y2RlYTtcbiAgICAtLWNBY2NlbnQzOiAjMzA4ZWQxO1xuICAgIC0tY0FjY2VudDQ6ICMyNTcyYTk7XG59XG5cbi8qIEJsZXUgYWRtaW5pc3RyYXRpb24gUE9Tw4kgU1VSIFVOIMOJTMOJTUVOVCwgZGFucyB1biBhdXRyZSBlc3BhY2UgKGTDqWNpc2lvbiBjaGVmIGRlIHByb2pldFxuICAgMjAyNi0wOS0wNikgOiB1biBnZXN0ZSBkJ2FkbWluaXN0cmF0aW9uIGF1IG1pbGlldSBkJ3VuZSBwYWdlIHB1YmxpcXVlIOKAlCBjcsOpZXIgdW4gw6l2w6luZW1lbnRcbiAgIGRlcHVpcyBsYSBwYWdlIGQndW5lIHNjw6huZSBvdSBsYSBwYWdlIENvbmZpZ3VyZXIgZCd1biBzY8OpbmFyaW8g4oCUIHNlIGRpdCBlbiBibGV1LCBwYXMgZGFuc1xuICAgbGEgY291bGV1ciBkZSBsYSBwYWdlLiBNw6ptZXMgY2lucSB2YWxldXJzIHF1ZSBsZSBib2R5IHNhbnMgY2xhc3NlIDogYydlc3QgbGUgbcOqbWUgZXNwYWNlLFxuICAgcmFtZW7DqSBzdXIgbCfDqWzDqW1lbnQgcXVpIGxlIHBvcnRlIChsZSBib3V0b24gbHVpLW3Dqm1lLCBwYXMgc2EgYmFycmUgOiBsZXMgdm9pc2lucyBnYXJkZW50XG4gICBsYSBjb3VsZXVyIGRlIGxhIHBhZ2UpLiBVbmUgcsOoZ2xlIHF1aSBsaXQgdmFyKC0tY0FjY2VudOKApikgc3VyIGNldCDDqWzDqW1lbnQgdm9pdCBsZSBibGV1LiAqL1xuLmFjY2VudEFkbWluaXN0cmF0aW9uIHtcbiAgICAtLWNBY2NlbnQwOiAjZjFmNGY4O1xuICAgIC0tY0FjY2VudDE6ICNlM2VlZjg7XG4gICAgLS1jQWNjZW50MjogI2FjY2VlODtcbiAgICAtLWNBY2NlbnQzOiAjNDM2YmMxO1xuICAgIC0tY0FjY2VudDQ6ICMzMzViYjE7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBUSVRSRVMgRVQgVFlQT0dSQVBISUVcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbmgxLCBoMiwgaDMge1xuICAgIGNvbG9yOiB2YXIoLS1jTm9pcjEpO1xufVxuXG5oNCB7XG4gICAgY29sb3I6IHZhcigtLWNOb2lyMik7XG59XG5cbmg1LCBoNiB7XG4gICAgY29sb3I6IHZhcigtLWNOb2lyMyk7XG59XG5cbnAsIGxpIHtcbiAgICBjb2xvcjogdmFyKC0tY05vaXIyKTtcbn1cblxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XG4gICAgZm9udDogdmFyKC0tZkgxKTtcbn1cblxuYnV0dG9uIHtcbiAgICBmb250OiB2YXIoLS1mQ3RhMTYpO1xufVxuXG5oMSB7XG4gICAgZm9udDogdmFyKC0tZkgxKTtcbiAgICBtYXJnaW46IDEwcHggMTVweCA1cHggMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG5oMiB7XG4gICAgZm9udDogdmFyKC0tZkgyKTtcbiAgICBtYXJnaW46IDE1cHggMTBweCA1cHggMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG5oMyB7XG4gICAgZm9udDogdmFyKC0tZkgzKTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMjVweCAwIDE1cHg7XG59XG5cbmg0LCBoNSB7XG4gICAgZm9udDogdmFyKC0tZkg0KTtcbn1cblxuaDQsIGg1LCBoNiB7XG4gICAgbWFyZ2luOiAyNXB4IDAgN3B4O1xufVxuXG4vKiA8aT4gZXN0IHV0aWxpc8OpZSBjb21tZSBiYWxpc2UgZGUgc3VmZml4ZSAoIzIsICMz4oCmKSBzdXIgbGVzIG5vbXMgZCfDqWzDqW1lbnRzLlxuICAgTGEgYmFsaXNlIDxlbT4gcmVtcGxhY2UgPGk+IHBvdXIgbCdpdGFsaXF1ZSBzw6ltYW50aXF1ZS4gKi9cbmkge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LXNpemU6IDc1JTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBmb250LWZhbWlseTogdmFyKC0tZmZNb25vKTtcbn0iLCIvKiBMZSBwb2ludGV1ciBmaWN0aWYgZGVzIGFwZXLDp3VzIChQb2ludGV1clByZXZpZXcudHMpIDogdG91dCBjZSBxdWUgbGEgZmzDqGNoZSBkZSBsYSBzb3VyaXNcbiAgICguY3Vyc2V1clByZXZpZXcpIGV0IGxlIGRvaWd0IGR1IHTDqWzDqXBob25lICguZG9pZ3RQYXJjb3Vycykgb250IGVuIGNvbW11biDigJQgbGUgdHJhaXQsIGxlXG4gICBnbGlzc2VtZW50IHF1aSBncm9zc2l0LCBsZSByZWN1bCBkdSBjbGljLCBsZSByb25kIGR1IGNsaWMuXG5cbiAgIFVuZSB2YXJpYW50ZSBuZSBkw6ljbGFyZSBxdWUgc2EgcG9zaXRpb24sIGV0IHNhIHBvaW50ZSBkYW5zIGxlIGRlc3NpbiBkZSA0OCBweCA6XG4gICAtLXBvaW50ZXVyUG9pbnRlWCwgLS1wb2ludGV1clBvaW50ZVkuXG5cbiAgIC0tcG9pbnRldXJFY2hlbGxlLCBwb3PDqWUgc3VyIGxlIGNvbnRlbmV1ciBxdWFuZCBpbCBlc3QgbHVpLW3Dqm1lIHLDqWR1aXQgKGxlIGNhZHJlIGR1XG4gICB0w6lsw6lwaG9uZSkgOiBsZSBwb2ludGV1ciBldCBzb24gcm9uZCBncm9zc2lzc2VudCBkJ2F1dGFudCwgcG91ciBnYXJkZXIgw6AgbCfDqWNyYW4gbGEgdGFpbGxlIGV0XG4gICBsJ8OpcGFpc3NldXIgZGUgdHJhaXQgZGUgbGEgZmzDqGNoZS4gKi9cblxuLnBvaW50ZXVyUHJldmlldyB7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgLyogTGEgcG9pbnRlIGVzdCBwb3PDqWUgc3VyIGxlIHBvaW50IHZpc8OpLCBldCB0b3V0IGdyb3NzaXNzZW1lbnQgb3UgcmVjdWwgcGFydCBkJ2VsbGUgOiBlbGxlIG5lXG4gICAgICAgcXVpdHRlIGphbWFpcyBjZSBwb2ludC4gKi9cbiAgICBtYXJnaW46IGNhbGMoLTEgKiB2YXIoLS1wb2ludGV1clBvaW50ZVkpKSAwIDAgY2FsYygtMSAqIHZhcigtLXBvaW50ZXVyUG9pbnRlWCkpO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IHZhcigtLXBvaW50ZXVyUG9pbnRlWCkgdmFyKC0tcG9pbnRldXJQb2ludGVZKTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLXBvaW50ZXVyRWNoZWxsZSwgMSkpO1xuICAgIHRyYW5zaXRpb246IGxlZnQgMC41cyBlYXNlLW91dCwgdG9wIDAuNXMgZWFzZS1vdXQsIHRyYW5zZm9ybSAwLjJzIGVhc2Utb3V0LCBvcGFjaXR5IDAuMnM7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygycHggMnB4IDJweCB2YXIoLS1jT21icmVGb3J0ZSkpIGRyb3Atc2hhZG93KDJweCAycHggMnB4IHZhcigtLWNPbWJyZUZvcnRlKSk7XG59XG5cbi5wb2ludGV1clByZXZpZXcgc3ZnIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogNDhweDtcbiAgICBoZWlnaHQ6IDQ4cHg7XG59XG5cbi8qIEJsYW5jIGNlcm7DqSBkZSBub2lyIDogdW4gY29udG91ciBibGFuYyBkaXNwYXJhw650IHN1ciBsZXMgYm91dG9ucyBibGFuY3MsIGxlIG5vaXIgdHJhbmNoZSBzdXJcbiAgIHRvdXMuICovXG4ucG9pbnRldXJQcmV2aWV3IHBhdGgge1xuICAgIGZpbGw6IHZhcigtLWNCbGFuYyk7XG4gICAgc3Ryb2tlOiB2YXIoLS1jTm9pcik7XG4gICAgc3Ryb2tlLXdpZHRoOiAxLjU7XG4gICAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDtcbn1cblxuLyogR3Jvc3NpIHBlbmRhbnQgbGUgZ2xpc3NlbWVudCA6IG9uIHZvaXQgbGUgcG9pbnRldXIgcGFydGlyIGV0IG/DuSBpbCB2YS4gSWwgcmVwcmVuZCBzYSB0YWlsbGUgw6BcbiAgIGwnYXJyaXbDqWUsIHBvdXIgbmUgcmllbiBjYWNoZXIgYXUgbW9tZW50IGR1IGNsaWMuICovXG4ucG9pbnRldXJQcmV2aWV3RGVwbGFjZW1lbnQge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoY2FsYyh2YXIoLS1wb2ludGV1ckVjaGVsbGUsIDEpICogMS42KSk7XG59XG5cbi8qIExhIHRyYW5zaXRpb24gcmVkb25uZSBsZWZ0L3RvcCA6IHNhbnMgZXV4LCB1biBkw6lwbGFjZW1lbnQgbGFuY8OpIHBlbmRhbnQgbGUgcmVjdWwgc2F1dGVyYWl0LiAqL1xuLnBvaW50ZXVyUHJldmlld0NsaWMge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoY2FsYyh2YXIoLS1wb2ludGV1ckVjaGVsbGUsIDEpICogMC43NSkpO1xuICAgIHRyYW5zaXRpb246IGxlZnQgMC41cyBlYXNlLW91dCwgdG9wIDAuNXMgZWFzZS1vdXQsIHRyYW5zZm9ybSAwLjFzIGVhc2UtaW4sIG9wYWNpdHkgMC4ycztcbn1cblxuLyogTGUgcm9uZCBkdSBjbGljIChQb2ludGV1clByZXZpZXcuYXBwdXllclN1cikuIElsIHMnT1VWUkUgcGFyIGFuaW1hdGlvbiAodHJhbnNmb3JtKSBldFxuICAgcydFRkZBQ0UgcGFyIHRyYW5zaXRpb24gKG9wYWNpdHkpLCDDoCBwYXJ0IDogbCdleHRpbmN0aW9uIHJhcGlkZSByZXByZW5kIGwnb3BhY2l0w6kgbMOgIG/DuVxuICAgZWxsZSBlbiBlc3QsIHNhbnMgc2F1dCDigJQgdW5lIGFuaW1hdGlvbiByZWxhbmPDqWUgcmVwYXJ0aXJhaXQgZGUgesOpcm8uICovXG4ucG9pbnRldXJQcmV2aWV3Rmxhc2gge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHdpZHRoOiA2MHB4O1xuICAgIGhlaWdodDogNjBweDtcbiAgICBtYXJnaW4tbGVmdDogLTMwcHg7XG4gICAgbWFyZ2luLXRvcDogLTMwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIC8qIExlIG3Dqm1lIHJvbmQgcG91ciBsYSBzb3VyaXMgZXQgbGUgZG9pZ3QgKGTDqWNpc2lvbiBjaGVmIGRlIHByb2pldCwgMjAyNi0xMC0wNikgOiB1biBkaXNxdWVcbiAgICAgICBzb21icmUgdHJhbnNsdWNpZGUgY2VyY2zDqSBkZSBibGFuYyBzZSB2b2l0IHN1ciB1bmUgcGFnZSBjbGFpcmUgY29tbWUgc3VyIHVuIGZvbmQgZm9uY8OpLFxuICAgICAgIGF1Y3VuZSB2YXJpYW50ZSBuJ2Egw6AgbGUgcmVjb2xvcmVyLiAqL1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNPbWJyZUZvcnRlKTtcbiAgICBib3JkZXI6IDNweCBzb2xpZCB2YXIoLS1jQmxhbmMpO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjQ1cyBlYXNlLW91dCAwLjE1cztcbiAgICBhbmltYXRpb246IHBvaW50ZXVyUHJldmlld0ZsYXNoQW5pbSAwLjZzIGVhc2Utb3V0IGZvcndhcmRzO1xufVxuXG4vKiBQb3PDqWUgw6AgbGEgZnJhbWUgc3VpdmFudCBsYSBuYWlzc2FuY2UgZHUgcm9uZCA6IGwnZWZmYWNlbWVudCBub3JtYWwsIHN1ciBsYSBkdXLDqWUgZGUgbCdvdXZlcnR1cmUuICovXG4ucG9pbnRldXJQcmV2aWV3Rmxhc2hGb25kdSB7XG4gICAgb3BhY2l0eTogMDtcbn1cblxuLyogTGEgY2libGUgYSBkaXNwYXJ1IHNvdXMgbGUgY2xpYyAoYm91dG9uIHJhbmfDqSwgY2hhbmdlbWVudCBkZSBjdWUpIDogbGUgcm9uZCBzJ8OpdGVpbnQgdG91dFxuICAgZGUgc3VpdGUgcGx1dMO0dCBxdWUgZGUgZmluaXIgZGUgcydvdXZyaXIgc3VyIGR1IHZpZGUuICovXG4ucG9pbnRldXJQcmV2aWV3Rmxhc2hFdGVpbnQge1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMTVzO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xufVxuXG5Aa2V5ZnJhbWVzIHBvaW50ZXVyUHJldmlld0ZsYXNoQW5pbSB7XG4gICAgMCUgICB7IHRyYW5zZm9ybTogc2NhbGUoMCk7IH1cbiAgICAxMDAlIHsgdHJhbnNmb3JtOiBzY2FsZShjYWxjKHZhcigtLXBvaW50ZXVyRWNoZWxsZSwgMSkgKiAyLjUpKTsgfVxufVxuIiwiLyogTGUgZG9pZ3QgZGVzIGFwZXLDp3VzIChEb2lndFBhcmNvdXJzLnRzKSA6IGNlbHVpIGRlIGwnYXBlcsOndSBwYXJ0aWNpcGFudCwgZXQgY2VsdWkgZHVcbiAgIHTDqWzDqXBob25lIHBvc8OpIMOgIGPDtHTDqSBkdSBncmFuZCDDqWNyYW4gZGUgbCdhcGVyw6d1IChUZWxlcGhvbmVBcGVyY3UudHMsIGVudHLDqWUgc2FsbGVFY3JhbikuXG4gICBVbmUgdmFyaWFudGUgZHUgcG9pbnRldXIgY29tbXVuIChraXRQdXIvcHJldmlldy9wb2ludGV1clByZXZpZXcuY3NzKSwgcXVlIGwnaMO0dGUgaW1wb3J0ZVxuICAgYXZhbnQgY2V0dGUgZmV1aWxsZSA6IGxlIHRyYWl0LCBsZSBnbGlzc2VtZW50IGV0IGxlIGNsaWMgc29udCBjZXV4IGRlIGxhIGZsw6hjaGUgZGUgc291cmlzLiAqL1xuXG4vKiBEYW5zIGwnw6ljcmFuIGR1IGNhZHJlLCBwYXItZGVzc3VzIGwnaWZyYW1lLiBMZSBib3V0IGRlIGwnaW5kZXggZXN0IMOgICgxMSwyNSA7IDIpIGRlIGxhIGdyaWxsZVxuICAgZGUgMjgsIHNvaXQgKDE5LDI5IDsgMyw0MykgcHggZGFucyBsZSBkZXNzaW4gZGUgNDggcHguICovXG4uZG9pZ3RQYXJjb3VycyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0b3A6IDcwJTtcbiAgICB6LWluZGV4OiAyO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLS1wb2ludGV1clBvaW50ZVg6IDE5LjI5cHg7XG4gICAgLS1wb2ludGV1clBvaW50ZVk6IDMuNDNweDtcbn1cblxuLmRvaWd0UGFyY291cnNWaXNpYmxlIHtcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4vKiBMZSByb25kIGR1IGNsaWMgZXN0IGNlbHVpIGR1IHBvaW50ZXVyIGNvbW11biwgbcOqbWUgY291bGV1ciBxdWUgcG91ciBsYSBzb3VyaXMgOiBzZXVsZSBzYSBwbGFjZVxuICAgZGFucyBsZSBjYWRyZSBlc3Qgw6AgbHVpLiAqL1xuLmRvaWd0UGFyY291cnNGbGFzaCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDE7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQVBFUsOHVSBEVSBQQVJDT1VSUyBQQVJUSUNJUEFOVFxuICAgVW4gY2FkcmUgZGUgdMOpbMOpcGhvbmUgb3UgZGUgYm9ybmUsIGxhIHBhZ2UgcGFydGljaXBhbnQgZW4gaWZyYW1lIGRlZGFucywgbGUgZG9pZ3QgcGFyLWRlc3N1cy5cbiAgIExlIGNhZHJlIGdhcmRlIGxhIHRhaWxsZSByw6llbGxlIGRlIGwnw6ljcmFuIDsgZW50cmVlUHJldmlld1BhcnRpY2lwYW50LnRzIGxlIHLDqWR1aXQgKHRyYW5zZm9ybSlcbiAgIHBvdXIgcXUnaWwgdGllbm5lIGRhbnMgbGEgcGxhY2UgZGlzcG9uaWJsZS5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIExlIGRvaWd0LCBwYXJ0YWfDqSBhdmVjIGxlIHTDqWzDqXBob25lIGRlIGwnYXBlcsOndSBkdSBncmFuZCDDqWNyYW4gOiB1bmUgdmFyaWFudGUgZHUgcG9pbnRldXJcbiAgIGZpY3RpZiBkZXMgYXBlcsOndXMsIHF1J2lsIHBhcnRhZ2UgYXZlYyBsYSBmbMOoY2hlIGRlIHNvdXJpcy4gKi9cbkBpbXBvcnQgJy4uLy4uL2tpdFB1ci9wcmV2aWV3L3BvaW50ZXVyUHJldmlldy5jc3MnO1xuQGltcG9ydCAnLi9kb2lndFBhcmNvdXJzLmNzcyc7XG5cbi5hcGVyY3VQYXJ0aWNpcGFudCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgaGVpZ2h0OiAxMDBkdmg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY0JsYW5jMik7XG4gICAgY29sb3I6IHZhcigtLWNOb2lyMSk7XG4gICAgZm9udDogdmFyKC0tZlRleHQxNik7XG59XG5cbi8qIC0tLS0tLS0tLS0gQmFycmUgZHUgaGF1dCAtLS0tLS0tLS0tICovXG5cbi5hcGVyY3VQYXJ0aWNpcGFudEJhcnJlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1nYXBMYXJnZSk7XG4gICAgcGFkZGluZzogMTJweCAyMHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNCbGFuYyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tb21icmVQb3J0ZWUpO1xufVxuXG4uYXBlcmN1UGFydGljaXBhbnRUaXRyZXMge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uYXBlcmN1UGFydGljaXBhbnRUaXRyZXMgaDEge1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250OiB2YXIoLS1mSDQpO1xufVxuXG4uYXBlcmN1UGFydGljaXBhbnRUaXRyZXMgcCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQ6IHZhcigtLWZMaWdodDE0KTtcbn1cblxuLmFwZXJjdVBhcnRpY2lwYW50TGlzdGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiB2YXIoLS1nYXBSZWR1aXQpO1xufVxuXG4uYXBlcmN1UGFydGljaXBhbnRMaXN0ZSBhIHtcbiAgICBwYWRkaW5nOiA0cHggMTBweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXJSMSk7XG4gICAgY29sb3I6IHZhcigtLWNBY2NlbnQzKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5hcGVyY3VQYXJ0aWNpcGFudExpc3RlIGFbYXJpYS1jdXJyZW50PVwicGFnZVwiXSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY0FjY2VudDMpO1xuICAgIGNvbG9yOiB2YXIoLS1jQWNjZW50dCk7XG59XG5cbi5hcGVyY3VQYXJ0aWNpcGFudEdyYW5kRWNyYW4ge1xuICAgIGNvbG9yOiB2YXIoLS1jQWNjZW50Myk7XG4gICAgZm9udDogdmFyKC0tZkN0YTE2KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5hcGVyY3VQYXJ0aWNpcGFudFJlam91ZXIge1xuICAgIHBhZGRpbmc6IDhweCAxNnB4O1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXJSMSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY0FjY2VudDMpO1xuICAgIGNvbG9yOiB2YXIoLS1jQWNjZW50dCk7XG4gICAgZm9udDogdmFyKC0tZkN0YTE2KTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5hcGVyY3VQYXJ0aWNpcGFudFJlam91ZXI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNBY2NlbnQ0KTtcbn1cblxuLyogLS0tLS0tLS0tLSBMZSBjYWRyZSAtLS0tLS0tLS0tICovXG5cbi8qIExhIHBsYWNlIGxhaXNzw6llIGVuIGJhcyByZcOnb2l0IGxlcyBzb3VzLXRpdHJlcy4gKi9cbi5hcGVyY3VQYXJ0aWNpcGFudFNjZW5lIHtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IDE2cHggMTZweCA4NHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5hcGVyY3VQYXJ0aWNpcGFudEFwcGFyZWlsIHtcbiAgICBmbGV4OiBub25lO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jTm9pcjEpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLW9tYnJlTW9kYWxlKTtcbn1cblxuLmFwZXJjdVBhcnRpY2lwYW50QXBwYXJlaWxUZWxlcGhvbmUge1xuICAgIHBhZGRpbmc6IDE0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTJweDtcbn1cblxuLmFwZXJjdVBhcnRpY2lwYW50QXBwYXJlaWxCb3JuZSB7XG4gICAgcGFkZGluZzogMzZweCAyOHB4IDY0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMjhweDtcbn1cblxuLyogVGFpbGxlIHBvc8OpZSBwYXIgZW50cmVlUHJldmlld1BhcnRpY2lwYW50LnRzLCBjZWxsZSBkZSBsJ8OpY3JhbiByw6llbCBkdSBjYWRyZS4gKi9cbi5hcGVyY3VQYXJ0aWNpcGFudEVjcmFuIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jQmxhbmMpO1xufVxuXG4uYXBlcmN1UGFydGljaXBhbnRBcHBhcmVpbFRlbGVwaG9uZSAuYXBlcmN1UGFydGljaXBhbnRFY3JhbiB7XG4gICAgYm9yZGVyLXJhZGl1czogMzhweDtcbn1cblxuLmFwZXJjdVBhcnRpY2lwYW50QXBwYXJlaWxCb3JuZSAuYXBlcmN1UGFydGljaXBhbnRFY3JhbiB7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xufVxuXG4uYXBlcmN1UGFydGljaXBhbnRFY3JhbiBpZnJhbWUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBib3JkZXI6IDA7XG59XG5cbi8qIC0tLS0tLS0tLS0gU291cy10aXRyZXMgKFNvdXNUaXRyZVByZXZpZXcsIGtpdFB1cikgLS0tLS0tLS0tLSAqL1xuXG4jcHJldmlld1NvdXNUaXRyZSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBib3R0b206IDIwcHg7XG4gICAgei1pbmRleDogMTA7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBtYXgtd2lkdGg6IG1pbig5MHZ3LCA3MjBweCk7XG4gICAgcGFkZGluZzogMTBweCAyMnB4O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXJSMSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY0JsYW5jKTtcbiAgICBjb2xvcjogdmFyKC0tY05vaXIxKTtcbiAgICBmb250OiB2YXIoLS1mVGV4dDE2U3Ryb25nKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tb21icmVQb3J0ZWUyKTtcbn1cblxuI3ByZXZpZXdTb3VzVGl0cmUucHJldmlld1NvdXNUaXRyZVZpc2libGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKiAtLS0tLS0tLS0tIENvbXB0ZSByZW5kdSA6IGZpbiwgb3UgYXJyw6p0IHN1ciB1bmUgw6l0YXBlIC0tLS0tLS0tLS0gKi9cblxuLmFwZXJjdVBhcnRpY2lwYW50UmFwcG9ydCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogNzZweDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgei1pbmRleDogMTE7XG4gICAgbWF4LXdpZHRoOiBtaW4oOTB2dywgNzIwcHgpO1xuICAgIHBhZGRpbmc6IDEwcHggMjBweDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyUjEpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNTdWNjZXMwKTtcbiAgICBjb2xvcjogdmFyKC0tY05vaXIxKTtcbiAgICBmb250OiB2YXIoLS1mVGV4dDE2KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1vbWJyZVBvcnRlZSk7XG59XG5cbi5hcGVyY3VQYXJ0aWNpcGFudFJhcHBvcnRbaGlkZGVuXSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLmFwZXJjdVBhcnRpY2lwYW50UmFwcG9ydEVjaGVjIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jUm91Z2UwKTtcbiAgICBjb2xvcjogdmFyKC0tY1JvdWdlNCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/