UNPKG

@vci/style

Version:

样式编写辅助库(SCSS)

739 lines (606 loc) 59.9 kB
/** * @vci/style - 样式编写辅助库(SCSS) * @version v2.1.7 * @link https://gitee.com/visual-ceiling/v-style * @license ISC */ @charset "UTF-8"; /* # ================================================================= # Global selectors # ================================================================= */ html { box-sizing: border-box; overflow-y: scroll; /* All browsers without overlaying scrollbars */ -webkit-text-size-adjust: 100%; -moz-text-size-adjust: 100%; text-size-adjust: 100%; /* Prevent adjustments of font size after orientation changes in iOS */ word-break: normal; -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; } *, ::before, ::after { box-sizing: inherit; background-repeat: no-repeat; /* Set `background-repeat: no-repeat` to all elements and pseudo elements */ } ::before, ::after { text-decoration: inherit; /* Inherit text-decoration and vertical align to ::before and ::after pseudo elements */ vertical-align: inherit; } * { padding: 0; /* Reset `padding` and `margin` of all elements */ margin: 0; } /* # ================================================================= # General elements # ================================================================= */ hr { height: 0; /* Add the correct box sizing in Firefox */ overflow: visible; /* Show the overflow in Edge and IE */ } details, main { display: block; /* Render the `main` element consistently in IE. */ } summary { display: list-item; /* Add the correct display in all browsers */ } small { font-size: 80%; /* Set font-size to 80% in `small` elements */ } [hidden] { display: none; /* Add the correct display in IE */ } abbr[title] { /* Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari */ text-decoration: underline; -webkit-text-decoration: underline dotted currentColor; text-decoration: underline dotted currentColor; border-bottom: none; /* Remove the bottom border in Chrome 57 */ } a { background-color: transparent; /* Remove the gray background on active links in IE 10 */ } a:active, a:hover { outline-width: 0; /* Remove the outline when hovering in all browsers */ } code, kbd, pre, samp { font-family: monospace, sans-serif; /* Specify the font family of code elements */ } pre { font-size: 1em; /* Correct the odd `em` font sizing in all browsers */ } b, strong { font-weight: bolder; /* Add the correct font weight in Chrome, Edge, and Safari */ } /* https://gist.github.com/unruthless/413930 */ sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline; } sub { bottom: -0.25em; } sup { top: -0.5em; } /* # ================================================================= # Forms # ================================================================= */ input { border-radius: 0; } /* Replace pointer cursor in disabled elements */ [disabled] { cursor: default; } [type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button { height: auto; /* Correct the cursor style of increment and decrement buttons in Chrome */ } [type=search] { -webkit-appearance: textfield; -moz-appearance: textfield; appearance: textfield; /* Correct the odd appearance in Chrome and Safari */ outline-offset: -2px; /* Correct the outline style in Safari */ } [type=search]::-webkit-search-cancel-button, [type=search]::-webkit-search-decoration { -webkit-appearance: none; appearance: none; /* Remove the inner padding in Chrome and Safari on macOS */ } textarea { overflow: auto; /* Internet Explorer 11+ */ resize: vertical; /* Specify textarea resizability */ } button, input, optgroup, select, textarea { font: inherit; /* Specify font inheritance of form elements */ } optgroup { font-weight: bold; /* Restore the font weight unset by the previous rule */ } button { overflow: visible; /* Address `overflow` set to `hidden` in IE 8/9/10/11 */ } button, select { text-transform: none; /* Firefox 40+, Internet Explorer 11- */ } /* Apply cursor pointer to button elements */ button, [type=button], [type=reset], [type=submit], [role=button] { color: inherit; cursor: pointer; } /* Remove inner padding and border in Firefox 4+ */ button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner { padding: 0; border-style: none; } /* Replace focus style removed in the border reset above */ button:-moz-focusring, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner { outline: 1px dotted ButtonText; } /* stylelint-disable */ button, html [type=button], [type=reset], [type=submit] { -webkit-appearance: button; -moz-appearance: button; appearance: button; /* Correct the inability to style clickable types in iOS */ } /* stylelint-enable */ /* Remove the default button styling in all browsers */ /* stylelint-disable */ button, input, select, textarea { background-color: transparent; border-style: none; } /* stylelint-enable */ /* Style select like a standard input */ select { -webkit-appearance: none; -moz-appearance: none; appearance: none; /* Firefox 36+ */ } select::-ms-expand { display: none; /* Internet Explorer 11+ */ } select::-ms-value { color: currentcolor; /* Internet Explorer 11+ */ } legend { display: table; /* Correct the text wrapping in Edge and IE */ max-width: 100%; /* Correct the text wrapping in Edge and IE */ color: inherit; /* Correct the color inheritance from `fieldset` elements in IE */ white-space: normal; /* Correct the text wrapping in Edge and IE */ border: 0; /* Correct `color` not being inherited in IE 8/9/10/11 */ } ::-webkit-file-upload-button { font: inherit; /* Change font properties to `inherit` in Chrome and Safari */ color: inherit; /* Correct the inability to style clickable types in iOS and Safari */ -webkit-appearance: button; appearance: button; } ::-ms-clear, ::-ms-reveal { display: none; } /* # ================================================================= # Specify media element style # ================================================================= */ img { border-style: none; /* Remove border when inside `a` element in IE 8/9/10 */ } /* Add the correct vertical alignment in Chrome, Firefox, and Opera */ progress { vertical-align: baseline; } /* # ================================================================= # Accessibility # ================================================================= */ /* Hide content from screens but not screenreaders */ @media screen { [hidden~=screen] { display: inherit; } [hidden~=screen]:not(:active):not(:focus):not(:target) { position: absolute !important; clip: rect(0 0 0 0) !important; } } /* Specify the progress cursor of updating elements */ [aria-busy=true] { cursor: progress; } /* Specify the pointer cursor of trigger elements */ [aria-controls] { cursor: pointer; } /* Specify the unstyled cursor of disabled, not-editable, or otherwise inoperable elements */ [aria-disabled=true] { cursor: default; } body { font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif; font-size: 14px; /* 抗锯齿 */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } ul li, ul ol { list-style: none; } img, embed, object, audio, video { max-width: 100%; height: auto; } .vci-pst-abs, .vci-pst-cm, .vci-pst-m, .vci-pst-c { position: absolute; } .vci-pst-rlv { position: relative; } .vci-top-0 { top: 0; } .vci-bottom-0 { bottom: 0; } .vci-left-0 { left: 0; } .vci-right-0 { right: 0; } /* stylelint-disable */ .vci-pst-c { left: 50%; transform: translateX(-50%); } .vci-pst-m { top: 50%; transform: translateY(-50%); } .vci-pst-cm { top: 50%; left: 50%; transform: translate(-50%, -50%); } /* stylelint-enable */ .vci-flex, .vci-flex-c, .vci-flex-cm, .vci-flex-cc, .vci-flex-ccm, .vci-flex-ccbt, .vci-flex-ccb, .vci-flex-cct, .vci-flex-rc, .vci-flex-rm, .vci-flex-rcm, .vci-flex-rmb, .vci-flex-rmr, .vci-flex-rml { display: flex; } .vci-flex-rm, .vci-flex-rcm, .vci-flex-rmb, .vci-flex-rmr, .vci-flex-rml { /* stylelint-disable-line */ align-items: center; } .vci-flex-rml { /* stylelint-disable-line */ justify-content: flex-start; } .vci-flex-rmr { /* stylelint-disable-line */ justify-content: flex-end; } .vci-flex-rmb { /* stylelint-disable-line */ justify-content: space-between; } .vci-flex-rcm { /* stylelint-disable-line */ justify-content: center; } .vci-flex-rc { /* stylelint-disable-line */ justify-content: center; } .vci-flex-c, .vci-flex-cm, .vci-flex-cc, .vci-flex-ccm, .vci-flex-ccbt, .vci-flex-ccb, .vci-flex-cct { /* stylelint-disable-line */ flex-direction: column; } .vci-flex-cc, .vci-flex-ccm, .vci-flex-ccbt, .vci-flex-ccb, .vci-flex-cct { /* stylelint-disable-line */ align-items: center; } .vci-flex-cct { /* stylelint-disable-line */ justify-content: flex-start; } .vci-flex-ccb { /* stylelint-disable-line */ justify-content: flex-end; } .vci-flex-ccbt { /* stylelint-disable-line */ justify-content: space-between; } .vci-flex-ccm { /* stylelint-disable-line */ justify-content: center; } .vci-flex-cm { /* stylelint-disable-line */ justify-content: center; } .vci-flex-fill { flex: 1 1 auto; } .vci-flex-0-0 { flex: 0 0 auto; } .vci-flex-1-0 { flex: 1 0 auto; } .vci-fl { float: left; } .vci-fr { float: right; } .vci-clear::after, .vci-clear-element { clear: both; *zoom: 1; } .vci-clear::after, .vci-clear-element { display: block; width: 0; height: 0; } .vci-clear::after { content: " "; } .vci-w-50 { width: 50% !important; } .vci-w-100, .vci-size-100 { width: 100% !important; } .vci-w-auto, .vci-size-auto { width: auto !important; } .vci-w-screen, .vci-screen { width: 100vw !important; } .vci-h-50 { height: 50% !important; } .vci-h-100, .vci-size-100 { height: 100% !important; } .vci-h-auto, .vci-size-auto { height: auto !important; } .vci-h-screen, .vci-screen { height: 100vh !important; } /* stylelint-disable */ /* stylelint-enable */ .vci-margin-auto-x { margin: 0 auto; } .vci-tc-alpha, .vci-tc-scale, .vci-transition-slow, .vci-transition-quick, .vci-transition { transition: 0.2s ease-in-out; } .vci-transition-quick { transition-duration: 0.12s; } .vci-transition-slow { transition-duration: 0.35s; } @keyframes vci-amt-rotate { from { transform: rotate(0); } to { transform: rotate(360deg); } } .vci-amt-rotate { animation: vci-amt-rotate 36s infinite both linear; } @keyframes vci-amt-fade { from { opacity: 1; } to { opacity: 0.6; } } .vci-amt-fade { animation: vci-amt-fade 2s infinite both linear alternate-reverse; } .vci-bg-cover { background-position: center; background-size: cover; } .vci-bg-fill { background-position: center; background-size: 100% 100%; } .vci-bg-contain { background-position: center; background-size: contain; } /** 线性渐变文字 $angle: 渐变角度:0~360deg; $color: 默认字体颜色,用于不支持渐变文字的情况下; $colors: 颜色数组例如: (#ccc, #ccc, #ccc) 或者 (#ccc 10%, #ccc 50%, #ccc) */ /** 文字选中背景 $bg 选中背景 默认: #1a74be $color 选中文字颜色 默认: #fff */ .vci-fs-12 { font-size: 12px; } .vci-fs-13 { font-size: 13px; } .vci-fs-14 { font-size: 14px; } .vci-fs-15 { font-size: 15px; } .vci-fs-16 { font-size: 16px; } .vci-fs-17 { font-size: 17px; } .vci-fs-18 { font-size: 18px; } .vci-fs-19 { font-size: 19px; } .vci-fs-20 { font-size: 20px; } .vci-fs-21 { font-size: 21px; } .vci-fs-22 { font-size: 22px; } .vci-fs-23 { font-size: 23px; } .vci-fs-24 { font-size: 24px; } .vci-fs-25 { font-size: 25px; } .vci-fs-26 { font-size: 26px; } .vci-fs-27 { font-size: 27px; } .vci-fs-28 { font-size: 28px; } .vci-fs-29 { font-size: 29px; } .vci-fs-30 { font-size: 30px; } .vci-fs-31 { font-size: 31px; } .vci-fw-normal { font-weight: normal; } .vci-fw-bold { font-weight: bold; } .vci-fw-bolder { font-weight: bolder; } .vci-fs-normal { font-style: normal; } .vci-fs-it { font-style: italic; } .vci-fs-ob { font-style: oblique; } .vci-ta-l { text-align: left; } .vci-ta-r { text-align: right; } .vci-ta-c { text-align: center; } .vci-font-stroke { text-shadow: 1px 0 1px #333, -1px 0 1px #333, 0 -1px 1px #333, 0 1px 1px #333; } .vci-to-e { display: inline-block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .vci-after::after, .vci-before::before { display: block; content: " "; } .vci-tc-alpha, .vci-tc-scale, .vci-transition, .vci-transition-quick, .vci-transition-slow { transition: 0.2s ease-in-out; } .vci-transition-quick { transition-duration: 0.12s; } .vci-transition-slow { transition-duration: 0.35s; } .vci-tc-scale { cursor: pointer; transition-duration: 0.12s; } .vci-tc-scale:hover { transform: scale(1.05) rotateZ(0); } .vci-tc-scale:active { transform: scale(0.9) rotateZ(0); } .vci-tc-alpha { cursor: pointer; transition-duration: 0.12s; } .vci-tc-alpha:hover { opacity: 0.9; } .vci-tc-alpha:active { opacity: 0.8; } .vci-pointer-events-auto { pointer-events: auto; } .vci-pointer-events-none { pointer-events: none; } /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyIsIl9yZXNzLnNjc3MiLCJfcmVzZXQuc2NzcyIsIl9wb3NpdGlvbi5zY3NzIiwiX2Rpc3BsYXkuc2NzcyIsIl9mbG9hdC5zY3NzIiwiX3NpemVpbmcuc2NzcyIsIl9tYXJnaW4uc2NzcyIsIl90cmFuc2l0aW9uLnNjc3MiLCJfdmFyLnNjc3MiLCJfYW5pbWF0aW9uLnNjc3MiLCJfYmFja2dyb3VuZC5zY3NzIiwibWl4aW5zL19iYWNrZ3JvdW5kLnNjc3MiLCJtaXhpbnMvX2ZvbnQuc2NzcyIsIl9mb250LnNjc3MiLCJfcHNldWRvLnNjc3MiLCJfaW50ZXJhY3RpdmUuc2NzcyIsIl9vdGhlci5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQjtBQ0FoQjs7d0VBQUE7QUFHQTtFQUNFLHNCQUFBO0VBQ0Esa0JBQUEsRUFBQSwrQ0FBQTtFQUNBLDhCQUFBO0tBQUEsMkJBQUE7VUFBQSxzQkFBQSxFQUFBLHNFQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtJQUFBLGNBQUE7T0FBQSxXQUFBO0FERUY7O0FDQ0E7OztFQUdFLG1CQUFBO0VBQ0EsNEJBQUEsRUFBQSwyRUFBQTtBREVGOztBQ0NBOztFQUVFLHdCQUFBLEVBQUEsdUZBQUE7RUFDQSx1QkFBQTtBREVGOztBQ0NBO0VBQ0UsVUFBQSxFQUFBLGlEQUFBO0VBQ0EsU0FBQTtBREVGOztBQ0NBOzt3RUFBQTtBQUdBO0VBQ0UsU0FBQSxFQUFBLDBDQUFBO0VBQ0EsaUJBQUEsRUFBQSxxQ0FBQTtBREVGOztBQ0NBOztFQUVFLGNBQUEsRUFBQSxrREFBQTtBREVGOztBQ0NBO0VBQ0Usa0JBQUEsRUFBQSw0Q0FBQTtBREVGOztBQ0NBO0VBQ0UsY0FBQSxFQUFBLDZDQUFBO0FERUY7O0FDQ0E7RUFDRSxhQUFBLEVBQUEsa0NBQUE7QURFRjs7QUNDQTtFQUNFLDJFQUFBO0VBQ0EsMEJBQUE7RUFBQSxzREFBQTtVQUFBLDhDQUFBO0VBQ0EsbUJBQUEsRUFBQSwwQ0FBQTtBREVG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QUNFLHFCQUFBO0FONmJGOztBTTFiQTtFQUNFLHNCQUFBO0FONmJGOztBTTFiQTtFQUNFLHNCQUFBO0FONmJGOztBTTFiQTtFQUNFLHVCQUFBO0FONmJGOztBTTFiQTtFQUNFLHNCQUFBO0FONmJGOztBTTFiQTtFQUNFLHVCQUFBO0FONmJGOztBTTFiQTtFQUNFLHVCQUFBO0FONmJGOztBTTFiQTtFQUNFLHdCQUFBO0FONmJGOztBTTFiQSxzQkFBQTtBQWdCQSxxQkFBQTtBQ2hEQTtFQUNFLGNBQUE7QVArZEY7O0FRN2RBO0VBQ0UsNEJDS1c7QVQyZGI7O0FRemRBO0VBR0UsMEJDVDBCO0FUbWU1Qjs7QVF2ZEE7RUFHRSwwQkNkeUI7QVRzZTNCOztBVXhlQTtFQUNFO0lBQ0Usb0JBQUE7RVYyZUY7RVV4ZUE7SUFDRSx5QkFBQTtFVjBlRjtBQUNGO0FVdmVBO0VBQ0Usa0RBQUE7QVZ5ZUY7O0FVcmVBO0VBQ0U7SUFDRSxVQUFBO0VWd2VGO0VVcmVBO0lBQ0UsWUFBQTtFVnVlRjtBQUNGO0FVcGVBO0VBQ0UsaUVBQUE7QVZzZUY7O0FXamdCQTtFQ0RFLDJCQUFBO0VESUEsc0JBQUE7QVhtZ0JGOztBVy9mQTtFQ1JFLDJCQUFBO0VEV0EsMEJBQUE7QVhpZ0JGOztBVzdmQTtFQ2ZFLDJCQUFBO0VEa0JBLHdCQUFBO0FYK2ZGOztBYTdnQkE7Ozs7O0VBQUE7QUF3QkE7Ozs7RUFBQTtBQ3pCRTtFQUNFLGVBQUE7QWQ0aEJKOztBYzdoQkU7RUFDRSxlQUFBO0FkZ2lCSjs7QWNqaUJFO0VBQ0UsZUFBQTtBZG9pQko7O0FjcmlCRTtFQUNFLGVBQUE7QWR3aUJKOztBY3ppQkU7RUFDRSxlQUFBO0FkNGlCSjs7QWM3aUJFO0VBQ0UsZUFBQTtBZGdqQko7O0FjampCRTtFQUNFLGVBQUE7QWRvakJKOztBY3JqQkU7RUFDRSxlQUFBO0Fkd2pCSjs7QWN6akJFO0VBQ0UsZUFBQTtBZDRqQko7O0FjN2pCRTtFQUNFLGVBQUE7QWRna0JKOztBY2prQkU7RUFDRSxlQUFBO0Fkb2tCSjs7QWNya0JFO0VBQ0UsZUFBQTtBZHdrQko7O0FjemtCRTtFQUNFLGVBQUE7QWQ0a0JKOztBYzdrQkU7RUFDRSxlQUFBO0FkZ2xCSjs7QWNqbEJFO0VBQ0UsZUFBQTtBZG9sQko7O0FjcmxCRTtFQUNFLGVBQUE7QWR3bEJKOztBY3psQkU7RUFDRSxlQUFBO0FkNGxCSjs7QWM3bEJFO0VBQ0UsZUFBQTtBZGdtQko7O0Fjam1CRTtFQUNFLGVBQUE7QWRvbUJKOztBY3JtQkU7RUFDRSxlQUFBO0Fkd21CSjs7QWNubUJBO0VBQ0UsbUJBQUE7QWRzbUJGOztBY25tQkE7RUFDRSxpQkFBQTtBZHNtQkY7O0Fjbm1CQTtFQUNFLG1CQUFBO0Fkc21CRjs7QWNsbUJBO0VBQ0Usa0JBQUE7QWRxbUJGOztBY2xtQkE7RUFDRSxrQkFBQTtBZHFtQkY7O0FjbG1CQTtFQUNFLG1CQUFBO0FkcW1CRjs7QWNqbUJBO0VBQ0UsZ0JBQUE7QWRvbUJGOztBY2ptQkE7RUFDRSxpQkFBQTtBZG9tQkY7O0Fjam1CQTtFQUNFLGtCQUFBO0Fkb21CRjs7QWNobUJBO0VEaERFLDZFQUFBO0Fib3BCRjs7QWMvbEJBO0VBQ0UscUJBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0VBQ0EsbUJBQUE7QWRrbUJGOztBZTdwQkE7O0VBRUUsY0FBQTtFQUNBLFlBQUE7QWZncUJGOztBUWhxQkE7RUFDRSw0QkNLVztBVDhwQmI7O0FRNXBCQTtFQUdFLDBCQ1QwQjtBVHNxQjVCOztBUTFwQkE7RUFHRSwwQkNkeUI7QVR5cUIzQjs7QWdCMXFCQTtFQUdFLGVBQUE7RUFDQSwwQlBKMEI7QVQrcUI1QjtBZ0J6cUJFO0VBQ0UsaUNBQUE7QWhCMnFCSjtBZ0J4cUJFO0VBQ0UsZ0NBQUE7QWhCMHFCSjs7QWdCcnFCQTtFQUdFLGVBQUE7RUFDQSwwQlBwQjBCO0FUMHJCNUI7QWdCcHFCRTtFQUNFLFlBQUE7QWhCc3FCSjtBZ0JucUJFO0VBQ0UsWUFBQTtBaEJxcUJKOztBaUJyc0JBO0VBQ0Usb0JBQUE7QWpCd3NCRjs7QWlCcnNCQTtFQUNFLG9CQUFBO0FqQndzQkYiLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLyogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIyBHbG9iYWwgc2VsZWN0b3JzXG4gICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5odG1sIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3cteTogc2Nyb2xsOyAvKiBBbGwgYnJvd3NlcnMgd2l0aG91dCBvdmVybGF5aW5nIHNjcm9sbGJhcnMgKi9cbiAgdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBpT1MgKi9cbiAgd29yZC1icmVhazogbm9ybWFsO1xuICB0YWItc2l6ZTogNDtcbn1cblxuKixcbjo6YmVmb3JlLFxuOjphZnRlciB7XG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IC8qIFNldCBgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdGAgdG8gYWxsIGVsZW1lbnRzIGFuZCBwc2V1ZG8gZWxlbWVudHMgKi9cbn1cblxuOjpiZWZvcmUsXG46OmFmdGVyIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0OyAvKiBJbmhlcml0IHRleHQtZGVjb3JhdGlvbiBhbmQgdmVydGljYWwgYWxpZ24gdG8gOjpiZWZvcmUgYW5kIDo6YWZ0ZXIgcHNldWRvIGVsZW1lbnRzICovXG4gIHZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1xufVxuXG4qIHtcbiAgcGFkZGluZzogMDsgLyogUmVzZXQgYHBhZGRpbmdgIGFuZCBgbWFyZ2luYCBvZiBhbGwgZWxlbWVudHMgKi9cbiAgbWFyZ2luOiAwO1xufVxuXG4vKiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjIEdlbmVyYWwgZWxlbWVudHNcbiAgICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbmhyIHtcbiAgaGVpZ2h0OiAwOyAvKiBBZGQgdGhlIGNvcnJlY3QgYm94IHNpemluZyBpbiBGaXJlZm94ICovXG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRSAqL1xufVxuXG5kZXRhaWxzLFxubWFpbiB7XG4gIGRpc3BsYXk6IGJsb2NrOyAvKiBSZW5kZXIgdGhlIGBtYWluYCBlbGVtZW50IGNvbnNpc3RlbnRseSBpbiBJRS4gKi9cbn1cblxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTsgLyogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzICovXG59XG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7IC8qIFNldCBmb250LXNpemUgdG8gODAlIGluIGBzbWFsbGAgZWxlbWVudHMgKi9cbn1cblxuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lOyAvKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAqL1xufVxuXG5hYmJyW3RpdGxlXSB7XG4gIC8qIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICBib3JkZXItYm90dG9tOiBub25lOyAvKiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gQ2hyb21lIDU3ICovXG59XG5cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLyogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwICovXG59XG5cbmE6YWN0aXZlLFxuYTpob3ZlciB7XG4gIG91dGxpbmUtd2lkdGg6IDA7IC8qIFJlbW92ZSB0aGUgb3V0bGluZSB3aGVuIGhvdmVyaW5nIGluIGFsbCBicm93c2VycyAqL1xufVxuXG5jb2RlLFxua2JkLFxucHJlLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIHNhbnMtc2VyaWY7IC8qIFNwZWNpZnkgdGhlIGZvbnQgZmFtaWx5IG9mIGNvZGUgZWxlbWVudHMgKi9cbn1cblxucHJlIHtcbiAgZm9udC1zaXplOiAxZW07IC8qIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2VycyAqL1xufVxuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjsgLyogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaSAqL1xufVxuXG4vKiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS91bnJ1dGhsZXNzLzQxMzkzMCAqL1xuc3ViLFxuc3VwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTtcbn1cblxuLyogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIyBGb3Jtc1xuICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuaW5wdXQge1xuICBib3JkZXItcmFkaXVzOiAwO1xufVxuXG4vKiBSZXBsYWNlIHBvaW50ZXIgY3Vyc29yIGluIGRpc2FibGVkIGVsZW1lbnRzICovXG5bZGlzYWJsZWRdIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG5bdHlwZT1udW1iZXJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bzsgLyogQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gQ2hyb21lICovXG59XG5cblt0eXBlPXNlYXJjaF0ge1xuICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpICovXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4OyAvKiBDb3JyZWN0IHRoZSBvdXRsaW5lIHN0eWxlIGluIFNhZmFyaSAqL1xufVxuXG5bdHlwZT1zZWFyY2hdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuW3R5cGU9c2VhcmNoXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7IC8qIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUyAqL1xufVxuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvOyAvKiBJbnRlcm5ldCBFeHBsb3JlciAxMSsgKi9cbiAgcmVzaXplOiB2ZXJ0aWNhbDsgLyogU3BlY2lmeSB0ZXh0YXJlYSByZXNpemFiaWxpdHkgKi9cbn1cblxuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgZm9udDogaW5oZXJpdDsgLyogU3BlY2lmeSBmb250IGluaGVyaXRhbmNlIG9mIGZvcm0gZWxlbWVudHMgKi9cbn1cblxub3B0Z3JvdXAge1xuICBmb250LXdlaWdodDogYm9sZDsgLyogUmVzdG9yZSB0aGUgZm9udCB3ZWlnaHQgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUgKi9cbn1cblxuYnV0dG9uIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7IC8qIEFkZHJlc3MgYG92ZXJmbG93YCBzZXQgdG8gYGhpZGRlbmAgaW4gSUUgOC85LzEwLzExICovXG59XG5cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lOyAvKiBGaXJlZm94IDQwKywgSW50ZXJuZXQgRXhwbG9yZXIgMTEtICovXG59XG5cbi8qIEFwcGx5IGN1cnNvciBwb2ludGVyIHRvIGJ1dHRvbiBlbGVtZW50cyAqL1xuYnV0dG9uLFxuW3R5cGU9YnV0dG9uXSxcblt0eXBlPXJlc2V0XSxcblt0eXBlPXN1Ym1pdF0sXG5bcm9sZT1idXR0b25dIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLyogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIGJvcmRlciBpbiBGaXJlZm94IDQrICovXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1idXR0b25dOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9cmVzZXRdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9c3VibWl0XTo6LW1vei1mb2N1cy1pbm5lciB7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cblxuLyogUmVwbGFjZSBmb2N1cyBzdHlsZSByZW1vdmVkIGluIHRoZSBib3JkZXIgcmVzZXQgYWJvdmUgKi9cbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcblt0eXBlPWJ1dHRvbl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1yZXNldF06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1zdWJtaXRdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0O1xufVxuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuYnV0dG9uLFxuaHRtbCBbdHlwZT1idXR0b25dLFxuW3R5cGU9cmVzZXRdLFxuW3R5cGU9c3VibWl0XSB7XG4gIGFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgKi9cbn1cblxuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuLyogUmVtb3ZlIHRoZSBkZWZhdWx0IGJ1dHRvbiBzdHlsaW5nIGluIGFsbCBicm93c2VycyAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgKi9cbmJ1dHRvbixcbmlucHV0LFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG4vKiBzdHlsZWxpbnQtZW5hYmxlICovXG4vKiBTdHlsZSBzZWxlY3QgbGlrZSBhIHN0YW5kYXJkIGlucHV0ICovXG5zZWxlY3Qge1xuICBhcHBlYXJhbmNlOiBub25lOyAvKiBGaXJlZm94IDM2KyAqL1xufVxuXG5zZWxlY3Q6Oi1tcy1leHBhbmQge1xuICBkaXNwbGF5OiBub25lOyAvKiBJbnRlcm5ldCBFeHBsb3JlciAxMSsgKi9cbn1cblxuc2VsZWN0OjotbXMtdmFsdWUge1xuICBjb2xvcjogY3VycmVudGNvbG9yOyAvKiBJbnRlcm5ldCBFeHBsb3JlciAxMSsgKi9cbn1cblxubGVnZW5kIHtcbiAgZGlzcGxheTogdGFibGU7IC8qIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUgKi9cbiAgbWF4LXdpZHRoOiAxMDAlOyAvKiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFICovXG4gIGNvbG9yOiBpbmhlcml0OyAvKiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUgKi9cbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsgLyogQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRSAqL1xuICBib3JkZXI6IDA7IC8qIENvcnJlY3QgYGNvbG9yYCBub3QgYmVpbmcgaW5oZXJpdGVkIGluIElFIDgvOS8xMC8xMSAqL1xufVxuXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgZm9udDogaW5oZXJpdDsgLyogQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gQ2hyb21lIGFuZCBTYWZhcmkgKi9cbiAgY29sb3I6IGluaGVyaXQ7XG4gIC8qIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkgKi9cbiAgYXBwZWFyYW5jZTogYnV0dG9uO1xufVxuXG46Oi1tcy1jbGVhcixcbjo6LW1zLXJldmVhbCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICMgU3BlY2lmeSBtZWRpYSBlbGVtZW50IHN0eWxlXG4gICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5pbWcge1xuICBib3JkZXItc3R5bGU6IG5vbmU7IC8qIFJlbW92ZSBib3JkZXIgd2hlbiBpbnNpZGUgYGFgIGVsZW1lbnQgaW4gSUUgOC85LzEwICovXG59XG5cbi8qIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEgKi9cbnByb2dyZXNzIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG4vKiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjIEFjY2Vzc2liaWxpdHlcbiAgICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qIEhpZGUgY29udGVudCBmcm9tIHNjcmVlbnMgYnV0IG5vdCBzY3JlZW5yZWFkZXJzICovXG5AbWVkaWEgc2NyZWVuIHtcbiAgW2hpZGRlbn49c2NyZWVuXSB7XG4gICAgZGlzcGxheTogaW5oZXJpdDtcbiAgfVxuICBbaGlkZGVufj1zY3JlZW5dOm5vdCg6YWN0aXZlKTpub3QoOmZvY3VzKTpub3QoOnRhcmdldCkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICAgIGNsaXA6IHJlY3QoMCAwIDAgMCkgIWltcG9ydGFudDtcbiAgfVxufVxuLyogU3BlY2lmeSB0aGUgcHJvZ3Jlc3MgY3Vyc29yIG9mIHVwZGF0aW5nIGVsZW1lbnRzICovXG5bYXJpYS1idXN5PXRydWVdIHtcbiAgY3Vyc29yOiBwcm9ncmVzcztcbn1cblxuLyogU3BlY2lmeSB0aGUgcG9pbnRlciBjdXJzb3Igb2YgdHJpZ2dlciBlbGVtZW50cyAqL1xuW2FyaWEtY29udHJvbHNdIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4vKiBTcGVjaWZ5IHRoZSB1bnN0eWxlZCBjdXJzb3Igb2YgZGlzYWJsZWQsIG5vdC1lZGl0YWJsZSwgb3Igb3RoZXJ3aXNlIGlub3BlcmFibGUgZWxlbWVudHMgKi9cblthcmlhLWRpc2FibGVkPXRydWVdIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6IFwiSGVsdmV0aWNhIE5ldWVcIiwgSGVsdmV0aWNhLCBcIlBpbmdGYW5nIFNDXCIsIFwiSGlyYWdpbm8gU2FucyBHQlwiLCBcIk1pY3Jvc29mdCBZYUhlaVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICAvKiDmipfplK/pvb8gKi9cbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG59XG5cbnVsIGxpLFxudWwgb2wge1xuICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG5pbWcsXG5lbWJlZCxcbm9iamVjdCxcbmF1ZGlvLFxudmlkZW8ge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLnZjaS1wc3QtYWJzLCAudmNpLXBzdC1jbSwgLnZjaS1wc3QtbSwgLnZjaS1wc3QtYyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuLnZjaS1wc3Qtcmx2IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4udmNpLXRvcC0wIHtcbiAgdG9wOiAwO1xufVxuXG4udmNpLWJvdHRvbS0wIHtcbiAgYm90dG9tOiAwO1xufVxuXG4udmNpLWxlZnQtMCB7XG4gIGxlZnQ6IDA7XG59XG5cbi52Y2ktcmlnaHQtMCB7XG4gIHJpZ2h0OiAwO1xufVxuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuLnZjaS1wc3QtYyB7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuXG4udmNpLXBzdC1tIHtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cblxuLnZjaS1wc3QtY20ge1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cblxuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuLnZjaS1mbGV4LCAudmNpLWZsZXgtYywgLnZjaS1mbGV4LWNtLCAudmNpLWZsZXgtY2MsIC52Y2ktZmxleC1jY20sIC52Y2ktZmxleC1jY2J0LCAudmNpLWZsZXgtY2NiLCAudmNpLWZsZXgtY2N0LCAudmNpLWZsZXgtcmMsIC52Y2ktZmxleC1ybSwgLnZjaS1mbGV4LXJjbSwgLnZjaS1mbGV4LXJtYiwgLnZjaS1mbGV4LXJtciwgLnZjaS1mbGV4LXJtbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi52Y2ktZmxleC1ybSwgLnZjaS1mbGV4LXJjbSwgLnZjaS1mbGV4LXJtYiwgLnZjaS1mbGV4LXJtciwgLnZjaS1mbGV4LXJtbCB7XG4gIC8qIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgKi9cbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnZjaS1mbGV4LXJtbCB7XG4gIC8qIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgKi9cbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuXG4udmNpLWZsZXgtcm1yIHtcbiAgLyogc3R5bGVsaW50LWRpc2FibGUtbGluZSAqL1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG4udmNpLWZsZXgtcm1iIHtcbiAgLyogc3R5bGVsaW50LWRpc2FibGUtbGluZSAqL1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi52Y2ktZmxleC1yY20ge1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZS1saW5lICovXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4udmNpLWZsZXgtcmMge1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZS1saW5lICovXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4udmNpLWZsZXgtYywgLnZjaS1mbGV4LWNtLCAudmNpLWZsZXgtY2MsIC52Y2ktZmxleC1jY20sIC52Y2ktZmxleC1jY2J0LCAudmNpLWZsZXgtY2NiLCAudmNpLWZsZXgtY2N0IHtcbiAgLyogc3R5bGVsaW50LWRpc2FibGUtbGluZSAqL1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4udmNpLWZsZXgtY2MsIC52Y2ktZmxleC1jY20sIC52Y2ktZmxleC1jY2J0LCAudmNpLWZsZXgtY2NiLCAudmNpLWZsZXgtY2N0IHtcbiAgLyogc3R5bGVsaW50LWRpc2FibGUtbGluZSAqL1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4udmNpLWZsZXgtY2N0IHtcbiAgLyogc3R5bGVsaW50LWRpc2FibGUtbGluZSAqL1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG5cbi52Y2ktZmxleC1jY2Ige1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZS1saW5lICovXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG59XG5cbi52Y2ktZmxleC1jY2J0IHtcbiAgLyogc3R5bGVsaW50LWRpc2FibGUtbGluZSAqL1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi52Y2ktZmxleC1jY20ge1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZS1saW5lICovXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4udmNpLWZsZXgtY20ge1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZS1saW5lICovXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4udmNpLWZsZXgtZmlsbCB7XG4gIGZsZXg6IDEgMSBhdXRvO1xufVxuXG4udmNpLWZsZXgtMC0wIHtcbiAgZmxleDogMCAwIGF1dG87XG59XG5cbi52Y2ktZmxleC0xLTAge1xuICBmbGV4OiAxIDAgYXV0bztcbn1cblxuLnZjaS1mbCB7XG4gIGZsb2F0OiBsZWZ0O1xufVxuXG4udmNpLWZyIHtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuXG4udmNpLWNsZWFyOjphZnRlciwgLnZjaS1jbGVhci1lbGVtZW50IHtcbiAgY2xlYXI6IGJvdGg7XG4gICp6b29tOiAxO1xufVxuXG4udmNpLWNsZWFyOjphZnRlciwgLnZjaS1jbGVhci1lbGVtZW50IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG59XG5cbi52Y2ktY2xlYXI6OmFmdGVyIHtcbiAgY29udGVudDogXCIgXCI7XG59XG5cbi52Y2ktdy01MCB7XG4gIHdpZHRoOiA1MCUgIWltcG9ydGFudDtcbn1cblxuLnZjaS13LTEwMCwgLnZjaS1zaXplLTEwMCB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi52Y2ktdy1hdXRvLCAudmNpLXNpemUtYXV0byB7XG4gIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi52Y2ktdy1zY3JlZW4sIC52Y2ktc2NyZWVuIHtcbiAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7XG59XG5cbi52Y2ktaC01MCB7XG4gIGhlaWdodDogNTAlICFpbXBvcnRhbnQ7XG59XG5cbi52Y2ktaC0xMDAsIC52Y2ktc2l6ZS0xMDAge1xuICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbn1cblxuLnZjaS1oLWF1dG8sIC52Y2ktc2l6ZS1hdXRvIHtcbiAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi52Y2ktaC1zY3JlZW4sIC52Y2ktc2NyZWVuIHtcbiAgaGVpZ2h0OiAxMDB2aCAhaW1wb3J0YW50O1xufVxuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuLnZjaS1tYXJnaW4tYXV0by14IHtcbiAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi52Y2ktdGMtYWxwaGEsIC52Y2ktdGMtc2NhbGUsIC52Y2ktdHJhbnNpdGlvbi1zbG93LCAudmNpLXRyYW5zaXRpb24tcXVpY2ssIC52Y2ktdHJhbnNpdGlvbiB7XG4gIHRyYW5zaXRpb246IDAuMnMgZWFzZS1pbi1vdXQ7XG59XG5cbi52Y2ktdHJhbnNpdGlvbi1xdWljayB7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMTJzO1xufVxuXG4udmNpLXRyYW5zaXRpb24tc2xvdyB7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMzVzO1xufVxuXG5Aa2V5ZnJhbWVzIHZjaS1hbXQtcm90YXRlIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cbi52Y2ktYW10LXJvdGF0ZSB7XG4gIGFuaW1hdGlvbjogdmNpLWFtdC1yb3RhdGUgMzZzIGluZmluaXRlIGJvdGggbGluZWFyO1xufVxuXG5Aa2V5ZnJhbWVzIHZjaS1hbXQtZmFkZSB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgfVxufVxuLnZjaS1hbXQtZmFkZSB7XG4gIGFuaW1hdGlvbjogdmNpLWFtdC1mYWRlIDJzIGluZmluaXRlIGJvdGggbGluZWFyIGFsdGVybmF0ZS1yZXZlcnNlO1xufVxuXG4udmNpLWJnLWNvdmVyIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xufVxuXG4udmNpLWJnLWZpbGwge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xufVxuXG4udmNpLWJnLWNvbnRhaW4ge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbn1cblxuLyoqXG4gIOe6v+aAp+a4kOWPmOaWh+Wtl1xuICAkYW5nbGU6IOa4kOWPmOinkuW6pjowfjM2MGRlZztcbiAgJGNvbG9yOiDpu5jorqTlrZfkvZPpopzoibLvvIznlKjkuo7kuI3mlK/mjIHmuJDlj5jmloflrZfnmoTmg4XlhrXkuIs7XG4gICRjb2xvcnM6IOminOiJsuaVsOe7hOS+i+WmgjogKCNjY2MsICNjY2MsICNjY2MpIOaIluiAhSAoI2NjYyAxMCUsICNjY2MgNTAlLCAjY2NjKVxuICovXG4vKipcbiAg5paH5a2X6YCJ5Lit6IOM5pmvXG4gICRiZyAg6YCJ5Lit6IOM5pmvIOm7mOiupDogIzFhNzRiZVxuICAkY29sb3IgIOmAieS4reaWh+Wtl+minOiJsiDpu5jorqQ6ICNmZmZcbiAqL1xuLnZjaS1mcy0xMiB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cblxuLnZjaS1mcy0xMyB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn1cblxuLnZjaS1mcy0xNCB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cblxuLnZjaS1mcy0xNSB7XG4gIGZvbnQtc2l6ZTogMTVweDtcbn1cblxuLnZjaS1mcy0xNiB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cblxuLnZjaS1mcy0xNyB7XG4gIGZvbnQtc2l6ZTogMTdweDtcbn1cblxuLnZjaS1mcy0xOCB7XG4gIGZvbnQtc2l6ZTogMThweDtcbn1cblxuLnZjaS1mcy0xOSB7XG4gIGZvbnQtc2l6ZTogMTlweDtcbn1cblxuLnZjaS1mcy0yMCB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbn1cblxuLnZjaS1mcy0yMSB7XG4gIGZvbnQtc2l6ZTogMjFweDtcbn1cblxuLnZjaS1mcy0yMiB7XG4gIGZvbnQtc2l6ZTogMjJweDtcbn1cblxuLnZjaS1mcy0yMyB7XG4gIGZvbnQtc2l6ZTogMjNweDtcbn1cblxuLnZjaS1mcy0yNCB7XG4gIGZvbnQtc2l6ZTogMjRweDtcbn1cblxuLnZjaS1mcy0yNSB7XG4gIGZvbnQtc2l6ZTogMjVweDtcbn1cblxuLnZjaS1mcy0yNiB7XG4gIGZvbnQtc2l6ZTogMjZweDtcbn1cblxuLnZjaS1mcy0yNyB7XG4gIGZvbnQtc2l6ZTogMjdweDtcbn1cblxuLnZjaS1mcy0yOCB7XG4gIGZvbnQtc2l6ZTogMjhweDtcbn1cblxuLnZjaS1mcy0yOSB7XG4gIGZvbnQtc2l6ZTogMjlweDtcbn1cblxuLnZjaS1mcy0zMCB7XG4gIGZvbnQtc2l6ZTogMzBweDtcbn1cblxuLnZjaS1mcy0zMSB7XG4gIGZvbnQtc2l6ZTogMzFweDtcbn1cblxuLnZjaS1mdy1ub3JtYWwge1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG4udmNpLWZ3LWJvbGQge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLnZjaS1mdy1ib2xkZXIge1xuICBmb250LXdlaWdodDogYm9sZGVyO1xufVxuXG4udmNpLWZzLW5vcm1hbCB7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuLnZjaS1mcy1pdCB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLnZjaS1mcy1vYiB7XG4gIGZvbnQtc3R5bGU6IG9ibGlxdWU7XG59XG5cbi52Y2ktdGEtbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi52Y2ktdGEtciB7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4udmNpLXRhLWMge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi52Y2ktZm9udC1zdHJva2Uge1xuICB0ZXh0LXNoYWRvdzogMXB4IDAgMXB4ICMzMzMsIC0xcHggMCAxcHggIzMzMywgMCAtMXB4IDFweCAjMzMzLCAwIDFweCAxcHggIzMzMztcbn1cblxuLnZjaS10by1lIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnZjaS1hZnRlcjo6YWZ0ZXIsXG4udmNpLWJlZm9yZTo6YmVmb3JlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGNvbnRlbnQ6IFwiIFwiO1xufVxuXG4udmNpLXRjLWFscGhhLCAudmNpLXRjLXNjYWxlLCAudmNpLXRyYW5zaXRpb24sIC52Y2ktdHJhbnNpdGlvbi1xdWljaywgLnZjaS10cmFuc2l0aW9uLXNsb3cge1xuICB0cmFuc2l0aW9uOiAwLjJzIGVhc2UtaW4tb3V0O1xufVxuXG4udmNpLXRyYW5zaXRpb24tcXVpY2sge1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjEycztcbn1cblxuLnZjaS10cmFuc2l0aW9uLXNsb3cge1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjM1cztcbn1cblxuLnZjaS10Yy1zY2FsZSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xMnM7XG59XG4udmNpLXRjLXNjYWxlOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KSByb3RhdGVaKDApO1xufVxuLnZjaS10Yy1zY2FsZTphY3RpdmUge1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuOSkgcm90YXRlWigwKTtcbn1cblxuLnZjaS10Yy1hbHBoYSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xMnM7XG59XG4udmNpLXRjLWFscGhhOmhvdmVyIHtcbiAgb3BhY2l0eTogMC45O1xufVxuLnZjaS10Yy1hbHBoYTphY3RpdmUge1xuICBvcGFjaXR5OiAwLjg7XG59XG5cbi52Y2ktcG9pbnRlci1ldmVudHMtYXV0byB7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuXG4udmNpLXBvaW50ZXItZXZlbnRzLW5vbmUge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn0iLCIvKiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjIEdsb2JhbCBzZWxlY3RvcnNcbiAgICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdy15OiBzY3JvbGw7IC8qIEFsbCBicm93c2VycyB3aXRob3V0IG92ZXJsYXlpbmcgc2Nyb2xsYmFycyAqL1xuICB0ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiBQcmV2ZW50IGFkanVzdG1lbnRzIG9mIGZvbnQgc2l6ZSBhZnRlciBvcmllbnRhdGlvbiBjaGFuZ2VzIGluIGlPUyAqL1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG4gIHRhYi1zaXplOiA0O1xufVxuXG4qLFxuOjpiZWZvcmUsXG46OmFmdGVyIHtcbiAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgLyogU2V0IGBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0YCB0byBhbGwgZWxlbWVudHMgYW5kIHBzZXVkbyBlbGVtZW50cyAqL1xufVxuXG46OmJlZm9yZSxcbjo6YWZ0ZXIge1xuICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQ7IC8qIEluaGVyaXQgdGV4dC1kZWNvcmF0aW9uIGFuZCB2ZXJ0aWNhbCBhbGlnbiB0byA6OmJlZm9yZSBhbmQgOjphZnRlciBwc2V1ZG8gZWxlbWVudHMgKi9cbiAgdmVydGljYWwtYWxpZ246IGluaGVyaXQ7XG59XG5cbioge1xuICBwYWRkaW5nOiAwOyAvKiBSZXNldCBgcGFkZGluZ2AgYW5kIGBtYXJnaW5gIG9mIGFsbCBlbGVtZW50cyAqL1xuICBtYXJnaW46IDA7XG59XG5cbi8qICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICMgR2VuZXJhbCBlbGVtZW50c1xuICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuaHIge1xuICBoZWlnaHQ6IDA7IC8qIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3ggKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7IC8qIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFICovXG59XG5cbmRldGFpbHMsXG5tYWluIHtcbiAgZGlzcGxheTogYmxvY2s7IC8qIFJlbmRlciB0aGUgYG1haW5gIGVsZW1lbnQgY29uc2lzdGVudGx5IGluIElFLiAqL1xufVxuXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogbGlzdC1pdGVtOyAvKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMgKi9cbn1cblxuc21hbGwge1xuICBmb250LXNpemU6IDgwJTsgLyogU2V0IGZvbnQtc2l6ZSB0byA4MCUgaW4gYHNtYWxsYCBlbGVtZW50cyAqL1xufVxuXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmU7IC8qIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFICovXG59XG5cbmFiYnJbdGl0bGVdIHtcbiAgLyogQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIElFLCBPcGVyYSwgYW5kIFNhZmFyaSAqL1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7IC8qIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBDaHJvbWUgNTcgKi9cbn1cblxuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAvKiBSZW1vdmUgdGhlIGdyYXkgYmFja2dyb3VuZCBvbiBhY3RpdmUgbGlua3MgaW4gSUUgMTAgKi9cbn1cblxuYTphY3RpdmUsXG5hOmhvdmVyIHtcbiAgb3V0bGluZS13aWR0aDogMDsgLyogUmVtb3ZlIHRoZSBvdXRsaW5lIHdoZW4gaG92ZXJpbmcgaW4gYWxsIGJyb3dzZXJzICovXG59XG5cbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgc2Fucy1zZXJpZjsgLyogU3BlY2lmeSB0aGUgZm9udCBmYW1pbHkgb2YgY29kZSBlbGVtZW50cyAqL1xufVxuXG5wcmUge1xuICBmb250LXNpemU6IDFlbTsgLyogQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzICovXG59XG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZGVyOyAvKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpICovXG59XG5cbi8qIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL3VucnV0aGxlc3MvNDEzOTMwICovXG5zdWIsXG5zdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG4vKiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjIEZvcm1zXG4gICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5pbnB1dCB7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG5cbi8qIFJlcGxhY2UgcG9pbnRlciBjdXJzb3IgaW4gZGlzYWJsZWQgZWxlbWVudHMgKi9cbltkaXNhYmxlZF0ge1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cblt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87IC8qIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZSAqL1xufVxuXG5bdHlwZT1cInNlYXJjaFwiXSB7XG4gIGFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogQ29ycmVjdCB0aGUgb2RkIGFwcGVhcmFuY2UgaW4gQ2hyb21lIGFuZCBTYWZhcmkgKi9cbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7IC8qIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpICovXG59XG5cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICBhcHBlYXJhbmNlOiBub25lOyAvKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MgKi9cbn1cblxudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bzsgLyogSW50ZXJuZXQgRXhwbG9yZXIgMTErICovXG4gIHJlc2l6ZTogdmVydGljYWw7IC8qIFNwZWNpZnkgdGV4dGFyZWEgcmVzaXphYmlsaXR5ICovXG59XG5cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGZvbnQ6IGluaGVyaXQ7IC8qIFNwZWNpZnkgZm9udCBpbmhlcml0YW5jZSBvZiBmb3JtIGVsZW1lbnRzICovXG59XG5cbm9wdGdyb3VwIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7IC8qIFJlc3RvcmUgdGhlIGZvbnQgd2VpZ2h0IHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlICovXG59XG5cbmJ1dHRvbiB7XG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvKiBBZGRyZXNzIGBvdmVyZmxvd2Agc2V0IHRvIGBoaWRkZW5gIGluIElFIDgvOS8xMC8xMSAqL1xufVxuXG5idXR0b24sXG5zZWxlY3Qge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgLyogRmlyZWZveCA0MCssIEludGVybmV0IEV4cGxvcmVyIDExLSAqL1xufVxuXG4vKiBBcHBseSBjdXJzb3IgcG9pbnRlciB0byBidXR0b24gZWxlbWVudHMgKi9cbmJ1dHRvbixcblt0eXBlPVwiYnV0dG9uXCJdLFxuW3R5cGU9XCJyZXNldFwiXSxcblt0eXBlPVwic3VibWl0XCJdLFxuW3JvbGU9XCJidXR0b25cIl0ge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4vKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsgKi9cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG4vKiBSZXBsYWNlIGZvY3VzIHN0eWxlIHJlbW92ZWQgaW4gdGhlIGJvcmRlciByZXNldCBhYm92ZSAqL1xuYnV0dG9uOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XG59XG5cbi8qIHN0eWxlbGludC1kaXNhYmxlICovXG5idXR0b24sXG5odG1sIFt0eXBlPVwiYnV0dG9uXCJdLCAvKiBQcmV2ZW50IGEgV2ViS2l0IGJ1ZyB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2AgYW5kIGB2aWRlb2Bjb250cm9scyBpbiBBbmRyb2lkIDQgKi9cblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIGFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgKi9cbn1cblxuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuXG4vKiBSZW1vdmUgdGhlIGRlZmF1bHQgYnV0dG9uIHN0eWxpbmcgaW4gYWxsIGJyb3dzZXJzICovXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuYnV0dG9uLFxuaW5wdXQsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbi8qIHN0eWxlbGludC1lbmFibGUgKi9cblxuLyogU3R5bGUgc2VsZWN0IGxpa2UgYSBzdGFuZGFyZCBpbnB1dCAqL1xuc2VsZWN0IHtcbiAgYXBwZWFyYW5jZTogbm9uZTsgLyogRmlyZWZveCAzNisgKi9cbn1cblxuc2VsZWN0OjotbXMtZXhwYW5kIHtcbiAgZGlzcGxheTogbm9uZTsgLyogSW50ZXJuZXQgRXhwbG9yZXIgMTErICovXG59XG5cbnNlbGVjdDo6LW1zLXZhbHVlIHtcbiAgY29sb3I6IGN1cnJlbnRjb2xvcjsgLyogSW50ZXJuZXQgRXhwbG9yZXIgMTErICovXG59XG5cbmxlZ2VuZCB7XG4gIGRpc3BsYXk6IHRhYmxlOyAvKiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFICovXG4gIG1heC13aWR0aDogMTAwJTsgLyogQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRSAqL1xuICBjb2xvcjogaW5oZXJpdDsgLyogQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFICovXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUgKi9cbiAgYm9yZGVyOiAwOyAvKiBDb3JyZWN0IGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBJRSA4LzkvMTAvMTEgKi9cbn1cblxuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gIGZvbnQ6IGluaGVyaXQ7IC8qIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIENocm9tZSBhbmQgU2FmYXJpICovXG4gIGNvbG9yOiBpbmhlcml0O1xuXG4gIC8qIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkgKi9cbiAgYXBwZWFyYW5jZTogYnV0dG9uO1xufVxuXG4vLyBSZW1vdmUgZGVmYXVsdCBwYXNzd29yZCBpY29uIGluIEVkZ2VIVE1MICgjNTM3KVxuOjotbXMtY2xlYXIsXG46Oi1tcy1yZXZlYWwge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjIFNwZWNpZnkgbWVkaWEgZWxlbWVudCBzdHlsZVxuICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lOyAvKiBSZW1vdmUgYm9yZGVyIHdoZW4gaW5zaWRlIGBhYCBlbGVtZW50IGluIElFIDgvOS8xMCAqL1xufVxuXG4vKiBBZGQgdGhlIGNvcnJlY3QgdmVydGljYWwgYWxpZ25tZW50IGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhICovXG5wcm9ncmVzcyB7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIyBBY2Nlc3NpYmlsaXR5XG4gICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEhpZGUgY29udGVudCBmcm9tIHNjcmVlbnMgYnV0IG5vdCBzY3JlZW5yZWFkZXJzICovXG5AbWVkaWEgc2NyZWVuIHtcbiAgW2hpZGRlbn49XCJzY3JlZW5cIl0ge1xuICAgIGRpc3BsYXk6IGluaGVyaXQ7XG4gIH1cblxuICBbaGlkZGVufj1cInNjcmVlblwiXTpub3QoOmFjdGl2ZSk6bm90KDpmb2N1cyk6bm90KDp0YXJnZXQpIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgICBjbGlwOiByZWN0KDAgMCAwIDApICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLyogU3BlY2lmeSB0aGUgcHJvZ3Jlc3MgY3Vyc29yIG9mIHVwZGF0aW5nIGVsZW1lbnRzICovXG5bYXJpYS1idXN5PVwidHJ1ZVwiXSB7XG4gIGN1cnNvcjogcHJvZ3Jlc3M7XG59XG5cbi8qIFNwZWNpZnkgdGhlIHBvaW50ZXIgY3Vyc29yIG9mIHRyaWdnZXIgZWxlbWVudHMgKi9cblthcmlhLWNvbnRyb2xzXSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLyogU3BlY2lmeSB0aGUgdW5zdHlsZWQgY3Vyc29yIG9mIGRpc2FibGVkLCBub3QtZWRpdGFibGUsIG9yIG90aGVyd2lzZSBpbm9wZXJhYmxlIGVsZW1lbnRzICovXG5bYXJpYS1kaXNhYmxlZD1cInRydWVcIl0ge1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG4iLCJAaW1wb3J0IFwicmVzc1wiO1xuXG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6IFwiSGVsdmV0aWNhIE5ldWVcIiwgSGVsdmV0aWNhLCBcIlBpbmdGYW5nIFNDXCIsIFwiSGlyYWdpbm8gU2FucyBHQlwiLFxuICAgIFwiTWljcm9zb2Z0IFlhSGVpXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE0cHg7XG5cbiAgLyog5oqX6ZSv6b2/ICovXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG51bCB7XG4gIGxpLFxuICBvbCB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgfVxufVxuXG5pbWcsXG5lbWJlZCxcbm9iamVjdCxcbmF1ZGlvLFxudmlkZW8ge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bztcbn1cbiIsIi8vIOe7neWvueWumuS9jVxuLnZjaS1wc3QtYWJzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4vLyDnm7jlr7nlrprkvY1cbi52Y2ktcHN0LXJsdiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnZjaS10b3AtMCB7XG4gIHRvcDogMDtcbn1cblxuLnZjaS1ib3R0b20tMCB7XG4gIGJvdHRvbTogMDtcbn1cblxuLnZjaS1sZWZ0LTAge1xuICBsZWZ0OiAwO1xufVxuXG4udmNpLXJpZ2h0LTAge1xuICByaWdodDogMDtcbn1cblxuLyogc3R5bGVsaW50LWRpc2FibGUgKi9cbi8vIOWumuS9jSAtIOawtOW5s+WxheS4rVxuLnZjaS1wc3QtYyB7XG4gIEBleHRlbmQgLnZjaS1wc3QtYWJzO1xuXG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xufVxuXG4vLyDlrprkvY0gLSDlnoLnm7TlsYXkuK1cbi52Y2ktcHN0LW0ge1xuICBAZXh0ZW5kIC52Y2ktcHN0LWFicztcblxuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG4vLyDlrprkvY0gLSDmsLTlubPlnoLnm7TlnYflsYXkuK1cbi52Y2ktcHN0LWNtIHtcbiAgQGV4dGVuZCAudmNpLXBzdC1hYnM7XG5cbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG5cbi8qIHN0eWxlbGludC1lbmFibGUgKi9cbiIsIi8vIGZsZXjluIPlsYBcbi52Y2ktZmxleCB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi8vIOihjOaWueW