@charset "UTF-8";
/*! @author Bilal Cinarli */
/** -------------------------------------------
    Project Styles
    ------------------------------------------- **/
/**
 * First Import Settings
 * These settings are defines simple color and sizes for Melange defaults
 * Also some settings such as `$support-for-ie8` etc. are used in Caffeine mixins
 * You are free to extend the settings for system wide use.
 */
/* @author Bilal Cinarli */
/**
 * System wide settings
 *
 * All the imported values are set to "null" if they have a default value.
 * So if you want to use them as default, do not change to null value.
 */
/** -------------------------------------------
    Settings for default overwrites and
    GUI related variables
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
    System supports
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
    Default class/definition names
    ------------------------------------------- **/
/**
 * Name space prefix
 * Adds a defined namespace prefix to generated class names
 */
/**
 * Class names for grid
 * @default $row-name: 'row'
 * @default $column-name: 'column'
 * @default $column-name-plural: 'columns'
 */
/**
 * Button names for action
 *
 * @default $action-button: '-action'; // only used for similar class selector
 * @default $primary-button: 'primary-action';
 * @default $secondary-button: 'secondary-action';
 * @default $tertiary-button: 'tertiary-action';
 * @default $cancel-button: 'cancel-action';
 */
/**
 * Folders
 * Not actually a namespace but folder names also have different preferences
 * @default $images: '../images/'; relative to styles folder
 * @default $retina-suffix: '@2x'
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Animation Related Variables
    ------------------------------------------- **/
/**
 * Duration
 * 
 * Duration time for transition animations
 * @default .4s
 */
/**
 * Easing
 *
 * Easing style
 * @default ease
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Size Definitions
    ------------------------------------------- **/
/**
 * Spacing in element
 *
 * Sets the padding sizes for an element
 * @default $base-spacing 1em
 * @default $base-input-spacing 5px
 */
/**
 * Grid gutter and columns
 *
 * Defines the grid gutter size and column count in a row
 * Grid columns floated by default. But it is optional whether float or not
 * for percentage widths.
 * @default $base-gutter: 20px
 * @default $base-grid-columns: 18
 * @default $base-float-widths: true
 */
/**
 * Border Widths
 *
 * Applied border with for input fields and table borders
 * @default $base-border-width: 1px;
 */
/**
 * Content Widths
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Fonts
    ------------------------------------------- **/
/**
 * Global font definitions
 * @default $base-font-size: 16px
 * @default $base-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif
 * @default $base-line-height: 1.5
 * @default $base-font-icon: null
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Colors
    ------------------------------------------- **/
/**
 * Named Colors
 *
 * Some named colors for inheriting colors over different variables
 * @default $color-primary    : #009bdc;
 * @default $color-secondary  : #67af00;
 * @default $color-tertiary   : #ffa900;
 * @default $color-cancel     : #e87352;
 * @default $color-error      : $color-cancel;
 * @default $color-text       : #4d4d4d;
 * @default $color-light-gray : #e5e5e5;
 * @default $color-gray       : #c6c6c6;
 * @default $color-dark-gray  : #a6a6a6;
 * @default $color-white      : #fff;
 * @default $color-black      : #000;
 */
/**
 * Simple colors for general styling
 * @default $base-color: #222
 */
/**
 * Border Colors
 *
 * Colors applied to border in focus, disabled, readonly and stationary state
 * @default $base-border-color: #c6c6c6;
 * @default $base-border-highlight: #a6a6a6;
 * @default $base-border-disabled: #e9e9e9;
 * @default $base-border-readonly: #c6c6c6;
 */
/**
 * Field Background Colors
 *
 * Color applied to field background in focus, disabled, readonly and stationary state
 * @default $base-field-background: #fff;
 * @default $base-field-highlight: #fff;
 * @default $base-field-disabled: #c6c6c6;
 * @default $base-field-readonly: #e5e5e5;
 */
/**
 * Button colors
 */
/**
 * Default Button
 *
 * Unstyled, normal button
 * @default $base-button-color: #e5e5e5;
 * @default $base-button-text-color: #222;
 */
/**
 * Primary Action Button
 *
 * Maybe used for call-to-action button or/and save/submit buttons in forms
 * @default $base-primary-color: #009bdc;
 * @default $base-primary-text-color: #fff;
 */
/**
 * Secondary Action Button
 *
 * Useful for indication secondary action in a form near the primary action button
 * @default $base-secondary-color: #67af00;
 * @default $base-secondary-text-color: #fff;
 */
/**
 * Tertiary Action Button
 *
 * Useful for actions whether they are not fit for primary or secondary
 * @default $base-tertiary-color: #ffa900;
 * @default $base-tertiary-text-color: #fff;
 */
/**
 * Cancel Action Button
 *
 * Simply used for cancel button for a form or call-to-action, confirmation etc.
 * @default $base-cancel-color: #e87352;
 * @default $base-cancel-text-color: #fff;
 */
/**
 * Second Import Caffeine
 * Caffeine is a Sass based mixin/function library (see: https://github.com/bcinarli/caffeine)
 * Mostly Melange is not depended on Caffeine.
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Caffeine 
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
    System Functions for internal usage
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
    Generic Functions
    ------------------------------------------- **/
/**
  * Remove units
  */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Text Related Functions
    ------------------------------------------- **/
/**
  * Rem to PX
  */
/**
 * REM converter
 * in style's config, we hope to have a base-font-size variable,
 * if not, we define it according to standart html font-size
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    String Manipulation Functions
    ------------------------------------------- **/
/**
  * String Replacement
  * Mimics the PHP's str_replace function
  * @param {string} $search   The value being searched for, otherwise known as the needle
  * @param {string} $replace  The replacement value that replaces found search values
  * @param {string} $subject  The string being searched and replaced on, otherwise known as the haystack.
  */
/**
  * Case insensitive String Replacement
  * Mimics the PHP's str_ireplace function
  * @param {string} $search   The value being searched for, otherwise known as the needle
  * @param {string} $replace  The replacement value that replaces found search values
  * @param {string} $subject  The string being searched and replaced on, otherwise known as the haystack.
  */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Mixins for Internal Melange Usage
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
    Generic Mixins
    ------------------------------------------- **/
/**
 * Adds prefixed version of a property according to listed vendors
 */
/**
 * Adds prefixed version of values in a property
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Text Related Mixins
    ------------------------------------------- **/
/**
 * Fontface
 *
 * http://caniuse.com/#search=font-face
 * https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face
 * For modern approach, woff and ttf format is supported all major browsers. If you need to support
 * Internet Explorer 8, with setting "$support-for-ie8" variable to "true", the eot file format
 * also added to mixin output. You also need to provide related file formats in your fonts folder.
 *
 * @font-face {
              [ font-family: <family-name>; ]?
           || [ src: [ <uri> [format(<string>#)]? | <font-face-name> ]#; ]?
           || [ unicode-range: <urange>#; ]?
           || [ font-variant: <font-variant>; ]?
           || [ font-feature-settings: normal|<feature-tag-value>#; ]?
           || [ font-stretch: <font-stretch>; ]?
           || [ font-weight: <weight>; ]?
           || [ font-style: <style>; ]?
   }
 */
/**
 * fontface
 * This mixin is a callback support for very early versions of Caffeine
 */
/**
  * Font Icon
  *
  * Outputs an icon font definition with supporting class attribute selectors.
  * For preventing font misuse for the element, the class selector applied to :before pseuode element
  * instead of the element itself.
  */
/**
 * Font-Size callback
 * 
 * For modern usage, converts and output font-size with rem units.
 */
/**
 * Disable Select
 * It is useful for mobil applications
 * Prevents text selection when swipe or double click
 * http://caniuse.com/#search=user-select
 * https://developer.mozilla.org/en-US/docs/Web/CSS/user-select
 * Formal syntax: none | text | all | element
 * Current spec, all vendors need prefixing
 */
/**
 * Selection
 *
 * The ::selection CSS pseudo-element applies rules to the portion of a document 
 * that has been highlighted (e.g., selected with the mouse or another pointing device) by the user.
 * http://caniuse.com/#search=selection
 * https://developer.mozilla.org/en-US/docs/Web/CSS/::selection
 * Formal syntax: content
 * Only a small part of text related properties supports. You can change the following properties in selectionsİ
 * color, background-color, cursor, outline, text-decoration, text-emphasis-color and text-shadow.
 *
 * Notes:
 * text-shadow in ::selection is supported by Chrome, Safari and Firefox 17+.
 *
 * The ::selection CSS pseudo-element was drafted for CSS Selectors Level 3 
 * but removed before it reached the Recommendation status. It was readded as part of the Pseudo-Elements Level 4 draft.
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Size Related Mixins
    ------------------------------------------- **/
/**
 * Square or desired width-height for an element
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    CSS3 Related Mixins
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
    Background Gradient Mixins
    ------------------------------------------- **/
/**
 * Simple Linear gradient
 * Gets the linear gradient content as a parameter and outputs the prefixed version.
 * For old browsers do not forget to add fallback color/image before mixin
 * Uses new linear gradient version. Not supporting Safari 5 or older and IE9 and older versions
 *
 * @param string $content
 */
/**
 * Simple Radial gradient
 * Gets the radial gradient content as a parameter and outputs the prefixed version.
 * For old browsers do not forget to add fallback color/image before mixin
 * Uses new linear gradient version. Not supporting Safari 5 or older and IE9 and older versions
 *
 * @param $content
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Text Gradient
    ------------------------------------------- **/
/**
 * Gradient Text Color
 * Add a gradient color to the text
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Box Shadow
    ------------------------------------------- **/
/**
 * Simple Box shadow
 *
 * @param $content: box-shadow content
 * http://caniuse.com/#search=box-shadow 
 * current spec, only Android browser 2.3 need -webkit prefix
 * You can use standart CSS box shadow definition
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Transition Related Mixins
    ------------------------------------------- **/
/**
 * CSS Transition
 *
 * Outputs CSS3 transition code with defined prefixes
 * http://caniuse.com/#search=transition
 * https://developer.mozilla.org/en-US/docs/Web/CSS/transition
 * Formal syntax: [ none | <single-transition-property> ] || <time> || <timing-function> || <time>
 * current spec, older Android browsers and Safari 5.1 need -webkit
 */
/**
 * CSS Transition Delay
 * Outputs CSS3 transition-delay code with defined pferixes
 * https://developer.mozilla.org/en-US/docs/Web/CSS/transition-delay
 * Formal syntax: <time>#
 */
/**
 * CSS Transition Duration
 * Outputs CSS3 transition-duration code with defined pferixes
 * https://developer.mozilla.org/en-US/docs/Web/CSS/transition-duration
 * Formal syntax: <time>#
 */
/**
 * CSS Transition Property
 * Outputs CSS3 transition-property code with defined pferixes
 * https://developer.mozilla.org/en-US/docs/Web/CSS/transition-property
 * Formal syntax: none | <single-transition-property>#  [ ‘,’ <single-transition-property># ]*
 */
/**
 * CSS Transition Timing
 * Outputs CSS3 transition-timing-function code with defined pferixes
 * https://developer.mozilla.org/en-US/docs/Web/CSS/transition-timing-function
 * Formal syntax: <timing-function>#
 */
/**
 * App Transition
 *
 * General transition definition for app
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Transform Related Mixins
    ------------------------------------------- **/
/**
 * CSS Transform
 *
 * Outputs CSS3 tranform code with defined prefixes
 * http://caniuse.com/#search=transform
 * https://developer.mozilla.org/en-US/docs/Web/CSS/transform
 * Formal syntax: none | <transform-function>+
 * For transform functions see: https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function
 * current spec, Safari, Android browser and IE9 need vendor prefix
 */
/**
 * CSS Transform Origin
 *
 * Outputs CSS3 tranform-origin code with defined prefixes
 * http://caniuse.com/#search=transform
 * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-origin
 * Formal syntax: [ <percentage> | <length> | left | center | right | top | bottom] | [ [ <percentage> | <length> | left | center | right ] && [ <percentage> | <length> | top | center | bottom ] ] <length>?
 * current spec, Safari, Android browser and IE9 need vendor prefix
 */
/**
 * CSS Transform Style
 *
 * Outputs CSS3 tranform-style code with defined prefixes
 * http://caniuse.com/#search=transform
 * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-style
 * Formal syntax: flat | preserve-3d | inherit
 * current spec, IE is not supported, webkit browsers need prefixing
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Animation Related Mixins
    ------------------------------------------- **/
/**
 * CSS Animation
 *
 * Outputs CSS3 animation code with defined prefixes
 * http://caniuse.com/#search=css3%20animation
 * https://developer.mozilla.org/en-US/docs/Web/CSS/animation
 * Formal syntax: <single-animation-name> || <time> || <timing-function> || <time> || <single-animation-iteration-count> || <single-animation-direction> || <single-animation-fill-mode> || <single-animation-play-state>
 * current spec, webkit browsers need prefixing
 */
/**
 * CSS Animation Delay
 *
 * Outputs CSS3 animation-delay code with defined prefixes
 * http://caniuse.com/#search=css3%20animation
 * https://developer.mozilla.org/en-US/docs/Web/CSS/animation-delay
 * Formal syntax: <time>#
 * current spec, webkit browsers need prefixing
 */
/**
 * CSS Animation Direction
 *
 * Outputs CSS3 animation-direction code with defined prefixes
 * http://caniuse.com/#search=css3%20animation
 * https://developer.mozilla.org/en-US/docs/Web/CSS/animation-direction
 * Formal syntax: <single-animation-direction>#
 * current spec, webkit browsers need prefixing
 */
/**
 * CSS Animation Duration
 *
 * Outputs CSS3 animation-duration code with defined prefixes
 * http://caniuse.com/#search=css3%20animation
 * https://developer.mozilla.org/en-US/docs/Web/CSS/animation-duration
 * Formal syntax: <time>#
 * current spec, webkit browsers need prefixing
 */
/**
 * CSS Animation Fill Mode
 *
 * Outputs CSS3 animation-fill-mode code with defined prefixes
 * http://caniuse.com/#search=css3%20animation
 * https://developer.mozilla.org/en-US/docs/Web/CSS/animation-fill-mode
 * Formal syntax: <single-animation-fill-mode>#
 * current spec, webkit browsers need prefixing
 */
/**
 * CSS Animation Iteration Count
 *
 * Outputs CSS3 animation-iteration-count code with defined prefixes
 * http://caniuse.com/#search=css3%20animation
 * https://developer.mozilla.org/en-US/docs/Web/CSS/animation-iteration-count
 * Formal syntax: <single-animation-iteration-count>#
 * current spec, webkit browsers need prefixing
 */
/**
 * CSS Animation Name
 *
 * Outputs CSS3 animation-name code with defined prefixes
 * http://caniuse.com/#search=css3%20animation
 * https://developer.mozilla.org/en-US/docs/Web/CSS/animation-name
 * Formal syntax: <single-animation-name>#
 * current spec, webkit browsers need prefixing
 */
/**
 * CSS Animation Play State
 *
 * Outputs CSS3 animation-play-state code with defined prefixes
 * http://caniuse.com/#search=css3%20animation
 * https://developer.mozilla.org/en-US/docs/Web/CSS/animation-play-state
 * Formal syntax: <single-animation-play-state>#
 * current spec, webkit browsers need prefixing
 */
/**
 * CSS Animation Timing Function
 *
 * Outputs CSS3 animation-timing-function code with defined prefixes
 * http://caniuse.com/#search=css3%20animation
 * https://developer.mozilla.org/en-US/docs/Web/CSS/animation-timing-function
 * Formal syntax: <single-animation-timing-function>#
 * current spec, webkit browsers need prefixing
 */
/**
 * CSS Keyframes
 *
 * Outputs CSS3 keyframes code with defined prefixes
 * http://caniuse.com/#search=keyframes
 * https://developer.mozilla.org/en-US/docs/Web/CSS/@keyframes
 * @keyframes <identifier> {
 * 	[ [ from | to | <percentage> ] [, from | to | <percentage> ]* block ]*
 * }
 * current spec, webkit browsers need prefixing
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Columns Related Mixins
    ------------------------------------------- **/
/**
 * CSS Columns
 *
 * Outputs CSS3 Columns with defined prefixes
 * http://caniuse.com/#search=column
 * https://developer.mozilla.org/en-US/docs/Web/CSS/columns
 * Formal syntax: <'column-width'> || <'column-count'>
 * current spec, except IE, all browsers need vendor prefix either -moz or -webkit
 */
/**
 * CSS Column Count
 *
 * Outputs CSS3 Column Count
 * http://caniuse.com/#search=column
 * https://developer.mozilla.org/en-US/docs/Web/CSS/column-count
 * Formal syntax: <number> | auto
 * current spec, except IE, all browsers need vendor prefix either -moz or -webkit
 */
/**
 * CSS Column Width
 *
 * Outputs CSS3 Column Width
 * http://caniuse.com/#search=column
 * https://developer.mozilla.org/en-US/docs/Web/CSS/column-width
 * Formal syntax: <length> | auto
 * current spec, except IE, all browsers need vendor prefix either -moz or -webkit
 */
/**
 * CSS Column Gap
 *
 * Outputs CSS3 Column Gap
 * http://caniuse.com/#search=column
 * https://developer.mozilla.org/en-US/docs/Web/CSS/column-gap
 * Formal syntax: <length> | normal
 * current spec, except IE, all browsers need vendor prefix either -moz or -webkit
 */
/**
 * CSS Column Rule
 *
 * Outputs CSS3 Column Rule, shorthand definition for column rule styles
 * http://caniuse.com/#search=column
 * https://developer.mozilla.org/en-US/docs/Web/CSS/column-rule
 * Formal syntax: <'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>
 * current spec, except IE, all browsers need vendor prefix either -moz or -webkit
 */
/**
 * CSS Column Rule Color
 *
 * Outputs CSS3 Column Rule Color
 * http://caniuse.com/#search=column
 * https://developer.mozilla.org/en-US/docs/Web/CSS/column-rule-color
 * Formal syntax: <color>
 * current spec, except IE, all browsers need vendor prefix either -moz or -webkit
 */
/**
 * CSS Column Rule Style
 *
 * Outputs CSS3 Column Rule Style
 * http://caniuse.com/#search=column
 * https://developer.mozilla.org/en-US/docs/Web/CSS/column-rule-style
 * Formal syntax: <style>
 * current spec, except IE, all browsers need vendor prefix either -moz or -webkit
 */
/**
 * CSS Column Rule Width
 *
 * Outputs CSS3 Column Rule Width
 * http://caniuse.com/#search=column
 * https://developer.mozilla.org/en-US/docs/Web/CSS/column-rule-width
 * Formal syntax: <br-width>
 * Available values: thin || medium || thick || number px || number em
 * current spec, except IE, all browsers need vendor prefix either -moz or -webkit
 */
/**
 * CSS Column Span
 *
 * Outputs CSS3 Column Span
 * http://caniuse.com/#search=column
 * https://developer.mozilla.org/en-US/docs/Web/CSS/column-span
 * Formal syntax: none | all
 * Currently, except firefox, all vendors supporting this feature. Webkit browsers need prefix
 */
/**
 * CSS Column Fill
 *
 * Outputs CSS3 Column Fill
 * https://developer.mozilla.org/en-US/docs/Web/CSS/column-fill
 * Formal syntax: auto | balance
 * Currently only firefox supports
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Flex Mixins
    ------------------------------------------- **/
/**
 * CSS Flex
 *
 * Outputs Flex code with defined prefixes
 * http://caniuse.com/#search=flex
 * https://developer.mozilla.org/en-US/docs/Web/CSS/flex
 * Formal syntax: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
 * current spec, webkit browsers need prefixing
 */
/**
 * CSS Flex Basis
 *
 * Outputs Flex-Basis code with defined prefixes
 * http://caniuse.com/#search=flex
 * https://developer.mozilla.org/en-US/docs/Web/CSS/flex-basis
 * Formal syntax: content | <'width'>
 * Initial Value: auto
 * current spec, webkit browsers need prefixing, however Safari is not supporting this feature
 *
 * Notes
 * When a non-auto flex-basis is specified, Internet Explorer 10-11 (but not 12+) always 
 * uses a content-box box model to calculate the size of a flex item, even if 
 * box-sizing: border-box is applied to the element.
 *
 */
/**
 * CSS Flex Direction
 *
 * Outputs Flex-Direction code with defined prefixes
 * http://caniuse.com/#search=flex
 * https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction
 * Formal syntax: content | [row | row-reverse | column | column-reverse]
 * current spec, webkit browsers need prefixing, however Safari is not supporting this feature
 */
/**
 * CSS Flex Grow
 *
 * Outputs Flex-Grow code with defined prefixes
 * http://caniuse.com/#search=flex
 * https://developer.mozilla.org/en-US/docs/Web/CSS/flex-grow
 * Formal syntax: <number>
 * Initial Value: 0
 * Negative values are invalid.
 * current spec, webkit browsers need prefixing, Internet explorer and Safari is 
 * not supporting this feature
 */
/**
 * CSS Flex Shrink
 *
 * Outputs Flex-Shrink code with defined prefixes
 * http://caniuse.com/#search=flex
 * https://developer.mozilla.org/en-US/docs/Web/CSS/flex-shrink
 * Formal syntax: <number>
 * Initial Value: 1
 * Negative values are invalid.
 * current spec, webkit browsers need prefixing, Internet explorer and Safari is 
 * not supporting this feature
 *
 * Notes:
 * Internet Explorer 10 uses 0 instead of 1 as the initial value for the flex-shrink property. 
 * A workaround is to always set an explicit value for flex-shrink.
 */
/**
 * CSS Flex Wrap
 *
 * Outputs Flex-Wrap code with defined prefixes
 * http://caniuse.com/#search=flex
 * https://developer.mozilla.org/en-US/docs/Web/CSS/flex-wrap
 * Formal syntax: content | [nowrap | wrap | wrap-reverse]
 * Initial Value: nowrap
 * current spec, webkit browsers need prefixing
 */
/**
 * CSS Flex Align Content
 *
 * Outputs align-content code with defined prefixes
 * http://caniuse.com/#search=flex
 * https://developer.mozilla.org/en-US/docs/Web/CSS/align-content
 * Formal syntax: content | [flex-start | flex-end | center | space-between | space-around | stretch]
 * Initial Value: strecth
 * current spec, webkit browsers need prefixing
 *
 * Notes:
 * Internet Explorer and Safari are not supporting this feature yet even with vendor prefix
 */
/**
 * CSS Flex Align Items
 *
 * Outputs align-items code with defined prefixes
 * http://caniuse.com/#search=flex
 * https://developer.mozilla.org/en-US/docs/Web/CSS/align-items
 * Formal syntax: content | [flex-start | flex-end | center | baseline | stretch]
 * Initial Value: strecth
 * current spec, webkit browsers need prefixing
 */
/**
 * CSS Flex Align Self
 *
 * Outputs align-self code with defined prefixes
 * http://caniuse.com/#search=flex
 * https://developer.mozilla.org/en-US/docs/Web/CSS/align-self
 * Formal syntax: content | [auto | flex-start | flex-end | center | baseline | stretch]
 * Initial Value: auto
 * current spec, webkit browsers need prefixing
 *
 * Notes:
 * Safari is not supporting this feature yet even with vendor prefix
 */
/*
 * CSS Justify Content
 *
 */
/**
 * Order
 *
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Media Query Mixins
    ------------------------------------------- **/
/**
 * Retina Image
 */
/**
 * Retina
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Arrow
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
    Placeholder
    ------------------------------------------- **/
/**
  * Styles input elements' placeholder. 
  * @param $self: true, if it is true, styles applied to class itself
  *			if false, styles applied to the child elements
  */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Positions
    ------------------------------------------- **/
/**
  * Center
  * Applied to absolute positioned elements, and sets position to absolute.
  * Element is centered both vertically and horizontally
  * Dimension declarations (width, height) are not necessary
  * If any other transform methods applied, may not work as expected
  */
/**
  * Vertical Center
  * Centers the element vertically. Do not interfere with its horizontal position
  * If any other transform methods applied, may not work as expected
  */
/**
 * Horizontal Center
 * Centers the element horizontally 
 * Uses margin: 0 auto; when $type defined as "static"
 * By default it uses the transform approach
 * If any other transform methods applied, may not work as expected in transform approach
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Common Break Points
    ------------------------------------------- **/
/**
 * Mobile phones / smaller screens portrait mode
 *
 */
/**
 * Mobile phones / smaller screens landscape mode
 *
 */
/**
 * Tablets / medium sized screens portrait mode
 *
 */
/**
 * Tablets / medium sized screens landscape mode
 *
 */
/**
 * Common desktop/laptops
 */
/**
 * Widescreens
 *
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Appearance Mixin
    ------------------------------------------- **/
/**
 * CSS Appearance
 *
 * Outputs appearance with defined prefixes
 * http://caniuse.com/#search=appearance
 * https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-appearance
 * Formal syntax: value | [ various variable can defined like button, caret, checkbox, progressbar etc. ]
 * All browsers need vendor prefixing
 * 
 * Notes:
 * This is an unofficial feature and not included in the spec. Aside from Internet Explorer, all browsers
 * need their vendor prexing.
 * However for the Internet Explorer, -webkit-appearance with value none is supported on IE11 Mobile 
 * for phones with "Windows Phone 8.1 Update", and in EdgeHTML.dll
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Scrollbar Styles
    ------------------------------------------- **/
/**
  * Scrollbar
  * Styles the scrollbars for supported browsers
  * Both vertical and horizontal scrolls styled together
  * The invisible OSX scrolls will be visible when applied
  */
/**
 * Third Import Melange Core
 * Melange Core is a super set of normalize library.
 * It has general definitions of certain elements such as labels, form fields, buttons, media object without
 * any predefined templates. Main purpose of the Melange is never overwrite any framework definitions
 * during coding. Every definition, class names can change via settings and merges itself with your GUI.
 * Also, Melange has two sets for width definitions.
 * One is a simple grid system with gutter added between columns as paddings. Using a padding gutter and box-sizing: border-box
 * definition, adds more control over responsive designs. These columns floated by default and support up to 18-column grids.
 * This grid system is a fluid grid. You need to add breakpoint definitions for responsive designs.
 * Other width types are fragmented widths such as .one-half, .two-thirds, .three-quarters etc. These are defined by percentages and
 * missing the 100% fragment except in .one-whole definitions. Simply, there are no .two-halves, .three-thirds, .four-quarters classes
 * which are equal to .one-whole :)
 */
/** -------------------------------------------
    Internal Variables
    ------------------------------------------- **/
/**
 * GUI Styles
 * Your gui related definitions.
 * Only add the main GUI file in the styles.scss. Other gui styles will be added in gui/gui.scss
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    GUI Related Styles
    ------------------------------------------- **/
/**
  * GUI Definitions
  * Only import the directories main files. No need the add other partials. In import order, each categorized partial
  * imported in the main file of the category
  */
/**
 * Externals
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
 
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
 
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
    Fonts
    ------------------------------------------- **/
body {
  font: 400 14px/1.36 "Helvetica", Arial, sans-serif;
}

@font-face {
  font-family: "superonline";
  src:   url("../fonts/superonline.woff?caffeine") format("woff"), url("../fonts/superonline.ttf?caffeine") format("truetype");
  font-weight: normal;
  font-style: normal;
}

[class^="icon-"]:before, [class*=" icon-"]:before {
  font-family: "superonline";
  font-style: normal;
  font-variant: normal;
  font-weight: normal;
  line-height: 1;
  text-transform: none;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/**
 * Layout
 * In layout component, there lays the general position of the main elements like page-wrap, header, footer, content etc.
 * Keep in mind, the layout components should only contain the position or size of these wrappers
 * the other elements  like logo in the header, menu in the footer should defined in the components or particules or other
 * appropriate folder to their definitions fit in.
 */
/* @author Onur Palaz */
/**/
.aktivasyon-sorgulama .left_activation .description_section .active_ready {
  background: url(../../images/aktivasyon/actives.png) no-repeat;
}

.aktivasyon-sorgulama .left_activation .description_section .blue_steps {
  background: url(../../images/aktivasyon/number.png) no-repeat;
}

.aktivasyon-sorgulama .left_activation .description_section .active_ready.green_line:before {
  background: url(../../images/aktivasyon/green.png);
}

.aktivasyon-sorgulama .left_activation .description_section .blue_steps.blue:before {
  background: url(../../images/aktivasyon/blue.png);
}

.aktivasyon-sorgulama .left_activation .description_section .active_ready.green_blue:before {
  background: url(../../images/aktivasyon/green-blue.png);
}

.aktivasyon-sorgulama .tooltip_statu {
  position: relative;
  display: inline-block;
  height: 100%;
  width: 35%;
}

.aktivasyon-sorgulama .tooltip_statu .tooltiptext {
  visibility: hidden;
  width: 120px;
  background-color: #555;
  color: #fff;
  text-align: center;
  border-radius: 6px;
  padding: 5px 0;
  position: absolute;
  z-index: 1;
  bottom: 125%;
  left: 50%;
  margin-left: -60px;
  opacity: 0;
  transition: opacity 1s;
}

.aktivasyon-sorgulama .tooltip_statu .tooltiptext::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  margin-left: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: #555 transparent transparent transparent;
}

.aktivasyon-sorgulama .tooltip_statu:hover .tooltiptext {
  visibility: visible;
  opacity: 1;
}

.aktivasyon-sorgulama .tooltip-wrapper {
  margin: 0 auto;
  display: inline-block;
  margin-bottom: 45px;
}

.aktivasyon-sorgulama .activation-info-wrapper {
  margin: 0 auto;
  display: inline-block;
}

.aktivasyon-sorgulama .last-item {
  width: 57px !important;
}

#servis_update_urun_eslestirme_fiber1 .closed_23 {
  position: absolute;
  top: 0;
  right: 3px;
  width: 21px;
  height: 19px;
  background: url(../../images/desktop/close_btn_area.png);
  background-size: contain;
  color: #fff;
  font-size: 25px;
}

#servis_update_urun_eslestirme_fiber2 .closed_23 {
  position: absolute;
  top: 0;
  right: 3px;
  width: 21px;
  height: 19px;
  background: url(../../images/desktop/close_btn_area.png);
  background-size: contain;
  color: #fff;
  font-size: 25px;
}

/*

Author: Onur Palaz

*/
input[name="bday"] {
  font-size: 10px;
}

.odd-row input[name="PSTN"], .even-row input[name="PSTN"] {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  width: 72px !important;
  text-align: center;
  padding: 2px;
  margin: 0;
  border-radius: 0;
  color: #1A3380;
}

.odd-row select[name="uyruk"], .even-row select[name="uyruk"] {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  border-radius: 0;
  -moz-border-radius: 0;
  -webkit-border-radius: 0;
  padding: 2px;
  padding-left: 2px;
  text-align: center;
  color: #1A3380;
  width: 58px;
}

.odd-row select[name="kimliktipi"], .even-row select[name="kimliktipi"] {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  border-radius: 0;
  -moz-border-radius: 0;
  -webkit-border-radius: 0;
  padding: 2px;
  text-align: center;
  color: #1A3380;
  width: 102px;
}

.odd-row select option {
  text-align: center;
}

.odd-row input[name="tckn"], .even-row input[name="tckn"] {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  width: 68px !important;
  text-align: center;
  padding: 2px;
  margin: 0;
  border-radius: 0;
  color: #1A3380;
}

.odd-row input[name="ad"], .even-row input[name="ad"] {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  width: 68px !important;
  text-align: center;
  padding: 2px;
  margin: 0;
  border-radius: 0;
  color: #1A3380;
}

.odd-row input[name="soyad"], .even-row input[name="soyad"] {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  width: 68px !important;
  text-align: center;
  padding: 2px;
  margin: 0;
  border-radius: 0;
  color: #1A3380;
}

.odd-row input[name="dogum-tarihi"], .even-row input[name="dogum-tarihi"] {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  font-size: 7px;
  width: 76px !important;
  text-align: center;
  padding: 4px 1px 0 2px;
  margin: 0;
  border-radius: 0;
  color: #1A3380;
  line-height: 1;
}

.odd-row input[name="kimlik-no"], .even-row input[name="kimlik-no"] {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  width: 50px !important;
  text-align: center;
  padding: 2px;
  margin: 0;
  border-radius: 0;
  color: #1A3380;
}

.odd-row input[name="email"], .even-row input[name="email"] {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  width: 68px !important;
  text-align: center;
  padding: 2px;
  margin: 0;
  border-radius: 0;
  color: #1A3380;
}

.odd-row input[name="tel-no"], .even-row input[name="tel-no"] {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  width: 68px !important;
  text-align: center;
  padding: 2px;
  margin: 0;
  border-radius: 0;
  color: #1A3380;
}

table .uxr-tr-header td {
  text-align: center;
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  font-weight: 300;
  font-size: 11px;
}

.uxr-kim-table td {
  padding: 7px;
  text-align: center;
  font-size: large;
  border-bottom: none;
  padding-left: 1px;
}

/***********/
.uxr-plain-select-uyruk,
.uxr-plain-select-kimlik-tipi {
  display: inline-block;
  vertical-align: middle;
  position: relative;
  margin-top: 2px;
}

.uxr-plain-select-uyruk select,
.uxr-plain-select-kimlik-tipi select {
  -webkit-appearance: none;
  -moz-appearance: none;
  -ms-appearance: none;
  appearance: none;
  display: block;
  width: 70px;
  border: 1px solid #cccccc;
  color: #1A3380;
}

.uxr-plain-select-uyruk select:focus,
.uxr-plain-select-kimlik-tipi select:focus {
  background: #f9f9f9;
  outline: none;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.3), inset 0 0 7px rgba(100, 100, 100, 0.3);
  border-color: #00c0f3;
}

.uxr-plain-select-uyruk:after,
.uxr-plain-select-kimlik-tipi:after {
  content: "";
  position: absolute;
  z-index: 2;
  right: 8px;
  top: 50%;
  margin-top: -2px;
  height: 0;
  width: 0;
  border-top: 4px solid #000000;
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
  pointer-events: none;
}

.uxr-container h3 {
  padding-left: 10px;
}

.uxr-tab-content-wrapper {
  border-top: none;
}

.uxr-excel-save-tip,
.uxr-save-all-tip {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  font-weight: 300;
  font-size: 14px;
  color: #18307F;
  float: left;
  padding-right: 15px;
}

.uxr-excel-save-container {
  float: right;
  padding-bottom: 20px;
}

.uxr-excel-save-icon,
.uxr-save-all-icon {
  float: left;
}

.uxr-save-all-container {
  margin: 20px 10px 0 0;
}

.uxr-excel-select-file {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  background-color: #f3f8fd;
  color: #19327D;
  cursor: pointer;
  display: inline-block;
  padding: 4px 5px !important;
  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
  font-size: 14px;
  line-height: normal;
  border: 1px solid #9dc8eb !important;
  -webkit-border-radius: 8px;
  -moz-border-radius: 8px;
  border-radius: 4px;
}

.uxr-download-as-excel {
  float: left;
  margin-left: 10px;
}

.uxr-save-all-rows {
  float: right;
}

.uxr-excel-download-tip {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  font-weight: 300;
  font-size: 14px;
  color: #18307F;
  float: left;
  padding-right: 15px;
  padding-left: 10px;
}

.uxr-excel-download-tip:hover {
  text-decoration: underline;
}

.uxr-pagination-items {
  padding: 30px 0;
}

.uxr-pagination-items ul {
  margin: 0;
  padding: 0;
  list-style-type: none;
}

.uxr-pagination-items a {
  display: inline-block;
  padding: 10px 18px;
  color: #999999;
  width: 40px;
  height: 36px;
  line-height: 36px;
  padding: 0;
  text-align: center;
  font-size: 12px;
}

.uxr-pagination-items a:hover {
  background-color: #5abde6;
  border-radius: 10%;
  color: #fff;
}

.uxr-pagination-items a.uxr-active-pager {
  background-color: #5abde6;
  border-radius: 10%;
  color: #fff;
}

.uxr-pagination-container {
  text-align: center;
}

.uxr-save-all-diskette-icon {
  margin-right: 5px;
  margin-bottom: -2px;
}

/* @author Gülçin Girgin */
/**/
.customer-quota {
  width: 525px;
  margin: 65px auto 0px;
  text-align: center;
}

.customer-quota-logo {
  width: 170px;
  height: 65px;
  padding-top: 20px;
}

.customer-quota-icon {
  width: 65px;
  height: 85px;
  padding: 0px 30px;
}

.customer-quota-context {
  padding: 0px 25px;
}

.settings-bold {
  font-weight: 600;
}

/*
Author: Onur Palaz
Kimlik Bilgilerim Sayfalari START
*/
.uxr-trk-dropdown {
  height: 55px !important;
  margin-top: 25px;
}

.uxr-trk-dropdown-ul li a {
  padding: 22px 28px 12px 17px !important;
}

.uxr-trk-dropdown-ul li a:after {
  margin-top: 6px;
}

.uxr-update-with-excel {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  font-size: 22px;
  font-weight: 600;
  margin-top: 5px;
}

.uxr-number-select-button {
  width: 100%;
  background: #f2f2f2;
  border: 0;
  color: #000;
  display: inline-block;
  margin: 25px 0 0 0;
  height: 55px;
  text-align: center;
  -webkit-border-radius: 0px;
  -moz-border-radius: 0px;
  border-radius: 0px;
  -webkit-box-shadow: rgba(0, 0, 0, 0.4) 0px 1px 1px 0px;
  -moz-box-shadow: rgba(0, 0, 0, 0.4) 0px 1px 1px 0px;
  box-shadow: rgba(0, 0, 0, 0.4) 0px 1px 1px 0px;
  border-left: 1px solid #E0E0E0;
}

.uxr-phone-number-warning {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  text-align: center;
  margin-bottom: 0;
  padding-bottom: 0;
  color: red;
}

.uxr-number-select-button span {
  font: 700 16px/1 "Helvetica", Arial, sans-serif;
  color: #4d4d4d;
  float: left;
  margin-left: 15px;
  line-height: 3.7;
}

.uxr-number-select-button:after {
  display: block;
  float: right;
  margin-top: 21px;
  margin-right: 14px;
  padding: 0;
  height: 15px;
  width: 10px;
  background: url("../../images/common/sprite-common/carrot_right-8.png") no-repeat;
  content: "";
}

.uxr-option {
  margin: 50px 0 50px 0;
}

.uxr-option-headline {
  position: absolute;
  width: 500px;
  margin-top: 2px;
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  font-size: 26px;
}

.uxr-option input[type="radio"] {
  cursor: pointer;
}

.uxr-option .uxr-active-option {
  display: none;
}

.uxr-option.active .uxr-active-option {
  display: block;
}

.uxr-missing-info-warning {
  color: red;
  float: right;
  font-size: large;
  font-weight: 600;
}

.uxr-phone-number-option-inner {
  padding-top: 30px;
}

.uxr-trk-dropdown.closed .selected a {
  position: relative !important;
  right: 0 !important;
  top: 0 !important;
  color: #4d4d4d !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.trk_dropdown_button:after,
.trk_dropdown .label a:after,
.trk_dropdown.dropdown-modifier1 .selected:after {
  margin-top: 5px;
}

.uxr-excel-upload-container {
  width: 100%;
}

.uxr-custom-file {
  width: 110px;
  cursor: pointer;
  overflow: hidden;
  position: relative;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  color: #9d9d9d;
  display: inline-block;
  font-size: 18px;
  height: 45px;
  margin: 0;
}

.uxr-item-field-class {
  padding: 14px;
  font-size: 14px;
  width: 530px;
  height: 45px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  -webkit-box-shadow: inset 0px 1px 3px -2px #000;
  -moz-box-shadow: inset 0px 1px 3px -2px #000;
  box-shadow: inset 0px 1px 3px -2px #000;
  display: inline-block;
  font-size: 18px;
  background-color: #f6f6f6;
  border: 1px solid #e2e2e2;
  border-top: 1px solid #cdcdcd;
  border-bottom: 1px solid #efefef;
  color: #9d9d9d;
  font-size: 14px;
  margin: 0;
}

.uxr-birth-date-field::-webkit-inner-spin-button {
  display: none;
}

.uxr-trk-dropdown-slct {
  height: 56px !important;
}

.uxr-trk-dropdown-slct ul li a {
  padding-top: 21px !important;
}

.uxr-id-type-dropdown {
  margin-top: 24px;
}

.uxr-sol-datepicker {
  width: 100%;
  height: 56px !important;
}

.uxr-datepicker-ico {
  position: absolute !important;
  top: 44px !important;
  right: 16px !important;
}

/*
Author: Onur Palaz
Kimlik Bilgilerim Sayfalari END
*/
/* Author: Onur Palaz */
a.uxr-nav-guvenli-internet:before {
  background-image: url(../../../assets/images/uxrocket/sprite/uxr-sprite-icons.png) !important;
  background-repeat: no-repeat;
  background-position: -8px -2px;
}

a.uxr-nav-guvenli-internet:hover::before {
  background-image: url(../../../assets/images/uxrocket/sprite/uxr-sprite-icons.png) !important;
  background-repeat: no-repeat;
  background-position: -40px -2px;
}

.active .uxr-nav-guvenli-internet:before {
  background-image: url(../../../assets/images/uxrocket/sprite/uxr-sprite-icons.png) !important;
  background-repeat: no-repeat;
  background-position: -40px -2px;
}

.settings-list .trk_dropdown, .settings-list select .uxr-dropdown-country {
  max-width: 392px;
  height: 50px;
}

.uxr-yabanci-kimlik-bilgileri-wrapper #uxr-input-foreigner {
  padding-top: 33px;
  display: none;
}

.uxr-yabanci-kimlik-bilgileri-wrapper .uxr-input-top-id {
  float: right;
}

.uxr-yabanci-kimlik-bilgileri-wrapper .uxr-checkbox-id {
  padding: 13px 0 45px 0;
}

.uxr-yabanci-kimlik-bilgileri-wrapper .labeltext-eng {
  display: none;
}

table.uxr-bills-list tbody td {
  padding: 0px 10px;
}

tr.uxr-bills-list-odd-row {
  background-color: #edebeb;
}

#bip2TermsAgreementWrapper input.checkbox.LV_invalid_field + label span {
  border: 1px solid #db2133 !important;
}

#bip2DirectionUserAgg .agreementText {
  height: 100px;
  font-size: 12px;
  -webkit-box-shadow: inset 2px 2px 2px 0 #ddd;
  box-shadow: inset 2px 2px 2px 0 #ddd;
  border: 1px solid #ddd;
  background: #f2f2f2;
  padding: 7px !important;
  overflow: hidden;
  overflow-y: scroll;
}

form#bip2NumberDirection #bip2DirectionGsmNoWrapper label,
form#bip2NumberDirection #bip2DirectionMailWrapper label,
form#bip2NumberDirection #bip2DirectionMailAgainWrapper label {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  font-weight: 700;
  font-size: 22px;
  line-height: 1.36em;
}

form#bip2NumberDirection #bip2DirectionUserAgg label {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  font-weight: 700;
  font-size: 22px;
  line-height: 1.36em;
  color: #4d4d4d !important;
}

form#bip2NumberDirection #bip2DirectionMailWrapper input,
form#bip2NumberDirection #bip2DirectionMailAgainWrapper input {
  height: 56px;
  padding: 18px 20px 15px;
  font-family: "Helvetica", Arial, sans-serif;
  font-weight: normal;
  line-height: 20px;
  font-size: 18px;
}

#bip2ndNumberConfirmDiv input#confirmSendOtpText {
  height: 56px;
  padding: 18px 20px 15px;
  font-family: "Helvetica", Arial, sans-serif;
  font-weight: normal;
  line-height: 20px;
  font-size: 18px;
}

#bip2ndNumberConfirmDiv small.uxr-small-input-desc {
  font-family: "Turkcell Satura", "Helvetica", Arial, sans-serif;
  font-weight: 700;
  font-size: 18px;
  color: #9d9d9d;
  line-height: 1.25;
}

#bip2ndNumberOtpConfirmDiv input#verifyPasswordText {
  padding: 18px 20px 15px;
  font-size: 18px;
}

#bip2ndNumberOtpConfirmDiv input#sendOtpText {
  padding: 18px 20px 15px;
  font-size: 18px;
}

.uxr-countdown-timer {
  position: relative;
}

.uxr-countdown-timer .step-image-circle {
  width: 135px;
  height: 135px;
}

.uxr-countdown-timer div {
  position: absolute;
  width: 100%;
  font-weight: bold;
  color: #40afe7;
  font-size: 34px;
  top: 0;
}

.uxr-countdown-timer div span {
  line-height: 135px;
}

.uxr-send-again-iconlink {
  font-size: 12px;
  font-weight: bold;
  padding-left: 20px;
  opacity: .4;
  position: relative;
}

.uxr-send-again-iconlink:before {
  background-image: url(../../../assets/images/uxrocket/sprite/uxr-sprite-icons.png);
  background-position: -202px -207px;
  width: 14px;
  height: 14px;
  content: " ";
  display: block;
  position: absolute;
  top: 0;
  left: 0;
}

.uxr-talep-info {
  color: #FDA919;
}

.uxr-dark-area {
  background-color: #003B75;
  color: white;
}

.uxr-itemisation-detail__title {
  padding: 25px;
  font-weight: 100;
}

.uxr-result-color {
  color: #41bdee;
  font-size: 20px;
  margin-left: 2px;
}

.uxr-talep-result-info {
  color: #2CE791;
}

.uxr-sep-bot-span {
  color: #4D4D4D;
  font-size: 14px;
  padding-top: 2px;
  margin-left: 3px;
}

.uxr-labeled-datepicker label {
  font-size: 12px;
  line-height: 30px;
  letter-spacing: 0.2px;
}

.uxr-labeled-datepicker input {
  width: 100%;
}

.g__75 {
  width: 75%;
}

.uxr-tasima-sihirbazi .trk_dropdown .label a:after {
  margin-top: 0;
}

.uxr-tasima-sihirbazi .uxr-talep-details {
  padding-left: 21px;
}

.uxr-first-th {
  width: 15%;
}

.uxr-second-th {
  width: 30%;
}

.uxr-third-th {
  width: 35%;
}

.uxr-fourth-th {
  width: 20%;
}

ul.navigation li a.uxr-nav-internetislemlerim:before {
  background-image: url(../../images/my_account/sprite-icons.png) !important;
  background-repeat: no-repeat !important;
  background-position: -8705px 0 !important;
  margin-left: 2px;
}

ul.navigation li a:hover.uxr-nav-internetislemlerim:before {
  background-image: url(../../images/my_account/sprite-icons.png) !important;
  background-repeat: no-repeat !important;
  background-position: -8733px 0 !important;
  margin-left: 2px;
}

ul.navigation li a.uxr-nav-teknikislemlerim:before {
  background-image: url(../../images/my_account/sprite-icons.png) !important;
  background-repeat: no-repeat !important;
  background-position: -8761px 0 !important;
}

ul.navigation li a:hover.uxr-nav-teknikislemlerim:before {
  background-image: url(../../images/my_account/sprite-icons.png) !important;
  background-repeat: no-repeat !important;
  background-position: -8793px 0 !important;
}

ul.navigation li.active a.uxr-nav-internetislemlerim:before {
  background-image: url(../../images/my_account/sprite-icons.png) !important;
  background-repeat: no-repeat !important;
  background-position: -8733px 0 !important;
  margin-left: 2px;
}

ul.navigation li.active a.uxr-nav-teknikislemlerim:before {
  background-image: url(../../images/my_account/sprite-icons.png) !important;
  background-repeat: no-repeat !important;
  background-position: -8793px 0 !important;
}

.uxr-tvplus-channels-list {
  min-height: 630px;
}

.uxr-tvplus-channel-name {
  text-align: center;
  margin-top: 34px !important;
}

.uxr-tvplus-channels-list li {
  margin-bottom: 52px;
}

.uxr-footnotes {
  background-color: #f7f7f7;
  padding: 20px 20px 5px 20px;
  margin-bottom: 60px;
}

.uxr-footnotes li {
  color: #8b8b8b;
  list-style: decimal inside;
  margin-bottom: 15px;
  font-weight: 300;
}

.dropdown-modifier3 .label a:after,
.dropdown-modifier3 .selected:after,
.dropdown-modifier3 button:after {
  margin-top: 0 !important;
}

.uxr-actual-network-name {
  word-wrap: break-word;
}

.uxr-bill-query-form .option {
  float: left;
  margin-right: 20px;
}

.uxr-bill-query-form input.radio + label > span:first-child::before {
  margin-top: -14px;
}

.uxr-bill-query-form .cols-2 {
  padding-top: 55px;
  display: inline-block;
  width: 100%;
}

.uxr-bill-query-form .common-input-list {
  padding-top: 30px;
}

.uxr-bill-query-form .tab-content .form-item .col-3.first {
  margin-left: 0;
}

.uxr-bill-query-form .tab-content .form-item .col-3 {
  float: left;
  width: 134px;
  margin-left: 32px;
}

.uxr-bill-query-form .tab-content .form-item .col-2.first {
  margin-right: 4%;
}

.uxr-bill-query-form .tab-content .form-item .col-2 {
  float: left;
  width: 48%;
}

.uxr-bill-query-form .trk_dropdown_button:after,
.uxr-bill-query-form .trk_dropdown .label a:after,
.uxr-bill-query-form .trk_dropdown.dropdown-modifier1 .selected:after {
  margin-top: 0;
}

.uxr-kalan-kullanim-progress-bar-wrapper {
  margin: 0 auto;
  font-family: TurkcellSatura, Helvetica, sans-serif;
  padding-top: 40px;
  max-width: 300px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-internet-used {
  position: absolute;
  color: #fff;
  font-size: 16px;
  top: 11px;
  left: 13px;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
  z-index: 1;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use {
  max-width: 300px;
  height: 36px;
  background-color: rgba(52, 126, 212, 0.4);
  border-radius: 4px 0 0 4px;
  margin: 40px auto;
  position: relative;
  color: rgba(74, 74, 74, 0.5);
  font-size: 20px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use small {
  font-size: 60%;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .uxr-internet-used-bar {
  height: 36px;
  background-color: #0054a7;
  border-radius: 4px 0 0 4px;
  margin: 16px 0;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .uxr-progress-bar {
  display: flex;
  justify-content: space-around;
  position: absolute;
  top: -15px;
  width: 100%;
  right: -10px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .uxr-progress-bar .uxr-internet-pack.uxr-package-out {
  position: absolute;
  right: -20%;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .uxr-progress-bar .uxr-internet-pack.active {
  color: #000;
  font-weight: 700;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .uxr-progress-bar .uxr-internet-pack.active .uxr-internet-pack-gb {
  font-size: 22px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .uxr-progress-bar .uxr-internet-pack.active .uxr-internet-pack-gb .bar {
  background: #236cb5;
  border: 1px solid white;
  width: 3px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .uxr-progress-bar .uxr-internet-pack.active .uxr-internet-pack-price {
  font-size: 18px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .uxr-progress-bar .uxr-internet-pack.active .uxr-package-out-price {
  color: rgba(74, 74, 74, 0.5);
  font-weight: 400;
  font-size: 12px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .uxr-progress-bar .uxr-internet-pack-price {
  display: inline-block;
  font-size: 12px;
  line-height: 1;
  vertical-align: middle;
  position: absolute;
  left: -18px;
  top: -3px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .uxr-progress-bar .uxr-internet-pack-price.first {
  left: 0;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .uxr-progress-bar .uxr-internet-pack-price.last {
  left: -22px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .bar {
  width: 2px;
  content: "";
  height: 56px;
  position: absolute;
  border: 1px solid #b6d3f3;
  background: white;
  top: -15px;
  border-radius: 4px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .bar .uxr-internet-pack-gb {
  position: absolute;
  top: -15px;
  transform: translateX(-50%);
  font-size: 12px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .bar.active {
  background: #236cb5;
  border: 1px solid white;
  width: 3px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .bar.active .uxr-internet-pack-gb {
  color: #000;
  font-size: 18px;
  font-weight: bold;
  top: -20px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .uxr-pack-price-area {
  font-size: 12px;
  position: absolute;
  top: -18px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-remaining-use .uxr-pack-price-area .active {
  color: #000;
  font-size: 18px;
  font-weight: bold;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-pack-info-box {
  display: flex;
  justify-content: space-around;
  font-size: 14px;
  color: #4a4a4a;
  margin-top: 30px;
  font-weight: 700;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-pack-info {
  font-size: 12px;
  margin-top: 20px;
  text-align: center;
  padding: 0 12px;
  line-height: 18px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-button-area {
  display: flex;
  justify-content: space-between;
  min-width: 400px;
  margin-left: -50px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .button-cta {
  margin-top: 30px;
}

.uxr-kalan-kullanim-progress-bar-wrapper .uxr-unlimited-pack {
  position: absolute;
  right: 10px;
  top: 23%;
  color: white;
  font-weight: bold;
}

.uxr-randevu-ekranlari {
  display: flex;
  justify-content: center;
  padding: 50px 0;
  font-family: "Turkcell Satura", Helvetica, sans-serif;
}

.uxr-randevu-ekranlari .uxr-img-area {
  margin-right: 55px;
}

.uxr-randevu-ekranlari .uxr-img-area img {
  width: 95px;
  height: 95px;
  border-radius: 100%;
  object-fit: cover;
}

.uxr-randevu-ekranlari .uxr-randevu-bilgileri {
  width: 70%;
}

.uxr-randevu-ekranlari .uxr-randevu-bilgileri table {
  width: 100%;
}

.uxr-randevu-ekranlari .uxr-randevu-bilgileri table tr:nth-child(odd) {
  background: #fafafa;
}

.uxr-randevu-ekranlari .uxr-randevu-bilgileri table td {
  padding: 10px 20px;
  font-size: 16px;
}

.uxr-randevu-ekranlari .uxr-randevu-bilgileri table td:nth-child(odd) {
  font-weight: bold;
  width: 20%;
}

.uxr-bina .LV_validation_message.LV_invalid, .uxr-daire .LV_validation_message.LV_invalid {
  position: absolute;
}

.fast-login-btn {
  display: flex;
  width: 100%;
  background: #2962ff;
  border-radius: 100px;
  position: relative;
  height: 40px;
}

.fast-login-btn:before {
  content: "";
  background-image: url(../../../assets/images/uxrocket/fast-login.png);
  width: 117px;
  height: 22px;
  display: inline-block;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
}

@media (-webkit-min-device-pixel-ratio: 2) {
  .fast-login-btn:before {
    background-image: url(../../../assets/images/uxrocket/fast-login@2x.png);
    background-size: 117px auto;
  }
}

.login-span {
  display: flex;
  align-items: center;
  justify-content: space-between;
  color: #a6a6a6;
  font-size: 18px;
  margin: 16px 0 26px;
  width: 100%;
}

.login-span:before, .login-span:after {
  content: "";
  width: 33%;
  height: 1px;
  background: #979797;
}

/**
 * Elements
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
    Elements
    ------------------------------------------- **/
.icon-turkcell::before {
  content: "\EA01";
}

.icon-outgoing-message::before {
  content: "\EA02";
}

/* @author Bilal Cinarli */
/** -------------------------------------------
    Icons Extend
    ------------------------------------------- **/
[class*="icon-"] {
  display: inline-block;
  font-size: 1em;
  line-height: 1;
  vertical-align: middle;
}

.icon-05x {
  font-size: .5rem;
}

.icon-075x {
  font-size: .75rem;
}

.icon-1--5x {
  font-size: 1.5rem;
}

.icon-2x {
  font-size: 2rem;
}

.icon-3x {
  font-size: 3rem;
}

.icon-4x {
  font-size: 4rem;
}

.icon-5x {
  font-size: 5rem;
}

.icon-6x {
  font-size: 6rem;
}

.icon-7x {
  font-size: 7rem;
}

/* @author Bilal Cinarli */
/** -------------------------------------------
 
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
 
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
    Form
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
 
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
 
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
 
    ------------------------------------------- **/
/* @author Aydin Cinar */
/** -------------------------------------------
 
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
 
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
 
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
 
    ------------------------------------------- **/
/* @author Bilal Cinarli */
/** -------------------------------------------
 
    ------------------------------------------- **/
/* @author Aydin Cinar */
/** -------------------------------------------

    ------------------------------------------- **/
/* @author Gülçin Girgin */
.flex-row {
  display: flex;
}

.flex-row.align-items {
  -ms-flex-align: center;
  -webkit-box-align: center;
  -webkit-align-items: center;
  align-items: center;
}

.flex-row.space-between {
  -ms-flex-pack: justify;
  -webkit-box-pack: justify;
  -webkit-justify-content: space-between;
  justify-content: space-between;
}

.flex-row.space-center {
  justify-content: center;
}

/**
 * Particules
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
 
    ------------------------------------------- **/
/**
 * Components
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
 
    ------------------------------------------- **/
/* @author Gulcin Girgin */
.quota-package {
  padding: 25px;
  border: 1px solid #cbcbcb;
}

.quota-package-title {
  color: #2d3743;
  margin-top: 0px;
  margin-bottom: 25px;
}

.quota-package-box-title {
  float: left;
  background: #4da5ff;
  padding: 17px 14px;
  color: #fff;
  font-weight: 600;
  font-size: 16px;
}

.quota-package-box-price {
  float: left;
  background: #fede33;
  padding: 17px 14px;
  color: #000000;
  font-weight: 600;
  font-size: 16px;
}

.quota-package-button {
  background: #fede33;
  padding: 17px 45px;
  color: #000;
  text-decoration: none;
  font-weight: 600;
  font-size: 17px;
  margin: 10px 0px 5px;
}

.quota-package-ps-note {
  width: 260px;
  margin: auto;
  font-size: 11px;
  color: #313b47;
}

/**
 * Auxiliary
 */
/* @author Bilal Cinarli */
/** -------------------------------------------
 
    ------------------------------------------- **/

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXhyb2NrZXQtc3R5bGVzLmNzcyIsInNvdXJjZXMiOlsic3R5bGVzLnNjc3MiLCJzZXR0aW5ncy9fc2V0dGluZ3Muc2NzcyIsInNldHRpbmdzL19zdXBwb3J0cy5zY3NzIiwic2V0dGluZ3MvX25hbWVzcGFjZS5zY3NzIiwic2V0dGluZ3MvX2FuaW1hdGlvbnMuc2NzcyIsInNldHRpbmdzL19zaXplcy5zY3NzIiwic2V0dGluZ3MvX2ZvbnRzLnNjc3MiLCJzZXR0aW5ncy9fY29sb3JzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2NhZmZlaW5lL2xpYi9fY2FmZmVpbmUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvY2FmZmVpbmUvbGliL2Z1bmN0aW9ucy9fZnVuY3Rpb25zLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2NhZmZlaW5lL2xpYi9mdW5jdGlvbnMvX2dlbmVyaWMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvY2FmZmVpbmUvbGliL2Z1bmN0aW9ucy9fdGV4dC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9jYWZmZWluZS9saWIvZnVuY3Rpb25zL19zdHJpbmcuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvY2FmZmVpbmUvbGliL21peGlucy9fbWl4aW5zLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2NhZmZlaW5lL2xpYi9taXhpbnMvX2dlbmVyaWMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvY2FmZmVpbmUvbGliL21peGlucy9fdGV4dC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9jYWZmZWluZS9saWIvbWl4aW5zL19zaXplLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2NhZmZlaW5lL2xpYi9taXhpbnMvY3NzMy9fY3NzMy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9jYWZmZWluZS9saWIvbWl4aW5zL2NzczMvX2JhY2tncm91bmQtZ3JhZGllbnQuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvY2FmZmVpbmUvbGliL21peGlucy9jc3MzL190ZXh0LWdyYWRpZW50LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2NhZmZlaW5lL2xpYi9taXhpbnMvY3NzMy9fYm94LXNoYWRvdy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9jYWZmZWluZS9saWIvbWl4aW5zL2NzczMvX3RyYW5zaXRpb24uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvY2FmZmVpbmUvbGliL21peGlucy9jc3MzL190cmFuc2Zvcm0uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvY2FmZmVpbmUvbGliL21peGlucy9jc3MzL19hbmltYXRpb24uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvY2FmZmVpbmUvbGliL21peGlucy9jc3MzL19jb2x1bW5zLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2NhZmZlaW5lL2xpYi9taXhpbnMvY3NzMy9fZmxleC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9jYWZmZWluZS9saWIvbWl4aW5zL19tZWRpYXF1ZXJpZXMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvY2FmZmVpbmUvbGliL21peGlucy9fYXJyb3cuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvY2FmZmVpbmUvbGliL21peGlucy9fcGxhY2Vob2xkZXIuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvY2FmZmVpbmUvbGliL21peGlucy9fcG9zaXRpb24uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvY2FmZmVpbmUvbGliL21peGlucy9fYnJlYWtwb2ludHMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvY2FmZmVpbmUvbGliL21peGlucy9fYXBwZWFyYW5jZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9jYWZmZWluZS9saWIvbWl4aW5zL19zY3JvbGxiYXIuc2NzcyIsImd1aS9fZ3VpLnNjc3MiLCJndWkvZXh0ZXJuYWxzL19leHRlcm5hbHMuc2NzcyIsImd1aS9nbG9iYWxzL19nbG9iYWxzLnNjc3MiLCJndWkvZ2xvYmFscy9fZm9udHMuc2NzcyIsImd1aS9sYXlvdXQvX2xheW91dC5zY3NzIiwiZ3VpL2xheW91dC9fYWt0aXZhc3lvbi1zb3JndWxhbWEuc2NzcyIsImd1aS9sYXlvdXQvX2Rlc2t0b3Auc2NzcyIsImd1aS9sYXlvdXQvX3VydW5sZXJpbS5zY3NzIiwiZ3VpL2xheW91dC9fbXVzdGVyaS1iaWxnaS5zY3NzIiwiZ3VpL2xheW91dC9fa2ltbGlrLWJpbGdpbGVyaW0uc2NzcyIsImd1aS9sYXlvdXQvX2d1dmVubGktaW50ZXJuZXQuc2NzcyIsImd1aS9sYXlvdXQvX3lhYmFuY2kta2ltbGlrLWJpbGdpbGVyaS5zY3NzIiwiZ3VpL2xheW91dC9fYmlwdGUtZXYuc2NzcyIsImd1aS9sYXlvdXQvX3RhbGVwbGVyaW0uc2NzcyIsImd1aS9sYXlvdXQvX2hlc2FiaW0tb3pldC5zY3NzIiwiZ3VpL2xheW91dC9fZXZkZS10dnBsdXMuc2NzcyIsImd1aS9sYXlvdXQvX2JhZ2xhbnRpLWFkaW1pLWRlZ2lzdGlyLnNjc3MiLCJndWkvbGF5b3V0L19mYXR1cmEtYm9yYy1zb3JndWxhLnNjc3MiLCJndWkvbGF5b3V0L19rYWxhbi1rdWxsYW5pbS1nb3N0ZXJpbS5zY3NzIiwiZ3VpL2xheW91dC9fcmFuZGV2dS1la3Jhbmxhcmkuc2NzcyIsImd1aS9sYXlvdXQvX2ZhdHVyYS1heWFybGFyaS5zY3NzIiwiZ3VpL2xheW91dC9fZmFzdC1sb2dpbi1lbnRlZ3Jhc3lvbnUuc2NzcyIsImd1aS9lbGVtZW50cy9fZWxlbWVudHMuc2NzcyIsImd1aS9lbGVtZW50cy9faWNvbnMuc2NzcyIsImd1aS9lbGVtZW50cy9faWNvbnMtZXh0ZW5kLnNjc3MiLCJndWkvZWxlbWVudHMvX2ltYWdlcy5zY3NzIiwiZ3VpL2VsZW1lbnRzL190ZXh0cy5zY3NzIiwiZ3VpL2VsZW1lbnRzL2Zvcm1zL19mb3Jtcy5zY3NzIiwiZ3VpL2VsZW1lbnRzL2Zvcm1zL19maWVsZHMuc2NzcyIsImd1aS9lbGVtZW50cy9mb3Jtcy9fbGFiZWxzLnNjc3MiLCJndWkvZWxlbWVudHMvZm9ybXMvX2lucHV0cy5zY3NzIiwiZ3VpL2VsZW1lbnRzL2Zvcm1zL19idXR0b25zLnNjc3MiLCJndWkvZWxlbWVudHMvX3RhYmxlcy5zY3NzIiwiZ3VpL2VsZW1lbnRzL19saW5rcy5zY3NzIiwiZ3VpL2VsZW1lbnRzL19oZWFkaW5ncy5zY3NzIiwiZ3VpL2VsZW1lbnRzL19saXN0cy5zY3NzIiwiZ3VpL2VsZW1lbnRzL19ib3guc2NzcyIsImd1aS9lbGVtZW50cy9fZmxleC1ncmlkLnNjc3MiLCJndWkvcGFydGljdWxlcy9fcGFydGljdWxlcy5zY3NzIiwiZ3VpL2NvbXBvbmVudHMvX2NvbXBvbmVudHMuc2NzcyIsImd1aS9jb21wb25lbnRzL19wYWtldC1zZWMuc2NzcyIsImd1aS9hdXhpbGlhcnkvX2F1eGlsaWFyeS5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qISBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBQcm9qZWN0IFN0eWxlc1xuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovXG4vKipcbiAqIEZpcnN0IEltcG9ydCBTZXR0aW5nc1xuICogVGhlc2Ugc2V0dGluZ3MgYXJlIGRlZmluZXMgc2ltcGxlIGNvbG9yIGFuZCBzaXplcyBmb3IgTWVsYW5nZSBkZWZhdWx0c1xuICogQWxzbyBzb21lIHNldHRpbmdzIHN1Y2ggYXMgYCRzdXBwb3J0LWZvci1pZThgIGV0Yy4gYXJlIHVzZWQgaW4gQ2FmZmVpbmUgbWl4aW5zXG4gKiBZb3UgYXJlIGZyZWUgdG8gZXh0ZW5kIHRoZSBzZXR0aW5ncyBmb3Igc3lzdGVtIHdpZGUgdXNlLlxuICovXG5cbkBpbXBvcnQgXCJzZXR0aW5ncy9zZXR0aW5nc1wiO1xuXG5cbi8qKlxuICogU2Vjb25kIEltcG9ydCBDYWZmZWluZVxuICogQ2FmZmVpbmUgaXMgYSBTYXNzIGJhc2VkIG1peGluL2Z1bmN0aW9uIGxpYnJhcnkgKHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2JjaW5hcmxpL2NhZmZlaW5lKVxuICogTW9zdGx5IE1lbGFuZ2UgaXMgbm90IGRlcGVuZGVkIG9uIENhZmZlaW5lLlxuICovXG5AaW1wb3J0IFwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9jYWZmZWluZS9saWIvY2FmZmVpbmVcIjtcblxuXG4vKipcbiAqIFRoaXJkIEltcG9ydCBNZWxhbmdlIENvcmVcbiAqIE1lbGFuZ2UgQ29yZSBpcyBhIHN1cGVyIHNldCBvZiBub3JtYWxpemUgbGlicmFyeS5cbiAqIEl0IGhhcyBnZW5lcmFsIGRlZmluaXRpb25zIG9mIGNlcnRhaW4gZWxlbWVudHMgc3VjaCBhcyBsYWJlbHMsIGZvcm0gZmllbGRzLCBidXR0b25zLCBtZWRpYSBvYmplY3Qgd2l0aG91dFxuICogYW55IHByZWRlZmluZWQgdGVtcGxhdGVzLiBNYWluIHB1cnBvc2Ugb2YgdGhlIE1lbGFuZ2UgaXMgbmV2ZXIgb3ZlcndyaXRlIGFueSBmcmFtZXdvcmsgZGVmaW5pdGlvbnNcbiAqIGR1cmluZyBjb2RpbmcuIEV2ZXJ5IGRlZmluaXRpb24sIGNsYXNzIG5hbWVzIGNhbiBjaGFuZ2UgdmlhIHNldHRpbmdzIGFuZCBtZXJnZXMgaXRzZWxmIHdpdGggeW91ciBHVUkuXG4gKiBBbHNvLCBNZWxhbmdlIGhhcyB0d28gc2V0cyBmb3Igd2lkdGggZGVmaW5pdGlvbnMuXG4gKiBPbmUgaXMgYSBzaW1wbGUgZ3JpZCBzeXN0ZW0gd2l0aCBndXR0ZXIgYWRkZWQgYmV0d2VlbiBjb2x1bW5zIGFzIHBhZGRpbmdzLiBVc2luZyBhIHBhZGRpbmcgZ3V0dGVyIGFuZCBib3gtc2l6aW5nOiBib3JkZXItYm94XG4gKiBkZWZpbml0aW9uLCBhZGRzIG1vcmUgY29udHJvbCBvdmVyIHJlc3BvbnNpdmUgZGVzaWducy4gVGhlc2UgY29sdW1ucyBmbG9hdGVkIGJ5IGRlZmF1bHQgYW5kIHN1cHBvcnQgdXAgdG8gMTgtY29sdW1uIGdyaWRzLlxuICogVGhpcyBncmlkIHN5c3RlbSBpcyBhIGZsdWlkIGdyaWQuIFlvdSBuZWVkIHRvIGFkZCBicmVha3BvaW50IGRlZmluaXRpb25zIGZvciByZXNwb25zaXZlIGRlc2lnbnMuXG4gKiBPdGhlciB3aWR0aCB0eXBlcyBhcmUgZnJhZ21lbnRlZCB3aWR0aHMgc3VjaCBhcyAub25lLWhhbGYsIC50d28tdGhpcmRzLCAudGhyZWUtcXVhcnRlcnMgZXRjLiBUaGVzZSBhcmUgZGVmaW5lZCBieSBwZXJjZW50YWdlcyBhbmRcbiAqIG1pc3NpbmcgdGhlIDEwMCUgZnJhZ21lbnQgZXhjZXB0IGluIC5vbmUtd2hvbGUgZGVmaW5pdGlvbnMuIFNpbXBseSwgdGhlcmUgYXJlIG5vIC50d28taGFsdmVzLCAudGhyZWUtdGhpcmRzLCAuZm91ci1xdWFydGVycyBjbGFzc2VzXG4gKiB3aGljaCBhcmUgZXF1YWwgdG8gLm9uZS13aG9sZSA6KVxuICovXG5cbi8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgSW50ZXJuYWwgVmFyaWFibGVzXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi9cblxuLyoqXG4gKiBHVUkgU3R5bGVzXG4gKiBZb3VyIGd1aSByZWxhdGVkIGRlZmluaXRpb25zLlxuICogT25seSBhZGQgdGhlIG1haW4gR1VJIGZpbGUgaW4gdGhlIHN0eWxlcy5zY3NzLiBPdGhlciBndWkgc3R5bGVzIHdpbGwgYmUgYWRkZWQgaW4gZ3VpL2d1aS5zY3NzXG4gKi9cbkBpbXBvcnQgXCJndWkvZ3VpXCI7XG5cblxuXG4iLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqXG4gKiBTeXN0ZW0gd2lkZSBzZXR0aW5nc1xuICpcbiAqIEFsbCB0aGUgaW1wb3J0ZWQgdmFsdWVzIGFyZSBzZXQgdG8gXCJudWxsXCIgaWYgdGhleSBoYXZlIGEgZGVmYXVsdCB2YWx1ZS5cbiAqIFNvIGlmIHlvdSB3YW50IHRvIHVzZSB0aGVtIGFzIGRlZmF1bHQsIGRvIG5vdCBjaGFuZ2UgdG8gbnVsbCB2YWx1ZS5cbiAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFNldHRpbmdzIGZvciBkZWZhdWx0IG92ZXJ3cml0ZXMgYW5kXG4gICAgR1VJIHJlbGF0ZWQgdmFyaWFibGVzXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi9cbi8vXG4vLyBTdXBwb3J0IGZvciBzeXN0ZW1zL2Jyb3dzZXJzXG4vL1xuQGltcG9ydCBcInN1cHBvcnRzXCI7XG5cbi8vXG4vLyBOYW1lc3BhY2UgZGVmaW5pdGlvblxuLy9cbkBpbXBvcnQgXCJuYW1lc3BhY2VcIjtcblxuLy9cbi8vIEFuaW1hdGlvbiBkZWZpbml0aW9uc1xuLy9cbkBpbXBvcnQgXCJhbmltYXRpb25zXCI7XG5cbi8vXG4vLyBTaXplIGRlZmluaXRpb25zXG4vL1xuQGltcG9ydCBcInNpemVzXCI7XG5cblxuLy9cbi8vIEZvbnQgZGVmaW5pdGlvbnNcbi8vXG5AaW1wb3J0IFwiZm9udHNcIjtcblxuXG4vL1xuLy8gQ29sb3IgZGVmaW5pdGlvbnNcbi8vXG5AaW1wb3J0IFwiY29sb3JzXCI7IiwiLyogQGF1dGhvciBCaWxhbCBDaW5hcmxpICovXG5cbi8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgU3lzdGVtIHN1cHBvcnRzXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi9cbi8vXG4vLyBJRTggc3VwcG9ydHNcbi8vXG4kc3VwcG9ydC1mb3ItaWU4OiBmYWxzZTsiLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBEZWZhdWx0IGNsYXNzL2RlZmluaXRpb24gbmFtZXNcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqL1xuLyoqXG4gKiBOYW1lIHNwYWNlIHByZWZpeFxuICogQWRkcyBhIGRlZmluZWQgbmFtZXNwYWNlIHByZWZpeCB0byBnZW5lcmF0ZWQgY2xhc3MgbmFtZXNcbiAqL1xuJG5hbWVzcGFjZTogbnVsbDtcblxuLyoqXG4gKiBDbGFzcyBuYW1lcyBmb3IgZ3JpZFxuICogQGRlZmF1bHQgJHJvdy1uYW1lOiAncm93J1xuICogQGRlZmF1bHQgJGNvbHVtbi1uYW1lOiAnY29sdW1uJ1xuICogQGRlZmF1bHQgJGNvbHVtbi1uYW1lLXBsdXJhbDogJ2NvbHVtbnMnXG4gKi9cbiRyb3ctbmFtZTogbnVsbDtcbiRjb2x1bW4tbmFtZTogbnVsbDtcbiRjb2x1bW4tbmFtZS1wbHVyYWw6IG51bGw7XG5cbi8qKlxuICogQnV0dG9uIG5hbWVzIGZvciBhY3Rpb25cbiAqXG4gKiBAZGVmYXVsdCAkYWN0aW9uLWJ1dHRvbjogJy1hY3Rpb24nOyAvLyBvbmx5IHVzZWQgZm9yIHNpbWlsYXIgY2xhc3Mgc2VsZWN0b3JcbiAqIEBkZWZhdWx0ICRwcmltYXJ5LWJ1dHRvbjogJ3ByaW1hcnktYWN0aW9uJztcbiAqIEBkZWZhdWx0ICRzZWNvbmRhcnktYnV0dG9uOiAnc2Vjb25kYXJ5LWFjdGlvbic7XG4gKiBAZGVmYXVsdCAkdGVydGlhcnktYnV0dG9uOiAndGVydGlhcnktYWN0aW9uJztcbiAqIEBkZWZhdWx0ICRjYW5jZWwtYnV0dG9uOiAnY2FuY2VsLWFjdGlvbic7XG4gKi9cbiRhY3Rpb24tYnV0dG9uOiBudWxsOyAvLyBvbmx5IHVzZWQgZm9yIHNpbWlsYXIgY2xhc3Mgc2VsZWN0b3JcbiRwcmltYXJ5LWJ1dHRvbjogbnVsbDtcbiRzZWNvbmRhcnktYnV0dG9uOiBudWxsO1xuJHRlcnRpYXJ5LWJ1dHRvbjogbnVsbDtcbiRjYW5jZWwtYnV0dG9uOiBudWxsO1xuXG4vKipcbiAqIEZvbGRlcnNcbiAqIE5vdCBhY3R1YWxseSBhIG5hbWVzcGFjZSBidXQgZm9sZGVyIG5hbWVzIGFsc28gaGF2ZSBkaWZmZXJlbnQgcHJlZmVyZW5jZXNcbiAqIEBkZWZhdWx0ICRpbWFnZXM6ICcuLi9pbWFnZXMvJzsgcmVsYXRpdmUgdG8gc3R5bGVzIGZvbGRlclxuICogQGRlZmF1bHQgJHJldGluYS1zdWZmaXg6ICdAMngnXG4gKi9cbiRpbWFnZXM6IG51bGw7XG4kcmV0aW5hLXN1ZmZpeDogbnVsbDtcbiRwcmVkZWZpbmVkLWNsYXNzZXM6IGZhbHNlO1xuIiwiLyogQGF1dGhvciBCaWxhbCBDaW5hcmxpICovXG5cbi8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQW5pbWF0aW9uIFJlbGF0ZWQgVmFyaWFibGVzXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi9cbi8qKlxuICogRHVyYXRpb25cbiAqIFxuICogRHVyYXRpb24gdGltZSBmb3IgdHJhbnNpdGlvbiBhbmltYXRpb25zXG4gKiBAZGVmYXVsdCAuNHNcbiAqL1xuJGJhc2UtZHVyYXRpb246IG51bGw7XG5cblxuLyoqXG4gKiBFYXNpbmdcbiAqXG4gKiBFYXNpbmcgc3R5bGVcbiAqIEBkZWZhdWx0IGVhc2VcbiAqL1xuJGJhc2UtZWFzaW5nOiBudWxsOyIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBTaXplIERlZmluaXRpb25zXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi9cbi8qKlxuICogU3BhY2luZyBpbiBlbGVtZW50XG4gKlxuICogU2V0cyB0aGUgcGFkZGluZyBzaXplcyBmb3IgYW4gZWxlbWVudFxuICogQGRlZmF1bHQgJGJhc2Utc3BhY2luZyAxZW1cbiAqIEBkZWZhdWx0ICRiYXNlLWlucHV0LXNwYWNpbmcgNXB4XG4gKi9cbiRiYXNlLXNwYWNpbmc6IG51bGw7XG4kYmFzZS1pbnB1dC1zcGFjaW5nOiAxMHB4O1xuXG4vKipcbiAqIEdyaWQgZ3V0dGVyIGFuZCBjb2x1bW5zXG4gKlxuICogRGVmaW5lcyB0aGUgZ3JpZCBndXR0ZXIgc2l6ZSBhbmQgY29sdW1uIGNvdW50IGluIGEgcm93XG4gKiBHcmlkIGNvbHVtbnMgZmxvYXRlZCBieSBkZWZhdWx0LiBCdXQgaXQgaXMgb3B0aW9uYWwgd2hldGhlciBmbG9hdCBvciBub3RcbiAqIGZvciBwZXJjZW50YWdlIHdpZHRocy5cbiAqIEBkZWZhdWx0ICRiYXNlLWd1dHRlcjogMjBweFxuICogQGRlZmF1bHQgJGJhc2UtZ3JpZC1jb2x1bW5zOiAxOFxuICogQGRlZmF1bHQgJGJhc2UtZmxvYXQtd2lkdGhzOiB0cnVlXG4gKi9cblxuJGJhc2UtZ3V0dGVyOiAwO1xuJGJhc2UtZ3JpZC1jb2x1bW5zOiAwO1xuJGJhc2UtZmxvYXQtd2lkdGhzOiBmYWxzZTtcblxuLyoqXG4gKiBCb3JkZXIgV2lkdGhzXG4gKlxuICogQXBwbGllZCBib3JkZXIgd2l0aCBmb3IgaW5wdXQgZmllbGRzIGFuZCB0YWJsZSBib3JkZXJzXG4gKiBAZGVmYXVsdCAkYmFzZS1ib3JkZXItd2lkdGg6IDFweDtcbiAqL1xuJGJhc2UtYm9yZGVyLXdpZHRoOiBudWxsO1xuJGJhc2UtYnV0dG9uLWJvcmRlci1yYWRpdXM6IDIwcHg7XG5cbi8qKlxuICogQ29udGVudCBXaWR0aHNcbiAqL1xuJGJhc2UtbWF4LXdpZHRoOiA5NjBweDtcbiIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIEZvbnRzXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi9cbi8qKlxuICogR2xvYmFsIGZvbnQgZGVmaW5pdGlvbnNcbiAqIEBkZWZhdWx0ICRiYXNlLWZvbnQtc2l6ZTogMTZweFxuICogQGRlZmF1bHQgJGJhc2UtZm9udC1mYW1pbHk6IFwiSGVsdmV0aWNhIE5ldWVcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZlxuICogQGRlZmF1bHQgJGJhc2UtbGluZS1oZWlnaHQ6IDEuNVxuICogQGRlZmF1bHQgJGJhc2UtZm9udC1pY29uOiBudWxsXG4gKi9cblxuJGJhc2UtZm9udC1zaXplOiBudWxsO1xuJGJhc2UtZm9udC1mYW1pbHk6ICBUdXJrY2VsbFNhdHVyYSwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiRiYXNlLWxpbmUtaGVpZ2h0OiBudWxsO1xuJGJhc2UtZm9udC1pY29uOiBudWxsOyIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENvbG9yc1xuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovXG4vKipcbiAqIE5hbWVkIENvbG9yc1xuICpcbiAqIFNvbWUgbmFtZWQgY29sb3JzIGZvciBpbmhlcml0aW5nIGNvbG9ycyBvdmVyIGRpZmZlcmVudCB2YXJpYWJsZXNcbiAqIEBkZWZhdWx0ICRjb2xvci1wcmltYXJ5ICAgIDogIzAwOWJkYztcbiAqIEBkZWZhdWx0ICRjb2xvci1zZWNvbmRhcnkgIDogIzY3YWYwMDtcbiAqIEBkZWZhdWx0ICRjb2xvci10ZXJ0aWFyeSAgIDogI2ZmYTkwMDtcbiAqIEBkZWZhdWx0ICRjb2xvci1jYW5jZWwgICAgIDogI2U4NzM1MjtcbiAqIEBkZWZhdWx0ICRjb2xvci1lcnJvciAgICAgIDogJGNvbG9yLWNhbmNlbDtcbiAqIEBkZWZhdWx0ICRjb2xvci10ZXh0ICAgICAgIDogIzRkNGQ0ZDtcbiAqIEBkZWZhdWx0ICRjb2xvci1saWdodC1ncmF5IDogI2U1ZTVlNTtcbiAqIEBkZWZhdWx0ICRjb2xvci1ncmF5ICAgICAgIDogI2M2YzZjNjtcbiAqIEBkZWZhdWx0ICRjb2xvci1kYXJrLWdyYXkgIDogI2E2YTZhNjtcbiAqIEBkZWZhdWx0ICRjb2xvci13aGl0ZSAgICAgIDogI2ZmZjtcbiAqIEBkZWZhdWx0ICRjb2xvci1ibGFjayAgICAgIDogIzAwMDtcbiAqL1xuJGNvbG9yLXByaW1hcnk6ICNmZWNjMDA7XG4kY29sb3Itc2Vjb25kYXJ5OiAjZjAxODgzO1xuJGNvbG9yLXRlcnRpYXJ5OiAjM2ZiMGU4O1xuJGNvbG9yLWNhbmNlbDogbnVsbDtcbiRjb2xvci1lcnJvcjogbnVsbDtcbiRjb2xvci10ZXh0OiAjNGQ0ZDRkO1xuJGNvbG9yLWxpZ2h0LWdyYXk6IG51bGw7XG4kY29sb3ItZ3JheTogbnVsbDtcbiRjb2xvci1kYXJrLWdyYXk6IG51bGw7XG4kY29sb3Itd2hpdGU6IG51bGw7XG4kY29sb3ItYmxhY2s6IG51bGw7XG4kY29sb3ItYm9yZGVyOiAjZGZkZmRmO1xuXG4vKipcbiAqIFNpbXBsZSBjb2xvcnMgZm9yIGdlbmVyYWwgc3R5bGluZ1xuICogQGRlZmF1bHQgJGJhc2UtY29sb3I6ICMyMjJcbiAqL1xuJGJhc2UtY29sb3I6ICRjb2xvci10ZXh0O1xuJGJhc2UtYW5jaG9yLWNvbG9yOiAkY29sb3ItdGV4dDtcbiRiYXNlLWFuY2hvci1oaWdobGlnaHQ6ICRjb2xvci1wcmltYXJ5O1xuXG4vKipcbiAqIEJvcmRlciBDb2xvcnNcbiAqXG4gKiBDb2xvcnMgYXBwbGllZCB0byBib3JkZXIgaW4gZm9jdXMsIGRpc2FibGVkLCByZWFkb25seSBhbmQgc3RhdGlvbmFyeSBzdGF0ZVxuICogQGRlZmF1bHQgJGJhc2UtYm9yZGVyLWNvbG9yOiAjYzZjNmM2O1xuICogQGRlZmF1bHQgJGJhc2UtYm9yZGVyLWhpZ2hsaWdodDogI2E2YTZhNjtcbiAqIEBkZWZhdWx0ICRiYXNlLWJvcmRlci1kaXNhYmxlZDogI2U5ZTllOTtcbiAqIEBkZWZhdWx0ICRiYXNlLWJvcmRlci1yZWFkb25seTogI2M2YzZjNjtcbiAqL1xuJGJhc2UtYm9yZGVyLWNvbG9yOiAkY29sb3ItZ3JheTtcbiRiYXNlLWJvcmRlci1oaWdobGlnaHQ6ICRjb2xvci1kYXJrLWdyYXk7XG4kYmFzZS1ib3JkZXItZGlzYWJsZWQ6ICRjb2xvci1saWdodC1ncmF5O1xuJGJhc2UtYm9yZGVyLXJlYWRvbmx5OiAkY29sb3ItZ3JheTtcblxuLyoqXG4gKiBGaWVsZCBCYWNrZ3JvdW5kIENvbG9yc1xuICpcbiAqIENvbG9yIGFwcGxpZWQgdG8gZmllbGQgYmFja2dyb3VuZCBpbiBmb2N1cywgZGlzYWJsZWQsIHJlYWRvbmx5IGFuZCBzdGF0aW9uYXJ5IHN0YXRlXG4gKiBAZGVmYXVsdCAkYmFzZS1maWVsZC1iYWNrZ3JvdW5kOiAjZmZmO1xuICogQGRlZmF1bHQgJGJhc2UtZmllbGQtaGlnaGxpZ2h0OiAjZmZmO1xuICogQGRlZmF1bHQgJGJhc2UtZmllbGQtZGlzYWJsZWQ6ICNjNmM2YzY7XG4gKiBAZGVmYXVsdCAkYmFzZS1maWVsZC1yZWFkb25seTogI2U1ZTVlNTtcbiAqL1xuJGJhc2UtZmllbGQtYmFja2dyb3VuZDogJGNvbG9yLWxpZ2h0LWdyYXk7XG4kYmFzZS1maWVsZC1oaWdobGlnaHQ6ICRjb2xvci13aGl0ZTtcbiRiYXNlLWZpZWxkLWRpc2FibGVkOiAkY29sb3ItZ3JheTtcbiRiYXNlLWZpZWxkLXJlYWRvbmx5OiAkY29sb3ItbGlnaHQtZ3JheTtcblxuLyoqXG4gKiBCdXR0b24gY29sb3JzXG4gKi9cbi8qKlxuICogRGVmYXVsdCBCdXR0b25cbiAqXG4gKiBVbnN0eWxlZCwgbm9ybWFsIGJ1dHRvblxuICogQGRlZmF1bHQgJGJhc2UtYnV0dG9uLWNvbG9yOiAjZTVlNWU1O1xuICogQGRlZmF1bHQgJGJhc2UtYnV0dG9uLXRleHQtY29sb3I6ICMyMjI7XG4gKi9cbiRiYXNlLWJ1dHRvbi1jb2xvcjogJGNvbG9yLWxpZ2h0LWdyYXk7XG4kYmFzZS1idXR0b24tdGV4dC1jb2xvcjogJGNvbG9yLWRhcmstZ3JheTtcblxuLyoqXG4gKiBQcmltYXJ5IEFjdGlvbiBCdXR0b25cbiAqXG4gKiBNYXliZSB1c2VkIGZvciBjYWxsLXRvLWFjdGlvbiBidXR0b24gb3IvYW5kIHNhdmUvc3VibWl0IGJ1dHRvbnMgaW4gZm9ybXNcbiAqIEBkZWZhdWx0ICRiYXNlLXByaW1hcnktY29sb3I6ICMwMDliZGM7XG4gKiBAZGVmYXVsdCAkYmFzZS1wcmltYXJ5LXRleHQtY29sb3I6ICNmZmY7XG4gKi9cbiRiYXNlLXByaW1hcnktY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuJGJhc2UtcHJpbWFyeS10ZXh0LWNvbG9yOiAjNzQzZTgyO1xuXG4vKipcbiAqIFNlY29uZGFyeSBBY3Rpb24gQnV0dG9uXG4gKlxuICogVXNlZnVsIGZvciBpbmRpY2F0aW9uIHNlY29uZGFyeSBhY3Rpb24gaW4gYSBmb3JtIG5lYXIgdGhlIHByaW1hcnkgYWN0aW9uIGJ1dHRvblxuICogQGRlZmF1bHQgJGJhc2Utc2Vjb25kYXJ5LWNvbG9yOiAjNjdhZjAwO1xuICogQGRlZmF1bHQgJGJhc2Utc2Vjb25kYXJ5LXRleHQtY29sb3I6ICNmZmY7XG4gKi9cbiRiYXNlLXNlY29uZGFyeS1jb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcbiRiYXNlLXNlY29uZGFyeS10ZXh0LWNvbG9yOiAkY29sb3Itd2hpdGU7XG5cbi8qKlxuICogVGVydGlhcnkgQWN0aW9uIEJ1dHRvblxuICpcbiAqIFVzZWZ1bCBmb3IgYWN0aW9ucyB3aGV0aGVyIHRoZXkgYXJlIG5vdCBmaXQgZm9yIHByaW1hcnkgb3Igc2Vjb25kYXJ5XG4gKiBAZGVmYXVsdCAkYmFzZS10ZXJ0aWFyeS1jb2xvcjogI2ZmYTkwMDtcbiAqIEBkZWZhdWx0ICRiYXNlLXRlcnRpYXJ5LXRleHQtY29sb3I6ICNmZmY7XG4gKi9cbiRiYXNlLXRlcnRpYXJ5LWNvbG9yOiAkY29sb3ItdGVydGlhcnk7XG4kYmFzZS10ZXJ0aWFyeS10ZXh0LWNvbG9yOiAkY29sb3Itd2hpdGU7XG5cbi8qKlxuICogQ2FuY2VsIEFjdGlvbiBCdXR0b25cbiAqXG4gKiBTaW1wbHkgdXNlZCBmb3IgY2FuY2VsIGJ1dHRvbiBmb3IgYSBmb3JtIG9yIGNhbGwtdG8tYWN0aW9uLCBjb25maXJtYXRpb24gZXRjLlxuICogQGRlZmF1bHQgJGJhc2UtY2FuY2VsLWNvbG9yOiAjZTg3MzUyO1xuICogQGRlZmF1bHQgJGJhc2UtY2FuY2VsLXRleHQtY29sb3I6ICNmZmY7XG4gKi9cbiRiYXNlLWNhbmNlbC1jb2xvcjogJGNvbG9yLWNhbmNlbDtcbiRiYXNlLWNhbmNlbC10ZXh0LWNvbG9yOiAkY29sb3Itd2hpdGU7IiwiLyogQGF1dGhvciBCaWxhbCBDaW5hcmxpICovXG5cbi8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ2FmZmVpbmUgXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi9cbi8vXG4vLyBGdW5jdGlvbnNcbi8vXG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Z1bmN0aW9uc1wiO1xuXG5cbi8vXG4vLyBNaXhpbnNcbi8vXG5AaW1wb3J0IFwibWl4aW5zL21peGluc1wiOyIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFN5c3RlbSBGdW5jdGlvbnMgZm9yIGludGVybmFsIHVzYWdlXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi9cbi8vXG4vLyBHZW5lcmljIGZ1bmN0aW9uc1xuLy9cbkBpbXBvcnQgXCJnZW5lcmljXCI7XG5cbi8vXG4vLyBUZXh0IHJlbGF0ZWQgZnVuY3Rpb25zXG4vL1xuQGltcG9ydCBcInRleHRcIjtcblxuLy9cbi8vIFN0cmluZyBNYW5pcHVsYXRpb24gRnVuY3Rpb25zXG4vL1xuQGltcG9ydCBcInN0cmluZ1wiOyIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIEdlbmVyaWMgRnVuY3Rpb25zXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi9cbi8qKlxuICAqIFJlbW92ZSB1bml0c1xuICAqL1xuQGZ1bmN0aW9uIHJlbW92ZS11bml0KCRudW1iZXIpe1xuICAgIEByZXR1cm4gJG51bWJlciAvICgkbnVtYmVyICogMCArIDEpO1xufSIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFRleHQgUmVsYXRlZCBGdW5jdGlvbnNcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqL1xuLyoqXG4gICogUmVtIHRvIFBYXG4gICovXG5AZnVuY3Rpb24gcmVtLXRvLXB4KCRmb250LXNpemUpIHtcblx0JGNvbnZlcnQtYmFzZTogMTZweDtcblx0XG5cdEBpZiB2YXJpYWJsZV9leGlzdHMoYmFzZS1mb250LXNpemUpIHtcblx0XHQkY29udmVydC1iYXNlOiAkYmFzZS1mb250LXNpemU7XG5cdH1cblx0XG4gICAgJHU6IHVuaXQoJGZvbnQtc2l6ZSk7XG5cbiAgICBAaWYoJHUgPT0gJ3B4Jyl7XG4gICAgICAgIEByZXR1cm4gJGZvbnQtc2l6ZTtcbiAgICB9XG5cbiAgICAkdW5pdGxlc3M6IHJlbW92ZS11bml0KCRmb250LXNpemUpO1xuICAgIEByZXR1cm4gJHVuaXRsZXNzICogJGNvbnZlcnQtYmFzZTtcbn1cblxuLyoqXG4gKiBSRU0gY29udmVydGVyXG4gKiBpbiBzdHlsZSdzIGNvbmZpZywgd2UgaG9wZSB0byBoYXZlIGEgYmFzZS1mb250LXNpemUgdmFyaWFibGUsXG4gKiBpZiBub3QsIHdlIGRlZmluZSBpdCBhY2NvcmRpbmcgdG8gc3RhbmRhcnQgaHRtbCBmb250LXNpemVcbiAqL1xuQGZ1bmN0aW9uIHJlbSgkZm9udC1zaXplKSB7XG5cdCRjb252ZXJ0LWJhc2U6IDE2cHg7XG5cdFxuXHRAaWYgdmFyaWFibGVfZXhpc3RzKGJhc2UtZm9udC1zaXplKSB7XG5cdFx0JGNvbnZlcnQtYmFzZTogJGJhc2UtZm9udC1zaXplO1xuXHR9XG5cdFxuICAgICR1OiB1bml0KCRmb250LXNpemUpO1xuXG4gICAgLy8gcmVtIGNhbGN1bGF0aW9uc1xuICAgIEBpZiAoJHUgPT0gJ3JlbScpe1xuICAgICAgICBAcmV0dXJuICRmb250LXNpemU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgICRjb252ZXJ0OiAkZm9udC1zaXplLyRjb252ZXJ0LWJhc2U7XG4gICAgICAgIEByZXR1cm4gI3skY29udmVydH1yZW07XG4gICAgfVxufSIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFN0cmluZyBNYW5pcHVsYXRpb24gRnVuY3Rpb25zXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi9cbi8qKlxuICAqIFN0cmluZyBSZXBsYWNlbWVudFxuICAqIE1pbWljcyB0aGUgUEhQJ3Mgc3RyX3JlcGxhY2UgZnVuY3Rpb25cbiAgKiBAcGFyYW0ge3N0cmluZ30gJHNlYXJjaCAgIFRoZSB2YWx1ZSBiZWluZyBzZWFyY2hlZCBmb3IsIG90aGVyd2lzZSBrbm93biBhcyB0aGUgbmVlZGxlXG4gICogQHBhcmFtIHtzdHJpbmd9ICRyZXBsYWNlICBUaGUgcmVwbGFjZW1lbnQgdmFsdWUgdGhhdCByZXBsYWNlcyBmb3VuZCBzZWFyY2ggdmFsdWVzXG4gICogQHBhcmFtIHtzdHJpbmd9ICRzdWJqZWN0ICBUaGUgc3RyaW5nIGJlaW5nIHNlYXJjaGVkIGFuZCByZXBsYWNlZCBvbiwgb3RoZXJ3aXNlIGtub3duIGFzIHRoZSBoYXlzdGFjay5cbiAgKi9cbkBmdW5jdGlvbiBzdHItcmVwbGFjZSgkc3RyaW5nLCAkc3Vic3RyLCAkbmV3c3Vic3RyLCAkYWxsOiAwKSB7XG4gICRwb3NpdGlvbi1mb3VuZDogc3RyLWluZGV4KCRzdHJpbmcsICRzdWJzdHIpO1xuICAkcHJvY2Vzc2VkOiAoKTtcblxuICBAd2hpbGUgKCRwb3NpdGlvbi1mb3VuZCBhbmQgJHBvc2l0aW9uLWZvdW5kID4gMCkge1xuICAgICRsZW5ndGgtc3Vic3RyOiBzdHItbGVuZ3RoKCRzdWJzdHIpO1xuICAgICRwcm9jZXNzZWQ6IGFwcGVuZCgkcHJvY2Vzc2VkLCBzdHItc2xpY2UoJHN0cmluZywgMCwgJHBvc2l0aW9uLWZvdW5kIC0gMSkpO1xuICAgICRwcm9jZXNzZWQ6IGFwcGVuZCgkcHJvY2Vzc2VkLCAkbmV3c3Vic3RyKTtcbiAgICAkc3RyaW5nOiBzdHItc2xpY2UoJHN0cmluZywgJHBvc2l0aW9uLWZvdW5kICsgJGxlbmd0aC1zdWJzdHIpO1xuXG4gICAgJHBvc2l0aW9uLWZvdW5kOiAwO1xuXG4gICAgQGlmICgkYWxsID4gMCkge1xuICAgICAgJHBvc2l0aW9uLWZvdW5kOiBzdHItaW5kZXgoJHN0cmluZywgJHN1YnN0cik7XG4gICAgfVxuICB9XG5cbiAgJHByb2Nlc3NlZDogYXBwZW5kKCRwcm9jZXNzZWQsICRzdHJpbmcpO1xuICAkc3RyaW5nOiBcIlwiO1xuXG4gIEBlYWNoICRzIGluICRwcm9jZXNzZWQge1xuICAgICRzdHJpbmc6ICN7JHN0cmluZ30jeyRzfTtcbiAgfVxuXG4gIEByZXR1cm4gJHN0cmluZztcbn1cblxuXG4vKipcbiAgKiBDYXNlIGluc2Vuc2l0aXZlIFN0cmluZyBSZXBsYWNlbWVudFxuICAqIE1pbWljcyB0aGUgUEhQJ3Mgc3RyX2lyZXBsYWNlIGZ1bmN0aW9uXG4gICogQHBhcmFtIHtzdHJpbmd9ICRzZWFyY2ggICBUaGUgdmFsdWUgYmVpbmcgc2VhcmNoZWQgZm9yLCBvdGhlcndpc2Uga25vd24gYXMgdGhlIG5lZWRsZVxuICAqIEBwYXJhbSB7c3RyaW5nfSAkcmVwbGFjZSAgVGhlIHJlcGxhY2VtZW50IHZhbHVlIHRoYXQgcmVwbGFjZXMgZm91bmQgc2VhcmNoIHZhbHVlc1xuICAqIEBwYXJhbSB7c3RyaW5nfSAkc3ViamVjdCAgVGhlIHN0cmluZyBiZWluZyBzZWFyY2hlZCBhbmQgcmVwbGFjZWQgb24sIG90aGVyd2lzZSBrbm93biBhcyB0aGUgaGF5c3RhY2suXG4gICovXG5AZnVuY3Rpb24gc3RyLWlyZXBsYWNlKCRzZWFyY2gsICRyZXBsYWNlLCAkc3ViamVjdCkge1x0XG5cdEByZXR1cm4gJHN1YmplY3Q7XG59XG4iLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBNaXhpbnMgZm9yIEludGVybmFsIE1lbGFuZ2UgVXNhZ2VcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqL1xuLy9cbi8vIEdlbmVyaWMgTWl4aW5zXG4vL1xuQGltcG9ydCBcImdlbmVyaWNcIjtcblxuLy9cbi8vIFRleHQgUmVsYXRlZCBNaXhpbnNcbi8vXG5AaW1wb3J0IFwidGV4dFwiO1xuXG5cbi8vXG4vLyBTaXplIFJlbGF0ZWQgTWl4aW5zXG4vL1xuQGltcG9ydCBcInNpemVcIjtcblxuXG4vL1xuLy8gQ1NTMyBSZWxhdGVkIE1peGluc1xuLy9cbkBpbXBvcnQgXCJjc3MzL2NzczNcIjtcblxuXG4vL1xuLy8gTWVkaWEgUXVlcnkgUmVsYXRlZCBNaXhpbnNcbi8vXG5AaW1wb3J0IFwibWVkaWFxdWVyaWVzXCI7XG5cblxuLy9cbi8vIEFycm93c1xuLy9cbkBpbXBvcnQgXCJhcnJvd1wiO1xuXG5cbi8vXG4vLyBQbGFjZWhvbGRlclxuLy9cbkBpbXBvcnQgXCJwbGFjZWhvbGRlclwiO1xuXG5cbi8vXG4vLyBQb3NpdGlvbnNcbi8vXG5AaW1wb3J0IFwicG9zaXRpb25cIjtcblxuLy9cbi8vIEJyZWFrcG9pbnRzXG4vL1xuQGltcG9ydCBcImJyZWFrcG9pbnRzXCI7XG5cbi8vXG4vLyBBcHBlYXJhbmNlXG4vL1xuQGltcG9ydCBcImFwcGVhcmFuY2VcIjtcblxuLy9cbi8vIFNjcm9sbGJhclxuLy9cbkBpbXBvcnQgXCJzY3JvbGxiYXJcIjtcbiIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIEdlbmVyaWMgTWl4aW5zXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi9cbi8qKlxuICogQWRkcyBwcmVmaXhlZCB2ZXJzaW9uIG9mIGEgcHJvcGVydHkgYWNjb3JkaW5nIHRvIGxpc3RlZCB2ZW5kb3JzXG4gKi9cbkBtaXhpbiBwcmVmaXhlcigkcHJvcGVydHksICR2YWx1ZSwgJHZlbmRvcnM6IHdlYmtpdCBtb3ope1xuICAgIEBpZiBsZW5ndGgoJHZlbmRvcnMpID4gMCB7IC8vIGFkZCBwcmVmaXhlZCB2ZXJzaW9ucyBpZiBhIHZlbmRvciBsaXN0IGlzIGRlZmluZWRcbiAgICAgICAgQGVhY2ggJHZlbmRvciBpbiAkdmVuZG9ycyB7XG4gICAgICAgICAgICAtI3skdmVuZG9yfS0jeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfTsgLy8gcHJlZml4IGZyZWUgdmFsdWUgYXQgdGhlIGVuZFxufVxuXG5cbi8qKlxuICogQWRkcyBwcmVmaXhlZCB2ZXJzaW9uIG9mIHZhbHVlcyBpbiBhIHByb3BlcnR5XG4gKi9cbkBtaXhpbiB2YWx1ZS1wcmVmaXhlcigkcHJvcGVydHksICR2YWx1ZSwgJGNvbnRlbnQsICR2ZW5kb3JzOiB3ZWJraXQgbW96KXtcbiAgICAkcC1vcGVuOiBcIihcIjtcbiAgICAkcC1jbG9zZTogXCIpXCI7XG4gICAgJF9jb250ZW50IDogJyc7XG5cbiAgICBAaWYobGVuZ3RoKCRjb250ZW50KSA+IDApe1xuICAgICAgICAkX2NvbnRlbnQ6ICN7JHAtb3Blbn0jeyRjb250ZW50fSN7JHAtY2xvc2V9O1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJHZlbmRvcnMpID4gMCB7XG4gICAgICAgIEBlYWNoICR2ZW5kb3IgaW4gJHZlbmRvcnMge1xuICAgICAgICAgICAgI3skcHJvcGVydHl9OiAtI3skdmVuZG9yfS0jeyR2YWx1ZX0jeyRfY29udGVudH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0jeyRfY29udGVudH07XG59XG4iLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBUZXh0IFJlbGF0ZWQgTWl4aW5zXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi9cbi8qKlxuICogRm9udGZhY2VcbiAqXG4gKiBodHRwOi8vY2FuaXVzZS5jb20vI3NlYXJjaD1mb250LWZhY2VcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9AZm9udC1mYWNlXG4gKiBGb3IgbW9kZXJuIGFwcHJvYWNoLCB3b2ZmIGFuZCB0dGYgZm9ybWF0IGlzIHN1cHBvcnRlZCBhbGwgbWFqb3IgYnJvd3NlcnMuIElmIHlvdSBuZWVkIHRvIHN1cHBvcnRcbiAqIEludGVybmV0IEV4cGxvcmVyIDgsIHdpdGggc2V0dGluZyBcIiRzdXBwb3J0LWZvci1pZThcIiB2YXJpYWJsZSB0byBcInRydWVcIiwgdGhlIGVvdCBmaWxlIGZvcm1hdFxuICogYWxzbyBhZGRlZCB0byBtaXhpbiBvdXRwdXQuIFlvdSBhbHNvIG5lZWQgdG8gcHJvdmlkZSByZWxhdGVkIGZpbGUgZm9ybWF0cyBpbiB5b3VyIGZvbnRzIGZvbGRlci5cbiAqXG4gKiBAZm9udC1mYWNlIHtcbiAgICAgICAgICAgICAgWyBmb250LWZhbWlseTogPGZhbWlseS1uYW1lPjsgXT9cbiAgICAgICAgICAgfHwgWyBzcmM6IFsgPHVyaT4gW2Zvcm1hdCg8c3RyaW5nPiMpXT8gfCA8Zm9udC1mYWNlLW5hbWU+IF0jOyBdP1xuICAgICAgICAgICB8fCBbIHVuaWNvZGUtcmFuZ2U6IDx1cmFuZ2U+IzsgXT9cbiAgICAgICAgICAgfHwgWyBmb250LXZhcmlhbnQ6IDxmb250LXZhcmlhbnQ+OyBdP1xuICAgICAgICAgICB8fCBbIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogbm9ybWFsfDxmZWF0dXJlLXRhZy12YWx1ZT4jOyBdP1xuICAgICAgICAgICB8fCBbIGZvbnQtc3RyZXRjaDogPGZvbnQtc3RyZXRjaD47IF0/XG4gICAgICAgICAgIHx8IFsgZm9udC13ZWlnaHQ6IDx3ZWlnaHQ+OyBdP1xuICAgICAgICAgICB8fCBbIGZvbnQtc3R5bGU6IDxzdHlsZT47IF0/XG4gICB9XG4gKi9cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmaWxlLCAkd2VpZ2h0OiBub3JtYWwsICRzdHlsZTogbm9ybWFsKSB7XG4gICAgJGllOC1zdXBwb3J0OiBmYWxzZTtcbiAgICAkd29mZjItc3VwcG9ydDogZmFsc2U7XG4gICAgJGVvdDogXCJcIjtcbiAgICAkd29mZjI6IFwiXCI7XG5cbiAgICBAaWYgdmFyaWFibGVfZXhpc3RzKHN1cHBvcnQtZm9yLWllOCkge1xuICAgICAgICAkaWU4LXN1cHBvcnQ6ICRzdXBwb3J0LWZvci1pZTg7XG4gICAgfVxuXG4gICAgQGlmIHZhcmlhYmxlX2V4aXN0cyhzdXBwb3J0LWZvci13b2ZmMil7XG4gICAgICAgICR3b2ZmMi1zdXBwb3J0OiAkc3VwcG9ydC1mb3Itd29mZjI7XG4gICAgfVxuXG4gICAgQGlmICgkaWU4LXN1cHBvcnQgPT0gdHJ1ZSkge1xuICAgICAgICAkZW90OiAndXJsKFwiLi4vZm9udHMvI3skZmlsZX0uZW90PyNjYWZmZWluZVwiKSBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSwnXG4gICAgfVxuXG4gICAgQGlmICgkd29mZjItc3VwcG9ydCA9PSB0cnVlKXtcbiAgICAgICAgJHdvZmYyOiAndXJsKFwiLi4vZm9udHMvI3skZmlsZX0ud29mZjI/I2NhZmZlaW5lXCIpIGZvcm1hdChcIndvZmYyXCIpLCdcbiAgICB9XG5cbiAgICBAZm9udC1mYWNlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IFwiI3skbmFtZX1cIjtcbiAgICAgICAgc3JjOiAjeyRlb3R9XG4gICAgICAgICAgICAgI3skd29mZjJ9XG4gICAgICAgICAgICAgdXJsKFwiLi4vZm9udHMvI3skZmlsZX0ud29mZj9jYWZmZWluZVwiKSBmb3JtYXQoXCJ3b2ZmXCIpLFxuICAgICAgICAgICAgIHVybChcIi4uL2ZvbnRzLyN7JGZpbGV9LnR0Zj9jYWZmZWluZVwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcbiAgICB9XG59XG5cbi8qKlxuICogZm9udGZhY2VcbiAqIFRoaXMgbWl4aW4gaXMgYSBjYWxsYmFjayBzdXBwb3J0IGZvciB2ZXJ5IGVhcmx5IHZlcnNpb25zIG9mIENhZmZlaW5lXG4gKi9cbkBtaXhpbiBmb250ZmFjZSgkbmFtZSwgJGZpbGUsICR3ZWlnaHQ6IG5vcm1hbCwgJHN0eWxlOiBub3JtYWwpIHtcbiAgICBAaW5jbHVkZSBmb250LWZhY2UoJG5hbWUsICRmaWxlLCAkd2VpZ2h0LCAkc3R5bGUpO1xuXG4gICAgQHdhcm4gXCJmb250ZmFjZSBtaXhpbiBpcyBnb2luZyB0byBiZSBkZXByZWNpYXRlZCBpbiBuZXdlciB2ZXJzaW9ucy4gUGxlYXNlIHlvdSBmb250LWZhY2UgbWl4aW4gaW5zdGVhZFwiO1xufVxuXG4vKipcbiAgKiBGb250IEljb25cbiAgKlxuICAqIE91dHB1dHMgYW4gaWNvbiBmb250IGRlZmluaXRpb24gd2l0aCBzdXBwb3J0aW5nIGNsYXNzIGF0dHJpYnV0ZSBzZWxlY3RvcnMuXG4gICogRm9yIHByZXZlbnRpbmcgZm9udCBtaXN1c2UgZm9yIHRoZSBlbGVtZW50LCB0aGUgY2xhc3Mgc2VsZWN0b3IgYXBwbGllZCB0byA6YmVmb3JlIHBzZXVvZGUgZWxlbWVudFxuICAqIGluc3RlYWQgb2YgdGhlIGVsZW1lbnQgaXRzZWxmLlxuICAqL1xuQG1peGluIGZvbnQtaWNvbigkbmFtZSwgJGZpbGUpIHtcbiAgICAkcHJlZml4LWljb246ICdpY29uLSc7XG4gICAgJHBsYWNlaG9sZGVyLWljb246ICclZm9udC1pY29uJztcblxuICAgIEBpZiB2YXJpYWJsZV9leGlzdHMoaWNvbi1wcmVmaXgpIHtcbiAgICAgICAgJHByZWZpeC1pY29uOiAkaWNvbi1wcmVmaXg7XG4gICAgfVxuXG4gICAgQGlmIHZhcmlhYmxlX2V4aXN0cyhpY29uLXBsYWNlaG9sZGVyKSB7XG4gICAgICAgICRwbGFjZWhvbGRlci1pY29uOiAkaWNvbi1wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBmb250LWZhY2UoJG5hbWUsICRmaWxlKTtcblxuICAgICN7JHBsYWNlaG9sZGVyLWljb259IHtcbiAgICAgICAgZm9udDoge1xuICAgICAgICAgICAgZmFtaWx5OiAkbmFtZTtcbiAgICAgICAgICAgIHN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICB2YXJpYW50OiBub3JtYWw7XG4gICAgICAgICAgICB3ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgfVxuICAgIDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuXG4gICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgICAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICAgIH1cblxuICAgIFtjbGFzc149XCIjeyRwcmVmaXgtaWNvbn1cIl06YmVmb3JlLCBbY2xhc3MqPVwiICN7JHByZWZpeC1pY29ufVwiXTpiZWZvcmUge1xuICAgICAgICBAZXh0ZW5kICN7JHBsYWNlaG9sZGVyLWljb259O1xuICAgIH1cbn1cblxuLyoqXG4gKiBGb250LVNpemUgY2FsbGJhY2tcbiAqIFxuICogRm9yIG1vZGVybiB1c2FnZSwgY29udmVydHMgYW5kIG91dHB1dCBmb250LXNpemUgd2l0aCByZW0gdW5pdHMuXG4gKi9cbkBtaXhpbiBmb250LXNpemUoJGZvbnQtc2l6ZSkge1xuICAgICRpZTgtc3VwcG9ydDogdHJ1ZTtcbiAgICBAaWYgdmFyaWFibGVfZXhpc3RzKHN1cHBvcnQtZm9yLWllOCkge1xuICAgICAgICAkaWU4LXN1cHBvcnQ6ICRzdXBwb3J0LWZvci1pZTg7XG4gICAgfVxuXG4gICAgQGlmICgkZm9udC1zaXplID09IGluaGVyaXQpIHtcbiAgICAgICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIH0gQGVsc2Uge1xuICAgICAgICBAaWYgKCRpZTgtc3VwcG9ydCA9PSB0cnVlKSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS10by1weCgkZm9udC1zaXplKTtcbiAgICAgICAgfVxuICAgICAgICBmb250LXNpemU6IHJlbSgkZm9udC1zaXplKTtcbiAgICB9XG59XG5cbi8qKlxuICogRGlzYWJsZSBTZWxlY3RcbiAqIEl0IGlzIHVzZWZ1bCBmb3IgbW9iaWwgYXBwbGljYXRpb25zXG4gKiBQcmV2ZW50cyB0ZXh0IHNlbGVjdGlvbiB3aGVuIHN3aXBlIG9yIGRvdWJsZSBjbGlja1xuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9dXNlci1zZWxlY3RcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy91c2VyLXNlbGVjdFxuICogRm9ybWFsIHN5bnRheDogbm9uZSB8IHRleHQgfCBhbGwgfCBlbGVtZW50XG4gKiBDdXJyZW50IHNwZWMsIGFsbCB2ZW5kb3JzIG5lZWQgcHJlZml4aW5nXG4gKi9cbkBtaXhpbiBkaXNhYmxlLXRleHQtc2VsZWN0KCkge1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKCd1c2VyLXNlbGVjdCcsIG5vbmUsIHdlYmtpdCBtb3ogbXMpO1xufVxuXG4vKipcbiAqIFNlbGVjdGlvblxuICpcbiAqIFRoZSA6OnNlbGVjdGlvbiBDU1MgcHNldWRvLWVsZW1lbnQgYXBwbGllcyBydWxlcyB0byB0aGUgcG9ydGlvbiBvZiBhIGRvY3VtZW50IFxuICogdGhhdCBoYXMgYmVlbiBoaWdobGlnaHRlZCAoZS5nLiwgc2VsZWN0ZWQgd2l0aCB0aGUgbW91c2Ugb3IgYW5vdGhlciBwb2ludGluZyBkZXZpY2UpIGJ5IHRoZSB1c2VyLlxuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9c2VsZWN0aW9uXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvOjpzZWxlY3Rpb25cbiAqIEZvcm1hbCBzeW50YXg6IGNvbnRlbnRcbiAqIE9ubHkgYSBzbWFsbCBwYXJ0IG9mIHRleHQgcmVsYXRlZCBwcm9wZXJ0aWVzIHN1cHBvcnRzLiBZb3UgY2FuIGNoYW5nZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgaW4gc2VsZWN0aW9uc8SwXG4gKiBjb2xvciwgYmFja2dyb3VuZC1jb2xvciwgY3Vyc29yLCBvdXRsaW5lLCB0ZXh0LWRlY29yYXRpb24sIHRleHQtZW1waGFzaXMtY29sb3IgYW5kIHRleHQtc2hhZG93LlxuICpcbiAqIE5vdGVzOlxuICogdGV4dC1zaGFkb3cgaW4gOjpzZWxlY3Rpb24gaXMgc3VwcG9ydGVkIGJ5IENocm9tZSwgU2FmYXJpIGFuZCBGaXJlZm94IDE3Ky5cbiAqXG4gKiBUaGUgOjpzZWxlY3Rpb24gQ1NTIHBzZXVkby1lbGVtZW50IHdhcyBkcmFmdGVkIGZvciBDU1MgU2VsZWN0b3JzIExldmVsIDMgXG4gKiBidXQgcmVtb3ZlZCBiZWZvcmUgaXQgcmVhY2hlZCB0aGUgUmVjb21tZW5kYXRpb24gc3RhdHVzLiBJdCB3YXMgcmVhZGRlZCBhcyBwYXJ0IG9mIHRoZSBQc2V1ZG8tRWxlbWVudHMgTGV2ZWwgNCBkcmFmdC5cbiAqL1xuQG1peGluIHNlbGVjdGlvbigkY29udGVudC4uLikge1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKHNlbGVjdGlvbiwgJGNvbnRlbnQsIG1veik7XG59IiwiLyogQGF1dGhvciBCaWxhbCBDaW5hcmxpICovXG5cbi8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgU2l6ZSBSZWxhdGVkIE1peGluc1xuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovXG4vKipcbiAqIFNxdWFyZSBvciBkZXNpcmVkIHdpZHRoLWhlaWdodCBmb3IgYW4gZWxlbWVudFxuICovXG5AbWl4aW4gZGltcygkd2lkdGgsICRoZWlnaHQ6IG51bGwpIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIEBpZiAkaGVpZ2h0ID09IG51bGwge1xuICAgICAgICBoZWlnaHQ6ICR3aWR0aDtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxufSIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENTUzMgUmVsYXRlZCBNaXhpbnNcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqL1xuLy9cbi8vIEJhY2tncm91bmQgR3JhZGllbnRcbi8vXG5AaW1wb3J0IFwiYmFja2dyb3VuZC1ncmFkaWVudFwiO1xuXG4vL1xuLy8gVGV4dCBHcmFkaWVudFxuLy9cbkBpbXBvcnQgXCJ0ZXh0LWdyYWRpZW50XCI7XG5cblxuLy9cbi8vIEJveCBTaGFkb3dcbi8vXG5AaW1wb3J0IFwiYm94LXNoYWRvd1wiO1xuXG5cbi8vXG4vLyBUcmFuc2l0aW9uXG4vL1xuQGltcG9ydCBcInRyYW5zaXRpb25cIjtcblxuXG4vL1xuLy8gVHJhbnNmb3JtXG4vL1xuQGltcG9ydCBcInRyYW5zZm9ybVwiO1xuXG5cbi8vXG4vLyBBbmltYXRpb25cbi8vXG5AaW1wb3J0IFwiYW5pbWF0aW9uXCI7XG5cblxuLy9cbi8vIENvbHVtbnNcbi8vXG5AaW1wb3J0IFwiY29sdW1uc1wiO1xuXG4vL1xuLy8gRmxleFxuLy9cbkBpbXBvcnQgXCJmbGV4XCI7XG4iLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBCYWNrZ3JvdW5kIEdyYWRpZW50IE1peGluc1xuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovXG4vKipcbiAqIFNpbXBsZSBMaW5lYXIgZ3JhZGllbnRcbiAqIEdldHMgdGhlIGxpbmVhciBncmFkaWVudCBjb250ZW50IGFzIGEgcGFyYW1ldGVyIGFuZCBvdXRwdXRzIHRoZSBwcmVmaXhlZCB2ZXJzaW9uLlxuICogRm9yIG9sZCBicm93c2VycyBkbyBub3QgZm9yZ2V0IHRvIGFkZCBmYWxsYmFjayBjb2xvci9pbWFnZSBiZWZvcmUgbWl4aW5cbiAqIFVzZXMgbmV3IGxpbmVhciBncmFkaWVudCB2ZXJzaW9uLiBOb3Qgc3VwcG9ydGluZyBTYWZhcmkgNSBvciBvbGRlciBhbmQgSUU5IGFuZCBvbGRlciB2ZXJzaW9uc1xuICpcbiAqIEBwYXJhbSBzdHJpbmcgJGNvbnRlbnRcbiAqL1xuQG1peGluIGxpbmVhci1ncmFkaWVudCgkY29udGVudCl7XHRcbiAgICBAaW5jbHVkZSB2YWx1ZS1wcmVmaXhlcihiYWNrZ3JvdW5kLCBsaW5lYXItZ3JhZGllbnQsICRjb250ZW50LCB3ZWJraXQpO1xufVxuXG5cbi8qKlxuICogU2ltcGxlIFJhZGlhbCBncmFkaWVudFxuICogR2V0cyB0aGUgcmFkaWFsIGdyYWRpZW50IGNvbnRlbnQgYXMgYSBwYXJhbWV0ZXIgYW5kIG91dHB1dHMgdGhlIHByZWZpeGVkIHZlcnNpb24uXG4gKiBGb3Igb2xkIGJyb3dzZXJzIGRvIG5vdCBmb3JnZXQgdG8gYWRkIGZhbGxiYWNrIGNvbG9yL2ltYWdlIGJlZm9yZSBtaXhpblxuICogVXNlcyBuZXcgbGluZWFyIGdyYWRpZW50IHZlcnNpb24uIE5vdCBzdXBwb3J0aW5nIFNhZmFyaSA1IG9yIG9sZGVyIGFuZCBJRTkgYW5kIG9sZGVyIHZlcnNpb25zXG4gKlxuICogQHBhcmFtICRjb250ZW50XG4gKi9cbkBtaXhpbiByYWRpYWwtZ3JhZGllbnQoJGNvbnRlbnQpe1xuICAgIEBpbmNsdWRlIHZhbHVlLXByZWZpeGVyKGJhY2tncm91bmQsIHJhZGlhbC1ncmFkaWVudCwgJGNvbnRlbnQsIHdlYmtpdCk7XG59IiwiLyogQGF1dGhvciBCaWxhbCBDaW5hcmxpICovXG5cbi8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgVGV4dCBHcmFkaWVudFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovXG4vKipcbiAqIEdyYWRpZW50IFRleHQgQ29sb3JcbiAqIEFkZCBhIGdyYWRpZW50IGNvbG9yIHRvIHRoZSB0ZXh0XG4gKi9cbkBtaXhpbiB0ZXh0LWdyYWRpZW50KCRjb250ZW50KXtcbiAgICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQoJGNvbnRlbnQpO1xuICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcbn0iLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBCb3ggU2hhZG93XG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi9cbi8qKlxuICogU2ltcGxlIEJveCBzaGFkb3dcbiAqXG4gKiBAcGFyYW0gJGNvbnRlbnQ6IGJveC1zaGFkb3cgY29udGVudFxuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9Ym94LXNoYWRvdyBcbiAqIGN1cnJlbnQgc3BlYywgb25seSBBbmRyb2lkIGJyb3dzZXIgMi4zIG5lZWQgLXdlYmtpdCBwcmVmaXhcbiAqIFlvdSBjYW4gdXNlIHN0YW5kYXJ0IENTUyBib3ggc2hhZG93IGRlZmluaXRpb25cbiAqL1xuQG1peGluIGJveC1zaGFkb3coJGNvbnRlbnQuLi4pIHtcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihib3gtc2hhZG93LCAkY29udGVudCwgd2Via2l0KTtcbn0iLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBUcmFuc2l0aW9uIFJlbGF0ZWQgTWl4aW5zXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi9cbi8qKlxuICogQ1NTIFRyYW5zaXRpb25cbiAqXG4gKiBPdXRwdXRzIENTUzMgdHJhbnNpdGlvbiBjb2RlIHdpdGggZGVmaW5lZCBwcmVmaXhlc1xuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9dHJhbnNpdGlvblxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RyYW5zaXRpb25cbiAqIEZvcm1hbCBzeW50YXg6IFsgbm9uZSB8IDxzaW5nbGUtdHJhbnNpdGlvbi1wcm9wZXJ0eT4gXSB8fCA8dGltZT4gfHwgPHRpbWluZy1mdW5jdGlvbj4gfHwgPHRpbWU+XG4gKiBjdXJyZW50IHNwZWMsIG9sZGVyIEFuZHJvaWQgYnJvd3NlcnMgYW5kIFNhZmFyaSA1LjEgbmVlZCAtd2Via2l0XG4gKi9cbkBtaXhpbiB0cmFuc2l0aW9uKCRjb250ZW50Li4uKXtcbiAgICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLCAkY29udGVudCwgd2Via2l0KTtcbn1cblxuLyoqXG4gKiBDU1MgVHJhbnNpdGlvbiBEZWxheVxuICogT3V0cHV0cyBDU1MzIHRyYW5zaXRpb24tZGVsYXkgY29kZSB3aXRoIGRlZmluZWQgcGZlcml4ZXNcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90cmFuc2l0aW9uLWRlbGF5XG4gKiBGb3JtYWwgc3ludGF4OiA8dGltZT4jXG4gKi9cbkBtaXhpbiB0cmFuc2l0aW9uLWRlbGF5KCR0aW1lKXtcblx0QGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi1kZWxheSwgJHRpbWUsIHdlYmtpdCk7XG59XG5cbi8qKlxuICogQ1NTIFRyYW5zaXRpb24gRHVyYXRpb25cbiAqIE91dHB1dHMgQ1NTMyB0cmFuc2l0aW9uLWR1cmF0aW9uIGNvZGUgd2l0aCBkZWZpbmVkIHBmZXJpeGVzXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdHJhbnNpdGlvbi1kdXJhdGlvblxuICogRm9ybWFsIHN5bnRheDogPHRpbWU+I1xuICovXG5AbWl4aW4gdHJhbnNpdGlvbi1kdXJhdGlvbigkdGltZSl7XG5cdEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24tZHVyYXRpb24sICR0aW1lLCB3ZWJraXQpO1xufVxuXG4vKipcbiAqIENTUyBUcmFuc2l0aW9uIFByb3BlcnR5XG4gKiBPdXRwdXRzIENTUzMgdHJhbnNpdGlvbi1wcm9wZXJ0eSBjb2RlIHdpdGggZGVmaW5lZCBwZmVyaXhlc1xuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RyYW5zaXRpb24tcHJvcGVydHlcbiAqIEZvcm1hbCBzeW50YXg6IG5vbmUgfCA8c2luZ2xlLXRyYW5zaXRpb24tcHJvcGVydHk+IyAgWyDigJgs4oCZIDxzaW5nbGUtdHJhbnNpdGlvbi1wcm9wZXJ0eT4jIF0qXG4gKi9cbkBtaXhpbiB0cmFuc2l0aW9uLXByb3BlcnR5KCRjb250ZW50Li4uKXtcblx0QGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi1wcm9wZXJ0eSwgJGNvbnRlbnQsIHdlYmtpdCk7XG59XG5cbi8qKlxuICogQ1NTIFRyYW5zaXRpb24gVGltaW5nXG4gKiBPdXRwdXRzIENTUzMgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24gY29kZSB3aXRoIGRlZmluZWQgcGZlcml4ZXNcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvblxuICogRm9ybWFsIHN5bnRheDogPHRpbWluZy1mdW5jdGlvbj4jXG4gKi9cbkBtaXhpbiB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbigkY29udGVudC4uLil7XG5cdEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLCAkY29udGVudCwgd2Via2l0KTtcbn1cblxuLyoqXG4gKiBBcHAgVHJhbnNpdGlvblxuICpcbiAqIEdlbmVyYWwgdHJhbnNpdGlvbiBkZWZpbml0aW9uIGZvciBhcHBcbiAqL1xuQG1peGluIGFwcC10cmFuc2l0aW9uKCl7XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwgJGJhc2UtZHVyYXRpb24gJGJhc2UtZWFzaW5nKTtcbn0iLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBUcmFuc2Zvcm0gUmVsYXRlZCBNaXhpbnNcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqL1xuLyoqXG4gKiBDU1MgVHJhbnNmb3JtXG4gKlxuICogT3V0cHV0cyBDU1MzIHRyYW5mb3JtIGNvZGUgd2l0aCBkZWZpbmVkIHByZWZpeGVzXG4gKiBodHRwOi8vY2FuaXVzZS5jb20vI3NlYXJjaD10cmFuc2Zvcm1cbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90cmFuc2Zvcm1cbiAqIEZvcm1hbCBzeW50YXg6IG5vbmUgfCA8dHJhbnNmb3JtLWZ1bmN0aW9uPitcbiAqIEZvciB0cmFuc2Zvcm0gZnVuY3Rpb25zIHNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RyYW5zZm9ybS1mdW5jdGlvblxuICogY3VycmVudCBzcGVjLCBTYWZhcmksIEFuZHJvaWQgYnJvd3NlciBhbmQgSUU5IG5lZWQgdmVuZG9yIHByZWZpeFxuICovXG5AbWl4aW4gdHJhbnNmb3JtKCRjb250ZW50Li4uKXtcbiAgICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2Zvcm0sICRjb250ZW50LCB3ZWJraXQgbXMpO1xufVxuXG4vKipcbiAqIENTUyBUcmFuc2Zvcm0gT3JpZ2luXG4gKlxuICogT3V0cHV0cyBDU1MzIHRyYW5mb3JtLW9yaWdpbiBjb2RlIHdpdGggZGVmaW5lZCBwcmVmaXhlc1xuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9dHJhbnNmb3JtXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdHJhbnNmb3JtLW9yaWdpblxuICogRm9ybWFsIHN5bnRheDogWyA8cGVyY2VudGFnZT4gfCA8bGVuZ3RoPiB8IGxlZnQgfCBjZW50ZXIgfCByaWdodCB8IHRvcCB8IGJvdHRvbV0gfCBbIFsgPHBlcmNlbnRhZ2U+IHwgPGxlbmd0aD4gfCBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgXSAmJiBbIDxwZXJjZW50YWdlPiB8IDxsZW5ndGg+IHwgdG9wIHwgY2VudGVyIHwgYm90dG9tIF0gXSA8bGVuZ3RoPj9cbiAqIGN1cnJlbnQgc3BlYywgU2FmYXJpLCBBbmRyb2lkIGJyb3dzZXIgYW5kIElFOSBuZWVkIHZlbmRvciBwcmVmaXhcbiAqL1xuQG1peGluIHRyYW5zZm9ybS1vcmlnaW4oJGNvbnRlbnQuLi4pe1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybS1vcmlnaW4sICRjb250ZW50LCB3ZWJraXQgbXMpO1xufVxuXG4vKipcbiAqIENTUyBUcmFuc2Zvcm0gU3R5bGVcbiAqXG4gKiBPdXRwdXRzIENTUzMgdHJhbmZvcm0tc3R5bGUgY29kZSB3aXRoIGRlZmluZWQgcHJlZml4ZXNcbiAqIGh0dHA6Ly9jYW5pdXNlLmNvbS8jc2VhcmNoPXRyYW5zZm9ybVxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3RyYW5zZm9ybS1zdHlsZVxuICogRm9ybWFsIHN5bnRheDogZmxhdCB8IHByZXNlcnZlLTNkIHwgaW5oZXJpdFxuICogY3VycmVudCBzcGVjLCBJRSBpcyBub3Qgc3VwcG9ydGVkLCB3ZWJraXQgYnJvd3NlcnMgbmVlZCBwcmVmaXhpbmdcbiAqL1xuQG1peGluIHRyYW5zZm9ybS1zdHlsZSgkc3R5bGUpe1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybS1zdHlsZSwgJHN0eWxlLCB3ZWJraXQpO1xufSIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIEFuaW1hdGlvbiBSZWxhdGVkIE1peGluc1xuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovXG4vKipcbiAqIENTUyBBbmltYXRpb25cbiAqXG4gKiBPdXRwdXRzIENTUzMgYW5pbWF0aW9uIGNvZGUgd2l0aCBkZWZpbmVkIHByZWZpeGVzXG4gKiBodHRwOi8vY2FuaXVzZS5jb20vI3NlYXJjaD1jc3MzJTIwYW5pbWF0aW9uXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uXG4gKiBGb3JtYWwgc3ludGF4OiA8c2luZ2xlLWFuaW1hdGlvbi1uYW1lPiB8fCA8dGltZT4gfHwgPHRpbWluZy1mdW5jdGlvbj4gfHwgPHRpbWU+IHx8IDxzaW5nbGUtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudD4gfHwgPHNpbmdsZS1hbmltYXRpb24tZGlyZWN0aW9uPiB8fCA8c2luZ2xlLWFuaW1hdGlvbi1maWxsLW1vZGU+IHx8IDxzaW5nbGUtYW5pbWF0aW9uLXBsYXktc3RhdGU+XG4gKiBjdXJyZW50IHNwZWMsIHdlYmtpdCBicm93c2VycyBuZWVkIHByZWZpeGluZ1xuICovXG5AbWl4aW4gYW5pbWF0aW9uKCRjb250ZW50Li4uKXtcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24sICRjb250ZW50LCB3ZWJraXQpO1xufVxuXG4vKipcbiAqIENTUyBBbmltYXRpb24gRGVsYXlcbiAqXG4gKiBPdXRwdXRzIENTUzMgYW5pbWF0aW9uLWRlbGF5IGNvZGUgd2l0aCBkZWZpbmVkIHByZWZpeGVzXG4gKiBodHRwOi8vY2FuaXVzZS5jb20vI3NlYXJjaD1jc3MzJTIwYW5pbWF0aW9uXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLWRlbGF5XG4gKiBGb3JtYWwgc3ludGF4OiA8dGltZT4jXG4gKiBjdXJyZW50IHNwZWMsIHdlYmtpdCBicm93c2VycyBuZWVkIHByZWZpeGluZ1xuICovXG5AbWl4aW4gYW5pbWF0aW9uLWRlbGF5KCRjb250ZW50Li4uKXtcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZGVsYXksICRjb250ZW50LCB3ZWJraXQpO1xufVxuXG4vKipcbiAqIENTUyBBbmltYXRpb24gRGlyZWN0aW9uXG4gKlxuICogT3V0cHV0cyBDU1MzIGFuaW1hdGlvbi1kaXJlY3Rpb24gY29kZSB3aXRoIGRlZmluZWQgcHJlZml4ZXNcbiAqIGh0dHA6Ly9jYW5pdXNlLmNvbS8jc2VhcmNoPWNzczMlMjBhbmltYXRpb25cbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tZGlyZWN0aW9uXG4gKiBGb3JtYWwgc3ludGF4OiA8c2luZ2xlLWFuaW1hdGlvbi1kaXJlY3Rpb24+I1xuICogY3VycmVudCBzcGVjLCB3ZWJraXQgYnJvd3NlcnMgbmVlZCBwcmVmaXhpbmdcbiAqL1xuQG1peGluIGFuaW1hdGlvbi1kaXJlY3Rpb24oJGNvbnRlbnQuLi4pe1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kaXJlY3Rpb24sICRjb250ZW50LCB3ZWJraXQpO1xufVxuXG4vKipcbiAqIENTUyBBbmltYXRpb24gRHVyYXRpb25cbiAqXG4gKiBPdXRwdXRzIENTUzMgYW5pbWF0aW9uLWR1cmF0aW9uIGNvZGUgd2l0aCBkZWZpbmVkIHByZWZpeGVzXG4gKiBodHRwOi8vY2FuaXVzZS5jb20vI3NlYXJjaD1jc3MzJTIwYW5pbWF0aW9uXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYW5pbWF0aW9uLWR1cmF0aW9uXG4gKiBGb3JtYWwgc3ludGF4OiA8dGltZT4jXG4gKiBjdXJyZW50IHNwZWMsIHdlYmtpdCBicm93c2VycyBuZWVkIHByZWZpeGluZ1xuICovXG5AbWl4aW4gYW5pbWF0aW9uLWR1cmF0aW9uKCRjb250ZW50Li4uKXtcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZHVyYXRpb24sICRjb250ZW50LCB3ZWJraXQpO1xufVxuXG4vKipcbiAqIENTUyBBbmltYXRpb24gRmlsbCBNb2RlXG4gKlxuICogT3V0cHV0cyBDU1MzIGFuaW1hdGlvbi1maWxsLW1vZGUgY29kZSB3aXRoIGRlZmluZWQgcHJlZml4ZXNcbiAqIGh0dHA6Ly9jYW5pdXNlLmNvbS8jc2VhcmNoPWNzczMlMjBhbmltYXRpb25cbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tZmlsbC1tb2RlXG4gKiBGb3JtYWwgc3ludGF4OiA8c2luZ2xlLWFuaW1hdGlvbi1maWxsLW1vZGU+I1xuICogY3VycmVudCBzcGVjLCB3ZWJraXQgYnJvd3NlcnMgbmVlZCBwcmVmaXhpbmdcbiAqL1xuQG1peGluIGFuaW1hdGlvbi1maWxsLW1vZGUoJGNvbnRlbnQuLi4pe1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1maWxsLW1vZGUsICRjb250ZW50LCB3ZWJraXQpO1xufVxuXG4vKipcbiAqIENTUyBBbmltYXRpb24gSXRlcmF0aW9uIENvdW50XG4gKlxuICogT3V0cHV0cyBDU1MzIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQgY29kZSB3aXRoIGRlZmluZWQgcHJlZml4ZXNcbiAqIGh0dHA6Ly9jYW5pdXNlLmNvbS8jc2VhcmNoPWNzczMlMjBhbmltYXRpb25cbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9hbmltYXRpb24taXRlcmF0aW9uLWNvdW50XG4gKiBGb3JtYWwgc3ludGF4OiA8c2luZ2xlLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ+I1xuICogY3VycmVudCBzcGVjLCB3ZWJraXQgYnJvd3NlcnMgbmVlZCBwcmVmaXhpbmdcbiAqL1xuQG1peGluIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQoJGNvbnRlbnQuLi4pe1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsICRjb250ZW50LCB3ZWJraXQpO1xufVxuXG4vKipcbiAqIENTUyBBbmltYXRpb24gTmFtZVxuICpcbiAqIE91dHB1dHMgQ1NTMyBhbmltYXRpb24tbmFtZSBjb2RlIHdpdGggZGVmaW5lZCBwcmVmaXhlc1xuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9Y3NzMyUyMGFuaW1hdGlvblxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1uYW1lXG4gKiBGb3JtYWwgc3ludGF4OiA8c2luZ2xlLWFuaW1hdGlvbi1uYW1lPiNcbiAqIGN1cnJlbnQgc3BlYywgd2Via2l0IGJyb3dzZXJzIG5lZWQgcHJlZml4aW5nXG4gKi9cbkBtaXhpbiBhbmltYXRpb24tbmFtZSgkY29udGVudC4uLil7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLW5hbWUsICRjb250ZW50LCB3ZWJraXQpO1xufVxuXG4vKipcbiAqIENTUyBBbmltYXRpb24gUGxheSBTdGF0ZVxuICpcbiAqIE91dHB1dHMgQ1NTMyBhbmltYXRpb24tcGxheS1zdGF0ZSBjb2RlIHdpdGggZGVmaW5lZCBwcmVmaXhlc1xuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9Y3NzMyUyMGFuaW1hdGlvblxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2FuaW1hdGlvbi1wbGF5LXN0YXRlXG4gKiBGb3JtYWwgc3ludGF4OiA8c2luZ2xlLWFuaW1hdGlvbi1wbGF5LXN0YXRlPiNcbiAqIGN1cnJlbnQgc3BlYywgd2Via2l0IGJyb3dzZXJzIG5lZWQgcHJlZml4aW5nXG4gKi9cbkBtaXhpbiBhbmltYXRpb24tcGxheS1zdGF0ZSgkY29udGVudC4uLil7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLXBsYXktc3RhdGUsICRjb250ZW50LCB3ZWJraXQpO1xufVxuXG4vKipcbiAqIENTUyBBbmltYXRpb24gVGltaW5nIEZ1bmN0aW9uXG4gKlxuICogT3V0cHV0cyBDU1MzIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24gY29kZSB3aXRoIGRlZmluZWQgcHJlZml4ZXNcbiAqIGh0dHA6Ly9jYW5pdXNlLmNvbS8jc2VhcmNoPWNzczMlMjBhbmltYXRpb25cbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uXG4gKiBGb3JtYWwgc3ludGF4OiA8c2luZ2xlLWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24+I1xuICogY3VycmVudCBzcGVjLCB3ZWJraXQgYnJvd3NlcnMgbmVlZCBwcmVmaXhpbmdcbiAqL1xuQG1peGluIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24oJGNvbnRlbnQuLi4pe1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24sICRjb250ZW50LCB3ZWJraXQpO1xufVxuXG4vKipcbiAqIENTUyBLZXlmcmFtZXNcbiAqXG4gKiBPdXRwdXRzIENTUzMga2V5ZnJhbWVzIGNvZGUgd2l0aCBkZWZpbmVkIHByZWZpeGVzXG4gKiBodHRwOi8vY2FuaXVzZS5jb20vI3NlYXJjaD1rZXlmcmFtZXNcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Aa2V5ZnJhbWVzXG4gKiBAa2V5ZnJhbWVzIDxpZGVudGlmaWVyPiB7XG4gKiBcdFsgWyBmcm9tIHwgdG8gfCA8cGVyY2VudGFnZT4gXSBbLCBmcm9tIHwgdG8gfCA8cGVyY2VudGFnZT4gXSogYmxvY2sgXSpcbiAqIH1cbiAqIGN1cnJlbnQgc3BlYywgd2Via2l0IGJyb3dzZXJzIG5lZWQgcHJlZml4aW5nXG4gKi9cbkBtaXhpbiBrZXlmcmFtZXMoJGFuaW1hdGlvbi1uYW1lKXtcblx0QC13ZWJraXQta2V5ZnJhbWVzICN7JGFuaW1hdGlvbi1uYW1lfSB7XG5cdFx0QGNvbnRlbnQ7XG5cdH1cblx0XG5cdEBrZXlmcmFtZXMgI3skYW5pbWF0aW9uLW5hbWV9IHtcblx0XHRAY29udGVudDtcblx0fVxufSIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENvbHVtbnMgUmVsYXRlZCBNaXhpbnNcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqL1xuLyoqXG4gKiBDU1MgQ29sdW1uc1xuICpcbiAqIE91dHB1dHMgQ1NTMyBDb2x1bW5zIHdpdGggZGVmaW5lZCBwcmVmaXhlc1xuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9Y29sdW1uXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sdW1uc1xuICogRm9ybWFsIHN5bnRheDogPCdjb2x1bW4td2lkdGgnPiB8fCA8J2NvbHVtbi1jb3VudCc+XG4gKiBjdXJyZW50IHNwZWMsIGV4Y2VwdCBJRSwgYWxsIGJyb3dzZXJzIG5lZWQgdmVuZG9yIHByZWZpeCBlaXRoZXIgLW1veiBvciAtd2Via2l0XG4gKi9cbkBtaXhpbiBjb2x1bW5zKCRjb250ZW50Li4uKXtcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW5zLCAkY29udGVudCk7XG59XG5cblxuLyoqXG4gKiBDU1MgQ29sdW1uIENvdW50XG4gKlxuICogT3V0cHV0cyBDU1MzIENvbHVtbiBDb3VudFxuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9Y29sdW1uXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sdW1uLWNvdW50XG4gKiBGb3JtYWwgc3ludGF4OiA8bnVtYmVyPiB8IGF1dG9cbiAqIGN1cnJlbnQgc3BlYywgZXhjZXB0IElFLCBhbGwgYnJvd3NlcnMgbmVlZCB2ZW5kb3IgcHJlZml4IGVpdGhlciAtbW96IG9yIC13ZWJraXRcbiAqL1xuQG1peGluIGNvbHVtbi1jb3VudCgkbnVtYmVyKXtcblx0QGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLWNvdW50LCAkbnVtYmVyKTtcbn1cblxuXG4vKipcbiAqIENTUyBDb2x1bW4gV2lkdGhcbiAqXG4gKiBPdXRwdXRzIENTUzMgQ29sdW1uIFdpZHRoXG4gKiBodHRwOi8vY2FuaXVzZS5jb20vI3NlYXJjaD1jb2x1bW5cbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9jb2x1bW4td2lkdGhcbiAqIEZvcm1hbCBzeW50YXg6IDxsZW5ndGg+IHwgYXV0b1xuICogY3VycmVudCBzcGVjLCBleGNlcHQgSUUsIGFsbCBicm93c2VycyBuZWVkIHZlbmRvciBwcmVmaXggZWl0aGVyIC1tb3ogb3IgLXdlYmtpdFxuICovXG5AbWl4aW4gY29sdW1uLXdpZHRoKCR3aWR0aCl7XG5cdEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi13aWR0aCwgJHdpZHRoKTtcbn1cblxuXG4vKipcbiAqIENTUyBDb2x1bW4gR2FwXG4gKlxuICogT3V0cHV0cyBDU1MzIENvbHVtbiBHYXBcbiAqIGh0dHA6Ly9jYW5pdXNlLmNvbS8jc2VhcmNoPWNvbHVtblxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NvbHVtbi1nYXBcbiAqIEZvcm1hbCBzeW50YXg6IDxsZW5ndGg+IHwgbm9ybWFsXG4gKiBjdXJyZW50IHNwZWMsIGV4Y2VwdCBJRSwgYWxsIGJyb3dzZXJzIG5lZWQgdmVuZG9yIHByZWZpeCBlaXRoZXIgLW1veiBvciAtd2Via2l0XG4gKi9cbkBtaXhpbiBjb2x1bW4tZ2FwKCRnYXApe1xuXHRAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tZ2FwLCAkZ2FwKTtcbn1cblxuXG4vKipcbiAqIENTUyBDb2x1bW4gUnVsZVxuICpcbiAqIE91dHB1dHMgQ1NTMyBDb2x1bW4gUnVsZSwgc2hvcnRoYW5kIGRlZmluaXRpb24gZm9yIGNvbHVtbiBydWxlIHN0eWxlc1xuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9Y29sdW1uXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sdW1uLXJ1bGVcbiAqIEZvcm1hbCBzeW50YXg6IDwnY29sdW1uLXJ1bGUtd2lkdGgnPiB8fCA8J2NvbHVtbi1ydWxlLXN0eWxlJz4gfHwgPCdjb2x1bW4tcnVsZS1jb2xvcic+XG4gKiBjdXJyZW50IHNwZWMsIGV4Y2VwdCBJRSwgYWxsIGJyb3dzZXJzIG5lZWQgdmVuZG9yIHByZWZpeCBlaXRoZXIgLW1veiBvciAtd2Via2l0XG4gKi9cbkBtaXhpbiBjb2x1bW4tcnVsZSgkcnVsZSl7XG5cdEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLCAkcnVsZSk7XG59XG5cblxuLyoqXG4gKiBDU1MgQ29sdW1uIFJ1bGUgQ29sb3JcbiAqXG4gKiBPdXRwdXRzIENTUzMgQ29sdW1uIFJ1bGUgQ29sb3JcbiAqIGh0dHA6Ly9jYW5pdXNlLmNvbS8jc2VhcmNoPWNvbHVtblxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NvbHVtbi1ydWxlLWNvbG9yXG4gKiBGb3JtYWwgc3ludGF4OiA8Y29sb3I+XG4gKiBjdXJyZW50IHNwZWMsIGV4Y2VwdCBJRSwgYWxsIGJyb3dzZXJzIG5lZWQgdmVuZG9yIHByZWZpeCBlaXRoZXIgLW1veiBvciAtd2Via2l0XG4gKi9cbkBtaXhpbiBjb2x1bW4tcnVsZS1jb2xvcigkY29sb3Ipe1xuXHRAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS1jb2xvciwgJGNvbG9yKTtcbn1cblxuXG4vKipcbiAqIENTUyBDb2x1bW4gUnVsZSBTdHlsZVxuICpcbiAqIE91dHB1dHMgQ1NTMyBDb2x1bW4gUnVsZSBTdHlsZVxuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9Y29sdW1uXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sdW1uLXJ1bGUtc3R5bGVcbiAqIEZvcm1hbCBzeW50YXg6IDxzdHlsZT5cbiAqIGN1cnJlbnQgc3BlYywgZXhjZXB0IElFLCBhbGwgYnJvd3NlcnMgbmVlZCB2ZW5kb3IgcHJlZml4IGVpdGhlciAtbW96IG9yIC13ZWJraXRcbiAqL1xuQG1peGluIGNvbHVtbi1ydWxlLXN0eWxlKCRzdHlsZSl7XG5cdEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLXN0eWxlLCAkc3R5bGUpO1xufVxuXG4vKipcbiAqIENTUyBDb2x1bW4gUnVsZSBXaWR0aFxuICpcbiAqIE91dHB1dHMgQ1NTMyBDb2x1bW4gUnVsZSBXaWR0aFxuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9Y29sdW1uXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sdW1uLXJ1bGUtd2lkdGhcbiAqIEZvcm1hbCBzeW50YXg6IDxici13aWR0aD5cbiAqIEF2YWlsYWJsZSB2YWx1ZXM6IHRoaW4gfHwgbWVkaXVtIHx8IHRoaWNrIHx8IG51bWJlciBweCB8fCBudW1iZXIgZW1cbiAqIGN1cnJlbnQgc3BlYywgZXhjZXB0IElFLCBhbGwgYnJvd3NlcnMgbmVlZCB2ZW5kb3IgcHJlZml4IGVpdGhlciAtbW96IG9yIC13ZWJraXRcbiAqL1xuQG1peGluIGNvbHVtbi1ydWxlLXdpZHRoKCR3aWR0aCl7XG5cdEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLXdpZHRoLCAkd2lkdGgpO1xufVxuXG4vKipcbiAqIENTUyBDb2x1bW4gU3BhblxuICpcbiAqIE91dHB1dHMgQ1NTMyBDb2x1bW4gU3BhblxuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9Y29sdW1uXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sdW1uLXNwYW5cbiAqIEZvcm1hbCBzeW50YXg6IG5vbmUgfCBhbGxcbiAqIEN1cnJlbnRseSwgZXhjZXB0IGZpcmVmb3gsIGFsbCB2ZW5kb3JzIHN1cHBvcnRpbmcgdGhpcyBmZWF0dXJlLiBXZWJraXQgYnJvd3NlcnMgbmVlZCBwcmVmaXhcbiAqL1xuQG1peGluIGNvbHVtbi1zcGFuKCRzcGFuKXtcblx0QGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXNwYW4sICRzcGFuLCB3ZWJraXQpO1xufVxuXG5cbi8qKlxuICogQ1NTIENvbHVtbiBGaWxsXG4gKlxuICogT3V0cHV0cyBDU1MzIENvbHVtbiBGaWxsXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY29sdW1uLWZpbGxcbiAqIEZvcm1hbCBzeW50YXg6IGF1dG8gfCBiYWxhbmNlXG4gKiBDdXJyZW50bHkgb25seSBmaXJlZm94IHN1cHBvcnRzXG4gKi9cbkBtaXhpbiBjb2x1bW4tZmlsbCgkZmlsbCl7XG5cdEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1maWxsLCAkZmlsbCk7XG59IiwiLyogQGF1dGhvciBCaWxhbCBDaW5hcmxpICovXG5cbi8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgRmxleCBNaXhpbnNcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqL1xuLyoqXG4gKiBDU1MgRmxleFxuICpcbiAqIE91dHB1dHMgRmxleCBjb2RlIHdpdGggZGVmaW5lZCBwcmVmaXhlc1xuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9ZmxleFxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2ZsZXhcbiAqIEZvcm1hbCBzeW50YXg6IG5vbmUgfCBbIDwnZmxleC1ncm93Jz4gPCdmbGV4LXNocmluayc+PyB8fCA8J2ZsZXgtYmFzaXMnPiBdXG4gKiBjdXJyZW50IHNwZWMsIHdlYmtpdCBicm93c2VycyBuZWVkIHByZWZpeGluZ1xuICovXG5AbWl4aW4gZmxleCgkdmFsdWUuLi4pIHtcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XG4gICAgZGlzcGxheTogZmxleDtcblxuICAgIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgsICR2YWx1ZSwgd2Via2l0IG1zKTtcbn1cblxuLyoqXG4gKiBDU1MgRmxleCBCYXNpc1xuICpcbiAqIE91dHB1dHMgRmxleC1CYXNpcyBjb2RlIHdpdGggZGVmaW5lZCBwcmVmaXhlc1xuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9ZmxleFxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2ZsZXgtYmFzaXNcbiAqIEZvcm1hbCBzeW50YXg6IGNvbnRlbnQgfCA8J3dpZHRoJz5cbiAqIEluaXRpYWwgVmFsdWU6IGF1dG9cbiAqIGN1cnJlbnQgc3BlYywgd2Via2l0IGJyb3dzZXJzIG5lZWQgcHJlZml4aW5nLCBob3dldmVyIFNhZmFyaSBpcyBub3Qgc3VwcG9ydGluZyB0aGlzIGZlYXR1cmVcbiAqXG4gKiBOb3Rlc1xuICogV2hlbiBhIG5vbi1hdXRvIGZsZXgtYmFzaXMgaXMgc3BlY2lmaWVkLCBJbnRlcm5ldCBFeHBsb3JlciAxMC0xMSAoYnV0IG5vdCAxMispIGFsd2F5cyBcbiAqIHVzZXMgYSBjb250ZW50LWJveCBib3ggbW9kZWwgdG8gY2FsY3VsYXRlIHRoZSBzaXplIG9mIGEgZmxleCBpdGVtLCBldmVuIGlmIFxuICogYm94LXNpemluZzogYm9yZGVyLWJveCBpcyBhcHBsaWVkIHRvIHRoZSBlbGVtZW50LlxuICpcbiAqL1xuQG1peGluIGZsZXgtYmFzaXMoJGNvbnRlbnQpIHtcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LWJhc2lzLCAkY29udGVudCwgd2Via2l0KTtcbn1cblxuLyoqXG4gKiBDU1MgRmxleCBEaXJlY3Rpb25cbiAqXG4gKiBPdXRwdXRzIEZsZXgtRGlyZWN0aW9uIGNvZGUgd2l0aCBkZWZpbmVkIHByZWZpeGVzXG4gKiBodHRwOi8vY2FuaXVzZS5jb20vI3NlYXJjaD1mbGV4XG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvZmxleC1kaXJlY3Rpb25cbiAqIEZvcm1hbCBzeW50YXg6IGNvbnRlbnQgfCBbcm93IHwgcm93LXJldmVyc2UgfCBjb2x1bW4gfCBjb2x1bW4tcmV2ZXJzZV1cbiAqIGN1cnJlbnQgc3BlYywgd2Via2l0IGJyb3dzZXJzIG5lZWQgcHJlZml4aW5nLCBob3dldmVyIFNhZmFyaSBpcyBub3Qgc3VwcG9ydGluZyB0aGlzIGZlYXR1cmVcbiAqL1xuQG1peGluIGZsZXgtZGlyZWN0aW9uKCRjb250ZW50KSB7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1kaXJlY3Rpb24sICRjb250ZW50LCB3ZWJraXQgbXMpO1xufVxuXG4vKipcbiAqIENTUyBGbGV4IEdyb3dcbiAqXG4gKiBPdXRwdXRzIEZsZXgtR3JvdyBjb2RlIHdpdGggZGVmaW5lZCBwcmVmaXhlc1xuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9ZmxleFxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2ZsZXgtZ3Jvd1xuICogRm9ybWFsIHN5bnRheDogPG51bWJlcj5cbiAqIEluaXRpYWwgVmFsdWU6IDBcbiAqIE5lZ2F0aXZlIHZhbHVlcyBhcmUgaW52YWxpZC5cbiAqIGN1cnJlbnQgc3BlYywgd2Via2l0IGJyb3dzZXJzIG5lZWQgcHJlZml4aW5nLCBJbnRlcm5ldCBleHBsb3JlciBhbmQgU2FmYXJpIGlzIFxuICogbm90IHN1cHBvcnRpbmcgdGhpcyBmZWF0dXJlXG4gKi9cbkBtaXhpbiBmbGV4LWdyb3coJG51bWJlcikge1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZ3JvdywgJG51bWJlciwgd2Via2l0KTtcbn1cblxuLyoqXG4gKiBDU1MgRmxleCBTaHJpbmtcbiAqXG4gKiBPdXRwdXRzIEZsZXgtU2hyaW5rIGNvZGUgd2l0aCBkZWZpbmVkIHByZWZpeGVzXG4gKiBodHRwOi8vY2FuaXVzZS5jb20vI3NlYXJjaD1mbGV4XG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvZmxleC1zaHJpbmtcbiAqIEZvcm1hbCBzeW50YXg6IDxudW1iZXI+XG4gKiBJbml0aWFsIFZhbHVlOiAxXG4gKiBOZWdhdGl2ZSB2YWx1ZXMgYXJlIGludmFsaWQuXG4gKiBjdXJyZW50IHNwZWMsIHdlYmtpdCBicm93c2VycyBuZWVkIHByZWZpeGluZywgSW50ZXJuZXQgZXhwbG9yZXIgYW5kIFNhZmFyaSBpcyBcbiAqIG5vdCBzdXBwb3J0aW5nIHRoaXMgZmVhdHVyZVxuICpcbiAqIE5vdGVzOlxuICogSW50ZXJuZXQgRXhwbG9yZXIgMTAgdXNlcyAwIGluc3RlYWQgb2YgMSBhcyB0aGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIGZsZXgtc2hyaW5rIHByb3BlcnR5LiBcbiAqIEEgd29ya2Fyb3VuZCBpcyB0byBhbHdheXMgc2V0IGFuIGV4cGxpY2l0IHZhbHVlIGZvciBmbGV4LXNocmluay5cbiAqL1xuQG1peGluIGZsZXgtc2hyaW5rKCRudW1iZXIpIHtcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LXNocmluaywgJG51bWJlciwgd2Via2l0KTtcbn1cblxuLyoqXG4gKiBDU1MgRmxleCBXcmFwXG4gKlxuICogT3V0cHV0cyBGbGV4LVdyYXAgY29kZSB3aXRoIGRlZmluZWQgcHJlZml4ZXNcbiAqIGh0dHA6Ly9jYW5pdXNlLmNvbS8jc2VhcmNoPWZsZXhcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9mbGV4LXdyYXBcbiAqIEZvcm1hbCBzeW50YXg6IGNvbnRlbnQgfCBbbm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZV1cbiAqIEluaXRpYWwgVmFsdWU6IG5vd3JhcFxuICogY3VycmVudCBzcGVjLCB3ZWJraXQgYnJvd3NlcnMgbmVlZCBwcmVmaXhpbmdcbiAqL1xuQG1peGluIGZsZXgtd3JhcCgkY29udGVudCkge1xuICAgIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtd3JhcCwgJGNvbnRlbnQsIHdlYmtpdCBtcyk7XG59XG5cbi8qKlxuICogQ1NTIEZsZXggQWxpZ24gQ29udGVudFxuICpcbiAqIE91dHB1dHMgYWxpZ24tY29udGVudCBjb2RlIHdpdGggZGVmaW5lZCBwcmVmaXhlc1xuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9ZmxleFxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2FsaWduLWNvbnRlbnRcbiAqIEZvcm1hbCBzeW50YXg6IGNvbnRlbnQgfCBbZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZCB8IHN0cmV0Y2hdXG4gKiBJbml0aWFsIFZhbHVlOiBzdHJlY3RoXG4gKiBjdXJyZW50IHNwZWMsIHdlYmtpdCBicm93c2VycyBuZWVkIHByZWZpeGluZ1xuICpcbiAqIE5vdGVzOlxuICogSW50ZXJuZXQgRXhwbG9yZXIgYW5kIFNhZmFyaSBhcmUgbm90IHN1cHBvcnRpbmcgdGhpcyBmZWF0dXJlIHlldCBldmVuIHdpdGggdmVuZG9yIHByZWZpeFxuICovXG5AbWl4aW4gYWxpZ24tY29udGVudCgkdmFsdWUpIHtcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihhbGlnbi1jb250ZW50LCAkdmFsdWUsIHdlYmtpdCk7XG59XG5cbi8qKlxuICogQ1NTIEZsZXggQWxpZ24gSXRlbXNcbiAqXG4gKiBPdXRwdXRzIGFsaWduLWl0ZW1zIGNvZGUgd2l0aCBkZWZpbmVkIHByZWZpeGVzXG4gKiBodHRwOi8vY2FuaXVzZS5jb20vI3NlYXJjaD1mbGV4XG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYWxpZ24taXRlbXNcbiAqIEZvcm1hbCBzeW50YXg6IGNvbnRlbnQgfCBbZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoXVxuICogSW5pdGlhbCBWYWx1ZTogc3RyZWN0aFxuICogY3VycmVudCBzcGVjLCB3ZWJraXQgYnJvd3NlcnMgbmVlZCBwcmVmaXhpbmdcbiAqL1xuQG1peGluIGFsaWduLWl0ZW1zKCR2YWx1ZSkge1xuICAgICRib3g6ICR2YWx1ZTtcbiAgICAkbXM6ICR2YWx1ZTtcbiAgICBAaWYgKCR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIikge1xuICAgICAgICAkYm94OiBcInN0YXJ0XCI7XG4gICAgICAgICRtczogXCJzdGFydFwiO1xuICAgIH1cblxuICAgIEBpZiAoJHZhbHVlID09IFwiZmxleC1lbmRcIikge1xuICAgICAgICAkYm94OiBcImVuZFwiO1xuICAgICAgICAkbXM6IFwiZW5kXCI7XG4gICAgfVxuXG4gICAgLW1zLWZsZXgtYWxpZ246ICN7JG1zfTtcbiAgICAtd2Via2l0LWJveC1hbGlnbjogI3skYm94fTtcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihhbGlnbi1pdGVtcywgJHZhbHVlLCB3ZWJraXQpO1xufVxuXG4vKipcbiAqIENTUyBGbGV4IEFsaWduIFNlbGZcbiAqXG4gKiBPdXRwdXRzIGFsaWduLXNlbGYgY29kZSB3aXRoIGRlZmluZWQgcHJlZml4ZXNcbiAqIGh0dHA6Ly9jYW5pdXNlLmNvbS8jc2VhcmNoPWZsZXhcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9hbGlnbi1zZWxmXG4gKiBGb3JtYWwgc3ludGF4OiBjb250ZW50IHwgW2F1dG8gfCBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2hdXG4gKiBJbml0aWFsIFZhbHVlOiBhdXRvXG4gKiBjdXJyZW50IHNwZWMsIHdlYmtpdCBicm93c2VycyBuZWVkIHByZWZpeGluZ1xuICpcbiAqIE5vdGVzOlxuICogU2FmYXJpIGlzIG5vdCBzdXBwb3J0aW5nIHRoaXMgZmVhdHVyZSB5ZXQgZXZlbiB3aXRoIHZlbmRvciBwcmVmaXhcbiAqL1xuQG1peGluIGFsaWduLXNlbGYoJGNvbnRlbnQpIHtcbiAgICBAaW5jbHVkZSBwcmVmaXhlcihhbGlnbi1zZWxmLCAkY29udGVudCwgd2Via2l0KTtcbn1cblxuLypcbiAqIENTUyBKdXN0aWZ5IENvbnRlbnRcbiAqXG4gKi9cbkBtaXhpbiBqdXN0aWZ5LWNvbnRlbnQoJHZhbHVlKSB7XG4gICAgJGJveDogJHZhbHVlO1xuICAgICRtczogJHZhbHVlO1xuICAgIEBpZiAoJHZhbHVlID09IFwiZmxleC1zdGFydFwiKSB7XG4gICAgICAgICRib3g6IFwic3RhcnRcIjtcbiAgICAgICAgJG1zOiBcInN0YXJ0XCI7XG4gICAgfVxuXG4gICAgQGlmICgkdmFsdWUgPT0gXCJmbGV4LWVuZFwiKSB7XG4gICAgICAgICRib3g6IFwiZW5kXCI7XG4gICAgICAgICRtczogXCJlbmRcIjtcbiAgICB9XG5cbiAgICBAaWYgKCR2YWx1ZSA9PSBcInNwYWNlLWJldHdlZW5cIiBvciAkdmFsdWUgPT0gXCJzcGFjZS1hcm91bmRcIikge1xuICAgICAgICAkYm94OiBcImp1c3RpZnlcIjtcbiAgICAgICAgJG1zOiBcImp1c3RpZnlcIjtcbiAgICB9XG4gICAgLW1zLWZsZXgtcGFjazogI3skbXN9O1xuICAgIC13ZWJraXQtYm94LXBhY2s6ICN7JGJveH07XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIoanVzdGlmeS1jb250ZW50LCAkdmFsdWUsIHdlYmtpdCk7XG59XG5cbi8qKlxuICogT3JkZXJcbiAqXG4gKi9cbkBtaXhpbiBfb3JkZXIoJHZhbHVlKSB7XG4gICAgQGluY2x1ZGUgcHJlZml4ZXIob3JkZXIsICR2YWx1ZSwgd2Via2l0IG1zKTtcbn0iLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBNZWRpYSBRdWVyeSBNaXhpbnNcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqL1xuLyoqXG4gKiBSZXRpbmEgSW1hZ2VcbiAqL1xuQG1peGluIHJldGluYS1pbWFnZSgkaW1hZ2UsICRleHQ6ICdwbmcnKXtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJyN7JGltYWdlc30jeyRpbWFnZX0uI3skZXh0fScpO1xuXG4gICAgQGluY2x1ZGUgcmV0aW5hKCl7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnI3skaW1hZ2VzfSN7JGltYWdlfSN7JHJldGluYS1zdWZmaXh9LiN7JGV4dH0nKTtcbiAgICB9XG59XG5cbi8qKlxuICogUmV0aW5hXG4gKi9cbkBtaXhpbiByZXRpbmEoJHJhdGlvOiAxLjUpe1xuICAgICRkcGk6IDk2KiRyYXRpbztcblxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgICAgICAgICAgb25seSBzY3JlZW4gYW5kIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXG4gICAgICAgICAgIG9ubHkgc2NyZWVuIGFuZCAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvLzEpLFxuICAgICAgICAgICBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiAjeyRkcGl9ZHBpKSxcbiAgICAgICAgICAgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogI3skcmF0aW99ZHBweCkge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59IiwiLyogQGF1dGhvciBCaWxhbCBDaW5hcmxpICovXG5cbi8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQXJyb3dcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqL1xuQG1peGluIGFycm93ICgkY29sb3IsICRzaXplLCAkZGlyZWN0aW9uOiB0b3AsICRlbDogJzphZnRlcicpe1xuXHQkX2NvbG9yOiBudGgoJGNvbG9yLCAxKTtcblx0JF9zaXplOiBudGgoJHNpemUsIDEpO1xuXHRcblx0JF9ib3JkZXItc2lkZTogXCJib3JkZXItYm90dG9tLWNvbG9yXCI7XG5cdFxuXHRAaWYgbGVuZ3RoKCRjb2xvcikgPT0gMiB7XG5cdFx0JF9zaXplMjogJF9zaXplO1xuXHRcdFxuXHRcdEBpZiBsZW5ndGgoJHNpemUpID09IDIge1xuXHRcdFx0JF9zaXplMjogbnRoKCRzaXplLCAyKTtcblx0XHR9XG5cdFx0XG5cdFx0QGluY2x1ZGUgYXJyb3cobnRoKCRjb2xvciwgMiksICRfc2l6ZTIsICRkaXJlY3Rpb24sICc6YmVmb3JlJyk7XG5cdH1cblx0XG5cdEBpZiAkZGlyZWN0aW9uID09IFwicmlnaHRcIiB7XG5cdFx0JF9ib3JkZXItc2lkZTogXCJib3JkZXItbGVmdC1jb2xvclwiO1xuXHR9XG5cdFxuXHRAZWxzZSBpZiAkZGlyZWN0aW9uID09IFwiYm90dG9tXCIge1xuXHRcdCRfYm9yZGVyLXNpZGU6IFwiYm9yZGVyLXRvcC1jb2xvclwiO1xuXHR9XG5cdFxuXHRAZWxzZSBpZiAkZGlyZWN0aW9uID09IFwibGVmdFwiIHtcblx0XHQkX2JvcmRlci1zaWRlOiBcImJvcmRlci1yaWdodC1jb2xvclwiO1xuXHR9XG5cdFxuXHQmI3skZWx9IHtcblx0XHRjb250ZW50OiBcIlwiO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR3aWR0aDogMDtcblx0XHRoZWlnaHQ6IDA7XG5cdFx0Ym9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgI3skX2JvcmRlci1zaWRlfTogJF9jb2xvcjtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAkX3NpemU7XG5cdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdH1cbn0iLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBQbGFjZWhvbGRlclxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovXG4vKipcbiAgKiBTdHlsZXMgaW5wdXQgZWxlbWVudHMnIHBsYWNlaG9sZGVyLiBcbiAgKiBAcGFyYW0gJHNlbGY6IHRydWUsIGlmIGl0IGlzIHRydWUsIHN0eWxlcyBhcHBsaWVkIHRvIGNsYXNzIGl0c2VsZlxuICAqXHRcdFx0aWYgZmFsc2UsIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjaGlsZCBlbGVtZW50c1xuICAqL1xuXG5AbWl4aW4gcGxhY2Vob2xkZXIoJHNlbGY6IHRydWUpIHtcblx0JF9zZWxmOiAnJic7XG5cdFxuXHRAaWYgJHNlbGYgIT0gdHJ1ZSB7XG5cdFx0JF9zZWxmOiAnJztcblx0fVxuXHRcbiAgICAjeyRfc2VsZn06Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICAjeyRfc2VsZn06Oi1tb3otcGxhY2Vob2xkZXIge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICAjeyRfc2VsZn06LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufSIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIFBvc2l0aW9uc1xuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovXG4vKipcbiAgKiBDZW50ZXJcbiAgKiBBcHBsaWVkIHRvIGFic29sdXRlIHBvc2l0aW9uZWQgZWxlbWVudHMsIGFuZCBzZXRzIHBvc2l0aW9uIHRvIGFic29sdXRlLlxuICAqIEVsZW1lbnQgaXMgY2VudGVyZWQgYm90aCB2ZXJ0aWNhbGx5IGFuZCBob3Jpem9udGFsbHlcbiAgKiBEaW1lbnNpb24gZGVjbGFyYXRpb25zICh3aWR0aCwgaGVpZ2h0KSBhcmUgbm90IG5lY2Vzc2FyeVxuICAqIElmIGFueSBvdGhlciB0cmFuc2Zvcm0gbWV0aG9kcyBhcHBsaWVkLCBtYXkgbm90IHdvcmsgYXMgZXhwZWN0ZWRcbiAgKi9cbkBtaXhpbiBjZW50ZXIoKXtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDUwJTtcblx0bGVmdDogNTAlO1xuXHRAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpKTtcbn1cblxuXG4vKipcbiAgKiBWZXJ0aWNhbCBDZW50ZXJcbiAgKiBDZW50ZXJzIHRoZSBlbGVtZW50IHZlcnRpY2FsbHkuIERvIG5vdCBpbnRlcmZlcmUgd2l0aCBpdHMgaG9yaXpvbnRhbCBwb3NpdGlvblxuICAqIElmIGFueSBvdGhlciB0cmFuc2Zvcm0gbWV0aG9kcyBhcHBsaWVkLCBtYXkgbm90IHdvcmsgYXMgZXhwZWN0ZWRcbiAgKi9cbkBtaXhpbiBjZW50ZXItdmVydGljYWwoKXtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDUwJTtcblx0QGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xufVxuXG4vKipcbiAqIEhvcml6b250YWwgQ2VudGVyXG4gKiBDZW50ZXJzIHRoZSBlbGVtZW50IGhvcml6b250YWxseSBcbiAqIFVzZXMgbWFyZ2luOiAwIGF1dG87IHdoZW4gJHR5cGUgZGVmaW5lZCBhcyBcInN0YXRpY1wiXG4gKiBCeSBkZWZhdWx0IGl0IHVzZXMgdGhlIHRyYW5zZm9ybSBhcHByb2FjaFxuICogSWYgYW55IG90aGVyIHRyYW5zZm9ybSBtZXRob2RzIGFwcGxpZWQsIG1heSBub3Qgd29yayBhcyBleHBlY3RlZCBpbiB0cmFuc2Zvcm0gYXBwcm9hY2hcbiAqL1xuQG1peGluIGNlbnRlci1ob3Jpem9udGFsKCR0eXBlOiBhYnNvbHV0ZSl7XG5cdEBpZiAkdHlwZSA9PSBhYnNvbHV0ZSB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGxlZnQ6IDUwJTtcblx0XHRAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgtNTAlKSk7XG5cdH1cblx0QGVsc2Uge1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHR9XG59XG4iLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBDb21tb24gQnJlYWsgUG9pbnRzXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi9cbi8qKlxuICogTW9iaWxlIHBob25lcyAvIHNtYWxsZXIgc2NyZWVucyBwb3J0cmFpdCBtb2RlXG4gKlxuICovXG5cbkBtaXhpbiBtb2JpbGUtcG9ydHJhaXQoKSB7XG5cdEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aCA6IDMyMHB4KSB7XG5cdFx0QGNvbnRlbnQ7XG5cdH1cbn1cblxuLyoqXG4gKiBNb2JpbGUgcGhvbmVzIC8gc21hbGxlciBzY3JlZW5zIGxhbmRzY2FwZSBtb2RlXG4gKlxuICovXG5cbkBtaXhpbiBtb2JpbGUtbGFuZHNjYXBlKCkge1xuXHRAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGggOiAzMjFweCkge1xuXHRcdEBjb250ZW50O1xuXHR9XG59XG5cbi8qKlxuICogVGFibGV0cyAvIG1lZGl1bSBzaXplZCBzY3JlZW5zIHBvcnRyYWl0IG1vZGVcbiAqXG4gKi9cblxuQG1peGluIHRhYmxldC1wb3J0cmFpdCgpIHtcblx0QG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLWRldmljZS13aWR0aDogNzY4cHgpIGFuZCAobWF4LWRldmljZS13aWR0aDogMTAyNHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkge1xuXHRcdEBjb250ZW50O1xuXHR9XG59XG5cbi8qKlxuICogVGFibGV0cyAvIG1lZGl1bSBzaXplZCBzY3JlZW5zIGxhbmRzY2FwZSBtb2RlXG4gKlxuICovXG5cbkBtaXhpbiB0YWJsZXQtbGFuZHNjYXBlKCkge1xuXHRAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtZGV2aWNlLXdpZHRoOiAxMDI0cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSkge1xuXHRcdEBjb250ZW50O1xuXHR9XG59XG5cbi8qKlxuICogQ29tbW9uIGRlc2t0b3AvbGFwdG9wc1xuICovXG5AbWl4aW4gZGVza3RvcCgpe1xuXHRAbWVkaWEgb25seSBzY3JlZW4gIGFuZCAobWluLXdpZHRoIDogMTIyNHB4KSB7XG5cdFx0QGNvbnRlbnQ7XG5cdH1cbn1cblxuLyoqXG4gKiBXaWRlc2NyZWVuc1xuICpcbiAqL1xuXG5AbWl4aW4gd2lkZXNjcmVlbigpIHtcblx0QG1lZGlhIG9ubHkgc2NyZWVuICBhbmQgKG1pbi13aWR0aCA6IDE4MjRweCkge1xuXHRcdEBjb250ZW50O1xuXHR9XG59IiwiLyogQGF1dGhvciBCaWxhbCBDaW5hcmxpICovXG5cbi8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQXBwZWFyYW5jZSBNaXhpblxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovXG4vKipcbiAqIENTUyBBcHBlYXJhbmNlXG4gKlxuICogT3V0cHV0cyBhcHBlYXJhbmNlIHdpdGggZGVmaW5lZCBwcmVmaXhlc1xuICogaHR0cDovL2Nhbml1c2UuY29tLyNzZWFyY2g9YXBwZWFyYW5jZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTLy1tb3otYXBwZWFyYW5jZVxuICogRm9ybWFsIHN5bnRheDogdmFsdWUgfCBbIHZhcmlvdXMgdmFyaWFibGUgY2FuIGRlZmluZWQgbGlrZSBidXR0b24sIGNhcmV0LCBjaGVja2JveCwgcHJvZ3Jlc3NiYXIgZXRjLiBdXG4gKiBBbGwgYnJvd3NlcnMgbmVlZCB2ZW5kb3IgcHJlZml4aW5nXG4gKiBcbiAqIE5vdGVzOlxuICogVGhpcyBpcyBhbiB1bm9mZmljaWFsIGZlYXR1cmUgYW5kIG5vdCBpbmNsdWRlZCBpbiB0aGUgc3BlYy4gQXNpZGUgZnJvbSBJbnRlcm5ldCBFeHBsb3JlciwgYWxsIGJyb3dzZXJzXG4gKiBuZWVkIHRoZWlyIHZlbmRvciBwcmV4aW5nLlxuICogSG93ZXZlciBmb3IgdGhlIEludGVybmV0IEV4cGxvcmVyLCAtd2Via2l0LWFwcGVhcmFuY2Ugd2l0aCB2YWx1ZSBub25lIGlzIHN1cHBvcnRlZCBvbiBJRTExIE1vYmlsZSBcbiAqIGZvciBwaG9uZXMgd2l0aCBcIldpbmRvd3MgUGhvbmUgOC4xIFVwZGF0ZVwiLCBhbmQgaW4gRWRnZUhUTUwuZGxsXG4gKi9cbkBtaXhpbiBhcHBlYXJhbmNlKCR2YWx1ZSl7XG5cdEBpbmNsdWRlIHByZWZpeGVyKGFwcGVhcmFuY2UsICR2YWx1ZSk7XG59IiwiLyogQGF1dGhvciBCaWxhbCBDaW5hcmxpICovXG5cbi8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgU2Nyb2xsYmFyIFN0eWxlc1xuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovXG4vKipcbiAgKiBTY3JvbGxiYXJcbiAgKiBTdHlsZXMgdGhlIHNjcm9sbGJhcnMgZm9yIHN1cHBvcnRlZCBicm93c2Vyc1xuICAqIEJvdGggdmVydGljYWwgYW5kIGhvcml6b250YWwgc2Nyb2xscyBzdHlsZWQgdG9nZXRoZXJcbiAgKiBUaGUgaW52aXNpYmxlIE9TWCBzY3JvbGxzIHdpbGwgYmUgdmlzaWJsZSB3aGVuIGFwcGxpZWRcbiAgKi9cblxuQG1peGluIHNjcm9sbGJhcigkdGhpY2tuZXNzLCAkdGh1bWJDb2xvciwgJHRyYWNrQ29sb3IsICRyYWRpdXM6IDNweCkge1xuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgd2lkdGg6ICAkdGhpY2tuZXNzO1xuICAgICAgICBoZWlnaHQ6ICR0aGlja25lc3M7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkdGh1bWJDb2xvcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcblxuICAgICAgICAmOnZlcnRpY2FsIHtcbiAgICAgICAgICAgIGhlaWdodDogJHRoaWNrbmVzcztcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR0aHVtYkNvbG9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgeyBiYWNrZ3JvdW5kLWNvbG9yOiAkdHJhY2tDb2xvcjsgfVxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlIHsgYmFja2dyb3VuZC1jb2xvcjogJHRyYWNrQ29sb3I7fVxufSIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIEdVSSBSZWxhdGVkIFN0eWxlc1xuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovXG4vKipcbiAgKiBHVUkgRGVmaW5pdGlvbnNcbiAgKiBPbmx5IGltcG9ydCB0aGUgZGlyZWN0b3JpZXMgbWFpbiBmaWxlcy4gTm8gbmVlZCB0aGUgYWRkIG90aGVyIHBhcnRpYWxzLiBJbiBpbXBvcnQgb3JkZXIsIGVhY2ggY2F0ZWdvcml6ZWQgcGFydGlhbFxuICAqIGltcG9ydGVkIGluIHRoZSBtYWluIGZpbGUgb2YgdGhlIGNhdGVnb3J5XG4gICovXG5cbi8qKlxuICogRXh0ZXJuYWxzXG4gKi9cbkBpbXBvcnQgXCJleHRlcm5hbHMvZXh0ZXJuYWxzXCI7XG5cblxuQGltcG9ydCBcImdsb2JhbHMvZ2xvYmFsc1wiO1xuXG5cbi8qKlxuICogTGF5b3V0XG4gKiBJbiBsYXlvdXQgY29tcG9uZW50LCB0aGVyZSBsYXlzIHRoZSBnZW5lcmFsIHBvc2l0aW9uIG9mIHRoZSBtYWluIGVsZW1lbnRzIGxpa2UgcGFnZS13cmFwLCBoZWFkZXIsIGZvb3RlciwgY29udGVudCBldGMuXG4gKiBLZWVwIGluIG1pbmQsIHRoZSBsYXlvdXQgY29tcG9uZW50cyBzaG91bGQgb25seSBjb250YWluIHRoZSBwb3NpdGlvbiBvciBzaXplIG9mIHRoZXNlIHdyYXBwZXJzXG4gKiB0aGUgb3RoZXIgZWxlbWVudHMgIGxpa2UgbG9nbyBpbiB0aGUgaGVhZGVyLCBtZW51IGluIHRoZSBmb290ZXIgc2hvdWxkIGRlZmluZWQgaW4gdGhlIGNvbXBvbmVudHMgb3IgcGFydGljdWxlcyBvciBvdGhlclxuICogYXBwcm9wcmlhdGUgZm9sZGVyIHRvIHRoZWlyIGRlZmluaXRpb25zIGZpdCBpbi5cbiAqL1xuQGltcG9ydCBcImxheW91dC9sYXlvdXRcIjtcblxuXG4vKipcbiAqIEVsZW1lbnRzXG4gKi9cbkBpbXBvcnQgXCJlbGVtZW50cy9lbGVtZW50c1wiO1xuXG5cbi8qKlxuICogUGFydGljdWxlc1xuICovXG5AaW1wb3J0IFwicGFydGljdWxlcy9wYXJ0aWN1bGVzXCI7XG5cblxuLyoqXG4gKiBDb21wb25lbnRzXG4gKi9cbkBpbXBvcnQgXCJjb21wb25lbnRzL2NvbXBvbmVudHNcIjtcblxuXG4vKipcbiAqIEF1eGlsaWFyeVxuICovXG5AaW1wb3J0IFwiYXV4aWxpYXJ5L2F1eGlsaWFyeVwiOyIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovXG5cbiIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovXG5AaW1wb3J0IFwiZm9udHNcIjsiLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBGb250c1xuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovXG5cbmJvZHkge1xuICBmb250OiA0MDAgMTRweC8xLjM2IFwiSGVsdmV0aWNhXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xufVxuXG5AaW5jbHVkZSBmb250LWljb24oXCJzdXBlcm9ubGluZVwiLCBcInN1cGVyb25saW5lXCIpO1xuIiwiQGltcG9ydCBcImFrdGl2YXN5b24tc29yZ3VsYW1hXCI7XG5cbkBpbXBvcnQgXCJkZXNrdG9wXCI7XG5cbkBpbXBvcnQgXCJ1cnVubGVyaW1cIjtcblxuQGltcG9ydCAnbXVzdGVyaS1iaWxnaSc7XG5cbkBpbXBvcnQgJ2tpbWxpay1iaWxnaWxlcmltJztcblxuQGltcG9ydCAnZ3V2ZW5saS1pbnRlcm5ldCc7XG5cbkBpbXBvcnQgJ3lhYmFuY2kta2ltbGlrLWJpbGdpbGVyaSc7XG5cbkBpbXBvcnQgJ2JpcHRlLWV2JztcblxuQGltcG9ydCAndGFsZXBsZXJpbSc7XG5cbkBpbXBvcnQgJ2hlc2FiaW0tb3pldCc7XG5cbkBpbXBvcnQgJ2V2ZGUtdHZwbHVzJztcblxuQGltcG9ydCAnYmFnbGFudGktYWRpbWktZGVnaXN0aXInO1xuXG5AaW1wb3J0ICdmYXR1cmEtYm9yYy1zb3JndWxhJztcblxuQGltcG9ydCBcImthbGFuLWt1bGxhbmltLWdvc3RlcmltXCI7XG5cbkBpbXBvcnQgXCJyYW5kZXZ1LWVrcmFubGFyaVwiO1xuXG5AaW1wb3J0IFwiZmF0dXJhLWF5YXJsYXJpXCI7XG5cbkBpbXBvcnQgXCJmYXN0LWxvZ2luLWVudGVncmFzeW9udVwiOyIsIi8qIEBhdXRob3IgT251ciBQYWxheiAqL1xuXG5cbi8qKi9cblxuLmFrdGl2YXN5b24tc29yZ3VsYW1hIHtcblxuICAubGVmdF9hY3RpdmF0aW9uIHtcbiAgICAgIC5kZXNjcmlwdGlvbl9zZWN0aW9uIHtcbiAgICAgICAgICAuYWN0aXZlX3JlYWR5IHtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy9ha3RpdmFzeW9uL2FjdGl2ZXMucG5nKSBuby1yZXBlYXQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLmJsdWVfc3RlcHMge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL2FrdGl2YXN5b24vbnVtYmVyLnBuZykgbm8tcmVwZWF0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5hY3RpdmVfcmVhZHkuZ3JlZW5fbGluZTpiZWZvcmUge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL2FrdGl2YXN5b24vZ3JlZW4ucG5nKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuYmx1ZV9zdGVwcy5ibHVlOmJlZm9yZSB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IHVybCguLi8uLi9pbWFnZXMvYWt0aXZhc3lvbi9ibHVlLnBuZyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLmFjdGl2ZV9yZWFkeS5ncmVlbl9ibHVlOmJlZm9yZSB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IHVybCguLi8uLi9pbWFnZXMvYWt0aXZhc3lvbi9ncmVlbi1ibHVlLnBuZyk7XG4gICAgICAgICAgfVxuICAgICAgfVxuICB9XG5cbiAgLnRvb2x0aXBfc3RhdHUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAzNSU7XG4gIH1cblxuXG4gIC50b29sdGlwX3N0YXR1IC50b29sdGlwdGV4dCB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIHdpZHRoOiAxMjBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU1O1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgcGFkZGluZzogNXB4IDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgYm90dG9tOiAxMjUlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogLTYwcHg7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDFzO1xuICB9XG5cbiAgLnRvb2x0aXBfc3RhdHUgLnRvb2x0aXB0ZXh0OjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxMDAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogLTVweDtcbiAgICBib3JkZXItd2lkdGg6IDVweDtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1jb2xvcjogIzU1NSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbiAgfVxuXG4gIC50b29sdGlwX3N0YXR1OmhvdmVyIC50b29sdGlwdGV4dCB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgLnRvb2x0aXAtd3JhcHBlciB7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1ib3R0b206IDQ1cHg7XG4gIH1cblxuICAuYWN0aXZhdGlvbi1pbmZvLXdyYXBwZXIge1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxuXG4gIC5sYXN0LWl0ZW0ge1xuICAgIHdpZHRoOiA1N3B4ICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuXG4iLCIjc2VydmlzX3VwZGF0ZV91cnVuX2VzbGVzdGlybWVfZmliZXIxIC5jbG9zZWRfMjMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDNweDtcbiAgICB3aWR0aDogMjFweDtcbiAgICBoZWlnaHQ6IDE5cHg7XG4gICAgYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy9kZXNrdG9wL2Nsb3NlX2J0bl9hcmVhLnBuZyk7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGZvbnQtc2l6ZTogMjVweDtcbn1cblxuI3NlcnZpc191cGRhdGVfdXJ1bl9lc2xlc3Rpcm1lX2ZpYmVyMiAuY2xvc2VkXzIzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAzcHg7XG4gIHdpZHRoOiAyMXB4O1xuICBoZWlnaHQ6IDE5cHg7XG4gIGJhY2tncm91bmQ6IHVybCguLi8uLi9pbWFnZXMvZGVza3RvcC9jbG9zZV9idG5fYXJlYS5wbmcpO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LXNpemU6IDI1cHg7XG59IiwiLypcblxuQXV0aG9yOiBPbnVyIFBhbGF6XG5cbiovXG5cblxuaW5wdXRbbmFtZT1cImJkYXlcIl0ge1xuXG4gIGZvbnQtc2l6ZTogMTBweDtcblxufVxuXG5cbi5vZGQtcm93IGlucHV0W25hbWU9XCJQU1ROXCJdLCAuZXZlbi1yb3cgaW5wdXRbbmFtZT1cIlBTVE5cIl0ge1xuICBmb250LWZhbWlseTogXCJUdXJrY2VsbCBTYXR1cmFcIiwgXCJIZWx2ZXRpY2FcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIHdpZHRoOiA3MnB4ICFpbXBvcnRhbnQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZzogMnB4O1xuICBtYXJnaW46IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGNvbG9yOiAjMUEzMzgwO1xufVxuXG4ub2RkLXJvdyBzZWxlY3RbbmFtZT1cInV5cnVrXCJdLCAuZXZlbi1yb3cgc2VsZWN0W25hbWU9XCJ1eXJ1a1wiXSB7XG5cbiAgZm9udC1mYW1pbHk6IFwiVHVya2NlbGwgU2F0dXJhXCIsIFwiSGVsdmV0aWNhXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICAtbW96LWJvcmRlci1yYWRpdXM6IDA7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDtcbiAgcGFkZGluZzogMnB4O1xuICBwYWRkaW5nLWxlZnQ6IDJweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogIzFBMzM4MDtcbiAgd2lkdGg6IDU4cHg7XG59XG5cbi5vZGQtcm93IHNlbGVjdFtuYW1lPVwia2ltbGlrdGlwaVwiXSwgLmV2ZW4tcm93IHNlbGVjdFtuYW1lPVwia2ltbGlrdGlwaVwiXSB7XG5cbiAgZm9udC1mYW1pbHk6IFwiVHVya2NlbGwgU2F0dXJhXCIsIFwiSGVsdmV0aWNhXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICAtbW96LWJvcmRlci1yYWRpdXM6IDA7XG4gIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMDtcbiAgcGFkZGluZzogMnB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAjMUEzMzgwO1xuICB3aWR0aDogMTAycHg7XG59XG5cbi5vZGQtcm93IHNlbGVjdCBvcHRpb24ge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cblxuLm9kZC1yb3cgaW5wdXRbbmFtZT1cInRja25cIl0sIC5ldmVuLXJvdyBpbnB1dFtuYW1lPVwidGNrblwiXSB7XG4gIGZvbnQtZmFtaWx5OiBcIlR1cmtjZWxsIFNhdHVyYVwiLCBcIkhlbHZldGljYVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgd2lkdGg6IDY4cHggIWltcG9ydGFudDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAycHg7XG4gIG1hcmdpbjogMDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgY29sb3I6ICMxQTMzODA7XG59XG5cbi5vZGQtcm93IGlucHV0W25hbWU9XCJhZFwiXSwgLmV2ZW4tcm93IGlucHV0W25hbWU9XCJhZFwiXSB7XG4gIGZvbnQtZmFtaWx5OiBcIlR1cmtjZWxsIFNhdHVyYVwiLCBcIkhlbHZldGljYVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgd2lkdGg6IDY4cHggIWltcG9ydGFudDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAycHg7XG4gIG1hcmdpbjogMDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgY29sb3I6ICMxQTMzODA7XG59XG5cbi5vZGQtcm93IGlucHV0W25hbWU9XCJzb3lhZFwiXSwgLmV2ZW4tcm93IGlucHV0W25hbWU9XCJzb3lhZFwiXSB7XG4gIGZvbnQtZmFtaWx5OiBcIlR1cmtjZWxsIFNhdHVyYVwiLCBcIkhlbHZldGljYVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgd2lkdGg6IDY4cHggIWltcG9ydGFudDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAycHg7XG4gIG1hcmdpbjogMDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgY29sb3I6ICMxQTMzODA7XG59XG5cbi5vZGQtcm93IGlucHV0W25hbWU9XCJkb2d1bS10YXJpaGlcIl0sIC5ldmVuLXJvdyBpbnB1dFtuYW1lPVwiZG9ndW0tdGFyaWhpXCJdIHtcbiAgZm9udC1mYW1pbHk6IFwiVHVya2NlbGwgU2F0dXJhXCIsIFwiSGVsdmV0aWNhXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDdweDtcbiAgd2lkdGg6IDc2cHggIWltcG9ydGFudDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiA0cHggMXB4IDAgMnB4O1xuICBtYXJnaW46IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGNvbG9yOiAjMUEzMzgwO1xuICBsaW5lLWhlaWdodDogMTtcblxufVxuXG5cblxuXG4ub2RkLXJvdyBpbnB1dFtuYW1lPVwia2ltbGlrLW5vXCJdLCAuZXZlbi1yb3cgaW5wdXRbbmFtZT1cImtpbWxpay1ub1wiXSB7XG4gIGZvbnQtZmFtaWx5OiBcIlR1cmtjZWxsIFNhdHVyYVwiLCBcIkhlbHZldGljYVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgd2lkdGg6IDUwcHggIWltcG9ydGFudDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAycHg7XG4gIG1hcmdpbjogMDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgY29sb3I6ICMxQTMzODA7XG59XG5cbi5vZGQtcm93IGlucHV0W25hbWU9XCJlbWFpbFwiXSwgLmV2ZW4tcm93IGlucHV0W25hbWU9XCJlbWFpbFwiXSB7XG4gIGZvbnQtZmFtaWx5OiBcIlR1cmtjZWxsIFNhdHVyYVwiLCBcIkhlbHZldGljYVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgd2lkdGg6IDY4cHggIWltcG9ydGFudDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAycHg7XG4gIG1hcmdpbjogMDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgY29sb3I6ICMxQTMzODA7XG59XG5cbi5vZGQtcm93IGlucHV0W25hbWU9XCJ0ZWwtbm9cIl0sIC5ldmVuLXJvdyBpbnB1dFtuYW1lPVwidGVsLW5vXCJdIHtcbiAgZm9udC1mYW1pbHk6IFwiVHVya2NlbGwgU2F0dXJhXCIsIFwiSGVsdmV0aWNhXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICB3aWR0aDogNjhweCAhaW1wb3J0YW50O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDJweDtcbiAgbWFyZ2luOiAwO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICBjb2xvcjogIzFBMzM4MDtcbn1cblxudGFibGUgLnV4ci10ci1oZWFkZXIgdGQge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtZmFtaWx5OiBcIlR1cmtjZWxsIFNhdHVyYVwiLCBcIkhlbHZldGljYVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBcbn1cblxuLnV4ci1raW0tdGFibGUgdGQge1xuICBwYWRkaW5nOiA3cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiBsYXJnZTtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgcGFkZGluZy1sZWZ0OiAxcHg7XG59XG5cblxuLyoqKioqKioqKioqL1xuXG4udXhyLXBsYWluLXNlbGVjdC11eXJ1ayxcbi51eHItcGxhaW4tc2VsZWN0LWtpbWxpay10aXBpIHtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLXRvcDogMnB4O1xuXG59XG5cbi51eHItcGxhaW4tc2VsZWN0LXV5cnVrIHNlbGVjdCxcbi51eHItcGxhaW4tc2VsZWN0LWtpbWxpay10aXBpIHNlbGVjdCB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAtbXMtYXBwZWFyYW5jZTogbm9uZTtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiA3MHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjY2NjO1xuICBjb2xvcjogIzFBMzM4MDtcbn1cblxuLnV4ci1wbGFpbi1zZWxlY3QtdXlydWsgc2VsZWN0OmZvY3VzLFxuLnV4ci1wbGFpbi1zZWxlY3Qta2ltbGlrLXRpcGkgc2VsZWN0OmZvY3VzIHtcbiAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm94LXNoYWRvdzogMCAwIDEwcHggcmdiYSgwLCAwLCAwLCAwLjMpLCBpbnNldCAwIDAgN3B4IHJnYmEoMTAwLDEwMCwxMDAsMC4zKTtcbiAgYm9yZGVyLWNvbG9yOiAjMDBjMGYzO1xufVxuXG4udXhyLXBsYWluLXNlbGVjdC11eXJ1azphZnRlcixcbi51eHItcGxhaW4tc2VsZWN0LWtpbWxpay10aXBpOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICByaWdodDogOHB4O1xuICB0b3A6IDUwJTtcbiAgbWFyZ2luLXRvcDogLTJweDtcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgYm9yZGVyLXRvcDogNHB4IHNvbGlkICMwMDAwMDA7XG4gIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLnV4ci1jb250YWluZXIgaDMge1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG59XG5cbi51eHItdGFiLWNvbnRlbnQtd3JhcHBlciB7XG4gIGJvcmRlci10b3A6IG5vbmU7XG5cbn1cblxuLnV4ci1leGNlbC1zYXZlLXRpcCxcbi51eHItc2F2ZS1hbGwtdGlwIHtcbiAgZm9udC1mYW1pbHk6IFwiVHVya2NlbGwgU2F0dXJhXCIsIFwiSGVsdmV0aWNhXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogMzAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGNvbG9yOiAjMTgzMDdGO1xuICBmbG9hdDogbGVmdDtcbiAgcGFkZGluZy1yaWdodDogMTVweDtcblxufVxuXG4udXhyLWV4Y2VsLXNhdmUtY29udGFpbmVyIHtcbiAgZmxvYXQ6IHJpZ2h0O1xuICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbn1cblxuLnV4ci1leGNlbC1zYXZlLWljb24sXG4udXhyLXNhdmUtYWxsLWljb24ge1xuICBmbG9hdDogbGVmdDtcbn1cblxuLnV4ci1zYXZlLWFsbC1jb250YWluZXIge1xuICBtYXJnaW46IDIwcHggMTBweCAwIDA7XG59XG5cbi51eHItZXhjZWwtc2VsZWN0LWZpbGUge1xuICBmb250LWZhbWlseTogXCJUdXJrY2VsbCBTYXR1cmFcIiwgXCJIZWx2ZXRpY2FcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2Y4ZmQ7XG4gIGNvbG9yOiAjMTkzMjdEO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogNHB4IDVweCAhaW1wb3J0YW50O1xuICB0ZXh0LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgYm9yZGVyOiAxcHggc29saWQgIzlkYzhlYiAhaW1wb3J0YW50O1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDhweDtcbiAgLW1vei1ib3JkZXItcmFkaXVzOiA4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuXG4udXhyLWRvd25sb2FkLWFzLWV4Y2VsIHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xufVxuXG4udXhyLXNhdmUtYWxsLXJvd3Mge1xuICBmbG9hdDogcmlnaHQ7XG59XG5cbi51eHItZXhjZWwtZG93bmxvYWQtdGlwIHtcbiAgZm9udC1mYW1pbHk6IFwiVHVya2NlbGwgU2F0dXJhXCIsIFwiSGVsdmV0aWNhXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogMzAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGNvbG9yOiAjMTgzMDdGO1xuICBmbG9hdDogbGVmdDtcbiAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xufVxuXG4udXhyLWV4Y2VsLWRvd25sb2FkLXRpcDpob3ZlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG5cbi51eHItcGFnaW5hdGlvbi1pdGVtc3tcbiAgcGFkZGluZzogMzBweCAwO1xufVxuXG4udXhyLXBhZ2luYXRpb24taXRlbXMgdWx7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xufVxuXG4udXhyLXBhZ2luYXRpb24taXRlbXMgYSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogMTBweCAxOHB4O1xuICBjb2xvcjogIzk5OTk5OTtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogMzZweDtcbiAgbGluZS1oZWlnaHQ6IDM2cHg7XG4gIHBhZGRpbmc6IDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuXG4udXhyLXBhZ2luYXRpb24taXRlbXMgYTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1YWJkZTY7XG4gIGJvcmRlci1yYWRpdXM6IDEwJTtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi51eHItcGFnaW5hdGlvbi1pdGVtcyBhLnV4ci1hY3RpdmUtcGFnZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWFiZGU2O1xuICBib3JkZXItcmFkaXVzOiAxMCU7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4udXhyLXBhZ2luYXRpb24tY29udGFpbmVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4udXhyLXNhdmUtYWxsLWRpc2tldHRlLWljb24ge1xuICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgbWFyZ2luLWJvdHRvbTogLTJweDtcblxufVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuIiwiLyogQGF1dGhvciBHw7xsw6dpbiBHaXJnaW4gKi9cblxuXG4vKiovXG5cbi5jdXN0b21lci1xdW90YXtcbiAgd2lkdGg6IDUyNXB4O1xuICBtYXJnaW46IDY1cHggYXV0byAwcHggO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgJi1sb2dve1xuICAgIHdpZHRoOiAxNzBweDtcbiAgICBoZWlnaHQ6IDY1cHg7XG4gICAgcGFkZGluZy10b3A6IDIwcHg7XG4gIH1cblxuICAmLWljb257XG4gICAgd2lkdGg6IDY1cHg7XG4gICAgaGVpZ2h0OiA4NXB4O1xuICAgIHBhZGRpbmc6IDBweCAzMHB4O1xuICB9XG5cbiAgJi1jb250ZXh0e1xuICAgIHBhZGRpbmc6IDBweCAyNXB4O1xuICB9XG5cbn1cblxuXG4uc2V0dGluZ3N7XG5cbiAgJi1ib2xke1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIH1cbn1cblxuXG4iLCIvKlxuQXV0aG9yOiBPbnVyIFBhbGF6XG5LaW1saWsgQmlsZ2lsZXJpbSBTYXlmYWxhcmkgU1RBUlRcbiovXG5cblxuLnV4ci10cmstZHJvcGRvd24ge1xuICBoZWlnaHQ6NTVweCAhaW1wb3J0YW50O1xuICBtYXJnaW4tdG9wOjI1cHg7XG59XG5cblxuLnV4ci10cmstZHJvcGRvd24tdWwgbGkgYSB7XG4gIHBhZGRpbmc6IDIycHggMjhweCAxMnB4IDE3cHggIWltcG9ydGFudDtcbn1cblxuLnV4ci10cmstZHJvcGRvd24tdWwgbGkgYTphZnRlciB7XG4gIG1hcmdpbi10b3A6IDZweDtcbn1cblxuXG4udXhyLXVwZGF0ZS13aXRoLWV4Y2VsIHtcbiAgZm9udC1mYW1pbHk6IFwiVHVya2NlbGwgU2F0dXJhXCIsIFwiSGVsdmV0aWNhXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDIycHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIG1hcmdpbi10b3A6IDVweDtcbn1cblxuXG4udXhyLW51bWJlci1zZWxlY3QtYnV0dG9uIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6ICNmMmYyZjI7XG4gIGJvcmRlcjogMDtcbiAgY29sb3I6ICMwMDA7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOiAyNXB4IDAgMCAwO1xuICBoZWlnaHQ6IDU1cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwcHg7XG4gIC1tb3otYm9yZGVyLXJhZGl1czogMHB4O1xuICBib3JkZXItcmFkaXVzOiAwcHg7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjQpIDBweCAxcHggMXB4IDBweDtcbiAgLW1vei1ib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuNCkgMHB4IDFweCAxcHggMHB4O1xuICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuNCkgMHB4IDFweCAxcHggMHB4O1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNFMEUwRTA7XG59XG5cblxuLnV4ci1waG9uZS1udW1iZXItd2FybmluZyB7XG4gIGZvbnQtZmFtaWx5OiBcIlR1cmtjZWxsIFNhdHVyYVwiLCBcIkhlbHZldGljYVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgY29sb3I6IHJlZDtcbn1cblxuLnV4ci1udW1iZXItc2VsZWN0LWJ1dHRvbiBzcGFuIHtcbiAgZm9udDogNzAwIDE2cHgvMSBcIkhlbHZldGljYVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgY29sb3I6ICM0ZDRkNGQ7XG4gIGZsb2F0OiBsZWZ0O1xuICBtYXJnaW4tbGVmdDogMTVweDtcbiAgbGluZS1oZWlnaHQ6IDMuNztcbn1cblxuLnV4ci1udW1iZXItc2VsZWN0LWJ1dHRvbjphZnRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmbG9hdDogcmlnaHQ7XG4gIG1hcmdpbi10b3A6IDIxcHg7XG4gIG1hcmdpbi1yaWdodDogMTRweDtcbiAgcGFkZGluZzogMDtcbiAgaGVpZ2h0OiAxNXB4O1xuICB3aWR0aDogMTBweDtcbiAgYmFja2dyb3VuZDogdXJsKFwiLi4vLi4vaW1hZ2VzL2NvbW1vbi9zcHJpdGUtY29tbW9uL2NhcnJvdF9yaWdodC04LnBuZ1wiKSBuby1yZXBlYXQ7XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG5cblxuLnV4ci1vcHRpb24ge1xuICBtYXJnaW46IDUwcHggMCA1MHB4IDA7XG59XG5cbi51eHItb3B0aW9uLWhlYWRsaW5lIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogNTAwcHg7XG4gIG1hcmdpbi10b3A6IDJweDtcbiAgZm9udC1mYW1pbHk6IFwiVHVya2NlbGwgU2F0dXJhXCIsIFwiSGVsdmV0aWNhXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDI2cHg7XG59XG5cblxuLnV4ci1vcHRpb24gaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4udXhyLW9wdGlvbiAudXhyLWFjdGl2ZS1vcHRpb24ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4udXhyLW9wdGlvbi5hY3RpdmUgLnV4ci1hY3RpdmUtb3B0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi51eHItbWlzc2luZy1pbmZvLXdhcm5pbmcge1xuICBjb2xvcjogcmVkO1xuICBmbG9hdDogcmlnaHQ7XG4gIGZvbnQtc2l6ZTogbGFyZ2U7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi51eHItcGhvbmUtbnVtYmVyLW9wdGlvbi1pbm5lciB7XG4gIHBhZGRpbmctdG9wOiAzMHB4O1xufVxuXG5cbi51eHItdHJrLWRyb3Bkb3duLmNsb3NlZCAuc2VsZWN0ZWQgYSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICByaWdodDogMCAhaW1wb3J0YW50O1xuICB0b3A6IDAgIWltcG9ydGFudDtcbiAgY29sb3I6ICM0ZDRkNGQgIWltcG9ydGFudDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50O1xuICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzICFpbXBvcnRhbnQ7XG59XG5cbi50cmtfZHJvcGRvd25fYnV0dG9uOmFmdGVyLFxuLnRya19kcm9wZG93biAubGFiZWwgYTphZnRlcixcbi50cmtfZHJvcGRvd24uZHJvcGRvd24tbW9kaWZpZXIxIC5zZWxlY3RlZDphZnRlciB7XG4gIG1hcmdpbi10b3A6IDVweDtcbn1cblxuXG4udXhyLWV4Y2VsLXVwbG9hZC1jb250YWluZXIge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnV4ci1jdXN0b20tZmlsZSB7XG4gIHdpZHRoOiAxMTBweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBjb2xvcjogIzlkOWQ5ZDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDE4cHg7XG4gIGhlaWdodDogNDVweDtcbiAgbWFyZ2luOiAwO1xufVxuXG4udXhyLWl0ZW0tZmllbGQtY2xhc3Mge1xuICBwYWRkaW5nOiAxNHB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIHdpZHRoOiA1MzBweDtcbiAgaGVpZ2h0OiA0NXB4O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwcHggMXB4IDNweCAtMnB4ICMwMDA7XG4gIC1tb3otYm94LXNoYWRvdzogaW5zZXQgMHB4IDFweCAzcHggLTJweCAjMDAwO1xuICBib3gtc2hhZG93OiBpbnNldCAwcHggMXB4IDNweCAtMnB4ICMwMDA7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxOHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZmNmY2O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTJlMmUyO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2NkY2RjZDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZmVmZWY7XG4gIGNvbG9yOiAjOWQ5ZDlkO1xuICBmb250LXNpemU6IDE0cHg7XG4gIG1hcmdpbjogMDtcbn1cblxuXG4udXhyLWJpcnRoLWRhdGUtZmllbGQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4udXhyLXRyay1kcm9wZG93bi1zbGN0IHtcbiAgaGVpZ2h0OiA1NnB4ICFpbXBvcnRhbnQ7XG59XG5cbi51eHItdHJrLWRyb3Bkb3duLXNsY3QgdWwgbGkgYSB7XG4gIHBhZGRpbmctdG9wOiAyMXB4ICFpbXBvcnRhbnQ7XG59XG5cbi51eHItaWQtdHlwZS1kcm9wZG93biB7XG4gIG1hcmdpbi10b3A6IDI0cHg7XG59XG5cbi51eHItc29sLWRhdGVwaWNrZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA1NnB4ICFpbXBvcnRhbnQ7XG5cbn1cblxuLnV4ci1kYXRlcGlja2VyLWljbyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB0b3A6IDQ0cHggIWltcG9ydGFudDtcbiAgcmlnaHQ6IDE2cHggIWltcG9ydGFudDtcbn1cblxuXG5cblxuXG5cblxuLypcbkF1dGhvcjogT251ciBQYWxhelxuS2ltbGlrIEJpbGdpbGVyaW0gU2F5ZmFsYXJpIEVORFxuKi9cblxuXG4iLCIudXhyLW5hdi1ndXZlbmxpLWludGVybmV0IHtcblxuXG59XG5cblxuLyogQXV0aG9yOiBPbnVyIFBhbGF6ICovXG5cbmEudXhyLW5hdi1ndXZlbmxpLWludGVybmV0OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi8uLi9hc3NldHMvaW1hZ2VzL3V4cm9ja2V0L3Nwcml0ZS91eHItc3ByaXRlLWljb25zLnBuZykgIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogLThweCAtMnB4O1xufVxuXG5hLnV4ci1uYXYtZ3V2ZW5saS1pbnRlcm5ldDpob3Zlcjo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvdXhyb2NrZXQvc3ByaXRlL3V4ci1zcHJpdGUtaWNvbnMucG5nKSAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDBweCAtMnB4O1xufVxuXG4uYWN0aXZlIC51eHItbmF2LWd1dmVubGktaW50ZXJuZXQ6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvdXhyb2NrZXQvc3ByaXRlL3V4ci1zcHJpdGUtaWNvbnMucG5nKSAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDBweCAtMnB4XG59IiwiLnNldHRpbmdzLWxpc3QgLnRya19kcm9wZG93biwgLnNldHRpbmdzLWxpc3Qgc2VsZWN0IC51eHItZHJvcGRvd24tY291bnRyeSB7XG4gIG1heC13aWR0aDogMzkycHg7XG4gIGhlaWdodDogNTBweDtcbn1cbi51eHIteWFiYW5jaS1raW1saWstYmlsZ2lsZXJpLXdyYXBwZXIgI3V4ci1pbnB1dC1mb3JlaWduZXIge1xuICBwYWRkaW5nLXRvcDogMzNweDtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi51eHIteWFiYW5jaS1raW1saWstYmlsZ2lsZXJpLXdyYXBwZXIgLnV4ci1pbnB1dC10b3AtaWQge1xuICBmbG9hdDogcmlnaHQ7XG59XG4udXhyLXlhYmFuY2kta2ltbGlrLWJpbGdpbGVyaS13cmFwcGVyIC51eHItY2hlY2tib3gtaWQge1xuICBwYWRkaW5nOiAxM3B4IDAgNDVweCAwO1xufVxuLnV4ci15YWJhbmNpLWtpbWxpay1iaWxnaWxlcmktd3JhcHBlciAubGFiZWx0ZXh0LWVuZyB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4iLCJcbnRhYmxlLnV4ci1iaWxscy1saXN0IHRib2R5IHRkIHtcbiAgcGFkZGluZzogMHB4IDEwcHg7XG59XG5cbnRyLnV4ci1iaWxscy1saXN0LW9kZC1yb3cge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWRlYmViO1xufVxuXG4jYmlwMlRlcm1zQWdyZWVtZW50V3JhcHBlciB7XG4gIGlucHV0LmNoZWNrYm94LkxWX2ludmFsaWRfZmllbGQgKyBsYWJlbCBzcGFuIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGIyMTMzICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuI2JpcDJEaXJlY3Rpb25Vc2VyQWdnIHtcbiAgLmFncmVlbWVudFRleHQge1xuICAgIGhlaWdodDogMTAwcHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMnB4IDJweCAycHggMCAjZGRkO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDJweCAycHggMnB4IDAgI2RkZDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJhY2tncm91bmQ6ICNmMmYyZjI7XG4gICAgcGFkZGluZzogN3B4ICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIH1cbn1cblxuZm9ybSNiaXAyTnVtYmVyRGlyZWN0aW9uIHtcblxuICAjYmlwMkRpcmVjdGlvbkdzbU5vV3JhcHBlciBsYWJlbCxcbiAgI2JpcDJEaXJlY3Rpb25NYWlsV3JhcHBlciBsYWJlbCxcbiAgI2JpcDJEaXJlY3Rpb25NYWlsQWdhaW5XcmFwcGVyIGxhYmVsIHtcbiAgICBmb250LWZhbWlseTogXCJUdXJrY2VsbCBTYXR1cmFcIiwgXCJIZWx2ZXRpY2FcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LXNpemU6IDIycHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuMzZlbTtcbiAgfVxuXG4gICNiaXAyRGlyZWN0aW9uVXNlckFnZyBsYWJlbCB7XG4gICAgZm9udC1mYW1pbHk6IFwiVHVya2NlbGwgU2F0dXJhXCIsIFwiSGVsdmV0aWNhXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZm9udC1zaXplOiAyMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM2ZW07XG4gICAgY29sb3I6ICM0ZDRkNGQgIWltcG9ydGFudDtcbiAgfVxuXG4gICNiaXAyRGlyZWN0aW9uTWFpbFdyYXBwZXIgaW5wdXQsXG4gICNiaXAyRGlyZWN0aW9uTWFpbEFnYWluV3JhcHBlciBpbnB1dCB7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIHBhZGRpbmc6IDE4cHggMjBweCAxNXB4O1xuICAgIGZvbnQtZmFtaWx5OiBcIkhlbHZldGljYVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgfVxuXG59XG5cbiNiaXAybmROdW1iZXJDb25maXJtRGl2IHtcblxuICBpbnB1dCNjb25maXJtU2VuZE90cFRleHQge1xuICAgIGhlaWdodDogNTZweDtcbiAgICBwYWRkaW5nOiAxOHB4IDIwcHggMTVweDtcbiAgICBmb250LWZhbWlseTogXCJIZWx2ZXRpY2FcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gIH1cblxuICBzbWFsbC51eHItc21hbGwtaW5wdXQtZGVzYyB7XG4gICAgZm9udC1mYW1pbHk6IFwiVHVya2NlbGwgU2F0dXJhXCIsIFwiSGVsdmV0aWNhXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGNvbG9yOiAjOWQ5ZDlkO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICB9XG59XG5cbiNiaXAybmROdW1iZXJPdHBDb25maXJtRGl2IHtcbiAgaW5wdXQjdmVyaWZ5UGFzc3dvcmRUZXh0IHtcbiAgICBwYWRkaW5nOiAxOHB4IDIwcHggMTVweDtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gIH1cblxuICBpbnB1dCNzZW5kT3RwVGV4dCB7XG4gICAgcGFkZGluZzogMThweCAyMHB4IDE1cHg7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICB9XG59XG5cbi51eHItY291bnRkb3duLXRpbWVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC5zdGVwLWltYWdlLWNpcmNsZSB7XG4gICAgd2lkdGg6IDEzNXB4O1xuICAgIGhlaWdodDogMTM1cHg7XG4gIH1cblxuICBkaXYge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogIzQwYWZlNztcbiAgICBmb250LXNpemU6IDM0cHg7XG4gICAgdG9wOiAwO1xuXG4gICAgc3BhbiB7XG4gICAgICBsaW5lLWhlaWdodDogMTM1cHg7XG4gICAgfVxuICB9XG59XG5cbi51eHItc2VuZC1hZ2Fpbi1pY29ubGluayB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHBhZGRpbmctbGVmdDogMjBweDtcbiAgb3BhY2l0eTogLjQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnV4ci1zZW5kLWFnYWluLWljb25saW5rOmJlZm9yZSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChodHRwczovL3MudHVya2NlbGwuY29tLnRyL3N0YXRpY19saWIvYXNzZXRzL2ltYWdlcy91eHJvY2tldC9zcHJpdGUvdXhyLXNwcml0ZS1pY29ucy5wbmcpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjAycHggLTIwN3B4O1xuICB3aWR0aDogMTRweDtcbiAgaGVpZ2h0OiAxNHB4O1xuICBjb250ZW50OiBcIiBcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xufVxuXG5cblxuXG5cblxuXG5cblxuXG4iLCIudXhyLXRhbGVwLWluZm8ge1xuICBjb2xvcjogI0ZEQTkxOTtcbn1cblxuLnV4ci1kYXJrLWFyZWEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAzQjc1O1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi51eHItaXRlbWlzYXRpb24tZGV0YWlsX190aXRsZSB7XG4gIHBhZGRpbmc6IDI1cHg7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG59XG5cbi51eHItcmVzdWx0LWNvbG9yIHtcbiAgY29sb3I6ICM0MWJkZWU7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgbWFyZ2luLWxlZnQ6IDJweDtcbn1cblxuLnV4ci10YWxlcC1yZXN1bHQtaW5mbyB7XG4gIGNvbG9yOiAjMkNFNzkxO1xufVxuXG4udXhyLXNlcC1ib3Qtc3BhbiB7XG4gIGNvbG9yOiAjNEQ0RDREO1xuICBmb250LXNpemU6IDE0cHg7XG4gIHBhZGRpbmctdG9wOiAycHg7XG4gIG1hcmdpbi1sZWZ0OiAzcHg7XG59XG5cbi51eHItbGFiZWxlZC1kYXRlcGlja2VyIGxhYmVsIHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsaW5lLWhlaWdodDogMzBweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMnB4O1xufVxuXG4udXhyLWxhYmVsZWQtZGF0ZXBpY2tlciBpbnB1dCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uZ19fNzUge1xuICB3aWR0aDogNzUlO1xufVxuXG4udXhyLXRhc2ltYS1zaWhpcmJhemkgLnRya19kcm9wZG93biAubGFiZWwgYTphZnRlciB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5cbi51eHItdGFzaW1hLXNpaGlyYmF6aSAudXhyLXRhbGVwLWRldGFpbHMge1xuICBwYWRkaW5nLWxlZnQ6IDIxcHg7XG59XG5cbi51eHItZmlyc3QtdGgge1xuICB3aWR0aDogMTUlO1xufVxuXG4udXhyLXNlY29uZC10aCB7XG4gIHdpZHRoOiAzMCU7XG59XG5cbi51eHItdGhpcmQtdGgge1xuICB3aWR0aDogMzUlO1xufVxuXG4udXhyLWZvdXJ0aC10aCB7XG4gIHdpZHRoOiAyMCU7XG59XG5cbiIsInVsLm5hdmlnYXRpb24gbGkge1xuICBhIHtcbiAgICAmLnV4ci1uYXYtaW50ZXJuZXRpc2xlbWxlcmltOmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaW1hZ2VzL215X2FjY291bnQvc3ByaXRlLWljb25zLnBuZykgIWltcG9ydGFudDtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQgIWltcG9ydGFudDtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC04NzA1cHggMCAhaW1wb3J0YW50O1xuICAgICAgbWFyZ2luLWxlZnQ6IDJweDtcbiAgICB9XG4gICAgJjpob3Zlci51eHItbmF2LWludGVybmV0aXNsZW1sZXJpbTpiZWZvcmUge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL2ltYWdlcy9teV9hY2NvdW50L3Nwcml0ZS1pY29ucy5wbmcpICFpbXBvcnRhbnQ7XG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0ICFpbXBvcnRhbnQ7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODczM3B4IDAgIWltcG9ydGFudDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAycHg7XG4gICAgfVxuICAgICYudXhyLW5hdi10ZWtuaWtpc2xlbWxlcmltOmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaW1hZ2VzL215X2FjY291bnQvc3ByaXRlLWljb25zLnBuZykgIWltcG9ydGFudDtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQgIWltcG9ydGFudDtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC04NzYxcHggMCAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAmOmhvdmVyLnV4ci1uYXYtdGVrbmlraXNsZW1sZXJpbTpiZWZvcmUge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL2ltYWdlcy9teV9hY2NvdW50L3Nwcml0ZS1pY29ucy5wbmcpICFpbXBvcnRhbnQ7XG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0ICFpbXBvcnRhbnQ7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODc5M3B4IDAgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbiAgJi5hY3RpdmUgYSB7XG4gICAgJi51eHItbmF2LWludGVybmV0aXNsZW1sZXJpbTpiZWZvcmUge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL2ltYWdlcy9teV9hY2NvdW50L3Nwcml0ZS1pY29ucy5wbmcpICFpbXBvcnRhbnQ7XG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0ICFpbXBvcnRhbnQ7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODczM3B4IDAgIWltcG9ydGFudDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAycHg7XG4gICAgfVxuICAgICYudXhyLW5hdi10ZWtuaWtpc2xlbWxlcmltOmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaW1hZ2VzL215X2FjY291bnQvc3ByaXRlLWljb25zLnBuZykgIWltcG9ydGFudDtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQgIWltcG9ydGFudDtcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IC04NzkzcHggMCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIi51eHItdHZwbHVzLWNoYW5uZWxzLWxpc3Qge1xuICBtaW4taGVpZ2h0OiA2MzBweDtcbn1cblxuLnV4ci10dnBsdXMtY2hhbm5lbC1uYW1lIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tdG9wOiAzNHB4ICFpbXBvcnRhbnQ7XG59XG5cbi51eHItdHZwbHVzLWNoYW5uZWxzLWxpc3QgbGkge1xuICBtYXJnaW4tYm90dG9tOiA1MnB4O1xufVxuXG4udXhyLWZvb3Rub3RlcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7XG4gIHBhZGRpbmc6IDIwcHggMjBweCA1cHggMjBweDtcbiAgbWFyZ2luLWJvdHRvbTogNjBweDtcbiAgbGkge1xuICAgIGNvbG9yOiAjOGI4YjhiO1xuICAgIGxpc3Qtc3R5bGU6IGRlY2ltYWwgaW5zaWRlO1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgfVxufVxuIiwiLmRyb3Bkb3duLW1vZGlmaWVyMyAubGFiZWwgYTphZnRlcixcbi5kcm9wZG93bi1tb2RpZmllcjMgLnNlbGVjdGVkOmFmdGVyLFxuLmRyb3Bkb3duLW1vZGlmaWVyMyBidXR0b246YWZ0ZXJ7XG4gIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuLnV4ci1hY3R1YWwtbmV0d29yay1uYW1lIHtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xufSIsIi51eHItYmlsbC1xdWVyeS1mb3JtIC5vcHRpb24ge1xuICBmbG9hdDogbGVmdDtcbiAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xufVxuXG4udXhyLWJpbGwtcXVlcnktZm9ybSBpbnB1dC5yYWRpbyArIGxhYmVsID4gc3BhbjpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgbWFyZ2luLXRvcDogLTE0cHg7XG59XG5cbi51eHItYmlsbC1xdWVyeS1mb3JtIC5jb2xzLTIge1xuICBwYWRkaW5nLXRvcDogNTVweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnV4ci1iaWxsLXF1ZXJ5LWZvcm0gLmNvbW1vbi1pbnB1dC1saXN0IHtcbiAgcGFkZGluZy10b3A6IDMwcHg7XG59XG5cbi51eHItYmlsbC1xdWVyeS1mb3JtIC50YWItY29udGVudCAuZm9ybS1pdGVtIC5jb2wtMy5maXJzdCB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xufVxuXG4udXhyLWJpbGwtcXVlcnktZm9ybSAudGFiLWNvbnRlbnQgLmZvcm0taXRlbSAuY29sLTMge1xuICBmbG9hdDogbGVmdDtcbiAgd2lkdGg6IDEzNHB4O1xuICBtYXJnaW4tbGVmdDogMzJweDtcbn1cblxuLnV4ci1iaWxsLXF1ZXJ5LWZvcm0gLnRhYi1jb250ZW50IC5mb3JtLWl0ZW0gLmNvbC0yLmZpcnN0IHtcbiAgbWFyZ2luLXJpZ2h0OiA0JTtcbn1cblxuLnV4ci1iaWxsLXF1ZXJ5LWZvcm0gLnRhYi1jb250ZW50IC5mb3JtLWl0ZW0gLmNvbC0yIHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIHdpZHRoOiA0OCU7XG59XG4udXhyLWJpbGwtcXVlcnktZm9ybSAudHJrX2Ryb3Bkb3duX2J1dHRvbjphZnRlcixcbi51eHItYmlsbC1xdWVyeS1mb3JtIC50cmtfZHJvcGRvd24gLmxhYmVsIGE6YWZ0ZXIsXG4udXhyLWJpbGwtcXVlcnktZm9ybSAudHJrX2Ryb3Bkb3duLmRyb3Bkb3duLW1vZGlmaWVyMSAuc2VsZWN0ZWQ6YWZ0ZXIge1xuICBtYXJnaW4tdG9wOiAwO1xufSIsIi51eHIta2FsYW4ta3VsbGFuaW0tcHJvZ3Jlc3MtYmFyLXdyYXBwZXIge1xuICBtYXJnaW46IDAgYXV0bztcbiAgZm9udC1mYW1pbHk6IFR1cmtjZWxsU2F0dXJhLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gIHBhZGRpbmctdG9wOiA0MHB4O1xuICBtYXgtd2lkdGg6IDMwMHB4O1xuXG4gIC51eHItaW50ZXJuZXQtdXNlZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB0b3A6IDExcHg7XG4gICAgbGVmdDogMTNweDtcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICB6LWluZGV4OiAxO1xuICB9XG5cbiAgLnV4ci1yZW1haW5pbmctdXNlIHtcbiAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDUyLCAxMjYsIDIxMiwgMC40KTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHggMCAwIDRweDtcbiAgICBtYXJnaW46IDQwcHggYXV0bztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY29sb3I6IHJnYmEoNzQsIDc0LCA3NCwgMC41KTtcbiAgICBmb250LXNpemU6IDIwcHg7XG5cbiAgICBzbWFsbCB7XG4gICAgICBmb250LXNpemU6IDYwJTtcbiAgICB9XG5cbiAgICAudXhyLWludGVybmV0LXVzZWQtYmFyIHtcbiAgICAgIGhlaWdodDogMzZweDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDU0YTc7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHggMCAwIDRweDtcbiAgICAgIG1hcmdpbjogMTZweCAwO1xuICAgIH1cblxuICAgIC51eHItcHJvZ3Jlc3MtYmFyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogLTE1cHg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHJpZ2h0OiAtMTBweDtcblxuICAgICAgLnV4ci1pbnRlcm5ldC1wYWNrIHtcbiAgICAgICAgJi51eHItcGFja2FnZS1vdXQge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICByaWdodDogLTIwJTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICBjb2xvcjogIzAwMDtcbiAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuXG4gICAgICAgICAgLnV4ci1pbnRlcm5ldC1wYWNrLWdiIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjJweDtcblxuICAgICAgICAgICAgLmJhciB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyMzZjYjU7XG4gICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHdoaXRlO1xuICAgICAgICAgICAgICB3aWR0aDogM3B4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC51eHItaW50ZXJuZXQtcGFjay1wcmljZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLnV4ci1wYWNrYWdlLW91dC1wcmljZSB7XG4gICAgICAgICAgICBjb2xvcjogcmdiYSg3NCwgNzQsIDc0LCAwLjUpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnV4ci1pbnRlcm5ldC1wYWNrLXByaWNlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IC0xOHB4O1xuICAgICAgICB0b3A6IC0zcHg7XG5cbiAgICAgICAgJi5maXJzdCB7XG4gICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgICYubGFzdCB7XG4gICAgICAgICAgbGVmdDogLTIycHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuYmFyIHtcbiAgICAgIHdpZHRoOiAycHg7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgaGVpZ2h0OiA1NnB4O1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2I2ZDNmMztcbiAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgdG9wOiAtMTVweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcblxuICAgICAgLnV4ci1pbnRlcm5ldC1wYWNrLWdiIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0xNXB4O1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIH1cblxuICAgICAgJi5hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMjM2Y2I1O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB3aGl0ZTtcbiAgICAgICAgd2lkdGg6IDNweDtcblxuICAgICAgICAudXhyLWludGVybmV0LXBhY2stZ2Ige1xuICAgICAgICAgIGNvbG9yOiAjMDAwO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICB0b3A6IC0yMHB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnV4ci1wYWNrLXByaWNlLWFyZWEge1xuICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAtMThweDtcblxuICAgICAgLmFjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiAjMDAwO1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC51eHItcGFjay1pbmZvLWJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgY29sb3I6ICM0YTRhNGE7XG4gICAgbWFyZ2luLXRvcDogMzBweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICB9XG5cbiAgLnV4ci1wYWNrLWluZm8ge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAwIDEycHg7XG4gICAgbGluZS1oZWlnaHQ6IDE4cHg7XG4gIH1cblxuICAudXhyLWJ1dHRvbi1hcmVhIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtaW4td2lkdGg6IDQwMHB4O1xuICAgIG1hcmdpbi1sZWZ0OiAtNTBweDtcbiAgfVxuXG4gIC5idXR0b24tY3RhIHtcbiAgICBtYXJnaW4tdG9wOiAzMHB4O1xuICB9XG5cbiAgLnV4ci11bmxpbWl0ZWQtcGFjayB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAxMHB4O1xuICAgIHRvcDogMjMlO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxufSIsIi51eHItcmFuZGV2dS1la3Jhbmxhcmkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZzogNTBweCAwO1xuICBmb250LWZhbWlseTogXCJUdXJrY2VsbCBTYXR1cmFcIiwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xuXG4gIC51eHItaW1nLWFyZWEge1xuICAgIG1hcmdpbi1yaWdodDogNTVweDtcblxuICAgIGltZyB7XG4gICAgICB3aWR0aDogOTVweDtcbiAgICAgIGhlaWdodDogOTVweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICB9XG4gIH1cblxuICAudXhyLXJhbmRldnUtYmlsZ2lsZXJpIHtcbiAgICB3aWR0aDogNzAlO1xuXG4gICAgdGFibGUge1xuICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgIHRyOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZhZmFmYTtcbiAgICAgIH1cblxuICAgICAgdGQge1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIH1cblxuICAgICAgdGQ6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgd2lkdGg6IDIwJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCIudXhyLWJpbmEgLkxWX3ZhbGlkYXRpb25fbWVzc2FnZS5MVl9pbnZhbGlkLCAudXhyLWRhaXJlIC5MVl92YWxpZGF0aW9uX21lc3NhZ2UuTFZfaW52YWxpZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbiIsIi5mYXN0LWxvZ2luLWJ0biB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kOiAjMjk2MmZmO1xuICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDQwcHg7XG5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvdXhyb2NrZXQvZmFzdC1sb2dpbi5wbmcpO1xuICAgIHdpZHRoOiAxMTdweDtcbiAgICBoZWlnaHQ6IDIycHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgbWFyZ2luOiBhdXRvO1xuXG4gICAgQG1lZGlhICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi8uLi9hc3NldHMvaW1hZ2VzL3V4cm9ja2V0L2Zhc3QtbG9naW5AMngucG5nKTtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogMTE3cHggYXV0bztcbiAgICB9XG4gIH1cbn1cblxuLmxvZ2luLXNwYW4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGNvbG9yOiAjYTZhNmE2O1xuICBmb250LXNpemU6IDE4cHg7XG4gIG1hcmdpbjogMTZweCAwIDI2cHg7XG4gIHdpZHRoOiAxMDAlO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIHdpZHRoOiAzMyU7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgYmFja2dyb3VuZDogIzk3OTc5NztcbiAgfVxufVxuIiwiLyogQGF1dGhvciBCaWxhbCBDaW5hcmxpICovXG5cbi8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgRWxlbWVudHNcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqL1xuLy9cbi8vIEljb25zXG4vL1xuQGltcG9ydCBcImljb25zXCI7XG5AaW1wb3J0IFwiaWNvbnMtZXh0ZW5kXCI7XG5cbi8vXG4vLyBJbWFnZXNcbkBpbXBvcnQgXCJpbWFnZXNcIjtcblxuLy9cbi8vIFRleHQgU3R5bGVzXG4vL1xuQGltcG9ydCBcInRleHRzXCI7XG5cbi8vXG4vLyBGb3JtIFN0eWxlc1xuLy9cbkBpbXBvcnQgXCJmb3Jtcy9mb3Jtc1wiO1xuXG5cbi8vXG4vLyBUYWJsZSBTdHlsZXNcbi8vXG5AaW1wb3J0IFwidGFibGVzXCI7XG5cblxuLy9cbi8vIExpbmsgJiBOYXYgU3R5bGVzXG4vL1xuQGltcG9ydCBcImxpbmtzXCI7XG5cblxuLy9cbi8vIEhlYWRpbmcgU3R5bGVzXG4vL1xuQGltcG9ydCBcImhlYWRpbmdzXCI7XG5cblxuLy9cbi8vIExpc3QgU3R5bGVzXG4vL1xuQGltcG9ydCBcImxpc3RzXCI7XG5cblxuLy9cbi8vIExpc3QgU3R5bGVzXG4vL1xuQGltcG9ydCBcImJveFwiO1xuXG5AaW1wb3J0IFwiZmxleC1ncmlkXCI7XG4iLCJcbiVpY29uLXR1cmtjZWxsIHtcbiAgICBjb250ZW50OiBcIlxcRUEwMVwiO1xufVxuXG4uaWNvbi10dXJrY2VsbCB7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgQGV4dGVuZCAlaWNvbi10dXJrY2VsbFxuICAgIH1cbn1cblxuXG4laWNvbi1vdXRnb2luZy1tZXNzYWdlIHtcbiAgICBjb250ZW50OiBcIlxcRUEwMlwiO1xufVxuXG4uaWNvbi1vdXRnb2luZy1tZXNzYWdlIHtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBAZXh0ZW5kICVpY29uLW91dGdvaW5nLW1lc3NhZ2VcbiAgICB9XG59XG4iLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBJY29ucyBFeHRlbmRcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqL1xuW2NsYXNzKj1cImljb24tXCJdIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLy8gSWNvbiBzaXplc1xuLmljb24tMDV4IHtcbiAgICBmb250LXNpemU6IC41cmVtO1xufVxuXG4uaWNvbi0wNzV4IHtcbiAgICBmb250LXNpemU6IC43NXJlbTtcbn1cblxuLmljb24tMS0tNXgge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xufVxuXG4uaWNvbi0yeCB7XG4gICAgZm9udC1zaXplOiAycmVtO1xufVxuXG4uaWNvbi0zeCB7XG4gICAgZm9udC1zaXplOiAzcmVtO1xufVxuXG4uaWNvbi00eCB7XG4gICAgZm9udC1zaXplOiA0cmVtO1xufVxuXG4uaWNvbi01eCB7XG4gICAgZm9udC1zaXplOiA1cmVtO1xufVxuXG4uaWNvbi02eCB7XG4gICAgZm9udC1zaXplOiA2cmVtO1xufVxuXG4uaWNvbi03eCB7XG4gICAgZm9udC1zaXplOiA3cmVtO1xufSIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovXG4iLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiBcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqLyIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIEZvcm1cbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqL1xuLy9cbi8vIEZpZWxkIFdyYXBwZXJzXG4vL1xuQGltcG9ydCBcImZpZWxkc1wiO1xuXG5cbi8vXG4vLyBMYWJlbCBTdHlsZXNcbi8vXG5AaW1wb3J0IFwibGFiZWxzXCI7XG5cblxuLy9cbi8vICBJbnB1dCBGaWVsZCBTdHlsZXNcbi8vXG5AaW1wb3J0IFwiaW5wdXRzXCI7XG5cblxuLy9cbi8vIEJ1dHRvbiBTdHlsZXNcbi8vXG5AaW1wb3J0IFwiYnV0dG9uc1wiOyIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovIiwiLyogQGF1dGhvciBCaWxhbCBDaW5hcmxpICovXG5cbi8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi8iLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiBcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqLyIsIi8qIEBhdXRob3IgQXlkaW4gQ2luYXIgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiBcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqL1xuIiwiLyogQGF1dGhvciBCaWxhbCBDaW5hcmxpICovXG5cbi8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi8iLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiBcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqLyIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovIiwiLyogQGF1dGhvciBCaWxhbCBDaW5hcmxpICovXG5cbi8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi8iLCIvKiBAYXV0aG9yIEF5ZGluIENpbmFyICovXG5cbi8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqL1xuIiwiLyogQGF1dGhvciBHw7xsw6dpbiBHaXJnaW4gKi9cblxuLmZsZXgtcm93IHtcbiAgZGlzcGxheTogZmxleDtcblxuICAmLmFsaWduLWl0ZW1zIHtcbiAgICBAaW5jbHVkZSBhbGlnbi1pdGVtcyhjZW50ZXIpO1xuICB9XG5cbiAgJi5zcGFjZS1iZXR3ZWVuIHtcbiAgICBAaW5jbHVkZSBqdXN0aWZ5LWNvbnRlbnQoc3BhY2UtYmV0d2Vlbik7XG4gIH1cbiAgJi5zcGFjZS1jZW50ZXIge1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG59XG4iLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiBcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqL1xuXG4iLCIvKiBAYXV0aG9yIEJpbGFsIENpbmFybGkgKi9cblxuLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiBcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoqL1xuQGltcG9ydCAncGFrZXQtc2VjJzsiLCIvKiBAYXV0aG9yIEd1bGNpbiBHaXJnaW4gKi9cblxuLnF1b3RhLXBhY2thZ2V7XG4gIHBhZGRpbmc6IDI1cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjYmNiY2I7XG5cbiAgJi10aXRsZXtcbiAgICBjb2xvcjogIzJkMzc0MztcbiAgICBtYXJnaW4tdG9wOiAwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMjVweDtcbiAgfVxuXG4gICYtYm94e1xuXG4gICAgJi10aXRsZXtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgYmFja2dyb3VuZDogIzRkYTVmZjtcbiAgICAgIHBhZGRpbmc6IDE3cHggMTRweDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcblxuICAgIH1cblxuICAgICYtcHJpY2V7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIGJhY2tncm91bmQ6ICNmZWRlMzM7XG4gICAgICBwYWRkaW5nOiAxN3B4IDE0cHg7XG4gICAgICBjb2xvcjogIzAwMDAwMDtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgfVxuICB9XG5cbiAgJi1idXR0b257XG4gICAgYmFja2dyb3VuZDogI2ZlZGUzMztcbiAgICBwYWRkaW5nOiAxN3B4IDQ1cHg7XG4gICAgY29sb3I6ICMwMDA7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgZm9udC1zaXplOiAxN3B4O1xuICAgIG1hcmdpbjoxMHB4IDBweCA1cHg7XG4gIH1cblxuICAmLXBzLW5vdGV7XG4gICAgd2lkdGg6IDI2MHB4O1xuICAgIG1hcmdpbjogYXV0bztcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgY29sb3I6ICMzMTNiNDc7XG4gIH1cbn1cbiIsIi8qIEBhdXRob3IgQmlsYWwgQ2luYXJsaSAqL1xuXG4vKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIFxuICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKiovXG4iXSwibWFwcGluZ3MiOiI7QUFBQSw0QkFBNEI7QUFFNUI7O21EQUVtRDtBQUNuRDs7Ozs7R0FLRztBQ1ZILDJCQUEyQjtBQUUzQjs7Ozs7R0FLRztBQUVIOzs7bURBR21EO0FDWm5ELDJCQUEyQjtBQUUzQjs7bURBRW1EO0FDSm5ELDJCQUEyQjtBQUUzQjs7bURBRW1EO0FBQ25EOzs7R0FHRztBQUdIOzs7OztHQUtHO0FBS0g7Ozs7Ozs7O0dBUUc7QUFPSDs7Ozs7R0FLRztBQ3pDSCwyQkFBMkI7QUFFM0I7O21EQUVtRDtBQUNuRDs7Ozs7R0FLRztBQUlIOzs7OztHQUtHO0FDbkJILDJCQUEyQjtBQUMzQjs7bURBRW1EO0FBQ25EOzs7Ozs7R0FNRztBQUlIOzs7Ozs7Ozs7R0FTRztBQU1IOzs7OztHQUtHO0FBSUg7O0dBRUc7QUN4Q0gsMkJBQTJCO0FBRTNCOzttREFFbUQ7QUFDbkQ7Ozs7OztHQU1HO0FDWEgsMkJBQTJCO0FBRTNCOzttREFFbUQ7QUFDbkQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBY0g7OztHQUdHO0FBS0g7Ozs7Ozs7O0dBUUc7QUFNSDs7Ozs7Ozs7R0FRRztBQU1IOztHQUVHO0FBQ0g7Ozs7OztHQU1HO0FBSUg7Ozs7OztHQU1HO0FBSUg7Ozs7OztHQU1HO0FBSUg7Ozs7OztHQU1HO0FBSUg7Ozs7OztHQU1HO0FQeEdIOzs7O0dBSUc7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 */