@charset "UTF-8";
/**
 *  Extra styles to add inside iframes
 */
/**
  * Utilities
  *
  * Reusable functions, mixins, and helper classes.  Things like colors, vertical rhythm, and the .clear-fix helper are in this group.
  * > This directory of partials is also important because we’ll need to define global classes, mixins and styles that can be used anywhere and at any time.
  * >
  * >\- http://www.smashingmagazine.com/2013/08/other-interface-atomic-design-sass/
  */
/***
 * Strip Units
 *
 * Strips the units from a number
 *
 * scss:
 *   stripUnits($number);
 *
 * @param $number - value to strip the units from.
 */
/***
 * Pixels to Rems function
 *
 * Converts pixels to REMs so we can keep our units consistent.  Assumes 1rem is 16px (default for most browsers).
 *
 * scss:
 *   pxToRem($px[,$baseRem]);
 *
 * @param $px - unitless integer to convert to rems
 * @param $baseRem - pixels to count as one rem. Defaults to 16
 */
/***
 * Pixels to Ems function
 *
 * Converts pixels to EMs so we can keep our units consistent.  Assumes 1em is 16px, or you can pass a different base.
 *
 * scss:
 *   pxToEm($px[,$base]);
 *
 * @param $px - unitless integer to convert to rems
 * @param $base - pixels to count as one em. Defaults to 16
 */
/***
 * Square Root Function
 *
 * Gets the square root of a number (within a margin of error)
 *
 * Useful for diagonal/Pythagorean stuff.
 *
 * scss:
 *   sqrt($num)
 *
 * @param $num - number to get square root of
 */
/***
 * Power / Exponent Function
 *
 * Raises a number to a certain power. Supports integers and .5s as the exponent.
 *
 * Useful for diagonal/Pythagorean stuff.
 *
 * scss:
 *   pow($base, $exponent)
 *
 * @param $base - number to get square root of
 * @param $exponent - exponent to raise the base number to
 */
/***
 * Aspect Ratio
 *
 * Gets padding for correct aspect ratio, and sets height to 0.
 *
 * scss:
 *   @include aspect-ratio($width, $height)
 *
 * @param {Number} $width - comparative width of the ratio. The 'x' in x:y
 * @param {Number} $height - comparative height of the ratio. The 'y' in x:y
 */
/***
 * Quantity Query
 *
 * Mixins to allow styles to be set based on at-least, at-most, and exactly `n`
 * number of an element.
 *
 * scss:
 *   @include qqAtLeast ($n) {
 *     @content;
 *   }
 *  
 *   @include qqAtMost ($n) {
 *     @content;
 *   }
 *  
 *   @include qqExactly ($n) {
 *     @content;
 *   }
 *
 * @param $n - how many elements to query against
 * @param @content - the styles to apply to it
 */
/***
 * Media Queries
 *
 * Defines our default breakpoints.  Assumes mobile-first code, but supports not
 * by passing your breakpoint to the alternate mixin: `mq-lt`. Don't worry about
 * having a ton of these, since the minification process will combine them.
 *
 * There's also a separate mixin each for `portrait` and `landscape` orientations.
 *
 * scss:
 *   @include mq($breakpoint) {
 *     @content;
 *   }
 *   @include portrait {
 *     @content;
 *   }
 *   @include landscape {
 *     @content;
 *   }
 *
 * @param $breakpoint - what size you'd like to target larger than. A few have been pre-defined.
 * @param @content - the content to put in the media query
 */
/***
 *  Clear Fix
 *
 *  Clears all floats inside this element by using the `::after` pseudo-element.
 *
 *  scss:
 *    @include clear-fix;
 *    // or
 *    @extend %clear-fix;
 */
body::after {
	content: '';
	display: table;
	clear: both; }

/***
 * Grid
 *
 * Our super simple custom grid system. Just include the mixin `gridContainer`
 * to set max-width = $max-width + $gutter. For internal stuff, use
 * `subgridContainer` to automatically offset the margins on the container if
 * needed, and `colspan` on the actual column.  By default, assumes 12 columns
 * and a 2 * $wr gutter, but those can be overridden for more complex layouts.
 * It spits out styles wherever it is called, so you can define different
 * columns or even entirely different grids within media queries.
 *
 * There's also a colpush mixin to shift an element to the right by a number of columns.
 *
 * Remember, variables wrapped in `[]` in the example are optional.
 *
 * scss:
 *   @include gridContainer ([$gutter]);
 *   @include subgridContainer ([$gutter]);
 *   @include colspan ($span[, $total[, $gutter]]);
 *   @include colpush ($span[, $total[, $gutter]]);
 *
 * @param {int} $span - number of columns to span
 * @param {int} $total - number of total columns the grid has
 * @param {number w/ unit} $gutter - width of the gutters between columns
 */
/**
  * Settings
  *
  * Global settings and variables. This defines global site wide things like
  * colors and fonts.
  */
/***
 * Visual Rhythm
 *
 * Variables to maintain a standard visual rhythm both vertically and horizontally.
 *
 * Also, there's a function for returning the next multiple of vertical rhythm
 * above a given number.
 *
 * @param {Number} $base - number to find next multiple above.
 * @param {optional, Number} $rhythm - number that's multiplied until it's larger than `$base`. Equal to `$vr` if omitted.
 *
 * scss:
 *   line-height: multipleAbove(30, 14); // 3;
 */
/***
 * Colors
 *
 * These colors define the look of the guide itself, _not_ anything within the examples.
 *
 * path: .
 */
/***
 * Primary Palette
 *
 * The main colors used for the Autoguide template.  By default, these colors get
 * reused for the more detailed palette.
 *
 * Note to learners: these variable names are less than stellar.  They're kept
 * intentionally vague, because of their wide application.
 *
 * path: ./colors
 * order: 0
 * template: color
 */
/***
 * Detailed Palette
 *
 * These are the colors that will actually appear throughout the generated guide.
 * Altering these will grant a very fine level of control over components.
 *
 * The colors titled `$background-*` are used directly as the background property
 * for their given element, so you can replace them with anything that could apply
 * there.  For example: `$background-header: url(https://morbotron.com/img/S03E06/1053451.jpg) center center no-repeat`.
 *
 * path: ./colors
 * order: 1
 * template: color
 */
/***
 * Code Colors
 *
 * These are the color variables that can be overridden for code blocks.
 *
 * template: color
 * path: ./molecules/code block
 */
html {
	overflow-x: hidden; }
	html.not-scrollable::-webkit-scrollbar {
		display: none; }

html.not-fs body {
	padding: 1rem 1rem; }

.show-grid body::before {
	content: '';
	position: fixed;
	top: 0;
	bottom: 0;
	left: 50%;
	width: 100%;
	max-width: 63.75rem;
	z-index: 8675309;
	transform: translateX(-50%);
	background-image: linear-gradient(to right, transparent 1rem, rgba(4, 108, 111, 0.1) 1rem, rgba(4, 108, 111, 0.1) calc(100% - 1rem), transparent calc(100% - 1rem));
	background-size: 8.33333% auto; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluLWZyYW1lLmNzcyIsImluLWZyYW1lLnNjc3MiLCJ1dGlsaXRpZXMvZnVuY3Rpb25zL19zdHJpcFVuaXRzLnNjc3MiLCJ1dGlsaXRpZXMvZnVuY3Rpb25zL19weFRvUmVtLnNjc3MiLCJ1dGlsaXRpZXMvZnVuY3Rpb25zL19weFRvRW0uc2NzcyIsInV0aWxpdGllcy9mdW5jdGlvbnMvX3NxcnQuc2NzcyIsInV0aWxpdGllcy9mdW5jdGlvbnMvX3Bvdy5zY3NzIiwidXRpbGl0aWVzL21peGlucy9fYXNwZWN0LXJhdGlvLnNjc3MiLCJ1dGlsaXRpZXMvbWl4aW5zL19xdWFudGl0eS1xdWVyeS5zY3NzIiwidXRpbGl0aWVzL21peGlucy9fbWVkaWEtcXVlcmllcy5zY3NzIiwidXRpbGl0aWVzL21peGlucy9fY2xlYXItZml4LnNjc3MiLCJ1dGlsaXRpZXMvbWl4aW5zL19ncmlkLnNjc3MiLCJzZXR0aW5ncy9fc3BhY2luZy5zY3NzIiwic2V0dGluZ3MvX2NvbG9ycy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQjtBQ0FqQjs7R0FFRztBQUNGOzs7Ozs7O0lBT0c7QUNWSjs7Ozs7Ozs7O0dBU0c7QUNUSDs7Ozs7Ozs7OztHQVVHO0FDVkg7Ozs7Ozs7Ozs7R0FVRztBQ1ZIOzs7Ozs7Ozs7OztHQVdHO0FDWEg7Ozs7Ozs7Ozs7OztHQVlHO0FDWkg7Ozs7Ozs7Ozs7R0FVRztBQ1ZIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUNyQkg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUN0Qkg7Ozs7Ozs7OztHQVNHO0FUa0RIO0NTL0NJLFlBQVk7Q0FDWixlQUFlO0NBQ2YsWUFBWSxFQUNiOztBQ2ZIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QVZRRjs7Ozs7SUFLRztBV3JDSjs7Ozs7Ozs7Ozs7OztHQWFHO0FDYkg7Ozs7OztHQU1HO0FBRUg7Ozs7Ozs7Ozs7OztHQVlHO0FBU0g7Ozs7Ozs7Ozs7Ozs7R0FhRztBQW9CSDs7Ozs7OztHQU9HO0FadEJIO0NBRUUsbUJBQW1CLEVBTXBCO0NBUkQ7RUFNSSxjQUFjLEVBQ2Y7O0FBRUg7Q0FDRSxtQkU1Q1ksRUY2Q2I7O0FBQ0Q7Q0FJSSxZQUFZO0NBQ1osZ0JBQWdCO0NBQ2hCLE9BQU87Q0FBRSxVQUFVO0NBQUUsVUFBVTtDQUMvQixZQUFZO0NBQ1osb0JFdERVO0NGdURWLGlCQUFpQjtDQUNqQiw0QkFBcUI7Q0FDckIsb0tBQ2lCO0NBT2pCLCtCQUFzQyxFQUN2QyIsImZpbGUiOiJpbi1mcmFtZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAY2hhcnNldCBcIlVURi04XCI7XG4vKipcbiAqICBFeHRyYSBzdHlsZXMgdG8gYWRkIGluc2lkZSBpZnJhbWVzXG4gKi9cbi8qKlxuICAqIFV0aWxpdGllc1xuICAqXG4gICogUmV1c2FibGUgZnVuY3Rpb25zLCBtaXhpbnMsIGFuZCBoZWxwZXIgY2xhc3Nlcy4gIFRoaW5ncyBsaWtlIGNvbG9ycywgdmVydGljYWwgcmh5dGhtLCBhbmQgdGhlIC5jbGVhci1maXggaGVscGVyIGFyZSBpbiB0aGlzIGdyb3VwLlxuICAqID4gVGhpcyBkaXJlY3Rvcnkgb2YgcGFydGlhbHMgaXMgYWxzbyBpbXBvcnRhbnQgYmVjYXVzZSB3ZeKAmWxsIG5lZWQgdG8gZGVmaW5lIGdsb2JhbCBjbGFzc2VzLCBtaXhpbnMgYW5kIHN0eWxlcyB0aGF0IGNhbiBiZSB1c2VkIGFueXdoZXJlIGFuZCBhdCBhbnkgdGltZS5cbiAgKiA+XG4gICogPlxcLSBodHRwOi8vd3d3LnNtYXNoaW5nbWFnYXppbmUuY29tLzIwMTMvMDgvb3RoZXItaW50ZXJmYWNlLWF0b21pYy1kZXNpZ24tc2Fzcy9cbiAgKi9cbi8qKipcbiAqIFN0cmlwIFVuaXRzXG4gKlxuICogU3RyaXBzIHRoZSB1bml0cyBmcm9tIGEgbnVtYmVyXG4gKlxuICogc2NzczpcbiAqICAgc3RyaXBVbml0cygkbnVtYmVyKTtcbiAqXG4gKiBAcGFyYW0gJG51bWJlciAtIHZhbHVlIHRvIHN0cmlwIHRoZSB1bml0cyBmcm9tLlxuICovXG4vKioqXG4gKiBQaXhlbHMgdG8gUmVtcyBmdW5jdGlvblxuICpcbiAqIENvbnZlcnRzIHBpeGVscyB0byBSRU1zIHNvIHdlIGNhbiBrZWVwIG91ciB1bml0cyBjb25zaXN0ZW50LiAgQXNzdW1lcyAxcmVtIGlzIDE2cHggKGRlZmF1bHQgZm9yIG1vc3QgYnJvd3NlcnMpLlxuICpcbiAqIHNjc3M6XG4gKiAgIHB4VG9SZW0oJHB4WywkYmFzZVJlbV0pO1xuICpcbiAqIEBwYXJhbSAkcHggLSB1bml0bGVzcyBpbnRlZ2VyIHRvIGNvbnZlcnQgdG8gcmVtc1xuICogQHBhcmFtICRiYXNlUmVtIC0gcGl4ZWxzIHRvIGNvdW50IGFzIG9uZSByZW0uIERlZmF1bHRzIHRvIDE2XG4gKi9cbi8qKipcbiAqIFBpeGVscyB0byBFbXMgZnVuY3Rpb25cbiAqXG4gKiBDb252ZXJ0cyBwaXhlbHMgdG8gRU1zIHNvIHdlIGNhbiBrZWVwIG91ciB1bml0cyBjb25zaXN0ZW50LiAgQXNzdW1lcyAxZW0gaXMgMTZweCwgb3IgeW91IGNhbiBwYXNzIGEgZGlmZmVyZW50IGJhc2UuXG4gKlxuICogc2NzczpcbiAqICAgcHhUb0VtKCRweFssJGJhc2VdKTtcbiAqXG4gKiBAcGFyYW0gJHB4IC0gdW5pdGxlc3MgaW50ZWdlciB0byBjb252ZXJ0IHRvIHJlbXNcbiAqIEBwYXJhbSAkYmFzZSAtIHBpeGVscyB0byBjb3VudCBhcyBvbmUgZW0uIERlZmF1bHRzIHRvIDE2XG4gKi9cbi8qKipcbiAqIFNxdWFyZSBSb290IEZ1bmN0aW9uXG4gKlxuICogR2V0cyB0aGUgc3F1YXJlIHJvb3Qgb2YgYSBudW1iZXIgKHdpdGhpbiBhIG1hcmdpbiBvZiBlcnJvcilcbiAqXG4gKiBVc2VmdWwgZm9yIGRpYWdvbmFsL1B5dGhhZ29yZWFuIHN0dWZmLlxuICpcbiAqIHNjc3M6XG4gKiAgIHNxcnQoJG51bSlcbiAqXG4gKiBAcGFyYW0gJG51bSAtIG51bWJlciB0byBnZXQgc3F1YXJlIHJvb3Qgb2ZcbiAqL1xuLyoqKlxuICogUG93ZXIgLyBFeHBvbmVudCBGdW5jdGlvblxuICpcbiAqIFJhaXNlcyBhIG51bWJlciB0byBhIGNlcnRhaW4gcG93ZXIuIFN1cHBvcnRzIGludGVnZXJzIGFuZCAuNXMgYXMgdGhlIGV4cG9uZW50LlxuICpcbiAqIFVzZWZ1bCBmb3IgZGlhZ29uYWwvUHl0aGFnb3JlYW4gc3R1ZmYuXG4gKlxuICogc2NzczpcbiAqICAgcG93KCRiYXNlLCAkZXhwb25lbnQpXG4gKlxuICogQHBhcmFtICRiYXNlIC0gbnVtYmVyIHRvIGdldCBzcXVhcmUgcm9vdCBvZlxuICogQHBhcmFtICRleHBvbmVudCAtIGV4cG9uZW50IHRvIHJhaXNlIHRoZSBiYXNlIG51bWJlciB0b1xuICovXG4vKioqXG4gKiBBc3BlY3QgUmF0aW9cbiAqXG4gKiBHZXRzIHBhZGRpbmcgZm9yIGNvcnJlY3QgYXNwZWN0IHJhdGlvLCBhbmQgc2V0cyBoZWlnaHQgdG8gMC5cbiAqXG4gKiBzY3NzOlxuICogICBAaW5jbHVkZSBhc3BlY3QtcmF0aW8oJHdpZHRoLCAkaGVpZ2h0KVxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBjb21wYXJhdGl2ZSB3aWR0aCBvZiB0aGUgcmF0aW8uIFRoZSAneCcgaW4geDp5XG4gKiBAcGFyYW0ge051bWJlcn0gJGhlaWdodCAtIGNvbXBhcmF0aXZlIGhlaWdodCBvZiB0aGUgcmF0aW8uIFRoZSAneScgaW4geDp5XG4gKi9cbi8qKipcbiAqIFF1YW50aXR5IFF1ZXJ5XG4gKlxuICogTWl4aW5zIHRvIGFsbG93IHN0eWxlcyB0byBiZSBzZXQgYmFzZWQgb24gYXQtbGVhc3QsIGF0LW1vc3QsIGFuZCBleGFjdGx5IGBuYFxuICogbnVtYmVyIG9mIGFuIGVsZW1lbnQuXG4gKlxuICogc2NzczpcbiAqICAgQGluY2x1ZGUgcXFBdExlYXN0ICgkbikge1xuICogICAgIEBjb250ZW50O1xuICogICB9XG4gKiAgXG4gKiAgIEBpbmNsdWRlIHFxQXRNb3N0ICgkbikge1xuICogICAgIEBjb250ZW50O1xuICogICB9XG4gKiAgXG4gKiAgIEBpbmNsdWRlIHFxRXhhY3RseSAoJG4pIHtcbiAqICAgICBAY29udGVudDtcbiAqICAgfVxuICpcbiAqIEBwYXJhbSAkbiAtIGhvdyBtYW55IGVsZW1lbnRzIHRvIHF1ZXJ5IGFnYWluc3RcbiAqIEBwYXJhbSBAY29udGVudCAtIHRoZSBzdHlsZXMgdG8gYXBwbHkgdG8gaXRcbiAqL1xuLyoqKlxuICogTWVkaWEgUXVlcmllc1xuICpcbiAqIERlZmluZXMgb3VyIGRlZmF1bHQgYnJlYWtwb2ludHMuICBBc3N1bWVzIG1vYmlsZS1maXJzdCBjb2RlLCBidXQgc3VwcG9ydHMgbm90XG4gKiBieSBwYXNzaW5nIHlvdXIgYnJlYWtwb2ludCB0byB0aGUgYWx0ZXJuYXRlIG1peGluOiBgbXEtbHRgLiBEb24ndCB3b3JyeSBhYm91dFxuICogaGF2aW5nIGEgdG9uIG9mIHRoZXNlLCBzaW5jZSB0aGUgbWluaWZpY2F0aW9uIHByb2Nlc3Mgd2lsbCBjb21iaW5lIHRoZW0uXG4gKlxuICogVGhlcmUncyBhbHNvIGEgc2VwYXJhdGUgbWl4aW4gZWFjaCBmb3IgYHBvcnRyYWl0YCBhbmQgYGxhbmRzY2FwZWAgb3JpZW50YXRpb25zLlxuICpcbiAqIHNjc3M6XG4gKiAgIEBpbmNsdWRlIG1xKCRicmVha3BvaW50KSB7XG4gKiAgICAgQGNvbnRlbnQ7XG4gKiAgIH1cbiAqICAgQGluY2x1ZGUgcG9ydHJhaXQge1xuICogICAgIEBjb250ZW50O1xuICogICB9XG4gKiAgIEBpbmNsdWRlIGxhbmRzY2FwZSB7XG4gKiAgICAgQGNvbnRlbnQ7XG4gKiAgIH1cbiAqXG4gKiBAcGFyYW0gJGJyZWFrcG9pbnQgLSB3aGF0IHNpemUgeW91J2QgbGlrZSB0byB0YXJnZXQgbGFyZ2VyIHRoYW4uIEEgZmV3IGhhdmUgYmVlbiBwcmUtZGVmaW5lZC5cbiAqIEBwYXJhbSBAY29udGVudCAtIHRoZSBjb250ZW50IHRvIHB1dCBpbiB0aGUgbWVkaWEgcXVlcnlcbiAqL1xuLyoqKlxuICogIENsZWFyIEZpeFxuICpcbiAqICBDbGVhcnMgYWxsIGZsb2F0cyBpbnNpZGUgdGhpcyBlbGVtZW50IGJ5IHVzaW5nIHRoZSBgOjphZnRlcmAgcHNldWRvLWVsZW1lbnQuXG4gKlxuICogIHNjc3M6XG4gKiAgICBAaW5jbHVkZSBjbGVhci1maXg7XG4gKiAgICAvLyBvclxuICogICAgQGV4dGVuZCAlY2xlYXItZml4O1xuICovXG5ib2R5OjphZnRlciB7XG5cdGNvbnRlbnQ6ICcnO1xuXHRkaXNwbGF5OiB0YWJsZTtcblx0Y2xlYXI6IGJvdGg7IH1cblxuLyoqKlxuICogR3JpZFxuICpcbiAqIE91ciBzdXBlciBzaW1wbGUgY3VzdG9tIGdyaWQgc3lzdGVtLiBKdXN0IGluY2x1ZGUgdGhlIG1peGluIGBncmlkQ29udGFpbmVyYFxuICogdG8gc2V0IG1heC13aWR0aCA9ICRtYXgtd2lkdGggKyAkZ3V0dGVyLiBGb3IgaW50ZXJuYWwgc3R1ZmYsIHVzZVxuICogYHN1YmdyaWRDb250YWluZXJgIHRvIGF1dG9tYXRpY2FsbHkgb2Zmc2V0IHRoZSBtYXJnaW5zIG9uIHRoZSBjb250YWluZXIgaWZcbiAqIG5lZWRlZCwgYW5kIGBjb2xzcGFuYCBvbiB0aGUgYWN0dWFsIGNvbHVtbi4gIEJ5IGRlZmF1bHQsIGFzc3VtZXMgMTIgY29sdW1uc1xuICogYW5kIGEgMiAqICR3ciBndXR0ZXIsIGJ1dCB0aG9zZSBjYW4gYmUgb3ZlcnJpZGRlbiBmb3IgbW9yZSBjb21wbGV4IGxheW91dHMuXG4gKiBJdCBzcGl0cyBvdXQgc3R5bGVzIHdoZXJldmVyIGl0IGlzIGNhbGxlZCwgc28geW91IGNhbiBkZWZpbmUgZGlmZmVyZW50XG4gKiBjb2x1bW5zIG9yIGV2ZW4gZW50aXJlbHkgZGlmZmVyZW50IGdyaWRzIHdpdGhpbiBtZWRpYSBxdWVyaWVzLlxuICpcbiAqIFRoZXJlJ3MgYWxzbyBhIGNvbHB1c2ggbWl4aW4gdG8gc2hpZnQgYW4gZWxlbWVudCB0byB0aGUgcmlnaHQgYnkgYSBudW1iZXIgb2YgY29sdW1ucy5cbiAqXG4gKiBSZW1lbWJlciwgdmFyaWFibGVzIHdyYXBwZWQgaW4gYFtdYCBpbiB0aGUgZXhhbXBsZSBhcmUgb3B0aW9uYWwuXG4gKlxuICogc2NzczpcbiAqICAgQGluY2x1ZGUgZ3JpZENvbnRhaW5lciAoWyRndXR0ZXJdKTtcbiAqICAgQGluY2x1ZGUgc3ViZ3JpZENvbnRhaW5lciAoWyRndXR0ZXJdKTtcbiAqICAgQGluY2x1ZGUgY29sc3BhbiAoJHNwYW5bLCAkdG90YWxbLCAkZ3V0dGVyXV0pO1xuICogICBAaW5jbHVkZSBjb2xwdXNoICgkc3BhblssICR0b3RhbFssICRndXR0ZXJdXSk7XG4gKlxuICogQHBhcmFtIHtpbnR9ICRzcGFuIC0gbnVtYmVyIG9mIGNvbHVtbnMgdG8gc3BhblxuICogQHBhcmFtIHtpbnR9ICR0b3RhbCAtIG51bWJlciBvZiB0b3RhbCBjb2x1bW5zIHRoZSBncmlkIGhhc1xuICogQHBhcmFtIHtudW1iZXIgdy8gdW5pdH0gJGd1dHRlciAtIHdpZHRoIG9mIHRoZSBndXR0ZXJzIGJldHdlZW4gY29sdW1uc1xuICovXG4vKipcbiAgKiBTZXR0aW5nc1xuICAqXG4gICogR2xvYmFsIHNldHRpbmdzIGFuZCB2YXJpYWJsZXMuIFRoaXMgZGVmaW5lcyBnbG9iYWwgc2l0ZSB3aWRlIHRoaW5ncyBsaWtlXG4gICogY29sb3JzIGFuZCBmb250cy5cbiAgKi9cbi8qKipcbiAqIFZpc3VhbCBSaHl0aG1cbiAqXG4gKiBWYXJpYWJsZXMgdG8gbWFpbnRhaW4gYSBzdGFuZGFyZCB2aXN1YWwgcmh5dGhtIGJvdGggdmVydGljYWxseSBhbmQgaG9yaXpvbnRhbGx5LlxuICpcbiAqIEFsc28sIHRoZXJlJ3MgYSBmdW5jdGlvbiBmb3IgcmV0dXJuaW5nIHRoZSBuZXh0IG11bHRpcGxlIG9mIHZlcnRpY2FsIHJoeXRobVxuICogYWJvdmUgYSBnaXZlbiBudW1iZXIuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIC0gbnVtYmVyIHRvIGZpbmQgbmV4dCBtdWx0aXBsZSBhYm92ZS5cbiAqIEBwYXJhbSB7b3B0aW9uYWwsIE51bWJlcn0gJHJoeXRobSAtIG51bWJlciB0aGF0J3MgbXVsdGlwbGllZCB1bnRpbCBpdCdzIGxhcmdlciB0aGFuIGAkYmFzZWAuIEVxdWFsIHRvIGAkdnJgIGlmIG9taXR0ZWQuXG4gKlxuICogc2NzczpcbiAqICAgbGluZS1oZWlnaHQ6IG11bHRpcGxlQWJvdmUoMzAsIDE0KTsgLy8gMztcbiAqL1xuLyoqKlxuICogQ29sb3JzXG4gKlxuICogVGhlc2UgY29sb3JzIGRlZmluZSB0aGUgbG9vayBvZiB0aGUgZ3VpZGUgaXRzZWxmLCBfbm90XyBhbnl0aGluZyB3aXRoaW4gdGhlIGV4YW1wbGVzLlxuICpcbiAqIHBhdGg6IC5cbiAqL1xuLyoqKlxuICogUHJpbWFyeSBQYWxldHRlXG4gKlxuICogVGhlIG1haW4gY29sb3JzIHVzZWQgZm9yIHRoZSBBdXRvZ3VpZGUgdGVtcGxhdGUuICBCeSBkZWZhdWx0LCB0aGVzZSBjb2xvcnMgZ2V0XG4gKiByZXVzZWQgZm9yIHRoZSBtb3JlIGRldGFpbGVkIHBhbGV0dGUuXG4gKlxuICogTm90ZSB0byBsZWFybmVyczogdGhlc2UgdmFyaWFibGUgbmFtZXMgYXJlIGxlc3MgdGhhbiBzdGVsbGFyLiAgVGhleSdyZSBrZXB0XG4gKiBpbnRlbnRpb25hbGx5IHZhZ3VlLCBiZWNhdXNlIG9mIHRoZWlyIHdpZGUgYXBwbGljYXRpb24uXG4gKlxuICogcGF0aDogLi9jb2xvcnNcbiAqIG9yZGVyOiAwXG4gKiB0ZW1wbGF0ZTogY29sb3JcbiAqL1xuLyoqKlxuICogRGV0YWlsZWQgUGFsZXR0ZVxuICpcbiAqIFRoZXNlIGFyZSB0aGUgY29sb3JzIHRoYXQgd2lsbCBhY3R1YWxseSBhcHBlYXIgdGhyb3VnaG91dCB0aGUgZ2VuZXJhdGVkIGd1aWRlLlxuICogQWx0ZXJpbmcgdGhlc2Ugd2lsbCBncmFudCBhIHZlcnkgZmluZSBsZXZlbCBvZiBjb250cm9sIG92ZXIgY29tcG9uZW50cy5cbiAqXG4gKiBUaGUgY29sb3JzIHRpdGxlZCBgJGJhY2tncm91bmQtKmAgYXJlIHVzZWQgZGlyZWN0bHkgYXMgdGhlIGJhY2tncm91bmQgcHJvcGVydHlcbiAqIGZvciB0aGVpciBnaXZlbiBlbGVtZW50LCBzbyB5b3UgY2FuIHJlcGxhY2UgdGhlbSB3aXRoIGFueXRoaW5nIHRoYXQgY291bGQgYXBwbHlcbiAqIHRoZXJlLiAgRm9yIGV4YW1wbGU6IGAkYmFja2dyb3VuZC1oZWFkZXI6IHVybChodHRwczovL21vcmJvdHJvbi5jb20vaW1nL1MwM0UwNi8xMDUzNDUxLmpwZykgY2VudGVyIGNlbnRlciBuby1yZXBlYXRgLlxuICpcbiAqIHBhdGg6IC4vY29sb3JzXG4gKiBvcmRlcjogMVxuICogdGVtcGxhdGU6IGNvbG9yXG4gKi9cbi8qKipcbiAqIENvZGUgQ29sb3JzXG4gKlxuICogVGhlc2UgYXJlIHRoZSBjb2xvciB2YXJpYWJsZXMgdGhhdCBjYW4gYmUgb3ZlcnJpZGRlbiBmb3IgY29kZSBibG9ja3MuXG4gKlxuICogdGVtcGxhdGU6IGNvbG9yXG4gKiBwYXRoOiAuL21vbGVjdWxlcy9jb2RlIGJsb2NrXG4gKi9cbmh0bWwge1xuXHRvdmVyZmxvdy14OiBoaWRkZW47IH1cblx0aHRtbC5ub3Qtc2Nyb2xsYWJsZTo6LXdlYmtpdC1zY3JvbGxiYXIge1xuXHRcdGRpc3BsYXk6IG5vbmU7IH1cblxuaHRtbC5ub3QtZnMgYm9keSB7XG5cdHBhZGRpbmc6IDFyZW0gMXJlbTsgfVxuXG4uc2hvdy1ncmlkIGJvZHk6OmJlZm9yZSB7XG5cdGNvbnRlbnQ6ICcnO1xuXHRwb3NpdGlvbjogZml4ZWQ7XG5cdHRvcDogMDtcblx0Ym90dG9tOiAwO1xuXHRsZWZ0OiA1MCU7XG5cdHdpZHRoOiAxMDAlO1xuXHRtYXgtd2lkdGg6IDYzLjc1cmVtO1xuXHR6LWluZGV4OiA4Njc1MzA5O1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG5cdGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdHJhbnNwYXJlbnQgMXJlbSwgcmdiYSg0LCAxMDgsIDExMSwgMC4xKSAxcmVtLCByZ2JhKDQsIDEwOCwgMTExLCAwLjEpIGNhbGMoMTAwJSAtIDFyZW0pLCB0cmFuc3BhcmVudCBjYWxjKDEwMCUgLSAxcmVtKSk7XG5cdGJhY2tncm91bmQtc2l6ZTogOC4zMzMzMyUgYXV0bzsgfVxuIiwiLyoqXG4gKiAgRXh0cmEgc3R5bGVzIHRvIGFkZCBpbnNpZGUgaWZyYW1lc1xuICovXG4gLyoqXG4gICogVXRpbGl0aWVzXG4gICpcbiAgKiBSZXVzYWJsZSBmdW5jdGlvbnMsIG1peGlucywgYW5kIGhlbHBlciBjbGFzc2VzLiAgVGhpbmdzIGxpa2UgY29sb3JzLCB2ZXJ0aWNhbCByaHl0aG0sIGFuZCB0aGUgLmNsZWFyLWZpeCBoZWxwZXIgYXJlIGluIHRoaXMgZ3JvdXAuXG4gICogPiBUaGlzIGRpcmVjdG9yeSBvZiBwYXJ0aWFscyBpcyBhbHNvIGltcG9ydGFudCBiZWNhdXNlIHdl4oCZbGwgbmVlZCB0byBkZWZpbmUgZ2xvYmFsIGNsYXNzZXMsIG1peGlucyBhbmQgc3R5bGVzIHRoYXQgY2FuIGJlIHVzZWQgYW55d2hlcmUgYW5kIGF0IGFueSB0aW1lLlxuICAqID5cbiAgKiA+XFwtIGh0dHA6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAxMy8wOC9vdGhlci1pbnRlcmZhY2UtYXRvbWljLWRlc2lnbi1zYXNzL1xuICAqL1xuIEBpbXBvcnRcbiAvLyBTYXNzIEZ1bmN0aW9uc1xuICAgLy8ndXRpbGl0aWVzL2ljb25zJyxcbiAgICd1dGlsaXRpZXMvZnVuY3Rpb25zL3N0cmlwVW5pdHMnLFxuICAgJ3V0aWxpdGllcy9mdW5jdGlvbnMvcHhUb1JlbScsXG4gICAndXRpbGl0aWVzL2Z1bmN0aW9ucy9weFRvRW0nLFxuICAgJ3V0aWxpdGllcy9mdW5jdGlvbnMvc3FydCcsXG4gICAndXRpbGl0aWVzL2Z1bmN0aW9ucy9wb3cnLFxuICAgJ3V0aWxpdGllcy9taXhpbnMvYXNwZWN0LXJhdGlvJyxcblxuIC8vIFNhc3MgTWl4aW5zXG4gICAndXRpbGl0aWVzL21peGlucy9xdWFudGl0eS1xdWVyeScsXG4gICAndXRpbGl0aWVzL21peGlucy9tZWRpYS1xdWVyaWVzJyxcblxuIC8vIGdsb2JhbCBzdHlsZXNcbiAgICd1dGlsaXRpZXMvbWl4aW5zL2NsZWFyLWZpeCcsXG4gICAndXRpbGl0aWVzL21peGlucy9ncmlkJ1xuICAgLy8ndXRpbGl0aWVzL3Zpc3VhbGx5aGlkZGVuJyxcbiAgIC8vJ3V0aWxpdGllcy9yZXNldHMnXG4gICA7XG5cbiAvKipcbiAgKiBTZXR0aW5nc1xuICAqXG4gICogR2xvYmFsIHNldHRpbmdzIGFuZCB2YXJpYWJsZXMuIFRoaXMgZGVmaW5lcyBnbG9iYWwgc2l0ZSB3aWRlIHRoaW5ncyBsaWtlXG4gICogY29sb3JzIGFuZCBmb250cy5cbiAgKi9cbiBAaW1wb3J0XG4gICAnc2V0dGluZ3Mvc3BhY2luZycsXG4gICAnc2V0dGluZ3MvY29sb3JzJyxcbiAgIC8vJ3NldHRpbmdzL2ZvbnRzJyxcbiAgICdzZXR0aW5ncy90cmFuc2l0aW9ucydcbiAgIC8vJ3NldHRpbmdzL3R5cGUtc2NhbGUnXG4gICA7XG5cblxuaHRtbCB7XG4gIC8vIG1pbi13aWR0aDogMTAwdnc7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcblxuICAvLyBoaWRpbmcgc2Nyb2xsYmFyIHByZXZlbnRzIHBvc3NpYmxlIGhlaWdodCBqaXR0ZXIgYXMgdGV4dCByZS13cmFwc1xuICAmLm5vdC1zY3JvbGxhYmxlOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuaHRtbC5ub3QtZnMgYm9keSB7XG4gIHBhZGRpbmc6ICR2ciAkd3I7XG59XG5ib2R5IHtcbiAgQGV4dGVuZCAlY2xlYXItZml4O1xuXG4gIC5zaG93LWdyaWQgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwOyBib3R0b206IDA7IGxlZnQ6IDUwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gICAgei1pbmRleDogODY3NTMwOTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTpcbiAgICAgIGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgdG8gcmlnaHQsXG4gICAgICAgIHRyYW5zcGFyZW50ICR3cixcbiAgICAgICAgJG92ZXJsYXktY29sdW1ucyAkd3IsXG4gICAgICAgICRvdmVybGF5LWNvbHVtbnMgY2FsYygxMDAlIC0gI3skd3J9KSxcbiAgICAgICAgdHJhbnNwYXJlbnQgY2FsYygxMDAlIC0gI3skd3J9KVxuICAgICAgKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICN7MSAvIDEyICogMTAwJX0gYXV0bztcbiAgfVxufVxuIiwiLyoqKlxuICogU3RyaXAgVW5pdHNcbiAqXG4gKiBTdHJpcHMgdGhlIHVuaXRzIGZyb20gYSBudW1iZXJcbiAqXG4gKiBzY3NzOlxuICogICBzdHJpcFVuaXRzKCRudW1iZXIpO1xuICpcbiAqIEBwYXJhbSAkbnVtYmVyIC0gdmFsdWUgdG8gc3RyaXAgdGhlIHVuaXRzIGZyb20uXG4gKi9cbkBmdW5jdGlvbiBzdHJpcFVuaXRzKCRudW1iZXIpIHtcbiAgQHJldHVybiAkbnVtYmVyIC8gKCRudW1iZXIgKiAwICsgMSk7XG59XG4iLCIvKioqXG4gKiBQaXhlbHMgdG8gUmVtcyBmdW5jdGlvblxuICpcbiAqIENvbnZlcnRzIHBpeGVscyB0byBSRU1zIHNvIHdlIGNhbiBrZWVwIG91ciB1bml0cyBjb25zaXN0ZW50LiAgQXNzdW1lcyAxcmVtIGlzIDE2cHggKGRlZmF1bHQgZm9yIG1vc3QgYnJvd3NlcnMpLlxuICpcbiAqIHNjc3M6XG4gKiAgIHB4VG9SZW0oJHB4WywkYmFzZVJlbV0pO1xuICpcbiAqIEBwYXJhbSAkcHggLSB1bml0bGVzcyBpbnRlZ2VyIHRvIGNvbnZlcnQgdG8gcmVtc1xuICogQHBhcmFtICRiYXNlUmVtIC0gcGl4ZWxzIHRvIGNvdW50IGFzIG9uZSByZW0uIERlZmF1bHRzIHRvIDE2XG4gKi9cbkBmdW5jdGlvbiBweFRvUmVtICgkcHgsICRiYXNlUmVtOiAxNikge1xuICAvLyBjb252ZXJ0cyBwaXhlbHMgdG8gcmVtcyBiYXNlZCBvbiB0aGUgJGJhc2UtcmVtIHZhcmlhYmxlXG4gIEByZXR1cm4gMXJlbSAqIHN0cmlwVW5pdHMoJHB4KSAvICRiYXNlUmVtO1xufVxuIiwiLyoqKlxuICogUGl4ZWxzIHRvIEVtcyBmdW5jdGlvblxuICpcbiAqIENvbnZlcnRzIHBpeGVscyB0byBFTXMgc28gd2UgY2FuIGtlZXAgb3VyIHVuaXRzIGNvbnNpc3RlbnQuICBBc3N1bWVzIDFlbSBpcyAxNnB4LCBvciB5b3UgY2FuIHBhc3MgYSBkaWZmZXJlbnQgYmFzZS5cbiAqXG4gKiBzY3NzOlxuICogICBweFRvRW0oJHB4WywkYmFzZV0pO1xuICpcbiAqIEBwYXJhbSAkcHggLSB1bml0bGVzcyBpbnRlZ2VyIHRvIGNvbnZlcnQgdG8gcmVtc1xuICogQHBhcmFtICRiYXNlIC0gcGl4ZWxzIHRvIGNvdW50IGFzIG9uZSBlbS4gRGVmYXVsdHMgdG8gMTZcbiAqL1xuQGZ1bmN0aW9uIHB4VG9FbSAoJHB4LCAkYmFzZTogMTYpIHtcbiAgQHJldHVybiAxZW0gKiBzdHJpcFVuaXRzKCRweCkgLyAkYmFzZTtcbn1cbiIsIi8qKipcbiAqIFNxdWFyZSBSb290IEZ1bmN0aW9uXG4gKlxuICogR2V0cyB0aGUgc3F1YXJlIHJvb3Qgb2YgYSBudW1iZXIgKHdpdGhpbiBhIG1hcmdpbiBvZiBlcnJvcilcbiAqXG4gKiBVc2VmdWwgZm9yIGRpYWdvbmFsL1B5dGhhZ29yZWFuIHN0dWZmLlxuICpcbiAqIHNjc3M6XG4gKiAgIHNxcnQoJG51bSlcbiAqXG4gKiBAcGFyYW0gJG51bSAtIG51bWJlciB0byBnZXQgc3F1YXJlIHJvb3Qgb2ZcbiAqL1xuQGZ1bmN0aW9uIGFwcHJveGltYXRlU3EoJG51bSwgJGFwcHJveCkge1xuICAkcm9vdCA6ICgoICRudW0gLyAkYXBwcm94ICkgKyAkYXBwcm94KSAvIDI7XG4gIEByZXR1cm4gJHJvb3Q7XG59XG5AZnVuY3Rpb24gc3FydCgkbnVtKSB7XG4gICR1bml0OiAkbnVtIC8gc3RyaXBVbml0cygkbnVtKTtcbiAgJHJvb3Q6IDE7XG4gICRudW06IHN0cmlwVW5pdHMoJG51bSk7XG4gICR1cHBlckJvdW5kcyA6ICgkbnVtIC8gMikgKyAxOyAvL25ldmVyIG5lZWQgb3ZlciBoYWxmIHRoZSBtYWluIG51bWJlci4gQWRkIG9uZSBqdXN0IHRvIGJlIHN1cmUhXG4gICRsb29wcyA6ICR1cHBlckJvdW5kcztcbiAgQGlmICRudW0gPj0gNCB7XG4gICAgQGZvciAkdGVzdCBmcm9tIDIgdGhyb3VnaCAocm91bmQoJHVwcGVyQm91bmRzKSkge1xuICAgICAgJHNxIDogJHRlc3QgKiAkdGVzdDtcbiAgICAgIEBpZiAkc3EgPD0gJG51bSB7XG4gICAgICAgICRyb290IDogJHRlc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAkdGVzdDogMS4xO1xuICAgIEB3aGlsZSAkdGVzdCA8ICR1cHBlckJvdW5kcyB7XG4gICAgICAkc3EgOiAkdGVzdCAqICR0ZXN0O1xuICAgICAgQGlmICRzcSA8PSAkbnVtIHtcbiAgICAgICAgJHJvb3QgOiAkdGVzdDtcbiAgICAgIH1cbiAgICAgICR0ZXN0OiAkdGVzdCArIC4xO1xuICAgIH1cbiAgfVxuXG4gIC8vIGluY3JlYXNlIGFjY3VyYWN5XG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggMiB7XG4gICAgJHJvb3QgOiAoYXBwcm94aW1hdGVTcSgkbnVtLCAkcm9vdCkpO1xuICB9XG5cbiAgQHJldHVybiAkcm9vdCAqICR1bml0O1xufVxuIiwiLyoqKlxuICogUG93ZXIgLyBFeHBvbmVudCBGdW5jdGlvblxuICpcbiAqIFJhaXNlcyBhIG51bWJlciB0byBhIGNlcnRhaW4gcG93ZXIuIFN1cHBvcnRzIGludGVnZXJzIGFuZCAuNXMgYXMgdGhlIGV4cG9uZW50LlxuICpcbiAqIFVzZWZ1bCBmb3IgZGlhZ29uYWwvUHl0aGFnb3JlYW4gc3R1ZmYuXG4gKlxuICogc2NzczpcbiAqICAgcG93KCRiYXNlLCAkZXhwb25lbnQpXG4gKlxuICogQHBhcmFtICRiYXNlIC0gbnVtYmVyIHRvIGdldCBzcXVhcmUgcm9vdCBvZlxuICogQHBhcmFtICRleHBvbmVudCAtIGV4cG9uZW50IHRvIHJhaXNlIHRoZSBiYXNlIG51bWJlciB0b1xuICovXG5AZnVuY3Rpb24gcG93ICgkYmFzZSwgJGV4cG9uZW50KSB7XG4gICR1bml0OiAkYmFzZSAvIHN0cmlwVW5pdHMoJGJhc2UpO1xuICAkYmFzZTogc3RyaXBVbml0cygkYmFzZSk7XG4gICR2YWx1ZTogc3RyaXBVbml0cygkYmFzZSk7XG4gIEBpZiAkZXhwb25lbnQgJSAxICE9IDAgYW5kICRleHBvbmVudCAlIDEgIT0gLjUgYW5kICRleHBvbmVudCAlIDEgIT0gLS41IHtcbiAgICBAZXJyb3IgXCJleHBvbmVudCBtdXN0IGJlIG11bHRpcGxlIG9mIC41LCB3YXMgI3skZXhwb25lbnR9XCI7XG4gIH1cbiAgQGlmICRleHBvbmVudCA+PSAwIHtcbiAgICAkbnVtIDogZmxvb3IoJGV4cG9uZW50KTtcbiAgICBAaWYgJG51bSA9PSAwIHtcbiAgICAgICR2YWx1ZSA6IDE7XG4gICAgfVxuICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJG51bSB7XG4gICAgICBAaWYgJGkgPiAxIHtcbiAgICAgICAgJHZhbHVlOiAkdmFsdWUgKiAkYmFzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGlmICRleHBvbmVudCAlIDEgIT0gMCB7XG4gICAgICAkdmFsdWU6ICR2YWx1ZSAqIHNxcnQoJGJhc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAoLTEgKiBjZWlsKCRleHBvbmVudCkpIHtcbiAgICAgICR2YWx1ZTogJHZhbHVlIC8gJGJhc2U7XG4gICAgfVxuICAgIEBpZiAkZXhwb25lbnQgJSAxICE9IDAge1xuICAgICAgJHZhbHVlOiAkdmFsdWUgLyAoc3FydCgkYmFzZSkpO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuICR2YWx1ZSAqICR1bml0O1xufVxuIiwiLyoqKlxuICogQXNwZWN0IFJhdGlvXG4gKlxuICogR2V0cyBwYWRkaW5nIGZvciBjb3JyZWN0IGFzcGVjdCByYXRpbywgYW5kIHNldHMgaGVpZ2h0IHRvIDAuXG4gKlxuICogc2NzczpcbiAqICAgQGluY2x1ZGUgYXNwZWN0LXJhdGlvKCR3aWR0aCwgJGhlaWdodClcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gJHdpZHRoIC0gY29tcGFyYXRpdmUgd2lkdGggb2YgdGhlIHJhdGlvLiBUaGUgJ3gnIGluIHg6eVxuICogQHBhcmFtIHtOdW1iZXJ9ICRoZWlnaHQgLSBjb21wYXJhdGl2ZSBoZWlnaHQgb2YgdGhlIHJhdGlvLiBUaGUgJ3knIGluIHg6eVxuICovXG5AbWl4aW4gYXNwZWN0LXJhdGlvKCR3aWR0aCwgJGhlaWdodCkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6ICgkaGVpZ2h0IC8gJHdpZHRoKSAqIDEwMCUgMCAwIDA7XG4gIGhlaWdodDogMDtcbn1cbiIsIi8qKipcbiAqIFF1YW50aXR5IFF1ZXJ5XG4gKlxuICogTWl4aW5zIHRvIGFsbG93IHN0eWxlcyB0byBiZSBzZXQgYmFzZWQgb24gYXQtbGVhc3QsIGF0LW1vc3QsIGFuZCBleGFjdGx5IGBuYFxuICogbnVtYmVyIG9mIGFuIGVsZW1lbnQuXG4gKlxuICogc2NzczpcbiAqICAgQGluY2x1ZGUgcXFBdExlYXN0ICgkbikge1xuICogICAgIEBjb250ZW50O1xuICogICB9XG4gKiAgXG4gKiAgIEBpbmNsdWRlIHFxQXRNb3N0ICgkbikge1xuICogICAgIEBjb250ZW50O1xuICogICB9XG4gKiAgXG4gKiAgIEBpbmNsdWRlIHFxRXhhY3RseSAoJG4pIHtcbiAqICAgICBAY29udGVudDtcbiAqICAgfVxuICpcbiAqIEBwYXJhbSAkbiAtIGhvdyBtYW55IGVsZW1lbnRzIHRvIHF1ZXJ5IGFnYWluc3RcbiAqIEBwYXJhbSBAY29udGVudCAtIHRoZSBzdHlsZXMgdG8gYXBwbHkgdG8gaXRcbiAqL1xuQG1peGluIHFxQXRMZWFzdCAoJG4pIHtcbiAgJjpudGgtbGFzdC1jaGlsZCgje259KyN7JG59KSxcbiAgJjpudGgtbGFzdC1jaGlsZCgje259KyN7JG59KSB+ICYge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5AbWl4aW4gcXFBdE1vc3QgKCRuKSB7XG4gICY6bnRoLWxhc3QtY2hpbGQoI3stbn0rI3skbn0pOmZpcnN0LWNoaWxkLFxuICAmOm50aC1sYXN0LWNoaWxkKCN7LW59KyN7JG59KTpmaXJzdC1jaGlsZCB+ICYge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5AbWl4aW4gcXFFeGFjdGx5ICgkbikge1xuICAmOm50aC1sYXN0LWNoaWxkKCN7bn0rI3skbn0pOm50aC1sYXN0LWNoaWxkKCN7LW59KyN7JG59KTpmaXJzdC1jaGlsZCxcbiAgJjpudGgtbGFzdC1jaGlsZCgje259KyN7JG59KTpudGgtbGFzdC1jaGlsZCgjey1ufSsjeyRufSk6Zmlyc3QtY2hpbGQgfiAmIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLyoqKlxuICogTWVkaWEgUXVlcmllc1xuICpcbiAqIERlZmluZXMgb3VyIGRlZmF1bHQgYnJlYWtwb2ludHMuICBBc3N1bWVzIG1vYmlsZS1maXJzdCBjb2RlLCBidXQgc3VwcG9ydHMgbm90XG4gKiBieSBwYXNzaW5nIHlvdXIgYnJlYWtwb2ludCB0byB0aGUgYWx0ZXJuYXRlIG1peGluOiBgbXEtbHRgLiBEb24ndCB3b3JyeSBhYm91dFxuICogaGF2aW5nIGEgdG9uIG9mIHRoZXNlLCBzaW5jZSB0aGUgbWluaWZpY2F0aW9uIHByb2Nlc3Mgd2lsbCBjb21iaW5lIHRoZW0uXG4gKlxuICogVGhlcmUncyBhbHNvIGEgc2VwYXJhdGUgbWl4aW4gZWFjaCBmb3IgYHBvcnRyYWl0YCBhbmQgYGxhbmRzY2FwZWAgb3JpZW50YXRpb25zLlxuICpcbiAqIHNjc3M6XG4gKiAgIEBpbmNsdWRlIG1xKCRicmVha3BvaW50KSB7XG4gKiAgICAgQGNvbnRlbnQ7XG4gKiAgIH1cbiAqICAgQGluY2x1ZGUgcG9ydHJhaXQge1xuICogICAgIEBjb250ZW50O1xuICogICB9XG4gKiAgIEBpbmNsdWRlIGxhbmRzY2FwZSB7XG4gKiAgICAgQGNvbnRlbnQ7XG4gKiAgIH1cbiAqXG4gKiBAcGFyYW0gJGJyZWFrcG9pbnQgLSB3aGF0IHNpemUgeW91J2QgbGlrZSB0byB0YXJnZXQgbGFyZ2VyIHRoYW4uIEEgZmV3IGhhdmUgYmVlbiBwcmUtZGVmaW5lZC5cbiAqIEBwYXJhbSBAY29udGVudCAtIHRoZSBjb250ZW50IHRvIHB1dCBpbiB0aGUgbWVkaWEgcXVlcnlcbiAqL1xuQG1peGluIG1xICgkYnJlYWtwb2ludCkge1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6JGJyZWFrcG9pbnQpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuQG1peGluIG1xLWx0ICgkYnJlYWtwb2ludCkge1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6I3skYnJlYWtwb2ludCAtIC4wMX0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuQG1peGluIHBvcnRyYWl0ICgpIHtcbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbkBtaXhpbiBsYW5kc2NhcGUgKCkge1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gUHJlLWRlZmluZWQgYnJlYWtwb2ludHNcbi8vXG4vLyBCcmVha3BvaW50cyBzYXZlZCB0byB2YXJpYWJsZXMgZm9yIGVhc3kgYWNjZXMuIE5vdGUgdGhhdCB0aGUgYnJlYWtwb2ludHMgYXJlXG4vLyBub3QgYmFzZWQgb24gZGV2aWNlcywgYW5kIHRoZSBkZXZpY2UgbmFtZSBpbiBwYXJlbnRoZXNpcyBpcyBqdXN0IGZvclxuLy8gc2ltcGxpZmljYXRpb24uXG4vL1xuLy8gJGJwLW1lZGl1bSAtIHRoZSBicmVha3BvaW50IGJldHdlZW4gc21hbGwgKHBob25lKSBhbmQgbWVkaXVtICh0YWJsZXQpIGxheW91dHMuXG4vLyAkYnAtbGFyZ2UgLSB0aGUgYnJlYWtwb2ludCBiZXR3ZWVuIG1lZGl1bSAodGFibGV0KSBhbmQgbGFyZ2UgKGRlc2t0b3ApIGxheW91dHMuXG4vL1xuLy8gU3R5bGVndWlkZSBJLjMuMVxuJGJwLXNtYWxsOiBweFRvRW0oNDYwKTtcbiRicC1tZWRpdW06IHB4VG9FbSg3MzApO1xuJGJwLWxhcmdlOiBweFRvRW0oOTYwKTtcbiRicC14bGFyZ2U6IHB4VG9FbSgxMTAwKTtcbiIsIi8qKipcbiAqICBDbGVhciBGaXhcbiAqXG4gKiAgQ2xlYXJzIGFsbCBmbG9hdHMgaW5zaWRlIHRoaXMgZWxlbWVudCBieSB1c2luZyB0aGUgYDo6YWZ0ZXJgIHBzZXVkby1lbGVtZW50LlxuICpcbiAqICBzY3NzOlxuICogICAgQGluY2x1ZGUgY2xlYXItZml4O1xuICogICAgLy8gb3JcbiAqICAgIEBleHRlbmQgJWNsZWFyLWZpeDtcbiAqL1xuJWNsZWFyLWZpeCB7XG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxufVxuQG1peGluIGNsZWFyRml4ICgpIHtcbiAgQGV4dGVuZCAlY2xlYXItZml4O1xufVxuIiwiLyoqKlxuICogR3JpZFxuICpcbiAqIE91ciBzdXBlciBzaW1wbGUgY3VzdG9tIGdyaWQgc3lzdGVtLiBKdXN0IGluY2x1ZGUgdGhlIG1peGluIGBncmlkQ29udGFpbmVyYFxuICogdG8gc2V0IG1heC13aWR0aCA9ICRtYXgtd2lkdGggKyAkZ3V0dGVyLiBGb3IgaW50ZXJuYWwgc3R1ZmYsIHVzZVxuICogYHN1YmdyaWRDb250YWluZXJgIHRvIGF1dG9tYXRpY2FsbHkgb2Zmc2V0IHRoZSBtYXJnaW5zIG9uIHRoZSBjb250YWluZXIgaWZcbiAqIG5lZWRlZCwgYW5kIGBjb2xzcGFuYCBvbiB0aGUgYWN0dWFsIGNvbHVtbi4gIEJ5IGRlZmF1bHQsIGFzc3VtZXMgMTIgY29sdW1uc1xuICogYW5kIGEgMiAqICR3ciBndXR0ZXIsIGJ1dCB0aG9zZSBjYW4gYmUgb3ZlcnJpZGRlbiBmb3IgbW9yZSBjb21wbGV4IGxheW91dHMuXG4gKiBJdCBzcGl0cyBvdXQgc3R5bGVzIHdoZXJldmVyIGl0IGlzIGNhbGxlZCwgc28geW91IGNhbiBkZWZpbmUgZGlmZmVyZW50XG4gKiBjb2x1bW5zIG9yIGV2ZW4gZW50aXJlbHkgZGlmZmVyZW50IGdyaWRzIHdpdGhpbiBtZWRpYSBxdWVyaWVzLlxuICpcbiAqIFRoZXJlJ3MgYWxzbyBhIGNvbHB1c2ggbWl4aW4gdG8gc2hpZnQgYW4gZWxlbWVudCB0byB0aGUgcmlnaHQgYnkgYSBudW1iZXIgb2YgY29sdW1ucy5cbiAqXG4gKiBSZW1lbWJlciwgdmFyaWFibGVzIHdyYXBwZWQgaW4gYFtdYCBpbiB0aGUgZXhhbXBsZSBhcmUgb3B0aW9uYWwuXG4gKlxuICogc2NzczpcbiAqICAgQGluY2x1ZGUgZ3JpZENvbnRhaW5lciAoWyRndXR0ZXJdKTtcbiAqICAgQGluY2x1ZGUgc3ViZ3JpZENvbnRhaW5lciAoWyRndXR0ZXJdKTtcbiAqICAgQGluY2x1ZGUgY29sc3BhbiAoJHNwYW5bLCAkdG90YWxbLCAkZ3V0dGVyXV0pO1xuICogICBAaW5jbHVkZSBjb2xwdXNoICgkc3BhblssICR0b3RhbFssICRndXR0ZXJdXSk7XG4gKlxuICogQHBhcmFtIHtpbnR9ICRzcGFuIC0gbnVtYmVyIG9mIGNvbHVtbnMgdG8gc3BhblxuICogQHBhcmFtIHtpbnR9ICR0b3RhbCAtIG51bWJlciBvZiB0b3RhbCBjb2x1bW5zIHRoZSBncmlkIGhhc1xuICogQHBhcmFtIHtudW1iZXIgdy8gdW5pdH0gJGd1dHRlciAtIHdpZHRoIG9mIHRoZSBndXR0ZXJzIGJldHdlZW4gY29sdW1uc1xuICovXG5AbWl4aW4gZ3JpZENvbnRhaW5lciAoJGd1dHRlcjogJHdyICogMikge1xuICBAZXh0ZW5kICVjbGVhci1maXg7XG4gIEBpZiAkbWF4LXdpZHRoICE9IDEwMCUge1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aCArICRndXR0ZXI7XG4gIH1cbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgLy8gcGFkZGluZy1sZWZ0OiAkd3I7XG4gIC8vIHBhZGRpbmctcmlnaHQ6ICR3cjtcbn1cbkBtaXhpbiBzdWJncmlkQ29udGFpbmVyICgkZ3V0dGVyOiAkd3IgKiAyKSB7XG4gIEBleHRlbmQgJWNsZWFyLWZpeDtcbiAgbWFyZ2luLWxlZnQ6IC0xICogJGd1dHRlciAvIDI7XG4gIG1hcmdpbi1yaWdodDogLTEgKiAkZ3V0dGVyIC8gMjtcbn1cbkBtaXhpbiBjb2xzcGFuICgkc3BhbiwgJHRvdGFsOiAxMiwgJGd1dHRlcjogJHdyICogMikge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBmbG9hdDogbGVmdDtcbiAgbWluLWhlaWdodDogMXB4OyAvLyBmb3JjZSBpdCB0byB0YWtlIHNwYWNlIG5vIG1hdHRlciB3aGF0XG4gIEBpZiAoJGd1dHRlciAhPSAwKSB7XG4gICAgd2lkdGg6IGNhbGMoI3skc3BhbiAvICR0b3RhbCAqICAxMDAlfSAtICN7JGd1dHRlcn0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICB3aWR0aDogI3skc3BhbiAvICR0b3RhbCAqICAxMDAlfTtcbiAgfVxuICBtYXJnaW4tbGVmdDogJGd1dHRlciAvIDI7XG4gIG1hcmdpbi1yaWdodDogJGd1dHRlciAvIDI7XG59XG5AbWl4aW4gY29scHVzaCAoJHNwYW4sICR0b3RhbDogMTIsICRndXR0ZXI6ICR3ciAqIDIpIHtcbiAgQGlmICgkZ3V0dGVyICE9IDApIHtcbiAgICBtYXJnaW4tbGVmdDogY2FsYygjeyRzcGFuIC8gJHRvdGFsICogIDEwMCV9ICsgI3skZ3V0dGVyIC8gMn0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICBtYXJnaW4tbGVmdDogI3skc3BhbiAvICR0b3RhbCAqICAxMDAlfTtcbiAgfVxufVxuIiwiLyoqKlxuICogVmlzdWFsIFJoeXRobVxuICpcbiAqIFZhcmlhYmxlcyB0byBtYWludGFpbiBhIHN0YW5kYXJkIHZpc3VhbCByaHl0aG0gYm90aCB2ZXJ0aWNhbGx5IGFuZCBob3Jpem9udGFsbHkuXG4gKlxuICogQWxzbywgdGhlcmUncyBhIGZ1bmN0aW9uIGZvciByZXR1cm5pbmcgdGhlIG5leHQgbXVsdGlwbGUgb2YgdmVydGljYWwgcmh5dGhtXG4gKiBhYm92ZSBhIGdpdmVuIG51bWJlci5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gJGJhc2UgLSBudW1iZXIgdG8gZmluZCBuZXh0IG11bHRpcGxlIGFib3ZlLlxuICogQHBhcmFtIHtvcHRpb25hbCwgTnVtYmVyfSAkcmh5dGhtIC0gbnVtYmVyIHRoYXQncyBtdWx0aXBsaWVkIHVudGlsIGl0J3MgbGFyZ2VyIHRoYW4gYCRiYXNlYC4gRXF1YWwgdG8gYCR2cmAgaWYgb21pdHRlZC5cbiAqXG4gKiBzY3NzOlxuICogICBsaW5lLWhlaWdodDogbXVsdGlwbGVBYm92ZSgzMCwgMTQpOyAvLyAzO1xuICovXG5cbi8vIHZlcnRpY2FsIHJoeXRobVxuJHZyOiBweFRvUmVtKDE2KSAhZGVmYXVsdDtcbiR3cjogJHZyICFkZWZhdWx0O1xuXG4vLyBiYXNlIGdyaWQgd2lkdGhcbiRtYXgtd2lkdGg6IHB4VG9SZW0oMTAyMCk7XG5AZnVuY3Rpb24gbi1jb2wtd2lkdGggKCRjb2xzKSB7XG4gIEByZXR1cm4gKCgkbWF4LXdpZHRoIC8gMTIgLSAkd3IpICogJGNvbHMgKyAkd3IgKiAoJGNvbHMgLSAxKSk7XG59XG5cbi8vIHVzZWZ1bCBmb3IgbGluZSBoZWlnaHRzXG5AZnVuY3Rpb24gbXVsdGlwbGVBYm92ZSAoJGJhc2UsICRyaHl0aG06ICR2cikge1xuICBAcmV0dXJuICRyaHl0aG0gKiBjZWlsKCRiYXNlIC8gJHJoeXRobSk7XG59XG4iLCIvKioqXG4gKiBDb2xvcnNcbiAqXG4gKiBUaGVzZSBjb2xvcnMgZGVmaW5lIHRoZSBsb29rIG9mIHRoZSBndWlkZSBpdHNlbGYsIF9ub3RfIGFueXRoaW5nIHdpdGhpbiB0aGUgZXhhbXBsZXMuXG4gKlxuICogcGF0aDogLlxuICovXG5cbi8qKipcbiAqIFByaW1hcnkgUGFsZXR0ZVxuICpcbiAqIFRoZSBtYWluIGNvbG9ycyB1c2VkIGZvciB0aGUgQXV0b2d1aWRlIHRlbXBsYXRlLiAgQnkgZGVmYXVsdCwgdGhlc2UgY29sb3JzIGdldFxuICogcmV1c2VkIGZvciB0aGUgbW9yZSBkZXRhaWxlZCBwYWxldHRlLlxuICpcbiAqIE5vdGUgdG8gbGVhcm5lcnM6IHRoZXNlIHZhcmlhYmxlIG5hbWVzIGFyZSBsZXNzIHRoYW4gc3RlbGxhci4gIFRoZXkncmUga2VwdFxuICogaW50ZW50aW9uYWxseSB2YWd1ZSwgYmVjYXVzZSBvZiB0aGVpciB3aWRlIGFwcGxpY2F0aW9uLlxuICpcbiAqIHBhdGg6IC4vY29sb3JzXG4gKiBvcmRlcjogMFxuICogdGVtcGxhdGU6IGNvbG9yXG4gKi9cbiR0ZXh0OiAjMzMzICFkZWZhdWx0O1xuJGJhY2tncm91bmQtcHJpbWFyeTogI2ZmZiAhZGVmYXVsdDtcbiRiYWNrZ3JvdW5kLXNlY29uZGFyeTogI2U5ZWFmMCAhZGVmYXVsdDtcbiRhY2NlbnQtcHJpbWFyeTogIzA0NkM2RiAhZGVmYXVsdDtcbiRhY2NlbnQtcHJpbWFyeS1saWdodDogIzExYzFjNCAhZGVmYXVsdDtcbiRhY2NlbnQtc2Vjb25kYXJ5OiAjMTQ0NzdhICFkZWZhdWx0O1xuJGFjY2VudC1zZWNvbmRhcnktbGlnaHQ6ICMxODZjYmYgIWRlZmF1bHQ7XG5cbi8qKipcbiAqIERldGFpbGVkIFBhbGV0dGVcbiAqXG4gKiBUaGVzZSBhcmUgdGhlIGNvbG9ycyB0aGF0IHdpbGwgYWN0dWFsbHkgYXBwZWFyIHRocm91Z2hvdXQgdGhlIGdlbmVyYXRlZCBndWlkZS5cbiAqIEFsdGVyaW5nIHRoZXNlIHdpbGwgZ3JhbnQgYSB2ZXJ5IGZpbmUgbGV2ZWwgb2YgY29udHJvbCBvdmVyIGNvbXBvbmVudHMuXG4gKlxuICogVGhlIGNvbG9ycyB0aXRsZWQgYCRiYWNrZ3JvdW5kLSpgIGFyZSB1c2VkIGRpcmVjdGx5IGFzIHRoZSBiYWNrZ3JvdW5kIHByb3BlcnR5XG4gKiBmb3IgdGhlaXIgZ2l2ZW4gZWxlbWVudCwgc28geW91IGNhbiByZXBsYWNlIHRoZW0gd2l0aCBhbnl0aGluZyB0aGF0IGNvdWxkIGFwcGx5XG4gKiB0aGVyZS4gIEZvciBleGFtcGxlOiBgJGJhY2tncm91bmQtaGVhZGVyOiB1cmwoaHR0cHM6Ly9tb3Jib3Ryb24uY29tL2ltZy9TMDNFMDYvMTA1MzQ1MS5qcGcpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0YC5cbiAqXG4gKiBwYXRoOiAuL2NvbG9yc1xuICogb3JkZXI6IDFcbiAqIHRlbXBsYXRlOiBjb2xvclxuICovXG4kdGV4dC1ib2R5OiAkdGV4dCAhZGVmYXVsdDtcbiR0ZXh0LWhlYWRsaW5lczogJHRleHQgIWRlZmF1bHQ7XG4kdGV4dC1zdWJ0bGU6IHJnYmEoJHRleHQsIC41KSAhZGVmYXVsdDtcbiR0ZXh0LWludmVydGVkOiB3aGl0ZSAhZGVmYXVsdDtcbiR0ZXh0LWhlYWRlcjogJHRleHQtaW52ZXJ0ZWQgIWRlZmF1bHQ7XG4kdGV4dC1mb290ZXI6IHJnYigyNTUsIDI1NSwgMjU1KSAhZGVmYXVsdDtcbiR0ZXh0LWNvZGU6ICR0ZXh0ICFkZWZhdWx0O1xuJGJhY2tncm91bmQtaGVhZGVyOiAkYWNjZW50LXByaW1hcnkgIWRlZmF1bHQ7XG4kYmFja2dyb3VuZC1ib2R5OiAkYmFja2dyb3VuZC1wcmltYXJ5ICFkZWZhdWx0O1xuJGJhY2tncm91bmQtY29kZTogJGJhY2tncm91bmQtc2Vjb25kYXJ5ICFkZWZhdWx0O1xuJGJhY2tncm91bmQtdHJheTogJGJhY2tncm91bmQtcHJpbWFyeSAhZGVmYXVsdDtcbiRiYWNrZ3JvdW5kLWZvb3RlcjogIzY2Njc2YSAhZGVmYXVsdDtcbiRib3JkZXItaHRtbDogJGJhY2tncm91bmQtc2Vjb25kYXJ5ICFkZWZhdWx0O1xuJGJvcmRlci1jb2RlOiAkYmFja2dyb3VuZC1zZWNvbmRhcnkgIWRlZmF1bHQ7XG4kYm9yZGVyLXRyYXk6ICRiYWNrZ3JvdW5kLXNlY29uZGFyeSAhZGVmYXVsdDtcbiRib3JkZXItaW5wdXQ6ICRiYWNrZ3JvdW5kLXNlY29uZGFyeSAhZGVmYXVsdDtcbiRvdmVybGF5LWNvbHVtbnM6IHJnYmEoJGFjY2VudC1wcmltYXJ5LCAuMSkgIWRlZmF1bHQ7XG5cblxuLyoqKlxuICogQ29kZSBDb2xvcnNcbiAqXG4gKiBUaGVzZSBhcmUgdGhlIGNvbG9yIHZhcmlhYmxlcyB0aGF0IGNhbiBiZSBvdmVycmlkZGVuIGZvciBjb2RlIGJsb2Nrcy5cbiAqXG4gKiB0ZW1wbGF0ZTogY29sb3JcbiAqIHBhdGg6IC4vbW9sZWN1bGVzL2NvZGUgYmxvY2tcbiAqL1xuJGNvZGUtY29tbWVudDogJHRleHQtc3VidGxlICFkZWZhdWx0O1xuJGNvZGUtcXVvdGU6ICR0ZXh0LXN1YnRsZSAhZGVmYXVsdDtcbiRjb2RlLWtleXdvcmQ6ICR0ZXh0LWNvZGUgIWRlZmF1bHQ7XG4kY29kZS1zZWxlY3Rvci10YWc6ICR0ZXh0LWNvZGUgIWRlZmF1bHQ7XG4kY29kZS1zdWJzdDogJHRleHQtY29kZSAhZGVmYXVsdDtcbiRjb2RlLW51bWJlcjogJGFjY2VudC1wcmltYXJ5LWxpZ2h0ICFkZWZhdWx0O1xuJGNvZGUtbGl0ZXJhbDogJGFjY2VudC1wcmltYXJ5LWxpZ2h0ICFkZWZhdWx0O1xuJGNvZGUtdmFyaWFibGU6ICRhY2NlbnQtcHJpbWFyeS1saWdodCAhZGVmYXVsdDtcbiRjb2RlLXRlbXBsYXRlLXZhcmlhYmxlOiAkYWNjZW50LXByaW1hcnktbGlnaHQgIWRlZmF1bHQ7XG4kY29kZS10YWctYXR0cjogJGFjY2VudC1wcmltYXJ5LWxpZ2h0ICFkZWZhdWx0O1xuJGNvZGUtc3RyaW5nOiAkYWNjZW50LXNlY29uZGFyeS1saWdodCAhZGVmYXVsdDtcbiRjb2RlLWRvY3RhZzogJGFjY2VudC1zZWNvbmRhcnktbGlnaHQgIWRlZmF1bHQ7XG4kY29kZS10aXRsZTogJGFjY2VudC1zZWNvbmRhcnkgIWRlZmF1bHQ7XG4kY29kZS1zZWN0aW9uOiAkYWNjZW50LXNlY29uZGFyeSAhZGVmYXVsdDtcbiRjb2RlLXNlbGVjdG9yLWlkOiAkYWNjZW50LXNlY29uZGFyeSAhZGVmYXVsdDtcbiRjb2RlLXR5cGU6ICRhY2NlbnQtcHJpbWFyeSAhZGVmYXVsdDtcbiRjb2RlLWNsYXNzLXRpdGxlOiAkYWNjZW50LXByaW1hcnkgIWRlZmF1bHQ7XG4kY29kZS10YWc6IGRhcmtlbigkYWNjZW50LXByaW1hcnksIDQpICFkZWZhdWx0O1xuJGNvZGUtbmFtZTogZGFya2VuKCRhY2NlbnQtcHJpbWFyeSwgNCkgIWRlZmF1bHQ7XG4kY29kZS1hdHRyaWJ1dGU6IGRhcmtlbigkYWNjZW50LXByaW1hcnksIDQpICFkZWZhdWx0O1xuJGNvZGUtcmVnZXhwOiAkYWNjZW50LXNlY29uZGFyeSAhZGVmYXVsdDtcbiRjb2RlLWxpbms6ICRhY2NlbnQtc2Vjb25kYXJ5ICFkZWZhdWx0O1xuJGNvZGUtc3ltYm9sOiBkYXJrZW4oJGFjY2VudC1zZWNvbmRhcnksIDQpICFkZWZhdWx0O1xuJGNvZGUtYnVsbGV0OiBkYXJrZW4oJGFjY2VudC1zZWNvbmRhcnksIDQpICFkZWZhdWx0O1xuJGNvZGUtYnVpbHRfaW46ICRhY2NlbnQtcHJpbWFyeSAhZGVmYXVsdDtcbiRjb2RlLWJ1aWx0aW4tbmFtZTogJGFjY2VudC1wcmltYXJ5ICFkZWZhdWx0O1xuJGNvZGUtbWV0YTogJHRleHQtc3VidGxlICFkZWZhdWx0O1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */
