/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-1.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/dist/index.js??ruleSet[1].rules[6].use[0]!./interface/html5/components/login/TTMultiFactorAuthentication.vue?vue&type=style&index=0&id=4004deac&scoped=true&lang=css ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.checkbox-container[data-v-4004deac] {
  display: table;
  margin-top: 0.25rem;
}
.checkbox-container .checkbox-center[data-v-4004deac] {
  display: table-cell;
  vertical-align: middle;
  padding-left: 0.25rem;
}
.mfa-modal[data-v-4004deac] {
  background: rgba(0, 0, 0, 0.6);
  position: fixed;
  top: 0;
  width: 100%;
  height: 100%;
  z-index: 1000;
}
.mfa-modal-content[data-v-4004deac] {
  background-color: #f8f8f8;
  height: 30rem;
  width: 26rem;
  position: fixed;
  top: 50%;
  left: 50%;
  margin-top: -15rem;
  margin-left: -13rem;
  box-shadow: 5px 5px 8px 0px rgba(0, 0, 0, 0.3), 0 0 60px 5px rgba(0, 0, 0, 0.38);
}
.mfa-modal-close[data-v-4004deac] {
  font-size: 1.5rem;
  position: absolute;
  right: 0;
  margin: 0.75rem;
  cursor: pointer;
}
.mfa-modal-button[data-v-4004deac] {
  background: #426d9d;
  border: 0px solid #a1a3a6;
  color: #ffffff;
  width: 17rem;
  font-size: 1.15rem;
  border-radius: 4px;
  margin-bottom: 1rem;
  height: 3.25rem;
  position: absolute;
  left: 4.5rem;
  bottom: 0.5rem;
  text-decoration: none;
  font-weight: 1000;
}
.mfa-modal-image[data-v-4004deac] {
  display: block;
  margin: 25px auto 15px auto;
  width: 80px;
  height: 80px;
}
.mfa-modal-title[data-v-4004deac] {
  text-align: center;
  font-weight: 1000;
}
.mfa-modal-body[data-v-4004deac] {
  text-align: center;
  height: 5rem;
  display: -webkit-flex;
  display: flex;
  align-items: center;
  padding-left: 3rem;
  padding-right: 3rem;
  font-size: 1.2rem;
}
.form-container .password-container[data-v-4004deac] {
  position: absolute;
  top: 55%;
  width: 100%;
}
.form-container .checkbox-container[data-v-4004deac] {
  position: absolute;
  top: 73%;
  width: 100%;
  margin-left: 15%;
}
.resend-button[data-v-4004deac] {
  background: #ffffff;
  color: #000000;
  border: 1px solid #000000;
}
.password-label[data-v-4004deac] {
  margin: 0 0 3px 10%;
  font-size: 1rem;
  font-weight: lighter;
}
[data-v-4004deac] .mfa-modal-content .p-password {
  width: 80%;
  margin-left: 10%;
}
[data-v-4004deac] .mfa-modal-content #password-input {
  width: 100%;
}
[data-v-4004deac] .p-progress-spinner-circle {
  animation: p-progress-spinner-dash 1.5s ease-in-out infinite,custom-progress-spinner-color-4004deac 6s ease-in-out infinite;
}
@keyframes custom-progress-spinner-color-4004deac {
100%, 0% {
    stroke: #000000;
}
40% {
    stroke: #000000;
}
66% {
    stroke: #000000;
}
80%, 90% {
    stroke: #000000;
}
}
[data-v-4004deac] .p-progress-spinner-svg {
  width: 50px;
  height: 50px;
  margin-bottom: 80px;
}
[data-v-4004deac] .p-progress-spinner {
  position: relative;
  top: 16%;
  left: 44%;
}
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-1.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/dist/index.js??ruleSet[1].rules[6].use[0]!./interface/html5/components/TTTopbar.vue?vue&type=style&index=0&id=16291204&scoped=true&lang=css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.layout-wrapper .topbar[data-v-16291204] {
  padding: 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.left-group[data-v-16291204] {
  display: flex;
  align-items: center;
  /* No padding-left here, as it's put in the menu-button to make for better shaped selection border/accessibility border) */
}
.right-group[data-v-16291204] {
  display: flex;
  align-items: center;
  padding-right: 5px;
}
.layout-wrapper .topbar .menu-button[data-v-16291204] {
  width: auto;
  margin-top: 0; /* This overrides the apollo -10px but does not work with our flexbox model */
  margin-left: 5px; /* This overrides the apollo margin-left: 30px and balances the left and right spacing around the menu button in static and overlay menu mode. */
  margin-right: 5px;
  padding-left: 10px;
  padding-right: 10px;
}
.layout-wrapper .topbar .menu-button[data-v-16291204]:focus {
  outline: none;
  box-shadow: none;
}
.layout-wrapper.layout-slim .topbar .menu-button[data-v-16291204], .layout-wrapper.layout-horizontal .topbar .menu-button[data-v-16291204] {
  display: inline-block; /* Override hidden on slim and horizontal layout. Matches the behaviour for static menu, so that the menu button is visible on slim and horizontal mode, and we can use it to toggle between static, slim and horizontal. */
}
.layout-wrapper .topbar .menu-button i[data-v-16291204] {
  font-size: 20px;
}
.layout-wrapper .topbar .logo-link[data-v-16291204] {
  /* Overrides the fixed 185px width for the logo from PrimeVue */
  width: auto;
  max-width: 185px;
}
.company-logo-container[data-v-16291204] {
  background: #ffffff;
  margin-left: 5px; /* Separates the logo from the left egde of the page in Slim Menu mode. */
  padding: 5px;
  border-radius: 4px;
}
.slash-line[data-v-16291204] {
  position: relative;
  display: inline-block;
  margin-left: 20px;
  /*padding-left: 5px;*/
  color: #ffffff;
}
.slash-line[data-v-16291204]:before {
  content: "";
  position: absolute;
  top: -50%;
  left: -10px;
  height: 200%;
  width: 1px;
  background: #ffffff;
  /*transform: skewX(338deg);*/
  /*transform-origin: bottom right;*/
}
.profile[data-v-16291204] {
  padding-left: 8px; /* Ensures the active outline box for accessibility looks nicer with a slight gap all around rather than no gap between border and text. */
  padding-right: 5px; /* Ensures the active outline box for accessibility looks nicer with a slight gap all around rather than no gap between border and text. */
  margin-right: 5px;
  margin-top: 0 !important;
}
.topbar-icon[data-v-16291204] {
  margin: 5px 7px;
}
.topbar-icon .tticon[data-v-16291204] {
  color: #ffffff;
  font-size: 2rem !important;
  cursor: pointer;
}
.layout-wrapper .topbar .username[data-v-16291204] {
  font-weight: 700;
  font-size: 13px;
  font-family: Lucida Grande, Lucida Sans, Arial, sans-serif;
}
.layout-wrapper .topbar .company-name[data-v-16291204] {
  font-size: 13px;
  font-weight: bold;
}
.layout-wrapper .topbar .topbar-menu[data-v-16291204] {
  right: 5px; /* Bring it closer to the edge, so it looks less like its under the bell, and more under the profile menu. */
}
.topbar .topbar-item-name[data-v-16291204] {
  font-size: 13px;
  font-family: Lucida Grande, Lucida Sans, Arial, sans-serif;
}
.profile-image-holder[data-v-16291204] {
  width: 40px;
  height: 40px;
  vertical-align: middle;
  overflow: hidden;
  margin-right: 8px;
  display: inline-block;
  border-radius: 50%;
}
.profile-image[data-v-16291204] {
  height: 40px;
  object-fit: cover;
}
.profile-menu-separator[data-v-16291204] {
  border-top: 1px solid #dee2e6;
  margin: 0.25rem 0;
}
.sandbox-title[data-v-16291204] {
  font-size: 24px;
  color: white;
}
[data-v-16291204] .profile .p-overlay-badge .p-badge {
  right: 23px;
  top: -5px;
}
[data-v-16291204] .topbar-notification-bell .p-badge {
  top: 1px; /* This is to ensure notification badge is at same height as the profile badge */
  right: 3px; /* Reduce overlap with help icon */
}
.topbar .profile-menu-item .p-link[data-v-16291204] {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.profile-menu-item .topbar-item-name[data-v-16291204] {
  flex: 1;
}
.topbar .profile-menu-item .p-overlay-badge[data-v-16291204] {
  margin-right: 9px;
}
.job-queue-spinner[data-v-16291204] {
  margin-right: 5px;
}
.job-queue-list[data-v-16291204] {
  padding: 0 10px 0 10px;
}
.job-queue-item[data-v-16291204] {
  margin: 10px;
}
.job-queue-item-summary[data-v-16291204] {
  font-weight: 600;
}
.job-queue-item-detail[data-v-16291204] {
  color: #6c757d;
}
[data-v-16291204] .p-progress-spinner-circle {
  animation: p-progress-spinner-dash 1.5s ease-in-out infinite,custom-progress-spinner-color-16291204 6s ease-in-out infinite;
}
@keyframes custom-progress-spinner-color-16291204 {
100%, 0% {
    stroke: #ffffff;
}
40% {
    stroke: #ffffff;
}
66% {
    stroke: #ffffff;
}
80%, 90% {
    stroke: #ffffff;
}
}
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-1.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/dist/index.js??ruleSet[1].rules[6].use[0]!./interface/html5/components/TTTopContainer.vue?vue&type=style&index=0&id=7d68a60c&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.layout-topbar[data-v-7d68a60c] {
  height: 50px;
  /*padding: 16px 20px 0 20px;*/
  /*background: #32679b;*/
}
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-1.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/dist/index.js??ruleSet[1].rules[6].use[0]!./interface/html5/components/main_menu/TTMenuSearch.vue?vue&type=style&index=0&id=45b2531e&scoped=true&lang=css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.tt-menu-search-container[data-v-45b2531e] {
  margin: 5px;
  width: 100%;
}
.search-separator[data-v-45b2531e] {
  border-top: 1px solid #dee2e6;
}
[data-v-45b2531e] .tt-menu-search {
  width: calc(100% - 10px);
}
[data-v-45b2531e] .p-inputtext {
  width: 100%;
}
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-1.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/dist/index.js??ruleSet[1].rules[6].use[0]!./interface/html5/components/TTLeftContainer.vue?vue&type=style&index=0&id=60ccf40a&lang=css ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* Warning: These styles get applied globally. They are not scoped. */
/* TODO: Future refactor: Worth moving a lot of these menu styles over to the actual components/main_menu/TTAppMenu.vue file as some are more directly relevant there to the menu rather than the left container. */
/* Overrides for left menu up/down in/out transitions */
.layout-wrapper .layout-menu-container .layout-menu li ul.layout-submenu-container-leave-active {
  transition-duration: 0s; /* Overrides Apollo default: 0.45s */
}
.layout-wrapper .layout-menu-container .layout-menu li ul.layout-submenu-container-enter-active {
  /*transition: max-height 1s ease-in-out;*/
  transition-duration: 0.2s; /* Overrides Apollo default: 1s */
}
.layout-wrapper .layout-menu-container.layout-menu-container-enter-to {
  transition-duration: 0.2s !important; /* Overrides Apollo default: 1s */
}

/* Hide left main menu scrollbar with a mask until user mouseovers the menu and the menu is large enough to warrant a scrollbar. Mouseover and size check done in JavaScript */
.layout-static .layout-menu-content, .layout-overlay .layout-menu-content {
  overflow-y: scroll;
  mask-image: linear-gradient(0deg, transparent, #000000), linear-gradient(270deg, transparent 17px, #000000 0);
  mask-size: 100% 20000px;
  mask-position: left bottom;
  -webkit-mask-image: linear-gradient(0deg, transparent, #000000), linear-gradient(270deg, transparent 17px, #000000 0);
  -webkit-mask-size: 100% 20000px;
  -webkit-mask-position: left bottom;
  transition: mask-position 0.3s, -webkit-mask-position 0.3s;
}

/*.layout-wrapper.layout-overlay .layout-menu-container,
.layout-wrapper.layout-static .layout-menu-container {
    overflow-y: scroll; !* Force permanent vertical scrollbar space so that the content like menu arrows dont flash/move around when toggling between open/closed menu groups *!
}*/
/* --- Animation and style settings for menu mode toggle from static to slim and back --- */
/* Do not animate width change from slim to static, no matter now fast, text still gets squashed/wrapped. */
/*.layout-wrapper.layout-static .layout-menu-container {*/
/*    transition: width 0.01s; !* From static to slim, do it fast, so the text is not squashed/wrapped during animation. *!*/
/*}*/
.layout-wrapper.layout-slim .layout-menu-container {
  transition: width 0.2s; /* From static to slim, can be slow, but not too slow, because the text dissappears before animation finishes. */
}
.layout-wrapper.layout-slim .layout-menu-container .layout-menu > li > a {
  text-align: left; /* Without this, text jumps left/right during menu state change width animation */
  padding-left: 12px; /* With the text align left above, this ensures icon is still centered in slim mode during and after animation. Trial & error value. */
}
.layout-wrapper .layout-menu-container .layout-menu li > a i {
  line-height: 22px; /* Sets icon line height equal to .layout-menuitem-toggler so that the icons dont move up/down during transition to/from slim/static mode */
}
.layout-wrapper.layout-slim .layout-menu-container {
  width: 42px; /* Sets width of slim menu via a trial & error value that ensures icon stays in same place between slim/static mode toggle. */
}
.layout-wrapper.layout-slim .layout-menu-container .layout-menu > li > a i:first-child {
  font-size: 14px; /* Matches font size for static mode, so icon size stays consistent during mode toggle */
}
.layout-wrapper.layout-overlay .layout-menu-container .layout-menu-title, .layout-wrapper.layout-static .layout-menu-container .layout-menu-title {
  padding: 8px; /* To bring the menu header border-bottom line more inline with the bottom of the context menu */
}
.layout-wrapper.layout-static .layout-menu-container .layout-menu-footer {
  padding-bottom: 0;
}
.feedback-link-container {
  margin-top: 10px;
}
.layout-menu-footer-content {
  padding: 5px 8px;
}
.layout-menu-footer-content,
.layout-wrapper.layout-overlay .layout-menu-container .layout-menu-footer .layout-menu-footer-content,
.layout-wrapper.layout-static .layout-menu-container .layout-menu-footer .layout-menu-footer-content {
  /* Override the base primevue styles */
  border-top: 1px solid #dee2e6;
  text-align: center;
}
.signal-copyright-container {
  margin-top: 5px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.copy-right-info {
  margin-top: 2px;
  font-size: 10px;
  padding-top: 5px;
}
.layout-wrapper .layout-menu-container .layout-menu-content .layout-menu li > a {
  font-size: 13px;
  color: #3b3b3b;
}
.layout-static .layout-main-menu > li.active-menuitem {
  border: 1px solid #dbdee1;
  border-radius: 2px;
}
.layout-static .layout-main-menu > li {
  margin-left: 5px;
  margin-right: 5px;
  border: 1px solid transparent;
}
#tt_main_ui .layout-wrapper.layout-static .layout-menu-container .layout-menu li.p-menu-separator {
  margin-left: 5px;
  margin-right: 5px;
}
.layout-wrapper.layout-horizontal .layout-menu-container .layout-menu > li > a {
  padding: 9px; /* Centers the vertical alignment of the horizontal menu items */
}
.layout-menu .active-menuitem > ul {
  z-index: 10; /* #3065 Ensures the active menu items are shown properly and not transparently mixing in with the main menu items behind it, making the active menu items unreadable. Especially in horizontal menu mode. */
}
.layout-wrapper.layout-static .layout-menu-container .layout-menu-content {
  height: calc(100% - 37px); /*Adjustment required to take into account the search bar height*/
}
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-1.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/dist/index.js??ruleSet[1].rules[6].use[0]!./interface/html5/components/TTMainUI.vue?vue&type=style&index=0&id=8fdc2226&lang=css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************/
.login-bg .hide-in-login {
  display: none;
}
.layout-wrapper.layout-static .layout-content {
  padding-top: 0 !important; /* This is just TEMP to remove the padding for unused breadcrumb. */
}
.bottom-container {
  margin-left: 245px; /* TODO this needs to be adjusted. But this footer will likely go into the left menu bottom. */
}
.layout-wrapper .layout-content .layout-content-container {
  display: flex; /* To accompany the flex: 1 1 0 coming from PrimeVue styling. This will correctly align the child components. */
  padding: 0; /* Remove padding around the main content area. Conflicting with apollo theming. */
}

/* TODO: Possibly temp styles below. Doing this for horizontal menu mode */
.layout-wrapper.layout-horizontal .layout-content {
  padding-top: 1px;
}
@media (min-width: 1024px) {
.layout-wrapper.layout-horizontal .layout-menu-container {
    position: static;
    top: auto;
    left: auto;
}
}
.layout-wrapper.layout-horizontal .layout-menu-container .layout-menu > li > a {
  height: 40px; /* To override the 50px forced height in PrimeVue, which makes the menu taller than it needs to be. */
}
.layout-wrapper.layout-horizontal .layout-menu-container .layout-menu > li.active-menuitem > ul {
  top: 40px; /* To match to the adjusted height above of .layout-content */
  z-index: 100; /* To ensure the dropdown menu items are always on top of edit views. */
}
.layout-wrapper.layout-slim .layout-content {
  padding-top: 0;
  margin-left: 42px; /* Match new slim menu width. */
}
.layout-wrapper.layout-slim .layout-menu-container .layout-menu > li > ul {
  left: 42px; /* Match new slim menu width. TODO: Best to update this in the primevue scss source file instead, but dont want to do that until we have to import the whole menu code, as it complicated upgrade steps upon new versions. */
}
.layout-wrapper.layout-static .layout-menu-container {
  overflow: visible;
}

/* TODO: temp to move config menu button out of the way */
.layout-config .layout-config-content .layout-config-button {
  top: initial;
  bottom: 100px;
  opacity: 0.8;
}

/* Color overrides. Should eventually go into the SCSS sources */
.layout-wrapper .topbar {
  background-color: #32689b;
}
#tt_main_ui .layout-wrapper .topbar .menu-button {
  margin-left: 0;
  margin-right: 0;
  width: 42px;
}

/* Hide bottom red border, as everything in here should now have moved to the left menu. Note, this also affects the pagination controls at the bottom. */
/* This may need to be expanded to remove the html grid-bottom-border and bottom-div */
.view .bottom-div,
.edit-view .grid-bottom-border, .view .grid-bottom-border,
.grid-bottom-border {
  display: none;
  background: none;
  height: 0;
}

/* Sub Views need bottom paging div to be visible. */
.view.sub-view .bottom-div {
  display: block;
  height: auto;
}

/* Styles to hide the topbar during the transition period */
/* Note: The ribbon menu top bar height is 30px */
/*.top-container .ui-tabs .ui-tabs-nav,*/
/*.top-container .right-tab-bg,*/
/*.ribbon-view .right-logo,*/
/*.ribbon-view .left-logo {*/
/*  display: none;*/
/*}*/
/*.top-container {*/
/*  height: 134px; !* 164px - 30 *!*/
/*}*/
/* Context Menu - Some context menu styles here because overlay menu dropdown attaches to body so needs global styling, and hence want to keep the font sizing all in one place. */
.context-menu-bar span,
.p-menu-overlay span {
  font-size: 14px;
}
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-1.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/dist/index.js??ruleSet[1].rules[6].use[0]!./interface/html5/components/context_menu/PrimeVueSplitButton.vue?vue&type=style&index=0&id=2e819036&scoped=true&lang=css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.p-splitbutton[data-v-2e819036] {
  display: inline-flex;
  position: relative;
}
.p-splitbutton .p-splitbutton-defaultbutton[data-v-2e819036] {
  flex: 1 1 auto;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
  border-right: 0 none;
}
.p-splitbutton-menubutton[data-v-2e819036] {
  display: flex;
  align-items: center;
  justify-content: center;
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}
.p-splitbutton .p-menu[data-v-2e819036] {
  min-width: 100%;
}
.p-fluid .p-splitbutton[data-v-2e819036] {
  display: flex;
}
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-1.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/dist/index.js??ruleSet[1].rules[6].use[0]!./interface/html5/components/context_menu/TTOverlayMenuButton.vue?vue&type=style&index=0&id=0c86793e&scoped=true&lang=css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.tt-overlaymenu[data-v-0c86793e] { /* Copy the p-splitbutton CSS to allow in-line display */
  display: inline-flex;
}
.menu-button[data-v-0c86793e] {
  width: 100%;
}
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-1.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/dist/index.js??ruleSet[1].rules[6].use[0]!./interface/html5/components/context_menu/TTOverlayMultiSelectButton.vue?vue&type=style&index=0&id=1c232f67&scoped=true&lang=css ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.tt-overlaymenu[data-v-1c232f67] { /* Copy the p-splitbutton CSS to allow in-line display */
  display: inline-flex;
}
.menu-button[data-v-1c232f67] {
  width: 100%;
}
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-1.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/dist/index.js??ruleSet[1].rules[6].use[0]!./interface/html5/components/context_menu/TTContextButton.vue?vue&type=style&index=0&id=d1f1217e&scoped=true&lang=css ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.menu-item[data-v-d1f1217e] {
  /*flex: 1 1 0; !* Uncomment to spread out the buttons at equal sized. This together with the styles in TTContextMenu.vue will make all the buttons the same size, regardless of internal padding *!*/
  /*margin-top: 5px;*/ /* Removed the top padding to make it more balanced until we decide how these buttons will look, as bottom padding cannot be applied simply, due to it looking odd when an edit view is open. */
  margin-left: 5px;
}
.menu-item[data-v-d1f1217e]:first-child {
  margin-left: 0; /* outer padding controlled by overall .context-menu-bar */
}
[data-v-d1f1217e] .p-button {
  height: 100%; /* To ensure the max available height is used, and then all menu buttons will be same height (without this, splitbutton is taller than single button) */
  background: #fff; /* Previously #f8f9fa but the contrast against the background was not great. */
  color: #32689b; /* This will also set the icon colour to this. */
  border-color: #e1e1e1; /* add outline to the vue context menu buttons. improves splitbutton visual. */
  padding: 0.4rem 0.6rem; /* To match figma design */
}
[data-v-d1f1217e] .p-button .p-button-label {
  color: #3b3b3b;
  text-align: left; /* Edit button label looks odd if centered with the extra width for mass edit. left align looks better. */
}
[data-v-d1f1217e] .p-button:enabled:hover .p-button-label {
  color: #fff;
}
[data-v-d1f1217e] .p-button:disabled {
  opacity: 0.4; /* Previously 0.6 same as .p-component:disabled, but the contrast against enabled and contextmenu background was not good enough. */
  color: #cacaca;
  border-color: #cacaca;
}

/* Works together with the dynamic class for item.action_group_id set in TTContextMenu.vue Perhaps refactor to be JS based with a v-if */
/*.sub-view .menu-item.left-cancelIcon,*/
/*.sub-view .menu-item.center-cancelIcon,*/
/*.sub-view .menu-item.right-cancelIcon {*/
/*    display: none; !* Cancel button is not applicable on subview menus *!*/
/*}*/
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-1.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/dist/index.js??ruleSet[1].rules[6].use[0]!./interface/html5/components/context_menu/TTContextMenu.vue?vue&type=style&index=0&id=57d29ea4&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* Hide icons from dropdown menus of context buttons and not the buttons themselves. */
.p-menuitem-link .p-menuitem-icon {
  display: none;
}

/* Icons can be displayed in dropdowns by using the class "tticon-show-in-dropdown"
   for example: Multi-select (radio and check boxes) still need to be displayed.
*/
.p-menuitem-link .tticon-show-in-dropdown {
  display: inline;
}
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-1.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/dist/index.js??ruleSet[1].rules[6].use[0]!./interface/html5/components/context_menu/TTContextMenu.vue?vue&type=style&index=1&id=57d29ea4&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.context-menu-bar[data-v-57d29ea4] {
  display: flex;
  justify-content: space-between;
  /*background: #e9ecef; !* Chose #e9ecef, previously #ced4da but looked too dark once the rest of the page background is white/off-white. *!*/
  margin-bottom: 10px;
  padding-bottom: 5px; /* To balance out the top padding applied from .context-border padding. Trying 5px instead of 10px to balance out closeness of the context-border heading to the menu, but now top and bottom not equal but might be ok. */
  border-bottom: 1px solid #dbdee1;
}
.left-container[data-v-57d29ea4],
.center-container[data-v-57d29ea4],
.right-container[data-v-57d29ea4] {
  display: flex;
  justify-content: flex-start;
  padding: 4px; /* To match figma design */
}
.no-wrap[data-v-57d29ea4] {
  white-space: nowrap;
}
.p-menuitem-icon[data-v-57d29ea4] {
  display: none;
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbl91aS5jc3M/dj0xNzZlOGQxNGQ3YzMzNjY5ZmE2YyIsIm1hcHBpbmdzIjoiOzs7QUFDQTtFQUNJO0VBQ0E7QUNBSjtBREdBO0VBQ0k7RUFDQTtFQUNBO0FDQUo7QURHQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQ0FKO0FER0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUNBSjtBREdBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQ0FKO0FER0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQ0FKO0FER0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBQ0FKO0FER0E7RUFDSTtFQUNBO0FDQUo7QURHQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUNBSjtBREdBO0VBQ0k7RUFDQTtFQUNBO0FDQUo7QURHQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FDQUo7QURHQTtFQUNJO0VBQ0E7RUFDQTtBQ0FKO0FER0E7RUFDSTtFQUNBO0VBQ0E7QUNBSjtBREdBO0VBQ0k7RUFDQTtBQ0FKO0FER0E7RUFDSTtBQ0FKO0FER0E7RUFDSTtBQ0FKO0FER0E7QUFDSTtJQUVJO0FDRE47QURHRTtJQUNJO0FDRE47QURHRTtJQUNJO0FDRE47QURHRTtJQUVJO0FDRk47QUFDRjtBREtBO0VBQ0k7RUFDQTtFQUNBO0FDSEo7QURNQTtFQUNJO0VBQ0E7RUFDQTtBQ0hKLEM7Ozs7QUM1SUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBQ0FKO0FER0E7RUFDSTtFQUNBO0VBQ0E7QUNBSjtBREdBO0VBQ0k7RUFDQTtFQUNBO0FDQUo7QURHQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQ0FKO0FER0E7RUFDSTtFQUNBO0FDQUo7QURHQTtFQUNJO0FDQUo7QURHQTtFQUNJO0FDQUo7QURHQTtFQUNJO0VBQ0E7RUFDQTtBQ0FKO0FER0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBQ0FKO0FER0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FDQUo7QURHQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQ0FKO0FER0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBQ0FKO0FER0E7RUFDSTtBQ0FKO0FER0E7RUFDSTtFQUNBO0VBQ0E7QUNBSjtBREdBO0VBQ0k7RUFDQTtFQUNBO0FDQUo7QURHQTtFQUNJO0VBQ0E7QUNBSjtBREdBO0VBQ0k7QUNBSjtBREdBO0VBQ0k7RUFDQTtBQ0FKO0FER0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQ0FKO0FER0E7RUFDSTtFQUNBO0FDQUo7QURHQTtFQUNJO0VBQ0E7QUNBSjtBREdBO0VBQ0k7RUFDQTtBQ0FKO0FER0E7RUFDSTtFQUNBO0FDQUo7QURHQTtFQUNJO0VBQ0E7QUNBSjtBREdBO0VBQ0k7RUFDQTtFQUNBO0FDQUo7QURHQTtFQUNJO0FDQUo7QURHQTtFQUNJO0FDQUo7QURHQTtFQUNJO0FDQUo7QURHQTtFQUNJO0FDQUo7QURHQTtFQUNJO0FDQUo7QURHQTtFQUNJO0FDQUo7QURHQTtFQUNJO0FDQUo7QURJQTtFQUNJO0FDREo7QURJQTtBQUNJO0lBRUk7QUNGTjtBRElFO0lBQ0k7QUNGTjtBRElFO0lBQ0k7QUNGTjtBRElFO0lBRUk7QUNITjtBQUNGLEM7Ozs7QUNwTUE7RUFDRTtFQUNBO0VBQ0E7QUNBRixDOzs7O0FDSEE7RUFDSTtFQUNBO0FDQUo7QURHQTtFQUNJO0FDQUo7QURHQTtFQUNJO0FDQUo7QURHQTtFQUNJO0FDQUosQzs7OztBQ2RBO0FBRUE7QUFFQTtBQUNBO0VBQ0k7QUNGSjtBREtBO0VBQ0k7RUFDQTtBQ0ZKO0FES0E7RUFDSTtBQ0ZKOztBREtBO0FBQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FDRko7O0FES0E7OztFQUFBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0VBQ0k7QUNMSjtBRFFBO0VBQ0k7RUFDQTtBQ0xKO0FET0E7RUFDSTtBQ0pKO0FET0E7RUFDSTtBQ0pKO0FET0E7RUFDSTtBQ0pKO0FET0E7RUFDSTtBQ0pKO0FET0E7RUFDSTtBQ0pKO0FETUE7RUFDSTtBQ0hKO0FES0E7RUFDSTtBQ0ZKO0FESUE7OztFQUdJO0VBQ0E7RUFDQTtBQ0RKO0FER0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBQ0FKO0FERUE7RUFDSTtFQUNBO0VBQ0E7QUNDSjtBRENBO0VBQ0k7RUFDQTtBQ0VKO0FEQ0E7RUFDSTtFQUNBO0FDRUo7QURDQTtFQUNJO0VBQ0E7RUFDQTtBQ0VKO0FEQ0E7RUFDSTtFQUNBO0FDRUo7QURDQTtFQUNJO0FDRUo7QURDQTtFQUNJO0FDRUo7QURDQTtFQUNJO0FDRUosQzs7OztBQzdIQTtFQUNJO0FDQUo7QURHQTtFQUNJO0FDQUo7QURHQTtFQUNJO0FDQUo7QURHQTtFQUNJO0VBQ0E7QUNBSjs7QURHQTtBQUNBO0VBQ0k7QUNBSjtBREVBO0FBQ0k7SUFDSTtJQUNBO0lBQ0E7QUNDTjtBQUNGO0FERUE7RUFDSTtBQ0FKO0FERUE7RUFDSTtFQUNBO0FDQ0o7QURFQTtFQUNJO0VBQ0E7QUNDSjtBREVBO0VBQ0k7QUNDSjtBREVBO0VBQ0k7QUNDSjs7QURFQTtBQUNBO0VBQ0k7RUFDQTtFQUNBO0FDQ0o7O0FERUE7QUFDQTtFQUNJO0FDQ0o7QURFQTtFQUNJO0VBQ0E7RUFDQTtBQ0NKOztBREVBO0FBQ0E7QUFDQTs7O0VBR0k7RUFDQTtFQUNBO0FDQ0o7O0FEQ0E7QUFDQTtFQUNJO0VBQ0E7QUNFSjs7QURDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7RUFFSTtBQ0NKLEM7Ozs7QUNuR0E7RUFDSTtFQUNBO0FDQUo7QURHQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FDQUo7QURHQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUNBSjtBREdBO0VBQ0k7QUNBSjtBREdBO0VBQ0k7QUNBSixDOzs7O0FDekJBO0VBQ0k7QUNBSjtBREVBO0VBQ0k7QUNDSixDOzs7O0FDTEE7RUFDSTtBQ0FKO0FERUE7RUFDSTtBQ0NKLEM7Ozs7QUNMQTtFQUNJO0VBQ0E7RUFDQTtBQ0FKO0FERUE7RUFDSTtBQ0NKO0FEQ0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FDRUo7QURBQTtFQUNJO0VBQ0E7QUNHSjtBRERBO0VBQ0k7QUNJSjtBREZBO0VBQ0k7RUFDQTtFQUNBO0FDS0o7O0FESEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEs7Ozs7QUVoQ0E7QUFDQTtFQUNJO0FDQUo7O0FERUE7O0NBQUE7QUFHQTtFQUNJO0FDQ0osQzs7OztBRFRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FDQUo7QURFQTs7O0VBR0k7RUFDQTtFQUNBO0FDQ0o7QURDQTtFQUNJO0FDRUo7QURBQTtFQUNJO0FDR0osQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2ludGVyZmFjZS9odG1sNS9jb21wb25lbnRzL2xvZ2luL1RUTXVsdGlGYWN0b3JBdXRoZW50aWNhdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vVFRNdWx0aUZhY3RvckF1dGhlbnRpY2F0aW9uLnZ1ZSIsIndlYnBhY2s6Ly8vLi9pbnRlcmZhY2UvaHRtbDUvY29tcG9uZW50cy9UVFRvcGJhci52dWUiLCJ3ZWJwYWNrOi8vLy4vVFRUb3BiYXIudnVlIiwid2VicGFjazovLy8uL2ludGVyZmFjZS9odG1sNS9jb21wb25lbnRzL1RUVG9wQ29udGFpbmVyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9UVFRvcENvbnRhaW5lci52dWUiLCJ3ZWJwYWNrOi8vLy4vaW50ZXJmYWNlL2h0bWw1L2NvbXBvbmVudHMvbWFpbl9tZW51L1RUTWVudVNlYXJjaC52dWUiLCJ3ZWJwYWNrOi8vLy4vVFRNZW51U2VhcmNoLnZ1ZSIsIndlYnBhY2s6Ly8vLi9pbnRlcmZhY2UvaHRtbDUvY29tcG9uZW50cy9UVExlZnRDb250YWluZXIudnVlIiwid2VicGFjazovLy8uL1RUTGVmdENvbnRhaW5lci52dWUiLCJ3ZWJwYWNrOi8vLy4vaW50ZXJmYWNlL2h0bWw1L2NvbXBvbmVudHMvVFRNYWluVUkudnVlIiwid2VicGFjazovLy8uL1RUTWFpblVJLnZ1ZSIsIndlYnBhY2s6Ly8vLi9pbnRlcmZhY2UvaHRtbDUvY29tcG9uZW50cy9jb250ZXh0X21lbnUvUHJpbWVWdWVTcGxpdEJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vUHJpbWVWdWVTcGxpdEJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vaW50ZXJmYWNlL2h0bWw1L2NvbXBvbmVudHMvY29udGV4dF9tZW51L1RUT3ZlcmxheU1lbnVCdXR0b24udnVlIiwid2VicGFjazovLy8uL1RUT3ZlcmxheU1lbnVCdXR0b24udnVlIiwid2VicGFjazovLy8uL2ludGVyZmFjZS9odG1sNS9jb21wb25lbnRzL2NvbnRleHRfbWVudS9UVE92ZXJsYXlNdWx0aVNlbGVjdEJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vVFRPdmVybGF5TXVsdGlTZWxlY3RCdXR0b24udnVlIiwid2VicGFjazovLy8uL2ludGVyZmFjZS9odG1sNS9jb21wb25lbnRzL2NvbnRleHRfbWVudS9UVENvbnRleHRCdXR0b24udnVlIiwid2VicGFjazovLy8uL1RUQ29udGV4dEJ1dHRvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vaW50ZXJmYWNlL2h0bWw1L2NvbXBvbmVudHMvY29udGV4dF9tZW51L1RUQ29udGV4dE1lbnUudnVlIiwid2VicGFjazovLy8uL1RUQ29udGV4dE1lbnUudnVlIl0sInNvdXJjZXNDb250ZW50IjpbIlxuLmNoZWNrYm94LWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbn1cblxuLmNoZWNrYm94LWNvbnRhaW5lciAuY2hlY2tib3gtY2VudGVyIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtO1xufVxuXG4ubWZhLW1vZGFsIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIC42KTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDAwO1xufVxuXG4ubWZhLW1vZGFsLWNvbnRlbnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGY4Zjg7XG4gICAgaGVpZ2h0OiAzMHJlbTtcbiAgICB3aWR0aDogMjZyZW07XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiAtMTVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0xM3JlbTtcbiAgICBib3gtc2hhZG93OiA1cHggNXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjMpLCAwIDAgNjBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjM4KTtcbn1cblxuLm1mYS1tb2RhbC1jbG9zZSB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgIG1hcmdpbjogLjc1cmVtO1xuICAgIGN1cnNvcjogcG9pbnRlclxufVxuXG4ubWZhLW1vZGFsLWJ1dHRvbiB7XG4gICAgYmFja2dyb3VuZDogIzQyNmQ5ZDtcbiAgICBib3JkZXI6IDBweCBzb2xpZCAjYTFhM2E2O1xuICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIHdpZHRoOiAxN3JlbTtcbiAgICBmb250LXNpemU6IDEuMTVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgaGVpZ2h0OiAzLjI1cmVtO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiA0LjVyZW07XG4gICAgYm90dG9tOiAuNXJlbTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZm9udC13ZWlnaHQ6IDEwMDA7XG59XG5cbi5tZmEtbW9kYWwtaW1hZ2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogMjVweCBhdXRvIDE1cHggYXV0bztcbiAgICB3aWR0aDogODBweDtcbiAgICBoZWlnaHQ6IDgwcHg7XG59XG5cbi5tZmEtbW9kYWwtdGl0bGUge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXdlaWdodDogMTAwMDtcbn1cblxuLm1mYS1tb2RhbC1ib2R5IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgaGVpZ2h0OiA1cmVtO1xuICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07XG4gICAgZm9udC1zaXplOiAxLjJyZW07XG59XG5cbi5mb3JtLWNvbnRhaW5lciAucGFzc3dvcmQtY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1NSU7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5mb3JtLWNvbnRhaW5lciAuY2hlY2tib3gtY29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA3MyU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWxlZnQ6IDE1JTtcbn1cblxuLnJlc2VuZC1idXR0b24ge1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgY29sb3I6ICMwMDAwMDA7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDAwMDtcbn1cblxuLnBhc3N3b3JkLWxhYmVsIHtcbiAgICBtYXJnaW46IDAgMCAzcHggMTAlO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBmb250LXdlaWdodDogbGlnaHRlcjtcbn1cblxuOjp2LWRlZXAoLm1mYS1tb2RhbC1jb250ZW50IC5wLXBhc3N3b3JkKSB7XG4gICAgd2lkdGg6IDgwJTtcbiAgICBtYXJnaW4tbGVmdDogMTAlO1xufVxuXG46OnYtZGVlcCgubWZhLW1vZGFsLWNvbnRlbnQgI3Bhc3N3b3JkLWlucHV0KSB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbjo6di1kZWVwKC5wLXByb2dyZXNzLXNwaW5uZXItY2lyY2xlKSB7XG4gICAgYW5pbWF0aW9uOiBwLXByb2dyZXNzLXNwaW5uZXItZGFzaCAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlLCBjdXN0b20tcHJvZ3Jlc3Mtc3Bpbm5lci1jb2xvciA2cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBjdXN0b20tcHJvZ3Jlc3Mtc3Bpbm5lci1jb2xvciB7XG4gICAgMTAwJSxcbiAgICAwJSB7XG4gICAgICAgIHN0cm9rZTogIzAwMDAwMDtcbiAgICB9XG4gICAgNDAlIHtcbiAgICAgICAgc3Ryb2tlOiAjMDAwMDAwO1xuICAgIH1cbiAgICA2NiUge1xuICAgICAgICBzdHJva2U6ICMwMDAwMDA7XG4gICAgfVxuICAgIDgwJSxcbiAgICA5MCUge1xuICAgICAgICBzdHJva2U6ICMwMDAwMDA7XG4gICAgfVxufVxuXG46OnYtZGVlcCgucC1wcm9ncmVzcy1zcGlubmVyLXN2Zykge1xuICAgIHdpZHRoOiA1MHB4O1xuICAgIGhlaWdodDogNTBweDtcbiAgICBtYXJnaW4tYm90dG9tOiA4MHB4O1xufVxuXG46OnYtZGVlcCgucC1wcm9ncmVzcy1zcGlubmVyKSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogMTYlO1xuICAgIGxlZnQ6IDQ0JTtcbn1cbiIsIi5jaGVja2JveC1jb250YWluZXIge1xuICBkaXNwbGF5OiB0YWJsZTtcbiAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbn1cblxuLmNoZWNrYm94LWNvbnRhaW5lciAuY2hlY2tib3gtY2VudGVyIHtcbiAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtO1xufVxuXG4ubWZhLW1vZGFsIHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjYpO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgei1pbmRleDogMTAwMDtcbn1cblxuLm1mYS1tb2RhbC1jb250ZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjhmODtcbiAgaGVpZ2h0OiAzMHJlbTtcbiAgd2lkdGg6IDI2cmVtO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIG1hcmdpbi10b3A6IC0xNXJlbTtcbiAgbWFyZ2luLWxlZnQ6IC0xM3JlbTtcbiAgYm94LXNoYWRvdzogNXB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4zKSwgMCAwIDYwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4zOCk7XG59XG5cbi5tZmEtbW9kYWwtY2xvc2Uge1xuICBmb250LXNpemU6IDEuNXJlbTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgbWFyZ2luOiAwLjc1cmVtO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5tZmEtbW9kYWwtYnV0dG9uIHtcbiAgYmFja2dyb3VuZDogIzQyNmQ5ZDtcbiAgYm9yZGVyOiAwcHggc29saWQgI2ExYTNhNjtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIHdpZHRoOiAxN3JlbTtcbiAgZm9udC1zaXplOiAxLjE1cmVtO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIGhlaWdodDogMy4yNXJlbTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiA0LjVyZW07XG4gIGJvdHRvbTogMC41cmVtO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGZvbnQtd2VpZ2h0OiAxMDAwO1xufVxuXG4ubWZhLW1vZGFsLWltYWdlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMjVweCBhdXRvIDE1cHggYXV0bztcbiAgd2lkdGg6IDgwcHg7XG4gIGhlaWdodDogODBweDtcbn1cblxuLm1mYS1tb2RhbC10aXRsZSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDEwMDA7XG59XG5cbi5tZmEtbW9kYWwtYm9keSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgaGVpZ2h0OiA1cmVtO1xuICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmctbGVmdDogM3JlbTtcbiAgcGFkZGluZy1yaWdodDogM3JlbTtcbiAgZm9udC1zaXplOiAxLjJyZW07XG59XG5cbi5mb3JtLWNvbnRhaW5lciAucGFzc3dvcmQtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDU1JTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5mb3JtLWNvbnRhaW5lciAuY2hlY2tib3gtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDczJTtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1sZWZ0OiAxNSU7XG59XG5cbi5yZXNlbmQtYnV0dG9uIHtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgY29sb3I6ICMwMDAwMDA7XG4gIGJvcmRlcjogMXB4IHNvbGlkICMwMDAwMDA7XG59XG5cbi5wYXNzd29yZC1sYWJlbCB7XG4gIG1hcmdpbjogMCAwIDNweCAxMCU7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgZm9udC13ZWlnaHQ6IGxpZ2h0ZXI7XG59XG5cbjo6di1kZWVwKC5tZmEtbW9kYWwtY29udGVudCAucC1wYXNzd29yZCkge1xuICB3aWR0aDogODAlO1xuICBtYXJnaW4tbGVmdDogMTAlO1xufVxuXG46OnYtZGVlcCgubWZhLW1vZGFsLWNvbnRlbnQgI3Bhc3N3b3JkLWlucHV0KSB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG46OnYtZGVlcCgucC1wcm9ncmVzcy1zcGlubmVyLWNpcmNsZSkge1xuICBhbmltYXRpb246IHAtcHJvZ3Jlc3Mtc3Bpbm5lci1kYXNoIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGUsIGN1c3RvbS1wcm9ncmVzcy1zcGlubmVyLWNvbG9yIDZzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIGN1c3RvbS1wcm9ncmVzcy1zcGlubmVyLWNvbG9yIHtcbiAgMTAwJSwgMCUge1xuICAgIHN0cm9rZTogIzAwMDAwMDtcbiAgfVxuICA0MCUge1xuICAgIHN0cm9rZTogIzAwMDAwMDtcbiAgfVxuICA2NiUge1xuICAgIHN0cm9rZTogIzAwMDAwMDtcbiAgfVxuICA4MCUsIDkwJSB7XG4gICAgc3Ryb2tlOiAjMDAwMDAwO1xuICB9XG59XG46OnYtZGVlcCgucC1wcm9ncmVzcy1zcGlubmVyLXN2Zykge1xuICB3aWR0aDogNTBweDtcbiAgaGVpZ2h0OiA1MHB4O1xuICBtYXJnaW4tYm90dG9tOiA4MHB4O1xufVxuXG46OnYtZGVlcCgucC1wcm9ncmVzcy1zcGlubmVyKSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAxNiU7XG4gIGxlZnQ6IDQ0JTtcbn0iLCJcbi5sYXlvdXQtd3JhcHBlciAudG9wYmFyIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5sZWZ0LWdyb3VwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgLyogTm8gcGFkZGluZy1sZWZ0IGhlcmUsIGFzIGl0J3MgcHV0IGluIHRoZSBtZW51LWJ1dHRvbiB0byBtYWtlIGZvciBiZXR0ZXIgc2hhcGVkIHNlbGVjdGlvbiBib3JkZXIvYWNjZXNzaWJpbGl0eSBib3JkZXIpICovXG59XG5cbi5yaWdodC1ncm91cCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmctcmlnaHQ6IDVweDtcbn1cblxuLmxheW91dC13cmFwcGVyIC50b3BiYXIgLm1lbnUtYnV0dG9uIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXJnaW4tdG9wOiAwOyAvKiBUaGlzIG92ZXJyaWRlcyB0aGUgYXBvbGxvIC0xMHB4IGJ1dCBkb2VzIG5vdCB3b3JrIHdpdGggb3VyIGZsZXhib3ggbW9kZWwgKi9cbiAgICBtYXJnaW4tbGVmdDogNXB4OyAvKiBUaGlzIG92ZXJyaWRlcyB0aGUgYXBvbGxvIG1hcmdpbi1sZWZ0OiAzMHB4IGFuZCBiYWxhbmNlcyB0aGUgbGVmdCBhbmQgcmlnaHQgc3BhY2luZyBhcm91bmQgdGhlIG1lbnUgYnV0dG9uIGluIHN0YXRpYyBhbmQgb3ZlcmxheSBtZW51IG1vZGUuICovXG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG59XG5cbi5sYXlvdXQtd3JhcHBlciAudG9wYmFyIC5tZW51LWJ1dHRvbjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xufVxuXG4ubGF5b3V0LXdyYXBwZXIubGF5b3V0LXNsaW0gLnRvcGJhciAubWVudS1idXR0b24sIC5sYXlvdXQtd3JhcHBlci5sYXlvdXQtaG9yaXpvbnRhbCAudG9wYmFyIC5tZW51LWJ1dHRvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvKiBPdmVycmlkZSBoaWRkZW4gb24gc2xpbSBhbmQgaG9yaXpvbnRhbCBsYXlvdXQuIE1hdGNoZXMgdGhlIGJlaGF2aW91ciBmb3Igc3RhdGljIG1lbnUsIHNvIHRoYXQgdGhlIG1lbnUgYnV0dG9uIGlzIHZpc2libGUgb24gc2xpbSBhbmQgaG9yaXpvbnRhbCBtb2RlLCBhbmQgd2UgY2FuIHVzZSBpdCB0byB0b2dnbGUgYmV0d2VlbiBzdGF0aWMsIHNsaW0gYW5kIGhvcml6b250YWwuICovXG59XG5cbi5sYXlvdXQtd3JhcHBlciAudG9wYmFyIC5tZW51LWJ1dHRvbiBpIHtcbiAgICBmb250LXNpemU6IDIwcHg7XG59XG5cbi5sYXlvdXQtd3JhcHBlciAudG9wYmFyIC5sb2dvLWxpbmsge1xuICAgIC8qIE92ZXJyaWRlcyB0aGUgZml4ZWQgMTg1cHggd2lkdGggZm9yIHRoZSBsb2dvIGZyb20gUHJpbWVWdWUgKi9cbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXgtd2lkdGg6IDE4NXB4O1xufVxuXG4uY29tcGFueS1sb2dvLWNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICBtYXJnaW4tbGVmdDogNXB4OyAvKiBTZXBhcmF0ZXMgdGhlIGxvZ28gZnJvbSB0aGUgbGVmdCBlZ2RlIG9mIHRoZSBwYWdlIGluIFNsaW0gTWVudSBtb2RlLiAqL1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG5cbi5zbGFzaC1saW5lIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICAgIC8qcGFkZGluZy1sZWZ0OiA1cHg7Ki9cbiAgICBjb2xvcjogI2ZmZmZmZjtcbn1cblxuLnNsYXNoLWxpbmU6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IC01MCU7XG4gICAgbGVmdDogLTEwcHg7XG4gICAgaGVpZ2h0OiAyMDAlO1xuICAgIHdpZHRoOiAxcHg7XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAvKnRyYW5zZm9ybTogc2tld1goMzM4ZGVnKTsqL1xuICAgIC8qdHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIHJpZ2h0OyovXG59XG5cbi5wcm9maWxlIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDhweDsgLyogRW5zdXJlcyB0aGUgYWN0aXZlIG91dGxpbmUgYm94IGZvciBhY2Nlc3NpYmlsaXR5IGxvb2tzIG5pY2VyIHdpdGggYSBzbGlnaHQgZ2FwIGFsbCBhcm91bmQgcmF0aGVyIHRoYW4gbm8gZ2FwIGJldHdlZW4gYm9yZGVyIGFuZCB0ZXh0LiAqL1xuICAgIHBhZGRpbmctcmlnaHQ6IDVweDsgLyogRW5zdXJlcyB0aGUgYWN0aXZlIG91dGxpbmUgYm94IGZvciBhY2Nlc3NpYmlsaXR5IGxvb2tzIG5pY2VyIHdpdGggYSBzbGlnaHQgZ2FwIGFsbCBhcm91bmQgcmF0aGVyIHRoYW4gbm8gZ2FwIGJldHdlZW4gYm9yZGVyIGFuZCB0ZXh0LiAqL1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuLnRvcGJhci1pY29uIHtcbiAgICBtYXJnaW46IDVweCA3cHg7XG59XG5cbi50b3BiYXItaWNvbiAudHRpY29uIHtcbiAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICBmb250LXNpemU6IDJyZW0gIWltcG9ydGFudDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5sYXlvdXQtd3JhcHBlciAudG9wYmFyIC51c2VybmFtZSB7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgZm9udC1mYW1pbHk6IEx1Y2lkYSBHcmFuZGUsIEx1Y2lkYSBTYW5zLCBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cblxuLmxheW91dC13cmFwcGVyIC50b3BiYXIgLmNvbXBhbnktbmFtZSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4ubGF5b3V0LXdyYXBwZXIgLnRvcGJhciAudG9wYmFyLW1lbnUge1xuICAgIHJpZ2h0OiA1cHg7IC8qIEJyaW5nIGl0IGNsb3NlciB0byB0aGUgZWRnZSwgc28gaXQgbG9va3MgbGVzcyBsaWtlIGl0cyB1bmRlciB0aGUgYmVsbCwgYW5kIG1vcmUgdW5kZXIgdGhlIHByb2ZpbGUgbWVudS4gKi9cbn1cblxuLnRvcGJhciAudG9wYmFyLWl0ZW0tbmFtZSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGZvbnQtZmFtaWx5OiBMdWNpZGEgR3JhbmRlLCBMdWNpZGEgU2FucywgQXJpYWwsIHNhbnMtc2VyaWY7XG59XG5cbi5wcm9maWxlLWltYWdlLWhvbGRlciB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuXG4ucHJvZmlsZS1pbWFnZSB7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xufVxuXG4ucHJvZmlsZS1tZW51LXNlcGFyYXRvciB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZWUyZTY7XG4gICAgbWFyZ2luOiAuMjVyZW0gMDtcbn1cblxuLnNhbmRib3gtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbjo6di1kZWVwKC5wcm9maWxlIC5wLW92ZXJsYXktYmFkZ2UgLnAtYmFkZ2UpIHtcbiAgICByaWdodDogMjNweDtcbiAgICB0b3A6IC01cHg7XG59XG5cbjo6di1kZWVwKC50b3BiYXItbm90aWZpY2F0aW9uLWJlbGwgLnAtYmFkZ2UpIHtcbiAgICB0b3A6IDFweDsgLyogVGhpcyBpcyB0byBlbnN1cmUgbm90aWZpY2F0aW9uIGJhZGdlIGlzIGF0IHNhbWUgaGVpZ2h0IGFzIHRoZSBwcm9maWxlIGJhZGdlICovXG4gICAgcmlnaHQ6IDNweDsgLyogUmVkdWNlIG92ZXJsYXAgd2l0aCBoZWxwIGljb24gKi9cbn1cblxuLnRvcGJhciAucHJvZmlsZS1tZW51LWl0ZW0gLnAtbGluayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnByb2ZpbGUtbWVudS1pdGVtIC50b3BiYXItaXRlbS1uYW1lIHtcbiAgICBmbGV4OiAxO1xufVxuXG4udG9wYmFyIC5wcm9maWxlLW1lbnUtaXRlbSAucC1vdmVybGF5LWJhZGdlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDlweDtcbn1cblxuLmpvYi1xdWV1ZS1zcGlubmVyIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cblxuLmpvYi1xdWV1ZS1saXN0IHtcbiAgICBwYWRkaW5nOiAwIDEwcHggMCAxMHB4O1xufVxuXG4uam9iLXF1ZXVlLWl0ZW0ge1xuICAgIG1hcmdpbjogMTBweDtcbn1cblxuLmpvYi1xdWV1ZS1pdGVtLXN1bW1hcnkge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5qb2ItcXVldWUtaXRlbS1kZXRhaWwge1xuICAgIGNvbG9yOiAjNmM3NTdkO1xufVxuXG5cbjo6di1kZWVwKC5wLXByb2dyZXNzLXNwaW5uZXItY2lyY2xlKSB7XG4gICAgYW5pbWF0aW9uOiBwLXByb2dyZXNzLXNwaW5uZXItZGFzaCAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlLCBjdXN0b20tcHJvZ3Jlc3Mtc3Bpbm5lci1jb2xvciA2cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBjdXN0b20tcHJvZ3Jlc3Mtc3Bpbm5lci1jb2xvciB7XG4gICAgMTAwJSxcbiAgICAwJSB7XG4gICAgICAgIHN0cm9rZTogI2ZmZmZmZjtcbiAgICB9XG4gICAgNDAlIHtcbiAgICAgICAgc3Ryb2tlOiAjZmZmZmZmO1xuICAgIH1cbiAgICA2NiUge1xuICAgICAgICBzdHJva2U6ICNmZmZmZmY7XG4gICAgfVxuICAgIDgwJSxcbiAgICA5MCUge1xuICAgICAgICBzdHJva2U6ICNmZmZmZmY7XG4gICAgfVxufVxuIiwiLmxheW91dC13cmFwcGVyIC50b3BiYXIge1xuICBwYWRkaW5nOiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5sZWZ0LWdyb3VwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLyogTm8gcGFkZGluZy1sZWZ0IGhlcmUsIGFzIGl0J3MgcHV0IGluIHRoZSBtZW51LWJ1dHRvbiB0byBtYWtlIGZvciBiZXR0ZXIgc2hhcGVkIHNlbGVjdGlvbiBib3JkZXIvYWNjZXNzaWJpbGl0eSBib3JkZXIpICovXG59XG5cbi5yaWdodC1ncm91cCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmctcmlnaHQ6IDVweDtcbn1cblxuLmxheW91dC13cmFwcGVyIC50b3BiYXIgLm1lbnUtYnV0dG9uIHtcbiAgd2lkdGg6IGF1dG87XG4gIG1hcmdpbi10b3A6IDA7IC8qIFRoaXMgb3ZlcnJpZGVzIHRoZSBhcG9sbG8gLTEwcHggYnV0IGRvZXMgbm90IHdvcmsgd2l0aCBvdXIgZmxleGJveCBtb2RlbCAqL1xuICBtYXJnaW4tbGVmdDogNXB4OyAvKiBUaGlzIG92ZXJyaWRlcyB0aGUgYXBvbGxvIG1hcmdpbi1sZWZ0OiAzMHB4IGFuZCBiYWxhbmNlcyB0aGUgbGVmdCBhbmQgcmlnaHQgc3BhY2luZyBhcm91bmQgdGhlIG1lbnUgYnV0dG9uIGluIHN0YXRpYyBhbmQgb3ZlcmxheSBtZW51IG1vZGUuICovXG4gIG1hcmdpbi1yaWdodDogNXB4O1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG59XG5cbi5sYXlvdXQtd3JhcHBlciAudG9wYmFyIC5tZW51LWJ1dHRvbjpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi5sYXlvdXQtd3JhcHBlci5sYXlvdXQtc2xpbSAudG9wYmFyIC5tZW51LWJ1dHRvbiwgLmxheW91dC13cmFwcGVyLmxheW91dC1ob3Jpem9udGFsIC50b3BiYXIgLm1lbnUtYnV0dG9uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvKiBPdmVycmlkZSBoaWRkZW4gb24gc2xpbSBhbmQgaG9yaXpvbnRhbCBsYXlvdXQuIE1hdGNoZXMgdGhlIGJlaGF2aW91ciBmb3Igc3RhdGljIG1lbnUsIHNvIHRoYXQgdGhlIG1lbnUgYnV0dG9uIGlzIHZpc2libGUgb24gc2xpbSBhbmQgaG9yaXpvbnRhbCBtb2RlLCBhbmQgd2UgY2FuIHVzZSBpdCB0byB0b2dnbGUgYmV0d2VlbiBzdGF0aWMsIHNsaW0gYW5kIGhvcml6b250YWwuICovXG59XG5cbi5sYXlvdXQtd3JhcHBlciAudG9wYmFyIC5tZW51LWJ1dHRvbiBpIHtcbiAgZm9udC1zaXplOiAyMHB4O1xufVxuXG4ubGF5b3V0LXdyYXBwZXIgLnRvcGJhciAubG9nby1saW5rIHtcbiAgLyogT3ZlcnJpZGVzIHRoZSBmaXhlZCAxODVweCB3aWR0aCBmb3IgdGhlIGxvZ28gZnJvbSBQcmltZVZ1ZSAqL1xuICB3aWR0aDogYXV0bztcbiAgbWF4LXdpZHRoOiAxODVweDtcbn1cblxuLmNvbXBhbnktbG9nby1jb250YWluZXIge1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBtYXJnaW4tbGVmdDogNXB4OyAvKiBTZXBhcmF0ZXMgdGhlIGxvZ28gZnJvbSB0aGUgbGVmdCBlZ2RlIG9mIHRoZSBwYWdlIGluIFNsaW0gTWVudSBtb2RlLiAqL1xuICBwYWRkaW5nOiA1cHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuLnNsYXNoLWxpbmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDIwcHg7XG4gIC8qcGFkZGluZy1sZWZ0OiA1cHg7Ki9cbiAgY29sb3I6ICNmZmZmZmY7XG59XG5cbi5zbGFzaC1saW5lOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtNTAlO1xuICBsZWZ0OiAtMTBweDtcbiAgaGVpZ2h0OiAyMDAlO1xuICB3aWR0aDogMXB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAvKnRyYW5zZm9ybTogc2tld1goMzM4ZGVnKTsqL1xuICAvKnRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSByaWdodDsqL1xufVxuXG4ucHJvZmlsZSB7XG4gIHBhZGRpbmctbGVmdDogOHB4OyAvKiBFbnN1cmVzIHRoZSBhY3RpdmUgb3V0bGluZSBib3ggZm9yIGFjY2Vzc2liaWxpdHkgbG9va3MgbmljZXIgd2l0aCBhIHNsaWdodCBnYXAgYWxsIGFyb3VuZCByYXRoZXIgdGhhbiBubyBnYXAgYmV0d2VlbiBib3JkZXIgYW5kIHRleHQuICovXG4gIHBhZGRpbmctcmlnaHQ6IDVweDsgLyogRW5zdXJlcyB0aGUgYWN0aXZlIG91dGxpbmUgYm94IGZvciBhY2Nlc3NpYmlsaXR5IGxvb2tzIG5pY2VyIHdpdGggYSBzbGlnaHQgZ2FwIGFsbCBhcm91bmQgcmF0aGVyIHRoYW4gbm8gZ2FwIGJldHdlZW4gYm9yZGVyIGFuZCB0ZXh0LiAqL1xuICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50O1xufVxuXG4udG9wYmFyLWljb24ge1xuICBtYXJnaW46IDVweCA3cHg7XG59XG5cbi50b3BiYXItaWNvbiAudHRpY29uIHtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIGZvbnQtc2l6ZTogMnJlbSAhaW1wb3J0YW50O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5sYXlvdXQtd3JhcHBlciAudG9wYmFyIC51c2VybmFtZSB7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgZm9udC1mYW1pbHk6IEx1Y2lkYSBHcmFuZGUsIEx1Y2lkYSBTYW5zLCBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cblxuLmxheW91dC13cmFwcGVyIC50b3BiYXIgLmNvbXBhbnktbmFtZSB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5sYXlvdXQtd3JhcHBlciAudG9wYmFyIC50b3BiYXItbWVudSB7XG4gIHJpZ2h0OiA1cHg7IC8qIEJyaW5nIGl0IGNsb3NlciB0byB0aGUgZWRnZSwgc28gaXQgbG9va3MgbGVzcyBsaWtlIGl0cyB1bmRlciB0aGUgYmVsbCwgYW5kIG1vcmUgdW5kZXIgdGhlIHByb2ZpbGUgbWVudS4gKi9cbn1cblxuLnRvcGJhciAudG9wYmFyLWl0ZW0tbmFtZSB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgZm9udC1mYW1pbHk6IEx1Y2lkYSBHcmFuZGUsIEx1Y2lkYSBTYW5zLCBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cblxuLnByb2ZpbGUtaW1hZ2UtaG9sZGVyIHtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuXG4ucHJvZmlsZS1pbWFnZSB7XG4gIGhlaWdodDogNDBweDtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG59XG5cbi5wcm9maWxlLW1lbnUtc2VwYXJhdG9yIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZWUyZTY7XG4gIG1hcmdpbjogMC4yNXJlbSAwO1xufVxuXG4uc2FuZGJveC10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG46OnYtZGVlcCgucHJvZmlsZSAucC1vdmVybGF5LWJhZGdlIC5wLWJhZGdlKSB7XG4gIHJpZ2h0OiAyM3B4O1xuICB0b3A6IC01cHg7XG59XG5cbjo6di1kZWVwKC50b3BiYXItbm90aWZpY2F0aW9uLWJlbGwgLnAtYmFkZ2UpIHtcbiAgdG9wOiAxcHg7IC8qIFRoaXMgaXMgdG8gZW5zdXJlIG5vdGlmaWNhdGlvbiBiYWRnZSBpcyBhdCBzYW1lIGhlaWdodCBhcyB0aGUgcHJvZmlsZSBiYWRnZSAqL1xuICByaWdodDogM3B4OyAvKiBSZWR1Y2Ugb3ZlcmxhcCB3aXRoIGhlbHAgaWNvbiAqL1xufVxuXG4udG9wYmFyIC5wcm9maWxlLW1lbnUtaXRlbSAucC1saW5rIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ucHJvZmlsZS1tZW51LWl0ZW0gLnRvcGJhci1pdGVtLW5hbWUge1xuICBmbGV4OiAxO1xufVxuXG4udG9wYmFyIC5wcm9maWxlLW1lbnUtaXRlbSAucC1vdmVybGF5LWJhZGdlIHtcbiAgbWFyZ2luLXJpZ2h0OiA5cHg7XG59XG5cbi5qb2ItcXVldWUtc3Bpbm5lciB7XG4gIG1hcmdpbi1yaWdodDogNXB4O1xufVxuXG4uam9iLXF1ZXVlLWxpc3Qge1xuICBwYWRkaW5nOiAwIDEwcHggMCAxMHB4O1xufVxuXG4uam9iLXF1ZXVlLWl0ZW0ge1xuICBtYXJnaW46IDEwcHg7XG59XG5cbi5qb2ItcXVldWUtaXRlbS1zdW1tYXJ5IHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmpvYi1xdWV1ZS1pdGVtLWRldGFpbCB7XG4gIGNvbG9yOiAjNmM3NTdkO1xufVxuXG46OnYtZGVlcCgucC1wcm9ncmVzcy1zcGlubmVyLWNpcmNsZSkge1xuICBhbmltYXRpb246IHAtcHJvZ3Jlc3Mtc3Bpbm5lci1kYXNoIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGUsIGN1c3RvbS1wcm9ncmVzcy1zcGlubmVyLWNvbG9yIDZzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIGN1c3RvbS1wcm9ncmVzcy1zcGlubmVyLWNvbG9yIHtcbiAgMTAwJSwgMCUge1xuICAgIHN0cm9rZTogI2ZmZmZmZjtcbiAgfVxuICA0MCUge1xuICAgIHN0cm9rZTogI2ZmZmZmZjtcbiAgfVxuICA2NiUge1xuICAgIHN0cm9rZTogI2ZmZmZmZjtcbiAgfVxuICA4MCUsIDkwJSB7XG4gICAgc3Ryb2tlOiAjZmZmZmZmO1xuICB9XG59IiwiXG4ubGF5b3V0LXRvcGJhciB7XG4gIGhlaWdodDogNTBweDtcbiAgLypwYWRkaW5nOiAxNnB4IDIwcHggMCAyMHB4OyovXG4gIC8qYmFja2dyb3VuZDogIzMyNjc5YjsqL1xufVxuIiwiLmxheW91dC10b3BiYXIge1xuICBoZWlnaHQ6IDUwcHg7XG4gIC8qcGFkZGluZzogMTZweCAyMHB4IDAgMjBweDsqL1xuICAvKmJhY2tncm91bmQ6ICMzMjY3OWI7Ki9cbn0iLCJcbi50dC1tZW51LXNlYXJjaC1jb250YWluZXIge1xuICAgIG1hcmdpbjogNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4uc2VhcmNoLXNlcGFyYXRvciB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZWUyZTY7XG59XG5cbjo6di1kZWVwKC50dC1tZW51LXNlYXJjaCkge1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxMHB4KTtcbn1cblxuOjp2LWRlZXAoLnAtaW5wdXR0ZXh0KSB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4iLCIudHQtbWVudS1zZWFyY2gtY29udGFpbmVyIHtcbiAgbWFyZ2luOiA1cHg7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uc2VhcmNoLXNlcGFyYXRvciB7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGVlMmU2O1xufVxuXG46OnYtZGVlcCgudHQtbWVudS1zZWFyY2gpIHtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDEwcHgpO1xufVxuXG46OnYtZGVlcCgucC1pbnB1dHRleHQpIHtcbiAgd2lkdGg6IDEwMCU7XG59IiwiXG4vKiBXYXJuaW5nOiBUaGVzZSBzdHlsZXMgZ2V0IGFwcGxpZWQgZ2xvYmFsbHkuIFRoZXkgYXJlIG5vdCBzY29wZWQuICovXG5cbi8qIFRPRE86IEZ1dHVyZSByZWZhY3RvcjogV29ydGggbW92aW5nIGEgbG90IG9mIHRoZXNlIG1lbnUgc3R5bGVzIG92ZXIgdG8gdGhlIGFjdHVhbCBjb21wb25lbnRzL21haW5fbWVudS9UVEFwcE1lbnUudnVlIGZpbGUgYXMgc29tZSBhcmUgbW9yZSBkaXJlY3RseSByZWxldmFudCB0aGVyZSB0byB0aGUgbWVudSByYXRoZXIgdGhhbiB0aGUgbGVmdCBjb250YWluZXIuICovXG5cbi8qIE92ZXJyaWRlcyBmb3IgbGVmdCBtZW51IHVwL2Rvd24gaW4vb3V0IHRyYW5zaXRpb25zICovXG4ubGF5b3V0LXdyYXBwZXIgLmxheW91dC1tZW51LWNvbnRhaW5lciAubGF5b3V0LW1lbnUgbGkgdWwubGF5b3V0LXN1Ym1lbnUtY29udGFpbmVyLWxlYXZlLWFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMHM7IC8qIE92ZXJyaWRlcyBBcG9sbG8gZGVmYXVsdDogMC40NXMgKi9cbn1cblxuLmxheW91dC13cmFwcGVyIC5sYXlvdXQtbWVudS1jb250YWluZXIgLmxheW91dC1tZW51IGxpIHVsLmxheW91dC1zdWJtZW51LWNvbnRhaW5lci1lbnRlci1hY3RpdmUge1xuICAgIC8qdHJhbnNpdGlvbjogbWF4LWhlaWdodCAxcyBlYXNlLWluLW91dDsqL1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7IC8qIE92ZXJyaWRlcyBBcG9sbG8gZGVmYXVsdDogMXMgKi9cbn1cblxuLmxheW91dC13cmFwcGVyIC5sYXlvdXQtbWVudS1jb250YWluZXIubGF5b3V0LW1lbnUtY29udGFpbmVyLWVudGVyLXRvIHtcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzIWltcG9ydGFudDsgLyogT3ZlcnJpZGVzIEFwb2xsbyBkZWZhdWx0OiAxcyAqL1xufVxuXG4vKiBIaWRlIGxlZnQgbWFpbiBtZW51IHNjcm9sbGJhciB3aXRoIGEgbWFzayB1bnRpbCB1c2VyIG1vdXNlb3ZlcnMgdGhlIG1lbnUgYW5kIHRoZSBtZW51IGlzIGxhcmdlIGVub3VnaCB0byB3YXJyYW50IGEgc2Nyb2xsYmFyLiBNb3VzZW92ZXIgYW5kIHNpemUgY2hlY2sgZG9uZSBpbiBKYXZhU2NyaXB0ICovXG4ubGF5b3V0LXN0YXRpYyAubGF5b3V0LW1lbnUtY29udGVudCwgLmxheW91dC1vdmVybGF5IC5sYXlvdXQtbWVudS1jb250ZW50IHtcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gICAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KDBkZWcsIHRyYW5zcGFyZW50LCAjMDAwMDAwKSwgbGluZWFyLWdyYWRpZW50KDI3MGRlZywgdHJhbnNwYXJlbnQgMTdweCwgIzAwMDAwMCAwKTtcbiAgICBtYXNrLXNpemU6IDEwMCUgMjAwMDBweDtcbiAgICBtYXNrLXBvc2l0aW9uOiBsZWZ0IGJvdHRvbTtcbiAgICAtd2Via2l0LW1hc2staW1hZ2U6IGxpbmVhci1ncmFkaWVudCgwZGVnLCB0cmFuc3BhcmVudCwgIzAwMDAwMCksIGxpbmVhci1ncmFkaWVudCgyNzBkZWcsIHRyYW5zcGFyZW50IDE3cHgsICMwMDAwMDAgMCk7XG4gICAgLXdlYmtpdC1tYXNrLXNpemU6IDEwMCUgMjAwMDBweDtcbiAgICAtd2Via2l0LW1hc2stcG9zaXRpb246IGxlZnQgYm90dG9tO1xuICAgIHRyYW5zaXRpb246IG1hc2stcG9zaXRpb24gMC4zcywgLXdlYmtpdC1tYXNrLXBvc2l0aW9uIDAuM3M7XG59XG5cbi8qLmxheW91dC13cmFwcGVyLmxheW91dC1vdmVybGF5IC5sYXlvdXQtbWVudS1jb250YWluZXIsXG4ubGF5b3V0LXdyYXBwZXIubGF5b3V0LXN0YXRpYyAubGF5b3V0LW1lbnUtY29udGFpbmVyIHtcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7ICEqIEZvcmNlIHBlcm1hbmVudCB2ZXJ0aWNhbCBzY3JvbGxiYXIgc3BhY2Ugc28gdGhhdCB0aGUgY29udGVudCBsaWtlIG1lbnUgYXJyb3dzIGRvbnQgZmxhc2gvbW92ZSBhcm91bmQgd2hlbiB0b2dnbGluZyBiZXR3ZWVuIG9wZW4vY2xvc2VkIG1lbnUgZ3JvdXBzICohXG59Ki9cblxuLyogLS0tIEFuaW1hdGlvbiBhbmQgc3R5bGUgc2V0dGluZ3MgZm9yIG1lbnUgbW9kZSB0b2dnbGUgZnJvbSBzdGF0aWMgdG8gc2xpbSBhbmQgYmFjayAtLS0gKi9cblxuLyogRG8gbm90IGFuaW1hdGUgd2lkdGggY2hhbmdlIGZyb20gc2xpbSB0byBzdGF0aWMsIG5vIG1hdHRlciBub3cgZmFzdCwgdGV4dCBzdGlsbCBnZXRzIHNxdWFzaGVkL3dyYXBwZWQuICovXG4vKi5sYXlvdXQtd3JhcHBlci5sYXlvdXQtc3RhdGljIC5sYXlvdXQtbWVudS1jb250YWluZXIgeyovXG4vKiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjAxczsgISogRnJvbSBzdGF0aWMgdG8gc2xpbSwgZG8gaXQgZmFzdCwgc28gdGhlIHRleHQgaXMgbm90IHNxdWFzaGVkL3dyYXBwZWQgZHVyaW5nIGFuaW1hdGlvbi4gKiEqL1xuLyp9Ki9cblxuLmxheW91dC13cmFwcGVyLmxheW91dC1zbGltIC5sYXlvdXQtbWVudS1jb250YWluZXIge1xuICAgIHRyYW5zaXRpb246IHdpZHRoIDAuMnM7IC8qIEZyb20gc3RhdGljIHRvIHNsaW0sIGNhbiBiZSBzbG93LCBidXQgbm90IHRvbyBzbG93LCBiZWNhdXNlIHRoZSB0ZXh0IGRpc3NhcHBlYXJzIGJlZm9yZSBhbmltYXRpb24gZmluaXNoZXMuICovXG59XG5cbi5sYXlvdXQtd3JhcHBlci5sYXlvdXQtc2xpbSAubGF5b3V0LW1lbnUtY29udGFpbmVyIC5sYXlvdXQtbWVudT5saT5hIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyAvKiBXaXRob3V0IHRoaXMsIHRleHQganVtcHMgbGVmdC9yaWdodCBkdXJpbmcgbWVudSBzdGF0ZSBjaGFuZ2Ugd2lkdGggYW5pbWF0aW9uICovXG4gICAgcGFkZGluZy1sZWZ0OiAxMnB4OyAvKiBXaXRoIHRoZSB0ZXh0IGFsaWduIGxlZnQgYWJvdmUsIHRoaXMgZW5zdXJlcyBpY29uIGlzIHN0aWxsIGNlbnRlcmVkIGluIHNsaW0gbW9kZSBkdXJpbmcgYW5kIGFmdGVyIGFuaW1hdGlvbi4gVHJpYWwgJiBlcnJvciB2YWx1ZS4gKi9cbn1cbi5sYXlvdXQtd3JhcHBlciAubGF5b3V0LW1lbnUtY29udGFpbmVyIC5sYXlvdXQtbWVudSBsaT5hIGkge1xuICAgIGxpbmUtaGVpZ2h0OiAyMnB4OyAvKiBTZXRzIGljb24gbGluZSBoZWlnaHQgZXF1YWwgdG8gLmxheW91dC1tZW51aXRlbS10b2dnbGVyIHNvIHRoYXQgdGhlIGljb25zIGRvbnQgbW92ZSB1cC9kb3duIGR1cmluZyB0cmFuc2l0aW9uIHRvL2Zyb20gc2xpbS9zdGF0aWMgbW9kZSAqL1xufVxuXG4ubGF5b3V0LXdyYXBwZXIubGF5b3V0LXNsaW0gLmxheW91dC1tZW51LWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDQycHg7IC8qIFNldHMgd2lkdGggb2Ygc2xpbSBtZW51IHZpYSBhIHRyaWFsICYgZXJyb3IgdmFsdWUgdGhhdCBlbnN1cmVzIGljb24gc3RheXMgaW4gc2FtZSBwbGFjZSBiZXR3ZWVuIHNsaW0vc3RhdGljIG1vZGUgdG9nZ2xlLiAqL1xufVxuXG4ubGF5b3V0LXdyYXBwZXIubGF5b3V0LXNsaW0gLmxheW91dC1tZW51LWNvbnRhaW5lciAubGF5b3V0LW1lbnU+bGk+YSBpOmZpcnN0LWNoaWxkIHtcbiAgICBmb250LXNpemU6IDE0cHg7IC8qIE1hdGNoZXMgZm9udCBzaXplIGZvciBzdGF0aWMgbW9kZSwgc28gaWNvbiBzaXplIHN0YXlzIGNvbnNpc3RlbnQgZHVyaW5nIG1vZGUgdG9nZ2xlICovXG59XG5cbi5sYXlvdXQtd3JhcHBlci5sYXlvdXQtb3ZlcmxheSAubGF5b3V0LW1lbnUtY29udGFpbmVyIC5sYXlvdXQtbWVudS10aXRsZSwgLmxheW91dC13cmFwcGVyLmxheW91dC1zdGF0aWMgLmxheW91dC1tZW51LWNvbnRhaW5lciAubGF5b3V0LW1lbnUtdGl0bGUge1xuICAgIHBhZGRpbmc6IDhweDsgLyogVG8gYnJpbmcgdGhlIG1lbnUgaGVhZGVyIGJvcmRlci1ib3R0b20gbGluZSBtb3JlIGlubGluZSB3aXRoIHRoZSBib3R0b20gb2YgdGhlIGNvbnRleHQgbWVudSAqL1xufVxuXG4ubGF5b3V0LXdyYXBwZXIubGF5b3V0LXN0YXRpYyAubGF5b3V0LW1lbnUtY29udGFpbmVyIC5sYXlvdXQtbWVudS1mb290ZXIge1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xufVxuLmZlZWRiYWNrLWxpbmstY29udGFpbmVyIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuLmxheW91dC1tZW51LWZvb3Rlci1jb250ZW50IHtcbiAgICBwYWRkaW5nOiA1cHggOHB4O1xufVxuLmxheW91dC1tZW51LWZvb3Rlci1jb250ZW50LFxuLmxheW91dC13cmFwcGVyLmxheW91dC1vdmVybGF5IC5sYXlvdXQtbWVudS1jb250YWluZXIgLmxheW91dC1tZW51LWZvb3RlciAubGF5b3V0LW1lbnUtZm9vdGVyLWNvbnRlbnQsXG4ubGF5b3V0LXdyYXBwZXIubGF5b3V0LXN0YXRpYyAubGF5b3V0LW1lbnUtY29udGFpbmVyIC5sYXlvdXQtbWVudS1mb290ZXIgLmxheW91dC1tZW51LWZvb3Rlci1jb250ZW50IHtcbiAgICAvKiBPdmVycmlkZSB0aGUgYmFzZSBwcmltZXZ1ZSBzdHlsZXMgKi9cbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RlZTJlNjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uc2lnbmFsLWNvcHlyaWdodC1jb250YWluZXIge1xuICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4uY29weS1yaWdodC1pbmZvIHtcbiAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIHBhZGRpbmctdG9wOiA1cHg7XG59XG4ubGF5b3V0LXdyYXBwZXIgLmxheW91dC1tZW51LWNvbnRhaW5lciAubGF5b3V0LW1lbnUtY29udGVudCAubGF5b3V0LW1lbnUgbGk+YSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGNvbG9yOiAjM2IzYjNiO1xufVxuXG4ubGF5b3V0LXN0YXRpYyAubGF5b3V0LW1haW4tbWVudSA+IGxpLmFjdGl2ZS1tZW51aXRlbSB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RiZGVlMTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG59XG5cbi5sYXlvdXQtc3RhdGljIC5sYXlvdXQtbWFpbi1tZW51ID4gbGkge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbiN0dF9tYWluX3VpIC5sYXlvdXQtd3JhcHBlci5sYXlvdXQtc3RhdGljIC5sYXlvdXQtbWVudS1jb250YWluZXIgLmxheW91dC1tZW51IGxpLnAtbWVudS1zZXBhcmF0b3Ige1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG59XG5cbi5sYXlvdXQtd3JhcHBlci5sYXlvdXQtaG9yaXpvbnRhbCAubGF5b3V0LW1lbnUtY29udGFpbmVyIC5sYXlvdXQtbWVudSA+IGxpID4gYSB7XG4gICAgcGFkZGluZzogOXB4OyAvKiBDZW50ZXJzIHRoZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgdGhlIGhvcml6b250YWwgbWVudSBpdGVtcyAqL1xufVxuXG4ubGF5b3V0LW1lbnUgLmFjdGl2ZS1tZW51aXRlbT51bCB7XG4gICAgei1pbmRleDogMTA7IC8qICMzMDY1IEVuc3VyZXMgdGhlIGFjdGl2ZSBtZW51IGl0ZW1zIGFyZSBzaG93biBwcm9wZXJseSBhbmQgbm90IHRyYW5zcGFyZW50bHkgbWl4aW5nIGluIHdpdGggdGhlIG1haW4gbWVudSBpdGVtcyBiZWhpbmQgaXQsIG1ha2luZyB0aGUgYWN0aXZlIG1lbnUgaXRlbXMgdW5yZWFkYWJsZS4gRXNwZWNpYWxseSBpbiBob3Jpem9udGFsIG1lbnUgbW9kZS4gKi9cbn1cblxuLmxheW91dC13cmFwcGVyLmxheW91dC1zdGF0aWMgLmxheW91dC1tZW51LWNvbnRhaW5lciAubGF5b3V0LW1lbnUtY29udGVudCB7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAzN3B4KTsgLypBZGp1c3RtZW50IHJlcXVpcmVkIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSBzZWFyY2ggYmFyIGhlaWdodCovXG59XG5cbiIsIi8qIFdhcm5pbmc6IFRoZXNlIHN0eWxlcyBnZXQgYXBwbGllZCBnbG9iYWxseS4gVGhleSBhcmUgbm90IHNjb3BlZC4gKi9cbi8qIFRPRE86IEZ1dHVyZSByZWZhY3RvcjogV29ydGggbW92aW5nIGEgbG90IG9mIHRoZXNlIG1lbnUgc3R5bGVzIG92ZXIgdG8gdGhlIGFjdHVhbCBjb21wb25lbnRzL21haW5fbWVudS9UVEFwcE1lbnUudnVlIGZpbGUgYXMgc29tZSBhcmUgbW9yZSBkaXJlY3RseSByZWxldmFudCB0aGVyZSB0byB0aGUgbWVudSByYXRoZXIgdGhhbiB0aGUgbGVmdCBjb250YWluZXIuICovXG4vKiBPdmVycmlkZXMgZm9yIGxlZnQgbWVudSB1cC9kb3duIGluL291dCB0cmFuc2l0aW9ucyAqL1xuLmxheW91dC13cmFwcGVyIC5sYXlvdXQtbWVudS1jb250YWluZXIgLmxheW91dC1tZW51IGxpIHVsLmxheW91dC1zdWJtZW51LWNvbnRhaW5lci1sZWF2ZS1hY3RpdmUge1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwczsgLyogT3ZlcnJpZGVzIEFwb2xsbyBkZWZhdWx0OiAwLjQ1cyAqL1xufVxuXG4ubGF5b3V0LXdyYXBwZXIgLmxheW91dC1tZW51LWNvbnRhaW5lciAubGF5b3V0LW1lbnUgbGkgdWwubGF5b3V0LXN1Ym1lbnUtY29udGFpbmVyLWVudGVyLWFjdGl2ZSB7XG4gIC8qdHJhbnNpdGlvbjogbWF4LWhlaWdodCAxcyBlYXNlLWluLW91dDsqL1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzOyAvKiBPdmVycmlkZXMgQXBvbGxvIGRlZmF1bHQ6IDFzICovXG59XG5cbi5sYXlvdXQtd3JhcHBlciAubGF5b3V0LW1lbnUtY29udGFpbmVyLmxheW91dC1tZW51LWNvbnRhaW5lci1lbnRlci10byB7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMnMgIWltcG9ydGFudDsgLyogT3ZlcnJpZGVzIEFwb2xsbyBkZWZhdWx0OiAxcyAqL1xufVxuXG4vKiBIaWRlIGxlZnQgbWFpbiBtZW51IHNjcm9sbGJhciB3aXRoIGEgbWFzayB1bnRpbCB1c2VyIG1vdXNlb3ZlcnMgdGhlIG1lbnUgYW5kIHRoZSBtZW51IGlzIGxhcmdlIGVub3VnaCB0byB3YXJyYW50IGEgc2Nyb2xsYmFyLiBNb3VzZW92ZXIgYW5kIHNpemUgY2hlY2sgZG9uZSBpbiBKYXZhU2NyaXB0ICovXG4ubGF5b3V0LXN0YXRpYyAubGF5b3V0LW1lbnUtY29udGVudCwgLmxheW91dC1vdmVybGF5IC5sYXlvdXQtbWVudS1jb250ZW50IHtcbiAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICBtYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMGRlZywgdHJhbnNwYXJlbnQsICMwMDAwMDApLCBsaW5lYXItZ3JhZGllbnQoMjcwZGVnLCB0cmFuc3BhcmVudCAxN3B4LCAjMDAwMDAwIDApO1xuICBtYXNrLXNpemU6IDEwMCUgMjAwMDBweDtcbiAgbWFzay1wb3NpdGlvbjogbGVmdCBib3R0b207XG4gIC13ZWJraXQtbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KDBkZWcsIHRyYW5zcGFyZW50LCAjMDAwMDAwKSwgbGluZWFyLWdyYWRpZW50KDI3MGRlZywgdHJhbnNwYXJlbnQgMTdweCwgIzAwMDAwMCAwKTtcbiAgLXdlYmtpdC1tYXNrLXNpemU6IDEwMCUgMjAwMDBweDtcbiAgLXdlYmtpdC1tYXNrLXBvc2l0aW9uOiBsZWZ0IGJvdHRvbTtcbiAgdHJhbnNpdGlvbjogbWFzay1wb3NpdGlvbiAwLjNzLCAtd2Via2l0LW1hc2stcG9zaXRpb24gMC4zcztcbn1cblxuLyoubGF5b3V0LXdyYXBwZXIubGF5b3V0LW92ZXJsYXkgLmxheW91dC1tZW51LWNvbnRhaW5lcixcbi5sYXlvdXQtd3JhcHBlci5sYXlvdXQtc3RhdGljIC5sYXlvdXQtbWVudS1jb250YWluZXIge1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDsgISogRm9yY2UgcGVybWFuZW50IHZlcnRpY2FsIHNjcm9sbGJhciBzcGFjZSBzbyB0aGF0IHRoZSBjb250ZW50IGxpa2UgbWVudSBhcnJvd3MgZG9udCBmbGFzaC9tb3ZlIGFyb3VuZCB3aGVuIHRvZ2dsaW5nIGJldHdlZW4gb3Blbi9jbG9zZWQgbWVudSBncm91cHMgKiFcbn0qL1xuLyogLS0tIEFuaW1hdGlvbiBhbmQgc3R5bGUgc2V0dGluZ3MgZm9yIG1lbnUgbW9kZSB0b2dnbGUgZnJvbSBzdGF0aWMgdG8gc2xpbSBhbmQgYmFjayAtLS0gKi9cbi8qIERvIG5vdCBhbmltYXRlIHdpZHRoIGNoYW5nZSBmcm9tIHNsaW0gdG8gc3RhdGljLCBubyBtYXR0ZXIgbm93IGZhc3QsIHRleHQgc3RpbGwgZ2V0cyBzcXVhc2hlZC93cmFwcGVkLiAqL1xuLyoubGF5b3V0LXdyYXBwZXIubGF5b3V0LXN0YXRpYyAubGF5b3V0LW1lbnUtY29udGFpbmVyIHsqL1xuLyogICAgdHJhbnNpdGlvbjogd2lkdGggMC4wMXM7ICEqIEZyb20gc3RhdGljIHRvIHNsaW0sIGRvIGl0IGZhc3QsIHNvIHRoZSB0ZXh0IGlzIG5vdCBzcXVhc2hlZC93cmFwcGVkIGR1cmluZyBhbmltYXRpb24uICohKi9cbi8qfSovXG4ubGF5b3V0LXdyYXBwZXIubGF5b3V0LXNsaW0gLmxheW91dC1tZW51LWNvbnRhaW5lciB7XG4gIHRyYW5zaXRpb246IHdpZHRoIDAuMnM7IC8qIEZyb20gc3RhdGljIHRvIHNsaW0sIGNhbiBiZSBzbG93LCBidXQgbm90IHRvbyBzbG93LCBiZWNhdXNlIHRoZSB0ZXh0IGRpc3NhcHBlYXJzIGJlZm9yZSBhbmltYXRpb24gZmluaXNoZXMuICovXG59XG5cbi5sYXlvdXQtd3JhcHBlci5sYXlvdXQtc2xpbSAubGF5b3V0LW1lbnUtY29udGFpbmVyIC5sYXlvdXQtbWVudSA+IGxpID4gYSB7XG4gIHRleHQtYWxpZ246IGxlZnQ7IC8qIFdpdGhvdXQgdGhpcywgdGV4dCBqdW1wcyBsZWZ0L3JpZ2h0IGR1cmluZyBtZW51IHN0YXRlIGNoYW5nZSB3aWR0aCBhbmltYXRpb24gKi9cbiAgcGFkZGluZy1sZWZ0OiAxMnB4OyAvKiBXaXRoIHRoZSB0ZXh0IGFsaWduIGxlZnQgYWJvdmUsIHRoaXMgZW5zdXJlcyBpY29uIGlzIHN0aWxsIGNlbnRlcmVkIGluIHNsaW0gbW9kZSBkdXJpbmcgYW5kIGFmdGVyIGFuaW1hdGlvbi4gVHJpYWwgJiBlcnJvciB2YWx1ZS4gKi9cbn1cblxuLmxheW91dC13cmFwcGVyIC5sYXlvdXQtbWVudS1jb250YWluZXIgLmxheW91dC1tZW51IGxpID4gYSBpIHtcbiAgbGluZS1oZWlnaHQ6IDIycHg7IC8qIFNldHMgaWNvbiBsaW5lIGhlaWdodCBlcXVhbCB0byAubGF5b3V0LW1lbnVpdGVtLXRvZ2dsZXIgc28gdGhhdCB0aGUgaWNvbnMgZG9udCBtb3ZlIHVwL2Rvd24gZHVyaW5nIHRyYW5zaXRpb24gdG8vZnJvbSBzbGltL3N0YXRpYyBtb2RlICovXG59XG5cbi5sYXlvdXQtd3JhcHBlci5sYXlvdXQtc2xpbSAubGF5b3V0LW1lbnUtY29udGFpbmVyIHtcbiAgd2lkdGg6IDQycHg7IC8qIFNldHMgd2lkdGggb2Ygc2xpbSBtZW51IHZpYSBhIHRyaWFsICYgZXJyb3IgdmFsdWUgdGhhdCBlbnN1cmVzIGljb24gc3RheXMgaW4gc2FtZSBwbGFjZSBiZXR3ZWVuIHNsaW0vc3RhdGljIG1vZGUgdG9nZ2xlLiAqL1xufVxuXG4ubGF5b3V0LXdyYXBwZXIubGF5b3V0LXNsaW0gLmxheW91dC1tZW51LWNvbnRhaW5lciAubGF5b3V0LW1lbnUgPiBsaSA+IGEgaTpmaXJzdC1jaGlsZCB7XG4gIGZvbnQtc2l6ZTogMTRweDsgLyogTWF0Y2hlcyBmb250IHNpemUgZm9yIHN0YXRpYyBtb2RlLCBzbyBpY29uIHNpemUgc3RheXMgY29uc2lzdGVudCBkdXJpbmcgbW9kZSB0b2dnbGUgKi9cbn1cblxuLmxheW91dC13cmFwcGVyLmxheW91dC1vdmVybGF5IC5sYXlvdXQtbWVudS1jb250YWluZXIgLmxheW91dC1tZW51LXRpdGxlLCAubGF5b3V0LXdyYXBwZXIubGF5b3V0LXN0YXRpYyAubGF5b3V0LW1lbnUtY29udGFpbmVyIC5sYXlvdXQtbWVudS10aXRsZSB7XG4gIHBhZGRpbmc6IDhweDsgLyogVG8gYnJpbmcgdGhlIG1lbnUgaGVhZGVyIGJvcmRlci1ib3R0b20gbGluZSBtb3JlIGlubGluZSB3aXRoIHRoZSBib3R0b20gb2YgdGhlIGNvbnRleHQgbWVudSAqL1xufVxuXG4ubGF5b3V0LXdyYXBwZXIubGF5b3V0LXN0YXRpYyAubGF5b3V0LW1lbnUtY29udGFpbmVyIC5sYXlvdXQtbWVudS1mb290ZXIge1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbn1cblxuLmZlZWRiYWNrLWxpbmstY29udGFpbmVyIHtcbiAgbWFyZ2luLXRvcDogMTBweDtcbn1cblxuLmxheW91dC1tZW51LWZvb3Rlci1jb250ZW50IHtcbiAgcGFkZGluZzogNXB4IDhweDtcbn1cblxuLmxheW91dC1tZW51LWZvb3Rlci1jb250ZW50LFxuLmxheW91dC13cmFwcGVyLmxheW91dC1vdmVybGF5IC5sYXlvdXQtbWVudS1jb250YWluZXIgLmxheW91dC1tZW51LWZvb3RlciAubGF5b3V0LW1lbnUtZm9vdGVyLWNvbnRlbnQsXG4ubGF5b3V0LXdyYXBwZXIubGF5b3V0LXN0YXRpYyAubGF5b3V0LW1lbnUtY29udGFpbmVyIC5sYXlvdXQtbWVudS1mb290ZXIgLmxheW91dC1tZW51LWZvb3Rlci1jb250ZW50IHtcbiAgLyogT3ZlcnJpZGUgdGhlIGJhc2UgcHJpbWV2dWUgc3R5bGVzICovXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGVlMmU2O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5zaWduYWwtY29weXJpZ2h0LWNvbnRhaW5lciB7XG4gIG1hcmdpbi10b3A6IDVweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5jb3B5LXJpZ2h0LWluZm8ge1xuICBtYXJnaW4tdG9wOiAycHg7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgcGFkZGluZy10b3A6IDVweDtcbn1cblxuLmxheW91dC13cmFwcGVyIC5sYXlvdXQtbWVudS1jb250YWluZXIgLmxheW91dC1tZW51LWNvbnRlbnQgLmxheW91dC1tZW51IGxpID4gYSB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgY29sb3I6ICMzYjNiM2I7XG59XG5cbi5sYXlvdXQtc3RhdGljIC5sYXlvdXQtbWFpbi1tZW51ID4gbGkuYWN0aXZlLW1lbnVpdGVtIHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RiZGVlMTtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xufVxuXG4ubGF5b3V0LXN0YXRpYyAubGF5b3V0LW1haW4tbWVudSA+IGxpIHtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG4jdHRfbWFpbl91aSAubGF5b3V0LXdyYXBwZXIubGF5b3V0LXN0YXRpYyAubGF5b3V0LW1lbnUtY29udGFpbmVyIC5sYXlvdXQtbWVudSBsaS5wLW1lbnUtc2VwYXJhdG9yIHtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XG59XG5cbi5sYXlvdXQtd3JhcHBlci5sYXlvdXQtaG9yaXpvbnRhbCAubGF5b3V0LW1lbnUtY29udGFpbmVyIC5sYXlvdXQtbWVudSA+IGxpID4gYSB7XG4gIHBhZGRpbmc6IDlweDsgLyogQ2VudGVycyB0aGUgdmVydGljYWwgYWxpZ25tZW50IG9mIHRoZSBob3Jpem9udGFsIG1lbnUgaXRlbXMgKi9cbn1cblxuLmxheW91dC1tZW51IC5hY3RpdmUtbWVudWl0ZW0gPiB1bCB7XG4gIHotaW5kZXg6IDEwOyAvKiAjMzA2NSBFbnN1cmVzIHRoZSBhY3RpdmUgbWVudSBpdGVtcyBhcmUgc2hvd24gcHJvcGVybHkgYW5kIG5vdCB0cmFuc3BhcmVudGx5IG1peGluZyBpbiB3aXRoIHRoZSBtYWluIG1lbnUgaXRlbXMgYmVoaW5kIGl0LCBtYWtpbmcgdGhlIGFjdGl2ZSBtZW51IGl0ZW1zIHVucmVhZGFibGUuIEVzcGVjaWFsbHkgaW4gaG9yaXpvbnRhbCBtZW51IG1vZGUuICovXG59XG5cbi5sYXlvdXQtd3JhcHBlci5sYXlvdXQtc3RhdGljIC5sYXlvdXQtbWVudS1jb250YWluZXIgLmxheW91dC1tZW51LWNvbnRlbnQge1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDM3cHgpOyAvKkFkanVzdG1lbnQgcmVxdWlyZWQgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlIHNlYXJjaCBiYXIgaGVpZ2h0Ki9cbn0iLCJcbi5sb2dpbi1iZyAuaGlkZS1pbi1sb2dpbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLmxheW91dC13cmFwcGVyLmxheW91dC1zdGF0aWMgLmxheW91dC1jb250ZW50IHtcbiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OyAvKiBUaGlzIGlzIGp1c3QgVEVNUCB0byByZW1vdmUgdGhlIHBhZGRpbmcgZm9yIHVudXNlZCBicmVhZGNydW1iLiAqL1xufVxuXG4uYm90dG9tLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLWxlZnQ6IDI0NXB4OyAvKiBUT0RPIHRoaXMgbmVlZHMgdG8gYmUgYWRqdXN0ZWQuIEJ1dCB0aGlzIGZvb3RlciB3aWxsIGxpa2VseSBnbyBpbnRvIHRoZSBsZWZ0IG1lbnUgYm90dG9tLiAqL1xufVxuXG4ubGF5b3V0LXdyYXBwZXIgLmxheW91dC1jb250ZW50IC5sYXlvdXQtY29udGVudC1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7IC8qIFRvIGFjY29tcGFueSB0aGUgZmxleDogMSAxIDAgY29taW5nIGZyb20gUHJpbWVWdWUgc3R5bGluZy4gVGhpcyB3aWxsIGNvcnJlY3RseSBhbGlnbiB0aGUgY2hpbGQgY29tcG9uZW50cy4gKi9cbiAgICBwYWRkaW5nOiAwOyAvKiBSZW1vdmUgcGFkZGluZyBhcm91bmQgdGhlIG1haW4gY29udGVudCBhcmVhLiBDb25mbGljdGluZyB3aXRoIGFwb2xsbyB0aGVtaW5nLiAqL1xufVxuXG4vKiBUT0RPOiBQb3NzaWJseSB0ZW1wIHN0eWxlcyBiZWxvdy4gRG9pbmcgdGhpcyBmb3IgaG9yaXpvbnRhbCBtZW51IG1vZGUgKi9cbi5sYXlvdXQtd3JhcHBlci5sYXlvdXQtaG9yaXpvbnRhbCAubGF5b3V0LWNvbnRlbnQge1xuICAgIHBhZGRpbmctdG9wOiAxcHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gICAgLmxheW91dC13cmFwcGVyLmxheW91dC1ob3Jpem9udGFsIC5sYXlvdXQtbWVudS1jb250YWluZXIge1xuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICB0b3A6IGF1dG87XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgfVxufVxuXG4ubGF5b3V0LXdyYXBwZXIubGF5b3V0LWhvcml6b250YWwgLmxheW91dC1tZW51LWNvbnRhaW5lciAubGF5b3V0LW1lbnU+bGk+YSB7XG4gICAgaGVpZ2h0OiA0MHB4OyAvKiBUbyBvdmVycmlkZSB0aGUgNTBweCBmb3JjZWQgaGVpZ2h0IGluIFByaW1lVnVlLCB3aGljaCBtYWtlcyB0aGUgbWVudSB0YWxsZXIgdGhhbiBpdCBuZWVkcyB0byBiZS4gKi9cbn1cbi5sYXlvdXQtd3JhcHBlci5sYXlvdXQtaG9yaXpvbnRhbCAubGF5b3V0LW1lbnUtY29udGFpbmVyIC5sYXlvdXQtbWVudT5saS5hY3RpdmUtbWVudWl0ZW0+dWwge1xuICAgIHRvcDogNDBweDsgLyogVG8gbWF0Y2ggdG8gdGhlIGFkanVzdGVkIGhlaWdodCBhYm92ZSBvZiAubGF5b3V0LWNvbnRlbnQgKi9cbiAgICB6LWluZGV4OiAxMDA7IC8qIFRvIGVuc3VyZSB0aGUgZHJvcGRvd24gbWVudSBpdGVtcyBhcmUgYWx3YXlzIG9uIHRvcCBvZiBlZGl0IHZpZXdzLiAqL1xufVxuXG4ubGF5b3V0LXdyYXBwZXIubGF5b3V0LXNsaW0gLmxheW91dC1jb250ZW50IHtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgICBtYXJnaW4tbGVmdDogNDJweDsgLyogTWF0Y2ggbmV3IHNsaW0gbWVudSB3aWR0aC4gKi9cbn1cblxuLmxheW91dC13cmFwcGVyLmxheW91dC1zbGltIC5sYXlvdXQtbWVudS1jb250YWluZXIgLmxheW91dC1tZW51PmxpPnVsIHtcbiAgICBsZWZ0OiA0MnB4OyAvKiBNYXRjaCBuZXcgc2xpbSBtZW51IHdpZHRoLiBUT0RPOiBCZXN0IHRvIHVwZGF0ZSB0aGlzIGluIHRoZSBwcmltZXZ1ZSBzY3NzIHNvdXJjZSBmaWxlIGluc3RlYWQsIGJ1dCBkb250IHdhbnQgdG8gZG8gdGhhdCB1bnRpbCB3ZSBoYXZlIHRvIGltcG9ydCB0aGUgd2hvbGUgbWVudSBjb2RlLCBhcyBpdCBjb21wbGljYXRlZCB1cGdyYWRlIHN0ZXBzIHVwb24gbmV3IHZlcnNpb25zLiAqL1xufVxuXG4ubGF5b3V0LXdyYXBwZXIubGF5b3V0LXN0YXRpYyAubGF5b3V0LW1lbnUtY29udGFpbmVyIHtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyogVE9ETzogdGVtcCB0byBtb3ZlIGNvbmZpZyBtZW51IGJ1dHRvbiBvdXQgb2YgdGhlIHdheSAqL1xuLmxheW91dC1jb25maWcgLmxheW91dC1jb25maWctY29udGVudCAubGF5b3V0LWNvbmZpZy1idXR0b24ge1xuICAgIHRvcDogaW5pdGlhbDtcbiAgICBib3R0b206IDEwMHB4O1xuICAgIG9wYWNpdHk6IDAuODtcbn1cblxuLyogQ29sb3Igb3ZlcnJpZGVzLiBTaG91bGQgZXZlbnR1YWxseSBnbyBpbnRvIHRoZSBTQ1NTIHNvdXJjZXMgKi9cbi5sYXlvdXQtd3JhcHBlciAudG9wYmFyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzI2ODliXG59XG5cbiN0dF9tYWluX3VpIC5sYXlvdXQtd3JhcHBlciAudG9wYmFyIC5tZW51LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIHdpZHRoOiA0MnB4O1xufVxuXG4vKiBIaWRlIGJvdHRvbSByZWQgYm9yZGVyLCBhcyBldmVyeXRoaW5nIGluIGhlcmUgc2hvdWxkIG5vdyBoYXZlIG1vdmVkIHRvIHRoZSBsZWZ0IG1lbnUuIE5vdGUsIHRoaXMgYWxzbyBhZmZlY3RzIHRoZSBwYWdpbmF0aW9uIGNvbnRyb2xzIGF0IHRoZSBib3R0b20uICovXG4vKiBUaGlzIG1heSBuZWVkIHRvIGJlIGV4cGFuZGVkIHRvIHJlbW92ZSB0aGUgaHRtbCBncmlkLWJvdHRvbS1ib3JkZXIgYW5kIGJvdHRvbS1kaXYgKi9cbi52aWV3IC5ib3R0b20tZGl2LFxuLmVkaXQtdmlldyAuZ3JpZC1ib3R0b20tYm9yZGVyLCAudmlldyAuZ3JpZC1ib3R0b20tYm9yZGVyLFxuLmdyaWQtYm90dG9tLWJvcmRlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGhlaWdodDogMDtcbn1cbi8qIFN1YiBWaWV3cyBuZWVkIGJvdHRvbSBwYWdpbmcgZGl2IHRvIGJlIHZpc2libGUuICovXG4udmlldy5zdWItdmlldyAuYm90dG9tLWRpdiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vKiBTdHlsZXMgdG8gaGlkZSB0aGUgdG9wYmFyIGR1cmluZyB0aGUgdHJhbnNpdGlvbiBwZXJpb2QgKi9cbi8qIE5vdGU6IFRoZSByaWJib24gbWVudSB0b3AgYmFyIGhlaWdodCBpcyAzMHB4ICovXG4vKi50b3AtY29udGFpbmVyIC51aS10YWJzIC51aS10YWJzLW5hdiwqL1xuLyoudG9wLWNvbnRhaW5lciAucmlnaHQtdGFiLWJnLCovXG4vKi5yaWJib24tdmlldyAucmlnaHQtbG9nbywqL1xuLyoucmliYm9uLXZpZXcgLmxlZnQtbG9nbyB7Ki9cbi8qICBkaXNwbGF5OiBub25lOyovXG4vKn0qL1xuLyoudG9wLWNvbnRhaW5lciB7Ki9cbi8qICBoZWlnaHQ6IDEzNHB4OyAhKiAxNjRweCAtIDMwICohKi9cbi8qfSovXG5cbi8qIENvbnRleHQgTWVudSAtIFNvbWUgY29udGV4dCBtZW51IHN0eWxlcyBoZXJlIGJlY2F1c2Ugb3ZlcmxheSBtZW51IGRyb3Bkb3duIGF0dGFjaGVzIHRvIGJvZHkgc28gbmVlZHMgZ2xvYmFsIHN0eWxpbmcsIGFuZCBoZW5jZSB3YW50IHRvIGtlZXAgdGhlIGZvbnQgc2l6aW5nIGFsbCBpbiBvbmUgcGxhY2UuICovXG4uY29udGV4dC1tZW51LWJhciBzcGFuLFxuLnAtbWVudS1vdmVybGF5IHNwYW4ge1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbn1cbiIsIi5sb2dpbi1iZyAuaGlkZS1pbi1sb2dpbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5sYXlvdXQtd3JhcHBlci5sYXlvdXQtc3RhdGljIC5sYXlvdXQtY29udGVudCB7XG4gIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7IC8qIFRoaXMgaXMganVzdCBURU1QIHRvIHJlbW92ZSB0aGUgcGFkZGluZyBmb3IgdW51c2VkIGJyZWFkY3J1bWIuICovXG59XG5cbi5ib3R0b20tY29udGFpbmVyIHtcbiAgbWFyZ2luLWxlZnQ6IDI0NXB4OyAvKiBUT0RPIHRoaXMgbmVlZHMgdG8gYmUgYWRqdXN0ZWQuIEJ1dCB0aGlzIGZvb3RlciB3aWxsIGxpa2VseSBnbyBpbnRvIHRoZSBsZWZ0IG1lbnUgYm90dG9tLiAqL1xufVxuXG4ubGF5b3V0LXdyYXBwZXIgLmxheW91dC1jb250ZW50IC5sYXlvdXQtY29udGVudC1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4OyAvKiBUbyBhY2NvbXBhbnkgdGhlIGZsZXg6IDEgMSAwIGNvbWluZyBmcm9tIFByaW1lVnVlIHN0eWxpbmcuIFRoaXMgd2lsbCBjb3JyZWN0bHkgYWxpZ24gdGhlIGNoaWxkIGNvbXBvbmVudHMuICovXG4gIHBhZGRpbmc6IDA7IC8qIFJlbW92ZSBwYWRkaW5nIGFyb3VuZCB0aGUgbWFpbiBjb250ZW50IGFyZWEuIENvbmZsaWN0aW5nIHdpdGggYXBvbGxvIHRoZW1pbmcuICovXG59XG5cbi8qIFRPRE86IFBvc3NpYmx5IHRlbXAgc3R5bGVzIGJlbG93LiBEb2luZyB0aGlzIGZvciBob3Jpem9udGFsIG1lbnUgbW9kZSAqL1xuLmxheW91dC13cmFwcGVyLmxheW91dC1ob3Jpem9udGFsIC5sYXlvdXQtY29udGVudCB7XG4gIHBhZGRpbmctdG9wOiAxcHg7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmxheW91dC13cmFwcGVyLmxheW91dC1ob3Jpem9udGFsIC5sYXlvdXQtbWVudS1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgdG9wOiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gIH1cbn1cbi5sYXlvdXQtd3JhcHBlci5sYXlvdXQtaG9yaXpvbnRhbCAubGF5b3V0LW1lbnUtY29udGFpbmVyIC5sYXlvdXQtbWVudSA+IGxpID4gYSB7XG4gIGhlaWdodDogNDBweDsgLyogVG8gb3ZlcnJpZGUgdGhlIDUwcHggZm9yY2VkIGhlaWdodCBpbiBQcmltZVZ1ZSwgd2hpY2ggbWFrZXMgdGhlIG1lbnUgdGFsbGVyIHRoYW4gaXQgbmVlZHMgdG8gYmUuICovXG59XG5cbi5sYXlvdXQtd3JhcHBlci5sYXlvdXQtaG9yaXpvbnRhbCAubGF5b3V0LW1lbnUtY29udGFpbmVyIC5sYXlvdXQtbWVudSA+IGxpLmFjdGl2ZS1tZW51aXRlbSA+IHVsIHtcbiAgdG9wOiA0MHB4OyAvKiBUbyBtYXRjaCB0byB0aGUgYWRqdXN0ZWQgaGVpZ2h0IGFib3ZlIG9mIC5sYXlvdXQtY29udGVudCAqL1xuICB6LWluZGV4OiAxMDA7IC8qIFRvIGVuc3VyZSB0aGUgZHJvcGRvd24gbWVudSBpdGVtcyBhcmUgYWx3YXlzIG9uIHRvcCBvZiBlZGl0IHZpZXdzLiAqL1xufVxuXG4ubGF5b3V0LXdyYXBwZXIubGF5b3V0LXNsaW0gLmxheW91dC1jb250ZW50IHtcbiAgcGFkZGluZy10b3A6IDA7XG4gIG1hcmdpbi1sZWZ0OiA0MnB4OyAvKiBNYXRjaCBuZXcgc2xpbSBtZW51IHdpZHRoLiAqL1xufVxuXG4ubGF5b3V0LXdyYXBwZXIubGF5b3V0LXNsaW0gLmxheW91dC1tZW51LWNvbnRhaW5lciAubGF5b3V0LW1lbnUgPiBsaSA+IHVsIHtcbiAgbGVmdDogNDJweDsgLyogTWF0Y2ggbmV3IHNsaW0gbWVudSB3aWR0aC4gVE9ETzogQmVzdCB0byB1cGRhdGUgdGhpcyBpbiB0aGUgcHJpbWV2dWUgc2NzcyBzb3VyY2UgZmlsZSBpbnN0ZWFkLCBidXQgZG9udCB3YW50IHRvIGRvIHRoYXQgdW50aWwgd2UgaGF2ZSB0byBpbXBvcnQgdGhlIHdob2xlIG1lbnUgY29kZSwgYXMgaXQgY29tcGxpY2F0ZWQgdXBncmFkZSBzdGVwcyB1cG9uIG5ldyB2ZXJzaW9ucy4gKi9cbn1cblxuLmxheW91dC13cmFwcGVyLmxheW91dC1zdGF0aWMgLmxheW91dC1tZW51LWNvbnRhaW5lciB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4vKiBUT0RPOiB0ZW1wIHRvIG1vdmUgY29uZmlnIG1lbnUgYnV0dG9uIG91dCBvZiB0aGUgd2F5ICovXG4ubGF5b3V0LWNvbmZpZyAubGF5b3V0LWNvbmZpZy1jb250ZW50IC5sYXlvdXQtY29uZmlnLWJ1dHRvbiB7XG4gIHRvcDogaW5pdGlhbDtcbiAgYm90dG9tOiAxMDBweDtcbiAgb3BhY2l0eTogMC44O1xufVxuXG4vKiBDb2xvciBvdmVycmlkZXMuIFNob3VsZCBldmVudHVhbGx5IGdvIGludG8gdGhlIFNDU1Mgc291cmNlcyAqL1xuLmxheW91dC13cmFwcGVyIC50b3BiYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzI2ODliO1xufVxuXG4jdHRfbWFpbl91aSAubGF5b3V0LXdyYXBwZXIgLnRvcGJhciAubWVudS1idXR0b24ge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICB3aWR0aDogNDJweDtcbn1cblxuLyogSGlkZSBib3R0b20gcmVkIGJvcmRlciwgYXMgZXZlcnl0aGluZyBpbiBoZXJlIHNob3VsZCBub3cgaGF2ZSBtb3ZlZCB0byB0aGUgbGVmdCBtZW51LiBOb3RlLCB0aGlzIGFsc28gYWZmZWN0cyB0aGUgcGFnaW5hdGlvbiBjb250cm9scyBhdCB0aGUgYm90dG9tLiAqL1xuLyogVGhpcyBtYXkgbmVlZCB0byBiZSBleHBhbmRlZCB0byByZW1vdmUgdGhlIGh0bWwgZ3JpZC1ib3R0b20tYm9yZGVyIGFuZCBib3R0b20tZGl2ICovXG4udmlldyAuYm90dG9tLWRpdixcbi5lZGl0LXZpZXcgLmdyaWQtYm90dG9tLWJvcmRlciwgLnZpZXcgLmdyaWQtYm90dG9tLWJvcmRlcixcbi5ncmlkLWJvdHRvbS1ib3JkZXIge1xuICBkaXNwbGF5OiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBoZWlnaHQ6IDA7XG59XG5cbi8qIFN1YiBWaWV3cyBuZWVkIGJvdHRvbSBwYWdpbmcgZGl2IHRvIGJlIHZpc2libGUuICovXG4udmlldy5zdWItdmlldyAuYm90dG9tLWRpdiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbi8qIFN0eWxlcyB0byBoaWRlIHRoZSB0b3BiYXIgZHVyaW5nIHRoZSB0cmFuc2l0aW9uIHBlcmlvZCAqL1xuLyogTm90ZTogVGhlIHJpYmJvbiBtZW51IHRvcCBiYXIgaGVpZ2h0IGlzIDMwcHggKi9cbi8qLnRvcC1jb250YWluZXIgLnVpLXRhYnMgLnVpLXRhYnMtbmF2LCovXG4vKi50b3AtY29udGFpbmVyIC5yaWdodC10YWItYmcsKi9cbi8qLnJpYmJvbi12aWV3IC5yaWdodC1sb2dvLCovXG4vKi5yaWJib24tdmlldyAubGVmdC1sb2dvIHsqL1xuLyogIGRpc3BsYXk6IG5vbmU7Ki9cbi8qfSovXG4vKi50b3AtY29udGFpbmVyIHsqL1xuLyogIGhlaWdodDogMTM0cHg7ICEqIDE2NHB4IC0gMzAgKiEqL1xuLyp9Ki9cbi8qIENvbnRleHQgTWVudSAtIFNvbWUgY29udGV4dCBtZW51IHN0eWxlcyBoZXJlIGJlY2F1c2Ugb3ZlcmxheSBtZW51IGRyb3Bkb3duIGF0dGFjaGVzIHRvIGJvZHkgc28gbmVlZHMgZ2xvYmFsIHN0eWxpbmcsIGFuZCBoZW5jZSB3YW50IHRvIGtlZXAgdGhlIGZvbnQgc2l6aW5nIGFsbCBpbiBvbmUgcGxhY2UuICovXG4uY29udGV4dC1tZW51LWJhciBzcGFuLFxuLnAtbWVudS1vdmVybGF5IHNwYW4ge1xuICBmb250LXNpemU6IDE0cHg7XG59IiwiXG4ucC1zcGxpdGJ1dHRvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ucC1zcGxpdGJ1dHRvbiAucC1zcGxpdGJ1dHRvbi1kZWZhdWx0YnV0dG9uIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICBib3JkZXItcmlnaHQ6IDAgbm9uZTtcbn1cblxuLnAtc3BsaXRidXR0b24tbWVudWJ1dHRvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuLnAtc3BsaXRidXR0b24gLnAtbWVudSB7XG4gICAgbWluLXdpZHRoOiAxMDAlO1xufVxuXG4ucC1mbHVpZCAucC1zcGxpdGJ1dHRvbiAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG59XG4iLCIucC1zcGxpdGJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5wLXNwbGl0YnV0dG9uIC5wLXNwbGl0YnV0dG9uLWRlZmF1bHRidXR0b24ge1xuICBmbGV4OiAxIDEgYXV0bztcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICBib3JkZXItcmlnaHQ6IDAgbm9uZTtcbn1cblxuLnAtc3BsaXRidXR0b24tbWVudWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xufVxuXG4ucC1zcGxpdGJ1dHRvbiAucC1tZW51IHtcbiAgbWluLXdpZHRoOiAxMDAlO1xufVxuXG4ucC1mbHVpZCAucC1zcGxpdGJ1dHRvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG59IiwiXG4udHQtb3ZlcmxheW1lbnUgeyAvKiBDb3B5IHRoZSBwLXNwbGl0YnV0dG9uIENTUyB0byBhbGxvdyBpbi1saW5lIGRpc3BsYXkgKi9cbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbn1cbi5tZW51LWJ1dHRvbiB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4iLCIudHQtb3ZlcmxheW1lbnUgeyAvKiBDb3B5IHRoZSBwLXNwbGl0YnV0dG9uIENTUyB0byBhbGxvdyBpbi1saW5lIGRpc3BsYXkgKi9cbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG59XG5cbi5tZW51LWJ1dHRvbiB7XG4gIHdpZHRoOiAxMDAlO1xufSIsIlxuLnR0LW92ZXJsYXltZW51IHsgLyogQ29weSB0aGUgcC1zcGxpdGJ1dHRvbiBDU1MgdG8gYWxsb3cgaW4tbGluZSBkaXNwbGF5ICovXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG59XG4ubWVudS1idXR0b24ge1xuICAgIHdpZHRoOiAxMDAlO1xufVxuIiwiLnR0LW92ZXJsYXltZW51IHsgLyogQ29weSB0aGUgcC1zcGxpdGJ1dHRvbiBDU1MgdG8gYWxsb3cgaW4tbGluZSBkaXNwbGF5ICovXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xufVxuXG4ubWVudS1idXR0b24ge1xuICB3aWR0aDogMTAwJTtcbn0iLCJcbi5tZW51LWl0ZW0ge1xuICAgIC8qZmxleDogMSAxIDA7ICEqIFVuY29tbWVudCB0byBzcHJlYWQgb3V0IHRoZSBidXR0b25zIGF0IGVxdWFsIHNpemVkLiBUaGlzIHRvZ2V0aGVyIHdpdGggdGhlIHN0eWxlcyBpbiBUVENvbnRleHRNZW51LnZ1ZSB3aWxsIG1ha2UgYWxsIHRoZSBidXR0b25zIHRoZSBzYW1lIHNpemUsIHJlZ2FyZGxlc3Mgb2YgaW50ZXJuYWwgcGFkZGluZyAqISovXG4gICAgLyptYXJnaW4tdG9wOiA1cHg7Ki8gLyogUmVtb3ZlZCB0aGUgdG9wIHBhZGRpbmcgdG8gbWFrZSBpdCBtb3JlIGJhbGFuY2VkIHVudGlsIHdlIGRlY2lkZSBob3cgdGhlc2UgYnV0dG9ucyB3aWxsIGxvb2ssIGFzIGJvdHRvbSBwYWRkaW5nIGNhbm5vdCBiZSBhcHBsaWVkIHNpbXBseSwgZHVlIHRvIGl0IGxvb2tpbmcgb2RkIHdoZW4gYW4gZWRpdCB2aWV3IGlzIG9wZW4uICovXG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcbn1cbi5tZW51LWl0ZW06Zmlyc3QtY2hpbGQge1xuICAgIG1hcmdpbi1sZWZ0OiAwOyAvKiBvdXRlciBwYWRkaW5nIGNvbnRyb2xsZWQgYnkgb3ZlcmFsbCAuY29udGV4dC1tZW51LWJhciAqL1xufVxuOjp2LWRlZXAoLnAtYnV0dG9uKSB7XG4gICAgaGVpZ2h0OiAxMDAlOyAvKiBUbyBlbnN1cmUgdGhlIG1heCBhdmFpbGFibGUgaGVpZ2h0IGlzIHVzZWQsIGFuZCB0aGVuIGFsbCBtZW51IGJ1dHRvbnMgd2lsbCBiZSBzYW1lIGhlaWdodCAod2l0aG91dCB0aGlzLCBzcGxpdGJ1dHRvbiBpcyB0YWxsZXIgdGhhbiBzaW5nbGUgYnV0dG9uKSAqL1xuICAgIGJhY2tncm91bmQ6ICNmZmY7IC8qIFByZXZpb3VzbHkgI2Y4ZjlmYSBidXQgdGhlIGNvbnRyYXN0IGFnYWluc3QgdGhlIGJhY2tncm91bmQgd2FzIG5vdCBncmVhdC4gKi9cbiAgICBjb2xvcjogIzMyNjg5YjsgLyogVGhpcyB3aWxsIGFsc28gc2V0IHRoZSBpY29uIGNvbG91ciB0byB0aGlzLiAqL1xuICAgIGJvcmRlci1jb2xvcjogI2UxZTFlMTsgLyogYWRkIG91dGxpbmUgdG8gdGhlIHZ1ZSBjb250ZXh0IG1lbnUgYnV0dG9ucy4gaW1wcm92ZXMgc3BsaXRidXR0b24gdmlzdWFsLiAqL1xuICAgIHBhZGRpbmc6IDAuNHJlbSAwLjZyZW07IC8qIFRvIG1hdGNoIGZpZ21hIGRlc2lnbiAqL1xufVxuOjp2LWRlZXAoLnAtYnV0dG9uIC5wLWJ1dHRvbi1sYWJlbCkge1xuICAgIGNvbG9yOiAjM2IzYjNiO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7IC8qIEVkaXQgYnV0dG9uIGxhYmVsIGxvb2tzIG9kZCBpZiBjZW50ZXJlZCB3aXRoIHRoZSBleHRyYSB3aWR0aCBmb3IgbWFzcyBlZGl0LiBsZWZ0IGFsaWduIGxvb2tzIGJldHRlci4gKi9cbn1cbjo6di1kZWVwKC5wLWJ1dHRvbjplbmFibGVkOmhvdmVyIC5wLWJ1dHRvbi1sYWJlbCkge1xuICAgIGNvbG9yOiAjZmZmO1xufVxuOjp2LWRlZXAoLnAtYnV0dG9uKTpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogLjQ7IC8qIFByZXZpb3VzbHkgMC42IHNhbWUgYXMgLnAtY29tcG9uZW50OmRpc2FibGVkLCBidXQgdGhlIGNvbnRyYXN0IGFnYWluc3QgZW5hYmxlZCBhbmQgY29udGV4dG1lbnUgYmFja2dyb3VuZCB3YXMgbm90IGdvb2QgZW5vdWdoLiAqL1xuICAgIGNvbG9yOiAjY2FjYWNhO1xuICAgIGJvcmRlci1jb2xvcjogI2NhY2FjYTtcbn1cbi8qIFdvcmtzIHRvZ2V0aGVyIHdpdGggdGhlIGR5bmFtaWMgY2xhc3MgZm9yIGl0ZW0uYWN0aW9uX2dyb3VwX2lkIHNldCBpbiBUVENvbnRleHRNZW51LnZ1ZSBQZXJoYXBzIHJlZmFjdG9yIHRvIGJlIEpTIGJhc2VkIHdpdGggYSB2LWlmICovXG4vKi5zdWItdmlldyAubWVudS1pdGVtLmxlZnQtY2FuY2VsSWNvbiwqL1xuLyouc3ViLXZpZXcgLm1lbnUtaXRlbS5jZW50ZXItY2FuY2VsSWNvbiwqL1xuLyouc3ViLXZpZXcgLm1lbnUtaXRlbS5yaWdodC1jYW5jZWxJY29uIHsqL1xuLyogICAgZGlzcGxheTogbm9uZTsgISogQ2FuY2VsIGJ1dHRvbiBpcyBub3QgYXBwbGljYWJsZSBvbiBzdWJ2aWV3IG1lbnVzICohKi9cbi8qfSovXG4iLCIubWVudS1pdGVtIHtcbiAgLypmbGV4OiAxIDEgMDsgISogVW5jb21tZW50IHRvIHNwcmVhZCBvdXQgdGhlIGJ1dHRvbnMgYXQgZXF1YWwgc2l6ZWQuIFRoaXMgdG9nZXRoZXIgd2l0aCB0aGUgc3R5bGVzIGluIFRUQ29udGV4dE1lbnUudnVlIHdpbGwgbWFrZSBhbGwgdGhlIGJ1dHRvbnMgdGhlIHNhbWUgc2l6ZSwgcmVnYXJkbGVzcyBvZiBpbnRlcm5hbCBwYWRkaW5nICohKi9cbiAgLyptYXJnaW4tdG9wOiA1cHg7Ki8gLyogUmVtb3ZlZCB0aGUgdG9wIHBhZGRpbmcgdG8gbWFrZSBpdCBtb3JlIGJhbGFuY2VkIHVudGlsIHdlIGRlY2lkZSBob3cgdGhlc2UgYnV0dG9ucyB3aWxsIGxvb2ssIGFzIGJvdHRvbSBwYWRkaW5nIGNhbm5vdCBiZSBhcHBsaWVkIHNpbXBseSwgZHVlIHRvIGl0IGxvb2tpbmcgb2RkIHdoZW4gYW4gZWRpdCB2aWV3IGlzIG9wZW4uICovXG4gIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG5cbi5tZW51LWl0ZW06Zmlyc3QtY2hpbGQge1xuICBtYXJnaW4tbGVmdDogMDsgLyogb3V0ZXIgcGFkZGluZyBjb250cm9sbGVkIGJ5IG92ZXJhbGwgLmNvbnRleHQtbWVudS1iYXIgKi9cbn1cblxuOjp2LWRlZXAoLnAtYnV0dG9uKSB7XG4gIGhlaWdodDogMTAwJTsgLyogVG8gZW5zdXJlIHRoZSBtYXggYXZhaWxhYmxlIGhlaWdodCBpcyB1c2VkLCBhbmQgdGhlbiBhbGwgbWVudSBidXR0b25zIHdpbGwgYmUgc2FtZSBoZWlnaHQgKHdpdGhvdXQgdGhpcywgc3BsaXRidXR0b24gaXMgdGFsbGVyIHRoYW4gc2luZ2xlIGJ1dHRvbikgKi9cbiAgYmFja2dyb3VuZDogI2ZmZjsgLyogUHJldmlvdXNseSAjZjhmOWZhIGJ1dCB0aGUgY29udHJhc3QgYWdhaW5zdCB0aGUgYmFja2dyb3VuZCB3YXMgbm90IGdyZWF0LiAqL1xuICBjb2xvcjogIzMyNjg5YjsgLyogVGhpcyB3aWxsIGFsc28gc2V0IHRoZSBpY29uIGNvbG91ciB0byB0aGlzLiAqL1xuICBib3JkZXItY29sb3I6ICNlMWUxZTE7IC8qIGFkZCBvdXRsaW5lIHRvIHRoZSB2dWUgY29udGV4dCBtZW51IGJ1dHRvbnMuIGltcHJvdmVzIHNwbGl0YnV0dG9uIHZpc3VhbC4gKi9cbiAgcGFkZGluZzogMC40cmVtIDAuNnJlbTsgLyogVG8gbWF0Y2ggZmlnbWEgZGVzaWduICovXG59XG5cbjo6di1kZWVwKC5wLWJ1dHRvbiAucC1idXR0b24tbGFiZWwpIHtcbiAgY29sb3I6ICMzYjNiM2I7XG4gIHRleHQtYWxpZ246IGxlZnQ7IC8qIEVkaXQgYnV0dG9uIGxhYmVsIGxvb2tzIG9kZCBpZiBjZW50ZXJlZCB3aXRoIHRoZSBleHRyYSB3aWR0aCBmb3IgbWFzcyBlZGl0LiBsZWZ0IGFsaWduIGxvb2tzIGJldHRlci4gKi9cbn1cblxuOjp2LWRlZXAoLnAtYnV0dG9uOmVuYWJsZWQ6aG92ZXIgLnAtYnV0dG9uLWxhYmVsKSB7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG46OnYtZGVlcCgucC1idXR0b24pOmRpc2FibGVkIHtcbiAgb3BhY2l0eTogMC40OyAvKiBQcmV2aW91c2x5IDAuNiBzYW1lIGFzIC5wLWNvbXBvbmVudDpkaXNhYmxlZCwgYnV0IHRoZSBjb250cmFzdCBhZ2FpbnN0IGVuYWJsZWQgYW5kIGNvbnRleHRtZW51IGJhY2tncm91bmQgd2FzIG5vdCBnb29kIGVub3VnaC4gKi9cbiAgY29sb3I6ICNjYWNhY2E7XG4gIGJvcmRlci1jb2xvcjogI2NhY2FjYTtcbn1cblxuLyogV29ya3MgdG9nZXRoZXIgd2l0aCB0aGUgZHluYW1pYyBjbGFzcyBmb3IgaXRlbS5hY3Rpb25fZ3JvdXBfaWQgc2V0IGluIFRUQ29udGV4dE1lbnUudnVlIFBlcmhhcHMgcmVmYWN0b3IgdG8gYmUgSlMgYmFzZWQgd2l0aCBhIHYtaWYgKi9cbi8qLnN1Yi12aWV3IC5tZW51LWl0ZW0ubGVmdC1jYW5jZWxJY29uLCovXG4vKi5zdWItdmlldyAubWVudS1pdGVtLmNlbnRlci1jYW5jZWxJY29uLCovXG4vKi5zdWItdmlldyAubWVudS1pdGVtLnJpZ2h0LWNhbmNlbEljb24geyovXG4vKiAgICBkaXNwbGF5OiBub25lOyAhKiBDYW5jZWwgYnV0dG9uIGlzIG5vdCBhcHBsaWNhYmxlIG9uIHN1YnZpZXcgbWVudXMgKiEqL1xuLyp9Ki8iLCJcbi8qIEhpZGUgaWNvbnMgZnJvbSBkcm9wZG93biBtZW51cyBvZiBjb250ZXh0IGJ1dHRvbnMgYW5kIG5vdCB0aGUgYnV0dG9ucyB0aGVtc2VsdmVzLiAqL1xuLnAtbWVudWl0ZW0tbGluayAucC1tZW51aXRlbS1pY29uIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuLyogSWNvbnMgY2FuIGJlIGRpc3BsYXllZCBpbiBkcm9wZG93bnMgYnkgdXNpbmcgdGhlIGNsYXNzIFwidHRpY29uLXNob3ctaW4tZHJvcGRvd25cIlxuICAgZm9yIGV4YW1wbGU6IE11bHRpLXNlbGVjdCAocmFkaW8gYW5kIGNoZWNrIGJveGVzKSBzdGlsbCBuZWVkIHRvIGJlIGRpc3BsYXllZC5cbiovXG4ucC1tZW51aXRlbS1saW5rIC50dGljb24tc2hvdy1pbi1kcm9wZG93biB7XG4gICAgZGlzcGxheTogaW5saW5lO1xufVxuIiwiLyogSGlkZSBpY29ucyBmcm9tIGRyb3Bkb3duIG1lbnVzIG9mIGNvbnRleHQgYnV0dG9ucyBhbmQgbm90IHRoZSBidXR0b25zIHRoZW1zZWx2ZXMuICovXG4ucC1tZW51aXRlbS1saW5rIC5wLW1lbnVpdGVtLWljb24ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiBJY29ucyBjYW4gYmUgZGlzcGxheWVkIGluIGRyb3Bkb3ducyBieSB1c2luZyB0aGUgY2xhc3MgXCJ0dGljb24tc2hvdy1pbi1kcm9wZG93blwiXG4gICBmb3IgZXhhbXBsZTogTXVsdGktc2VsZWN0IChyYWRpbyBhbmQgY2hlY2sgYm94ZXMpIHN0aWxsIG5lZWQgdG8gYmUgZGlzcGxheWVkLlxuKi9cbi5wLW1lbnVpdGVtLWxpbmsgLnR0aWNvbi1zaG93LWluLWRyb3Bkb3duIHtcbiAgZGlzcGxheTogaW5saW5lO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/