@import url(https://fonts.googleapis.com/css2?family=Sarabun:wght@300;400;500;600&family=Playfair+Display:wght@600;700&display=swap);
/* thai */
@font-face {
  font-family: 'Kanit';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local('Kanit Regular'), local('Kanit-Regular'), url(https://fonts.gstatic.com/s/kanit/v5/nKKZ-Go6G5tXcraBGwCYdA.woff2) format('woff2');
  unicode-range: U+0E01-0E5B, U+200C-200D, U+25CC;
}
/* vietnamese */
@font-face {
  font-family: 'Kanit';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local('Kanit Regular'), local('Kanit-Regular'), url(https://fonts.gstatic.com/s/kanit/v5/nKKZ-Go6G5tXcraaGwCYdA.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}
/* cyrillic */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local('Montserrat Medium'), local('Montserrat-Medium'), url(https://fonts.gstatic.com/s/montserrat/v14/JTURjIg1_i6t8kCHKm45_ZpC3g3D_u50.woff2) format('woff2');
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local('Montserrat Medium'), local('Montserrat-Medium'), url(https://fonts.gstatic.com/s/montserrat/v14/JTURjIg1_i6t8kCHKm45_ZpC3gfD_u50.woff2) format('woff2');
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local('Montserrat Medium'), local('Montserrat-Medium'), url(https://fonts.gstatic.com/s/montserrat/v14/JTURjIg1_i6t8kCHKm45_ZpC3gnD_g.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* thai */
@font-face {
  font-family: 'Kanit';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: local('Kanit Medium'), local('Kanit-Medium'), url(https://fonts.gstatic.com/s/kanit/v5/nKKU-Go6G5tXcr5mOBWzVaF5NQ.woff2) format('woff2');
  unicode-range: U+0E01-0E5B, U+200C-200D, U+25CC;
}
/* vietnamese */
@font-face {
  font-family: 'Kanit';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: local('Kanit Medium'), local('Kanit-Medium'), url(https://fonts.gstatic.com/s/kanit/v5/nKKU-Go6G5tXcr5mOBWoVaF5NQ.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}

/* cyrillic */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: local('Montserrat SemiBold'), local('Montserrat-SemiBold'), url(https://fonts.gstatic.com/s/montserrat/v14/JTURjIg1_i6t8kCHKm45_bZF3g3D_u50.woff2) format('woff2');
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: local('Montserrat SemiBold'), local('Montserrat-SemiBold'), url(https://fonts.gstatic.com/s/montserrat/v14/JTURjIg1_i6t8kCHKm45_bZF3gfD_u50.woff2) format('woff2');
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: local('Montserrat SemiBold'), local('Montserrat-SemiBold'), url(https://fonts.gstatic.com/s/montserrat/v14/JTURjIg1_i6t8kCHKm45_bZF3gnD_g.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}





/* thai */
@font-face {
  font-family: 'Kanit';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: local('Kanit SemiBold'), local('Kanit-SemiBold'), url(https://fonts.gstatic.com/s/kanit/v5/nKKU-Go6G5tXcr5KPxWzVaF5NQ.woff2) format('woff2');
  unicode-range: U+0E01-0E5B, U+200C-200D, U+25CC;
}
/* vietnamese */
@font-face {
  font-family: 'Kanit';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: local('Kanit SemiBold'), local('Kanit-SemiBold'), url(https://fonts.gstatic.com/s/kanit/v5/nKKU-Go6G5tXcr5KPxWoVaF5NQ.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}


/* cyrillic */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: local('Montserrat Bold'), local('Montserrat-Bold'), url(https://fonts.gstatic.com/s/montserrat/v14/JTURjIg1_i6t8kCHKm45_dJE3g3D_u50.woff2) format('woff2');
  unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: local('Montserrat Bold'), local('Montserrat-Bold'), url(https://fonts.gstatic.com/s/montserrat/v14/JTURjIg1_i6t8kCHKm45_dJE3gfD_u50.woff2) format('woff2');
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: local('Montserrat Bold'), local('Montserrat-Bold'), url(https://fonts.gstatic.com/s/montserrat/v14/JTURjIg1_i6t8kCHKm45_dJE3gnD_g.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Kanit';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: local('Kanit Bold'), local('Kanit-Bold'), url(https://fonts.gstatic.com/s/kanit/v5/nKKU-Go6G5tXcr4uPhWzVaFrNlJzIu4.woff2) format('woff2');
  unicode-range: U+0E01-0E5B, U+200C-200D, U+25CC;
}

/* thai */
@font-face {
  font-family: 'Kanit-all';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local('Kanit Regular'), local('Kanit-Regular'), url(https://fonts.gstatic.com/s/kanit/v5/nKKZ-Go6G5tXcraBGwCKd6xBDFs.woff2) format('woff2');
  unicode-range: U+0E01-0E5B, U+200C-200D, U+25CC;
}
/* vietnamese */
@font-face {
  font-family: 'Kanit-all';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local('Kanit Regular'), local('Kanit-Regular'), url(https://fonts.gstatic.com/s/kanit/v5/nKKZ-Go6G5tXcraaGwCKd6xBDFs.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Kanit-all';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local('Kanit Regular'), local('Kanit-Regular'), url(https://fonts.gstatic.com/s/kanit/v5/nKKZ-Go6G5tXcrabGwCKd6xBDFs.woff2) format('woff2');
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Kanit-all';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local('Kanit Regular'), local('Kanit-Regular'), url(https://fonts.gstatic.com/s/kanit/v5/nKKZ-Go6G5tXcraVGwCKd6xB.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* ============================================================
   ศูนย์หนังสือจุฬาฯ — Warm Dark Bookstore Theme
   Primary  : #2C1A0E (dark brown)
   Accent   : #C8A060 (gold)
   Surface  : #FAF8F2 (warm cream)
   ============================================================ */

/* ── Variables ── */
:root {
  --cb-dark:        #2C1A0E;
  --cb-dark-mid:    #3D2410;
  --cb-dark-lite:   #4A2C12;
  --cb-gold:        #C8A060;
  --cb-gold-lite:   #E8C070;
  --cb-gold-pale:   #F5E8C0;
  --cb-gold-dim:    rgba(200,160,80,0.55);
  --cb-cream:       #FAF8F2;
  --cb-cream-dark:  #F0EAD8;
  --cb-white:       #FFFFFF;
  --cb-text:        #2C1A0E;
  --cb-text-mid:    #5C3A1E;
  --cb-text-muted:  #A07848;
  --cb-border:      rgba(200,160,80,0.22);
  --cb-shadow:      rgba(44,26,14,0.18);
  --cb-r-lg:        20px;
  --cb-r-md:        14px;
  --cb-r-pill:      999px;
}

/* ── Reset ── */
#chula-chatbot-wrapper *,
#chula-chatbot-box * {
  box-sizing: border-box;
  font-family: 'Sarabun', 'Kanit', -apple-system, sans-serif;
}

/* ── Wrapper ── */
#chula-chatbot-wrapper {
  z-index: 12000;
}
.fade-in  { opacity: 1 !important; }
.fade-out { opacity: 0 !important; }

/* ============================================================
   CHATBOX CONTAINER
   ============================================================ */
#chula-chatbot-box {
  position: fixed;
  bottom: 24px;
  right: 24px;
  width: 370px;
  height: 620px;
  background: var(--cb-cream);
  border: 1px solid var(--cb-border);
  border-radius: var(--cb-r-lg);
  box-shadow: 0 24px 56px var(--cb-shadow), 0 4px 12px rgba(44,26,14,0.1);
  overflow: hidden;
  z-index: 9998;
  display: flex;
  flex-direction: column;
  animation: cb-popIn 0.28s cubic-bezier(0.34,1.56,0.64,1);
}

/* ============================================================
   HEADER
   ============================================================ */
.chula-header,
.chula-header-mobilelike {
  background: var(--cb-dark);
  padding: 0;
  flex-shrink: 0;
  position: relative;
  overflow: hidden;
  border-bottom: none;
  min-height: unset;
  border-radius: 0;
  box-shadow: none;
}

/* glow orb */
.chula-header::before {
  content: '';
  position: absolute;
  top: -30px; right: -20px;
  width: 100px; height: 100px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(200,160,80,0.15) 0%, transparent 70%);
  pointer-events: none;
}

/* top row: logo + title + online badge */
.header-top-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px 18px 10px;
  position: relative;
  z-index: 1;
}

/* logo box */
.cb-logo-box {
  width: 46px; height: 46px;
  border-radius: 14px;
  background: linear-gradient(135deg, var(--cb-gold) 0%, var(--cb-gold-lite) 100%);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  box-shadow: 0 4px 12px rgba(200,160,80,0.35);
}

/* title group */
.chula-title-group {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 1px;
}
.chula-title-main {
  margin: 0;
  font-family: 'Playfair Display', serif;
  font-size: 15px;
  font-weight: 700;
  color: var(--cb-gold-pale);
  letter-spacing: 0.15px;
  line-height: 1.2;
}
.chula-title-sub {
  margin: 0;
  font-size: 10.5px;
  color: rgba(200,160,80,0.55);
  font-weight: 300;
  line-height: 1.3;
}

/* online badge */
.cb-online-badge {
  display: flex;
  align-items: center;
  gap: 5px;
  background: rgba(110,231,183,0.12);
  border: 1px solid rgba(110,231,183,0.35);
  border-radius: var(--cb-r-pill);
  padding: 4px 10px;
  font-size: 10.5px;
  color: #6EE7B7;
  font-weight: 500;
  white-space: nowrap;
  flex-shrink: 0;
}
.cb-online-badge::before {
  content: '';
  width: 6px; height: 6px;
  border-radius: 50%;
  background: #6EE7B7;
  box-shadow: 0 0 5px #6EE7B7;
}

/* header actions (close btn) */
.chula-header-actions {
  position: absolute;
  top: 14px; right: 14px;
  z-index: 2;
  display: none; /* close btn hidden — side=false uses click-outside */
}
.chula-open.side-panel .chula-header-actions {
  display: flex;
}
.chula-close-btn {
  width: 28px; height: 28px;
  border-radius: 8px;
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(200,160,80,0.2);
  color: var(--cb-gold-pale);
  font-size: 17px; font-weight: 700;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background 0.15s;
}
.chula-close-btn:hover { background: rgba(200,160,80,0.2); }

/* category chips row */
.header-cat-row {
  display: flex;
  gap: 7px;
  padding: 0 16px 14px;
  overflow-x: auto;
  position: relative; z-index: 1;
}
.header-cat-row::-webkit-scrollbar { display: none; }

.cb-cat-chip {
  background: rgba(255,255,255,0.07);
  border: 1px solid rgba(200,160,80,0.25);
  border-radius: var(--cb-r-pill);
  padding: 5px 12px;
  font-size: 11px;
  color: rgba(245,232,192,0.7);
  white-space: nowrap;
  cursor: pointer;
  font-family: 'Sarabun', sans-serif;
  transition: all 0.15s;
  display: flex; align-items: center; gap: 4px;
}
.cb-cat-chip.active,
.cb-cat-chip:hover {
  background: rgba(200,160,80,0.2);
  border-color: rgba(200,160,80,0.6);
  color: #E8C878;
}

/* gold shelf divider at bottom of header */
.header-shelf {
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--cb-gold), var(--cb-gold), transparent);
  opacity: 0.6;
}

/* ============================================================
   MESSAGES AREA
   ============================================================ */
.chula-messages {
  flex: 1;
  overflow-y: auto;
  padding: 16px 14px 10px;
  background: var(--cb-cream);
  display: flex;
  flex-direction: column;
  gap: 12px;
  color: var(--cb-text);
}
.chula-messages::-webkit-scrollbar { width: 3px; }
.chula-messages::-webkit-scrollbar-thumb {
  background: rgba(44,26,14,0.2);
  border-radius: 2px;
}

/* welcome banner */
.cb-welcome-card {
  background: linear-gradient(135deg, var(--cb-dark) 0%, var(--cb-dark-mid) 100%);
  border-radius: 16px;
  padding: 14px 16px;
  display: flex;
  gap: 13px;
  align-items: center;
  border: 1px solid rgba(200,160,80,0.2);
  margin-bottom: 2px;
}
.cb-welcome-icon {
  width: 46px; height: 46px;
  border-radius: 13px;
  background: rgba(200,160,80,0.14);
  border: 1px solid rgba(200,160,80,0.28);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.cb-welcome-text .wt {
  font-family: 'Playfair Display', serif;
  font-size: 13px;
  color: var(--cb-gold-pale);
  margin: 0 0 3px;
}
.cb-welcome-text .ws {
  font-size: 11.5px;
  color: rgba(200,160,80,0.6);
  font-weight: 300;
  line-height: 1.5;
  margin: 0;
}

/* date divider */
.cb-divider {
  display: flex; align-items: center; gap: 8px;
  font-size: 10.5px; color: var(--cb-text-muted);
}
.cb-divider::before, .cb-divider::after {
  content: ''; flex: 1;
  height: 0.5px;
  background: rgba(44,26,14,0.12);
}

/* ── Bubble rows ── */
.bubble {
  display: flex;
  align-items: flex-end;
  gap: 8px;
  animation: cb-bubbleIn 0.25s ease;
}
.bubble.bot  { align-self: flex-start; flex-direction: row; }
.bubble.user { align-self: flex-end;   flex-direction: row-reverse; }

/* bot avatar */
.bubble .avatar.bot-avatar {
  width: 32px; height: 32px;
  border-radius: 50%;
  object-fit: cover;
  background: linear-gradient(135deg, var(--cb-gold) 0%, var(--cb-gold-lite) 100%);
  border: 1.5px solid rgba(200,160,80,0.45);
  flex-shrink: 0;
  align-self: flex-end;
}
.bubble .avatar.user-avatar { display: none !important; }

/* ── Bot bubble ── */
.bubble.bot .text {
  background: var(--cb-white);
  color: var(--cb-text);
  border: 0.5px solid rgba(180,150,90,0.18);
  box-shadow: 0 2px 8px rgba(44,26,14,0.07);
  padding: 11px 15px;
  border-radius: var(--cb-r-md);
  border-bottom-left-radius: 5px;
  font-size: 13px;
  font-weight: 400;
  max-width: 235px;
  line-height: 1.55;
}

/* ── User bubble ── */
.bubble.user .text {
  background: var(--cb-dark);
  color: var(--cb-gold-pale);
  padding: 11px 15px;
  border-radius: var(--cb-r-md);
  border-bottom-right-radius: 5px;
  font-size: 13px;
  font-weight: 400;
  max-width: 235px;
  line-height: 1.55;
}

/* timestamp */
.cb-ts {
  font-size: 10px;
  color: var(--cb-text-muted);
  margin-top: 4px;
  padding: 0 2px;
}
.bubble.user .cb-ts { text-align: right; }

/* ── Typing bubble ── */
.bubble.typing .text {
  background: var(--cb-white);
  border: 0.5px solid rgba(180,150,90,0.18);
  box-shadow: 0 2px 8px rgba(44,26,14,0.07);
  padding: 11px 15px;
  border-radius: var(--cb-r-md);
  border-bottom-left-radius: 5px;
  min-width: 56px;
  display: flex;
  align-items: center;
}

/* typing dots */
.typing-indicator,
.bubble .typing-indicator,
.chat-loading-row .typing-indicator {
  display: flex;
  gap: 5px;
  align-items: center;
}
.typing-indicator span,
.bubble .typing-indicator span,
.chat-loading-row .typing-indicator span {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: var(--cb-gold);
  opacity: 0.35;
  animation: cb-bop 1.2s infinite ease-in-out;
}
.typing-indicator span:nth-child(2),
.bubble .typing-indicator span:nth-child(2),
.chat-loading-row .typing-indicator span:nth-child(2) { animation-delay: 0.18s; }
.typing-indicator span:nth-child(3),
.bubble .typing-indicator span:nth-child(3),
.chat-loading-row .typing-indicator span:nth-child(3) { animation-delay: 0.36s; }

/* ── Quick reply buttons ── */
.quick-reply-btn {
  background: var(--cb-cream);
  border: 1px solid rgba(44,26,14,0.18);
  color: var(--cb-text-mid);
  padding: 6px 13px;
  border-radius: var(--cb-r-pill);
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  font-family: 'Sarabun', sans-serif;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.quick-reply-btn:hover {
  background: var(--cb-dark);
  color: var(--cb-gold-pale);
  border-color: var(--cb-dark);
}

/* system error */
.system-label {
  display: flex; justify-content: center; align-items: center;
  color: #8B3A1E;
  font-size: 12px;
  background: #FFF5F0;
  border: 1px solid rgba(139,58,30,0.15);
  border-radius: 8px;
  padding: 6px 14px;
  margin: 4px auto;
  animation: cb-bubbleIn 0.3s;
}

/* ============================================================
   LOADING ROW
   ============================================================ */
.chat-loading-row {
  padding: 8px 14px;
  border-top: 1px solid rgba(44,26,14,0.06);
  background: var(--cb-cream);
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}
.chat-loading-row .loader {
  width: 16px; height: 16px;
  border-radius: 50%;
  border: 2px solid rgba(44,26,14,0.12);
  border-top-color: var(--cb-gold);
  animation: cb-spin 0.9s linear infinite;
}
.chat-loading-row > div:last-child {
  font-size: 12px;
  color: var(--cb-text-muted);
}

/* ============================================================
   SELECTED IMAGE PREVIEW
   ============================================================ */
.selected-image-row {
  padding: 8px 14px;
  background: var(--cb-cream-dark);
  border-top: 1px solid var(--cb-border);
  display: flex;
  align-items: center;
  flex-shrink: 0;
}
.selected-image-wrap { position: relative; display: inline-block; }
.selected-image-preview {
  height: 56px;
  border-radius: 6px;
  border: 1px solid var(--cb-border);
}
.selected-image-remove {
  position: absolute; top: -7px; right: -7px;
  background: var(--cb-dark);
  color: var(--cb-gold-pale);
  border: none; border-radius: 50%;
  width: 18px; height: 18px;
  cursor: pointer; font-size: 11px;
  display: flex; align-items: center; justify-content: center;
}

/* ============================================================
   INPUT ROW
   ============================================================ */
.chula-input-row {
  padding: 10px 12px 8px;
  background: var(--cb-white);
  border-top: 1px solid rgba(44,26,14,0.08);
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex-shrink: 0;
}

/* inner row: attach + input + send */
.cb-input-inner {
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--cb-cream);
  border: 1px solid rgba(44,26,14,0.14);
  border-radius: var(--cb-r-pill);
  padding: 8px 8px 8px 12px;
}

.chula-input-row input {
  flex: 1;
  background: none;
  border: none;
  outline: none;
  font-size: 13px;
  font-family: 'Sarabun', sans-serif;
  color: var(--cb-text);
  font-weight: 500;
}
.chula-input-row input::placeholder { color: var(--cb-text-muted); opacity: 1; }
.chula-input-row input:disabled { opacity: 0.5; cursor: not-allowed; }

/* attach button */
.attach-trigger {
  background: none;
  border: none;
  cursor: pointer;
  padding: 4px;
  display: flex; align-items: center;
  color: var(--cb-text-muted);
  flex-shrink: 0;
  transition: color 0.15s;
}
.attach-trigger:hover { color: var(--cb-dark); }

/* send button */
.chula-input-row .send-btn {
  width: 36px; height: 36px;
  border-radius: 50%;
  background: var(--cb-dark);
  border: none;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
  box-shadow: 0 3px 10px rgba(44,26,14,0.3);
  transition: transform 0.12s, box-shadow 0.12s;
}
.chula-input-row .send-btn:disabled {
  opacity: 0.35;
  cursor: not-allowed;
  box-shadow: none;
}
.chula-input-row .send-btn:hover:not(:disabled) {
  transform: scale(1.07);
  box-shadow: 0 5px 16px rgba(44,26,14,0.4);
}

/* hint chips below input */
.cb-hint-row {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  padding-bottom: 4px;
}
.cb-hint-row::-webkit-scrollbar { display: none; }

.cb-hint {
  background: none;
  border: 0.5px solid rgba(44,26,14,0.18);
  border-radius: var(--cb-r-pill);
  padding: 4px 11px;
  font-size: 11px;
  color: var(--cb-text-mid);
  white-space: nowrap;
  cursor: pointer;
  font-family: 'Sarabun', sans-serif;
  transition: all 0.15s;
}
.cb-hint:hover {
  background: var(--cb-dark);
  color: var(--cb-gold-pale);
  border-color: var(--cb-dark);
}

/* ============================================================
   FLOATING TOGGLE BUTTON
   ============================================================ */
#chula-chatbot-toggle {
  position: fixed;
  bottom: 24px; right: 0;
  transform: translateX(calc(100% - 14px));
  opacity: 0.85;
  transition: all 0.3s cubic-bezier(0.2,0.8,0.2,1);
  z-index: 10000;
  cursor: pointer;
  width: 52px; height: 52px;
  background: linear-gradient(135deg, var(--cb-dark) 0%, var(--cb-dark-lite) 100%);
  border-radius: 50% 0 0 50%;
  border: none;
  box-shadow: -2px 4px 14px rgba(44,26,14,0.25);
  display: flex; align-items: center; justify-content: center;
}
#chula-chatbot-toggle:hover {
  transform: translateX(-8px);
  opacity: 1;
  border-radius: 50%;
  box-shadow: -4px 4px 22px rgba(44,26,14,0.35);
}

.trigger-notch {
  position: absolute;
  left: -10px; top: 55%;
  transform: translateY(-50%);
  width: 14px; height: 44px;
  background: var(--cb-gold);
  color: var(--cb-dark);
  border-radius: 10px 0 0 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-weight: 700;
  box-shadow: -2px 0 6px rgba(44,26,14,0.15);
}

#chula-chatbot-edge {
  position: fixed; top: 0; right: 0;
  width: 12px; height: 100vh;
  background: transparent; z-index: 9999; cursor: pointer;
}
#chula-chatbot-edge:hover + #chula-chatbot-toggle,
#chula-chatbot-toggle:hover {
  transform: translateX(0);
  opacity: 1;
  pointer-events: auto;
}

/* floating small btn */
.floating-toggle-small-container {
  position: fixed; right: 16px; bottom: 16px; z-index: 12001;
}
.floating-toggle-small-btn {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 7px 14px; font-size: 12px; border-radius: 12px;
  background: linear-gradient(135deg, var(--cb-dark) 0%, var(--cb-dark-lite) 100%);
  color: var(--cb-gold-pale); border: none;
  box-shadow: 0 6px 16px rgba(44,26,14,0.22);
  cursor: pointer; font-family: 'Sarabun', sans-serif;
  transition: transform 0.12s, box-shadow 0.12s;
}
.floating-toggle-small-btn:hover { box-shadow: 0 10px 24px rgba(44,26,14,0.3); transform: translateY(-1px); }
.floating-toggle-small-btn:active { transform: scale(0.99); }

/* ============================================================
   SIDE PANEL
   ============================================================ */
#chula-chatbot-box.side-panel,
.chula-open.side-panel {
  position: fixed;
  top: 0; right: 0; bottom: 0;
  width: 420px; max-width: 100%; height: 100vh;
  border-radius: 0;
  box-shadow: -8px 0 32px rgba(44,26,14,0.15);
  z-index: 20001;
  display: flex; flex-direction: column;
  background: var(--cb-cream);
  border: none;
  border-left: 1px solid var(--cb-border);
}
.chula-open.side-panel .chula-header,
.chula-open.side-panel .chula-header-mobilelike {
  background: var(--cb-dark);
}
.chula-open.side-panel .chula-header-actions { display: flex; }
.chula-open.side-panel .chula-messages { background: var(--cb-cream); }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 768px) {
  #chula-chatbot-box {
    width: calc(100vw - 12px);
    height: calc(100vh - 80px);
    right: 6px; bottom: 60px;
    border-radius: var(--cb-r-lg);
  }
  #chula-chatbot-box.side-panel,
  .chula-open.side-panel { width: 100%; left: 0; border-radius: 0; }
  #chula-chatbot-toggle { transform: translateX(0); opacity: 0; pointer-events: none; right: 8px; bottom: 8px; }
  #chula-chatbot-edge { width: 36px; }
  .bubble.bot .text, .bubble.user .text { max-width: 200px; }
}
@media (max-width: 900px) {
  #chula-chatbot-box.side-panel,
  .chula-open.side-panel { width: 100%; left: 0; }
}

/* ============================================================
   ANIMATIONS
   ============================================================ */
@keyframes cb-popIn {
  from { opacity: 0; transform: scale(0.95) translateY(12px); }
  to   { opacity: 1; transform: scale(1) translateY(0); }
}
@keyframes cb-bubbleIn {
  from { opacity: 0; transform: translateY(8px) scale(0.98); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes cb-bop {
  0%,60%,100% { transform: translateY(0); opacity: 0.35; }
  30%         { transform: translateY(-5px); opacity: 1; }
}
@keyframes cb-spin {
  to { transform: rotate(360deg); }
}

/* ============================================================
   MARKDOWN
   ============================================================ */
.md-message { font-size: 13px; color: var(--cb-text); line-height: 1.55; }
.md-message a, .md-link { color: var(--cb-gold); text-decoration: underline; cursor: pointer; }
.md-code-inline {
  background: rgba(44,26,14,0.07); padding: 2px 6px;
  border-radius: 4px; font-family: monospace; font-size: 12px; color: var(--cb-text-mid);
}
.md-code-block {
  background: rgba(44,26,14,0.06); padding: 8px 10px;
  border-radius: 8px; overflow: auto; font-family: monospace;
  font-size: 12px; color: var(--cb-text);
}
.md-image { max-width: 100%; border-radius: 8px; border: 1px solid var(--cb-border); }

/* ── Product Cards (bot response) ── */
.cb-product-list {
  display: flex; flex-direction: column; gap: 9px; padding: 2px 0;
}
.cb-product-card {
  display: flex; align-items: center; gap: 11px;
  background: var(--cb-white);
  border: 1px solid rgba(44,26,14,0.09);
  border-radius: 13px;
  padding: 9px 11px;
  box-shadow: 0 2px 8px rgba(44,26,14,0.07);
  cursor: pointer;
  transition: transform .15s, box-shadow .15s;
  animation: cb-bubbleIn .25s ease both;
}
.cb-product-card:nth-child(2) { animation-delay: .06s; }
.cb-product-card:nth-child(3) { animation-delay: .12s; }
.cb-product-card:hover { transform: translateY(-1px); box-shadow: 0 4px 14px rgba(44,26,14,0.12); }

.cb-product-thumb {
  width: 48px; height: 58px; border-radius: 8px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center; overflow: hidden;
}
.cb-product-thumb img { width: 100%; height: 100%; object-fit: cover; }
.cb-product-code { font-size: 8px; font-weight: 700; color: rgba(255,255,255,0.9); text-align: center; padding: 3px; }

.cb-product-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.cb-product-title { margin: 0; font-size: 12px; font-weight: 700; color: var(--cb-text); line-height: 1.35; }
.cb-product-author { margin: 0; font-size: 10.5px; color: var(--cb-text-muted); }
.cb-product-price-row { display: flex; align-items: center; gap: 6px; margin-top: 3px; }
.cb-product-price { font-size: 13px; font-weight: 700; color: var(--cb-dark); }
.cb-product-original { font-size: 10.5px; color: var(--cb-text-muted); text-decoration: line-through; }

/* bubble ที่มี product list */
.bubble.bot .text:has(.cb-product-list) {
  background: transparent; border: none; box-shadow: none; padding: 4px 0;
}
/* =============================================
   CU Book — Mobile Chatbot (Bottom Sheet)
   ============================================= */

:root {
  --cb-dark:       #2C1A0E;
  --cb-dark-mid:   #3D2410;
  --cb-gold:       #C8A060;
  --cb-gold-lite:  #E8C070;
  --cb-gold-pale:  #F5E8C0;
  --cb-cream:      #FAF8F2;
  --cb-cream-dark: #F0EAD8;
  --cb-white:      #FFFFFF;
  --cb-text:       #2C1A0E;
  --cb-text-mid:   #5C3A1E;
  --cb-text-muted: #A07848;
  --cb-border:     rgba(200,160,80,0.22);
  --cb-r-pill:     999px;
  --mchat-vh:      1vh;
}

/* prevent iOS zoom on input focus */
.mchat-ai-panel input,
.mchat-ai-panel textarea,
.mchat-ai-panel select {
  font-size: 16px !important;
}

.mchat-ai-panel,
.mchat-ai-panel * {
  box-sizing: border-box;
  font-family: 'Sarabun', 'Kanit', -apple-system, sans-serif;
  -webkit-tap-highlight-color: transparent;
  -webkit-text-size-adjust: 100%;
}

/* ── Overlay ── */
.mchat-ai-overlay {
  position: fixed;
  inset: 0;
  background: radial-gradient(circle at 50% 100%, rgba(200,160,80,0.2), rgba(0,0,0,0.56));
  backdrop-filter: blur(2px);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
  z-index: 12011;
}
.mchat-ai-overlay.show {
  opacity: 1;
  pointer-events: auto;
}

/* ── Panel ── */
.mchat-ai-panel {
  position: fixed;
  left: 0; right: 0; bottom: 0;
  height: min(94dvh, calc((var(--mchat-vh) * 100) - env(safe-area-inset-top, 0px)));
  max-height: calc((var(--mchat-vh) * 100) - env(safe-area-inset-top, 0px));
  background: var(--cb-cream);
  border-radius: 24px 24px 0 0;
  border: 1px solid var(--cb-border);
  border-bottom: none;
  box-shadow: 0 -10px 38px rgba(44,26,14,0.26);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  transform: translateY(100%);
  transition: transform 0.36s cubic-bezier(0.32,0.72,0,1);
  z-index: 12012;
  pointer-events: none;
  /* iOS momentum scroll fix */
  -webkit-overflow-scrolling: touch;
}
.mchat-ai-panel.show {
  transform: translateY(0);
  pointer-events: auto;
}

/* ── Header ── */
.mchat-ai-header {
  flex-shrink: 0;
  background: linear-gradient(135deg, #2a190d 0%, #432812 100%);
  border-radius: 24px 24px 0 0;
  display: flex;
  flex-direction: column;
  /* safe area top */
  padding-top: env(safe-area-inset-top, 0px);
}

/* drag handle — bigger touch target */
.mchat-drag-handle {
  width: 44px; height: 5px;
  border-radius: 3px;
  background: rgba(200,160,80,0.4);
  margin: 12px auto 8px;
  cursor: pointer;
}

/* top row */
.mchat-top-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 4px 16px 14px;
}

.mchat-logo {
  width: 44px; height: 44px;
  border-radius: 13px;
  background: linear-gradient(135deg, var(--cb-gold) 0%, var(--cb-gold-lite) 100%);
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 3px 10px rgba(200,160,80,0.4);
  flex-shrink: 0;
}

.mchat-title-group { flex: 1; min-width: 0; }

.mchat-title {
  margin: 0;
  font-size: 16px; font-weight: 700;
  color: var(--cb-gold-pale);
  line-height: 1.2;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mchat-subtitle {
  margin: 0;
  font-size: 12px; font-weight: 300;
  color: rgba(200,160,80,0.62);
  line-height: 1.3;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

.mchat-online-badge {
  display: flex; align-items: center; gap: 5px;
  font-size: 11px; font-weight: 600;
  color: #6EE7B7;
  border: 1px solid rgba(110,231,183,0.35);
  border-radius: var(--cb-r-pill);
  padding: 5px 10px;
  background: rgba(110,231,183,0.1);
  flex-shrink: 0;
}
.mchat-dot {
  width: 6px; height: 6px;
  border-radius: 50%; background: #6EE7B7;
  animation: mchat-pulse 2s ease-in-out infinite;
}
@keyframes mchat-pulse {
  0%,100% { opacity:1; transform:scale(1); }
  50%      { opacity:.5; transform:scale(.82); }
}

/* close button — 44px touch target */
.mchat-close-btn {
  width: 44px; height: 44px;
  border-radius: 12px;
  border: 1px solid rgba(200,160,80,0.2);
  background: rgba(255,255,255,0.09);
  color: var(--cb-gold-pale);
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; flex-shrink: 0;
  transition: background .15s;
}
.mchat-close-btn:active { background: rgba(200,160,80,0.2); }

/* category chips — 44px min height */
.mchat-cat-row {
  display: flex; gap: 8px;
  overflow-x: auto; padding: 0 16px 14px;
  scrollbar-width: none;
}
.mchat-cat-row::-webkit-scrollbar { display: none; }

.mchat-cat-chip {
  border: 1px solid rgba(200,160,80,0.28);
  background: rgba(255,255,255,0.07);
  color: rgba(245,232,192,0.75);
  border-radius: var(--cb-r-pill);
  padding: 9px 14px;           /* tall for thumb */
  min-height: 38px;
  font-size: 12px; font-weight: 500;
  white-space: nowrap; cursor: pointer;
  display: flex; align-items: center; gap: 5px;
  transition: all .18s; flex-shrink: 0;
}
.mchat-cat-chip.active {
  background: rgba(200,160,80,0.2);
  border-color: rgba(200,160,80,0.65);
  color: var(--cb-gold-lite);
}
.mchat-cat-chip:active {
  background: rgba(200,160,80,0.25);
  transform: scale(0.96);
}

/* shelf */
.mchat-shelf {
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--cb-gold), var(--cb-gold), transparent);
  opacity: .55;
}

/* ── Messages ── */
.mchat-messages {
  flex: 1;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  padding: 16px 14px 10px;
  scroll-padding-bottom: 110px;
  background: var(--cb-cream);
  display: flex; flex-direction: column; gap: 12px;
}
.mchat-messages::-webkit-scrollbar { width: 3px; }
.mchat-messages::-webkit-scrollbar-thumb {
  background: rgba(44,26,14,0.18); border-radius: 2px;
}

/* welcome card */
.mchat-welcome-card {
  background: linear-gradient(135deg, var(--cb-dark) 0%, var(--cb-dark-mid) 100%);
  border: 1px solid rgba(200,160,80,0.2);
  border-radius: 16px;
  padding: 14px 16px;
  display: flex; gap: 13px; align-items: center;
  box-shadow: 0 3px 10px rgba(44,26,14,0.12);
}
.mchat-welcome-icon {
  width: 44px; height: 44px; border-radius: 13px;
  background: rgba(200,160,80,0.15);
  border: 1px solid rgba(200,160,80,0.3);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.mchat-wt {
  margin: 0 0 4px; font-size: 14px; font-weight: 700; color: var(--cb-gold-pale);
  line-height: 1.3;
}
.mchat-ws {
  margin: 0; font-size: 12px; font-weight: 300;
  color: rgba(200,160,80,0.65); line-height: 1.5;
}

/* divider */
.mchat-divider {
  display: flex; align-items: center; gap: 8px;
  font-size: 11px; color: var(--cb-text-muted);
}
.mchat-divider::before, .mchat-divider::after {
  content: ''; flex: 1; height: .5px; background: rgba(44,26,14,0.12);
}

/* rows */
.mchat-row {
  display: flex; align-items: flex-end; gap: 8px;
  animation: mchat-in .2s ease;
}
@keyframes mchat-in {
  from { opacity:0; transform:translateY(7px); }
  to   { opacity:1; transform:none; }
}
.mchat-row.user { justify-content: flex-end; }
.mchat-row.bot  { justify-content: flex-start; }

/* avatar */
.mchat-avatar {
  width: 32px; height: 32px; border-radius: 10px;
  background: linear-gradient(135deg, var(--cb-gold) 0%, var(--cb-gold-lite) 100%);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  box-shadow: 0 2px 7px rgba(200,160,80,0.3);
}

/* bubble column */
.mchat-bubble-col {
  display: flex; flex-direction: column; gap: 3px;
  max-width: min(84%, 38rem);
}

/* bubbles */
.mchat-bubble {
  padding: 11px 14px;
  font-size: 15px; line-height: 1.58;
  word-break: break-word; white-space: pre-wrap;
}
.mchat-bubble.bot {
  background: var(--cb-white);
  color: var(--cb-text);
  border: .5px solid rgba(180,150,90,0.2);
  border-radius: 16px 16px 16px 5px;
  box-shadow: 0 2px 8px rgba(44,26,14,0.07);
}
.mchat-bubble.user {
  background: var(--cb-dark);
  color: var(--cb-gold-pale);
  border-radius: 16px 16px 5px 16px;
  box-shadow: 0 2px 8px rgba(44,26,14,0.18);
}

/* typing */
.mchat-bubble.typing {
  background: var(--cb-white);
  border: .5px solid rgba(180,150,90,0.2);
  border-radius: 16px 16px 16px 5px;
  min-width: 62px;
  padding: 14px 16px;
  box-shadow: 0 2px 8px rgba(44,26,14,0.07);
}
.mchat-dots { display: flex; gap: 5px; align-items: center; }
.mchat-dots span {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--cb-gold); opacity: .38;
  animation: mchat-bop 1.2s infinite ease-in-out;
}
.mchat-dots span:nth-child(2) { animation-delay: .18s; }
.mchat-dots span:nth-child(3) { animation-delay: .36s; }
@keyframes mchat-bop {
  0%,60%,100% { transform:translateY(0); opacity:.38; }
  30%          { transform:translateY(-6px); opacity:1; }
}

/* timestamp */
.mchat-ts { font-size: 11px; color: var(--cb-text-muted); padding: 0 3px; }
.mchat-ts.user { text-align: right; }

/* links/img */
.mchat-bubble.bot a { color: var(--cb-gold); text-decoration: underline; }
.mchat-bubble.bot img { display: block; width: 100%; border-radius: 8px; margin-top: 7px; }

/* ── Input area ── */
.mchat-input-area {
  flex-shrink: 0;
  background: rgba(255,255,255,0.94);
  backdrop-filter: saturate(110%) blur(6px);
  border-top: 1px solid rgba(44,26,14,0.08);
  padding: 10px 12px;           /* ลด padding รอบข้าง */
  padding-bottom: max(14px, env(safe-area-inset-bottom, 0px));
  display: flex; flex-direction: column; gap: 9px;
  width: 100%;
  overflow: hidden;             /* กันล้น */
}

/* hints — 44px touch height */
.mchat-hints {
  display: flex; gap: 7px; overflow-x: auto;
  scrollbar-width: none;
}
.mchat-hints::-webkit-scrollbar { display: none; }

.mchat-hint {
  border: 1px solid rgba(44,26,14,0.18);
  background: var(--cb-cream);
  color: var(--cb-text-mid);
  border-radius: var(--cb-r-pill);
  padding: 8px 14px;
  min-height: 36px;
  font-size: 12px; font-weight: 500;
  white-space: nowrap; cursor: pointer;
  transition: all .15s; flex-shrink: 0;
}
.mchat-hint:active {
  background: var(--cb-dark);
  color: var(--cb-gold-pale);
  border-color: var(--cb-dark);
  transform: scale(0.96);
}
.mchat-hint:disabled { opacity: .4; cursor: not-allowed; }

/* input row — pill shape */
.mchat-input-row {
  display: flex;
  align-items: center;          /* center แทน flex-end */
  gap: 8px;
  background: rgba(250,248,242,0.95);
  border: 1.5px solid rgba(44,26,14,0.14);
  border-radius: 19px;
  padding: 6px 6px 6px 12px;   /* ลด padding ขวาให้แนบปุ่ม */
  transition: border-color .2s;
  min-height: 54px;
  width: 100%;                  /* เต็มความกว้าง */
}
.mchat-input-row:focus-within {
  border-color: rgba(200,160,80,0.55);
  background: var(--cb-white);
  box-shadow: 0 0 0 3px rgba(200,160,80,0.1);
}

.mchat-input {
  flex: 1;
  min-width: 0;                 /* ← สำคัญ: ป้องกัน overflow */
  background: none; border: none; outline: none; resize: none;
  font-size: 16px !important;
  font-family: inherit;
  color: var(--cb-text); line-height: 1.5;
  min-height: 30px; max-height: 110px;
  padding: 2px 0;
}
.mchat-input::placeholder { color: var(--cb-text-muted); }
.mchat-input:disabled { opacity: .5; }

/* send button */
.mchat-send-btn {
  width: 44px; height: 44px;
  border-radius: 50%;
  background: var(--cb-dark); border: none;
  color: var(--cb-gold-pale);
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  flex-shrink: 0;               /* ← ไม่ให้ย่อ */
  box-shadow: 0 3px 10px rgba(44,26,14,0.3);
  transition: transform .12s, box-shadow .12s;
}
.mchat-send-btn:active:not(:disabled) {
  transform: scale(0.93);
  box-shadow: 0 2px 6px rgba(44,26,14,0.2);
}
.mchat-send-btn:disabled { opacity: .35; cursor: not-allowed; box-shadow: none; }

.mchat-spinner { animation: mchat-spin .8s linear infinite; }
@keyframes mchat-spin { to { transform: rotate(360deg); } }

/* ══════════════════════════════════════
   Product Card List (ใน bot bubble)
   ══════════════════════════════════════ */
.mchat-product-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 2px 0;
}

.mchat-product-card {
  display: flex;
  align-items: center;
  gap: 12px;
  background: var(--cb-white);
  border: 1px solid rgba(44,26,14,0.09);
  border-radius: 14px;
  padding: 10px 12px;
  box-shadow: 0 2px 10px rgba(44,26,14,0.07);
  transition: transform .18s, box-shadow .18s;
  cursor: pointer;
  animation: mchat-cardIn .3s cubic-bezier(0.34,1.56,0.64,1) both;
}
.mchat-product-card:nth-child(2) { animation-delay: .06s; }
.mchat-product-card:nth-child(3) { animation-delay: .12s; }
.mchat-product-card:nth-child(4) { animation-delay: .18s; }

@keyframes mchat-cardIn {
  from { opacity: 0; transform: translateY(10px) scale(.97); }
  to   { opacity: 1; transform: none; }
}

.mchat-product-card:active {
  transform: scale(0.975);
  box-shadow: 0 1px 5px rgba(44,26,14,0.1);
}

/* thumbnail */
.mchat-product-thumb {
  width: 56px; height: 66px;
  border-radius: 10px;
  flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
  position: relative;
}
.mchat-product-thumb img {
  width: 100%; height: 100%;
  object-fit: cover;
}
.mchat-product-code {
  font-size: 9px; font-weight: 700;
  color: rgba(255,255,255,0.9);
  text-align: center;
  line-height: 1.2;
  padding: 4px;
}

/* info */
.mchat-product-info {
  flex: 1; min-width: 0;
  display: flex; flex-direction: column; gap: 3px;
}
.mchat-product-title {
  margin: 0;
  font-size: 13px; font-weight: 700;
  color: var(--cb-text);
  line-height: 1.35;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.mchat-product-author {
  margin: 0;
  font-size: 11px; font-weight: 400;
  color: var(--cb-text-muted);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mchat-product-price-row {
  display: flex; align-items: center; gap: 7px; margin-top: 2px;
}
.mchat-product-price {
  font-size: 14px; font-weight: 700;
  color: var(--cb-dark);
}
.mchat-product-original {
  font-size: 11px; font-weight: 400;
  color: var(--cb-text-muted);
  text-decoration: line-through;
}

/* bubble ที่มี product card ไม่ต้องมี padding มาก */
.mchat-bubble.bot:has(.mchat-product-list) {
  padding: 10px 10px;
  background: transparent;
  border: none;
  box-shadow: none;
}

/* ── Input row เพิ่มลูกเล่น focus glow ── */
.mchat-input-row:focus-within {
  border-color: rgba(200,160,80,0.55);
  background: var(--cb-white);
  box-shadow: 0 0 0 3px rgba(200,160,80,0.1);
}

/* send btn pulse เมื่อพิมพ์ */
.mchat-send-btn:not(:disabled) {
  background: linear-gradient(135deg, var(--cb-dark) 0%, var(--cb-dark-mid) 100%);
}
.mchat-send-btn:not(:disabled):hover {
  transform: scale(1.08);
  box-shadow: 0 5px 16px rgba(44,26,14,0.38);
}

/* header shimmer เพิ่มความสวย */
.mchat-ai-header::after {
  content: '';
  position: absolute;
  top: 0; left: -60%;
  width: 40%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(200,160,80,0.06), transparent);
  animation: mchat-shimmer 4s ease-in-out infinite;
  pointer-events: none;
}
.mchat-ai-header { position: relative; overflow: hidden; }
@keyframes mchat-shimmer {
  0%   { left: -60%; }
  50%  { left: 120%; }
  100% { left: 120%; }
}

/* bubble bot text link color */
.mchat-bubble.bot a { color: var(--cb-gold); font-weight: 600; }

/* ── Responsive ── */
@media (max-width: 380px) {
  .mchat-ai-panel { height: min(94dvh, calc((var(--mchat-vh) * 100) - env(safe-area-inset-top, 0px))); border-radius: 16px 16px 0 0; }
  .mchat-top-row { padding: 2px 12px 10px; gap: 8px; }
  .mchat-logo { width: 40px; height: 40px; border-radius: 11px; }
  .mchat-cat-row { padding: 0 12px 12px; gap: 6px; }
  .mchat-messages { padding: 12px 12px 8px; }
  .mchat-input-area { padding: 8px 10px; padding-bottom: max(10px, env(safe-area-inset-bottom, 0px)); }
  .mchat-input-row { padding: 5px 5px 5px 10px; gap: 6px; }
  .mchat-send-btn { width: 42px; height: 42px; }
}

@media (max-height: 640px) {
  .mchat-ai-panel {
    height: calc((var(--mchat-vh) * 100) - env(safe-area-inset-top, 0px));
    border-radius: 0;
  }
  .mchat-ai-header { border-radius: 0; }
  .mchat-welcome-card { padding: 10px 12px; }
  .mchat-messages { gap: 8px; padding: 10px 12px 6px; }
}

@media (min-width: 480px) and (max-width: 991px) {
  .mchat-ai-panel {
    left: 50%; right: auto;
    transform: translateX(-50%) translateY(100%);
    width: min(480px, 96vw);
    height: min(88dvh, calc((var(--mchat-vh) * 100) - env(safe-area-inset-top, 0px)));
    border-radius: 20px 20px 0 0;
    bottom: 0;
  }
  .mchat-ai-panel.show {
    transform: translateX(-50%) translateY(0);
  }
  .mchat-ai-header { border-radius: 20px 20px 0 0; }
}

@media (min-width: 992px) {
  .mchat-ai-overlay,
  .mchat-ai-panel { display: none !important; }
}

@media (prefers-reduced-motion: reduce) {
  .mchat-ai-panel,
  .mchat-dot { animation: none; transition: none; }
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vcHVibGljL2Nzcy9mb250LmNzcyIsIndlYnBhY2s6Ly9fTl9FLy4vcHVibGljL2Nzcy9uOG4vbjhuLmNzcyIsIndlYnBhY2s6Ly9fTl9FLy4vcHVibGljL2Nzcy9uOG4vbW9iaWxlX244bi5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFVBQVU7QUFDVjtFQUNFLHFCQUFxQjtFQUNyQixtQkFBbUI7RUFDbkIsaUJBQWlCO0VBQ2pCLG1CQUFtQjtFQUNuQiw0SUFBNEk7RUFDNUksZ0RBQWdEO0NBQ2pEO0FBQ0QsZ0JBQWdCO0FBQ2hCO0VBQ0UscUJBQXFCO0VBQ3JCLG1CQUFtQjtFQUNuQixpQkFBaUI7RUFDakIsbUJBQW1CO0VBQ25CLDRJQUE0STtFQUM1SSw2REFBNkQ7Q0FDOUQ7QUFDRCxjQUFjO0FBQ2Q7RUFDRSwwQkFBMEI7RUFDMUIsbUJBQW1CO0VBQ25CLGlCQUFpQjtFQUNqQixtQkFBbUI7RUFDbkIsb0tBQW9LO0VBQ3BLLDZEQUE2RDtDQUM5RDtBQUNELGVBQWU7QUFDZjtFQUNFLDBCQUEwQjtFQUMxQixtQkFBbUI7RUFDbkIsaUJBQWlCO0VBQ2pCLG1CQUFtQjtFQUNuQixvS0FBb0s7RUFDcEssb0hBQW9IO0NBQ3JIO0FBQ0QsV0FBVztBQUNYO0VBQ0UsMEJBQTBCO0VBQzFCLG1CQUFtQjtFQUNuQixpQkFBaUI7RUFDakIsbUJBQW1CO0VBQ25CLGtLQUFrSztFQUNsSywwS0FBMEs7Q0FDM0s7O0FBRUQsVUFBVTtBQUNWO0VBQ0UscUJBQXFCO0VBQ3JCLG1CQUFtQjtFQUNuQixpQkFBaUI7RUFDakIsbUJBQW1CO0VBQ25CLDhJQUE4STtFQUM5SSxnREFBZ0Q7Q0FDakQ7QUFDRCxnQkFBZ0I7QUFDaEI7RUFDRSxxQkFBcUI7RUFDckIsbUJBQW1CO0VBQ25CLGlCQUFpQjtFQUNqQixtQkFBbUI7RUFDbkIsOElBQThJO0VBQzlJLDZEQUE2RDtDQUM5RDs7QUFFRCxjQUFjO0FBQ2Q7RUFDRSwwQkFBMEI7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QkFBeUIsRUFBRTtDQUM5Qzs7QUFFRDtFQUNFO2VBQ2EsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUiLCJmaWxlIjoic3RhdGljL2Nzcy9zdHlsZXMuY2h1bmsuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogdGhhaSAqL1xyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogJ0thbml0JztcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICBmb250LWRpc3BsYXk6IHN3YXA7XHJcbiAgc3JjOiBsb2NhbCgnS2FuaXQgUmVndWxhcicpLCBsb2NhbCgnS2FuaXQtUmVndWxhcicpLCB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2thbml0L3Y1L25LS1otR282RzV0WGNyYUJHd0NZZEEud29mZjIpIGZvcm1hdCgnd29mZjInKTtcclxuICB1bmljb2RlLXJhbmdlOiBVKzBFMDEtMEU1QiwgVSsyMDBDLTIwMEQsIFUrMjVDQztcclxufVxyXG4vKiB2aWV0bmFtZXNlICovXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiAnS2FuaXQnO1xyXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxuICBmb250LXdlaWdodDogNDAwO1xyXG4gIGZvbnQtZGlzcGxheTogc3dhcDtcclxuICBzcmM6IGxvY2FsKCdLYW5pdCBSZWd1bGFyJyksIGxvY2FsKCdLYW5pdC1SZWd1bGFyJyksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mva2FuaXQvdjUvbktLWi1HbzZHNXRYY3JhYUd3Q1lkQS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xyXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcclxufVxyXG4vKiBjeXJpbGxpYyAqL1xyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnO1xyXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxuICBmb250LXdlaWdodDogNDAwO1xyXG4gIGZvbnQtZGlzcGxheTogc3dhcDtcclxuICBzcmM6IGxvY2FsKCdNb250c2VycmF0IE1lZGl1bScpLCBsb2NhbCgnTW9udHNlcnJhdC1NZWRpdW0nKSwgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YxNC9KVFVSaklnMV9pNnQ4a0NIS200NV9acEMzZzNEX3U1MC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xyXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjtcclxufVxyXG4vKiBsYXRpbi1leHQgKi9cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JztcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICBmb250LWRpc3BsYXk6IHN3YXA7XHJcbiAgc3JjOiBsb2NhbCgnTW9udHNlcnJhdCBNZWRpdW0nKSwgbG9jYWwoJ01vbnRzZXJyYXQtTWVkaXVtJyksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MTQvSlRVUmpJZzFfaTZ0OGtDSEttNDVfWnBDM2dmRF91NTAud29mZjIpIGZvcm1hdCgnd29mZjInKTtcclxuICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSswMjU5LCBVKzFFMDAtMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGO1xyXG59XHJcbi8qIGxhdGluICovXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7XHJcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xyXG4gIHNyYzogbG9jYWwoJ01vbnRzZXJyYXQgTWVkaXVtJyksIGxvY2FsKCdNb250c2VycmF0LU1lZGl1bScpLCB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjE0L0pUVVJqSWcxX2k2dDhrQ0hLbTQ1X1pwQzNnbkRfZy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xyXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7XHJcbn1cclxuXHJcbi8qIHRoYWkgKi9cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6ICdLYW5pdCc7XHJcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xyXG4gIHNyYzogbG9jYWwoJ0thbml0IE1lZGl1bScpLCBsb2NhbCgnS2FuaXQtTWVkaXVtJyksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mva2FuaXQvdjUvbktLVS1HbzZHNXRYY3I1bU9CV3pWYUY1TlEud29mZjIpIGZvcm1hdCgnd29mZjInKTtcclxuICB1bmljb2RlLXJhbmdlOiBVKzBFMDEtMEU1QiwgVSsyMDBDLTIwMEQsIFUrMjVDQztcclxufVxyXG4vKiB2aWV0bmFtZXNlICovXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiAnS2FuaXQnO1xyXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG4gIGZvbnQtZGlzcGxheTogc3dhcDtcclxuICBzcmM6IGxvY2FsKCdLYW5pdCBNZWRpdW0nKSwgbG9jYWwoJ0thbml0LU1lZGl1bScpLCB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2thbml0L3Y1L25LS1UtR282RzV0WGNyNW1PQldvVmFGNU5RLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XHJcbiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzFFQTAtMUVGOSwgVSsyMEFCO1xyXG59XHJcblxyXG4vKiBjeXJpbGxpYyAqL1xyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnO1xyXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG4gIGZvbnQtZGlzcGxheTogc3dhcDtcclxuICBzcmM6IGxvY2FsKCdNb250c2VycmF0IFNlbWlCb2xkJyksIGxvY2FsKCdNb250c2VycmF0LVNlbWlCb2xkJyksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvbW9udHNlcnJhdC92MTQvSlRVUmpJZzFfaTZ0OGtDSEttNDVfYlpGM2czRF91NTAud29mZjIpIGZvcm1hdCgnd29mZjInKTtcclxuICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7XHJcbn1cclxuLyogbGF0aW4tZXh0ICovXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7XHJcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xyXG4gIHNyYzogbG9jYWwoJ01vbnRzZXJyYXQgU2VtaUJvbGQnKSwgbG9jYWwoJ01vbnRzZXJyYXQtU2VtaUJvbGQnKSwgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YxNC9KVFVSaklnMV9pNnQ4a0NIS200NV9iWkYzZ2ZEX3U1MC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xyXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XHJcbn1cclxuLyogbGF0aW4gKi9cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JztcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBmb250LWRpc3BsYXk6IHN3YXA7XHJcbiAgc3JjOiBsb2NhbCgnTW9udHNlcnJhdCBTZW1pQm9sZCcpLCBsb2NhbCgnTW9udHNlcnJhdC1TZW1pQm9sZCcpLCB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL21vbnRzZXJyYXQvdjE0L0pUVVJqSWcxX2k2dDhrQ0hLbTQ1X2JaRjNnbkRfZy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xyXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIxMjIsIFUrMjE5MSwgVSsyMTkzLCBVKzIyMTIsIFUrMjIxNSwgVStGRUZGLCBVK0ZGRkQ7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcblxyXG4vKiB0aGFpICovXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiAnS2FuaXQnO1xyXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGZvbnQtZGlzcGxheTogc3dhcDtcclxuICBzcmM6IGxvY2FsKCdLYW5pdCBTZW1pQm9sZCcpLCBsb2NhbCgnS2FuaXQtU2VtaUJvbGQnKSwgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9rYW5pdC92NS9uS0tVLUdvNkc1dFhjcjVLUHhXelZhRjVOUS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xyXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMEUwMS0wRTVCLCBVKzIwMEMtMjAwRCwgVSsyNUNDO1xyXG59XHJcbi8qIHZpZXRuYW1lc2UgKi9cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6ICdLYW5pdCc7XHJcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xyXG4gIHNyYzogbG9jYWwoJ0thbml0IFNlbWlCb2xkJyksIGxvY2FsKCdLYW5pdC1TZW1pQm9sZCcpLCB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2thbml0L3Y1L25LS1UtR282RzV0WGNyNUtQeFdvVmFGNU5RLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XHJcbiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMDExMC0wMTExLCBVKzFFQTAtMUVGOSwgVSsyMEFCO1xyXG59XHJcblxyXG5cclxuLyogY3lyaWxsaWMgKi9cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JztcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBmb250LWRpc3BsYXk6IHN3YXA7XHJcbiAgc3JjOiBsb2NhbCgnTW9udHNlcnJhdCBCb2xkJyksIGxvY2FsKCdNb250c2VycmF0LUJvbGQnKSwgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YxNC9KVFVSaklnMV9pNnQ4a0NIS200NV9kSkUzZzNEX3U1MC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xyXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjtcclxufVxyXG4vKiBsYXRpbi1leHQgKi9cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JztcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBmb250LWRpc3BsYXk6IHN3YXA7XHJcbiAgc3JjOiBsb2NhbCgnTW9udHNlcnJhdCBCb2xkJyksIGxvY2FsKCdNb250c2VycmF0LUJvbGQnKSwgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YxNC9KVFVSaklnMV9pNnQ4a0NIS200NV9kSkUzZ2ZEX3U1MC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xyXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUrMUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7XHJcbn1cclxuLyogbGF0aW4gKi9cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0JztcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBmb250LWRpc3BsYXk6IHN3YXA7XHJcbiAgc3JjOiBsb2NhbCgnTW9udHNlcnJhdCBCb2xkJyksIGxvY2FsKCdNb250c2VycmF0LUJvbGQnKSwgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9tb250c2VycmF0L3YxNC9KVFVSaklnMV9pNnQ4a0NIS200NV9kSkUzZ25EX2cud29mZjIpIGZvcm1hdCgnd29mZjInKTtcclxuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogJ0thbml0JztcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICBmb250LWRpc3BsYXk6IHN3YXA7XHJcbiAgc3JjOiBsb2NhbCgnS2FuaXQgQm9sZCcpLCBsb2NhbCgnS2FuaXQtQm9sZCcpLCB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2thbml0L3Y1L25LS1UtR282RzV0WGNyNHVQaFd6VmFGck5sSnpJdTQud29mZjIpIGZvcm1hdCgnd29mZjInKTtcclxuICB1bmljb2RlLXJhbmdlOiBVKzBFMDEtMEU1QiwgVSsyMDBDLTIwMEQsIFUrMjVDQztcclxufVxyXG5cclxuLyogdGhhaSAqL1xyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogJ0thbml0LWFsbCc7XHJcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xyXG4gIHNyYzogbG9jYWwoJ0thbml0IFJlZ3VsYXInKSwgbG9jYWwoJ0thbml0LVJlZ3VsYXInKSwgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9rYW5pdC92NS9uS0taLUdvNkc1dFhjcmFCR3dDS2Q2eEJERnMud29mZjIpIGZvcm1hdCgnd29mZjInKTtcclxuICB1bmljb2RlLXJhbmdlOiBVKzBFMDEtMEU1QiwgVSsyMDBDLTIwMEQsIFUrMjVDQztcclxufVxyXG4vKiB2aWV0bmFtZXNlICovXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiAnS2FuaXQtYWxsJztcclxuICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICBmb250LWRpc3BsYXk6IHN3YXA7XHJcbiAgc3JjOiBsb2NhbCgnS2FuaXQgUmVndWxhcicpLCBsb2NhbCgnS2FuaXQtUmVndWxhcicpLCB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL2thbml0L3Y1L25LS1otR282RzV0WGNyYWFHd0NLZDZ4QkRGcy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xyXG4gIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjtcclxufVxyXG4vKiBsYXRpbi1leHQgKi9cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6ICdLYW5pdC1hbGwnO1xyXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxuICBmb250LXdlaWdodDogNDAwO1xyXG4gIGZvbnQtZGlzcGxheTogc3dhcDtcclxuICBzcmM6IGxvY2FsKCdLYW5pdCBSZWd1bGFyJyksIGxvY2FsKCdLYW5pdC1SZWd1bGFyJyksIHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3Mva2FuaXQvdjUvbktLWi1HbzZHNXRYY3JhYkd3Q0tkNnhCREZzLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XHJcbiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMDI1OSwgVSsxRTAwLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjtcclxufVxyXG4vKiBsYXRpbiAqL1xyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogJ0thbml0LWFsbCc7XHJcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgZm9udC1kaXNwbGF5OiBzd2FwO1xyXG4gIHNyYzogbG9jYWwoJ0thbml0IFJlZ3VsYXInKSwgbG9jYWwoJ0thbml0LVJlZ3VsYXInKSwgdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9rYW5pdC92NS9uS0taLUdvNkc1dFhjcmFWR3dDS2Q2eEIud29mZjIpIGZvcm1hdCgnd29mZjInKTtcclxuICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xyXG59IiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIOC4qOC4ueC4meC4ouC5jOC4q+C4meC4seC4h+C4quC4t+C4reC4iOC4uOC4rOC4suC4ryDigJQgV2FybSBEYXJrIEJvb2tzdG9yZSBUaGVtZVxyXG4gICBQcmltYXJ5ICA6ICMyQzFBMEUgKGRhcmsgYnJvd24pXHJcbiAgIEFjY2VudCAgIDogI0M4QTA2MCAoZ29sZClcclxuICAgU3VyZmFjZSAgOiAjRkFGOEYyICh3YXJtIGNyZWFtKVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVNhcmFidW46d2dodEAzMDA7NDAwOzUwMDs2MDAmZmFtaWx5PVBsYXlmYWlyK0Rpc3BsYXk6d2dodEA2MDA7NzAwJmRpc3BsYXk9c3dhcCcpO1xyXG5cclxuLyog4pSA4pSAIFZhcmlhYmxlcyDilIDilIAgKi9cclxuOnJvb3Qge1xyXG4gIC0tY2ItZGFyazogICAgICAgICMyQzFBMEU7XHJcbiAgLS1jYi1kYXJrLW1pZDogICAgIzNEMjQxMDtcclxuICAtLWNiLWRhcmstbGl0ZTogICAjNEEyQzEyO1xyXG4gIC0tY2ItZ29sZDogICAgICAgICNDOEEwNjA7XHJcbiAgLS1jYi1nb2xkLWxpdGU6ICAgI0U4QzA3MDtcclxuICAtLWNiLWdvbGQtcGFsZTogICAjRjVFOEMwO1xyXG4gIC0tY2ItZ29sZC1kaW06ICAgIHJnYmEoMjAwLDE2MCw4MCwwLjU1KTtcclxuICAtLWNiLWNyZWFtOiAgICAgICAjRkFGOEYyO1xyXG4gIC0tY2ItY3JlYW0tZGFyazogICNGMEVBRDg7XHJcbiAgLS1jYi13aGl0ZTogICAgICAgI0ZGRkZGRjtcclxuICAtLWNiLXRleHQ6ICAgICAgICAjMkMxQTBFO1xyXG4gIC0tY2ItdGV4dC1taWQ6ICAgICM1QzNBMUU7XHJcbiAgLS1jYi10ZXh0LW11dGVkOiAgI0EwNzg0ODtcclxuICAtLWNiLWJvcmRlcjogICAgICByZ2JhKDIwMCwxNjAsODAsMC4yMik7XHJcbiAgLS1jYi1zaGFkb3c6ICAgICAgcmdiYSg0NCwyNiwxNCwwLjE4KTtcclxuICAtLWNiLXItbGc6ICAgICAgICAyMHB4O1xyXG4gIC0tY2Itci1tZDogICAgICAgIDE0cHg7XHJcbiAgLS1jYi1yLXBpbGw6ICAgICAgOTk5cHg7XHJcbn1cclxuXHJcbi8qIOKUgOKUgCBSZXNldCDilIDilIAgKi9cclxuI2NodWxhLWNoYXRib3Qtd3JhcHBlciAqLFxyXG4jY2h1bGEtY2hhdGJvdC1ib3ggKiB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBmb250LWZhbWlseTogJ1NhcmFidW4nLCAnS2FuaXQnLCAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG4vKiDilIDilIAgV3JhcHBlciDilIDilIAgKi9cclxuI2NodWxhLWNoYXRib3Qtd3JhcHBlciB7XHJcbiAgei1pbmRleDogMTIwMDA7XHJcbn1cclxuLmZhZGUtaW4gIHsgb3BhY2l0eTogMSAhaW1wb3J0YW50OyB9XHJcbi5mYWRlLW91dCB7IG9wYWNpdHk6IDAgIWltcG9ydGFudDsgfVxyXG5cclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIENIQVRCT1ggQ09OVEFJTkVSXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG4jY2h1bGEtY2hhdGJvdC1ib3gge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICBib3R0b206IDI0cHg7XHJcbiAgcmlnaHQ6IDI0cHg7XHJcbiAgd2lkdGg6IDM3MHB4O1xyXG4gIGhlaWdodDogNjIwcHg7XHJcbiAgYmFja2dyb3VuZDogdmFyKC0tY2ItY3JlYW0pO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNiLWJvcmRlcik7XHJcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2Itci1sZyk7XHJcbiAgYm94LXNoYWRvdzogMCAyNHB4IDU2cHggdmFyKC0tY2Itc2hhZG93KSwgMCA0cHggMTJweCByZ2JhKDQ0LDI2LDE0LDAuMSk7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB6LWluZGV4OiA5OTk4O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBhbmltYXRpb246IGNiLXBvcEluIDAuMjhzIGN1YmljLWJlemllcigwLjM0LDEuNTYsMC42NCwxKTtcclxufVxyXG5cclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIEhFQURFUlxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuLmNodWxhLWhlYWRlcixcclxuLmNodWxhLWhlYWRlci1tb2JpbGVsaWtlIHtcclxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jYi1kYXJrKTtcclxuICBwYWRkaW5nOiAwO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIGJvcmRlci1ib3R0b206IG5vbmU7XHJcbiAgbWluLWhlaWdodDogdW5zZXQ7XHJcbiAgYm9yZGVyLXJhZGl1czogMDtcclxuICBib3gtc2hhZG93OiBub25lO1xyXG59XHJcblxyXG4vKiBnbG93IG9yYiAqL1xyXG4uY2h1bGEtaGVhZGVyOjpiZWZvcmUge1xyXG4gIGNvbnRlbnQ6ICcnO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IC0zMHB4OyByaWdodDogLTIwcHg7XHJcbiAgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKDIwMCwxNjAsODAsMC4xNSkgMCUsIHRyYW5zcGFyZW50IDcwJSk7XHJcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbn1cclxuXHJcbi8qIHRvcCByb3c6IGxvZ28gKyB0aXRsZSArIG9ubGluZSBiYWRnZSAqL1xyXG4uaGVhZGVyLXRvcC1yb3cge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDEycHg7XHJcbiAgcGFkZGluZzogMTZweCAxOHB4IDEwcHg7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHotaW5kZXg6IDE7XHJcbn1cclxuXHJcbi8qIGxvZ28gYm94ICovXHJcbi5jYi1sb2dvLWJveCB7XHJcbiAgd2lkdGg6IDQ2cHg7IGhlaWdodDogNDZweDtcclxuICBib3JkZXItcmFkaXVzOiAxNHB4O1xyXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNiLWdvbGQpIDAlLCB2YXIoLS1jYi1nb2xkLWxpdGUpIDEwMCUpO1xyXG4gIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG4gIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgyMDAsMTYwLDgwLDAuMzUpO1xyXG59XHJcblxyXG4vKiB0aXRsZSBncm91cCAqL1xyXG4uY2h1bGEtdGl0bGUtZ3JvdXAge1xyXG4gIGZsZXg6IDE7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogMXB4O1xyXG59XHJcbi5jaHVsYS10aXRsZS1tYWluIHtcclxuICBtYXJnaW46IDA7XHJcbiAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7XHJcbiAgZm9udC1zaXplOiAxNXB4O1xyXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgY29sb3I6IHZhcigtLWNiLWdvbGQtcGFsZSk7XHJcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMTVweDtcclxuICBsaW5lLWhlaWdodDogMS4yO1xyXG59XHJcbi5jaHVsYS10aXRsZS1zdWIge1xyXG4gIG1hcmdpbjogMDtcclxuICBmb250LXNpemU6IDEwLjVweDtcclxuICBjb2xvcjogcmdiYSgyMDAsMTYwLDgwLDAuNTUpO1xyXG4gIGZvbnQtd2VpZ2h0OiAzMDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuMztcclxufVxyXG5cclxuLyogb25saW5lIGJhZGdlICovXHJcbi5jYi1vbmxpbmUtYmFkZ2Uge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDVweDtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDExMCwyMzEsMTgzLDAuMTIpO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTEwLDIzMSwxODMsMC4zNSk7XHJcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2Itci1waWxsKTtcclxuICBwYWRkaW5nOiA0cHggMTBweDtcclxuICBmb250LXNpemU6IDEwLjVweDtcclxuICBjb2xvcjogIzZFRTdCNztcclxuICBmb250LXdlaWdodDogNTAwO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgZmxleC1zaHJpbms6IDA7XHJcbn1cclxuLmNiLW9ubGluZS1iYWRnZTo6YmVmb3JlIHtcclxuICBjb250ZW50OiAnJztcclxuICB3aWR0aDogNnB4OyBoZWlnaHQ6IDZweDtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgYmFja2dyb3VuZDogIzZFRTdCNztcclxuICBib3gtc2hhZG93OiAwIDAgNXB4ICM2RUU3Qjc7XHJcbn1cclxuXHJcbi8qIGhlYWRlciBhY3Rpb25zIChjbG9zZSBidG4pICovXHJcbi5jaHVsYS1oZWFkZXItYWN0aW9ucyB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogMTRweDsgcmlnaHQ6IDE0cHg7XHJcbiAgei1pbmRleDogMjtcclxuICBkaXNwbGF5OiBub25lOyAvKiBjbG9zZSBidG4gaGlkZGVuIOKAlCBzaWRlPWZhbHNlIHVzZXMgY2xpY2stb3V0c2lkZSAqL1xyXG59XHJcbi5jaHVsYS1vcGVuLnNpZGUtcGFuZWwgLmNodWxhLWhlYWRlci1hY3Rpb25zIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG59XHJcbi5jaHVsYS1jbG9zZS1idG4ge1xyXG4gIHdpZHRoOiAyOHB4OyBoZWlnaHQ6IDI4cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wOCk7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMDAsMTYwLDgwLDAuMik7XHJcbiAgY29sb3I6IHZhcigtLWNiLWdvbGQtcGFsZSk7XHJcbiAgZm9udC1zaXplOiAxN3B4OyBmb250LXdlaWdodDogNzAwO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzO1xyXG59XHJcbi5jaHVsYS1jbG9zZS1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDIwMCwxNjAsODAsMC4yKTsgfVxyXG5cclxuLyogY2F0ZWdvcnkgY2hpcHMgcm93ICovXHJcbi5oZWFkZXItY2F0LXJvdyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6IDdweDtcclxuICBwYWRkaW5nOiAwIDE2cHggMTRweDtcclxuICBvdmVyZmxvdy14OiBhdXRvO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogMTtcclxufVxyXG4uaGVhZGVyLWNhdC1yb3c6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTogbm9uZTsgfVxyXG5cclxuLmNiLWNhdC1jaGlwIHtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMDcpO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjAwLDE2MCw4MCwwLjI1KTtcclxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1jYi1yLXBpbGwpO1xyXG4gIHBhZGRpbmc6IDVweCAxMnB4O1xyXG4gIGZvbnQtc2l6ZTogMTFweDtcclxuICBjb2xvcjogcmdiYSgyNDUsMjMyLDE5MiwwLjcpO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGZvbnQtZmFtaWx5OiAnU2FyYWJ1bicsIHNhbnMtc2VyaWY7XHJcbiAgdHJhbnNpdGlvbjogYWxsIDAuMTVzO1xyXG4gIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNHB4O1xyXG59XHJcbi5jYi1jYXQtY2hpcC5hY3RpdmUsXHJcbi5jYi1jYXQtY2hpcDpob3ZlciB7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgyMDAsMTYwLDgwLDAuMik7XHJcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDIwMCwxNjAsODAsMC42KTtcclxuICBjb2xvcjogI0U4Qzg3ODtcclxufVxyXG5cclxuLyogZ29sZCBzaGVsZiBkaXZpZGVyIGF0IGJvdHRvbSBvZiBoZWFkZXIgKi9cclxuLmhlYWRlci1zaGVsZiB7XHJcbiAgaGVpZ2h0OiAycHg7XHJcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgdmFyKC0tY2ItZ29sZCksIHZhcigtLWNiLWdvbGQpLCB0cmFuc3BhcmVudCk7XHJcbiAgb3BhY2l0eTogMC42O1xyXG59XHJcblxyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgTUVTU0FHRVMgQVJFQVxyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuLmNodWxhLW1lc3NhZ2VzIHtcclxuICBmbGV4OiAxO1xyXG4gIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgcGFkZGluZzogMTZweCAxNHB4IDEwcHg7XHJcbiAgYmFja2dyb3VuZDogdmFyKC0tY2ItY3JlYW0pO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6IDEycHg7XHJcbiAgY29sb3I6IHZhcigtLWNiLXRleHQpO1xyXG59XHJcbi5jaHVsYS1tZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXIgeyB3aWR0aDogM3B4OyB9XHJcbi5jaHVsYS1tZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoNDQsMjYsMTQsMC4yKTtcclxuICBib3JkZXItcmFkaXVzOiAycHg7XHJcbn1cclxuXHJcbi8qIHdlbGNvbWUgYmFubmVyICovXHJcbi5jYi13ZWxjb21lLWNhcmQge1xyXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNiLWRhcmspIDAlLCB2YXIoLS1jYi1kYXJrLW1pZCkgMTAwJSk7XHJcbiAgYm9yZGVyLXJhZGl1czogMTZweDtcclxuICBwYWRkaW5nOiAxNHB4IDE2cHg7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6IDEzcHg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIwMCwxNjAsODAsMC4yKTtcclxuICBtYXJnaW4tYm90dG9tOiAycHg7XHJcbn1cclxuLmNiLXdlbGNvbWUtaWNvbiB7XHJcbiAgd2lkdGg6IDQ2cHg7IGhlaWdodDogNDZweDtcclxuICBib3JkZXItcmFkaXVzOiAxM3B4O1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjAwLDE2MCw4MCwwLjE0KTtcclxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIwMCwxNjAsODAsMC4yOCk7XHJcbiAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgZmxleC1zaHJpbms6IDA7XHJcbn1cclxuLmNiLXdlbGNvbWUtdGV4dCAud3Qge1xyXG4gIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmO1xyXG4gIGZvbnQtc2l6ZTogMTNweDtcclxuICBjb2xvcjogdmFyKC0tY2ItZ29sZC1wYWxlKTtcclxuICBtYXJnaW46IDAgMCAzcHg7XHJcbn1cclxuLmNiLXdlbGNvbWUtdGV4dCAud3Mge1xyXG4gIGZvbnQtc2l6ZTogMTEuNXB4O1xyXG4gIGNvbG9yOiByZ2JhKDIwMCwxNjAsODAsMC42KTtcclxuICBmb250LXdlaWdodDogMzAwO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4vKiBkYXRlIGRpdmlkZXIgKi9cclxuLmNiLWRpdmlkZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4O1xyXG4gIGZvbnQtc2l6ZTogMTAuNXB4OyBjb2xvcjogdmFyKC0tY2ItdGV4dC1tdXRlZCk7XHJcbn1cclxuLmNiLWRpdmlkZXI6OmJlZm9yZSwgLmNiLWRpdmlkZXI6OmFmdGVyIHtcclxuICBjb250ZW50OiAnJzsgZmxleDogMTtcclxuICBoZWlnaHQ6IDAuNXB4O1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoNDQsMjYsMTQsMC4xMik7XHJcbn1cclxuXHJcbi8qIOKUgOKUgCBCdWJibGUgcm93cyDilIDilIAgKi9cclxuLmJ1YmJsZSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAgZ2FwOiA4cHg7XHJcbiAgYW5pbWF0aW9uOiBjYi1idWJibGVJbiAwLjI1cyBlYXNlO1xyXG59XHJcbi5idWJibGUuYm90ICB7IGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7IGZsZXgtZGlyZWN0aW9uOiByb3c7IH1cclxuLmJ1YmJsZS51c2VyIHsgYWxpZ24tc2VsZjogZmxleC1lbmQ7ICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOyB9XHJcblxyXG4vKiBib3QgYXZhdGFyICovXHJcbi5idWJibGUgLmF2YXRhci5ib3QtYXZhdGFyIHtcclxuICB3aWR0aDogMzJweDsgaGVpZ2h0OiAzMnB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICBvYmplY3QtZml0OiBjb3ZlcjtcclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jYi1nb2xkKSAwJSwgdmFyKC0tY2ItZ29sZC1saXRlKSAxMDAlKTtcclxuICBib3JkZXI6IDEuNXB4IHNvbGlkIHJnYmEoMjAwLDE2MCw4MCwwLjQ1KTtcclxuICBmbGV4LXNocmluazogMDtcclxuICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcclxufVxyXG4uYnViYmxlIC5hdmF0YXIudXNlci1hdmF0YXIgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cclxuXHJcbi8qIOKUgOKUgCBCb3QgYnViYmxlIOKUgOKUgCAqL1xyXG4uYnViYmxlLmJvdCAudGV4dCB7XHJcbiAgYmFja2dyb3VuZDogdmFyKC0tY2Itd2hpdGUpO1xyXG4gIGNvbG9yOiB2YXIoLS1jYi10ZXh0KTtcclxuICBib3JkZXI6IDAuNXB4IHNvbGlkIHJnYmEoMTgwLDE1MCw5MCwwLjE4KTtcclxuICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSg0NCwyNiwxNCwwLjA3KTtcclxuICBwYWRkaW5nOiAxMXB4IDE1cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2Itci1tZCk7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4O1xyXG4gIGZvbnQtc2l6ZTogMTNweDtcclxuICBmb250LXdlaWdodDogNDAwO1xyXG4gIG1heC13aWR0aDogMjM1cHg7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNTU7XHJcbn1cclxuXHJcbi8qIOKUgOKUgCBVc2VyIGJ1YmJsZSDilIDilIAgKi9cclxuLmJ1YmJsZS51c2VyIC50ZXh0IHtcclxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jYi1kYXJrKTtcclxuICBjb2xvcjogdmFyKC0tY2ItZ29sZC1wYWxlKTtcclxuICBwYWRkaW5nOiAxMXB4IDE1cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2Itci1tZCk7XHJcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDVweDtcclxuICBmb250LXNpemU6IDEzcHg7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICBtYXgtd2lkdGg6IDIzNXB4O1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjU1O1xyXG59XHJcblxyXG4vKiB0aW1lc3RhbXAgKi9cclxuLmNiLXRzIHtcclxuICBmb250LXNpemU6IDEwcHg7XHJcbiAgY29sb3I6IHZhcigtLWNiLXRleHQtbXV0ZWQpO1xyXG4gIG1hcmdpbi10b3A6IDRweDtcclxuICBwYWRkaW5nOiAwIDJweDtcclxufVxyXG4uYnViYmxlLnVzZXIgLmNiLXRzIHsgdGV4dC1hbGlnbjogcmlnaHQ7IH1cclxuXHJcbi8qIOKUgOKUgCBUeXBpbmcgYnViYmxlIOKUgOKUgCAqL1xyXG4uYnViYmxlLnR5cGluZyAudGV4dCB7XHJcbiAgYmFja2dyb3VuZDogdmFyKC0tY2Itd2hpdGUpO1xyXG4gIGJvcmRlcjogMC41cHggc29saWQgcmdiYSgxODAsMTUwLDkwLDAuMTgpO1xyXG4gIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDQ0LDI2LDE0LDAuMDcpO1xyXG4gIHBhZGRpbmc6IDExcHggMTVweDtcclxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1jYi1yLW1kKTtcclxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7XHJcbiAgbWluLXdpZHRoOiA1NnB4O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxufVxyXG5cclxuLyogdHlwaW5nIGRvdHMgKi9cclxuLnR5cGluZy1pbmRpY2F0b3IsXHJcbi5idWJibGUgLnR5cGluZy1pbmRpY2F0b3IsXHJcbi5jaGF0LWxvYWRpbmctcm93IC50eXBpbmctaW5kaWNhdG9yIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogNXB4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuLnR5cGluZy1pbmRpY2F0b3Igc3BhbixcclxuLmJ1YmJsZSAudHlwaW5nLWluZGljYXRvciBzcGFuLFxyXG4uY2hhdC1sb2FkaW5nLXJvdyAudHlwaW5nLWluZGljYXRvciBzcGFuIHtcclxuICB3aWR0aDogN3B4OyBoZWlnaHQ6IDdweDtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgYmFja2dyb3VuZDogdmFyKC0tY2ItZ29sZCk7XHJcbiAgb3BhY2l0eTogMC4zNTtcclxuICBhbmltYXRpb246IGNiLWJvcCAxLjJzIGluZmluaXRlIGVhc2UtaW4tb3V0O1xyXG59XHJcbi50eXBpbmctaW5kaWNhdG9yIHNwYW46bnRoLWNoaWxkKDIpLFxyXG4uYnViYmxlIC50eXBpbmctaW5kaWNhdG9yIHNwYW46bnRoLWNoaWxkKDIpLFxyXG4uY2hhdC1sb2FkaW5nLXJvdyAudHlwaW5nLWluZGljYXRvciBzcGFuOm50aC1jaGlsZCgyKSB7IGFuaW1hdGlvbi1kZWxheTogMC4xOHM7IH1cclxuLnR5cGluZy1pbmRpY2F0b3Igc3BhbjpudGgtY2hpbGQoMyksXHJcbi5idWJibGUgLnR5cGluZy1pbmRpY2F0b3Igc3BhbjpudGgtY2hpbGQoMyksXHJcbi5jaGF0LWxvYWRpbmctcm93IC50eXBpbmctaW5kaWNhdG9yIHNwYW46bnRoLWNoaWxkKDMpIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjM2czsgfVxyXG5cclxuLyog4pSA4pSAIFF1aWNrIHJlcGx5IGJ1dHRvbnMg4pSA4pSAICovXHJcbi5xdWljay1yZXBseS1idG4ge1xyXG4gIGJhY2tncm91bmQ6IHZhcigtLWNiLWNyZWFtKTtcclxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDQ0LDI2LDE0LDAuMTgpO1xyXG4gIGNvbG9yOiB2YXIoLS1jYi10ZXh0LW1pZCk7XHJcbiAgcGFkZGluZzogNnB4IDEzcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2Itci1waWxsKTtcclxuICBmb250LXNpemU6IDEycHg7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgZm9udC1mYW1pbHk6ICdTYXJhYnVuJywgc2Fucy1zZXJpZjtcclxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzLCBjb2xvciAwLjE1cywgYm9yZGVyLWNvbG9yIDAuMTVzO1xyXG59XHJcbi5xdWljay1yZXBseS1idG46aG92ZXIge1xyXG4gIGJhY2tncm91bmQ6IHZhcigtLWNiLWRhcmspO1xyXG4gIGNvbG9yOiB2YXIoLS1jYi1nb2xkLXBhbGUpO1xyXG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY2ItZGFyayk7XHJcbn1cclxuXHJcbi8qIHN5c3RlbSBlcnJvciAqL1xyXG4uc3lzdGVtLWxhYmVsIHtcclxuICBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBjb2xvcjogIzhCM0ExRTtcclxuICBmb250LXNpemU6IDEycHg7XHJcbiAgYmFja2dyb3VuZDogI0ZGRjVGMDtcclxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEzOSw1OCwzMCwwLjE1KTtcclxuICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgcGFkZGluZzogNnB4IDE0cHg7XHJcbiAgbWFyZ2luOiA0cHggYXV0bztcclxuICBhbmltYXRpb246IGNiLWJ1YmJsZUluIDAuM3M7XHJcbn1cclxuXHJcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBMT0FESU5HIFJPV1xyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuLmNoYXQtbG9hZGluZy1yb3cge1xyXG4gIHBhZGRpbmc6IDhweCAxNHB4O1xyXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDQ0LDI2LDE0LDAuMDYpO1xyXG4gIGJhY2tncm91bmQ6IHZhcigtLWNiLWNyZWFtKTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiAxMHB4O1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG59XHJcbi5jaGF0LWxvYWRpbmctcm93IC5sb2FkZXIge1xyXG4gIHdpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoNDQsMjYsMTQsMC4xMik7XHJcbiAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tY2ItZ29sZCk7XHJcbiAgYW5pbWF0aW9uOiBjYi1zcGluIDAuOXMgbGluZWFyIGluZmluaXRlO1xyXG59XHJcbi5jaGF0LWxvYWRpbmctcm93ID4gZGl2Omxhc3QtY2hpbGQge1xyXG4gIGZvbnQtc2l6ZTogMTJweDtcclxuICBjb2xvcjogdmFyKC0tY2ItdGV4dC1tdXRlZCk7XHJcbn1cclxuXHJcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICBTRUxFQ1RFRCBJTUFHRSBQUkVWSUVXXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG4uc2VsZWN0ZWQtaW1hZ2Utcm93IHtcclxuICBwYWRkaW5nOiA4cHggMTRweDtcclxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jYi1jcmVhbS1kYXJrKTtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY2ItYm9yZGVyKTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZmxleC1zaHJpbms6IDA7XHJcbn1cclxuLnNlbGVjdGVkLWltYWdlLXdyYXAgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxyXG4uc2VsZWN0ZWQtaW1hZ2UtcHJldmlldyB7XHJcbiAgaGVpZ2h0OiA1NnB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDZweDtcclxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jYi1ib3JkZXIpO1xyXG59XHJcbi5zZWxlY3RlZC1pbWFnZS1yZW1vdmUge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAtN3B4OyByaWdodDogLTdweDtcclxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jYi1kYXJrKTtcclxuICBjb2xvcjogdmFyKC0tY2ItZ29sZC1wYWxlKTtcclxuICBib3JkZXI6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICB3aWR0aDogMThweDsgaGVpZ2h0OiAxOHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjsgZm9udC1zaXplOiAxMXB4O1xyXG4gIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG59XHJcblxyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgSU5QVVQgUk9XXHJcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xyXG4uY2h1bGEtaW5wdXQtcm93IHtcclxuICBwYWRkaW5nOiAxMHB4IDEycHggOHB4O1xyXG4gIGJhY2tncm91bmQ6IHZhcigtLWNiLXdoaXRlKTtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSg0NCwyNiwxNCwwLjA4KTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiA4cHg7XHJcbiAgZmxleC1zaHJpbms6IDA7XHJcbn1cclxuXHJcbi8qIGlubmVyIHJvdzogYXR0YWNoICsgaW5wdXQgKyBzZW5kICovXHJcbi5jYi1pbnB1dC1pbm5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogOHB4O1xyXG4gIGJhY2tncm91bmQ6IHZhcigtLWNiLWNyZWFtKTtcclxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDQ0LDI2LDE0LDAuMTQpO1xyXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWNiLXItcGlsbCk7XHJcbiAgcGFkZGluZzogOHB4IDhweCA4cHggMTJweDtcclxufVxyXG5cclxuLmNodWxhLWlucHV0LXJvdyBpbnB1dCB7XHJcbiAgZmxleDogMTtcclxuICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGZvbnQtc2l6ZTogMTNweDtcclxuICBmb250LWZhbWlseTogJ1NhcmFidW4nLCBzYW5zLXNlcmlmO1xyXG4gIGNvbG9yOiB2YXIoLS1jYi10ZXh0KTtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG59XHJcbi5jaHVsYS1pbnB1dC1yb3cgaW5wdXQ6OnBsYWNlaG9sZGVyIHsgY29sb3I6IHZhcigtLWNiLXRleHQtbXV0ZWQpOyBvcGFjaXR5OiAxOyB9XHJcbi5jaHVsYS1pbnB1dC1yb3cgaW5wdXQ6ZGlzYWJsZWQgeyBvcGFjaXR5OiAwLjU7IGN1cnNvcjogbm90LWFsbG93ZWQ7IH1cclxuXHJcbi8qIGF0dGFjaCBidXR0b24gKi9cclxuLmF0dGFjaC10cmlnZ2VyIHtcclxuICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgcGFkZGluZzogNHB4O1xyXG4gIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgY29sb3I6IHZhcigtLWNiLXRleHQtbXV0ZWQpO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG4gIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzO1xyXG59XHJcbi5hdHRhY2gtdHJpZ2dlcjpob3ZlciB7IGNvbG9yOiB2YXIoLS1jYi1kYXJrKTsgfVxyXG5cclxuLyogc2VuZCBidXR0b24gKi9cclxuLmNodWxhLWlucHV0LXJvdyAuc2VuZC1idG4ge1xyXG4gIHdpZHRoOiAzNnB4OyBoZWlnaHQ6IDM2cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gIGJhY2tncm91bmQ6IHZhcigtLWNiLWRhcmspO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgZmxleC1zaHJpbms6IDA7XHJcbiAgYm94LXNoYWRvdzogMCAzcHggMTBweCByZ2JhKDQ0LDI2LDE0LDAuMyk7XHJcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTJzLCBib3gtc2hhZG93IDAuMTJzO1xyXG59XHJcbi5jaHVsYS1pbnB1dC1yb3cgLnNlbmQtYnRuOmRpc2FibGVkIHtcclxuICBvcGFjaXR5OiAwLjM1O1xyXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG4uY2h1bGEtaW5wdXQtcm93IC5zZW5kLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjA3KTtcclxuICBib3gtc2hhZG93OiAwIDVweCAxNnB4IHJnYmEoNDQsMjYsMTQsMC40KTtcclxufVxyXG5cclxuLyogaGludCBjaGlwcyBiZWxvdyBpbnB1dCAqL1xyXG4uY2ItaGludC1yb3cge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZ2FwOiA2cHg7XHJcbiAgb3ZlcmZsb3cteDogYXV0bztcclxuICBwYWRkaW5nLWJvdHRvbTogNHB4O1xyXG59XHJcbi5jYi1oaW50LXJvdzo6LXdlYmtpdC1zY3JvbGxiYXIgeyBkaXNwbGF5OiBub25lOyB9XHJcblxyXG4uY2ItaGludCB7XHJcbiAgYmFja2dyb3VuZDogbm9uZTtcclxuICBib3JkZXI6IDAuNXB4IHNvbGlkIHJnYmEoNDQsMjYsMTQsMC4xOCk7XHJcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2Itci1waWxsKTtcclxuICBwYWRkaW5nOiA0cHggMTFweDtcclxuICBmb250LXNpemU6IDExcHg7XHJcbiAgY29sb3I6IHZhcigtLWNiLXRleHQtbWlkKTtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBmb250LWZhbWlseTogJ1NhcmFidW4nLCBzYW5zLXNlcmlmO1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjE1cztcclxufVxyXG4uY2ItaGludDpob3ZlciB7XHJcbiAgYmFja2dyb3VuZDogdmFyKC0tY2ItZGFyayk7XHJcbiAgY29sb3I6IHZhcigtLWNiLWdvbGQtcGFsZSk7XHJcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jYi1kYXJrKTtcclxufVxyXG5cclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIEZMT0FUSU5HIFRPR0dMRSBCVVRUT05cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcbiNjaHVsYS1jaGF0Ym90LXRvZ2dsZSB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJvdHRvbTogMjRweDsgcmlnaHQ6IDA7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoMTAwJSAtIDE0cHgpKTtcclxuICBvcGFjaXR5OiAwLjg1O1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjIsMC44LDAuMiwxKTtcclxuICB6LWluZGV4OiAxMDAwMDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgd2lkdGg6IDUycHg7IGhlaWdodDogNTJweDtcclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jYi1kYXJrKSAwJSwgdmFyKC0tY2ItZGFyay1saXRlKSAxMDAlKTtcclxuICBib3JkZXItcmFkaXVzOiA1MCUgMCAwIDUwJTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm94LXNoYWRvdzogLTJweCA0cHggMTRweCByZ2JhKDQ0LDI2LDE0LDAuMjUpO1xyXG4gIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG59XHJcbiNjaHVsYS1jaGF0Ym90LXRvZ2dsZTpob3ZlciB7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC04cHgpO1xyXG4gIG9wYWNpdHk6IDE7XHJcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gIGJveC1zaGFkb3c6IC00cHggNHB4IDIycHggcmdiYSg0NCwyNiwxNCwwLjM1KTtcclxufVxyXG5cclxuLnRyaWdnZXItbm90Y2gge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBsZWZ0OiAtMTBweDsgdG9wOiA1NSU7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gIHdpZHRoOiAxNHB4OyBoZWlnaHQ6IDQ0cHg7XHJcbiAgYmFja2dyb3VuZDogdmFyKC0tY2ItZ29sZCk7XHJcbiAgY29sb3I6IHZhcigtLWNiLWRhcmspO1xyXG4gIGJvcmRlci1yYWRpdXM6IDEwcHggMCAwIDEwcHg7XHJcbiAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNzAwO1xyXG4gIGJveC1zaGFkb3c6IC0ycHggMCA2cHggcmdiYSg0NCwyNiwxNCwwLjE1KTtcclxufVxyXG5cclxuI2NodWxhLWNoYXRib3QtZWRnZSB7XHJcbiAgcG9zaXRpb246IGZpeGVkOyB0b3A6IDA7IHJpZ2h0OiAwO1xyXG4gIHdpZHRoOiAxMnB4OyBoZWlnaHQ6IDEwMHZoO1xyXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB6LWluZGV4OiA5OTk5OyBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuI2NodWxhLWNoYXRib3QtZWRnZTpob3ZlciArICNjaHVsYS1jaGF0Ym90LXRvZ2dsZSxcclxuI2NodWxhLWNoYXRib3QtdG9nZ2xlOmhvdmVyIHtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XHJcbiAgb3BhY2l0eTogMTtcclxuICBwb2ludGVyLWV2ZW50czogYXV0bztcclxufVxyXG5cclxuLyogZmxvYXRpbmcgc21hbGwgYnRuICovXHJcbi5mbG9hdGluZy10b2dnbGUtc21hbGwtY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogZml4ZWQ7IHJpZ2h0OiAxNnB4OyBib3R0b206IDE2cHg7IHotaW5kZXg6IDEyMDAxO1xyXG59XHJcbi5mbG9hdGluZy10b2dnbGUtc21hbGwtYnRuIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgcGFkZGluZzogN3B4IDE0cHg7IGZvbnQtc2l6ZTogMTJweDsgYm9yZGVyLXJhZGl1czogMTJweDtcclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jYi1kYXJrKSAwJSwgdmFyKC0tY2ItZGFyay1saXRlKSAxMDAlKTtcclxuICBjb2xvcjogdmFyKC0tY2ItZ29sZC1wYWxlKTsgYm9yZGVyOiBub25lO1xyXG4gIGJveC1zaGFkb3c6IDAgNnB4IDE2cHggcmdiYSg0NCwyNiwxNCwwLjIyKTtcclxuICBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtZmFtaWx5OiAnU2FyYWJ1bicsIHNhbnMtc2VyaWY7XHJcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTJzLCBib3gtc2hhZG93IDAuMTJzO1xyXG59XHJcbi5mbG9hdGluZy10b2dnbGUtc21hbGwtYnRuOmhvdmVyIHsgYm94LXNoYWRvdzogMCAxMHB4IDI0cHggcmdiYSg0NCwyNiwxNCwwLjMpOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7IH1cclxuLmZsb2F0aW5nLXRvZ2dsZS1zbWFsbC1idG46YWN0aXZlIHsgdHJhbnNmb3JtOiBzY2FsZSgwLjk5KTsgfVxyXG5cclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFNJREUgUEFORUxcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcbiNjaHVsYS1jaGF0Ym90LWJveC5zaWRlLXBhbmVsLFxyXG4uY2h1bGEtb3Blbi5zaWRlLXBhbmVsIHtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgdG9wOiAwOyByaWdodDogMDsgYm90dG9tOiAwO1xyXG4gIHdpZHRoOiA0MjBweDsgbWF4LXdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMHZoO1xyXG4gIGJvcmRlci1yYWRpdXM6IDA7XHJcbiAgYm94LXNoYWRvdzogLThweCAwIDMycHggcmdiYSg0NCwyNiwxNCwwLjE1KTtcclxuICB6LWluZGV4OiAyMDAwMTtcclxuICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGJhY2tncm91bmQ6IHZhcigtLWNiLWNyZWFtKTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1jYi1ib3JkZXIpO1xyXG59XHJcbi5jaHVsYS1vcGVuLnNpZGUtcGFuZWwgLmNodWxhLWhlYWRlcixcclxuLmNodWxhLW9wZW4uc2lkZS1wYW5lbCAuY2h1bGEtaGVhZGVyLW1vYmlsZWxpa2Uge1xyXG4gIGJhY2tncm91bmQ6IHZhcigtLWNiLWRhcmspO1xyXG59XHJcbi5jaHVsYS1vcGVuLnNpZGUtcGFuZWwgLmNodWxhLWhlYWRlci1hY3Rpb25zIHsgZGlzcGxheTogZmxleDsgfVxyXG4uY2h1bGEtb3Blbi5zaWRlLXBhbmVsIC5jaHVsYS1tZXNzYWdlcyB7IGJhY2tncm91bmQ6IHZhcigtLWNiLWNyZWFtKTsgfVxyXG5cclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgIFJFU1BPTlNJVkVcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xyXG4gICNjaHVsYS1jaGF0Ym90LWJveCB7XHJcbiAgICB3aWR0aDogY2FsYygxMDB2dyAtIDEycHgpO1xyXG4gICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gODBweCk7XHJcbiAgICByaWdodDogNnB4OyBib3R0b206IDYwcHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1jYi1yLWxnKTtcclxuICB9XHJcbiAgI2NodWxhLWNoYXRib3QtYm94LnNpZGUtcGFuZWwsXHJcbiAgLmNodWxhLW9wZW4uc2lkZS1wYW5lbCB7IHdpZHRoOiAxMDAlOyBsZWZ0OiAwOyBib3JkZXItcmFkaXVzOiAwOyB9XHJcbiAgI2NodWxhLWNoYXRib3QtdG9nZ2xlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOyBvcGFjaXR5OiAwOyBwb2ludGVyLWV2ZW50czogbm9uZTsgcmlnaHQ6IDhweDsgYm90dG9tOiA4cHg7IH1cclxuICAjY2h1bGEtY2hhdGJvdC1lZGdlIHsgd2lkdGg6IDM2cHg7IH1cclxuICAuYnViYmxlLmJvdCAudGV4dCwgLmJ1YmJsZS51c2VyIC50ZXh0IHsgbWF4LXdpZHRoOiAyMDBweDsgfVxyXG59XHJcbkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkge1xyXG4gICNjaHVsYS1jaGF0Ym90LWJveC5zaWRlLXBhbmVsLFxyXG4gIC5jaHVsYS1vcGVuLnNpZGUtcGFuZWwgeyB3aWR0aDogMTAwJTsgbGVmdDogMDsgfVxyXG59XHJcblxyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgQU5JTUFUSU9OU1xyXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuQGtleWZyYW1lcyBjYi1wb3BJbiB7XHJcbiAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogc2NhbGUoMC45NSkgdHJhbnNsYXRlWSgxMnB4KTsgfVxyXG4gIHRvICAgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHNjYWxlKDEpIHRyYW5zbGF0ZVkoMCk7IH1cclxufVxyXG5Aa2V5ZnJhbWVzIGNiLWJ1YmJsZUluIHtcclxuICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDhweCkgc2NhbGUoMC45OCk7IH1cclxuICB0byAgIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpOyB9XHJcbn1cclxuQGtleWZyYW1lcyBjYi1ib3Age1xyXG4gIDAlLDYwJSwxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyBvcGFjaXR5OiAwLjM1OyB9XHJcbiAgMzAlICAgICAgICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7IG9wYWNpdHk6IDE7IH1cclxufVxyXG5Aa2V5ZnJhbWVzIGNiLXNwaW4ge1xyXG4gIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxyXG59XHJcblxyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgTUFSS0RPV05cclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcbi5tZC1tZXNzYWdlIHsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogdmFyKC0tY2ItdGV4dCk7IGxpbmUtaGVpZ2h0OiAxLjU1OyB9XHJcbi5tZC1tZXNzYWdlIGEsIC5tZC1saW5rIHsgY29sb3I6IHZhcigtLWNiLWdvbGQpOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgY3Vyc29yOiBwb2ludGVyOyB9XHJcbi5tZC1jb2RlLWlubGluZSB7XHJcbiAgYmFja2dyb3VuZDogcmdiYSg0NCwyNiwxNCwwLjA3KTsgcGFkZGluZzogMnB4IDZweDtcclxuICBib3JkZXItcmFkaXVzOiA0cHg7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHZhcigtLWNiLXRleHQtbWlkKTtcclxufVxyXG4ubWQtY29kZS1ibG9jayB7XHJcbiAgYmFja2dyb3VuZDogcmdiYSg0NCwyNiwxNCwwLjA2KTsgcGFkZGluZzogOHB4IDEwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogOHB4OyBvdmVyZmxvdzogYXV0bzsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcclxuICBmb250LXNpemU6IDEycHg7IGNvbG9yOiB2YXIoLS1jYi10ZXh0KTtcclxufVxyXG4ubWQtaW1hZ2UgeyBtYXgtd2lkdGg6IDEwMCU7IGJvcmRlci1yYWRpdXM6IDhweDsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2ItYm9yZGVyKTsgfVxyXG5cclxuLyog4pSA4pSAIFByb2R1Y3QgQ2FyZHMgKGJvdCByZXNwb25zZSkg4pSA4pSAICovXHJcbi5jYi1wcm9kdWN0LWxpc3Qge1xyXG4gIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogOXB4OyBwYWRkaW5nOiAycHggMDtcclxufVxyXG4uY2ItcHJvZHVjdC1jYXJkIHtcclxuICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDExcHg7XHJcbiAgYmFja2dyb3VuZDogdmFyKC0tY2Itd2hpdGUpO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNDQsMjYsMTQsMC4wOSk7XHJcbiAgYm9yZGVyLXJhZGl1czogMTNweDtcclxuICBwYWRkaW5nOiA5cHggMTFweDtcclxuICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSg0NCwyNiwxNCwwLjA3KTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4xNXMsIGJveC1zaGFkb3cgLjE1cztcclxuICBhbmltYXRpb246IGNiLWJ1YmJsZUluIC4yNXMgZWFzZSBib3RoO1xyXG59XHJcbi5jYi1wcm9kdWN0LWNhcmQ6bnRoLWNoaWxkKDIpIHsgYW5pbWF0aW9uLWRlbGF5OiAuMDZzOyB9XHJcbi5jYi1wcm9kdWN0LWNhcmQ6bnRoLWNoaWxkKDMpIHsgYW5pbWF0aW9uLWRlbGF5OiAuMTJzOyB9XHJcbi5jYi1wcm9kdWN0LWNhcmQ6aG92ZXIgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7IGJveC1zaGFkb3c6IDAgNHB4IDE0cHggcmdiYSg0NCwyNiwxNCwwLjEyKTsgfVxyXG5cclxuLmNiLXByb2R1Y3QtdGh1bWIge1xyXG4gIHdpZHRoOiA0OHB4OyBoZWlnaHQ6IDU4cHg7IGJvcmRlci1yYWRpdXM6IDhweDsgZmxleC1zaHJpbms6IDA7XHJcbiAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuLmNiLXByb2R1Y3QtdGh1bWIgaW1nIHsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgb2JqZWN0LWZpdDogY292ZXI7IH1cclxuLmNiLXByb2R1Y3QtY29kZSB7IGZvbnQtc2l6ZTogOHB4OyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjkpOyB0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IDNweDsgfVxyXG5cclxuLmNiLXByb2R1Y3QtaW5mbyB7IGZsZXg6IDE7IG1pbi13aWR0aDogMDsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAycHg7IH1cclxuLmNiLXByb2R1Y3QtdGl0bGUgeyBtYXJnaW46IDA7IGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLWNiLXRleHQpOyBsaW5lLWhlaWdodDogMS4zNTsgfVxyXG4uY2ItcHJvZHVjdC1hdXRob3IgeyBtYXJnaW46IDA7IGZvbnQtc2l6ZTogMTAuNXB4OyBjb2xvcjogdmFyKC0tY2ItdGV4dC1tdXRlZCk7IH1cclxuLmNiLXByb2R1Y3QtcHJpY2Utcm93IHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA2cHg7IG1hcmdpbi10b3A6IDNweDsgfVxyXG4uY2ItcHJvZHVjdC1wcmljZSB7IGZvbnQtc2l6ZTogMTNweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLWNiLWRhcmspOyB9XHJcbi5jYi1wcm9kdWN0LW9yaWdpbmFsIHsgZm9udC1zaXplOiAxMC41cHg7IGNvbG9yOiB2YXIoLS1jYi10ZXh0LW11dGVkKTsgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7IH1cclxuXHJcbi8qIGJ1YmJsZSDguJfguLXguYjguKHguLUgcHJvZHVjdCBsaXN0ICovXHJcbi5idWJibGUuYm90IC50ZXh0OmhhcyguY2ItcHJvZHVjdC1saXN0KSB7XHJcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGJvcmRlcjogbm9uZTsgYm94LXNoYWRvdzogbm9uZTsgcGFkZGluZzogNHB4IDA7XHJcbn0iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgQ1UgQm9vayDigJQgTW9iaWxlIENoYXRib3QgKEJvdHRvbSBTaGVldClcclxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXHJcblxyXG46cm9vdCB7XHJcbiAgLS1jYi1kYXJrOiAgICAgICAjMkMxQTBFO1xyXG4gIC0tY2ItZGFyay1taWQ6ICAgIzNEMjQxMDtcclxuICAtLWNiLWdvbGQ6ICAgICAgICNDOEEwNjA7XHJcbiAgLS1jYi1nb2xkLWxpdGU6ICAjRThDMDcwO1xyXG4gIC0tY2ItZ29sZC1wYWxlOiAgI0Y1RThDMDtcclxuICAtLWNiLWNyZWFtOiAgICAgICNGQUY4RjI7XHJcbiAgLS1jYi1jcmVhbS1kYXJrOiAjRjBFQUQ4O1xyXG4gIC0tY2Itd2hpdGU6ICAgICAgI0ZGRkZGRjtcclxuICAtLWNiLXRleHQ6ICAgICAgICMyQzFBMEU7XHJcbiAgLS1jYi10ZXh0LW1pZDogICAjNUMzQTFFO1xyXG4gIC0tY2ItdGV4dC1tdXRlZDogI0EwNzg0ODtcclxuICAtLWNiLWJvcmRlcjogICAgIHJnYmEoMjAwLDE2MCw4MCwwLjIyKTtcclxuICAtLWNiLXItcGlsbDogICAgIDk5OXB4O1xyXG4gIC0tbWNoYXQtdmg6ICAgICAgMXZoO1xyXG59XHJcblxyXG4vKiBwcmV2ZW50IGlPUyB6b29tIG9uIGlucHV0IGZvY3VzICovXHJcbi5tY2hhdC1haS1wYW5lbCBpbnB1dCxcclxuLm1jaGF0LWFpLXBhbmVsIHRleHRhcmVhLFxyXG4ubWNoYXQtYWktcGFuZWwgc2VsZWN0IHtcclxuICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLm1jaGF0LWFpLXBhbmVsLFxyXG4ubWNoYXQtYWktcGFuZWwgKiB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICBmb250LWZhbWlseTogJ1NhcmFidW4nLCAnS2FuaXQnLCAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmO1xyXG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xyXG59XHJcblxyXG4vKiDilIDilIAgT3ZlcmxheSDilIDilIAgKi9cclxuLm1jaGF0LWFpLW92ZXJsYXkge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICBpbnNldDogMDtcclxuICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDUwJSAxMDAlLCByZ2JhKDIwMCwxNjAsODAsMC4yKSwgcmdiYSgwLDAsMCwwLjU2KSk7XHJcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDJweCk7XHJcbiAgb3BhY2l0eTogMDtcclxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcclxuICB6LWluZGV4OiAxMjAxMTtcclxufVxyXG4ubWNoYXQtYWktb3ZlcmxheS5zaG93IHtcclxuICBvcGFjaXR5OiAxO1xyXG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xyXG59XHJcblxyXG4vKiDilIDilIAgUGFuZWwg4pSA4pSAICovXHJcbi5tY2hhdC1haS1wYW5lbCB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGxlZnQ6IDA7IHJpZ2h0OiAwOyBib3R0b206IDA7XHJcbiAgaGVpZ2h0OiBtaW4oOTRkdmgsIGNhbGMoKHZhcigtLW1jaGF0LXZoKSAqIDEwMCkgLSBlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCwgMHB4KSkpO1xyXG4gIG1heC1oZWlnaHQ6IGNhbGMoKHZhcigtLW1jaGF0LXZoKSAqIDEwMCkgLSBlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCwgMHB4KSk7XHJcbiAgYmFja2dyb3VuZDogdmFyKC0tY2ItY3JlYW0pO1xyXG4gIGJvcmRlci1yYWRpdXM6IDI0cHggMjRweCAwIDA7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2ItYm9yZGVyKTtcclxuICBib3JkZXItYm90dG9tOiBub25lO1xyXG4gIGJveC1zaGFkb3c6IDAgLTEwcHggMzhweCByZ2JhKDQ0LDI2LDE0LDAuMjYpO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcclxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zNnMgY3ViaWMtYmV6aWVyKDAuMzIsMC43MiwwLDEpO1xyXG4gIHotaW5kZXg6IDEyMDEyO1xyXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gIC8qIGlPUyBtb21lbnR1bSBzY3JvbGwgZml4ICovXHJcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xyXG59XHJcbi5tY2hhdC1haS1wYW5lbC5zaG93IHtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XHJcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XHJcbn1cclxuXHJcbi8qIOKUgOKUgCBIZWFkZXIg4pSA4pSAICovXHJcbi5tY2hhdC1haS1oZWFkZXIge1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMyYTE5MGQgMCUsICM0MzI4MTIgMTAwJSk7XHJcbiAgYm9yZGVyLXJhZGl1czogMjRweCAyNHB4IDAgMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgLyogc2FmZSBhcmVhIHRvcCAqL1xyXG4gIHBhZGRpbmctdG9wOiBlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCwgMHB4KTtcclxufVxyXG5cclxuLyogZHJhZyBoYW5kbGUg4oCUIGJpZ2dlciB0b3VjaCB0YXJnZXQgKi9cclxuLm1jaGF0LWRyYWctaGFuZGxlIHtcclxuICB3aWR0aDogNDRweDsgaGVpZ2h0OiA1cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjAwLDE2MCw4MCwwLjQpO1xyXG4gIG1hcmdpbjogMTJweCBhdXRvIDhweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi8qIHRvcCByb3cgKi9cclxuLm1jaGF0LXRvcC1yb3cge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDEwcHg7XHJcbiAgcGFkZGluZzogNHB4IDE2cHggMTRweDtcclxufVxyXG5cclxuLm1jaGF0LWxvZ28ge1xyXG4gIHdpZHRoOiA0NHB4OyBoZWlnaHQ6IDQ0cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogMTNweDtcclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jYi1nb2xkKSAwJSwgdmFyKC0tY2ItZ29sZC1saXRlKSAxMDAlKTtcclxuICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBib3gtc2hhZG93OiAwIDNweCAxMHB4IHJnYmEoMjAwLDE2MCw4MCwwLjQpO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG59XHJcblxyXG4ubWNoYXQtdGl0bGUtZ3JvdXAgeyBmbGV4OiAxOyBtaW4td2lkdGg6IDA7IH1cclxuXHJcbi5tY2hhdC10aXRsZSB7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDcwMDtcclxuICBjb2xvcjogdmFyKC0tY2ItZ29sZC1wYWxlKTtcclxuICBsaW5lLWhlaWdodDogMS4yO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IG92ZXJmbG93OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG59XHJcbi5tY2hhdC1zdWJ0aXRsZSB7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDMwMDtcclxuICBjb2xvcjogcmdiYSgyMDAsMTYwLDgwLDAuNjIpO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjM7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbn1cclxuXHJcbi5tY2hhdC1vbmxpbmUtYmFkZ2Uge1xyXG4gIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNXB4O1xyXG4gIGZvbnQtc2l6ZTogMTFweDsgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBjb2xvcjogIzZFRTdCNztcclxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDExMCwyMzEsMTgzLDAuMzUpO1xyXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWNiLXItcGlsbCk7XHJcbiAgcGFkZGluZzogNXB4IDEwcHg7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgxMTAsMjMxLDE4MywwLjEpO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG59XHJcbi5tY2hhdC1kb3Qge1xyXG4gIHdpZHRoOiA2cHg7IGhlaWdodDogNnB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTsgYmFja2dyb3VuZDogIzZFRTdCNztcclxuICBhbmltYXRpb246IG1jaGF0LXB1bHNlIDJzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xyXG59XHJcbkBrZXlmcmFtZXMgbWNoYXQtcHVsc2Uge1xyXG4gIDAlLDEwMCUgeyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpzY2FsZSgxKTsgfVxyXG4gIDUwJSAgICAgIHsgb3BhY2l0eTouNTsgdHJhbnNmb3JtOnNjYWxlKC44Mik7IH1cclxufVxyXG5cclxuLyogY2xvc2UgYnV0dG9uIOKAlCA0NHB4IHRvdWNoIHRhcmdldCAqL1xyXG4ubWNoYXQtY2xvc2UtYnRuIHtcclxuICB3aWR0aDogNDRweDsgaGVpZ2h0OiA0NHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDEycHg7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMDAsMTYwLDgwLDAuMik7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjA5KTtcclxuICBjb2xvcjogdmFyKC0tY2ItZ29sZC1wYWxlKTtcclxuICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBjdXJzb3I6IHBvaW50ZXI7IGZsZXgtc2hyaW5rOiAwO1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgLjE1cztcclxufVxyXG4ubWNoYXQtY2xvc2UtYnRuOmFjdGl2ZSB7IGJhY2tncm91bmQ6IHJnYmEoMjAwLDE2MCw4MCwwLjIpOyB9XHJcblxyXG4vKiBjYXRlZ29yeSBjaGlwcyDigJQgNDRweCBtaW4gaGVpZ2h0ICovXHJcbi5tY2hhdC1jYXQtcm93IHtcclxuICBkaXNwbGF5OiBmbGV4OyBnYXA6IDhweDtcclxuICBvdmVyZmxvdy14OiBhdXRvOyBwYWRkaW5nOiAwIDE2cHggMTRweDtcclxuICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XHJcbn1cclxuLm1jaGF0LWNhdC1yb3c6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTogbm9uZTsgfVxyXG5cclxuLm1jaGF0LWNhdC1jaGlwIHtcclxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIwMCwxNjAsODAsMC4yOCk7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjA3KTtcclxuICBjb2xvcjogcmdiYSgyNDUsMjMyLDE5MiwwLjc1KTtcclxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1jYi1yLXBpbGwpO1xyXG4gIHBhZGRpbmc6IDlweCAxNHB4OyAgICAgICAgICAgLyogdGFsbCBmb3IgdGh1bWIgKi9cclxuICBtaW4taGVpZ2h0OiAzOHB4O1xyXG4gIGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDUwMDtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwOyBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA1cHg7XHJcbiAgdHJhbnNpdGlvbjogYWxsIC4xOHM7IGZsZXgtc2hyaW5rOiAwO1xyXG59XHJcbi5tY2hhdC1jYXQtY2hpcC5hY3RpdmUge1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjAwLDE2MCw4MCwwLjIpO1xyXG4gIGJvcmRlci1jb2xvcjogcmdiYSgyMDAsMTYwLDgwLDAuNjUpO1xyXG4gIGNvbG9yOiB2YXIoLS1jYi1nb2xkLWxpdGUpO1xyXG59XHJcbi5tY2hhdC1jYXQtY2hpcDphY3RpdmUge1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjAwLDE2MCw4MCwwLjI1KTtcclxuICB0cmFuc2Zvcm06IHNjYWxlKDAuOTYpO1xyXG59XHJcblxyXG4vKiBzaGVsZiAqL1xyXG4ubWNoYXQtc2hlbGYge1xyXG4gIGhlaWdodDogMnB4O1xyXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHZhcigtLWNiLWdvbGQpLCB2YXIoLS1jYi1nb2xkKSwgdHJhbnNwYXJlbnQpO1xyXG4gIG9wYWNpdHk6IC41NTtcclxufVxyXG5cclxuLyog4pSA4pSAIE1lc3NhZ2VzIOKUgOKUgCAqL1xyXG4ubWNoYXQtbWVzc2FnZXMge1xyXG4gIGZsZXg6IDE7XHJcbiAgb3ZlcmZsb3cteTogYXV0bztcclxuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XHJcbiAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjtcclxuICBwYWRkaW5nOiAxNnB4IDE0cHggMTBweDtcclxuICBzY3JvbGwtcGFkZGluZy1ib3R0b206IDExMHB4O1xyXG4gIGJhY2tncm91bmQ6IHZhcigtLWNiLWNyZWFtKTtcclxuICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDEycHg7XHJcbn1cclxuLm1jaGF0LW1lc3NhZ2VzOjotd2Via2l0LXNjcm9sbGJhciB7IHdpZHRoOiAzcHg7IH1cclxuLm1jaGF0LW1lc3NhZ2VzOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XHJcbiAgYmFja2dyb3VuZDogcmdiYSg0NCwyNiwxNCwwLjE4KTsgYm9yZGVyLXJhZGl1czogMnB4O1xyXG59XHJcblxyXG4vKiB3ZWxjb21lIGNhcmQgKi9cclxuLm1jaGF0LXdlbGNvbWUtY2FyZCB7XHJcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tY2ItZGFyaykgMCUsIHZhcigtLWNiLWRhcmstbWlkKSAxMDAlKTtcclxuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIwMCwxNjAsODAsMC4yKTtcclxuICBib3JkZXItcmFkaXVzOiAxNnB4O1xyXG4gIHBhZGRpbmc6IDE0cHggMTZweDtcclxuICBkaXNwbGF5OiBmbGV4OyBnYXA6IDEzcHg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgYm94LXNoYWRvdzogMCAzcHggMTBweCByZ2JhKDQ0LDI2LDE0LDAuMTIpO1xyXG59XHJcbi5tY2hhdC13ZWxjb21lLWljb24ge1xyXG4gIHdpZHRoOiA0NHB4OyBoZWlnaHQ6IDQ0cHg7IGJvcmRlci1yYWRpdXM6IDEzcHg7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgyMDAsMTYwLDgwLDAuMTUpO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjAwLDE2MCw4MCwwLjMpO1xyXG4gIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG59XHJcbi5tY2hhdC13dCB7XHJcbiAgbWFyZ2luOiAwIDAgNHB4OyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS1jYi1nb2xkLXBhbGUpO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjM7XHJcbn1cclxuLm1jaGF0LXdzIHtcclxuICBtYXJnaW46IDA7IGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDMwMDtcclxuICBjb2xvcjogcmdiYSgyMDAsMTYwLDgwLDAuNjUpOyBsaW5lLWhlaWdodDogMS41O1xyXG59XHJcblxyXG4vKiBkaXZpZGVyICovXHJcbi5tY2hhdC1kaXZpZGVyIHtcclxuICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDtcclxuICBmb250LXNpemU6IDExcHg7IGNvbG9yOiB2YXIoLS1jYi10ZXh0LW11dGVkKTtcclxufVxyXG4ubWNoYXQtZGl2aWRlcjo6YmVmb3JlLCAubWNoYXQtZGl2aWRlcjo6YWZ0ZXIge1xyXG4gIGNvbnRlbnQ6ICcnOyBmbGV4OiAxOyBoZWlnaHQ6IC41cHg7IGJhY2tncm91bmQ6IHJnYmEoNDQsMjYsMTQsMC4xMik7XHJcbn1cclxuXHJcbi8qIHJvd3MgKi9cclxuLm1jaGF0LXJvdyB7XHJcbiAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGZsZXgtZW5kOyBnYXA6IDhweDtcclxuICBhbmltYXRpb246IG1jaGF0LWluIC4ycyBlYXNlO1xyXG59XHJcbkBrZXlmcmFtZXMgbWNoYXQtaW4ge1xyXG4gIGZyb20geyBvcGFjaXR5OjA7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKDdweCk7IH1cclxuICB0byAgIHsgb3BhY2l0eToxOyB0cmFuc2Zvcm06bm9uZTsgfVxyXG59XHJcbi5tY2hhdC1yb3cudXNlciB7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IH1cclxuLm1jaGF0LXJvdy5ib3QgIHsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9XHJcblxyXG4vKiBhdmF0YXIgKi9cclxuLm1jaGF0LWF2YXRhciB7XHJcbiAgd2lkdGg6IDMycHg7IGhlaWdodDogMzJweDsgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jYi1nb2xkKSAwJSwgdmFyKC0tY2ItZ29sZC1saXRlKSAxMDAlKTtcclxuICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBmbGV4LXNocmluazogMDtcclxuICBib3gtc2hhZG93OiAwIDJweCA3cHggcmdiYSgyMDAsMTYwLDgwLDAuMyk7XHJcbn1cclxuXHJcbi8qIGJ1YmJsZSBjb2x1bW4gKi9cclxuLm1jaGF0LWJ1YmJsZS1jb2wge1xyXG4gIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogM3B4O1xyXG4gIG1heC13aWR0aDogbWluKDg0JSwgMzhyZW0pO1xyXG59XHJcblxyXG4vKiBidWJibGVzICovXHJcbi5tY2hhdC1idWJibGUge1xyXG4gIHBhZGRpbmc6IDExcHggMTRweDtcclxuICBmb250LXNpemU6IDE1cHg7IGxpbmUtaGVpZ2h0OiAxLjU4O1xyXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcclxufVxyXG4ubWNoYXQtYnViYmxlLmJvdCB7XHJcbiAgYmFja2dyb3VuZDogdmFyKC0tY2Itd2hpdGUpO1xyXG4gIGNvbG9yOiB2YXIoLS1jYi10ZXh0KTtcclxuICBib3JkZXI6IC41cHggc29saWQgcmdiYSgxODAsMTUwLDkwLDAuMik7XHJcbiAgYm9yZGVyLXJhZGl1czogMTZweCAxNnB4IDE2cHggNXB4O1xyXG4gIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDQ0LDI2LDE0LDAuMDcpO1xyXG59XHJcbi5tY2hhdC1idWJibGUudXNlciB7XHJcbiAgYmFja2dyb3VuZDogdmFyKC0tY2ItZGFyayk7XHJcbiAgY29sb3I6IHZhcigtLWNiLWdvbGQtcGFsZSk7XHJcbiAgYm9yZGVyLXJhZGl1czogMTZweCAxNnB4IDVweCAxNnB4O1xyXG4gIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDQ0LDI2LDE0LDAuMTgpO1xyXG59XHJcblxyXG4vKiB0eXBpbmcgKi9cclxuLm1jaGF0LWJ1YmJsZS50eXBpbmcge1xyXG4gIGJhY2tncm91bmQ6IHZhcigtLWNiLXdoaXRlKTtcclxuICBib3JkZXI6IC41cHggc29saWQgcmdiYSgxODAsMTUwLDkwLDAuMik7XHJcbiAgYm9yZGVyLXJhZGl1czogMTZweCAxNnB4IDE2cHggNXB4O1xyXG4gIG1pbi13aWR0aDogNjJweDtcclxuICBwYWRkaW5nOiAxNHB4IDE2cHg7XHJcbiAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoNDQsMjYsMTQsMC4wNyk7XHJcbn1cclxuLm1jaGF0LWRvdHMgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDVweDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxyXG4ubWNoYXQtZG90cyBzcGFuIHtcclxuICB3aWR0aDogOHB4OyBoZWlnaHQ6IDhweDsgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gIGJhY2tncm91bmQ6IHZhcigtLWNiLWdvbGQpOyBvcGFjaXR5OiAuMzg7XHJcbiAgYW5pbWF0aW9uOiBtY2hhdC1ib3AgMS4ycyBpbmZpbml0ZSBlYXNlLWluLW91dDtcclxufVxyXG4ubWNoYXQtZG90cyBzcGFuOm50aC1jaGlsZCgyKSB7IGFuaW1hdGlvbi1kZWxheTogLjE4czsgfVxyXG4ubWNoYXQtZG90cyBzcGFuOm50aC1jaGlsZCgzKSB7IGFuaW1hdGlvbi1kZWxheTogLjM2czsgfVxyXG5Aa2V5ZnJhbWVzIG1jaGF0LWJvcCB7XHJcbiAgMCUsNjAlLDEwMCUgeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKTsgb3BhY2l0eTouMzg7IH1cclxuICAzMCUgICAgICAgICAgeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNnB4KTsgb3BhY2l0eToxOyB9XHJcbn1cclxuXHJcbi8qIHRpbWVzdGFtcCAqL1xyXG4ubWNoYXQtdHMgeyBmb250LXNpemU6IDExcHg7IGNvbG9yOiB2YXIoLS1jYi10ZXh0LW11dGVkKTsgcGFkZGluZzogMCAzcHg7IH1cclxuLm1jaGF0LXRzLnVzZXIgeyB0ZXh0LWFsaWduOiByaWdodDsgfVxyXG5cclxuLyogbGlua3MvaW1nICovXHJcbi5tY2hhdC1idWJibGUuYm90IGEgeyBjb2xvcjogdmFyKC0tY2ItZ29sZCk7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XHJcbi5tY2hhdC1idWJibGUuYm90IGltZyB7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTAwJTsgYm9yZGVyLXJhZGl1czogOHB4OyBtYXJnaW4tdG9wOiA3cHg7IH1cclxuXHJcbi8qIOKUgOKUgCBJbnB1dCBhcmVhIOKUgOKUgCAqL1xyXG4ubWNoYXQtaW5wdXQtYXJlYSB7XHJcbiAgZmxleC1zaHJpbms6IDA7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjk0KTtcclxuICBiYWNrZHJvcC1maWx0ZXI6IHNhdHVyYXRlKDExMCUpIGJsdXIoNnB4KTtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSg0NCwyNiwxNCwwLjA4KTtcclxuICBwYWRkaW5nOiAxMHB4IDEycHg7ICAgICAgICAgICAvKiDguKXguJQgcGFkZGluZyDguKPguK3guJrguILguYnguLLguIcgKi9cclxuICBwYWRkaW5nLWJvdHRvbTogbWF4KDE0cHgsIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tLCAwcHgpKTtcclxuICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDlweDtcclxuICB3aWR0aDogMTAwJTtcclxuICBvdmVyZmxvdzogaGlkZGVuOyAgICAgICAgICAgICAvKiDguIHguLHguJnguKXguYnguJkgKi9cclxufVxyXG5cclxuLyogaGludHMg4oCUIDQ0cHggdG91Y2ggaGVpZ2h0ICovXHJcbi5tY2hhdC1oaW50cyB7XHJcbiAgZGlzcGxheTogZmxleDsgZ2FwOiA3cHg7IG92ZXJmbG93LXg6IGF1dG87XHJcbiAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xyXG59XHJcbi5tY2hhdC1oaW50czo6LXdlYmtpdC1zY3JvbGxiYXIgeyBkaXNwbGF5OiBub25lOyB9XHJcblxyXG4ubWNoYXQtaGludCB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg0NCwyNiwxNCwwLjE4KTtcclxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jYi1jcmVhbSk7XHJcbiAgY29sb3I6IHZhcigtLWNiLXRleHQtbWlkKTtcclxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1jYi1yLXBpbGwpO1xyXG4gIHBhZGRpbmc6IDhweCAxNHB4O1xyXG4gIG1pbi1oZWlnaHQ6IDM2cHg7XHJcbiAgZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogNTAwO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uOiBhbGwgLjE1czsgZmxleC1zaHJpbms6IDA7XHJcbn1cclxuLm1jaGF0LWhpbnQ6YWN0aXZlIHtcclxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jYi1kYXJrKTtcclxuICBjb2xvcjogdmFyKC0tY2ItZ29sZC1wYWxlKTtcclxuICBib3JkZXItY29sb3I6IHZhcigtLWNiLWRhcmspO1xyXG4gIHRyYW5zZm9ybTogc2NhbGUoMC45Nik7XHJcbn1cclxuLm1jaGF0LWhpbnQ6ZGlzYWJsZWQgeyBvcGFjaXR5OiAuNDsgY3Vyc29yOiBub3QtYWxsb3dlZDsgfVxyXG5cclxuLyogaW5wdXQgcm93IOKAlCBwaWxsIHNoYXBlICovXHJcbi5tY2hhdC1pbnB1dC1yb3cge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgICAgICAgICAgLyogY2VudGVyIOC5geC4l+C4mSBmbGV4LWVuZCAqL1xyXG4gIGdhcDogOHB4O1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjUwLDI0OCwyNDIsMC45NSk7XHJcbiAgYm9yZGVyOiAxLjVweCBzb2xpZCByZ2JhKDQ0LDI2LDE0LDAuMTQpO1xyXG4gIGJvcmRlci1yYWRpdXM6IDE5cHg7XHJcbiAgcGFkZGluZzogNnB4IDZweCA2cHggMTJweDsgICAvKiDguKXguJQgcGFkZGluZyDguILguKfguLLguYPguKvguYnguYHguJnguJrguJvguLjguYjguKEgKi9cclxuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgLjJzO1xyXG4gIG1pbi1oZWlnaHQ6IDU0cHg7XHJcbiAgd2lkdGg6IDEwMCU7ICAgICAgICAgICAgICAgICAgLyog4LmA4LiV4LmH4Lih4LiE4Lin4Liy4Lih4LiB4Lin4LmJ4Liy4LiHICovXHJcbn1cclxuLm1jaGF0LWlucHV0LXJvdzpmb2N1cy13aXRoaW4ge1xyXG4gIGJvcmRlci1jb2xvcjogcmdiYSgyMDAsMTYwLDgwLDAuNTUpO1xyXG4gIGJhY2tncm91bmQ6IHZhcigtLWNiLXdoaXRlKTtcclxuICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgyMDAsMTYwLDgwLDAuMSk7XHJcbn1cclxuXHJcbi5tY2hhdC1pbnB1dCB7XHJcbiAgZmxleDogMTtcclxuICBtaW4td2lkdGg6IDA7ICAgICAgICAgICAgICAgICAvKiDihpAg4Liq4Liz4LiE4Lix4LiNOiDguJvguYnguK3guIfguIHguLHguJkgb3ZlcmZsb3cgKi9cclxuICBiYWNrZ3JvdW5kOiBub25lOyBib3JkZXI6IG5vbmU7IG91dGxpbmU6IG5vbmU7IHJlc2l6ZTogbm9uZTtcclxuICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDtcclxuICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuICBjb2xvcjogdmFyKC0tY2ItdGV4dCk7IGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgbWluLWhlaWdodDogMzBweDsgbWF4LWhlaWdodDogMTEwcHg7XHJcbiAgcGFkZGluZzogMnB4IDA7XHJcbn1cclxuLm1jaGF0LWlucHV0OjpwbGFjZWhvbGRlciB7IGNvbG9yOiB2YXIoLS1jYi10ZXh0LW11dGVkKTsgfVxyXG4ubWNoYXQtaW5wdXQ6ZGlzYWJsZWQgeyBvcGFjaXR5OiAuNTsgfVxyXG5cclxuLyogc2VuZCBidXR0b24gKi9cclxuLm1jaGF0LXNlbmQtYnRuIHtcclxuICB3aWR0aDogNDRweDsgaGVpZ2h0OiA0NHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jYi1kYXJrKTsgYm9yZGVyOiBub25lO1xyXG4gIGNvbG9yOiB2YXIoLS1jYi1nb2xkLXBhbGUpO1xyXG4gIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBmbGV4LXNocmluazogMDsgICAgICAgICAgICAgICAvKiDihpAg4LmE4Lih4LmI4LmD4Lir4LmJ4Lii4LmI4LitICovXHJcbiAgYm94LXNoYWRvdzogMCAzcHggMTBweCByZ2JhKDQ0LDI2LDE0LDAuMyk7XHJcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4xMnMsIGJveC1zaGFkb3cgLjEycztcclxufVxyXG4ubWNoYXQtc2VuZC1idG46YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcclxuICB0cmFuc2Zvcm06IHNjYWxlKDAuOTMpO1xyXG4gIGJveC1zaGFkb3c6IDAgMnB4IDZweCByZ2JhKDQ0LDI2LDE0LDAuMik7XHJcbn1cclxuLm1jaGF0LXNlbmQtYnRuOmRpc2FibGVkIHsgb3BhY2l0eTogLjM1OyBjdXJzb3I6IG5vdC1hbGxvd2VkOyBib3gtc2hhZG93OiBub25lOyB9XHJcblxyXG4ubWNoYXQtc3Bpbm5lciB7IGFuaW1hdGlvbjogbWNoYXQtc3BpbiAuOHMgbGluZWFyIGluZmluaXRlOyB9XHJcbkBrZXlmcmFtZXMgbWNoYXQtc3BpbiB7IHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfSB9XHJcblxyXG4vKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZBcclxuICAgUHJvZHVjdCBDYXJkIExpc3QgKOC5g+C4mSBib3QgYnViYmxlKVxyXG4gICDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAgKi9cclxuLm1jaGF0LXByb2R1Y3QtbGlzdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogMTBweDtcclxuICBwYWRkaW5nOiAycHggMDtcclxufVxyXG5cclxuLm1jaGF0LXByb2R1Y3QtY2FyZCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMTJweDtcclxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jYi13aGl0ZSk7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg0NCwyNiwxNCwwLjA5KTtcclxuICBib3JkZXItcmFkaXVzOiAxNHB4O1xyXG4gIHBhZGRpbmc6IDEwcHggMTJweDtcclxuICBib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoNDQsMjYsMTQsMC4wNyk7XHJcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4xOHMsIGJveC1zaGFkb3cgLjE4cztcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgYW5pbWF0aW9uOiBtY2hhdC1jYXJkSW4gLjNzIGN1YmljLWJlemllcigwLjM0LDEuNTYsMC42NCwxKSBib3RoO1xyXG59XHJcbi5tY2hhdC1wcm9kdWN0LWNhcmQ6bnRoLWNoaWxkKDIpIHsgYW5pbWF0aW9uLWRlbGF5OiAuMDZzOyB9XHJcbi5tY2hhdC1wcm9kdWN0LWNhcmQ6bnRoLWNoaWxkKDMpIHsgYW5pbWF0aW9uLWRlbGF5OiAuMTJzOyB9XHJcbi5tY2hhdC1wcm9kdWN0LWNhcmQ6bnRoLWNoaWxkKDQpIHsgYW5pbWF0aW9uLWRlbGF5OiAuMThzOyB9XHJcblxyXG5Aa2V5ZnJhbWVzIG1jaGF0LWNhcmRJbiB7XHJcbiAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KSBzY2FsZSguOTcpOyB9XHJcbiAgdG8gICB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogbm9uZTsgfVxyXG59XHJcblxyXG4ubWNoYXQtcHJvZHVjdC1jYXJkOmFjdGl2ZSB7XHJcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLjk3NSk7XHJcbiAgYm94LXNoYWRvdzogMCAxcHggNXB4IHJnYmEoNDQsMjYsMTQsMC4xKTtcclxufVxyXG5cclxuLyogdGh1bWJuYWlsICovXHJcbi5tY2hhdC1wcm9kdWN0LXRodW1iIHtcclxuICB3aWR0aDogNTZweDsgaGVpZ2h0OiA2NnB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcbiAgZmxleC1zaHJpbms6IDA7XHJcbiAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuLm1jaGF0LXByb2R1Y3QtdGh1bWIgaW1nIHtcclxuICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG59XHJcbi5tY2hhdC1wcm9kdWN0LWNvZGUge1xyXG4gIGZvbnQtc2l6ZTogOXB4OyBmb250LXdlaWdodDogNzAwO1xyXG4gIGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuOSk7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjI7XHJcbiAgcGFkZGluZzogNHB4O1xyXG59XHJcblxyXG4vKiBpbmZvICovXHJcbi5tY2hhdC1wcm9kdWN0LWluZm8ge1xyXG4gIGZsZXg6IDE7IG1pbi13aWR0aDogMDtcclxuICBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDNweDtcclxufVxyXG4ubWNoYXQtcHJvZHVjdC10aXRsZSB7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGZvbnQtc2l6ZTogMTNweDsgZm9udC13ZWlnaHQ6IDcwMDtcclxuICBjb2xvcjogdmFyKC0tY2ItdGV4dCk7XHJcbiAgbGluZS1oZWlnaHQ6IDEuMzU7XHJcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XHJcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xyXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG4ubWNoYXQtcHJvZHVjdC1hdXRob3Ige1xyXG4gIG1hcmdpbjogMDtcclxuICBmb250LXNpemU6IDExcHg7IGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgY29sb3I6IHZhcigtLWNiLXRleHQtbXV0ZWQpO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7IG92ZXJmbG93OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG59XHJcbi5tY2hhdC1wcm9kdWN0LXByaWNlLXJvdyB7XHJcbiAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA3cHg7IG1hcmdpbi10b3A6IDJweDtcclxufVxyXG4ubWNoYXQtcHJvZHVjdC1wcmljZSB7XHJcbiAgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNzAwO1xyXG4gIGNvbG9yOiB2YXIoLS1jYi1kYXJrKTtcclxufVxyXG4ubWNoYXQtcHJvZHVjdC1vcmlnaW5hbCB7XHJcbiAgZm9udC1zaXplOiAxMXB4OyBmb250LXdlaWdodDogNDAwO1xyXG4gIGNvbG9yOiB2YXIoLS1jYi10ZXh0LW11dGVkKTtcclxuICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcclxufVxyXG5cclxuLyogYnViYmxlIOC4l+C4teC5iOC4oeC4tSBwcm9kdWN0IGNhcmQg4LmE4Lih4LmI4LiV4LmJ4Lit4LiH4Lih4Li1IHBhZGRpbmcg4Lih4Liy4LiBICovXHJcbi5tY2hhdC1idWJibGUuYm90OmhhcygubWNoYXQtcHJvZHVjdC1saXN0KSB7XHJcbiAgcGFkZGluZzogMTBweCAxMHB4O1xyXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBib3gtc2hhZG93OiBub25lO1xyXG59XHJcblxyXG4vKiDilIDilIAgSW5wdXQgcm93IOC5gOC4nuC4tOC5iOC4oeC4peC4ueC4geC5gOC4peC5iOC4mSBmb2N1cyBnbG93IOKUgOKUgCAqL1xyXG4ubWNoYXQtaW5wdXQtcm93OmZvY3VzLXdpdGhpbiB7XHJcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDIwMCwxNjAsODAsMC41NSk7XHJcbiAgYmFja2dyb3VuZDogdmFyKC0tY2Itd2hpdGUpO1xyXG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDIwMCwxNjAsODAsMC4xKTtcclxufVxyXG5cclxuLyogc2VuZCBidG4gcHVsc2Ug4LmA4Lih4Li34LmI4Lit4Lie4Li04Lih4Lie4LmMICovXHJcbi5tY2hhdC1zZW5kLWJ0bjpub3QoOmRpc2FibGVkKSB7XHJcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tY2ItZGFyaykgMCUsIHZhcigtLWNiLWRhcmstbWlkKSAxMDAlKTtcclxufVxyXG4ubWNoYXQtc2VuZC1idG46bm90KDpkaXNhYmxlZCk6aG92ZXIge1xyXG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wOCk7XHJcbiAgYm94LXNoYWRvdzogMCA1cHggMTZweCByZ2JhKDQ0LDI2LDE0LDAuMzgpO1xyXG59XHJcblxyXG4vKiBoZWFkZXIgc2hpbW1lciDguYDguJ7guLTguYjguKHguITguKfguLLguKHguKrguKfguKIgKi9cclxuLm1jaGF0LWFpLWhlYWRlcjo6YWZ0ZXIge1xyXG4gIGNvbnRlbnQ6ICcnO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDA7IGxlZnQ6IC02MCU7XHJcbiAgd2lkdGg6IDQwJTsgaGVpZ2h0OiAxMDAlO1xyXG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjAwLDE2MCw4MCwwLjA2KSwgdHJhbnNwYXJlbnQpO1xyXG4gIGFuaW1hdGlvbjogbWNoYXQtc2hpbW1lciA0cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcclxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxufVxyXG4ubWNoYXQtYWktaGVhZGVyIHsgcG9zaXRpb246IHJlbGF0aXZlOyBvdmVyZmxvdzogaGlkZGVuOyB9XHJcbkBrZXlmcmFtZXMgbWNoYXQtc2hpbW1lciB7XHJcbiAgMCUgICB7IGxlZnQ6IC02MCU7IH1cclxuICA1MCUgIHsgbGVmdDogMTIwJTsgfVxyXG4gIDEwMCUgeyBsZWZ0OiAxMjAlOyB9XHJcbn1cclxuXHJcbi8qIGJ1YmJsZSBib3QgdGV4dCBsaW5rIGNvbG9yICovXHJcbi5tY2hhdC1idWJibGUuYm90IGEgeyBjb2xvcjogdmFyKC0tY2ItZ29sZCk7IGZvbnQtd2VpZ2h0OiA2MDA7IH1cclxuXHJcbi8qIOKUgOKUgCBSZXNwb25zaXZlIOKUgOKUgCAqL1xyXG5AbWVkaWEgKG1heC13aWR0aDogMzgwcHgpIHtcclxuICAubWNoYXQtYWktcGFuZWwgeyBoZWlnaHQ6IG1pbig5NGR2aCwgY2FsYygodmFyKC0tbWNoYXQtdmgpICogMTAwKSAtIGVudihzYWZlLWFyZWEtaW5zZXQtdG9wLCAwcHgpKSk7IGJvcmRlci1yYWRpdXM6IDE2cHggMTZweCAwIDA7IH1cclxuICAubWNoYXQtdG9wLXJvdyB7IHBhZGRpbmc6IDJweCAxMnB4IDEwcHg7IGdhcDogOHB4OyB9XHJcbiAgLm1jaGF0LWxvZ28geyB3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4OyBib3JkZXItcmFkaXVzOiAxMXB4OyB9XHJcbiAgLm1jaGF0LWNhdC1yb3cgeyBwYWRkaW5nOiAwIDEycHggMTJweDsgZ2FwOiA2cHg7IH1cclxuICAubWNoYXQtbWVzc2FnZXMgeyBwYWRkaW5nOiAxMnB4IDEycHggOHB4OyB9XHJcbiAgLm1jaGF0LWlucHV0LWFyZWEgeyBwYWRkaW5nOiA4cHggMTBweDsgcGFkZGluZy1ib3R0b206IG1heCgxMHB4LCBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMHB4KSk7IH1cclxuICAubWNoYXQtaW5wdXQtcm93IHsgcGFkZGluZzogNXB4IDVweCA1cHggMTBweDsgZ2FwOiA2cHg7IH1cclxuICAubWNoYXQtc2VuZC1idG4geyB3aWR0aDogNDJweDsgaGVpZ2h0OiA0MnB4OyB9XHJcbn1cclxuXHJcbkBtZWRpYSAobWF4LWhlaWdodDogNjQwcHgpIHtcclxuICAubWNoYXQtYWktcGFuZWwge1xyXG4gICAgaGVpZ2h0OiBjYWxjKCh2YXIoLS1tY2hhdC12aCkgKiAxMDApIC0gZW52KHNhZmUtYXJlYS1pbnNldC10b3AsIDBweCkpO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMDtcclxuICB9XHJcbiAgLm1jaGF0LWFpLWhlYWRlciB7IGJvcmRlci1yYWRpdXM6IDA7IH1cclxuICAubWNoYXQtd2VsY29tZS1jYXJkIHsgcGFkZGluZzogMTBweCAxMnB4OyB9XHJcbiAgLm1jaGF0LW1lc3NhZ2VzIHsgZ2FwOiA4cHg7IHBhZGRpbmc6IDEwcHggMTJweCA2cHg7IH1cclxufVxyXG5cclxuQG1lZGlhIChtaW4td2lkdGg6IDQ4MHB4KSBhbmQgKG1heC13aWR0aDogOTkxcHgpIHtcclxuICAubWNoYXQtYWktcGFuZWwge1xyXG4gICAgbGVmdDogNTAlOyByaWdodDogYXV0bztcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKDEwMCUpO1xyXG4gICAgd2lkdGg6IG1pbig0ODBweCwgOTZ2dyk7XHJcbiAgICBoZWlnaHQ6IG1pbig4OGR2aCwgY2FsYygodmFyKC0tbWNoYXQtdmgpICogMTAwKSAtIGVudihzYWZlLWFyZWEtaW5zZXQtdG9wLCAwcHgpKSk7XHJcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4IDIwcHggMCAwO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gIH1cclxuICAubWNoYXQtYWktcGFuZWwuc2hvdyB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwKTtcclxuICB9XHJcbiAgLm1jaGF0LWFpLWhlYWRlciB7IGJvcmRlci1yYWRpdXM6IDIwcHggMjBweCAwIDA7IH1cclxufVxyXG5cclxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XHJcbiAgLm1jaGF0LWFpLW92ZXJsYXksXHJcbiAgLm1jaGF0LWFpLXBhbmVsIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XHJcbn1cclxuXHJcbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XHJcbiAgLm1jaGF0LWFpLXBhbmVsLFxyXG4gIC5tY2hhdC1kb3QgeyBhbmltYXRpb246IG5vbmU7IHRyYW5zaXRpb246IG5vbmU7IH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=*/