/*
Also please follow this
Do your project have diferent charset languages to account with?
      - Yes -> follow https://projects.netcentric.biz/wiki/display/FRONTEND/CSS+-+Font+Normalization
      - No -> You can still use it, there are tons of advantages, but its create some extra css and layout rendering
*/
/*
  * Design spec:
  * https://www.figma.com/file/SR4rvQlNnCmPMrQ9WYaIqv/branch/TJqkFymq09wf8KwmY1WNcj/Volvo-AEM-Design-system?type=design&node-id=7-26&t=pAm916VRiqCOD2I1-0
*/
/**
 * z-indexes from lower to -> higher
 */
/* doc
---
title: Pixel to em
name: nn-px-to-em
category: functions
---

Calculate the em with a given pixel with the given base font size
If you don't set a $base the $base-font-size is used as the context

## Live Template abbreviations
---
-ptu

## Parameters
---
@parameter $value = pixel based number (without unit)
@parameter $base = pixel based number (without unit)

## Dependencies
---
nn-strip-unit

## Example
---
```html_example
nn-px-to-em(5) // Output: 0.3125em
nn-px-to-em(5, 10) // Output: 0.5em
nn-px-to-em(5, 20) // Output: 0.25em
```
*/
/* doc
---
title: Pixel to rem
name: nn-px-to-rem
category: functions
---

Calculate the rem with a given pixel with the given base font size

In:  5px
Out: 0.3125rem

## Live Template abbreviations
---
-rem

## Parameters
---
@parameter $value = pixel based number (without unit)

## Dependencies
---
nn-strip-unit

## Example
---
```html_example
nn-px-to-rem(5) // Output 0.3125rem
```

*/
/* doc
---
title: Pixel to unit
name: px-to-unit
category: mixins
---

Set a property and value (pixel based without unit)

Calculates rem / em / % from given pixel and base (default base is the
base-font-size, 16px)
If rtl is true, this mixin handles all the direction stuff:
- Switching the values, when we have exactly 4 values
- Switching left and right in properties (padding and margin)

## Live Template abbreviations
---
-ptu (for em or % to pixel - with base parameter)
-rem (for rem to pixel - without base parameter)

## Parameters
---
@parameter $property = padding | margin | font-size | width | height
@parameter $value = Pixel based number - add px to keep the px for a value
@parameter $base = px based number, Default: 16px
@parameter $unit = Set unit: px | em | rem | percent

## Dependencies
---
abstract/functions/swap-left-right
abstract/functions/strip-unit

## Example
---

```html_example
@include nn-px-to-unit(padding, 0 10px 20 0); => padding: 0 10px 1.25rem 0;
@include nn-px-to-unit(padding, 0 10 20 0); => padding: 0 0.625rem 1.25rem 0;
@include nn-px-to-unit(padding-left, 10);
@include nn-px-to-unit(padding-right, 10);
@include nn-px-to-unit(margin, 0 10 20 0);
@include nn-px-to-unit(margin-left, 10);
@include nn-px-to-unit(margin-right, 10);
@include nn-px-to-unit(font-size, 20);
@include nn-px-to-unit(width, 100);
@include nn-px-to-unit(min-width, 100);
@include nn-px-to-unit(mann-width, 100);
@include nn-px-to-unit(height, 100);
@include nn-px-to-unit(min-height, 100);
@include nn-px-to-unit(mann-height, 100);
```

## Source
---
http://css-tricks.com/snippets/css/less-mixin-for-rem-font-sizing/

*/
/* doc
---
title: Pixel to unitless
name: nn-px-to-unitless
category: functions
---

This makes the same calculation as px to em. But it don't print out the unit.

Use this for line-heights.

## Live Template abbreviations
---

## Parameters
---
@parameter $value = pixel based number (without unit)
@parameter $base = pixel based number (without unit)

## Dependencies
---

## Example
---

```html_example
line-height: nn-px-to-unitless(5) // Output: 0.3125
```

## Source
---

*/
/* doc
---
title: Strip unit
name: nn-strip-unit
category: functions
---

Strips of the unit of a number

## Parameters
---
@parameter $num = number with unit (5px, 5em, 5rem)

## Example
---

```html_example
nn-strip-unit(5px) //Output: 5
nn-strip-unit(10em) // Output: 10
nn-strip-unit(15rem) // Output: 15
```

*/
/* doc
---
title: z-index
name: nn-z-index
category: functions
---

Because z-indices can get tricky we manage them in the theme.scss globally.

Always use this mixin to set set a z-index.

Read the Best Practice to get an full documentation:
https://projects.netcentric.biz/wiki/display/FRONTEND/How+to+set+a+z-index

## Live Template abbreviations
---
-z

## Parameters
---
@parameter $element = Name of the element (normally this will be the module name for the main stack)
@parameter $list = Name of the list (default $z-indices). Must be only set for stack context
@parameter $min = Set a minimum z-index which will be added to the list.

## Dependencies
---
$z-indices variable in the theme.scss

## Example
---

```html_example

// In the SASS theme file

$z-indices: slider, modal, dialog, navigation;

// In the SASS module file

.modal {
    &__base {
        position: absolute;
        z-index: nn-z-index(modal);
    }
}
```

## Source
---
http://www.smashingmagazine.com/2014/06/12/sassy-z-index-management-for-complex-layouts/

*/
/* doc
---
title: remove every unit
name: strip-unit
category: functions
---
remove all units

## Parameters
---
@parameter $number = number with unit

## Example
---
```html_example
strip-unit(5px) // Output: 5
```
*/
/* doc
---
title: Swap left right values
name: nn-rtl
category: functions
---

Swap the names right and left when $rtl is set to true.
If the value is not right or left it returns the original value.

In:  right
Out: left (in rtl), right (in ltr)

## Live Template abbreviations
---

## Parameters
---
@parameter $origin = right | left

## Example
---

```html_example
nn-rtl(left): 10px;
nn-rtl(padding-right): 30px;
nn-rtl(0 1px 8px 12px) // 0 12px 8px 1px
```

*/
/*
    This mixin converts any unitless number (for example 40) to the correct unit, according to the given axis.

    Parameters:
    - $value: unitless number to be converted. A unit in $value will correspond to a px in the browser,
        no matter if it's output as px or rem

    Returns
    - Horizontal: will convert the number to pixels (40px)
    - Vertical: will convert the number to rem (if rem === 16px, then 40 will be converted to 2.5 rem)
*/
/*
    Converts a unitless number to the corresponding unit on the horizontal axis.
    By default will convert the value to px.
*/
/*
    Converts a unitless number to the corresponding unit on the vertical axis.
    By default will convert the value to rem.
*/
/* stylelint-disable */
/* doc
---
title: Swap left right values
name: swap-left-right-values
category: functions
---

Swap the values for right and left when $rtl is set to true:

In:  0 5px 8px 12px
Out: 0 12px 8px 5px (in rtl)

## Parameters
---
@parameter $values = 4 numbers (works with all units)

## Example
---

```html_example
swap-left-right-values(0 1px 8px 12px) // 0 12px 8px 1px
swap-left-right-values(0 1em 8em 12em) // 0 12em 8em 1em
wap-left-right-values(0 1rem 8rem 12rem) // 0 12rem 8rem 1rem
```

## Source
---
http://stackoverflow.com/questions/14199323/right-to-left-rtl-support-in-sass-project

*/
/* stylelint-disable */
/* doc
---
title: Swap left right names
name: swap-left-right-names
category: functions
---

Swap the names right and left when $rtl is set to true.
If the value is not right or left it returns the original value.

In:  right
Out: left (in rtl), right (in ltr)

## Live Template abbreviations
---

## Parameters
---
@parameter $origin = right | left

## Example
---

```html_example
swap-left-right-name(left)
swap-left-right-name(right)
```

## Source
---
http://stackoverflow.com/questions/14199323/right-to-left-rtl-support-in-sass-project

*/
/*  List of CSS properties that will always be output at least as 2 different values
    in order to be able to convert each one to the correct axis unit */
/*
    Mixin for automatically handling spacings around/between elements.

    This mixin will automatically invert the lef/right directions in RTL languages.
    Also, the unitless values will be converted to the proper unit according to the axis

    Parameters:
    - $property-name: name of the CSS property that should be output. Supported properties are:
        margin, margin-top, margin-right, margin-bottom, margin-left
        padding, padding-top, padding-right, padding-bottom, padding-left
        width, height, min-width, max-width, min-height, min-height
    - $value: value that will be output as part of the given property. Supported values are:
        Unitless number (40): this should be used most of the times. It will automatically be converted
            to the correct unit depending on the axis where it's used (horizontal axis => px, vertical axis => rem).
            Each unit in $value will correspond to a px in the browser, no matter to which unit it will be converted.
        Number with unit (40px, 40%...): the number and the unit will be preserved and only the left/right inversion
            will be done for RTL languages
        List of values (40 30% 20 10): margin and padding shorthands whith multiple values are supported.
            The left/right values will be automatically swapped in RTL and the unitless numbers will be converted
            to the corresponding unit. Unitless and numbers with units can be mixed in the same call.
        Using calc() in any of the previous examples is supported, although no unit conversion will be done

 ## Example
---

```html_example
@include spacing(padding, 0 10px 20 0); => padding: 0 10px 2rem 0;
@include spacing(padding, 0 10 20 0); => padding: 0 10px 2rem 0;
@include spacing(padding-left, 10);
@include spacing(padding-right, 10);
@include spacing(margin, 0 10 20 0);
@include spacing(margin-left, 10);
@include spacing(margin-right, 10);
@include spacing(width, 100);
@include spacing(min-width, 100);
@include spacing(max-width, 100);
@include spacing(height, 100);
@include spacing(min-height, 100);
@include spacing(max-height, 100);
```
*/
/* doc
---
title: Clearfix
name: clearfix
category: mixins
---

Clears after floating element

Use this mixin only inside media queries where you can't use the
abstract/extends/utils/_clearfix version, which adds less code to css

## Live Template abbreviations
---

## Example
---

```html_example
@include clearfix;
```

## Source
---
https://css-tricks.com/snippets/css/clear-fix/
*/
/* stylelint-disable string-no-newline */
/* doc
---
title: focus color
name: focus color
category: mixins
---

Add a focus color when keyboard-focus is activated
## Parameters
---
@param $number

*/
/* doc
---
title: ignore-container
name: ignore-container
category: mixins
---

Set full page width for something inside a container

## Parameters
---
@param $container-size
@param $gutter

*/
/* Generates all the rules for the grid columns up to the given amount of column */
/* Generates all the rules for the grid column offset up to the given amount of column */
/* Generates all the rules for the grid and columns for the given break point and total of columns */
/* API function to be called to generate a grid config */
/* doc
---
type: button type
state: state button
---

Button styles

Use this mixin for button styles: color text, background, border

## Example
---

```html_example
@include button(primary);
```
*/
/* doc
---
lineLimit: This value specifies the number of lines after which the content will be clamped. It must be greater than 0.
---

Truncates text at a specific number of lines.

Use this mixin to hide long text.

## Example
---

```html_example
@include line-clamp($lineLimit: 4);
```
*/
/* typography
---
title: typography
name: Typography
category: mixins
---

Adds font CSS properties by a map provided

## Parameters
---
@param $t-style
@param $is-important: false

* $t-style is expected to be a map with 'default' and 'breakpoint[s]' submaps with a property
for every css property to be set.
* $is-important parameter allows to force typography properties to be set as !important
Try to avoid its use, but it might be needed for situations where styles for a component
are very specific and to overwrite the generic ones is too complex (if they have a lot of specificity)

*/
/* doc
---
title: hidden
name: hidden
category: mixins
---

Hide from both screenreaders and browsers: h5bp.com/u
## Parameters
---

*/
/* doc
---
title: overlay
name: overlay
category: mixins
---

Creates an overlay with the provided background color
## Parameters
---
@param $bgColor

*/
/**
 * @mixin top-bottom-border
 * @desc Creates a dynamic and customizable border at the specified position on an element.
 *
 * @param {string} $position - Optional, Default: 'bottom'. Defines the position of the border. Accepts values 'top' or 'bottom'.
 * @param {color} $color - Optional, Default: '$c-black'. Specifies the color of the border. Accepts any valid CSS color value.
 * @param {length} $width - Optional, Default: '2px'. Sets the width of the border. Accepts any valid CSS length value.
 * @param {length} $margin - Optional, Default: '0'. Adds margin to the border. Accepts any valid CSS length value.
 *
 * @example
 *   .example-element {
 *       @include top-bottom-border($position: top, $color: $c-grey-two, $width: 3px, $margin: 10px);
 *   }
 */
/* doc
---
title: reset-fullwidth-margins
name: reset-fullwidth-margins
category: mixins
---

Reset margins for full width components inside a Container or a Column Control
*/
.teaserlist:not(.teaser--layout-top):not(.teaser--layout-right) .cmp-teaser {
  min-height: 0;
  padding-top: 100%;
}
.teaserlist__list {
  --grid-gap: 15px;
  display: grid;
  gap: var(--grid-gap);
  margin-bottom: var(--grid-gap);
}
@media (min-width: 480px) {
  .teaserlist__list {
    --grid-gap: 30px;
    grid-template-columns: calc(100% / 3 - var(--grid-gap) * 2 / 3) calc(100% / 3 - var(--grid-gap) * 2 / 3) calc(100% / 3 - var(--grid-gap) * 2 / 3) ;
    grid-gap: var(--grid-gap);
  }
  .teaserlistLayout-cols--2 .teaserlist__list {
    grid-template-columns: calc(100% / 2 - var(--grid-gap) * 1 / 2) calc(100% / 2 - var(--grid-gap) * 1 / 2) ;
    grid-gap: var(--grid-gap);
  }
}
@media (min-width: 960px) {
  .teaserlist__list {
    margin: 15px 0;
  }
  .teaserlistLayout-cols--4 .teaserlist__list {
    grid-template-columns: calc(100% / 4 - var(--grid-gap) * 3 / 4) calc(100% / 4 - var(--grid-gap) * 3 / 4) calc(100% / 4 - var(--grid-gap) * 3 / 4) calc(100% / 4 - var(--grid-gap) * 3 / 4) ;
    grid-gap: var(--grid-gap);
  }
}
.teaserlistLayout--no-column .teaserlist__list {
  grid-template-columns: calc(100% / 1 - var(--grid-gap) * 0 / 1) ;
  grid-gap: var(--grid-gap);
}
.teaserlistLayout--no-column .teaserlist__list .cmp-teaser__item {
  width: 100%;
  margin: 0 auto;
}
.teaserlist__title {
  display: none;
}
.teaserlist__title--group {
  display: none;
}
.teaserlist .cmp-teaser {
  position: relative;
  overflow: hidden;
  margin: 0;
}
.teaserlist .cmp-teaser__warning {
  color: #c4001a;
  width: 100%;
  text-align: center;
}
.teaserlist .cmp-teaser__link:hover .cmp-teaser__overlay {
  background: rgba(0, 0, 0, 0.5);
}
.teaserlist .cmp-teaser__link:hover .cmp-teaser__content {
  transform: translateY(-100%);
}
.teaserlist .cmp-teaser__link:hover .cmp-teaser__description {
  opacity: 1;
  transition: opacity 0.1s linear;
}
.teaserlist .cmp-teaser__link:hover .article__title::after {
  padding-inline-start: 5px;
}
.teaserlist .cmp-teaser__image {
  padding: 0 !important;
}
.teaserlist .cmp-teaser__overlay {
  transition: background 0.2s ease-in-out;
  content: "";
  display: block;
  position: absolute;
  height: 100%;
  top: 0;
  left: 0;
  right: 0;
  background: rgba(0, 0, 0, 0);
}
.teaserlist .cmp-teaser__overlay--shade {
  background: linear-gradient(to top, #000, transparent);
  position: absolute;
  height: 200px;
  width: 100%;
  bottom: 0;
}
.teaserlist .cmp-teaser__content {
  position: absolute;
  top: 100%;
  transform: translateY(-3.5em);
  color: #e1dfdd;
  transition: transform 0.3s ease-in-out;
  padding: 0 15px 5px;
  max-width: 100%;
}
.teaserlist .cmp-teaser__title {
  font-family: var(--ff-medium);
  font-size: 21px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: var(--ls-default);
  margin-bottom: 16px;
  color: #fff;
}
@media (min-width: 768px) {
  .teaserlist .cmp-teaser__title {
    font-size: 24px;
  }
}
.teaserlist .cmp-teaser__description {
  /* stylelint-disable-next-line value-no-vendor-prefix */
  display: -webkit-box;
  -webkit-line-clamp: 8;
  -webkit-box-orient: vertical;
  /* stylelint-disable-next-line property-no-unknown */
  box-orient: vertical;
  -webkit-box-orient: vertical;
  overflow: hidden;
  padding-bottom: 1px;
  margin-top: 0;
  color: #fff;
  opacity: 0;
  transition: opacity 1s linear;
}
.teaserlist .cmp-teaser__linkLabel {
  font-family: var(--ff-regular);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: var(--ls-default);
  color: #fff;
}
.teaserlist .cmp-teaser__linkLabel:after {
  background-color: #fff;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: 24px;
  height: 24px;
}
@media (min-width: 1200px) {
  .teaserlist .cmp-teaser__linkLabel:after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}
.teaserlist .cmp-teaser__linkLabel::after {
  font-size: 10px;
  margin-left: 10px;
  vertical-align: middle;
  display: inline-block;
}
.teaserlist .cmp-teaser .cmp-image {
  position: relative;
  height: 0;
  padding-top: 100%;
  overflow: hidden;
}
.teaserlist .cmp-teaser .cmp-image__image {
  position: absolute;
  top: 0;
  height: 100%;
}
.teaserlist .article__header {
  display: none;
}
.teaserlist .article__date--long {
  display: none;
}
.teaserlist.teaser--description-hide .cmp-teaser__link .cmp-teaser__title--lastword::after {
  transform: translate(0, -1px);
}
.teaserlist.teaser--description-hide .cmp-teaser__link:hover .cmp-teaser__title--lastword::after {
  transform: translate(5px, -1px);
}
.teaserlist.teaser--description-hide .cmp-teaser__title--lastword:after {
  background-color: #004fbc;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: var(--v-icon-size);
  height: var(--v-icon-size);
}
@media (min-width: 1200px) {
  .teaserlist.teaser--description-hide .cmp-teaser__title--lastword:after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}
.teaserlist.teaser--description-hide .cmp-teaser__title--lastword::after {
  margin-left: 10px;
  vertical-align: middle;
  transition: transform 0.3s ease-out;
}
.teaserlist.teaser--description-hide .cmp-teaser__description {
  display: none;
}
.teaserlist.teaser--description-hide .cmp-teaser__linkLabel {
  display: none;
}
.teaserlist.teaser--layout-top .cmp-teaser__overlay, .teaserlist.teaser--layout-top .cmp-teaser__overlay--shade {
  display: none;
}
.teaserlist.teaser--layout-top .cmp-teaser__linkLabel {
  color: #004fbc;
}
.teaserlist.teaser--layout-top .cmp-teaser__linkLabel:after {
  background-color: #004fbc;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: var(--v-icon-size);
  height: var(--v-icon-size);
}
@media (min-width: 1200px) {
  .teaserlist.teaser--layout-top .cmp-teaser__linkLabel:after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}
.teaserlist.teaser--layout-top .cmp-teaser__linkLabel::after {
  transform: translateY(-2px);
}
.teaserlist.teaser--layout-top .cmp-teaser__link:hover .cmp-teaser__content {
  transform: none;
}
.teaserlist.teaser--layout-top .cmp-teaser__content {
  padding: 1em 0;
  position: static;
  transform: none;
  background: #fff;
}
.container__base .teaserlist.teaser--layout-top .cmp-teaser__content {
  padding: 1em;
}
.teaserlist.teaser--layout-top .cmp-teaser__description, .teaserlist.teaser--layout-top .cmp-teaser__title {
  color: #53565a;
}
.teaserlist.teaser--layout-top .cmp-teaser__title--lastword {
  display: inline-block;
  white-space: nowrap;
}
.teaserlist.teaser--layout-top .cmp-teaser__description {
  opacity: 1;
}
.teaserlist.teaser--layout-top .cmp-teaser .cmp-image {
  padding-top: 56.48%;
}
.teaserlist.teaser--layout-top .article__header {
  display: block;
  color: #a7a8a9;
}
@media (min-width: 768px) {
  .teaserlist.teaser--layout-top .article__header {
    display: flex;
    justify-content: flex-end;
  }
}
.teaserlist.teaser--layout-top .article__title--lastword {
  padding-inline-end: 24px;
}
.teaserlist.teaser--layout-top .article__title--lastword:after {
  background-color: #004fbc;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: var(--v-icon-size);
  height: var(--v-icon-size);
}
@media (min-width: 1200px) {
  .teaserlist.teaser--layout-top .article__title--lastword:after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}
.teaserlist.teaser--layout-top .article__title--lastword::after {
  display: inline-block;
  margin-left: 10px;
  transition: padding-left 0.3s ease-out;
  width: 24px;
  height: 24px;
  margin-inline-end: -34px;
}
@media (max-width: 959px) {
  .teaserlist.teaser--layout-top .article__title--lastword::after {
    transform: translateY(4px);
  }
}
@media (min-width: 768px) {
  .teaserlist.teaser--layout-top .article__title--lastword::after {
    transform: translateY(3px);
  }
}
.teaserlist.teaser--layout-top .article__tag {
  width: 100%;
}
@media (min-width: 768px) {
  .teaserlist.teaser--layout-top .article__tag {
    width: 40%;
    display: flex;
    align-items: baseline;
  }
}
.teaserlist.teaser--layout-top .article__details {
  width: 100%;
}
@media (min-width: 768px) {
  .teaserlist.teaser--layout-top .article__details {
    width: 60%;
    text-align: end;
  }
}
.teaserlist.teaser--layout-top .article__time {
  display: none;
}
@media (min-width: 768px) {
  .teaserlist.teaser--layout-top .article__time {
    display: inline-block;
  }
}
@media (min-width: 768px) {
  .teaserlist.teaser--layout-top .article__time--mobile {
    display: none;
  }
}
@media (max-width: 767px) {
  .teaserlist.teaser--layout-top.mobile-horizontal-scroll:has(.teaserlist__list) {
    padding-left: 15px;
    padding-right: 15px;
  }
  .teaserlist.teaser--layout-top.mobile-horizontal-scroll:has(.teaserlist__list) ::-webkit-scrollbar {
    -webkit-appearance: none;
    height: 4px;
  }
  .teaserlist.teaser--layout-top.mobile-horizontal-scroll:has(.teaserlist__list) ::-webkit-scrollbar-thumb {
    border-radius: 4px;
    background-color: #a7a8a9;
  }
  .teaserlist.teaser--layout-top.mobile-horizontal-scroll:has(.teaserlist__list) .teaserlist__list {
    overflow-x: auto;
    gap: 0;
  }
  .teaserlist.teaser--layout-top.mobile-horizontal-scroll:has(.teaserlist__list) .teaserlist__list:has(> :nth-child(n+3)) {
    display: flex;
    flex-wrap: nowrap;
    margin: 0;
    padding-bottom: 16px;
    gap: 16px;
  }
  .teaserlist.teaser--layout-top.mobile-horizontal-scroll:has(.teaserlist__list) .teaserlist__list:has(> :nth-child(n+3)) > * {
    flex: 0 0 auto;
    width: 92%;
    padding: 0;
  }
}
@media (max-width: 767px) {
  .teaserlist.teaser--layout-top.mobile-horizontal-scroll .cmp-teaser__item, .teaserlist.teaser--layout-top.mobile-horizontal-scroll .cmp-teaser__link {
    display: grid;
  }
  .teaserlist.teaser--layout-top.mobile-horizontal-scroll .cmp-teaser__content {
    height: 100%;
  }
}
.teaserlist.teaserlistLayout-cols--4.teaser--layout-top .article__header {
  display: block;
}
.teaserlist.teaserlistLayout-cols--4.teaser--layout-top .article__tag, .teaserlist.teaserlistLayout-cols--4.teaser--layout-top .article__details {
  width: 100%;
  text-align: left;
}
.teaserlist.teaser--layout-right .cmp-teaser {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
@media (min-width: 768px) {
  .teaserlist.teaser--layout-right .cmp-teaser {
    flex-direction: row-reverse;
  }
}
.teaserlist.teaser--layout-right .cmp-teaser__image {
  position: relative;
}
@media (max-width: 767px) {
  .teaserlist.teaser--layout-right .cmp-teaser__image {
    width: 100%;
  }
}
@media (min-width: 768px) {
  .teaserlist.teaser--layout-right .cmp-teaser__image {
    width: 30%;
    height: auto;
  }
}
@media (min-width: 768px) and (max-width: 959px) {
  .teaserlist.teaser--layout-right .cmp-teaser__image {
    width: 50%;
  }
}
@media (max-width: 767px) {
  .teaserlist.teaser--layout-right .cmp-teaser .cmp-image {
    padding-top: 0;
    height: auto;
  }
}
@media (min-width: 768px) {
  .teaserlist.teaser--layout-right .cmp-teaser .cmp-image {
    padding-top: 56.48%;
  }
}
@media (max-width: 767px) {
  .teaserlist.teaser--layout-right .cmp-teaser .cmp-image .cmp-image__image {
    position: relative;
  }
}
.teaserlist.teaser--layout-right .cmp-teaser__overlay, .teaserlist.teaser--layout-right .cmp-teaser__overlay--shade {
  display: none;
}
.teaserlist.teaser--layout-right .cmp-teaser__linkLabel {
  display: inline-block;
  align-items: center;
  text-decoration: none;
  font-family: var(--ff-medium);
  box-sizing: border-box;
  padding: 12px 32px;
  background: #fff;
  border: 1px solid #53565a;
  color: #53565a;
  transition: background 1s;
  max-width: calc(100% - var(--v-icon-size));
}
.teaserlist.teaser--layout-right .cmp-teaser__linkLabel:hover, .teaserlist.teaser--layout-right .cmp-teaser__linkLabel:focus {
  background: #f7f7f7;
  text-decoration: none;
  color: #53565a;
}
.teaserlist.teaser--layout-right .cmp-teaser__linkLabel:hover::after, .teaserlist.teaser--layout-right .cmp-teaser__linkLabel:focus::after {
  transform: var(--button-icon-transform-hover);
}
.teaserlist.teaser--layout-right .cmp-teaser__linkLabel:active {
  background: #e1dfdd;
}
.teaserlist.teaser--layout-right .cmp-teaser__linkLabel:active, .teaserlist.teaser--layout-right .cmp-teaser__linkLabel:focus, .teaserlist.teaser--layout-right .cmp-teaser__linkLabel:focus-visible {
  outline: 2px solid #0041a3;
  outline-offset: 3px;
}
.teaserlist.teaser--layout-right .cmp-teaser__linkLabel::after {
  transform: var(--button-icon-transform);
  transition: transform 0.3s ease-out;
}
.teaserlist.teaser--layout-right .cmp-teaser__linkLabel:disabled, .teaserlist.teaser--layout-right .cmp-teaser__linkLabel.disabled {
  border: 1px solid #888b8d;
  color: #888b8d;
}
.teaserlist.teaser--layout-right .cmp-teaser__linkLabel:after {
  background-color: #53565a;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: var(--v-icon-size);
  height: var(--v-icon-size);
}
@media (min-width: 1200px) {
  .teaserlist.teaser--layout-right .cmp-teaser__linkLabel:after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}
.teaserlist.teaser--layout-right .cmp-teaser__linkLabel::after {
  color: #000;
  padding-left: 10px;
  vertical-align: bottom;
  width: 24px;
  height: 24px;
}
@media (min-width: 960px) {
  .teaserlist.teaser--layout-right .cmp-teaser__linkLabel::after {
    transform: translateY(-1px);
  }
}
@media (min-width: 960px) {
  .teaserlist.teaser--layout-right .cmp-teaser__linkLabel:hover::after {
    transform: translate(5px, -1px);
  }
}
.teaserlist.teaser--layout-right .cmp-teaser__link:hover .cmp-teaser__content {
  transform: none;
}
.teaserlist.teaser--layout-right .cmp-teaser__content {
  transform: none;
  position: static;
  padding: 1em;
  pointer-events: auto;
}
@media (min-width: 768px) {
  .teaserlist.teaser--layout-right .cmp-teaser__content {
    position: relative;
    width: 70%;
    height: -moz-fit-content;
    height: fit-content;
    padding-top: 0;
  }
}
@media (min-width: 768px) and (max-width: 959px) {
  .teaserlist.teaser--layout-right .cmp-teaser__content {
    width: 50%;
  }
}
@media (max-width: 959px) {
  .teaserlist.teaser--layout-right .cmp-teaser__content .cmp-teaser__linkLabel::after {
    margin-left: 0;
  }
}
.teaserlist.teaser--layout-right .cmp-teaser__description, .teaserlist.teaser--layout-right .cmp-teaser__title {
  color: #53565a;
}
.teaserlist.teaser--layout-right .cmp-teaser__description {
  opacity: 1;
  margin-bottom: 10px;
}
@media (min-width: 768px) {
  .teaserlist.teaser--layout-right .cmp-teaser__description {
    /* stylelint-disable-next-line value-no-vendor-prefix */
    display: -webkit-box;
    -webkit-line-clamp: 4;
    -webkit-box-orient: vertical;
    /* stylelint-disable-next-line property-no-unknown */
    box-orient: vertical;
    -webkit-box-orient: vertical;
    overflow: hidden;
    padding-bottom: 1px;
    margin-right: 0;
  }
  .teaserlist.teaser--layout-right .cmp-teaser__description::after {
    height: 1.2em;
  }
}
.teaserlist.teaser--layout-right .article__header {
  display: block;
  color: #a7a8a9;
}
@media (max-width: 767px) {
  .teaserlist.teaser--layout-right .article__header {
    display: flex;
    justify-content: space-between;
  }
}
.teaserlist.teaser--layout-right .article__title--lastword {
  margin-block-end: 0;
}
.teaserlist.teaser--layout-right .article__title--lastword:after {
  background-color: #004fbc;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: var(--v-icon-size);
  height: var(--v-icon-size);
}
@media (min-width: 1200px) {
  .teaserlist.teaser--layout-right .article__title--lastword:after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}
.teaserlist.teaser--layout-right .article__title--lastword::after {
  display: inline-block;
  margin-left: 10px;
  transition: padding-left 0.3s ease-out;
  width: 24px !important;
  height: 24px !important;
}
@media (max-width: 959px) {
  .teaserlist.teaser--layout-right .article__title--lastword::after {
    vertical-align: bottom;
  }
}
@media (min-width: 960px) {
  .teaserlist.teaser--layout-right .article__title--lastword::after {
    transform: translateY(3px);
  }
}
@media (min-width: 768px) {
  .teaserlist.teaser--layout-right .article__details {
    position: absolute;
    bottom: 0;
  }
}
.teaserlist.teaser--layout-right .article__time, .teaserlist.teaser--layout-right .article__time--mobile {
  display: none;
}
@media (max-width: 1199px) {
  .container__base.container--fullWidth .cmp-container > .teaserlist {
    margin-left: -15px;
    margin-right: -15px;
  }
}
@media (min-width: 1200px) {
  .container__base.container--fullWidth .cmp-container > .teaserlist {
    padding-left: 15px;
    padding-right: 15px;
  }
}

.collage .teaserlist {
  height: 100%;
  padding: 14px 20px;
}
.collage .teaserlist__title {
  font-family: var(--ff-medium);
  font-size: 21px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: var(--ls-default);
  margin-bottom: 25px;
  display: block;
  position: absolute;
  color: #fff;
  z-index: 1;
  pointer-events: none;
}
@media (min-width: 768px) {
  .collage .teaserlist__title {
    font-size: 24px;
  }
}
.collage .teaserlist__list {
  margin: 0;
}
.collage .teaserlist .cmp-teaser {
  width: 100%;
  height: 100%;
}
.collage .teaserlist .cmp-teaser__overlay, .collage .teaserlist .cmp-teaser__description, .collage .teaserlist .cmp-teaser__linkLabel {
  display: none;
}
.collage .teaserlist .cmp-teaser .cmp-image {
  position: initial;
}
.collage .teaserlist .cmp-teaser__item:nth-of-type(n+2) {
  display: none;
}
.collage .teaserlist .cmp-teaser__link {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: flex-end;
}
.collage .teaserlist .cmp-teaser__link:hover .cmp-teaser__content {
  transform: none;
}
.collage .teaserlist .cmp-teaser__content {
  position: absolute;
  top: auto;
  padding: 0 20px 7px;
  transform: none;
  display: flex;
  flex-direction: column;
}
.collage .teaserlist .cmp-teaser__title {
  font-family: var(--ff-regular);
  font-size: 24px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: var(--ls-default);
  color: #53565a;
}
.collage .teaserlist .cmp-teaser .cmp-teaser__content .article__title {
  line-height: 1;
}
.collage .teaserlist .article__tag, .collage .teaserlist .article__time, .collage .teaserlist .article__time--mobile, .collage .teaserlist .article__date {
  display: none;
}
.collage .teaserlist .article__details {
  color: #53565a;
}
.collage .teaserlist .article__header {
  display: block;
  order: 3;
}
.collage .teaserlist .article__date--long {
  display: inline;
}
.collage .teaserlist .article__title--lastword {
  padding-inline-end: 10px;
  color: #fff;
}
.collage .teaserlist .article__title--lastword:after {
  background-color: #004fbc;
  content: "";
  display: inline-block;
  -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
          mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w24-view");
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: cover;
          mask-size: cover;
  pointer-events: none;
  width: var(--v-icon-size);
  height: var(--v-icon-size);
}
@media (min-width: 1200px) {
  .collage .teaserlist .article__title--lastword:after {
    -webkit-mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
            mask-image: url("../../../../../../content/dam/volvo-media/list-icons/chevron-right.svg#chevron-right-icon-w16-view");
  }
}
.collage .teaserlist .article__title--lastword::after {
  margin-inline-start: 5px;
  vertical-align: middle;
  transition: padding-inline-start 0.3s ease-out;
}
.collage .cmp-container--bg + .cmp-container .teaserlist__title,
.collage .cmp-container--bg + .cmp-container .cmp-teaser__title,
.collage .cmp-container--bg + .cmp-container .article__details {
  color: #fff;
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL3ZhcmlhYmxlcy9faW1wb3J0X3ZhcmlhYmxlcy5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvdmFyaWFibGVzL190eXBvZ3JhcGhpZXMuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL3ZhcmlhYmxlcy9fel9pbmRleC5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvZnVuY3Rpb25zL19ubi1weC10by1lbS5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvZnVuY3Rpb25zL19ubi1weC10by1yZW0uc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L2Z1bmN0aW9ucy9fbm4tcHgtdG8tdW5pdC5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvZnVuY3Rpb25zL19ubi1weC10by11bml0bGVzcy5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvZnVuY3Rpb25zL19ubi1zdHJpcC11bml0LnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9mdW5jdGlvbnMvX25uLXotaW5kZXguc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L2Z1bmN0aW9ucy9fc3RyaXAtdW5pdC5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvZnVuY3Rpb25zL19ubi1ydGwuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L2Z1bmN0aW9ucy9fcHgtdG8tYXhpcy11bml0LnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9mdW5jdGlvbnMvX3N3YXAtbGVmdC1yaWdodC12YWx1ZXMuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L2Z1bmN0aW9ucy9fc3dhcC1sZWZ0LXJpZ2h0LW5hbWVzLnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9mdW5jdGlvbnMvX3NwYWNpbmcuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L21peGlucy9fY2xlYXJmaXguc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L21peGlucy9fZm9udC1pY29uLnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9taXhpbnMvX2ZvY3VzLWNvbG9yLnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9taXhpbnMvX2lnbm9yZS1jb250YWluZXIuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L21peGlucy9fZ2VuZXJhdGUtYWVtLWdyaWQuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L21peGlucy9fYnV0dG9uLnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9taXhpbnMvX2xpbmUtY2xhbXAuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L21peGlucy9fdHlwb2dyYXBoeS5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvbWl4aW5zL19oaWRkZW4uc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L21peGlucy9fb3ZlcmxheS5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvbWl4aW5zL190b3AtYm90dG9tLWJvcmRlci5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvYWJzdHJhY3QvbWl4aW5zL19yZXNldC1mdWxsd2lkdGgtbWFyZ2lucy5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL3NoYXJlZC9jb21wb25lbnRzL2NvbnRlbnQvdGVhc2VybGlzdC90ZWFzZXJsaXN0LmNsaWVudGxpYnMuc2NzcyIsIi4uL3RhcmdldC92YXVsdC13b3JrL2pjcl9yb290L2FwcHMvdm9sdm8vY2xpZW50bGlicy9zaGFyZWQvY29tcG9uZW50cy9jb250ZW50L3RlYXNlcmxpc3QvdGVhc2VybGlzdC5idW5kbGUuY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL2J1aWxkL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvX2JyZWFrcG9pbnQuc2NzcyIsImZpbGU6Ly8vYnVpbGRfcm9vdC9idWlsZC9nbG9iYWwtcDExMDQ5OC11azQzMDExL3ZvbHZvLWNsaWVudGxpYnMtYXBwcy9zcmMvbWFpbi9mcm9udGVuZC92b2x2by9jb21tb24vc3R5bGVzL2Fic3RyYWN0L21peGlucy9fZ3JpZC1jb2xzLXdpZHRoLnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy92YXJpYWJsZXMvX2NvbG9ycy5zY3NzIiwiZmlsZTovLy9idWlsZF9yb290L2J1aWxkL2dsb2JhbC1wMTEwNDk4LXVrNDMwMTEvdm9sdm8tY2xpZW50bGlicy1hcHBzL3NyYy9tYWluL2Zyb250ZW5kL3ZvbHZvL2NvbW1vbi9zdHlsZXMvdmFyaWFibGVzL19taXNjLnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9saWIvdm9sdm9pY29ucy9fdmFyaWFibGVzLnNjc3MiLCJmaWxlOi8vL2J1aWxkX3Jvb3QvYnVpbGQvZ2xvYmFsLXAxMTA0OTgtdWs0MzAxMS92b2x2by1jbGllbnRsaWJzLWFwcHMvc3JjL21haW4vZnJvbnRlbmQvdm9sdm8vY29tbW9uL3N0eWxlcy9hYnN0cmFjdC9taXhpbnMvX21vYmlsZS1ob3Jpem9udGFsLXNjcm9sbC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7OztDQUFBO0FDRkE7OztDQUFBO0FDRUE7O0VBQUE7QUNGQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBQUE7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBQUE7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FBQTtBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQUFBO0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FBQTtBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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VUFBQSxvR0FBQTtFQUNBLDhCQUFBO1VBQUEsc0JBQUE7RUFDQSx3QkFBQTtVQUFBLGdCQUFBO0VBQ0Esb0JBQUE7RUFVSSx5QkFBQTtFQUNBLDBCQUFBO0FZa3BDWjtBWjNwQ1E7RUFUSjtJQVVRLDRHQUFBO1lBQUEsb0dBQUE7RVk4cENWO0FBQ0Y7QUR2bEJnQjtFQUNJLHdCQUFBO0VBQ0Esc0JBQUE7RUFDQSw4Q0FBQTtBQ3lsQnBCO0FEbGxCUTs7O0VBR0ksV0lwcUJPO0FId3ZDbkIiLCJmaWxlIjoiLi4vdGFyZ2V0L3ZhdWx0LXdvcmsvamNyX3Jvb3QvYXBwcy92b2x2by9jbGllbnRsaWJzL3NoYXJlZC9jb21wb25lbnRzL2NvbnRlbnQvdGVhc2VybGlzdC90ZWFzZXJsaXN0LmJ1bmRsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIi8qXG5BbHNvIHBsZWFzZSBmb2xsb3cgdGhpc1xuRG8geW91ciBwcm9qZWN0IGhhdmUgZGlmZXJlbnQgY2hhcnNldCBsYW5ndWFnZXMgdG8gYWNjb3VudCB3aXRoP1xuICAgICAgLSBZZXMgLT4gZm9sbG93IGh0dHBzOi8vcHJvamVjdHMubmV0Y2VudHJpYy5iaXovd2lraS9kaXNwbGF5L0ZST05URU5EL0NTUystK0ZvbnQrTm9ybWFsaXphdGlvblxuICAgICAgLSBObyAtPiBZb3UgY2FuIHN0aWxsIHVzZSBpdCwgdGhlcmUgYXJlIHRvbnMgb2YgYWR2YW50YWdlcywgYnV0IGl0cyBjcmVhdGUgc29tZSBleHRyYSBjc3MgYW5kIGxheW91dCByZW5kZXJpbmdcbiovXG4vKlxuICAqIERlc2lnbiBzcGVjOlxuICAqIGh0dHBzOi8vd3d3LmZpZ21hLmNvbS9maWxlL1NSNHJ2UWxObkNtUE1yUTlXWWFJcXYvYnJhbmNoL1RKcWtGeW1xMDl3ZjhLd21ZMVdOY2ovVm9sdm8tQUVNLURlc2lnbi1zeXN0ZW0/dHlwZT1kZXNpZ24mbm9kZS1pZD03LTI2JnQ9cEFtOTE2VlJpcUNPRDJJMS0wXG4qL1xuLyoqXG4gKiB6LWluZGV4ZXMgZnJvbSBsb3dlciB0byAtPiBoaWdoZXJcbiAqL1xuLyogZG9jXG4tLS1cbnRpdGxlOiBQaXhlbCB0byBlbVxubmFtZTogbm4tcHgtdG8tZW1cbmNhdGVnb3J5OiBmdW5jdGlvbnNcbi0tLVxuXG5DYWxjdWxhdGUgdGhlIGVtIHdpdGggYSBnaXZlbiBwaXhlbCB3aXRoIHRoZSBnaXZlbiBiYXNlIGZvbnQgc2l6ZVxuSWYgeW91IGRvbid0IHNldCBhICRiYXNlIHRoZSAkYmFzZS1mb250LXNpemUgaXMgdXNlZCBhcyB0aGUgY29udGV4dFxuXG4jIyBMaXZlIFRlbXBsYXRlIGFiYnJldmlhdGlvbnNcbi0tLVxuLXB0dVxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJHZhbHVlID0gcGl4ZWwgYmFzZWQgbnVtYmVyICh3aXRob3V0IHVuaXQpXG5AcGFyYW1ldGVyICRiYXNlID0gcGl4ZWwgYmFzZWQgbnVtYmVyICh3aXRob3V0IHVuaXQpXG5cbiMjIERlcGVuZGVuY2llc1xuLS0tXG5ubi1zdHJpcC11bml0XG5cbiMjIEV4YW1wbGVcbi0tLVxuYGBgaHRtbF9leGFtcGxlXG5ubi1weC10by1lbSg1KSAvLyBPdXRwdXQ6IDAuMzEyNWVtXG5ubi1weC10by1lbSg1LCAxMCkgLy8gT3V0cHV0OiAwLjVlbVxubm4tcHgtdG8tZW0oNSwgMjApIC8vIE91dHB1dDogMC4yNWVtXG5gYGBcbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IFBpeGVsIHRvIHJlbVxubmFtZTogbm4tcHgtdG8tcmVtXG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cblxuQ2FsY3VsYXRlIHRoZSByZW0gd2l0aCBhIGdpdmVuIHBpeGVsIHdpdGggdGhlIGdpdmVuIGJhc2UgZm9udCBzaXplXG5cbkluOiAgNXB4XG5PdXQ6IDAuMzEyNXJlbVxuXG4jIyBMaXZlIFRlbXBsYXRlIGFiYnJldmlhdGlvbnNcbi0tLVxuLXJlbVxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJHZhbHVlID0gcGl4ZWwgYmFzZWQgbnVtYmVyICh3aXRob3V0IHVuaXQpXG5cbiMjIERlcGVuZGVuY2llc1xuLS0tXG5ubi1zdHJpcC11bml0XG5cbiMjIEV4YW1wbGVcbi0tLVxuYGBgaHRtbF9leGFtcGxlXG5ubi1weC10by1yZW0oNSkgLy8gT3V0cHV0IDAuMzEyNXJlbVxuYGBgXG5cbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IFBpeGVsIHRvIHVuaXRcbm5hbWU6IHB4LXRvLXVuaXRcbmNhdGVnb3J5OiBtaXhpbnNcbi0tLVxuXG5TZXQgYSBwcm9wZXJ0eSBhbmQgdmFsdWUgKHBpeGVsIGJhc2VkIHdpdGhvdXQgdW5pdClcblxuQ2FsY3VsYXRlcyByZW0gLyBlbSAvICUgZnJvbSBnaXZlbiBwaXhlbCBhbmQgYmFzZSAoZGVmYXVsdCBiYXNlIGlzIHRoZVxuYmFzZS1mb250LXNpemUsIDE2cHgpXG5JZiBydGwgaXMgdHJ1ZSwgdGhpcyBtaXhpbiBoYW5kbGVzIGFsbCB0aGUgZGlyZWN0aW9uIHN0dWZmOlxuLSBTd2l0Y2hpbmcgdGhlIHZhbHVlcywgd2hlbiB3ZSBoYXZlIGV4YWN0bHkgNCB2YWx1ZXNcbi0gU3dpdGNoaW5nIGxlZnQgYW5kIHJpZ2h0IGluIHByb3BlcnRpZXMgKHBhZGRpbmcgYW5kIG1hcmdpbilcblxuIyMgTGl2ZSBUZW1wbGF0ZSBhYmJyZXZpYXRpb25zXG4tLS1cbi1wdHUgKGZvciBlbSBvciAlIHRvIHBpeGVsIC0gd2l0aCBiYXNlIHBhcmFtZXRlcilcbi1yZW0gKGZvciByZW0gdG8gcGl4ZWwgLSB3aXRob3V0IGJhc2UgcGFyYW1ldGVyKVxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJHByb3BlcnR5ID0gcGFkZGluZyB8IG1hcmdpbiB8IGZvbnQtc2l6ZSB8IHdpZHRoIHwgaGVpZ2h0XG5AcGFyYW1ldGVyICR2YWx1ZSA9IFBpeGVsIGJhc2VkIG51bWJlciAtIGFkZCBweCB0byBrZWVwIHRoZSBweCBmb3IgYSB2YWx1ZVxuQHBhcmFtZXRlciAkYmFzZSA9IHB4IGJhc2VkIG51bWJlciwgRGVmYXVsdDogMTZweFxuQHBhcmFtZXRlciAkdW5pdCA9IFNldCB1bml0OiBweCB8IGVtIHwgcmVtIHwgcGVyY2VudFxuXG4jIyBEZXBlbmRlbmNpZXNcbi0tLVxuYWJzdHJhY3QvZnVuY3Rpb25zL3N3YXAtbGVmdC1yaWdodFxuYWJzdHJhY3QvZnVuY3Rpb25zL3N0cmlwLXVuaXRcblxuIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChwYWRkaW5nLCAwIDEwcHggMjAgMCk7ID0+IHBhZGRpbmc6IDAgMTBweCAxLjI1cmVtIDA7XG5AaW5jbHVkZSBubi1weC10by11bml0KHBhZGRpbmcsIDAgMTAgMjAgMCk7ID0+IHBhZGRpbmc6IDAgMC42MjVyZW0gMS4yNXJlbSAwO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChwYWRkaW5nLWxlZnQsIDEwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQocGFkZGluZy1yaWdodCwgMTApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChtYXJnaW4sIDAgMTAgMjAgMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KG1hcmdpbi1sZWZ0LCAxMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KG1hcmdpbi1yaWdodCwgMTApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChmb250LXNpemUsIDIwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQod2lkdGgsIDEwMCk7XG5AaW5jbHVkZSBubi1weC10by11bml0KG1pbi13aWR0aCwgMTAwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQobWFubi13aWR0aCwgMTAwKTtcbkBpbmNsdWRlIG5uLXB4LXRvLXVuaXQoaGVpZ2h0LCAxMDApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChtaW4taGVpZ2h0LCAxMDApO1xuQGluY2x1ZGUgbm4tcHgtdG8tdW5pdChtYW5uLWhlaWdodCwgMTAwKTtcbmBgYFxuXG4jIyBTb3VyY2Vcbi0tLVxuaHR0cDovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL2Nzcy9sZXNzLW1peGluLWZvci1yZW0tZm9udC1zaXppbmcvXG5cbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IFBpeGVsIHRvIHVuaXRsZXNzXG5uYW1lOiBubi1weC10by11bml0bGVzc1xuY2F0ZWdvcnk6IGZ1bmN0aW9uc1xuLS0tXG5cblRoaXMgbWFrZXMgdGhlIHNhbWUgY2FsY3VsYXRpb24gYXMgcHggdG8gZW0uIEJ1dCBpdCBkb24ndCBwcmludCBvdXQgdGhlIHVuaXQuXG5cblVzZSB0aGlzIGZvciBsaW5lLWhlaWdodHMuXG5cbiMjIExpdmUgVGVtcGxhdGUgYWJicmV2aWF0aW9uc1xuLS0tXG5cbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtZXRlciAkdmFsdWUgPSBwaXhlbCBiYXNlZCBudW1iZXIgKHdpdGhvdXQgdW5pdClcbkBwYXJhbWV0ZXIgJGJhc2UgPSBwaXhlbCBiYXNlZCBudW1iZXIgKHdpdGhvdXQgdW5pdClcblxuIyMgRGVwZW5kZW5jaWVzXG4tLS1cblxuIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxubGluZS1oZWlnaHQ6IG5uLXB4LXRvLXVuaXRsZXNzKDUpIC8vIE91dHB1dDogMC4zMTI1XG5gYGBcblxuIyMgU291cmNlXG4tLS1cblxuKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogU3RyaXAgdW5pdFxubmFtZTogbm4tc3RyaXAtdW5pdFxuY2F0ZWdvcnk6IGZ1bmN0aW9uc1xuLS0tXG5cblN0cmlwcyBvZiB0aGUgdW5pdCBvZiBhIG51bWJlclxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJG51bSA9IG51bWJlciB3aXRoIHVuaXQgKDVweCwgNWVtLCA1cmVtKVxuXG4jIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5ubi1zdHJpcC11bml0KDVweCkgLy9PdXRwdXQ6IDVcbm5uLXN0cmlwLXVuaXQoMTBlbSkgLy8gT3V0cHV0OiAxMFxubm4tc3RyaXAtdW5pdCgxNXJlbSkgLy8gT3V0cHV0OiAxNVxuYGBgXG5cbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IHotaW5kZXhcbm5hbWU6IG5uLXotaW5kZXhcbmNhdGVnb3J5OiBmdW5jdGlvbnNcbi0tLVxuXG5CZWNhdXNlIHotaW5kaWNlcyBjYW4gZ2V0IHRyaWNreSB3ZSBtYW5hZ2UgdGhlbSBpbiB0aGUgdGhlbWUuc2NzcyBnbG9iYWxseS5cblxuQWx3YXlzIHVzZSB0aGlzIG1peGluIHRvIHNldCBzZXQgYSB6LWluZGV4LlxuXG5SZWFkIHRoZSBCZXN0IFByYWN0aWNlIHRvIGdldCBhbiBmdWxsIGRvY3VtZW50YXRpb246XG5odHRwczovL3Byb2plY3RzLm5ldGNlbnRyaWMuYml6L3dpa2kvZGlzcGxheS9GUk9OVEVORC9Ib3crdG8rc2V0K2Erei1pbmRleFxuXG4jIyBMaXZlIFRlbXBsYXRlIGFiYnJldmlhdGlvbnNcbi0tLVxuLXpcblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW1ldGVyICRlbGVtZW50ID0gTmFtZSBvZiB0aGUgZWxlbWVudCAobm9ybWFsbHkgdGhpcyB3aWxsIGJlIHRoZSBtb2R1bGUgbmFtZSBmb3IgdGhlIG1haW4gc3RhY2spXG5AcGFyYW1ldGVyICRsaXN0ID0gTmFtZSBvZiB0aGUgbGlzdCAoZGVmYXVsdCAkei1pbmRpY2VzKS4gTXVzdCBiZSBvbmx5IHNldCBmb3Igc3RhY2sgY29udGV4dFxuQHBhcmFtZXRlciAkbWluID0gU2V0IGEgbWluaW11bSB6LWluZGV4IHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGxpc3QuXG5cbiMjIERlcGVuZGVuY2llc1xuLS0tXG4kei1pbmRpY2VzIHZhcmlhYmxlIGluIHRoZSB0aGVtZS5zY3NzXG5cbiMjIEV4YW1wbGVcbi0tLVxuXG5gYGBodG1sX2V4YW1wbGVcblxuLy8gSW4gdGhlIFNBU1MgdGhlbWUgZmlsZVxuXG4kei1pbmRpY2VzOiBzbGlkZXIsIG1vZGFsLCBkaWFsb2csIG5hdmlnYXRpb247XG5cbi8vIEluIHRoZSBTQVNTIG1vZHVsZSBmaWxlXG5cbi5tb2RhbCB7XG4gICAgJl9fYmFzZSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgei1pbmRleDogbm4tei1pbmRleChtb2RhbCk7XG4gICAgfVxufVxuYGBgXG5cbiMjIFNvdXJjZVxuLS0tXG5odHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMTQvMDYvMTIvc2Fzc3ktei1pbmRleC1tYW5hZ2VtZW50LWZvci1jb21wbGV4LWxheW91dHMvXG5cbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IHJlbW92ZSBldmVyeSB1bml0XG5uYW1lOiBzdHJpcC11bml0XG5jYXRlZ29yeTogZnVuY3Rpb25zXG4tLS1cbnJlbW92ZSBhbGwgdW5pdHNcblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW1ldGVyICRudW1iZXIgPSBudW1iZXIgd2l0aCB1bml0XG5cbiMjIEV4YW1wbGVcbi0tLVxuYGBgaHRtbF9leGFtcGxlXG5zdHJpcC11bml0KDVweCkgLy8gT3V0cHV0OiA1XG5gYGBcbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IFN3YXAgbGVmdCByaWdodCB2YWx1ZXNcbm5hbWU6IG5uLXJ0bFxuY2F0ZWdvcnk6IGZ1bmN0aW9uc1xuLS0tXG5cblN3YXAgdGhlIG5hbWVzIHJpZ2h0IGFuZCBsZWZ0IHdoZW4gJHJ0bCBpcyBzZXQgdG8gdHJ1ZS5cbklmIHRoZSB2YWx1ZSBpcyBub3QgcmlnaHQgb3IgbGVmdCBpdCByZXR1cm5zIHRoZSBvcmlnaW5hbCB2YWx1ZS5cblxuSW46ICByaWdodFxuT3V0OiBsZWZ0IChpbiBydGwpLCByaWdodCAoaW4gbHRyKVxuXG4jIyBMaXZlIFRlbXBsYXRlIGFiYnJldmlhdGlvbnNcbi0tLVxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJG9yaWdpbiA9IHJpZ2h0IHwgbGVmdFxuXG4jIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5ubi1ydGwobGVmdCk6IDEwcHg7XG5ubi1ydGwocGFkZGluZy1yaWdodCk6IDMwcHg7XG5ubi1ydGwoMCAxcHggOHB4IDEycHgpIC8vIDAgMTJweCA4cHggMXB4XG5gYGBcblxuKi9cbi8qXG4gICAgVGhpcyBtaXhpbiBjb252ZXJ0cyBhbnkgdW5pdGxlc3MgbnVtYmVyIChmb3IgZXhhbXBsZSA0MCkgdG8gdGhlIGNvcnJlY3QgdW5pdCwgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBheGlzLlxuXG4gICAgUGFyYW1ldGVyczpcbiAgICAtICR2YWx1ZTogdW5pdGxlc3MgbnVtYmVyIHRvIGJlIGNvbnZlcnRlZC4gQSB1bml0IGluICR2YWx1ZSB3aWxsIGNvcnJlc3BvbmQgdG8gYSBweCBpbiB0aGUgYnJvd3NlcixcbiAgICAgICAgbm8gbWF0dGVyIGlmIGl0J3Mgb3V0cHV0IGFzIHB4IG9yIHJlbVxuXG4gICAgUmV0dXJuc1xuICAgIC0gSG9yaXpvbnRhbDogd2lsbCBjb252ZXJ0IHRoZSBudW1iZXIgdG8gcGl4ZWxzICg0MHB4KVxuICAgIC0gVmVydGljYWw6IHdpbGwgY29udmVydCB0aGUgbnVtYmVyIHRvIHJlbSAoaWYgcmVtID09PSAxNnB4LCB0aGVuIDQwIHdpbGwgYmUgY29udmVydGVkIHRvIDIuNSByZW0pXG4qL1xuLypcbiAgICBDb252ZXJ0cyBhIHVuaXRsZXNzIG51bWJlciB0byB0aGUgY29ycmVzcG9uZGluZyB1bml0IG9uIHRoZSBob3Jpem9udGFsIGF4aXMuXG4gICAgQnkgZGVmYXVsdCB3aWxsIGNvbnZlcnQgdGhlIHZhbHVlIHRvIHB4LlxuKi9cbi8qXG4gICAgQ29udmVydHMgYSB1bml0bGVzcyBudW1iZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdW5pdCBvbiB0aGUgdmVydGljYWwgYXhpcy5cbiAgICBCeSBkZWZhdWx0IHdpbGwgY29udmVydCB0aGUgdmFsdWUgdG8gcmVtLlxuKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlICovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IFN3YXAgbGVmdCByaWdodCB2YWx1ZXNcbm5hbWU6IHN3YXAtbGVmdC1yaWdodC12YWx1ZXNcbmNhdGVnb3J5OiBmdW5jdGlvbnNcbi0tLVxuXG5Td2FwIHRoZSB2YWx1ZXMgZm9yIHJpZ2h0IGFuZCBsZWZ0IHdoZW4gJHJ0bCBpcyBzZXQgdG8gdHJ1ZTpcblxuSW46ICAwIDVweCA4cHggMTJweFxuT3V0OiAwIDEycHggOHB4IDVweCAoaW4gcnRsKVxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJHZhbHVlcyA9IDQgbnVtYmVycyAod29ya3Mgd2l0aCBhbGwgdW5pdHMpXG5cbiMjIEV4YW1wbGVcbi0tLVxuXG5gYGBodG1sX2V4YW1wbGVcbnN3YXAtbGVmdC1yaWdodC12YWx1ZXMoMCAxcHggOHB4IDEycHgpIC8vIDAgMTJweCA4cHggMXB4XG5zd2FwLWxlZnQtcmlnaHQtdmFsdWVzKDAgMWVtIDhlbSAxMmVtKSAvLyAwIDEyZW0gOGVtIDFlbVxud2FwLWxlZnQtcmlnaHQtdmFsdWVzKDAgMXJlbSA4cmVtIDEycmVtKSAvLyAwIDEycmVtIDhyZW0gMXJlbVxuYGBgXG5cbiMjIFNvdXJjZVxuLS0tXG5odHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE0MTk5MzIzL3JpZ2h0LXRvLWxlZnQtcnRsLXN1cHBvcnQtaW4tc2Fzcy1wcm9qZWN0XG5cbiovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuLyogZG9jXG4tLS1cbnRpdGxlOiBTd2FwIGxlZnQgcmlnaHQgbmFtZXNcbm5hbWU6IHN3YXAtbGVmdC1yaWdodC1uYW1lc1xuY2F0ZWdvcnk6IGZ1bmN0aW9uc1xuLS0tXG5cblN3YXAgdGhlIG5hbWVzIHJpZ2h0IGFuZCBsZWZ0IHdoZW4gJHJ0bCBpcyBzZXQgdG8gdHJ1ZS5cbklmIHRoZSB2YWx1ZSBpcyBub3QgcmlnaHQgb3IgbGVmdCBpdCByZXR1cm5zIHRoZSBvcmlnaW5hbCB2YWx1ZS5cblxuSW46ICByaWdodFxuT3V0OiBsZWZ0IChpbiBydGwpLCByaWdodCAoaW4gbHRyKVxuXG4jIyBMaXZlIFRlbXBsYXRlIGFiYnJldmlhdGlvbnNcbi0tLVxuXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbWV0ZXIgJG9yaWdpbiA9IHJpZ2h0IHwgbGVmdFxuXG4jIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5zd2FwLWxlZnQtcmlnaHQtbmFtZShsZWZ0KVxuc3dhcC1sZWZ0LXJpZ2h0LW5hbWUocmlnaHQpXG5gYGBcblxuIyMgU291cmNlXG4tLS1cbmh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTQxOTkzMjMvcmlnaHQtdG8tbGVmdC1ydGwtc3VwcG9ydC1pbi1zYXNzLXByb2plY3RcblxuKi9cbi8qICBMaXN0IG9mIENTUyBwcm9wZXJ0aWVzIHRoYXQgd2lsbCBhbHdheXMgYmUgb3V0cHV0IGF0IGxlYXN0IGFzIDIgZGlmZmVyZW50IHZhbHVlc1xuICAgIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gY29udmVydCBlYWNoIG9uZSB0byB0aGUgY29ycmVjdCBheGlzIHVuaXQgKi9cbi8qXG4gICAgTWl4aW4gZm9yIGF1dG9tYXRpY2FsbHkgaGFuZGxpbmcgc3BhY2luZ3MgYXJvdW5kL2JldHdlZW4gZWxlbWVudHMuXG5cbiAgICBUaGlzIG1peGluIHdpbGwgYXV0b21hdGljYWxseSBpbnZlcnQgdGhlIGxlZi9yaWdodCBkaXJlY3Rpb25zIGluIFJUTCBsYW5ndWFnZXMuXG4gICAgQWxzbywgdGhlIHVuaXRsZXNzIHZhbHVlcyB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgcHJvcGVyIHVuaXQgYWNjb3JkaW5nIHRvIHRoZSBheGlzXG5cbiAgICBQYXJhbWV0ZXJzOlxuICAgIC0gJHByb3BlcnR5LW5hbWU6IG5hbWUgb2YgdGhlIENTUyBwcm9wZXJ0eSB0aGF0IHNob3VsZCBiZSBvdXRwdXQuIFN1cHBvcnRlZCBwcm9wZXJ0aWVzIGFyZTpcbiAgICAgICAgbWFyZ2luLCBtYXJnaW4tdG9wLCBtYXJnaW4tcmlnaHQsIG1hcmdpbi1ib3R0b20sIG1hcmdpbi1sZWZ0XG4gICAgICAgIHBhZGRpbmcsIHBhZGRpbmctdG9wLCBwYWRkaW5nLXJpZ2h0LCBwYWRkaW5nLWJvdHRvbSwgcGFkZGluZy1sZWZ0XG4gICAgICAgIHdpZHRoLCBoZWlnaHQsIG1pbi13aWR0aCwgbWF4LXdpZHRoLCBtaW4taGVpZ2h0LCBtaW4taGVpZ2h0XG4gICAgLSAkdmFsdWU6IHZhbHVlIHRoYXQgd2lsbCBiZSBvdXRwdXQgYXMgcGFydCBvZiB0aGUgZ2l2ZW4gcHJvcGVydHkuIFN1cHBvcnRlZCB2YWx1ZXMgYXJlOlxuICAgICAgICBVbml0bGVzcyBudW1iZXIgKDQwKTogdGhpcyBzaG91bGQgYmUgdXNlZCBtb3N0IG9mIHRoZSB0aW1lcy4gSXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNvbnZlcnRlZFxuICAgICAgICAgICAgdG8gdGhlIGNvcnJlY3QgdW5pdCBkZXBlbmRpbmcgb24gdGhlIGF4aXMgd2hlcmUgaXQncyB1c2VkIChob3Jpem9udGFsIGF4aXMgPT4gcHgsIHZlcnRpY2FsIGF4aXMgPT4gcmVtKS5cbiAgICAgICAgICAgIEVhY2ggdW5pdCBpbiAkdmFsdWUgd2lsbCBjb3JyZXNwb25kIHRvIGEgcHggaW4gdGhlIGJyb3dzZXIsIG5vIG1hdHRlciB0byB3aGljaCB1bml0IGl0IHdpbGwgYmUgY29udmVydGVkLlxuICAgICAgICBOdW1iZXIgd2l0aCB1bml0ICg0MHB4LCA0MCUuLi4pOiB0aGUgbnVtYmVyIGFuZCB0aGUgdW5pdCB3aWxsIGJlIHByZXNlcnZlZCBhbmQgb25seSB0aGUgbGVmdC9yaWdodCBpbnZlcnNpb25cbiAgICAgICAgICAgIHdpbGwgYmUgZG9uZSBmb3IgUlRMIGxhbmd1YWdlc1xuICAgICAgICBMaXN0IG9mIHZhbHVlcyAoNDAgMzAlIDIwIDEwKTogbWFyZ2luIGFuZCBwYWRkaW5nIHNob3J0aGFuZHMgd2hpdGggbXVsdGlwbGUgdmFsdWVzIGFyZSBzdXBwb3J0ZWQuXG4gICAgICAgICAgICBUaGUgbGVmdC9yaWdodCB2YWx1ZXMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHN3YXBwZWQgaW4gUlRMIGFuZCB0aGUgdW5pdGxlc3MgbnVtYmVycyB3aWxsIGJlIGNvbnZlcnRlZFxuICAgICAgICAgICAgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdW5pdC4gVW5pdGxlc3MgYW5kIG51bWJlcnMgd2l0aCB1bml0cyBjYW4gYmUgbWl4ZWQgaW4gdGhlIHNhbWUgY2FsbC5cbiAgICAgICAgVXNpbmcgY2FsYygpIGluIGFueSBvZiB0aGUgcHJldmlvdXMgZXhhbXBsZXMgaXMgc3VwcG9ydGVkLCBhbHRob3VnaCBubyB1bml0IGNvbnZlcnNpb24gd2lsbCBiZSBkb25lXG5cbiAjIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5AaW5jbHVkZSBzcGFjaW5nKHBhZGRpbmcsIDAgMTBweCAyMCAwKTsgPT4gcGFkZGluZzogMCAxMHB4IDJyZW0gMDtcbkBpbmNsdWRlIHNwYWNpbmcocGFkZGluZywgMCAxMCAyMCAwKTsgPT4gcGFkZGluZzogMCAxMHB4IDJyZW0gMDtcbkBpbmNsdWRlIHNwYWNpbmcocGFkZGluZy1sZWZ0LCAxMCk7XG5AaW5jbHVkZSBzcGFjaW5nKHBhZGRpbmctcmlnaHQsIDEwKTtcbkBpbmNsdWRlIHNwYWNpbmcobWFyZ2luLCAwIDEwIDIwIDApO1xuQGluY2x1ZGUgc3BhY2luZyhtYXJnaW4tbGVmdCwgMTApO1xuQGluY2x1ZGUgc3BhY2luZyhtYXJnaW4tcmlnaHQsIDEwKTtcbkBpbmNsdWRlIHNwYWNpbmcod2lkdGgsIDEwMCk7XG5AaW5jbHVkZSBzcGFjaW5nKG1pbi13aWR0aCwgMTAwKTtcbkBpbmNsdWRlIHNwYWNpbmcobWF4LXdpZHRoLCAxMDApO1xuQGluY2x1ZGUgc3BhY2luZyhoZWlnaHQsIDEwMCk7XG5AaW5jbHVkZSBzcGFjaW5nKG1pbi1oZWlnaHQsIDEwMCk7XG5AaW5jbHVkZSBzcGFjaW5nKG1heC1oZWlnaHQsIDEwMCk7XG5gYGBcbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IENsZWFyZml4XG5uYW1lOiBjbGVhcmZpeFxuY2F0ZWdvcnk6IG1peGluc1xuLS0tXG5cbkNsZWFycyBhZnRlciBmbG9hdGluZyBlbGVtZW50XG5cblVzZSB0aGlzIG1peGluIG9ubHkgaW5zaWRlIG1lZGlhIHF1ZXJpZXMgd2hlcmUgeW91IGNhbid0IHVzZSB0aGVcbmFic3RyYWN0L2V4dGVuZHMvdXRpbHMvX2NsZWFyZml4IHZlcnNpb24sIHdoaWNoIGFkZHMgbGVzcyBjb2RlIHRvIGNzc1xuXG4jIyBMaXZlIFRlbXBsYXRlIGFiYnJldmlhdGlvbnNcbi0tLVxuXG4jIyBFeGFtcGxlXG4tLS1cblxuYGBgaHRtbF9leGFtcGxlXG5AaW5jbHVkZSBjbGVhcmZpeDtcbmBgYFxuXG4jIyBTb3VyY2Vcbi0tLVxuaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9jc3MvY2xlYXItZml4L1xuKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHN0cmluZy1uby1uZXdsaW5lICovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IGZvY3VzIGNvbG9yXG5uYW1lOiBmb2N1cyBjb2xvclxuY2F0ZWdvcnk6IG1peGluc1xuLS0tXG5cbkFkZCBhIGZvY3VzIGNvbG9yIHdoZW4ga2V5Ym9hcmQtZm9jdXMgaXMgYWN0aXZhdGVkXG4jIyBQYXJhbWV0ZXJzXG4tLS1cbkBwYXJhbSAkbnVtYmVyXG5cbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IGlnbm9yZS1jb250YWluZXJcbm5hbWU6IGlnbm9yZS1jb250YWluZXJcbmNhdGVnb3J5OiBtaXhpbnNcbi0tLVxuXG5TZXQgZnVsbCBwYWdlIHdpZHRoIGZvciBzb21ldGhpbmcgaW5zaWRlIGEgY29udGFpbmVyXG5cbiMjIFBhcmFtZXRlcnNcbi0tLVxuQHBhcmFtICRjb250YWluZXItc2l6ZVxuQHBhcmFtICRndXR0ZXJcblxuKi9cbi8qIEdlbmVyYXRlcyBhbGwgdGhlIHJ1bGVzIGZvciB0aGUgZ3JpZCBjb2x1bW5zIHVwIHRvIHRoZSBnaXZlbiBhbW91bnQgb2YgY29sdW1uICovXG4vKiBHZW5lcmF0ZXMgYWxsIHRoZSBydWxlcyBmb3IgdGhlIGdyaWQgY29sdW1uIG9mZnNldCB1cCB0byB0aGUgZ2l2ZW4gYW1vdW50IG9mIGNvbHVtbiAqL1xuLyogR2VuZXJhdGVzIGFsbCB0aGUgcnVsZXMgZm9yIHRoZSBncmlkIGFuZCBjb2x1bW5zIGZvciB0aGUgZ2l2ZW4gYnJlYWsgcG9pbnQgYW5kIHRvdGFsIG9mIGNvbHVtbnMgKi9cbi8qIEFQSSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgdG8gZ2VuZXJhdGUgYSBncmlkIGNvbmZpZyAqL1xuLyogZG9jXG4tLS1cbnR5cGU6IGJ1dHRvbiB0eXBlXG5zdGF0ZTogc3RhdGUgYnV0dG9uXG4tLS1cblxuQnV0dG9uIHN0eWxlc1xuXG5Vc2UgdGhpcyBtaXhpbiBmb3IgYnV0dG9uIHN0eWxlczogY29sb3IgdGV4dCwgYmFja2dyb3VuZCwgYm9yZGVyXG5cbiMjIEV4YW1wbGVcbi0tLVxuXG5gYGBodG1sX2V4YW1wbGVcbkBpbmNsdWRlIGJ1dHRvbihwcmltYXJ5KTtcbmBgYFxuKi9cbi8qIGRvY1xuLS0tXG5saW5lTGltaXQ6IFRoaXMgdmFsdWUgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgbGluZXMgYWZ0ZXIgd2hpY2ggdGhlIGNvbnRlbnQgd2lsbCBiZSBjbGFtcGVkLiBJdCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLlxuLS0tXG5cblRydW5jYXRlcyB0ZXh0IGF0IGEgc3BlY2lmaWMgbnVtYmVyIG9mIGxpbmVzLlxuXG5Vc2UgdGhpcyBtaXhpbiB0byBoaWRlIGxvbmcgdGV4dC5cblxuIyMgRXhhbXBsZVxuLS0tXG5cbmBgYGh0bWxfZXhhbXBsZVxuQGluY2x1ZGUgbGluZS1jbGFtcCgkbGluZUxpbWl0OiA0KTtcbmBgYFxuKi9cbi8qIHR5cG9ncmFwaHlcbi0tLVxudGl0bGU6IHR5cG9ncmFwaHlcbm5hbWU6IFR5cG9ncmFwaHlcbmNhdGVnb3J5OiBtaXhpbnNcbi0tLVxuXG5BZGRzIGZvbnQgQ1NTIHByb3BlcnRpZXMgYnkgYSBtYXAgcHJvdmlkZWRcblxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW0gJHQtc3R5bGVcbkBwYXJhbSAkaXMtaW1wb3J0YW50OiBmYWxzZVxuXG4qICR0LXN0eWxlIGlzIGV4cGVjdGVkIHRvIGJlIGEgbWFwIHdpdGggJ2RlZmF1bHQnIGFuZCAnYnJlYWtwb2ludFtzXScgc3VibWFwcyB3aXRoIGEgcHJvcGVydHlcbmZvciBldmVyeSBjc3MgcHJvcGVydHkgdG8gYmUgc2V0LlxuKiAkaXMtaW1wb3J0YW50IHBhcmFtZXRlciBhbGxvd3MgdG8gZm9yY2UgdHlwb2dyYXBoeSBwcm9wZXJ0aWVzIHRvIGJlIHNldCBhcyAhaW1wb3J0YW50XG5UcnkgdG8gYXZvaWQgaXRzIHVzZSwgYnV0IGl0IG1pZ2h0IGJlIG5lZWRlZCBmb3Igc2l0dWF0aW9ucyB3aGVyZSBzdHlsZXMgZm9yIGEgY29tcG9uZW50XG5hcmUgdmVyeSBzcGVjaWZpYyBhbmQgdG8gb3ZlcndyaXRlIHRoZSBnZW5lcmljIG9uZXMgaXMgdG9vIGNvbXBsZXggKGlmIHRoZXkgaGF2ZSBhIGxvdCBvZiBzcGVjaWZpY2l0eSlcblxuKi9cbi8qIGRvY1xuLS0tXG50aXRsZTogaGlkZGVuXG5uYW1lOiBoaWRkZW5cbmNhdGVnb3J5OiBtaXhpbnNcbi0tLVxuXG5IaWRlIGZyb20gYm90aCBzY3JlZW5yZWFkZXJzIGFuZCBicm93c2VyczogaDVicC5jb20vdVxuIyMgUGFyYW1ldGVyc1xuLS0tXG5cbiovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IG92ZXJsYXlcbm5hbWU6IG92ZXJsYXlcbmNhdGVnb3J5OiBtaXhpbnNcbi0tLVxuXG5DcmVhdGVzIGFuIG92ZXJsYXkgd2l0aCB0aGUgcHJvdmlkZWQgYmFja2dyb3VuZCBjb2xvclxuIyMgUGFyYW1ldGVyc1xuLS0tXG5AcGFyYW0gJGJnQ29sb3JcblxuKi9cbi8qKlxuICogQG1peGluIHRvcC1ib3R0b20tYm9yZGVyXG4gKiBAZGVzYyBDcmVhdGVzIGEgZHluYW1pYyBhbmQgY3VzdG9taXphYmxlIGJvcmRlciBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIG9uIGFuIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9ICRwb3NpdGlvbiAtIE9wdGlvbmFsLCBEZWZhdWx0OiAnYm90dG9tJy4gRGVmaW5lcyB0aGUgcG9zaXRpb24gb2YgdGhlIGJvcmRlci4gQWNjZXB0cyB2YWx1ZXMgJ3RvcCcgb3IgJ2JvdHRvbScuXG4gKiBAcGFyYW0ge2NvbG9yfSAkY29sb3IgLSBPcHRpb25hbCwgRGVmYXVsdDogJyRjLWJsYWNrJy4gU3BlY2lmaWVzIHRoZSBjb2xvciBvZiB0aGUgYm9yZGVyLiBBY2NlcHRzIGFueSB2YWxpZCBDU1MgY29sb3IgdmFsdWUuXG4gKiBAcGFyYW0ge2xlbmd0aH0gJHdpZHRoIC0gT3B0aW9uYWwsIERlZmF1bHQ6ICcycHgnLiBTZXRzIHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyLiBBY2NlcHRzIGFueSB2YWxpZCBDU1MgbGVuZ3RoIHZhbHVlLlxuICogQHBhcmFtIHtsZW5ndGh9ICRtYXJnaW4gLSBPcHRpb25hbCwgRGVmYXVsdDogJzAnLiBBZGRzIG1hcmdpbiB0byB0aGUgYm9yZGVyLiBBY2NlcHRzIGFueSB2YWxpZCBDU1MgbGVuZ3RoIHZhbHVlLlxuICpcbiAqIEBleGFtcGxlXG4gKiAgIC5leGFtcGxlLWVsZW1lbnQge1xuICogICAgICAgQGluY2x1ZGUgdG9wLWJvdHRvbS1ib3JkZXIoJHBvc2l0aW9uOiB0b3AsICRjb2xvcjogJGMtZ3JleS10d28sICR3aWR0aDogM3B4LCAkbWFyZ2luOiAxMHB4KTtcbiAqICAgfVxuICovXG4vKiBkb2Ncbi0tLVxudGl0bGU6IHJlc2V0LWZ1bGx3aWR0aC1tYXJnaW5zXG5uYW1lOiByZXNldC1mdWxsd2lkdGgtbWFyZ2luc1xuY2F0ZWdvcnk6IG1peGluc1xuLS0tXG5cblJlc2V0IG1hcmdpbnMgZm9yIGZ1bGwgd2lkdGggY29tcG9uZW50cyBpbnNpZGUgYSBDb250YWluZXIgb3IgYSBDb2x1bW4gQ29udHJvbFxuKi9cbi50ZWFzZXJsaXN0Om5vdCgudGVhc2VyLS1sYXlvdXQtdG9wKTpub3QoLnRlYXNlci0tbGF5b3V0LXJpZ2h0KSAuY21wLXRlYXNlciB7XG4gIG1pbi1oZWlnaHQ6IDA7XG4gIHBhZGRpbmctdG9wOiAxMDAlO1xufVxuLnRlYXNlcmxpc3RfX2xpc3Qge1xuICAtLWdyaWQtZ2FwOiAxNXB4O1xuICBkaXNwbGF5OiBncmlkO1xuICBnYXA6IHZhcigtLWdyaWQtZ2FwKTtcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tZ3JpZC1nYXApO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDQ4MHB4KSB7XG4gIC50ZWFzZXJsaXN0X19saXN0IHtcbiAgICAtLWdyaWQtZ2FwOiAzMHB4O1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogY2FsYygxMDAlIC8gMyAtIHZhcigtLWdyaWQtZ2FwKSAqIDIgLyAzKSBjYWxjKDEwMCUgLyAzIC0gdmFyKC0tZ3JpZC1nYXApICogMiAvIDMpIGNhbGMoMTAwJSAvIDMgLSB2YXIoLS1ncmlkLWdhcCkgKiAyIC8gMykgO1xuICAgIGdyaWQtZ2FwOiB2YXIoLS1ncmlkLWdhcCk7XG4gIH1cbiAgLnRlYXNlcmxpc3RMYXlvdXQtY29scy0tMiAudGVhc2VybGlzdF9fbGlzdCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBjYWxjKDEwMCUgLyAyIC0gdmFyKC0tZ3JpZC1nYXApICogMSAvIDIpIGNhbGMoMTAwJSAvIDIgLSB2YXIoLS1ncmlkLWdhcCkgKiAxIC8gMikgO1xuICAgIGdyaWQtZ2FwOiB2YXIoLS1ncmlkLWdhcCk7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAudGVhc2VybGlzdF9fbGlzdCB7XG4gICAgbWFyZ2luOiAxNXB4IDA7XG4gIH1cbiAgLnRlYXNlcmxpc3RMYXlvdXQtY29scy0tNCAudGVhc2VybGlzdF9fbGlzdCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBjYWxjKDEwMCUgLyA0IC0gdmFyKC0tZ3JpZC1nYXApICogMyAvIDQpIGNhbGMoMTAwJSAvIDQgLSB2YXIoLS1ncmlkLWdhcCkgKiAzIC8gNCkgY2FsYygxMDAlIC8gNCAtIHZhcigtLWdyaWQtZ2FwKSAqIDMgLyA0KSBjYWxjKDEwMCUgLyA0IC0gdmFyKC0tZ3JpZC1nYXApICogMyAvIDQpIDtcbiAgICBncmlkLWdhcDogdmFyKC0tZ3JpZC1nYXApO1xuICB9XG59XG4udGVhc2VybGlzdExheW91dC0tbm8tY29sdW1uIC50ZWFzZXJsaXN0X19saXN0IHtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBjYWxjKDEwMCUgLyAxIC0gdmFyKC0tZ3JpZC1nYXApICogMCAvIDEpIDtcbiAgZ3JpZC1nYXA6IHZhcigtLWdyaWQtZ2FwKTtcbn1cbi50ZWFzZXJsaXN0TGF5b3V0LS1uby1jb2x1bW4gLnRlYXNlcmxpc3RfX2xpc3QgLmNtcC10ZWFzZXJfX2l0ZW0ge1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG4udGVhc2VybGlzdF9fdGl0bGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuLnRlYXNlcmxpc3RfX3RpdGxlLS1ncm91cCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4udGVhc2VybGlzdCAuY21wLXRlYXNlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWFyZ2luOiAwO1xufVxuLnRlYXNlcmxpc3QgLmNtcC10ZWFzZXJfX3dhcm5pbmcge1xuICBjb2xvcjogI2M0MDAxYTtcbiAgd2lkdGg6IDEwMCU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi50ZWFzZXJsaXN0IC5jbXAtdGVhc2VyX19saW5rOmhvdmVyIC5jbXAtdGVhc2VyX19vdmVybGF5IHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjUpO1xufVxuLnRlYXNlcmxpc3QgLmNtcC10ZWFzZXJfX2xpbms6aG92ZXIgLmNtcC10ZWFzZXJfX2NvbnRlbnQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpO1xufVxuLnRlYXNlcmxpc3QgLmNtcC10ZWFzZXJfX2xpbms6aG92ZXIgLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjFzIGxpbmVhcjtcbn1cbi50ZWFzZXJsaXN0IC5jbXAtdGVhc2VyX19saW5rOmhvdmVyIC5hcnRpY2xlX190aXRsZTo6YWZ0ZXIge1xuICBwYWRkaW5nLWlubGluZS1zdGFydDogNXB4O1xufVxuLnRlYXNlcmxpc3QgLmNtcC10ZWFzZXJfX2ltYWdlIHtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuLnRlYXNlcmxpc3QgLmNtcC10ZWFzZXJfX292ZXJsYXkge1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnMgZWFzZS1pbi1vdXQ7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGhlaWdodDogMTAwJTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwKTtcbn1cbi50ZWFzZXJsaXN0IC5jbXAtdGVhc2VyX19vdmVybGF5LS1zaGFkZSB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICMwMDAsIHRyYW5zcGFyZW50KTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBoZWlnaHQ6IDIwMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgYm90dG9tOiAwO1xufVxuLnRlYXNlcmxpc3QgLmNtcC10ZWFzZXJfX2NvbnRlbnQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTAwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zLjVlbSk7XG4gIGNvbG9yOiAjZTFkZmRkO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLWluLW91dDtcbiAgcGFkZGluZzogMCAxNXB4IDVweDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuLnRlYXNlcmxpc3QgLmNtcC10ZWFzZXJfX3RpdGxlIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLW1lZGl1bSk7XG4gIGZvbnQtc2l6ZTogMjFweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxzLWRlZmF1bHQpO1xuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICBjb2xvcjogI2ZmZjtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAudGVhc2VybGlzdCAuY21wLXRlYXNlcl9fdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgfVxufVxuLnRlYXNlcmxpc3QgLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uIHtcbiAgLyogc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhbHVlLW5vLXZlbmRvci1wcmVmaXggKi9cbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIC13ZWJraXQtbGluZS1jbGFtcDogODtcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgLyogc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LW5vLXVua25vd24gKi9cbiAgYm94LW9yaWVudDogdmVydGljYWw7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmctYm90dG9tOiAxcHg7XG4gIG1hcmdpbi10b3A6IDA7XG4gIGNvbG9yOiAjZmZmO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDFzIGxpbmVhcjtcbn1cbi50ZWFzZXJsaXN0IC5jbXAtdGVhc2VyX19saW5rTGFiZWwge1xuICBmb250LWZhbWlseTogdmFyKC0tZmYtcmVndWxhcik7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxzLWRlZmF1bHQpO1xuICBjb2xvcjogI2ZmZjtcbn1cbi50ZWFzZXJsaXN0IC5jbXAtdGVhc2VyX19saW5rTGFiZWw6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBjb250ZW50OiBcIlwiO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hc2staW1hZ2U6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2NoZXZyb24tcmlnaHQuc3ZnI2NoZXZyb24tcmlnaHQtaWNvbi13MjQtdmlld1wiKTtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgbWFzay1zaXplOiBjb3ZlcjtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDI0cHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC50ZWFzZXJsaXN0IC5jbXAtdGVhc2VyX19saW5rTGFiZWw6YWZ0ZXIge1xuICAgIG1hc2staW1hZ2U6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2NoZXZyb24tcmlnaHQuc3ZnI2NoZXZyb24tcmlnaHQtaWNvbi13MTYtdmlld1wiKTtcbiAgfVxufVxuLnRlYXNlcmxpc3QgLmNtcC10ZWFzZXJfX2xpbmtMYWJlbDo6YWZ0ZXIge1xuICBmb250LXNpemU6IDEwcHg7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4udGVhc2VybGlzdCAuY21wLXRlYXNlciAuY21wLWltYWdlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDA7XG4gIHBhZGRpbmctdG9wOiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLnRlYXNlcmxpc3QgLmNtcC10ZWFzZXIgLmNtcC1pbWFnZV9faW1hZ2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuLnRlYXNlcmxpc3QgLmFydGljbGVfX2hlYWRlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4udGVhc2VybGlzdCAuYXJ0aWNsZV9fZGF0ZS0tbG9uZyB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4udGVhc2VybGlzdC50ZWFzZXItLWRlc2NyaXB0aW9uLWhpZGUgLmNtcC10ZWFzZXJfX2xpbmsgLmNtcC10ZWFzZXJfX3RpdGxlLS1sYXN0d29yZDo6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMXB4KTtcbn1cbi50ZWFzZXJsaXN0LnRlYXNlci0tZGVzY3JpcHRpb24taGlkZSAuY21wLXRlYXNlcl9fbGluazpob3ZlciAuY21wLXRlYXNlcl9fdGl0bGUtLWxhc3R3b3JkOjphZnRlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDVweCwgLTFweCk7XG59XG4udGVhc2VybGlzdC50ZWFzZXItLWRlc2NyaXB0aW9uLWhpZGUgLmNtcC10ZWFzZXJfX3RpdGxlLS1sYXN0d29yZDphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDRmYmM7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFzay1pbWFnZTogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvY2hldnJvbi1yaWdodC5zdmcjY2hldnJvbi1yaWdodC1pY29uLXcyNC12aWV3XCIpO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBtYXNrLXNpemU6IGNvdmVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgd2lkdGg6IHZhcigtLXYtaWNvbi1zaXplKTtcbiAgaGVpZ2h0OiB2YXIoLS12LWljb24tc2l6ZSk7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC50ZWFzZXJsaXN0LnRlYXNlci0tZGVzY3JpcHRpb24taGlkZSAuY21wLXRlYXNlcl9fdGl0bGUtLWxhc3R3b3JkOmFmdGVyIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzE2LXZpZXdcIik7XG4gIH1cbn1cbi50ZWFzZXJsaXN0LnRlYXNlci0tZGVzY3JpcHRpb24taGlkZSAuY21wLXRlYXNlcl9fdGl0bGUtLWxhc3R3b3JkOjphZnRlciB7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLW91dDtcbn1cbi50ZWFzZXJsaXN0LnRlYXNlci0tZGVzY3JpcHRpb24taGlkZSAuY21wLXRlYXNlcl9fZGVzY3JpcHRpb24ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1kZXNjcmlwdGlvbi1oaWRlIC5jbXAtdGVhc2VyX19saW5rTGFiZWwge1xuICBkaXNwbGF5OiBub25lO1xufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtdG9wIC5jbXAtdGVhc2VyX19vdmVybGF5LCAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC10b3AgLmNtcC10ZWFzZXJfX292ZXJsYXktLXNoYWRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlcl9fbGlua0xhYmVsIHtcbiAgY29sb3I6ICMwMDRmYmM7XG59XG4udGVhc2VybGlzdC50ZWFzZXItLWxheW91dC10b3AgLmNtcC10ZWFzZXJfX2xpbmtMYWJlbDphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDRmYmM7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFzay1pbWFnZTogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvY2hldnJvbi1yaWdodC5zdmcjY2hldnJvbi1yaWdodC1pY29uLXcyNC12aWV3XCIpO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBtYXNrLXNpemU6IGNvdmVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgd2lkdGg6IHZhcigtLXYtaWNvbi1zaXplKTtcbiAgaGVpZ2h0OiB2YXIoLS12LWljb24tc2l6ZSk7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlcl9fbGlua0xhYmVsOmFmdGVyIHtcbiAgICBtYXNrLWltYWdlOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzE2LXZpZXdcIik7XG4gIH1cbn1cbi50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlcl9fbGlua0xhYmVsOjphZnRlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cbi50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlcl9fbGluazpob3ZlciAuY21wLXRlYXNlcl9fY29udGVudCB7XG4gIHRyYW5zZm9ybTogbm9uZTtcbn1cbi50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlcl9fY29udGVudCB7XG4gIHBhZGRpbmc6IDFlbSAwO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICB0cmFuc2Zvcm06IG5vbmU7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG59XG4uY29udGFpbmVyX19iYXNlIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlcl9fY29udGVudCB7XG4gIHBhZGRpbmc6IDFlbTtcbn1cbi50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlcl9fZGVzY3JpcHRpb24sIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlcl9fdGl0bGUge1xuICBjb2xvcjogIzUzNTY1YTtcbn1cbi50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXRvcCAuY21wLXRlYXNlcl9fdGl0bGUtLWxhc3R3b3JkIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtdG9wIC5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiB7XG4gIG9wYWNpdHk6IDE7XG59XG4udGVhc2VybGlzdC50ZWFzZXItLWxheW91dC10b3AgLmNtcC10ZWFzZXIgLmNtcC1pbWFnZSB7XG4gIHBhZGRpbmctdG9wOiA1Ni40OCU7XG59XG4udGVhc2VybGlzdC50ZWFzZXItLWxheW91dC10b3AgLmFydGljbGVfX2hlYWRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjb2xvcjogI2E3YThhOTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC10b3AgLmFydGljbGVfX2hlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICB9XG59XG4udGVhc2VybGlzdC50ZWFzZXItLWxheW91dC10b3AgLmFydGljbGVfX3RpdGxlLS1sYXN0d29yZCB7XG4gIHBhZGRpbmctaW5saW5lLWVuZDogMjRweDtcbn1cbi50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXRvcCAuYXJ0aWNsZV9fdGl0bGUtLWxhc3R3b3JkOmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNGZiYztcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzI0LXZpZXdcIik7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stc2l6ZTogY292ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB3aWR0aDogdmFyKC0tdi1pY29uLXNpemUpO1xuICBoZWlnaHQ6IHZhcigtLXYtaWNvbi1zaXplKTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtdG9wIC5hcnRpY2xlX190aXRsZS0tbGFzdHdvcmQ6YWZ0ZXIge1xuICAgIG1hc2staW1hZ2U6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2NoZXZyb24tcmlnaHQuc3ZnI2NoZXZyb24tcmlnaHQtaWNvbi13MTYtdmlld1wiKTtcbiAgfVxufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtdG9wIC5hcnRpY2xlX190aXRsZS0tbGFzdHdvcmQ6OmFmdGVyIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgdHJhbnNpdGlvbjogcGFkZGluZy1sZWZ0IDAuM3MgZWFzZS1vdXQ7XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIG1hcmdpbi1pbmxpbmUtZW5kOiAtMzRweDtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA5NTlweCkge1xuICAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC10b3AgLmFydGljbGVfX3RpdGxlLS1sYXN0d29yZDo6YWZ0ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg0cHgpO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtdG9wIC5hcnRpY2xlX190aXRsZS0tbGFzdHdvcmQ6OmFmdGVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoM3B4KTtcbiAgfVxufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtdG9wIC5hcnRpY2xlX190YWcge1xuICB3aWR0aDogMTAwJTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC10b3AgLmFydGljbGVfX3RhZyB7XG4gICAgd2lkdGg6IDQwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgfVxufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtdG9wIC5hcnRpY2xlX19kZXRhaWxzIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtdG9wIC5hcnRpY2xlX19kZXRhaWxzIHtcbiAgICB3aWR0aDogNjAlO1xuICAgIHRleHQtYWxpZ246IGVuZDtcbiAgfVxufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtdG9wIC5hcnRpY2xlX190aW1lIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC10b3AgLmFydGljbGVfX3RpbWUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXRvcCAuYXJ0aWNsZV9fdGltZS0tbW9iaWxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtdG9wLm1vYmlsZS1ob3Jpem9udGFsLXNjcm9sbDpoYXMoLnRlYXNlcmxpc3RfX2xpc3QpIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gICAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgfVxuICAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC10b3AubW9iaWxlLWhvcml6b250YWwtc2Nyb2xsOmhhcygudGVhc2VybGlzdF9fbGlzdCkgOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIGhlaWdodDogNHB4O1xuICB9XG4gIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXRvcC5tb2JpbGUtaG9yaXpvbnRhbC1zY3JvbGw6aGFzKC50ZWFzZXJsaXN0X19saXN0KSA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2E3YThhOTtcbiAgfVxuICAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC10b3AubW9iaWxlLWhvcml6b250YWwtc2Nyb2xsOmhhcygudGVhc2VybGlzdF9fbGlzdCkgLnRlYXNlcmxpc3RfX2xpc3Qge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgZ2FwOiAwO1xuICB9XG4gIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXRvcC5tb2JpbGUtaG9yaXpvbnRhbC1zY3JvbGw6aGFzKC50ZWFzZXJsaXN0X19saXN0KSAudGVhc2VybGlzdF9fbGlzdDpoYXMoPiA6bnRoLWNoaWxkKG4rMykpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTZweDtcbiAgICBnYXA6IDE2cHg7XG4gIH1cbiAgLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtdG9wLm1vYmlsZS1ob3Jpem9udGFsLXNjcm9sbDpoYXMoLnRlYXNlcmxpc3RfX2xpc3QpIC50ZWFzZXJsaXN0X19saXN0Omhhcyg+IDpudGgtY2hpbGQobiszKSkgPiAqIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB3aWR0aDogOTIlO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC10b3AubW9iaWxlLWhvcml6b250YWwtc2Nyb2xsIC5jbXAtdGVhc2VyX19pdGVtLCAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC10b3AubW9iaWxlLWhvcml6b250YWwtc2Nyb2xsIC5jbXAtdGVhc2VyX19saW5rIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICB9XG4gIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXRvcC5tb2JpbGUtaG9yaXpvbnRhbC1zY3JvbGwgLmNtcC10ZWFzZXJfX2NvbnRlbnQge1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxufVxuLnRlYXNlcmxpc3QudGVhc2VybGlzdExheW91dC1jb2xzLS00LnRlYXNlci0tbGF5b3V0LXRvcCAuYXJ0aWNsZV9faGVhZGVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4udGVhc2VybGlzdC50ZWFzZXJsaXN0TGF5b3V0LWNvbHMtLTQudGVhc2VyLS1sYXlvdXQtdG9wIC5hcnRpY2xlX190YWcsIC50ZWFzZXJsaXN0LnRlYXNlcmxpc3RMYXlvdXQtY29scy0tNC50ZWFzZXItLWxheW91dC10b3AgLmFydGljbGVfX2RldGFpbHMge1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbi50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXJpZ2h0IC5jbXAtdGVhc2VyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmNtcC10ZWFzZXIge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgfVxufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmNtcC10ZWFzZXJfX2ltYWdlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXJpZ2h0IC5jbXAtdGVhc2VyX19pbWFnZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC1yaWdodCAuY21wLXRlYXNlcl9faW1hZ2Uge1xuICAgIHdpZHRoOiAzMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5NTlweCkge1xuICAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC1yaWdodCAuY21wLXRlYXNlcl9faW1hZ2Uge1xuICAgIHdpZHRoOiA1MCU7XG4gIH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC1yaWdodCAuY21wLXRlYXNlciAuY21wLWltYWdlIHtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC1yaWdodCAuY21wLXRlYXNlciAuY21wLWltYWdlIHtcbiAgICBwYWRkaW5nLXRvcDogNTYuNDglO1xuICB9XG59XG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmNtcC10ZWFzZXIgLmNtcC1pbWFnZSAuY21wLWltYWdlX19pbWFnZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG59XG4udGVhc2VybGlzdC50ZWFzZXItLWxheW91dC1yaWdodCAuY21wLXRlYXNlcl9fb3ZlcmxheSwgLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmNtcC10ZWFzZXJfX292ZXJsYXktLXNoYWRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXJpZ2h0IC5jbXAtdGVhc2VyX19saW5rTGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLW1lZGl1bSk7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDEycHggMzJweDtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgYm9yZGVyOiAxcHggc29saWQgIzUzNTY1YTtcbiAgY29sb3I6ICM1MzU2NWE7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMXM7XG4gIG1heC13aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tdi1pY29uLXNpemUpKTtcbn1cbi50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXJpZ2h0IC5jbXAtdGVhc2VyX19saW5rTGFiZWw6aG92ZXIsIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXJpZ2h0IC5jbXAtdGVhc2VyX19saW5rTGFiZWw6Zm9jdXMge1xuICBiYWNrZ3JvdW5kOiAjZjdmN2Y3O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiAjNTM1NjVhO1xufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmNtcC10ZWFzZXJfX2xpbmtMYWJlbDpob3Zlcjo6YWZ0ZXIsIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXJpZ2h0IC5jbXAtdGVhc2VyX19saW5rTGFiZWw6Zm9jdXM6OmFmdGVyIHtcbiAgdHJhbnNmb3JtOiB2YXIoLS1idXR0b24taWNvbi10cmFuc2Zvcm0taG92ZXIpO1xufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmNtcC10ZWFzZXJfX2xpbmtMYWJlbDphY3RpdmUge1xuICBiYWNrZ3JvdW5kOiAjZTFkZmRkO1xufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmNtcC10ZWFzZXJfX2xpbmtMYWJlbDphY3RpdmUsIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXJpZ2h0IC5jbXAtdGVhc2VyX19saW5rTGFiZWw6Zm9jdXMsIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXJpZ2h0IC5jbXAtdGVhc2VyX19saW5rTGFiZWw6Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCAjMDA0MWEzO1xuICBvdXRsaW5lLW9mZnNldDogM3B4O1xufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmNtcC10ZWFzZXJfX2xpbmtMYWJlbDo6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHZhcigtLWJ1dHRvbi1pY29uLXRyYW5zZm9ybSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0O1xufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmNtcC10ZWFzZXJfX2xpbmtMYWJlbDpkaXNhYmxlZCwgLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmNtcC10ZWFzZXJfX2xpbmtMYWJlbC5kaXNhYmxlZCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM4ODhiOGQ7XG4gIGNvbG9yOiAjODg4YjhkO1xufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmNtcC10ZWFzZXJfX2xpbmtMYWJlbDphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MzU2NWE7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFzay1pbWFnZTogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvY2hldnJvbi1yaWdodC5zdmcjY2hldnJvbi1yaWdodC1pY29uLXcyNC12aWV3XCIpO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBtYXNrLXNpemU6IGNvdmVyO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgd2lkdGg6IHZhcigtLXYtaWNvbi1zaXplKTtcbiAgaGVpZ2h0OiB2YXIoLS12LWljb24tc2l6ZSk7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXJpZ2h0IC5jbXAtdGVhc2VyX19saW5rTGFiZWw6YWZ0ZXIge1xuICAgIG1hc2staW1hZ2U6IHVybChcIi9jb250ZW50L2RhbS92b2x2by1tZWRpYS9saXN0LWljb25zL2NoZXZyb24tcmlnaHQuc3ZnI2NoZXZyb24tcmlnaHQtaWNvbi13MTYtdmlld1wiKTtcbiAgfVxufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmNtcC10ZWFzZXJfX2xpbmtMYWJlbDo6YWZ0ZXIge1xuICBjb2xvcjogIzAwMDtcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXJpZ2h0IC5jbXAtdGVhc2VyX19saW5rTGFiZWw6OmFmdGVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC1yaWdodCAuY21wLXRlYXNlcl9fbGlua0xhYmVsOmhvdmVyOjphZnRlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoNXB4LCAtMXB4KTtcbiAgfVxufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmNtcC10ZWFzZXJfX2xpbms6aG92ZXIgLmNtcC10ZWFzZXJfX2NvbnRlbnQge1xuICB0cmFuc2Zvcm06IG5vbmU7XG59XG4udGVhc2VybGlzdC50ZWFzZXItLWxheW91dC1yaWdodCAuY21wLXRlYXNlcl9fY29udGVudCB7XG4gIHRyYW5zZm9ybTogbm9uZTtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgcGFkZGluZzogMWVtO1xuICBwb2ludGVyLWV2ZW50czogYXV0bztcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC1yaWdodCAuY21wLXRlYXNlcl9fY29udGVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiA3MCU7XG4gICAgaGVpZ2h0OiBmaXQtY29udGVudDtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogOTU5cHgpIHtcbiAgLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmNtcC10ZWFzZXJfX2NvbnRlbnQge1xuICAgIHdpZHRoOiA1MCU7XG4gIH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA5NTlweCkge1xuICAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC1yaWdodCAuY21wLXRlYXNlcl9fY29udGVudCAuY21wLXRlYXNlcl9fbGlua0xhYmVsOjphZnRlciB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbn1cbi50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXJpZ2h0IC5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiwgLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmNtcC10ZWFzZXJfX3RpdGxlIHtcbiAgY29sb3I6ICM1MzU2NWE7XG59XG4udGVhc2VybGlzdC50ZWFzZXItLWxheW91dC1yaWdodCAuY21wLXRlYXNlcl9fZGVzY3JpcHRpb24ge1xuICBvcGFjaXR5OiAxO1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXJpZ2h0IC5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiB7XG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhbHVlLW5vLXZlbmRvci1wcmVmaXggKi9cbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDQ7XG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvcGVydHktbm8tdW5rbm93biAqL1xuICAgIGJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcGFkZGluZy1ib3R0b206IDFweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbiAgLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmNtcC10ZWFzZXJfX2Rlc2NyaXB0aW9uOjphZnRlciB7XG4gICAgaGVpZ2h0OiAxLjJlbTtcbiAgfVxufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmFydGljbGVfX2hlYWRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjb2xvcjogI2E3YThhOTtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC1yaWdodCAuYXJ0aWNsZV9faGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgfVxufVxuLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmFydGljbGVfX3RpdGxlLS1sYXN0d29yZCB7XG4gIG1hcmdpbi1ibG9jay1lbmQ6IDA7XG59XG4udGVhc2VybGlzdC50ZWFzZXItLWxheW91dC1yaWdodCAuYXJ0aWNsZV9fdGl0bGUtLWxhc3R3b3JkOmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNGZiYztcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzI0LXZpZXdcIik7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stc2l6ZTogY292ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB3aWR0aDogdmFyKC0tdi1pY29uLXNpemUpO1xuICBoZWlnaHQ6IHZhcigtLXYtaWNvbi1zaXplKTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmFydGljbGVfX3RpdGxlLS1sYXN0d29yZDphZnRlciB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvY2hldnJvbi1yaWdodC5zdmcjY2hldnJvbi1yaWdodC1pY29uLXcxNi12aWV3XCIpO1xuICB9XG59XG4udGVhc2VybGlzdC50ZWFzZXItLWxheW91dC1yaWdodCAuYXJ0aWNsZV9fdGl0bGUtLWxhc3R3b3JkOjphZnRlciB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIHRyYW5zaXRpb246IHBhZGRpbmctbGVmdCAwLjNzIGVhc2Utb3V0O1xuICB3aWR0aDogMjRweCAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDI0cHggIWltcG9ydGFudDtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA5NTlweCkge1xuICAudGVhc2VybGlzdC50ZWFzZXItLWxheW91dC1yaWdodCAuYXJ0aWNsZV9fdGl0bGUtLWxhc3R3b3JkOjphZnRlciB7XG4gICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXJpZ2h0IC5hcnRpY2xlX190aXRsZS0tbGFzdHdvcmQ6OmFmdGVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoM3B4KTtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC50ZWFzZXJsaXN0LnRlYXNlci0tbGF5b3V0LXJpZ2h0IC5hcnRpY2xlX19kZXRhaWxzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAwO1xuICB9XG59XG4udGVhc2VybGlzdC50ZWFzZXItLWxheW91dC1yaWdodCAuYXJ0aWNsZV9fdGltZSwgLnRlYXNlcmxpc3QudGVhc2VyLS1sYXlvdXQtcmlnaHQgLmFydGljbGVfX3RpbWUtLW1vYmlsZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5AbWVkaWEgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gIC5jb250YWluZXJfX2Jhc2UuY29udGFpbmVyLS1mdWxsV2lkdGggLmNtcC1jb250YWluZXIgPiAudGVhc2VybGlzdCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xNXB4O1xuICAgIG1hcmdpbi1yaWdodDogLTE1cHg7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLmNvbnRhaW5lcl9fYmFzZS5jb250YWluZXItLWZ1bGxXaWR0aCAuY21wLWNvbnRhaW5lciA+IC50ZWFzZXJsaXN0IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gICAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgfVxufVxuXG4uY29sbGFnZSAudGVhc2VybGlzdCB7XG4gIGhlaWdodDogMTAwJTtcbiAgcGFkZGluZzogMTRweCAyMHB4O1xufVxuLmNvbGxhZ2UgLnRlYXNlcmxpc3RfX3RpdGxlIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLW1lZGl1bSk7XG4gIGZvbnQtc2l6ZTogMjFweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxzLWRlZmF1bHQpO1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjb2xvcjogI2ZmZjtcbiAgei1pbmRleDogMTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmNvbGxhZ2UgLnRlYXNlcmxpc3RfX3RpdGxlIHtcbiAgICBmb250LXNpemU6IDI0cHg7XG4gIH1cbn1cbi5jb2xsYWdlIC50ZWFzZXJsaXN0X19saXN0IHtcbiAgbWFyZ2luOiAwO1xufVxuLmNvbGxhZ2UgLnRlYXNlcmxpc3QgLmNtcC10ZWFzZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuLmNvbGxhZ2UgLnRlYXNlcmxpc3QgLmNtcC10ZWFzZXJfX292ZXJsYXksIC5jb2xsYWdlIC50ZWFzZXJsaXN0IC5jbXAtdGVhc2VyX19kZXNjcmlwdGlvbiwgLmNvbGxhZ2UgLnRlYXNlcmxpc3QgLmNtcC10ZWFzZXJfX2xpbmtMYWJlbCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uY29sbGFnZSAudGVhc2VybGlzdCAuY21wLXRlYXNlciAuY21wLWltYWdlIHtcbiAgcG9zaXRpb246IGluaXRpYWw7XG59XG4uY29sbGFnZSAudGVhc2VybGlzdCAuY21wLXRlYXNlcl9faXRlbTpudGgtb2YtdHlwZShuKzIpIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5jb2xsYWdlIC50ZWFzZXJsaXN0IC5jbXAtdGVhc2VyX19saW5rIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbn1cbi5jb2xsYWdlIC50ZWFzZXJsaXN0IC5jbXAtdGVhc2VyX19saW5rOmhvdmVyIC5jbXAtdGVhc2VyX19jb250ZW50IHtcbiAgdHJhbnNmb3JtOiBub25lO1xufVxuLmNvbGxhZ2UgLnRlYXNlcmxpc3QgLmNtcC10ZWFzZXJfX2NvbnRlbnQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogYXV0bztcbiAgcGFkZGluZzogMCAyMHB4IDdweDtcbiAgdHJhbnNmb3JtOiBub25lO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuLmNvbGxhZ2UgLnRlYXNlcmxpc3QgLmNtcC10ZWFzZXJfX3RpdGxlIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLXJlZ3VsYXIpO1xuICBmb250LXNpemU6IDI0cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1scy1kZWZhdWx0KTtcbiAgY29sb3I6ICM1MzU2NWE7XG59XG4uY29sbGFnZSAudGVhc2VybGlzdCAuY21wLXRlYXNlciAuY21wLXRlYXNlcl9fY29udGVudCAuYXJ0aWNsZV9fdGl0bGUge1xuICBsaW5lLWhlaWdodDogMTtcbn1cbi5jb2xsYWdlIC50ZWFzZXJsaXN0IC5hcnRpY2xlX190YWcsIC5jb2xsYWdlIC50ZWFzZXJsaXN0IC5hcnRpY2xlX190aW1lLCAuY29sbGFnZSAudGVhc2VybGlzdCAuYXJ0aWNsZV9fdGltZS0tbW9iaWxlLCAuY29sbGFnZSAudGVhc2VybGlzdCAuYXJ0aWNsZV9fZGF0ZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uY29sbGFnZSAudGVhc2VybGlzdCAuYXJ0aWNsZV9fZGV0YWlscyB7XG4gIGNvbG9yOiAjNTM1NjVhO1xufVxuLmNvbGxhZ2UgLnRlYXNlcmxpc3QgLmFydGljbGVfX2hlYWRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvcmRlcjogMztcbn1cbi5jb2xsYWdlIC50ZWFzZXJsaXN0IC5hcnRpY2xlX19kYXRlLS1sb25nIHtcbiAgZGlzcGxheTogaW5saW5lO1xufVxuLmNvbGxhZ2UgLnRlYXNlcmxpc3QgLmFydGljbGVfX3RpdGxlLS1sYXN0d29yZCB7XG4gIHBhZGRpbmctaW5saW5lLWVuZDogMTBweDtcbiAgY29sb3I6ICNmZmY7XG59XG4uY29sbGFnZSAudGVhc2VybGlzdCAuYXJ0aWNsZV9fdGl0bGUtLWxhc3R3b3JkOmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNGZiYztcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXNrLWltYWdlOiB1cmwoXCIvY29udGVudC9kYW0vdm9sdm8tbWVkaWEvbGlzdC1pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZyNjaGV2cm9uLXJpZ2h0LWljb24tdzI0LXZpZXdcIik7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gIG1hc2stc2l6ZTogY292ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB3aWR0aDogdmFyKC0tdi1pY29uLXNpemUpO1xuICBoZWlnaHQ6IHZhcigtLXYtaWNvbi1zaXplKTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLmNvbGxhZ2UgLnRlYXNlcmxpc3QgLmFydGljbGVfX3RpdGxlLS1sYXN0d29yZDphZnRlciB7XG4gICAgbWFzay1pbWFnZTogdXJsKFwiL2NvbnRlbnQvZGFtL3ZvbHZvLW1lZGlhL2xpc3QtaWNvbnMvY2hldnJvbi1yaWdodC5zdmcjY2hldnJvbi1yaWdodC1pY29uLXcxNi12aWV3XCIpO1xuICB9XG59XG4uY29sbGFnZSAudGVhc2VybGlzdCAuYXJ0aWNsZV9fdGl0bGUtLWxhc3R3b3JkOjphZnRlciB7XG4gIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDVweDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgdHJhbnNpdGlvbjogcGFkZGluZy1pbmxpbmUtc3RhcnQgMC4zcyBlYXNlLW91dDtcbn1cbi5jb2xsYWdlIC5jbXAtY29udGFpbmVyLS1iZyArIC5jbXAtY29udGFpbmVyIC50ZWFzZXJsaXN0X190aXRsZSxcbi5jb2xsYWdlIC5jbXAtY29udGFpbmVyLS1iZyArIC5jbXAtY29udGFpbmVyIC5jbXAtdGVhc2VyX190aXRsZSxcbi5jb2xsYWdlIC5jbXAtY29udGFpbmVyLS1iZyArIC5jbXAtY29udGFpbmVyIC5hcnRpY2xlX19kZXRhaWxzIHtcbiAgY29sb3I6ICNmZmY7XG59IixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF19 */