/*

font mixin
$key: type style key (ex. bold-24 or roman-24). See typography.json for options.
$breakpoint: (optional) breakpoint key (ex. full or tablet). See breakpoints.json for options.

@include font(bold-24);

When used without a breakpoint specified this mixin will produce font properties
wrapped in media queries. It's a simple way to apply fully responsive type styles
to a class or element.

@include font(bold-24, full);

If a breakpoint is specified there will be only a single set of font properties
that are NOT wrapped in any media queries.

*/
/*

  color(yellow) single argument defaults to dark colors
  color(light, yellow) returns light yellow

*/
/* rounded corners
  usage: border-radius( baseline( n ) )
*/
/*

https://css-tricks.com/snippets/sass/maintain-aspect-ratio-mixin/

The mixin assumes you'll be nesting an element with the class of content inside your initial block

<div class="sixteen-nine">
  <div class="content">
    insert content here
    this will maintain a 16:9 aspect ratio
  </div>
</div>

*/
/* Helvetica Neue LT W06_57 Cond */
@font-face {
  font-family: "Helvetica Neue LT Cond";
  src: url("https://fonts.twitter.com/helvetica_neue/897ea951-7ec6-47f4-9da3-7d0619b46d04.eot?#iefix");
  src: url("https://fonts.twitter.com/helvetica_neue/897ea951-7ec6-47f4-9da3-7d0619b46d04.eot?#iefix") format("eot"), url("https://fonts.twitter.com/helvetica_neue/033b54db-b1ce-4da7-861b-61d059c1c9b8.woff2") format("woff2"), url("https://fonts.twitter.com/helvetica_neue/d9c842f8-b37a-414f-be86-97ea9c61d3d7.woff") format("woff"), url("https://fonts.twitter.com/helvetica_neue/84a2cc09-f02d-4c1d-a5a9-2ab456439c73.svg#84a2cc09-f02d-4c1d-a5a9-2ab456439c73") format("svg"); }

/* Helvetica Neue LT W06_75 Bold */
@font-face {
  font-family: "Helvetica Neue LT";
  font-weight: 700;
  font-style: normal;
  src: url("https://fonts.twitter.com/helvetica_neue/3aeaeb1d-1dea-4e9b-9e83-52adc5a87209.eot?#iefix");
  src: url("https://fonts.twitter.com/helvetica_neue/3aeaeb1d-1dea-4e9b-9e83-52adc5a87209.eot?#iefix") format("eot"), url("https://fonts.twitter.com/helvetica_neue/d9122e8d-bf26-4f1c-bab9-c06599397b59.woff2") format("woff2"), url("https://fonts.twitter.com/helvetica_neue/db0cec12-a947-40fe-a115-c5ce22ee79f6.woff") format("woff"), url("https://fonts.twitter.com/helvetica_neue/024411ef-26bf-4536-aea4-ec953846eda7.svg#024411ef-26bf-4536-aea4-ec953846eda7") format("svg"); }

/* Helvetica Neue LT W06_85 Heavy */
@font-face {
  font-family: "Helvetica Neue LT";
  font-weight: 900;
  font-style: normal;
  src: url("https://fonts.twitter.com/helvetica_neue/8a90a2ba-1276-4b3f-bc1c-8526172b27f4.eot?#iefix");
  src: url("https://fonts.twitter.com/helvetica_neue/8a90a2ba-1276-4b3f-bc1c-8526172b27f4.eot?#iefix") format("eot"), url("https://fonts.twitter.com/helvetica_neue/c415f3fd-ff27-40fe-af94-8b4a54b4b4e4.woff2") format("woff2"), url("https://fonts.twitter.com/helvetica_neue/a1da20c7-4dc9-4af5-bd6f-9ebe50b6788d.woff") format("woff"), url("https://fonts.twitter.com/helvetica_neue/acd8d6df-9696-4092-bf23-5370c63ca9fb.svg#acd8d6df-9696-4092-bf23-5370c63ca9fb") format("svg"); }

/* Helvetica Neue LT W06_56 It */
@font-face {
  font-family: "Helvetica Neue LT";
  font-weight: 400;
  font-style: italic;
  src: url("https://fonts.twitter.com/helvetica_neue/7df39325-0e0e-4635-a717-59033a026fc5.eot?#iefix");
  src: url("https://fonts.twitter.com/helvetica_neue/7df39325-0e0e-4635-a717-59033a026fc5.eot?#iefix") format("eot"), url("https://fonts.twitter.com/helvetica_neue/6acb9b26-7e8e-46b4-b68b-631ab07d6ed7.woff2") format("woff2"), url("https://fonts.twitter.com/helvetica_neue/2914a90e-d766-4cf8-97b9-04c5fe897f06.woff") format("woff"), url("https://fonts.twitter.com/helvetica_neue/b85ea5b3-8dc8-4989-a982-f461bc9655f8.svg#b85ea5b3-8dc8-4989-a982-f461bc9655f8") format("svg"); }

/* Helvetica Neue LT W06_45 Light */
@font-face {
  font-family: "Helvetica Neue LT";
  font-weight: 300;
  font-style: normal;
  src: url("https://fonts.twitter.com/helvetica_neue/2023e7d1-9f0a-4cac-8e80-22321db918dd.eot?#iefix");
  src: url("https://fonts.twitter.com/helvetica_neue/2023e7d1-9f0a-4cac-8e80-22321db918dd.eot?#iefix") format("eot"), url("https://fonts.twitter.com/helvetica_neue/198fd78b-3655-4768-89c4-31caf65ea363.woff2") format("woff2"), url("https://fonts.twitter.com/helvetica_neue/49631ce8-9201-47a8-8874-45371417c35f.woff") format("woff"), url("https://fonts.twitter.com/helvetica_neue/9ac3d424-8521-46cf-8878-7324762db7b4.svg#9ac3d424-8521-46cf-8878-7324762db7b4") format("svg"); }

/* Helvetica Neue LT W06_55 Roman */
@font-face {
  font-family: "Helvetica Neue LT";
  font-weight: 400;
  font-style: normal;
  src: url("https://fonts.twitter.com/helvetica_neue/8b3b0133-222d-4ffc-9d6e-565dd879690c.eot?#iefix");
  src: url("https://fonts.twitter.com/helvetica_neue/8b3b0133-222d-4ffc-9d6e-565dd879690c.eot?#iefix") format("eot"), url("https://fonts.twitter.com/helvetica_neue/1a14dcac-7c9e-471c-8039-33c730f871f2.woff2") format("woff2"), url("https://fonts.twitter.com/helvetica_neue/558ed534-0c60-42cf-8b94-d0a16eb70d37.woff") format("woff"), url("https://fonts.twitter.com/helvetica_neue/6513e804-e03e-41a1-8385-d5e0971f2009.svg#6513e804-e03e-41a1-8385-d5e0971f2009") format("svg"); }

/* Helvetica Neue LT W06_35 Thin */
@font-face {
  font-family: "Helvetica Neue LT";
  font-weight: 200;
  font-style: normal;
  src: url("https://fonts.twitter.com/helvetica_neue/2a129142-7c50-4728-9227-1eebf2d9f16d.eot?#iefix");
  src: url("https://fonts.twitter.com/helvetica_neue/2a129142-7c50-4728-9227-1eebf2d9f16d.eot?#iefix") format("eot"), url("https://fonts.twitter.com/helvetica_neue/2192a26c-de1c-4c50-88d1-e5136033c15a.woff2") format("woff2"), url("https://fonts.twitter.com/helvetica_neue/0212d203-ce3f-42e2-862a-edf988621728.woff") format("woff"), url("https://fonts.twitter.com/helvetica_neue/552c43a3-6cc7-47b9-8b81-398b961b5167.svg#552c43a3-6cc7-47b9-8b81-398b961b5167") format("svg"); }

/*

font mixin
$key: type style key (ex. bold-24 or roman-24). See typography.json for options.
$breakpoint: (optional) breakpoint key (ex. full or tablet). See breakpoints.json for options.

@include font(bold-24);

When used without a breakpoint specified this mixin will produce font properties
wrapped in media queries. It's a simple way to apply fully responsive type styles
to a class or element.

@include font(bold-24, full);

If a breakpoint is specified there will be only a single set of font properties
that are NOT wrapped in any media queries.

*/
/*

  color(yellow) single argument defaults to dark colors
  color(light, yellow) returns light yellow

*/
/* rounded corners
  usage: border-radius( baseline( n ) )
*/
/*

https://css-tricks.com/snippets/sass/maintain-aspect-ratio-mixin/

The mixin assumes you'll be nesting an element with the class of content inside your initial block

<div class="sixteen-nine">
  <div class="content">
    insert content here
    this will maintain a 16:9 aspect ratio
  </div>
</div>

*/
.eu-cookie-notice {
  margin: 0 auto;
  z-index: 9;
  max-width: 1600px;
  padding: 1.5rem 0;
  display: none;
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  width: 100%; }
  .eu-cookie-notice.active {
    display: block; }
  .eu-cookie-notice .container {
    margin-left: 3.75rem;
    margin-right: 3.75rem; }
    @media (max-width: 479px) {
      .eu-cookie-notice .container {
        margin-left: 6.6%;
        margin-right: 6.6%; } }
  .eu-cookie-notice .message {
    width: 100%;
    float: right;
    margin-right: 0;
    float: none; }
    .eu-cookie-notice .message a {
      text-decoration: underline;
      color: #FFFFFF; }
    @media (min-width: 768px) {
      .eu-cookie-notice .message {
        width: 66.10169%;
        float: left;
        margin-right: 1.69492%; } }
  .eu-cookie-notice .button {
    float: none;
    min-width: 150px;
    margin-top: 1.5rem;
    border: 1px solid #FFFFFF;
    border-radius: 0.125rem;
    background-clip: padding-box;
    /* stops bg color from leaking outside the border: */
    text-align: center;
    padding: 0.375rem 0; }
    @media (min-width: 768px) {
      .eu-cookie-notice .button {
        margin-top: 0;
        float: right; } }
    .eu-cookie-notice .button:hover {
      cursor: pointer; }
/*

font mixin
$key: type style key (ex. bold-24 or roman-24). See typography.json for options.
$breakpoint: (optional) breakpoint key (ex. full or tablet). See breakpoints.json for options.

@include font(bold-24);

When used without a breakpoint specified this mixin will produce font properties
wrapped in media queries. It's a simple way to apply fully responsive type styles
to a class or element.

@include font(bold-24, full);

If a breakpoint is specified there will be only a single set of font properties
that are NOT wrapped in any media queries.

*/
/*

  color(yellow) single argument defaults to dark colors
  color(light, yellow) returns light yellow

*/
/* rounded corners
  usage: border-radius( baseline( n ) )
*/
/*

https://css-tricks.com/snippets/sass/maintain-aspect-ratio-mixin/

The mixin assumes you'll be nesting an element with the class of content inside your initial block

<div class="sixteen-nine">
  <div class="content">
    insert content here
    this will maintain a 16:9 aspect ratio
  </div>
</div>

*/
/*

font mixin
$key: type style key (ex. bold-24 or roman-24). See typography.json for options.
$breakpoint: (optional) breakpoint key (ex. full or tablet). See breakpoints.json for options.

@include font(bold-24);

When used without a breakpoint specified this mixin will produce font properties
wrapped in media queries. It's a simple way to apply fully responsive type styles
to a class or element.

@include font(bold-24, full);

If a breakpoint is specified there will be only a single set of font properties
that are NOT wrapped in any media queries.

*/
/*

  color(yellow) single argument defaults to dark colors
  color(light, yellow) returns light yellow

*/
/* rounded corners
  usage: border-radius( baseline( n ) )
*/
/*

https://css-tricks.com/snippets/sass/maintain-aspect-ratio-mixin/

The mixin assumes you'll be nesting an element with the class of content inside your initial block

<div class="sixteen-nine">
  <div class="content">
    insert content here
    this will maintain a 16:9 aspect ratio
  </div>
</div>

*/
.tag-masthead__sub-title {
  margin-top: 3rem; }
  @media (min-width: 768px) {
    .tag-masthead__sub-title {
      margin-top: 6rem; } }

.tag-masthead__title {
  font-family: "Helvetica Neue LT", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-weight: 700;
  font-size: 2.25rem;
  line-height: 2.25rem;
  letter-spacing: -0.025rem;
  margin: 0;
  padding: 0 0 0rem 0;
  margin-top: 1.5rem;
  margin-bottom: 3.75rem; }
  @media (min-width: 768px) {
    .tag-masthead__title {
      font-family: "Helvetica Neue LT", "Helvetica Neue", Helvetica, Arial, sans-serif;
      font-weight: 700;
      font-size: 2.25rem;
      line-height: 2.25rem;
      letter-spacing: -0.025rem;
      margin: 0;
      padding: 0 0 0rem 0; } }
  @media (min-width: 768px) {
    .tag-masthead__title {
      font-family: "Helvetica Neue LT", "Helvetica Neue", Helvetica, Arial, sans-serif;
      font-weight: 700;
      font-size: 4.5rem;
      line-height: 4.5rem;
      letter-spacing: -0.025rem;
      margin: 0;
      padding: 0 0 0rem 0;
      margin-bottom: 6rem;
      margin-top: 1.5rem; } }

.results-sort {
  padding: 1.5rem 0;
  border-top: 1px solid #AAB8C2;
  border-bottom: 1px solid #AAB8C2; }
  .results-sort .search-sort-header {
    max-width: 120px;
    display: inline; }
    .results-sort .search-sort-header__title {
      display: none; }
      @media (min-width: 768px) {
        .results-sort .search-sort-header__title {
          display: block;
          margin-bottom: 1.5rem; } }
    .results-sort .search-sort-header__total {
      display: inline;
      float: left; }
      @media (min-width: 768px) {
        .results-sort .search-sort-header__total {
          float: none;
          display: block;
          padding-bottom: 2.25rem;
          margin-bottom: 2.25rem;
          border-bottom: 1px solid #AAB8C2; } }
    @media (min-width: 768px) {
      .results-sort .search-sort-header {
        display: block; } }
  .results-sort__label {
    display: none; }
    @media (min-width: 768px) {
      .results-sort__label {
        display: block;
        margin-bottom: 1.5rem; } }
  .results-sort__radio {
    display: inline;
    margin-right: 15px; }
    .results-sort__radio label {
      cursor: pointer;
      position: relative;
      display: inline-block;
      padding-left: 1.125rem; }
      @media (min-width: 768px) {
        .results-sort__radio label {
          display: block; } }
    @media (min-width: 768px) {
      .results-sort__radio {
        display: block;
        margin-bottom: 0.75rem; } }
    .results-sort__radio input[type="radio"] + label:after {
      content: '';
      position: absolute;
      border-radius: 50%;
      background: #1DA1F2;
      z-index: 2; }
    .results-sort__radio input[type="radio"]:not(:checked),
    .results-sort__radio input[type="radio"]:checked {
      position: absolute;
      left: -9999px; }
    .results-sort__radio input[type="radio"]:not(:checked) + label:before,
    .results-sort__radio input[type="radio"]:checked + label:before {
      content: '';
      position: absolute;
      left: 0;
      top: 50%;
      -webkit-transform: translateY(-50%);
              transform: translateY(-50%);
      width: 12px;
      height: 12px;
      border: 1px solid #AAB8C2; }
    .results-sort__radio input[type="radio"]:not(:checked) + label:before,
    .results-sort__radio input[type="radio"]:checked + label:before {
      border-radius: 50%; }
    .results-sort__radio input[type="radio"]:checked + label:after {
      width: 6px;
      height: 6px;
      left: 3px;
      top: 50%;
      -webkit-transform: translateY(-50%);
              transform: translateY(-50%); }
  .results-sort.results-sort--search {
    text-align: right;
    border-top: none;
    margin-bottom: 3.75rem; }
    .results-sort.results-sort--search label {
      color: #AAB8C2; }
    .results-sort.results-sort--search.no-results {
      border: none; }
    @media (min-width: 768px) {
      .results-sort.results-sort--search {
        text-align: left;
        top: auto; } }
  @media (min-width: 768px) {
    .results-sort {
      width: 23.72881%;
      float: left;
      margin-right: 1.69492%;
      margin-left: 8.47458%;
      border: none;
      left: 0;
      padding: 0;
      position: absolute;
      text-align: left;
      top: 6rem; } }

.results-loop {
  margin: 0; }
  .results-loop .result {
    max-width: 100%;
    width: 100%;
    padding-bottom: 3rem;
    margin-top: 3rem;
    border-bottom: 1px solid #AAB8C2; }
    .results-loop .result__thumbnail {
      display: none; }
    .results-loop .result__title, .results-loop .result__topic {
      text-decoration: none;
      display: block; }
    @media (min-width: 768px) {
      .results-loop .result__title {
        font-family: "Helvetica Neue LT", "Helvetica Neue", Helvetica, Arial, sans-serif;
        font-weight: 700;
        font-size: 2.25rem;
        line-height: 2.25rem;
        letter-spacing: -0.025rem;
        margin: 0;
        padding: 0 0 0rem 0; } }
    .results-loop .result__topic {
      margin-bottom: 0.75rem; }
    .results-loop .result__byline {
      margin-top: 1.5rem; }
      .results-loop .result__byline a {
        text-decoration: none; }
    .results-loop .result__description {
      margin-top: 1.5rem; }
    .results-loop .result--image {
      display: block; }
      .results-loop .result--image .result__thumbnail {
        display: block;
        text-align: center; }
        .results-loop .result--image .result__thumbnail img {
          display: block;
          max-width: 100%;
          height: auto; }
          @media (min-width: 768px) {
            .results-loop .result--image .result__thumbnail img {
              max-width: none;
              width: 222px;
              height: 144px; } }
        @media (min-width: 768px) {
          .results-loop .result--image .result__thumbnail {
            text-align: left;
            margin-right: 3.24975rem; } }
      .results-loop .result--image .result__copy .result__topic {
        margin-top: 1.5rem; }
        @media (min-width: 768px) {
          .results-loop .result--image .result__copy .result__topic {
            margin-top: 0;
            line-height: 1; } }
      @media (min-width: 768px) {
        .results-loop .result--image {
          display: -webkit-inline-box;
          display: -ms-inline-flexbox;
          display: inline-flex;
          margin-top: 3.75rem; } }
    .results-loop .result--no-border {
      border-bottom: none; }
    @media (min-width: 768px) {
      .results-loop .result {
        margin-top: 0;
        padding-bottom: 3.75rem;
        margin-bottom: 3.75rem; } }
    .results-loop .result--before-billboard {
      border-bottom: none;
      padding-bottom: 2.25rem;
      margin-bottom: 0; }
      @media (min-width: 768px) {
        .results-loop .result--before-billboard {
          padding-bottom: 6rem; } }
  .results-loop .billboard {
    position: absolute;
    left: 0;
    right: 0;
    width: 100vw;
    max-width: 100%;
    height: 30rem;
    padding-top: 0;
    margin: auto;
    background-position: center;
    background-size: cover;
    padding-left: 6.6%;
    padding-right: 6.6%; }
    .results-loop .billboard .results-loop__section-label {
      display: none;
      z-index: 1;
      position: relative;
      left: 0;
      text-align: left;
      width: 23.72881%;
      float: left;
      margin-right: 1.69492%; }
      @media (min-width: 768px) {
        .results-loop .billboard .results-loop__section-label {
          display: block; } }
    .results-loop .billboard .result {
      z-index: 1;
      max-width: calc(100% - 13.2%);
      position: absolute;
      bottom: 3rem;
      padding-bottom: 0;
      border-bottom: none; }
      .results-loop .billboard .result__topic {
        margin-top: 0.75rem; }
      .results-loop .billboard .result__title {
        margin: 0 0 1.5rem 0; }
        @media (min-width: 768px) {
          .results-loop .billboard .result__title {
            font-family: "Helvetica Neue LT", "Helvetica Neue", Helvetica, Arial, sans-serif;
            font-weight: 700;
            font-size: 3rem;
            line-height: 3rem;
            letter-spacing: -0.025rem;
            margin: 0;
            padding: 0 0 0rem 0;
            margin: 0 0 1.5rem 0; } }
      .results-loop .billboard .result__byline {
        margin: 0; }
      @media (min-width: 768px) {
        .results-loop .billboard .result {
          width: 57.62712%;
          float: left;
          margin-right: 1.69492%;
          position: relative;
          bottom: 0;
          margin-right: 1.5rem; } }
    .results-loop .billboard__overlay {
      z-index: 0;
      position: absolute;
      top: 0;
      left: 0;
      width: 100vw;
      max-width: 100%;
      height: 30rem;
      background-color: #14171A;
      opacity: 0; }
      .results-loop .billboard__overlay--low {
        opacity: .1; }
      .results-loop .billboard__overlay--medium {
        opacity: .2; }
      .results-loop .billboard__overlay--high {
        opacity: .3; }
      @media (min-width: 1600px) {
        .results-loop .billboard__overlay {
          max-width: 1600px; } }
    @media (min-width: 768px) {
      .results-loop .billboard {
        padding-top: 7.5rem;
        padding-left: 0;
        padding-right: 0; } }
    @media (min-width: 1600px) {
      .results-loop .billboard {
        max-width: 1600px; } }
  .results-loop__billboard-spacer {
    height: 30rem;
    margin-bottom: 3.75rem; }
    @media (min-width: 768px) {
      .results-loop__billboard-spacer {
        margin-bottom: 6rem; } }
  @media (min-width: 768px) {
    .results-loop__section-label {
      width: 23.72881%;
      float: left;
      margin-right: 1.69492%;
      margin-left: 8.47458%;
      left: 0;
      position: absolute; } }
  .results-loop--tag > .results-loop__section-label, .results-loop--search > .results-loop__section-label {
    display: none; }
  @media (min-width: 768px) {
    .results-loop--search {
      margin-top: 6rem; } }
  .results-loop--author > .results-loop__section-label {
    display: none; }
  .results-loop--author .result:first-of-type {
    padding-top: 3.75rem;
    border-top: 1px solid #AAB8C2; }
  @media (min-width: 768px) {
    .results-loop--author {
      padding-left: 0;
      padding-right: 0; } }

.load-more {
  display: block;
  text-align: center;
  text-decoration: none;
  margin-top: 3.75rem;
  margin-bottom: 6rem; }
  @media (min-width: 768px) {
    .load-more {
      text-align: left; } }

.pagination--no-results {
  margin-bottom: 3.75rem; }
  @media (min-width: 768px) {
    .pagination--no-results {
      margin-bottom: 6rem; } }
  .pagination--no-results .no-results-message {
    color: #CCD6DD;
    font-family: "Helvetica Neue LT", "Helvetica Neue", Helvetica, Arial, sans-serif;
    font-weight: 700;
    font-size: 1.5rem;
    line-height: 1.5rem;
    letter-spacing: 0rem;
    margin: 0;
    padding: 0 0 0rem 0; }
    @media (min-width: 768px) {
      .pagination--no-results .no-results-message {
        font-family: "Helvetica Neue LT", "Helvetica Neue", Helvetica, Arial, sans-serif;
        font-weight: 700;
        font-size: 3rem;
        line-height: 3rem;
        letter-spacing: -0.025rem;
        margin: 0;
        padding: 0 0 0rem 0; } }

.pagination--hide {
  display: none; }

.pagination__displayed-results {
  margin-top: 2.25rem;
  margin-bottom: 2.25rem; }
  @media (min-width: 768px) {
    .pagination__displayed-results {
      margin-top: 3.75rem; } }

.pagination__page, .pagination__increment {
  display: none;
  width: 36px;
  height: 2.25rem;
  text-align: center;
  line-height: 2.25rem;
  margin-right: 16px;
  background-color: #FFFFFF;
  border: 1px solid;
  border-radius: 4px; }
  .pagination__page:hover, .pagination__increment:hover {
    color: #FFFFFF;
    fill: #FFFFFF; }
  .pagination__page--current, .pagination__increment--current {
    display: inline-block;
    cursor: default; }
    .pagination__page--current:hover, .pagination__increment--current:hover {
      color: #CCD6DD;
      border-color: #CCD6DD; }
  .pagination__page:focus, .pagination__increment:focus {
    outline: 0; }
  @media (min-width: 768px) {
    .pagination__page, .pagination__increment {
      display: inline-block; } }

.pagination__divider {
  display: none; }
  .pagination__divider--first {
    border-right: 1px solid #CCD6DD;
    margin-right: 16px; }
  .pagination__divider--last {
    border-left: 1px solid #CCD6DD;
    margin-right: 16px; }
  @media (min-width: 768px) {
    .pagination__divider {
      display: inline-block; } }

.pagination__increment {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  margin-right: 16px;
  background-color: transparent; }
  .pagination__increment svg {
    z-index: 0;
    height: 1.5rem;
    width: 1.5rem;
    margin: 5px; }
  @media (min-width: 768px) {
    .pagination__increment--shown {
      display: -webkit-inline-box;
      display: -ms-inline-flexbox;
      display: inline-flex; } }
  @media (min-width: 768px) {
    .pagination__increment {
      display: none; } }

.pagination__page-container {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex; }

.pagination__nav-container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  margin-bottom: 3.75rem; }
  @media (min-width: 768px) {
    .pagination__nav-container {
      margin-bottom: 6rem; } }

/*
  CSS Hacks - Spacing adjustments for blog feed.
  These values should be migrated into the appropriate component styles.
  Defining them here for ease of iteration since there will likely be more adjustments.
*/
.bl18-left-rail-blog-container .column-6 {
  margin-bottom: 1.5rem !important; }

.b02-blog-post-no-masthead__title {
  margin-bottom: 1.5rem !important; }

.bl18-single-tweet .tweet {
  margin-bottom: 2.25rem !important; }

.bl13-rich-text-editor p + ol, .bl13-rich-text-editor p + ul {
  padding-top: 0 !important; }

.bl13-rich-text-editor + .bl18-single-tweet .tweet {
  margin-top: 0 !important; }

.bl13-rich-text-editor {
  margin-bottom: 0.75rem !important; }

.bl13-rich-text-editor > * {
  padding-bottom: 1.5rem !important; }

.bl14-image .image {
  margin-bottom: 2.25rem !important; }

.bl16-quote {
  padding-bottom: 2.25rem !important; }

.bl17-code-snippet {
  padding-top: 0 !important;
  margin-bottom: 2.25rem !important; }

.c14-media-download__content {
  margin-bottom: 2.25rem !important; }

.c05-video .video_player {
  margin-bottom: 2.25rem !important; }

.bl18-single-tweet .tweet.deleted-tweet {
  margin-top: 0 !important; }

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjazovLy9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svd2VicGFjay9jb3JlL3N0eWxlL19taXhpbi5zY3NzPzBkNTcqKiIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svd2VicGFjay9jb3JlL3N0eWxlL190eXBlLnNjc3M/OTlkMiIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svd2VicGFjay9jb3JlL2NvbXBvbmVudHMvY29va2llLW5vdGljZS5zY3NzIiwid2VicGFjazovLy93ZWJwYWNrOi8vL2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1qY3ItbW9kdWxlcy9ibG9nLXR3aXR0ZXItdmlldy9zcmMvd2VicGFjay93ZWJwYWNrL34vc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2Nzcz9kYTZjKioiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL3dlYnBhY2svfi9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3M/YzE4MCoiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL3dlYnBhY2svfi9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zcGFuLnNjc3M/ZmNhMCIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svd2VicGFjay9+L3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzP2ViNzIiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy92YXJpYWJsZXMvY29sb3JzLmpzb24/ZDU3NCoiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL3dlYnBhY2svfi9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ndXR0ZXJzLnNjc3M/N2Q2NSIsIndlYnBhY2s6Ly8vd2VicGFjazovLy9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svd2VicGFjay9jb3JlL2NvbXBvbmVudHMvYmxvZy1yZXN1bHRzLnNjc3MiLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy92YXJpYWJsZXMvdHlwb2dyYXBoeS5qc29uPzdlYjkqIiwid2VicGFjazovLy93ZWJwYWNrOi8vL2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1qY3ItbW9kdWxlcy9ibG9nLXR3aXR0ZXItdmlldy9zcmMvd2VicGFjay9jb3JlL3ZhcmlhYmxlcy9ncmlkLmpzb24iLCJ3ZWJwYWNrOi8vL3dlYnBhY2s6Ly8vYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL3dlYnBhY2svYXBwLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUNBOzs7Ozs7Ozs7Ozs7Ozs7OztFQWlCRTtBQXlCRjs7Ozs7RUFLRTtBQWFGOztFQUVFO0FBT0Y7Ozs7Ozs7Ozs7Ozs7RUFhRTtBQ2pIRixtQ0FBbUM7QUFDbkM7RUFDRSxzQ0FBc0M7RUFDdEMscUdBQU87RUFDUCxzZEFHOEc7O0FBRWhILG1DQUFtQztBQUNuQztFQUNFLGlDQUFpQztFQUNqQyxpQkFBaUI7RUFDakIsbUJBQW1CO0VBQ25CLHFHQUFPO0VBQ1Asc2RBRzBHOztBQUU1RyxvQ0FBb0M7QUFDcEM7RUFDRSxpQ0FBaUM7RUFDakMsaUJBQWlCO0VBQ2pCLG1CQUFtQjtFQUNuQixxR0FBUTtFQUNSLHNkQUcrRzs7QUFFakgsaUNBQWlDO0FBQ2pDO0VBQ0UsaUNBQWlDO0VBQ2pDLGlCQUFpQjtFQUNqQixtQkFBbUI7RUFDbkIscUdBQU87RUFDUCxzZEFHOEc7O0FBRWhILG9DQUFvQztBQUNwQztFQUNFLGlDQUFpQztFQUNqQyxpQkFBaUI7RUFDakIsbUJBQW1CO0VBQ25CLHFHQUFPO0VBQ1Asc2RBRzhHOztBQUVoSCxvQ0FBb0M7QUFDcEM7RUFDRSxpQ0FBaUM7RUFDakMsaUJBQWlCO0VBQ2pCLG1CQUFtQjtFQUNuQixxR0FBTztFQUNQLHNkQUc4Rzs7QUFFaEgsbUNBQW1DO0FBQ25DO0VBQ0UsaUNBQWlDO0VBQ2pDLGlCQUFpQjtFQUNqQixtQkFBbUI7RUFDbkIscUdBQU87RUFDUCxzZEFHOEc7O0FEMUNoSDs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkU7QUF5QkY7Ozs7O0VBS0U7QUFhRjs7RUFFRTtBQU9GOzs7Ozs7Ozs7Ozs7O0VBYUU7QUVoSEY7RUFDRSxlQUFlO0VBQ2YsV0FBVztFQUNYLGtCQUFrQjtFQUNsQixr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QWxGSDtFQXFGSSw0QkFBcUI7RUFBckIsNEJBQXFCO0VBQXJCLHFCQUFxQjtFQUNyQixtQkFBbUI7RUFDbkIsOEJBQThCLEVBaUIvQjtFQXhHSDtJQTBGTSxXQUFXO0lBQ1gsZVQzZWlCO0lTNGVqQixjVDVlaUI7SVM2ZWpCLFlBQVksRUFDYjtFTmxkRDtJTW9YSjtNQWtHUSw0QkFBcUI7TUFBckIsNEJBQXFCO01BQXJCLHFCQUFxQixFQUV4QjtFTnhkRDtJTW9YSjtNQXNHTSxjQUFjLEVBRWpCOztBQXhHSDtFQTJHSSw0QkFBcUI7RUFBckIsNEJBQXFCO0VBQXJCLHFCQUFxQixFQUN0Qjs7QUE1R0g7RUErR0kscUJBQWM7RUFBZCxxQkFBYztFQUFkLGNBQWM7RUFDZCx1QlRoZ0JtQixFU3FnQnBCO0VOemVDO0lNb1hKO01BbUhNLG9CVG5nQmlCLEVTcWdCcEI7O0FHdmhCSDs7OztFQUlFO0FBRUY7RUFDQyxpQ0FBcUMsRUFDckM7O0FBRUQ7RUFDQyxpQ0FBcUMsRUFDckM7O0FBRUQ7RUFDQyxrQ0FBcUMsRUFDckM7O0FBRUQ7RUFDQywwQkFBMEIsRUFDMUI7O0FBRUQ7RUFDRSx5QkFBeUIsRUFDMUI7O0FBRUQ7RUFDRSxrQ0FBcUMsRUFDdEM7O0FBRUQ7RUFDRSxrQ0FBc0MsRUFDdkM7O0FBRUQ7RUFDQyxrQ0FBcUMsRUFDckM7O0FBRUQ7RUFDQyxtQ0FBc0MsRUFDdEM7O0FBRUQ7RUFDRSwwQkFBMEI7RUFDM0Isa0NBQXFDLEVBQ3JDOztBQUVEO0VBQ0Usa0NBQXFDLEVBQ3RDOztBQUVEO0VBQ0Msa0NBQXFDLEVBQ3JDOztBQUVEO0VBQ0UseUJBQXlCLEVBQzFCIiwiZmlsZSI6ImNzcy9tYWluLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJy4uL3ZhcmlhYmxlcy9icmVha3BvaW50cy5qc29uJztcbkBpbXBvcnQgJy4uL3ZhcmlhYmxlcy90eXBvZ3JhcGh5Lmpzb24nO1xuQGltcG9ydCAnLi4vdmFyaWFibGVzL2NvbG9ycy5qc29uJztcblxuQGltcG9ydCAnLi9ncmlkJztcblxuLy8kYmFzZWxpbmVVbml0OiBtYXAtZ2V0KG1hcC1nZXQoJGdyaWQsIGRlc2t0b3ApLCBiYXNlbGluZSk7XG4kYmFzZWxpbmVVbml0OiAwLjc1cmVtOyAvLyAxMnB4XG5cbkBtaXhpbiByZXNwb25kLXRvKCRzaXplKSB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgJHNpemUpKSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufVxuXG5AbWl4aW4gdmVydGljYWwtYWxpZ24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbkBmdW5jdGlvbiBiYXNlbGluZSgkbXVsdGlwbGllcjogMSkge1xuICBAcmV0dXJuICRiYXNlbGluZVVuaXQgKiAkbXVsdGlwbGllcjtcbn1cblxuQG1peGluIHR5cGVTdHlsZXMoJHR5cGVmYWNlKSB7XG4gIGZvbnQtZmFtaWx5OiBcIkhlbHZldGljYSBOZXVlIExUXCIsIFwiSGVsdmV0aWNhIE5ldWVcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IG1hcC1nZXQoJHR5cGVmYWNlLCB3ZWlnaHQpO1xuICBmb250LXNpemU6IGJhc2VsaW5lKG1hcC1nZXQoJHR5cGVmYWNlLCBzaXplKSk7XG4gIGxpbmUtaGVpZ2h0OiBiYXNlbGluZShtYXAtZ2V0KCR0eXBlZmFjZSwgbGluZS1oZWlnaHQpKTtcbiAgbGV0dGVyLXNwYWNpbmc6ICN7bWFwLWdldCgkdHlwZWZhY2UsIHRyYWNraW5nKSAvIDEwMDB9cmVtO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDAgMCBiYXNlbGluZShtYXAtZ2V0KCR0eXBlZmFjZSwgbWFyZ2luLWJvdHRvbSkpIDA7XG59XG5cbi8qXG5cbmZvbnQgbWl4aW5cbiRrZXk6IHR5cGUgc3R5bGUga2V5IChleC4gYm9sZC0yNCBvciByb21hbi0yNCkuIFNlZSB0eXBvZ3JhcGh5Lmpzb24gZm9yIG9wdGlvbnMuXG4kYnJlYWtwb2ludDogKG9wdGlvbmFsKSBicmVha3BvaW50IGtleSAoZXguIGZ1bGwgb3IgdGFibGV0KS4gU2VlIGJyZWFrcG9pbnRzLmpzb24gZm9yIG9wdGlvbnMuXG5cbkBpbmNsdWRlIGZvbnQoYm9sZC0yNCk7XG5cbldoZW4gdXNlZCB3aXRob3V0IGEgYnJlYWtwb2ludCBzcGVjaWZpZWQgdGhpcyBtaXhpbiB3aWxsIHByb2R1Y2UgZm9udCBwcm9wZXJ0aWVzXG53cmFwcGVkIGluIG1lZGlhIHF1ZXJpZXMuIEl0J3MgYSBzaW1wbGUgd2F5IHRvIGFwcGx5IGZ1bGx5IHJlc3BvbnNpdmUgdHlwZSBzdHlsZXNcbnRvIGEgY2xhc3Mgb3IgZWxlbWVudC5cblxuQGluY2x1ZGUgZm9udChib2xkLTI0LCBmdWxsKTtcblxuSWYgYSBicmVha3BvaW50IGlzIHNwZWNpZmllZCB0aGVyZSB3aWxsIGJlIG9ubHkgYSBzaW5nbGUgc2V0IG9mIGZvbnQgcHJvcGVydGllc1xudGhhdCBhcmUgTk9UIHdyYXBwZWQgaW4gYW55IG1lZGlhIHF1ZXJpZXMuXG5cbiovXG5cbkBtaXhpbiBmb250KCRrZXksICRicmVha3BvaW50OiBudWxsKSB7XG4gIEBpZiAkYnJlYWtwb2ludCB7XG4gICAgQGlmIG1hcC1oYXMta2V5KG1hcC1nZXQoJHR5cG9ncmFwaHksIHJlc3BvbnNpdmUpLCAkYnJlYWtwb2ludCkge1xuICAgICAgJHJlc3BvbnNpdmVUeXBlOiBtYXAtZ2V0KG1hcC1nZXQobWFwLWdldCgkdHlwb2dyYXBoeSwgcmVzcG9uc2l2ZSksICRicmVha3BvaW50KSwgJGtleSk7XG4gICAgICBAaW5jbHVkZSB0eXBlU3R5bGVzKCRyZXNwb25zaXZlVHlwZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAkdHlwZWZhY2U6IG1hcC1nZXQobWFwLWdldCgkdHlwb2dyYXBoeSwgZGVmYXVsdCksICRrZXkpO1xuICAgIEBpbmNsdWRlIHR5cGVTdHlsZXMoJHR5cGVmYWNlKTtcbiAgICBAZWFjaCAkYnJlYWtwb2ludEtleSwgJGJyZWFrcG9pbnRWYWwgaW4gJGJyZWFrcG9pbnRzIHtcbiAgICAgIEBpZiBtYXAtaGFzLWtleShtYXAtZ2V0KCR0eXBvZ3JhcGh5LCByZXNwb25zaXZlKSwgJGJyZWFrcG9pbnRLZXkpIHtcblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQoJGJyZWFrcG9pbnRWYWwpIHtcbiAgICAgICAgICAkcmVzcG9uc2l2ZVR5cGU6IG1hcC1nZXQobWFwLWdldChtYXAtZ2V0KCR0eXBvZ3JhcGh5LCByZXNwb25zaXZlKSwgJGJyZWFrcG9pbnRLZXkpLCAka2V5KTtcbiAgICAgICAgICBAaW5jbHVkZSB0eXBlU3R5bGVzKCRyZXNwb25zaXZlVHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKlxuXG4gIGNvbG9yKHllbGxvdykgc2luZ2xlIGFyZ3VtZW50IGRlZmF1bHRzIHRvIGRhcmsgY29sb3JzXG4gIGNvbG9yKGxpZ2h0LCB5ZWxsb3cpIHJldHVybnMgbGlnaHQgeWVsbG93XG5cbiovXG5AZnVuY3Rpb24gY29sb3IoJGNvbG9yLWNhdGVnb3J5LCAkY29sb3ItbmFtZTpudWxsKSB7XG4gIC8vIGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbnVsbCB0aGVyZSBzaG91bGQgYmUgYSBjb2xvciBhcyB0aGUgZmlyc3QgYXJndW1lbnRcbiAgQGlmICgkY29sb3ItbmFtZSAhPSBudWxsKSB7XG4gICAgLy8gbWFwIGluY2VwdGlvblxuICAgIEByZXR1cm4gbWFwLWdldChtYXAtZ2V0KCRjb2xvcnMsICRjb2xvci1jYXRlZ29yeSksICRjb2xvci1uYW1lKTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KG1hcC1nZXQoJGNvbG9ycywgZGFyayksICRjb2xvci1uYW1lKTtcbiAgfVxuXG4gIEB3YXJuIFwiQ29sb3IgJyN7JGNvbG9yLWNhdGVnb3J5fScgJyN7JGNvbG9yLW5hbWV9JyBub3QgZm91bmQgaW4gJGNvbG9yc1wiO1xufVxuXG4vKiByb3VuZGVkIGNvcm5lcnNcbiAgdXNhZ2U6IGJvcmRlci1yYWRpdXMoIGJhc2VsaW5lKCBuICkgKVxuKi9cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRyYWRpdXMpIHtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OyAgLyogc3RvcHMgYmcgY29sb3IgZnJvbSBsZWFraW5nIG91dHNpZGUgdGhlIGJvcmRlcjogKi9cbn1cblxuLypcblxuaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9zYXNzL21haW50YWluLWFzcGVjdC1yYXRpby1taXhpbi9cblxuVGhlIG1peGluIGFzc3VtZXMgeW91J2xsIGJlIG5lc3RpbmcgYW4gZWxlbWVudCB3aXRoIHRoZSBjbGFzcyBvZiBjb250ZW50IGluc2lkZSB5b3VyIGluaXRpYWwgYmxvY2tcblxuPGRpdiBjbGFzcz1cInNpeHRlZW4tbmluZVwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgIGluc2VydCBjb250ZW50IGhlcmVcbiAgICB0aGlzIHdpbGwgbWFpbnRhaW4gYSAxNjo5IGFzcGVjdCByYXRpb1xuICA8L2Rpdj5cbjwvZGl2PlxuXG4qL1xuXG5AbWl4aW4gYXNwZWN0LXJhdGlvKCR3aWR0aCwgJGhlaWdodCkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICY6YmVmb3JlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmctdG9wOiAoJGhlaWdodCAvICR3aWR0aCkgKiAxMDAlO1xuICB9XG4gID4gLmNvbnRlbnQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2s6Ly8vYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL3dlYnBhY2svY29yZS9zdHlsZS9fbWl4aW4uc2Nzc1xuICoqLyIsIkBpbXBvcnQgJy4vbWl4aW4nO1xuXG4kZm9udFNlcnZlcjogJ2h0dHBzOi8vZm9udHMudHdpdHRlci5jb20vaGVsdmV0aWNhX25ldWUnO1xuXG4vKiBIZWx2ZXRpY2EgTmV1ZSBMVCBXMDZfNTcgQ29uZCAqL1xuQGZvbnQtZmFjZXtcbiAgZm9udC1mYW1pbHk6IFwiSGVsdmV0aWNhIE5ldWUgTFQgQ29uZFwiO1xuICBzcmM6dXJsKFwiI3skZm9udFNlcnZlcn0vODk3ZWE5NTEtN2VjNi00N2Y0LTlkYTMtN2QwNjE5YjQ2ZDA0LmVvdD8jaWVmaXhcIik7XG4gIHNyYzp1cmwoXCIjeyRmb250U2VydmVyfS84OTdlYTk1MS03ZWM2LTQ3ZjQtOWRhMy03ZDA2MTliNDZkMDQuZW90PyNpZWZpeFwiKSBmb3JtYXQoXCJlb3RcIiksXG4gICAgICB1cmwoXCIjeyRmb250U2VydmVyfS8wMzNiNTRkYi1iMWNlLTRkYTctODYxYi02MWQwNTljMWM5Yjgud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksXG4gICAgICB1cmwoXCIjeyRmb250U2VydmVyfS9kOWM4NDJmOC1iMzdhLTQxNGYtYmU4Ni05N2VhOWM2MWQzZDcud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLFxuICAgICAgdXJsKFwiI3skZm9udFNlcnZlcn0vODRhMmNjMDktZjAyZC00YzFkLWE1YTktMmFiNDU2NDM5YzczLnN2ZyM4NGEyY2MwOS1mMDJkLTRjMWQtYTVhOS0yYWI0NTY0MzljNzNcIikgZm9ybWF0KFwic3ZnXCIpO1xufVxuLyogSGVsdmV0aWNhIE5ldWUgTFQgVzA2Xzc1IEJvbGQgKi9cbkBmb250LWZhY2V7XG4gIGZvbnQtZmFtaWx5OiBcIkhlbHZldGljYSBOZXVlIExUXCI7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgc3JjOnVybChcIiN7JGZvbnRTZXJ2ZXJ9LzNhZWFlYjFkLTFkZWEtNGU5Yi05ZTgzLTUyYWRjNWE4NzIwOS5lb3Q/I2llZml4XCIpO1xuICBzcmM6dXJsKFwiI3skZm9udFNlcnZlcn0vM2FlYWViMWQtMWRlYS00ZTliLTllODMtNTJhZGM1YTg3MjA5LmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW90XCIpLFxuICB1cmwoXCIjeyRmb250U2VydmVyfS9kOTEyMmU4ZC1iZjI2LTRmMWMtYmFiOS1jMDY1OTkzOTdiNTkud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksXG4gIHVybChcIiN7JGZvbnRTZXJ2ZXJ9L2RiMGNlYzEyLWE5NDctNDBmZS1hMTE1LWM1Y2UyMmVlNzlmNi53b2ZmXCIpIGZvcm1hdChcIndvZmZcIiksXG4gIHVybChcIiN7JGZvbnRTZXJ2ZXJ9LzAyNDQxMWVmLTI2YmYtNDUzNi1hZWE0LWVjOTUzODQ2ZWRhNy5zdmcjMDI0NDExZWYtMjZiZi00NTM2LWFlYTQtZWM5NTM4NDZlZGE3XCIpIGZvcm1hdChcInN2Z1wiKTtcbn1cbi8qIEhlbHZldGljYSBOZXVlIExUIFcwNl84NSBIZWF2eSAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcIkhlbHZldGljYSBOZXVlIExUXCI7XG4gIGZvbnQtd2VpZ2h0OiA5MDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgc3JjOiB1cmwoXCIjeyRmb250U2VydmVyfS84YTkwYTJiYS0xMjc2LTRiM2YtYmMxYy04NTI2MTcyYjI3ZjQuZW90PyNpZWZpeFwiKTtcbiAgc3JjOiB1cmwoXCIjeyRmb250U2VydmVyfS84YTkwYTJiYS0xMjc2LTRiM2YtYmMxYy04NTI2MTcyYjI3ZjQuZW90PyNpZWZpeFwiKSBmb3JtYXQoXCJlb3RcIiksXG4gICAgICB1cmwoXCIjeyRmb250U2VydmVyfS9jNDE1ZjNmZC1mZjI3LTQwZmUtYWY5NC04YjRhNTRiNGI0ZTQud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksXG4gICAgICAgdXJsKFwiI3skZm9udFNlcnZlcn0vYTFkYTIwYzctNGRjOS00YWY1LWJkNmYtOWViZTUwYjY3ODhkLndvZmZcIikgZm9ybWF0KFwid29mZlwiKSxcbiAgICAgICB1cmwoXCIjeyRmb250U2VydmVyfS9hY2Q4ZDZkZi05Njk2LTQwOTItYmYyMy01MzcwYzYzY2E5ZmIuc3ZnI2FjZDhkNmRmLTk2OTYtNDA5Mi1iZjIzLTUzNzBjNjNjYTlmYlwiKSBmb3JtYXQoXCJzdmdcIik7XG59XG4vKiBIZWx2ZXRpY2EgTmV1ZSBMVCBXMDZfNTYgSXQgKi9cbkBmb250LWZhY2V7XG4gIGZvbnQtZmFtaWx5OiBcIkhlbHZldGljYSBOZXVlIExUXCI7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgc3JjOnVybChcIiN7JGZvbnRTZXJ2ZXJ9LzdkZjM5MzI1LTBlMGUtNDYzNS1hNzE3LTU5MDMzYTAyNmZjNS5lb3Q/I2llZml4XCIpO1xuICBzcmM6dXJsKFwiI3skZm9udFNlcnZlcn0vN2RmMzkzMjUtMGUwZS00NjM1LWE3MTctNTkwMzNhMDI2ZmM1LmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW90XCIpLFxuICAgICAgdXJsKFwiI3skZm9udFNlcnZlcn0vNmFjYjliMjYtN2U4ZS00NmI0LWI2OGItNjMxYWIwN2Q2ZWQ3LndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLFxuICAgICAgdXJsKFwiI3skZm9udFNlcnZlcn0vMjkxNGE5MGUtZDc2Ni00Y2Y4LTk3YjktMDRjNWZlODk3ZjA2LndvZmZcIikgZm9ybWF0KFwid29mZlwiKSxcbiAgICAgIHVybChcIiN7JGZvbnRTZXJ2ZXJ9L2I4NWVhNWIzLThkYzgtNDk4OS1hOTgyLWY0NjFiYzk2NTVmOC5zdmcjYjg1ZWE1YjMtOGRjOC00OTg5LWE5ODItZjQ2MWJjOTY1NWY4XCIpIGZvcm1hdChcInN2Z1wiKTtcbn1cbi8qIEhlbHZldGljYSBOZXVlIExUIFcwNl80NSBMaWdodCAqL1xuQGZvbnQtZmFjZXtcbiAgZm9udC1mYW1pbHk6IFwiSGVsdmV0aWNhIE5ldWUgTFRcIjtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBzcmM6dXJsKFwiI3skZm9udFNlcnZlcn0vMjAyM2U3ZDEtOWYwYS00Y2FjLThlODAtMjIzMjFkYjkxOGRkLmVvdD8jaWVmaXhcIik7XG4gIHNyYzp1cmwoXCIjeyRmb250U2VydmVyfS8yMDIzZTdkMS05ZjBhLTRjYWMtOGU4MC0yMjMyMWRiOTE4ZGQuZW90PyNpZWZpeFwiKSBmb3JtYXQoXCJlb3RcIiksXG4gICAgICB1cmwoXCIjeyRmb250U2VydmVyfS8xOThmZDc4Yi0zNjU1LTQ3NjgtODljNC0zMWNhZjY1ZWEzNjMud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksXG4gICAgICB1cmwoXCIjeyRmb250U2VydmVyfS80OTYzMWNlOC05MjAxLTQ3YTgtODg3NC00NTM3MTQxN2MzNWYud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLFxuICAgICAgdXJsKFwiI3skZm9udFNlcnZlcn0vOWFjM2Q0MjQtODUyMS00NmNmLTg4NzgtNzMyNDc2MmRiN2I0LnN2ZyM5YWMzZDQyNC04NTIxLTQ2Y2YtODg3OC03MzI0NzYyZGI3YjRcIikgZm9ybWF0KFwic3ZnXCIpO1xufVxuLyogSGVsdmV0aWNhIE5ldWUgTFQgVzA2XzU1IFJvbWFuICovXG5AZm9udC1mYWNle1xuICBmb250LWZhbWlseTogXCJIZWx2ZXRpY2EgTmV1ZSBMVFwiO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIHNyYzp1cmwoXCIjeyRmb250U2VydmVyfS84YjNiMDEzMy0yMjJkLTRmZmMtOWQ2ZS01NjVkZDg3OTY5MGMuZW90PyNpZWZpeFwiKTtcbiAgc3JjOnVybChcIiN7JGZvbnRTZXJ2ZXJ9LzhiM2IwMTMzLTIyMmQtNGZmYy05ZDZlLTU2NWRkODc5NjkwYy5lb3Q/I2llZml4XCIpIGZvcm1hdChcImVvdFwiKSxcbiAgICAgIHVybChcIiN7JGZvbnRTZXJ2ZXJ9LzFhMTRkY2FjLTdjOWUtNDcxYy04MDM5LTMzYzczMGY4NzFmMi53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSxcbiAgICAgIHVybChcIiN7JGZvbnRTZXJ2ZXJ9LzU1OGVkNTM0LTBjNjAtNDJjZi04Yjk0LWQwYTE2ZWI3MGQzNy53b2ZmXCIpIGZvcm1hdChcIndvZmZcIiksXG4gICAgICB1cmwoXCIjeyRmb250U2VydmVyfS82NTEzZTgwNC1lMDNlLTQxYTEtODM4NS1kNWUwOTcxZjIwMDkuc3ZnIzY1MTNlODA0LWUwM2UtNDFhMS04Mzg1LWQ1ZTA5NzFmMjAwOVwiKSBmb3JtYXQoXCJzdmdcIik7XG59XG4vKiBIZWx2ZXRpY2EgTmV1ZSBMVCBXMDZfMzUgVGhpbiAqL1xuQGZvbnQtZmFjZXtcbiAgZm9udC1mYW1pbHk6IFwiSGVsdmV0aWNhIE5ldWUgTFRcIjtcbiAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBzcmM6dXJsKFwiI3skZm9udFNlcnZlcn0vMmExMjkxNDItN2M1MC00NzI4LTkyMjctMWVlYmYyZDlmMTZkLmVvdD8jaWVmaXhcIik7XG4gIHNyYzp1cmwoXCIjeyRmb250U2VydmVyfS8yYTEyOTE0Mi03YzUwLTQ3MjgtOTIyNy0xZWViZjJkOWYxNmQuZW90PyNpZWZpeFwiKSBmb3JtYXQoXCJlb3RcIiksXG4gICAgICB1cmwoXCIjeyRmb250U2VydmVyfS8yMTkyYTI2Yy1kZTFjLTRjNTAtODhkMS1lNTEzNjAzM2MxNWEud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksXG4gICAgICB1cmwoXCIjeyRmb250U2VydmVyfS8wMjEyZDIwMy1jZTNmLTQyZTItODYyYS1lZGY5ODg2MjE3Mjgud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLFxuICAgICAgdXJsKFwiI3skZm9udFNlcnZlcn0vNTUyYzQzYTMtNmNjNy00N2I5LThiODEtMzk4Yjk2MWI1MTY3LnN2ZyM1NTJjNDNhMy02Y2M3LTQ3YjktOGI4MS0zOThiOTYxYjUxNjdcIikgZm9ybWF0KFwic3ZnXCIpO1xufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogd2VicGFjazovLy9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svd2VicGFjay9jb3JlL3N0eWxlL190eXBlLnNjc3NcbiAqKi8iLCJAaW1wb3J0ICdjb3JlL3ZhcmlhYmxlcy9icmVha3BvaW50cy5qc29uJztcbkBpbXBvcnQgJ2NvcmUvc3R5bGUvZ3JpZCc7XG5AaW1wb3J0ICdjb3JlL3N0eWxlL3R5cGUnO1xuQGltcG9ydCAnY29yZS9zdHlsZS9taXhpbic7XG5cbi5ldS1jb29raWUtbm90aWNlIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHotaW5kZXg6IDk7XG4gIG1heC13aWR0aDogMTYwMHB4O1xuICBwYWRkaW5nOiBiYXNlbGluZSgyKSAwO1xuICBkaXNwbGF5OiBub25lO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICAmLmFjdGl2ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgLmNvbnRhaW5lciB7XG4gICAgbWFyZ2luLWxlZnQ6IGJhc2VsaW5lKDUpO1xuICAgIG1hcmdpbi1yaWdodDogYmFzZWxpbmUoNSk7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBtb2JpbGUpKSB7XG4gICAgICBtYXJnaW4tbGVmdDogNi42JTtcbiAgICAgIG1hcmdpbi1yaWdodDogNi42JTtcbiAgICB9XG4gIH1cbiAgLm1lc3NhZ2Uge1xuICAgIEBpbmNsdWRlIHNwYW4oMTIgbGFzdCk7XG4gICAgZmxvYXQ6IG5vbmU7XG4gICAgYSB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgIGNvbG9yOiBjb2xvcihuZXV0cmFsLCB3aGl0ZSk7XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oOCk7XG4gICAgfVxuICB9XG4gIC5idXR0b24ge1xuICAgIGZsb2F0OiBub25lO1xuICAgIG1pbi13aWR0aDogMTUwcHg7XG4gICAgbWFyZ2luLXRvcDogYmFzZWxpbmUoMik7XG4gICAgYm9yZGVyOiAxcHggc29saWQgY29sb3IobmV1dHJhbCwgd2hpdGUpO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoYmFzZWxpbmUoMS82KSk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IGJhc2VsaW5lKDAuNSkgMDtcbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgIH1cbiAgICAmOmhvdmVyIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2s6Ly8vYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL3dlYnBhY2svY29yZS9jb21wb25lbnRzL2Nvb2tpZS1ub3RpY2Uuc2Nzc1xuICoqLyIsIi8vIEJyZWFrcG9pbnQgSW50ZWdyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktbWVkaWE6ICgpICFkZWZhdWx0O1xuJHN1c3ktbWVkaWEtZmFsbGJhY2s6IGZhbHNlICFkZWZhdWx0O1xuXG4kX3N1c3ktbWVkaWEtY29udGV4dDogKCk7XG5cblxuLy8gU3VzeSBCcmVha3BvaW50XG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENoYW5nZSBncmlkcyBhdCBkaWZmZXJlbnQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMuXG4vLyAtICRxdWVyeSAgICAgOiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+IHwgPG1hcD5cbi8vIC0gJGxheW91dCAgICA6IDxzZXR0aW5ncz5cbi8vIC0gJG5vLXF1ZXJ5ICA6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LWJyZWFrcG9pbnQoXG4gICRxdWVyeSxcbiAgJGxheW91dDogZmFsc2UsXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaW5jbHVkZSBzdXN5LW1lZGlhLXJvdXRlcigkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBpZiAkbGF5b3V0IHtcbiAgICAgIEBpbmNsdWRlIHdpdGgtbGF5b3V0KCRsYXlvdXQpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTdXN5IE1lZGlhXG4vLyAtLS0tLS0tLS0tXG4vLyAtICRxdWVyeTogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPlxuLy8gLSAkbm8tcXVlcnk6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LW1lZGlhKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICAkb2xkLWNvbnRleHQ6ICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICAkbmFtZTogaWYobWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRxdWVyeSksICRxdWVyeSwgbnVsbCk7XG4gICRxdWVyeTogc3VzeS1nZXQtbWVkaWEoJHF1ZXJ5KTtcbiAgJHF1ZXJ5OiBzdXN5LXBhcnNlLW1lZGlhKCRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRxdWVyeSwgJG5hbWUpO1xuXG4gIEBpZiAkbm8tcXVlcnkgYW5kIHR5cGUtb2YoJG5vLXF1ZXJ5KSAhPSBzdHJpbmcge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIHtcbiAgICBAbWVkaWEgI3tzdXN5LXJlbmRlci1tZWRpYSgkcXVlcnkpfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaWYgdHlwZS1vZigkbm8tcXVlcnkpID09IHN0cmluZyB7XG4gICAgICAjeyRuby1xdWVyeX0gJiB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkb2xkLWNvbnRleHQsICRjbGVhbjogdHJ1ZSk7XG59XG5cblxuLy8gTWVkaWEgUm91dGVyXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFJvdXQgbWVkaWEgYXJndW1lbnRzIHRvIHRoZSBjb3JyZWN0IG1peGluLlxuQG1peGluIHN1c3ktbWVkaWEtcm91dGVyKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJyZWFrcG9pbnQsIChtaXhpbjogYnJlYWtwb2ludCksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1tZWRpYSgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVXBkYXRlIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFNldCB0aGUgbmV3IG1lZGlhIGNvbnRleHRcbkBtaXhpbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRxdWVyeSxcbiAgJG5hbWU6IG51bGwsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkcXVlcnk6IG1hcC1tZXJnZSgobmFtZTogJG5hbWUpLCAkcXVlcnkpO1xuXG4gIEBpZiAkY2xlYW4ge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiAkcXVlcnkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6IG1hcC1tZXJnZSgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHF1ZXJ5KSAhZ2xvYmFsO1xuICB9XG59XG5cblxuLy8gTWVkaWEgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBmdWxsIG1lZGlhIGNvbnRleHQsIG9yIGEgc2luZ2xlIG1lZGlhIHByb3BlcnR5IChlLmcuIG1pbi13aWR0aClcbkBmdW5jdGlvbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRwcm9wZXJ0eTogZmFsc2Vcbikge1xuICBAaWYgJHByb3BlcnR5IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRwcm9wZXJ0eSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gIH1cbn1cblxuXG4vLyBHZXQgTWVkaWFcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmFtZWQgbWVkaWEtcXVlcnkgZnJvbSAkc3VzeS1tZWRpYS5cbi8vIC0gJG5hbWU6IDxrZXk+XG5AZnVuY3Rpb24gc3VzeS1nZXQtbWVkaWEoXG4gICRuYW1lXG4pIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkbmFtZSkge1xuICAgICRtYXAtdmFsdWU6IG1hcC1nZXQoJHN1c3ktbWVkaWEsICRuYW1lKTtcbiAgICBAaWYgKCRuYW1lID09ICRtYXAtdmFsdWUpIHtcbiAgICAgICRuYW1lOiAkbWFwLXZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG5hbWU6IHN1c3ktZ2V0LW1lZGlhKCRtYXAtdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5hbWU7XG59XG5cblxuLy8gUmVuZGVyIE1lZGlhXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEJ1aWxkIGEgbWVkaWEtcXVlcnkgc3RyaW5nIGZyb20gdmFyaW91cyBtZWRpYSBzZXR0aW5nc1xuQGZ1bmN0aW9uIHN1c3ktcmVuZGVyLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkb3V0cHV0OiBudWxsO1xuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkcXVlcnkge1xuICAgICRzdHJpbmc6IG51bGw7XG5cbiAgICBAaWYgJHByb3BlcnR5ID09IG1lZGlhIHtcbiAgICAgICRzdHJpbmc6ICR2YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdHJpbmc6ICcoI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0pJztcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBpZigkb3V0cHV0LCAnI3skb3V0cHV0fSBhbmQgI3skc3RyaW5nfScsICRzdHJpbmcpO1xuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG5cbi8vIFBhcnNlIE1lZGlhXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHBhcnNlZCBtZWRpYS1xdWVyeSBzZXR0aW5ncyBiYXNlZCBvbiBzaG9ydGhhbmRcbkBmdW5jdGlvbiBzdXN5LXBhcnNlLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkbXE6IG51bGw7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbWFwIHtcbiAgICAkbXE6ICRxdWVyeTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbnVtYmVyIHtcbiAgICAkbXE6IChtaW4td2lkdGg6ICRxdWVyeSk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IGxpc3QgYW5kIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSBudW1iZXIge1xuICAgICAgJG1xOiAoXG4gICAgICAgIG1pbi13aWR0aDogbWluKCRxdWVyeS4uLiksXG4gICAgICAgIG1heC13aWR0aDogbWF4KCRxdWVyeS4uLiksXG4gICAgICApO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG1xOiAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICRtcTogKG1lZGlhOiAnI3skcXVlcnl9Jyk7XG4gIH1cblxuICBAcmV0dXJuICRtcTtcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2s6Ly8vYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL3dlYnBhY2svfi9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19icmVha3BvaW50LXBsdWdpbi5zY3NzXG4gKiovIiwiLy8gcmVtIFN1cHBvcnRcbi8vID09PT09PT09PT09XG5cbi8vIHJlbVxuLy8gLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3Igb3V0cHV0IGRpcmVjdGx5LlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktcmVtKFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gICRfcmVxczogKFxuICAgIHZhcmlhYmxlOiByaHl0aG0tdW5pdCByZW0td2l0aC1weC1mYWxsYmFjayxcbiAgICBtaXhpbjogcmVtLFxuICApO1xuICBAaWYgc3VzeS1zdXBwb3J0KHJlbSwgJF9yZXFzLCAkd2FybjogZmFsc2UpIGFuZCAkcmh5dGhtLXVuaXQgPT0gcmVtIHtcbiAgICBAaW5jbHVkZSByZW0oJHByb3AsICR2YWwpO1xuICB9IEBlbHNlIHtcbiAgICAjeyRwcm9wfTogJHZhbDtcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogd2VicGFjazovLy9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svd2VicGFjay9+L3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2Nzc1xuICoqLyIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2s6Ly8vYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL3dlYnBhY2svfi9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zcGFuLnNjc3NcbiAqKi8iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrOi8vL2Jsb2ctdHdpdHRlci1wcm9qZWN0L2Jsb2ctdHdpdHRlci1qY3ItbW9kdWxlcy9ibG9nLXR3aXR0ZXItdmlldy9zcmMvd2VicGFjay93ZWJwYWNrL34vc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3NcbiAqKi8iLCIkY29sb3JzOiAoZXh0cmEtZGFyazogKG9yYW5nZTogI0Q4MkUxOCx5ZWxsb3c6ICNGOThFMDAsZ3JlZW46ICMwMDg5NTEsYmx1ZTogIzAwNUZEMSxwdXJwbGU6ICM0RjAyOTkscGluazogI0EwMTc0NCksZGFyazogKG9yYW5nZTogI0Y0NUQyMix5ZWxsb3c6ICNGRkFEMUYsZ3JlZW46ICMxRkI2NTAsYmx1ZTogIzFEQTFGMixwdXJwbGU6ICM3OTRCQzQscGluazogI0UwMjQ1RSksbGlnaHQ6IChvcmFuZ2U6ICNGRjhENTcseWVsbG93OiAjRkZEMDNGLGdyZWVuOiAjNjhFMDkwLGJsdWU6ICM3MUM5RjgscHVycGxlOiAjQTM3Q0VELHBpbms6ICNGNjgwOUEpLGV4dHJhLWxpZ2h0OiAob3JhbmdlOiAjRkZCRTc4LHllbGxvdzogI0ZGRTc2RSxncmVlbjogI0E1RjJBQSxibHVlOiAjOTdFM0ZGLHB1cnBsZTogI0M3QjRGQSxwaW5rOiAjRkZCOEMyKSxuZXV0cmFsOiAoYmxhY2s6ICMxNDE3MUEsZGFyay1ncmF5OiAjNjU3Nzg2LGxpZ2h0LWdyYXk6ICNBQUI4QzIsZXh0cmEtbGlnaHQtZ3JheTogI0NDRDZERCxleHRyYS1leHRyYS1saWdodC1ncmF5OiAjRjVGOEZBLHdoaXRlOiAjRkZGRkZGKSk7XG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogd2VicGFjazovLy9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3ZhcmlhYmxlcy9jb2xvcnMuanNvblxuICoqLyIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogd2VicGFjazovLy9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svd2VicGFjay9+L3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2Nzc1xuICoqLyIsIkBpbXBvcnQgJ2NvcmUvdmFyaWFibGVzL2JyZWFrcG9pbnRzLmpzb24nO1xuQGltcG9ydCAnY29yZS92YXJpYWJsZXMvZ3JpZC5qc29uJztcbkBpbXBvcnQgJ2NvcmUvc3R5bGUvZ3JpZCc7XG5AaW1wb3J0ICdjb3JlL3N0eWxlL21peGluJztcblxuLnRhZy1tYXN0aGVhZCB7XG5cbiAgJl9fc3ViLXRpdGxlIHtcbiAgICBtYXJnaW4tdG9wOiBiYXNlbGluZSg0KTtcblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgIG1hcmdpbi10b3A6IGJhc2VsaW5lKDgpO1xuICAgIH1cbiAgfVxuXG4gICZfX3RpdGxlIHtcbiAgICBAaW5jbHVkZSBmb250KGJvbGQtMzYpO1xuICAgIG1hcmdpbi10b3A6IGJhc2VsaW5lKDIpO1xuICAgIG1hcmdpbi1ib3R0b206IGJhc2VsaW5lKDUpO1xuXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgQGluY2x1ZGUgZm9udChib2xkLTcyLCBmdWxsKTtcbiAgICAgIG1hcmdpbi1ib3R0b206IGJhc2VsaW5lKDgpO1xuICAgICAgbWFyZ2luLXRvcDogYmFzZWxpbmUoMik7XG4gICAgfVxuICB9XG59XG5cbi5yZXN1bHRzLXNvcnQge1xuICBwYWRkaW5nOiBiYXNlbGluZSgyKSAwO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgY29sb3IobmV1dHJhbCwgbGlnaHQtZ3JheSk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBjb2xvcihuZXV0cmFsLCBsaWdodC1ncmF5KTtcblxuICAuc2VhcmNoLXNvcnQtaGVhZGVyIHtcbiAgICBtYXgtd2lkdGg6IDEyMHB4O1xuICAgIGRpc3BsYXk6IGlubGluZTtcblxuICAgICZfX3RpdGxlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IGJhc2VsaW5lKDIpO1xuICAgICAgfVxuICAgIH1cbiAgICAmX190b3RhbCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICBmbG9hdDogbGVmdDtcblxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiBiYXNlbGluZSgzKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogYmFzZWxpbmUoMyk7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBjb2xvcihuZXV0cmFsLCBsaWdodC1ncmF5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAmX19sYWJlbCB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWFyZ2luLWJvdHRvbTogYmFzZWxpbmUoMik7XG4gICAgfVxuICB9XG5cbiAgJl9fcmFkaW8ge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG5cbiAgICBsYWJlbCB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBwYWRkaW5nLWxlZnQ6IGJhc2VsaW5lKDEuNSk7XG5cbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW4tYm90dG9tOiBiYXNlbGluZSgxKTtcbiAgICB9XG5cbiAgICBpbnB1dFt0eXBlPVwicmFkaW9cIl0gKyBsYWJlbDphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJhY2tncm91bmQ6IGNvbG9yKGRhcmssIGJsdWUpO1xuICAgICAgei1pbmRleDogMjtcbiAgICB9XG4gICAgaW5wdXRbdHlwZT1cInJhZGlvXCJdOm5vdCg6Y2hlY2tlZCksXG4gICAgaW5wdXRbdHlwZT1cInJhZGlvXCJdOmNoZWNrZWQge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgbGVmdDogLTk5OTlweDtcbiAgICB9XG4gICAgaW5wdXRbdHlwZT1cInJhZGlvXCJdOm5vdCg6Y2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUsXG4gICAgaW5wdXRbdHlwZT1cInJhZGlvXCJdOmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB3aWR0aDogMTJweDtcbiAgICAgIGhlaWdodDogMTJweDtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yKG5ldXRyYWwsIGxpZ2h0LWdyYXkpO1xuICAgIH1cbiAgICBpbnB1dFt0eXBlPVwicmFkaW9cIl06bm90KDpjaGVja2VkKSArIGxhYmVsOmJlZm9yZSxcbiAgICBpbnB1dFt0eXBlPVwicmFkaW9cIl06Y2hlY2tlZCArIGxhYmVsOmJlZm9yZSB7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgfVxuICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXTpjaGVja2VkICsgbGFiZWw6YWZ0ZXIge1xuICAgICAgd2lkdGg6IDZweDtcbiAgICAgIGhlaWdodDogNnB4O1xuICAgICAgbGVmdDogM3B4O1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG5cbiAgJi5yZXN1bHRzLXNvcnQtLXNlYXJjaCB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICBtYXJnaW4tYm90dG9tOiBiYXNlbGluZSg1KTtcblxuICAgIGxhYmVsIHtcbiAgICAgIGNvbG9yOiBjb2xvcihuZXV0cmFsLCBsaWdodC1ncmF5KTtcbiAgICB9XG5cblxuICAgICYubm8tcmVzdWx0cyB7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIHRvcDogYXV0bztcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgQGluY2x1ZGUgc3BhbigzKTtcbiAgICBAaW5jbHVkZSBwdXNoKDEpO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBsZWZ0OiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgdG9wOiBiYXNlbGluZSg4KTtcbiAgfVxufVxuXG4ucmVzdWx0cy1sb29wIHtcbiAgbWFyZ2luOiAwO1xuXG4gIC5yZXN1bHQge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nLWJvdHRvbTogYmFzZWxpbmUoNCk7XG4gICAgbWFyZ2luLXRvcDogYmFzZWxpbmUoNCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGNvbG9yKG5ldXRyYWwsIGxpZ2h0LWdyYXkpO1xuXG4gICAgJl9fdGh1bWJuYWlsIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJl9fdGl0bGUsXG4gICAgJl9fdG9waWMge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgJl9fdGl0bGUge1xuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgICBAaW5jbHVkZSBmb250KGJvbGQtMzYsIGZ1bGwpO1xuICAgICAgfVxuICAgIH1cblxuICAgICZfX3RvcGljIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IGJhc2VsaW5lKDEpO1xuICAgIH1cblxuICAgICZfX2J5bGluZSB7XG4gICAgICBtYXJnaW4tdG9wOiBiYXNlbGluZSgyKTtcblxuICAgICAgYSB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX19kZXNjcmlwdGlvbiB7XG4gICAgICBtYXJnaW4tdG9wOiBiYXNlbGluZSgyKTtcbiAgICB9XG5cbiAgICAmLS1pbWFnZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgLnJlc3VsdF9fdGh1bWJuYWlsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICBpbWcge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgICAgICAgd2lkdGg6IDIyMnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNDRweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGJhc2VsaW5lKDQuMzMzKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAucmVzdWx0X19jb3B5IHtcblxuICAgICAgICAucmVzdWx0X190b3BpYyB7XG4gICAgICAgICAgbWFyZ2luLXRvcDogYmFzZWxpbmUoMik7XG5cbiAgICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBtYXJnaW4tdG9wOiBiYXNlbGluZSg1KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1uby1ib3JkZXIge1xuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgcGFkZGluZy1ib3R0b206IGJhc2VsaW5lKDUpO1xuICAgICAgbWFyZ2luLWJvdHRvbTogYmFzZWxpbmUoNSk7XG4gICAgfVxuXG4gICAgJi0tYmVmb3JlLWJpbGxib2FyZCB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgcGFkZGluZy1ib3R0b206IGJhc2VsaW5lKDMpO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogYmFzZWxpbmUoOCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmJpbGxib2FyZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6IDEwMHZ3O1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGJhc2VsaW5lKDQwKTtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgcGFkZGluZy1sZWZ0OiBtYXAtZ2V0KG1hcC1nZXQoJGdyaWQsIG1vYmlsZSksIG1hcmdpbik7XG4gICAgcGFkZGluZy1yaWdodDogbWFwLWdldChtYXAtZ2V0KCRncmlkLCBtb2JpbGUpLCBtYXJnaW4pO1xuXG4gICAgLnJlc3VsdHMtbG9vcF9fc2VjdGlvbi1sYWJlbCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgei1pbmRleDogMTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgICBAaW5jbHVkZSBzcGFuKDMpO1xuXG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgICAucmVzdWx0IHtcbiAgICAgIHotaW5kZXg6IDE7XG4gICAgICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDEzLjIlKTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogYmFzZWxpbmUoNCk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG5cbiAgICAgICZfX3RvcGljIHtcbiAgICAgICAgbWFyZ2luLXRvcDogYmFzZWxpbmUoMSk7XG4gICAgICB9XG5cbiAgICAgICZfX3RpdGxlIHtcbiAgICAgICAgbWFyZ2luOiAwIDAgYmFzZWxpbmUoMikgMDtcblxuICAgICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICAgICAgQGluY2x1ZGUgZm9udChib2xkLTQ4LCBmdWxsKTtcbiAgICAgICAgICBtYXJnaW46IDAgMCBiYXNlbGluZSgyKSAwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICZfX2J5bGluZSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDcpO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiBiYXNlbGluZSgyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmX19vdmVybGF5IHtcbiAgICAgIHotaW5kZXg6IDA7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgd2lkdGg6IDEwMHZ3O1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiBiYXNlbGluZSg0MCk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcihuZXV0cmFsLCBibGFjayk7XG4gICAgICBvcGFjaXR5OiAwO1xuXG4gICAgICAmLS1sb3cge1xuICAgICAgICBvcGFjaXR5OiAuMTtcbiAgICAgIH1cbiAgICAgICYtLW1lZGl1bSB7XG4gICAgICAgIG9wYWNpdHk6IC4yO1xuICAgICAgfVxuICAgICAgJi0taGlnaCB7XG4gICAgICAgIG9wYWNpdHk6IC4zO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGxhcmdlLXNjcmVlbnMpKSB7XG4gICAgICAgIG1heC13aWR0aDogMTYwMHB4O1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgIHBhZGRpbmctdG9wOiBiYXNlbGluZSgxMCk7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGxhcmdlLXNjcmVlbnMpKSB7XG4gICAgICBtYXgtd2lkdGg6IDE2MDBweDtcbiAgICB9XG4gIH1cblxuICAmX19iaWxsYm9hcmQtc3BhY2VyIHtcbiAgICBoZWlnaHQ6IGJhc2VsaW5lKDQwKTtcbiAgICBtYXJnaW4tYm90dG9tOiBiYXNlbGluZSg1KTtcblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IGJhc2VsaW5lKDgpXG4gICAgfVxuICB9XG5cbiAgJl9fc2VjdGlvbi1sYWJlbCB7XG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgQGluY2x1ZGUgc3BhbigzKTtcbiAgICAgIEBpbmNsdWRlIHB1c2goMSk7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIH1cbiAgfVxuXG4gICYtLXRhZyxcbiAgJi0tc2VhcmNoIHtcbiAgICA+IC5yZXN1bHRzLWxvb3BfX3NlY3Rpb24tbGFiZWwge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAmLS1zZWFyY2gge1xuXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgbWFyZ2luLXRvcDogYmFzZWxpbmUoOCk7XG4gICAgfVxuICB9XG5cbiAgJi0tYXV0aG9yIHtcbiAgICA+IC5yZXN1bHRzLWxvb3BfX3NlY3Rpb24tbGFiZWwge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAucmVzdWx0OmZpcnN0LW9mLXR5cGUge1xuICAgICAgcGFkZGluZy10b3A6IGJhc2VsaW5lKDUpO1xuICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGNvbG9yKG5ldXRyYWwsIGxpZ2h0LWdyYXkpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgfVxuICB9XG59XG5cbi5sb2FkLW1vcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIG1hcmdpbi10b3A6IGJhc2VsaW5lKDUpO1xuICBtYXJnaW4tYm90dG9tOiBiYXNlbGluZSg4KTtcblxuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgfVxufVxuXG4ucGFnaW5hdGlvbiB7XG5cbiAgJi0tbm8tcmVzdWx0cyB7XG4gICAgbWFyZ2luLWJvdHRvbTogYmFzZWxpbmUoNSk7XG5cbiAgICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkYnJlYWtwb2ludHMsIGZ1bGwpKSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiBiYXNlbGluZSg4KTtcbiAgICB9XG4gICAgXG4gICAgLm5vLXJlc3VsdHMtbWVzc2FnZSB7XG4gICAgICBjb2xvcjogY29sb3IobmV1dHJhbCwgZXh0cmEtbGlnaHQtZ3JheSk7XG4gICAgICBAaW5jbHVkZSB0eXBlU3R5bGVzKG1hcC1nZXQobWFwLWdldCgkdHlwb2dyYXBoeSwgZGVmYXVsdCksIGJvbGQtMjQpKTtcbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgICAgQGluY2x1ZGUgdHlwZVN0eWxlcyhtYXAtZ2V0KG1hcC1nZXQoJHR5cG9ncmFwaHksIGRlZmF1bHQpLCBib2xkLTQ4KSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICAmLS1oaWRlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgJl9fZGlzcGxheWVkLXJlc3VsdHMge1xuICAgIG1hcmdpbi10b3A6IGJhc2VsaW5lKDMpO1xuICAgIG1hcmdpbi1ib3R0b206IGJhc2VsaW5lKDMpO1xuXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgbWFyZ2luLXRvcDogYmFzZWxpbmUoNSk7XG4gICAgfVxuICB9XG5cbiAgJl9fcGFnZSxcbiAgJl9faW5jcmVtZW50IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogYmFzZWxpbmUoMyk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGxpbmUtaGVpZ2h0OiBiYXNlbGluZSgzKTtcbiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IobmV1dHJhbCwgd2hpdGUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcblxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6IGNvbG9yKG5ldXRyYWwsIHdoaXRlKTtcbiAgICAgIGZpbGw6IGNvbG9yKG5ldXRyYWwsIHdoaXRlKTtcbiAgICB9XG5cbiAgICAmLS1jdXJyZW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiBjb2xvcihuZXV0cmFsLCBleHRyYS1saWdodC1ncmF5KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBjb2xvcihuZXV0cmFsLCBleHRyYS1saWdodC1ncmF5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IDA7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCBmdWxsKSkge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICZfX2RpdmlkZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAmLS1maXJzdCB7XG4gICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBjb2xvcihuZXV0cmFsLCBleHRyYS1saWdodC1ncmF5KTtcbiAgICAgIG1hcmdpbi1yaWdodDogMTZweDtcbiAgICB9XG4gICAgJi0tbGFzdCB7XG4gICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIGNvbG9yKG5ldXRyYWwsIGV4dHJhLWxpZ2h0LWdyYXkpO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG4gIH1cblxuICAmX19pbmNyZW1lbnQge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIG1hcmdpbi1yaWdodDogMTZweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAgIHN2ZyB7XG4gICAgICB6LWluZGV4OiAwO1xuICAgICAgaGVpZ2h0OiBiYXNlbGluZSgyKTtcbiAgICAgIHdpZHRoOiBiYXNlbGluZSgyKTtcbiAgICAgIG1hcmdpbjogNXB4O1xuICAgIH1cblxuICAgICYtLXNob3duIHtcbiAgICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICB9XG4gICAgfVxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJl9fcGFnZS1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICB9XG5cbiAgJl9fbmF2LWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtYXJnaW4tYm90dG9tOiBiYXNlbGluZSg1KTtcblxuICAgIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRicmVha3BvaW50cywgZnVsbCkpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IGJhc2VsaW5lKDgpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogd2VicGFjazovLy9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svd2VicGFjay9jb3JlL2NvbXBvbmVudHMvYmxvZy1yZXN1bHRzLnNjc3NcbiAqKi8iLCIkdHlwb2dyYXBoeTogKGRlZmF1bHQ6IChib2xkLTE0NDogKHdlaWdodDogNzAwLHNpemU6IDgsbGluZS1oZWlnaHQ6IDgsdHJhY2tpbmc6IC0yNSxtYXJnaW4tYm90dG9tOiAwKSxib2xkLTk2OiAod2VpZ2h0OiA3MDAsc2l6ZTogNixsaW5lLWhlaWdodDogNix0cmFja2luZzogLTI1LG1hcmdpbi1ib3R0b206IDApLGJvbGQtNzI6ICh3ZWlnaHQ6IDcwMCxzaXplOiA1LGxpbmUtaGVpZ2h0OiA1LHRyYWNraW5nOiAtMjUsbWFyZ2luLWJvdHRvbTogMCkscm9tYW4tNzI6ICh3ZWlnaHQ6IDQwMCxzaXplOiA1LGxpbmUtaGVpZ2h0OiA1LHRyYWNraW5nOiAtMjUsbWFyZ2luLWJvdHRvbTogMCksYm9sZC00ODogKHdlaWdodDogNzAwLHNpemU6IDQsbGluZS1oZWlnaHQ6IDQsdHJhY2tpbmc6IC0yNSxtYXJnaW4tYm90dG9tOiAwKSxyb21hbi00ODogKHdlaWdodDogNDAwLHNpemU6IDQsbGluZS1oZWlnaHQ6IDQsdHJhY2tpbmc6IC0yNSxtYXJnaW4tYm90dG9tOiAwKSxib2xkLTM2OiAod2VpZ2h0OiA3MDAsc2l6ZTogMyxsaW5lLWhlaWdodDogMyx0cmFja2luZzogLTI1LG1hcmdpbi1ib3R0b206IDApLHJvbWFuLTM2OiAod2VpZ2h0OiA0MDAsc2l6ZTogMyxsaW5lLWhlaWdodDogMyx0cmFja2luZzogLTI1LG1hcmdpbi1ib3R0b206IDApLGJvbGQtMjQ6ICh3ZWlnaHQ6IDcwMCxzaXplOiAyLGxpbmUtaGVpZ2h0OiAyLHRyYWNraW5nOiAwLG1hcmdpbi1ib3R0b206IDApLHJvbWFuLTI0OiAod2VpZ2h0OiA0MDAsc2l6ZTogMixsaW5lLWhlaWdodDogMix0cmFja2luZzogMTUsbWFyZ2luLWJvdHRvbTogMCksYm9sZC0xNjogKHdlaWdodDogNzAwLHNpemU6IDEuMzMsbGluZS1oZWlnaHQ6IDIsdHJhY2tpbmc6IDI1LG1hcmdpbi1ib3R0b206IDApLHJvbWFuLTE2OiAod2VpZ2h0OiA0MDAsc2l6ZTogMS4zMyxsaW5lLWhlaWdodDogMix0cmFja2luZzogMjUsbWFyZ2luLWJvdHRvbTogMCksYm9sZC0xNDogKHdlaWdodDogNzAwLHNpemU6IDEuMTYsbGluZS1oZWlnaHQ6IDIsdHJhY2tpbmc6IDMwLG1hcmdpbi1ib3R0b206IDApLHJvbWFuLTE0OiAod2VpZ2h0OiA0MDAsc2l6ZTogMS4xNixsaW5lLWhlaWdodDogMix0cmFja2luZzogMjUsbWFyZ2luLWJvdHRvbTogMCkpLHJlc3BvbnNpdmU6IChmdWxsOiAoYm9sZC0xNDQ6ICh3ZWlnaHQ6IDcwMCxzaXplOiAxMixsaW5lLWhlaWdodDogMTIsdHJhY2tpbmc6IC0yMDAsbWFyZ2luLWJvdHRvbTogMCksYm9sZC05NjogKHdlaWdodDogNzAwLHNpemU6IDgsbGluZS1oZWlnaHQ6IDgsdHJhY2tpbmc6IC0yNSxtYXJnaW4tYm90dG9tOiAwKSxib2xkLTcyOiAod2VpZ2h0OiA3MDAsc2l6ZTogNixsaW5lLWhlaWdodDogNix0cmFja2luZzogLTI1LG1hcmdpbi1ib3R0b206IDApLHJvbWFuLTcyOiAod2VpZ2h0OiA0MDAsc2l6ZTogNixsaW5lLWhlaWdodDogNix0cmFja2luZzogLTI1LG1hcmdpbi1ib3R0b206IDApLGJvbGQtNDg6ICh3ZWlnaHQ6IDcwMCxzaXplOiA0LGxpbmUtaGVpZ2h0OiA0LHRyYWNraW5nOiAtMjUsbWFyZ2luLWJvdHRvbTogMCkscm9tYW4tNDg6ICh3ZWlnaHQ6IDQwMCxzaXplOiA0LGxpbmUtaGVpZ2h0OiA0LHRyYWNraW5nOiAtMjUsbWFyZ2luLWJvdHRvbTogMCksYm9sZC0zNjogKHdlaWdodDogNzAwLHNpemU6IDMsbGluZS1oZWlnaHQ6IDMsdHJhY2tpbmc6IC0yNSxtYXJnaW4tYm90dG9tOiAwKSxyb21hbi0zNjogKHdlaWdodDogNDAwLHNpemU6IDMsbGluZS1oZWlnaHQ6IDMsdHJhY2tpbmc6IC0yNSxtYXJnaW4tYm90dG9tOiAwKSxib2xkLTI0OiAod2VpZ2h0OiA3MDAsc2l6ZTogMixsaW5lLWhlaWdodDogMix0cmFja2luZzogMCxtYXJnaW4tYm90dG9tOiAwKSxyb21hbi0yNDogKHdlaWdodDogNDAwLHNpemU6IDIsbGluZS1oZWlnaHQ6IDIsdHJhY2tpbmc6IDE1LG1hcmdpbi1ib3R0b206IDApLGJvbGQtMTY6ICh3ZWlnaHQ6IDcwMCxzaXplOiAxLjMzLGxpbmUtaGVpZ2h0OiAyLHRyYWNraW5nOiAyNSxtYXJnaW4tYm90dG9tOiAwKSxyb21hbi0xNjogKHdlaWdodDogNDAwLHNpemU6IDEuMzMsbGluZS1oZWlnaHQ6IDIsdHJhY2tpbmc6IDI1LG1hcmdpbi1ib3R0b206IDApLGJvbGQtMTQ6ICh3ZWlnaHQ6IDcwMCxzaXplOiAxLjE2LGxpbmUtaGVpZ2h0OiAyLHRyYWNraW5nOiAzMCxtYXJnaW4tYm90dG9tOiAwKSxyb21hbi0xNDogKHdlaWdodDogNDAwLHNpemU6IDEuMTYsbGluZS1oZWlnaHQ6IDIsdHJhY2tpbmc6IDI1LG1hcmdpbi1ib3R0b206IDApKSkpO1xuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2s6Ly8vYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy92YXJpYWJsZXMvdHlwb2dyYXBoeS5qc29uXG4gKiovIiwiJGdyaWQ6IChsYXJnZS1zY3JlZW5zOiAoY29sdW1uczogMTIsY29sdW1uOiA2JSxtYXJnaW46IDUuMiUsZ3V0dGVyOiAxLjYlLGJhc2VsaW5lOiAxMnB4KSxkZXNrdG9wOiAoY29sdW1uczogMTIsY29sdW1uOiA2JSxtYXJnaW46IDUuMiUsZ3V0dGVyOiAxLjYlLGJhc2VsaW5lOiAxMnB4KSxmdWxsOiAoY29sdW1uczogMTIsY29sdW1uOiA2JSxtYXJnaW46IDUuMiUsZ3V0dGVyOiAxLjYlLGJhc2VsaW5lOiAxMnB4KSx0YWJsZXQ6IChjb2x1bW5zOiAxMixjb2x1bW46IDYlLG1hcmdpbjogNS4yJSxndXR0ZXI6IDEuNiUsYmFzZWxpbmU6IDEycHgpLG1pbmk6IChjb2x1bW5zOiAxMixjb2x1bW46IDYlLG1hcmdpbjogNS4yJSxndXR0ZXI6IDEuNiUsYmFzZWxpbmU6IDEycHgpLG1vYmlsZTogKGNvbHVtbnM6IDEsY29sdW1uOiA4Ni42JSxtYXJnaW46IDYuNiUsZ3V0dGVyOiAwLGJhc2VsaW5lOiAxMnB4KSk7XG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogd2VicGFjazovLy9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItcHJvamVjdC9ibG9nLXR3aXR0ZXItamNyLW1vZHVsZXMvYmxvZy10d2l0dGVyLXZpZXcvc3JjL3dlYnBhY2svY29yZS92YXJpYWJsZXMvZ3JpZC5qc29uXG4gKiovIiwiQGltcG9ydCAnY29yZS9zdHlsZS9taXhpbic7XG5cbkBpbXBvcnQgXCJjb3JlL2NvbXBvbmVudHMvYmxvZy1yZXN1bHRzLnNjc3NcIjtcblxuLypcbiAgQ1NTIEhhY2tzIC0gU3BhY2luZyBhZGp1c3RtZW50cyBmb3IgYmxvZyBmZWVkLlxuICBUaGVzZSB2YWx1ZXMgc2hvdWxkIGJlIG1pZ3JhdGVkIGludG8gdGhlIGFwcHJvcHJpYXRlIGNvbXBvbmVudCBzdHlsZXMuXG4gIERlZmluaW5nIHRoZW0gaGVyZSBmb3IgZWFzZSBvZiBpdGVyYXRpb24gc2luY2UgdGhlcmUgd2lsbCBsaWtlbHkgYmUgbW9yZSBhZGp1c3RtZW50cy5cbiovXG5cbi5ibDE4LWxlZnQtcmFpbC1ibG9nLWNvbnRhaW5lciAuY29sdW1uLTYge1xuXHRtYXJnaW4tYm90dG9tOiBiYXNlbGluZSgyKSAhaW1wb3J0YW50O1xufVxuXG4uYjAyLWJsb2ctcG9zdC1uby1tYXN0aGVhZF9fdGl0bGUge1xuXHRtYXJnaW4tYm90dG9tOiBiYXNlbGluZSgyKSAhaW1wb3J0YW50O1xufVxuXG4uYmwxOC1zaW5nbGUtdHdlZXQgLnR3ZWV0IHtcblx0bWFyZ2luLWJvdHRvbTogYmFzZWxpbmUoMykgIWltcG9ydGFudDtcbn1cblxuLmJsMTMtcmljaC10ZXh0LWVkaXRvciBwICsgb2wsIC5ibDEzLXJpY2gtdGV4dC1lZGl0b3IgcCArIHVsIHtcblx0cGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuLmJsMTMtcmljaC10ZXh0LWVkaXRvciArIC5ibDE4LXNpbmdsZS10d2VldCAudHdlZXQge1xuICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5ibDEzLXJpY2gtdGV4dC1lZGl0b3Ige1xuIFx0bWFyZ2luLWJvdHRvbTogYmFzZWxpbmUoMSkgIWltcG9ydGFudDtcbn1cblxuLmJsMTMtcmljaC10ZXh0LWVkaXRvciA+ICoge1xuIFx0cGFkZGluZy1ib3R0b206IGJhc2VsaW5lKDIpICFpbXBvcnRhbnQ7XG59XG5cbi5ibDE0LWltYWdlIC5pbWFnZSB7XG5cdG1hcmdpbi1ib3R0b206IGJhc2VsaW5lKDMpICFpbXBvcnRhbnQ7XG59XG5cbi5ibDE2LXF1b3RlIHtcblx0cGFkZGluZy1ib3R0b206IGJhc2VsaW5lKDMpICFpbXBvcnRhbnQ7XG59XG5cbi5ibDE3LWNvZGUtc25pcHBldCB7XG4gIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1ib3R0b206IGJhc2VsaW5lKDMpICFpbXBvcnRhbnQ7XG59XG5cbi5jMTQtbWVkaWEtZG93bmxvYWRfX2NvbnRlbnQge1xuIFx0bWFyZ2luLWJvdHRvbTogYmFzZWxpbmUoMykgIWltcG9ydGFudDtcbn1cblxuLmMwNS12aWRlbyAudmlkZW9fcGxheWVyIHtcblx0bWFyZ2luLWJvdHRvbTogYmFzZWxpbmUoMykgIWltcG9ydGFudDtcbn1cblxuLmJsMTgtc2luZ2xlLXR3ZWV0IC50d2VldC5kZWxldGVkLXR3ZWV0IHtcbiBcdG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2s6Ly8vYmxvZy10d2l0dGVyLXByb2plY3QvYmxvZy10d2l0dGVyLWpjci1tb2R1bGVzL2Jsb2ctdHdpdHRlci12aWV3L3NyYy93ZWJwYWNrL3dlYnBhY2svYXBwLnNjc3NcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9*/