@openmrs/esm-app-shell 10.0.1-pre.5364 → 10.0.1-pre.5378
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +3 -4
- package/dist/{059d7f67a4472848.js → 4b0690128b8fdb0d.js} +3 -3
- package/dist/4b0690128b8fdb0d.js.map +1 -0
- package/dist/8902686ba69a49d0.css +1 -0
- package/dist/8902686ba69a49d0.css.map +1 -0
- package/dist/index.html +1 -1
- package/dist/{openmrs.1de9a37a3af47e71.js → openmrs.876dc0d85cb0c4c8.js} +3 -3
- package/dist/{openmrs.1de9a37a3af47e71.js.map → openmrs.876dc0d85cb0c4c8.js.map} +1 -1
- package/lib/{76867e4b2d56a5fa.js → 31c953cde42b57cf.js} +2 -2
- package/lib/openmrs.js +6 -6
- package/package.json +3 -3
- package/src/browser-targets.test.ts +8 -1
- package/vitest.config.ts +3 -0
- package/dist/059d7f67a4472848.js.map +0 -1
- package/dist/89f6ddc939f58fea.css +0 -1
- package/dist/89f6ddc939f58fea.css.map +0 -1
|
@@ -16,7 +16,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
|
|
|
16
16
|
},
|
|
17
17
|
"../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../framework/esm-styleguide/dist/datepicker/datepicker.module.scss"(module, __webpack_exports__, __webpack_require__) {
|
|
18
18
|
"use strict";
|
|
19
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n \"default\": () => (__rspack_default_export)\n});\n/* import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__rspack_import_0 = __webpack_require__(\"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__rspack_import_0);\n/* import */ var _node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(\"../../../node_modules/css-loader/dist/runtime/api.js\");\n/* import */ var _node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_1);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__rspack_import_0_default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".Dl6B3\\\\+z7iSDloToxFNPpGg\\\\=\\\\= {\\n --cds-layout-size-height-context: var(--cds-layout-size-height-xs, 1.5rem);\\n --cds-layout-size-height: var(--cds-layout-size-height-context);\\n}\\n\\n.hUd58YauFSAKmUj4LteOPw\\\\=\\\\= {\\n --cds-layout-size-height: var(--cds-layout-size-height-context, var(--cds-layout-size-height-xs, 1.5rem));\\n}\\n\\n.lXkuPCiQMrg2Hy\\\\+cX1fYHg\\\\=\\\\= {\\n --cds-layout-size-height-min: var(--cds-layout-size-height-xs, 1.5rem);\\n}\\n\\n.DqJ9j0ab4hdCQevtHxj3uQ\\\\=\\\\= {\\n --cds-layout-size-height-max: var(--cds-layout-size-height-xs, 1.5rem);\\n}\\n\\n.hzvTaPHMAr0O8UzjTYVmPA\\\\=\\\\= {\\n --cds-layout-size-height-context: var(--cds-layout-size-height-sm, 2rem);\\n --cds-layout-size-height: var(--cds-layout-size-height-context);\\n}\\n\\n.MmGePL4sdXw\\\\+NQspOf4cqA\\\\=\\\\= {\\n --cds-layout-size-height: var(--cds-layout-size-height-context, var(--cds-layout-size-height-sm, 2rem));\\n}\\n\\n.YUKHVuv\\\\+i6a34aaDNME7Ag\\\\=\\\\= {\\n --cds-layout-size-height-min: var(--cds-layout-size-height-sm, 2rem);\\n}\\n\\n.Gh3YHt2Mkh8XMCMOECmoNA\\\\=\\\\= {\\n --cds-layout-size-height-max: var(--cds-layout-size-height-sm, 2rem);\\n}\\n\\n.sW5sNIpIkkhqXN1c2P76Qw\\\\=\\\\= {\\n --cds-layout-size-height-context: var(--cds-layout-size-height-md, 2.5rem);\\n --cds-layout-size-height: var(--cds-layout-size-height-context);\\n}\\n\\n._8DNYCHscOJwj1YL3wmy49g\\\\=\\\\= {\\n --cds-layout-size-height: var(--cds-layout-size-height-context, var(--cds-layout-size-height-md, 2.5rem));\\n}\\n\\n.Z3AlZ33zKEmoBl98AMihRQ\\\\=\\\\= {\\n --cds-layout-size-height-min: var(--cds-layout-size-height-md, 2.5rem);\\n}\\n\\n.mB99vz\\\\+pF6QLPFulDO76Pg\\\\=\\\\= {\\n --cds-layout-size-height-max: var(--cds-layout-size-height-md, 2.5rem);\\n}\\n\\n.hT--WYZ4JEBnZUrzNVI2mQ\\\\=\\\\= {\\n --cds-layout-size-height-context: var(--cds-layout-size-height-lg, 3rem);\\n --cds-layout-size-height: var(--cds-layout-size-height-context);\\n}\\n\\n.Bbo8n11sbU02a4LEGk2ELQ\\\\=\\\\= {\\n --cds-layout-size-height: var(--cds-layout-size-height-context, var(--cds-layout-size-height-lg, 3rem));\\n}\\n\\n.vYf8r08PTVNO-gz2zmdBBA\\\\=\\\\= {\\n --cds-layout-size-height-min: var(--cds-layout-size-height-lg, 3rem);\\n}\\n\\n.bQBfEY2jb12gGAbDcVmEfg\\\\=\\\\= {\\n --cds-layout-size-height-max: var(--cds-layout-size-height-lg, 3rem);\\n}\\n\\n._5ZFPLB-r0cF\\\\+EgcYFZLFGg\\\\=\\\\= {\\n --cds-layout-size-height-context: var(--cds-layout-size-height-xl, 4rem);\\n --cds-layout-size-height: var(--cds-layout-size-height-context);\\n}\\n\\n._6xR72Q\\\\+OnwHYKFZG1rofrQ\\\\=\\\\= {\\n --cds-layout-size-height: var(--cds-layout-size-height-context, var(--cds-layout-size-height-xl, 4rem));\\n}\\n\\n.RQuiNDiXkhrXMA94vtmpNA\\\\=\\\\= {\\n --cds-layout-size-height-min: var(--cds-layout-size-height-xl, 4rem);\\n}\\n\\n.nStjrplO4t1OY3jIf3-7fQ\\\\=\\\\= {\\n --cds-layout-size-height-max: var(--cds-layout-size-height-xl, 4rem);\\n}\\n\\n.-phAqf5qlL3hTaJhaOiZsQ\\\\=\\\\= {\\n --cds-layout-size-height-context: var(--cds-layout-size-height-2xl, 5rem);\\n --cds-layout-size-height: var(--cds-layout-size-height-context);\\n}\\n\\n._2yVrwKicSkavYQwFJcLEHw\\\\=\\\\= {\\n --cds-layout-size-height: var(--cds-layout-size-height-context, var(--cds-layout-size-height-2xl, 5rem));\\n}\\n\\n.Pt6NHQV3Diuii\\\\+Pq5Xy45g\\\\=\\\\= {\\n --cds-layout-size-height-min: var(--cds-layout-size-height-2xl, 5rem);\\n}\\n\\n.w1BOUEe-4FJS0qxBvKjxrA\\\\=\\\\= {\\n --cds-layout-size-height-max: var(--cds-layout-size-height-2xl, 5rem);\\n}\\n\\n._6EuALkpTeVVT\\\\+tArqYQDmg\\\\=\\\\= {\\n --cds-layout-density-padding-inline-context: var(--cds-layout-density-padding-inline-condensed, 0.5rem);\\n --cds-layout-density-padding-inline: var(--cds-layout-density-padding-inline-context);\\n}\\n\\n.qwfm\\\\+sPn29Q0be1E1\\\\+0WZg\\\\=\\\\= {\\n --cds-layout-density-padding-inline: var(--cds-layout-density-padding-inline-context, var(--cds-layout-density-padding-inline-condensed, 0.5rem));\\n}\\n\\n.l1e616QeLHXtUPrIj6iPbg\\\\=\\\\= {\\n --cds-layout-density-padding-inline-min: var(--cds-layout-density-padding-inline-condensed, 0.5rem);\\n}\\n\\n._4ftezWzt-fFxpoUrgae5Ag\\\\=\\\\= {\\n --cds-layout-density-padding-inline-max: var(--cds-layout-density-padding-inline-condensed, 0.5rem);\\n}\\n\\n.KGsxiv4kL8Q0hLVG--TfMg\\\\=\\\\= {\\n --cds-layout-density-padding-inline-context: var(--cds-layout-density-padding-inline-normal, 1rem);\\n --cds-layout-density-padding-inline: var(--cds-layout-density-padding-inline-context);\\n}\\n\\n.NFZgOKmjvWD7qwWfmSgZVA\\\\=\\\\= {\\n --cds-layout-density-padding-inline: var(--cds-layout-density-padding-inline-context, var(--cds-layout-density-padding-inline-normal, 1rem));\\n}\\n\\n.ZnRSViA6gXzqk9PrWelh1g\\\\=\\\\= {\\n --cds-layout-density-padding-inline-min: var(--cds-layout-density-padding-inline-normal, 1rem);\\n}\\n\\n.Gi0Ln1iW1wyIqFi2D2TvRA\\\\=\\\\= {\\n --cds-layout-density-padding-inline-max: var(--cds-layout-density-padding-inline-normal, 1rem);\\n}\\n\\n:root {\\n --cds-layout-size-height-xs: 1.5rem;\\n --cds-layout-size-height-sm: 2rem;\\n --cds-layout-size-height-md: 2.5rem;\\n --cds-layout-size-height-lg: 3rem;\\n --cds-layout-size-height-xl: 4rem;\\n --cds-layout-size-height-2xl: 5rem;\\n --cds-layout-size-height-min: 0px;\\n --cds-layout-size-height-max: 999999999px;\\n --cds-layout-density-padding-inline-condensed: 0.5rem;\\n --cds-layout-density-padding-inline-normal: 1rem;\\n --cds-layout-density-padding-inline-min: 0px;\\n --cds-layout-density-padding-inline-max: 999999999px;\\n}\\n\\n:root {\\n --cds-layer: var(--cds-layer-01, #f4f4f4);\\n --cds-layer-active: var(--cds-layer-active-01, #c6c6c6);\\n --cds-layer-background: var(--cds-layer-background-01, #ffffff);\\n --cds-layer-hover: var(--cds-layer-hover-01, #e8e8e8);\\n --cds-layer-selected: var(--cds-layer-selected-01, #e0e0e0);\\n --cds-layer-selected-hover: var(--cds-layer-selected-hover-01, #d1d1d1);\\n --cds-layer-accent: var(--cds-layer-accent-01, #e0e0e0);\\n --cds-layer-accent-hover: var(--cds-layer-accent-hover-01, #d1d1d1);\\n --cds-layer-accent-active: var(--cds-layer-accent-active-01, #a8a8a8);\\n --cds-field: var(--cds-field-01, #f4f4f4);\\n --cds-field-hover: var(--cds-field-hover-01, #e8e8e8);\\n --cds-border-subtle: var(--cds-border-subtle-00, #e0e0e0);\\n --cds-border-subtle-selected: var(--cds-border-subtle-selected-01, #c6c6c6);\\n --cds-border-strong: var(--cds-border-strong-01, #8d8d8d);\\n --cds-border-tile: var(--cds-border-tile-01, #c6c6c6);\\n}\\n\\n.ImV2tmEe0CYn6jSdurzBsA\\\\=\\\\= {\\n --cds-layer: var(--cds-layer-01, #f4f4f4);\\n --cds-layer-active: var(--cds-layer-active-01, #c6c6c6);\\n --cds-layer-background: var(--cds-layer-background-01, #ffffff);\\n --cds-layer-hover: var(--cds-layer-hover-01, #e8e8e8);\\n --cds-layer-selected: var(--cds-layer-selected-01, #e0e0e0);\\n --cds-layer-selected-hover: var(--cds-layer-selected-hover-01, #d1d1d1);\\n --cds-layer-accent: var(--cds-layer-accent-01, #e0e0e0);\\n --cds-layer-accent-hover: var(--cds-layer-accent-hover-01, #d1d1d1);\\n --cds-layer-accent-active: var(--cds-layer-accent-active-01, #a8a8a8);\\n --cds-field: var(--cds-field-01, #f4f4f4);\\n --cds-field-hover: var(--cds-field-hover-01, #e8e8e8);\\n --cds-border-subtle: var(--cds-border-subtle-00, #e0e0e0);\\n --cds-border-subtle-selected: var(--cds-border-subtle-selected-01, #c6c6c6);\\n --cds-border-strong: var(--cds-border-strong-01, #8d8d8d);\\n --cds-border-tile: var(--cds-border-tile-01, #c6c6c6);\\n}\\n\\n.F2N5YMbWFppugkj8IAq9gQ\\\\=\\\\= {\\n --cds-layer: var(--cds-layer-02, #ffffff);\\n --cds-layer-active: var(--cds-layer-active-02, #c6c6c6);\\n --cds-layer-background: var(--cds-layer-background-02, #f4f4f4);\\n --cds-layer-hover: var(--cds-layer-hover-02, #e8e8e8);\\n --cds-layer-selected: var(--cds-layer-selected-02, #e0e0e0);\\n --cds-layer-selected-hover: var(--cds-layer-selected-hover-02, #d1d1d1);\\n --cds-layer-accent: var(--cds-layer-accent-02, #e0e0e0);\\n --cds-layer-accent-hover: var(--cds-layer-accent-hover-02, #d1d1d1);\\n --cds-layer-accent-active: var(--cds-layer-accent-active-02, #a8a8a8);\\n --cds-field: var(--cds-field-02, #ffffff);\\n --cds-field-hover: var(--cds-field-hover-02, #e8e8e8);\\n --cds-border-subtle: var(--cds-border-subtle-01, #c6c6c6);\\n --cds-border-subtle-selected: var(--cds-border-subtle-selected-02, #c6c6c6);\\n --cds-border-strong: var(--cds-border-strong-02, #8d8d8d);\\n --cds-border-tile: var(--cds-border-tile-02, #a8a8a8);\\n}\\n\\n.S\\\\+lgZPasqy3PdrHJTaHFcA\\\\=\\\\= {\\n --cds-layer: var(--cds-layer-03, #f4f4f4);\\n --cds-layer-active: var(--cds-layer-active-03, #c6c6c6);\\n --cds-layer-background: var(--cds-layer-background-03, #ffffff);\\n --cds-layer-hover: var(--cds-layer-hover-03, #e8e8e8);\\n --cds-layer-selected: var(--cds-layer-selected-03, #e0e0e0);\\n --cds-layer-selected-hover: var(--cds-layer-selected-hover-03, #d1d1d1);\\n --cds-layer-accent: var(--cds-layer-accent-03, #e0e0e0);\\n --cds-layer-accent-hover: var(--cds-layer-accent-hover-03, #d1d1d1);\\n --cds-layer-accent-active: var(--cds-layer-accent-active-03, #a8a8a8);\\n --cds-field: var(--cds-field-03, #f4f4f4);\\n --cds-field-hover: var(--cds-field-hover-03, #e8e8e8);\\n --cds-border-subtle: var(--cds-border-subtle-02, #e0e0e0);\\n --cds-border-subtle-selected: var(--cds-border-subtle-selected-03, #c6c6c6);\\n --cds-border-strong: var(--cds-border-strong-03, #8d8d8d);\\n --cds-border-tile: var(--cds-border-tile-03, #c6c6c6);\\n}\\n\\n.ImV2tmEe0CYn6jSdurzBsA\\\\=\\\\=.wvqDrnu0\\\\+2YCq3f8MzocYA\\\\=\\\\= {\\n background-color: var(--cds-layer-background);\\n}\\n\\n.F2N5YMbWFppugkj8IAq9gQ\\\\=\\\\=.wvqDrnu0\\\\+2YCq3f8MzocYA\\\\=\\\\= {\\n background-color: var(--cds-layer-background);\\n}\\n\\n.S\\\\+lgZPasqy3PdrHJTaHFcA\\\\=\\\\=.wvqDrnu0\\\\+2YCq3f8MzocYA\\\\=\\\\= {\\n background-color: var(--cds-layer-background);\\n}\\n\\n@keyframes DQg9n64ZoLJ1wGQi-kDQjg\\\\=\\\\= {\\n 0% {\\n opacity: 1;\\n visibility: inherit;\\n }\\n 100% {\\n opacity: 0;\\n visibility: hidden;\\n }\\n}\\n@keyframes j8jn4nb04i1KzBJutZw-RA\\\\=\\\\= {\\n 0% {\\n opacity: 0;\\n visibility: hidden;\\n }\\n 100% {\\n opacity: 1;\\n visibility: inherit;\\n }\\n}\\n@keyframes BQysSey\\\\+0hy\\\\+TP8eMDmw-g\\\\=\\\\= {\\n 0% {\\n opacity: 0.3;\\n transform: scaleX(0);\\n transform-origin: left;\\n }\\n 20% {\\n opacity: 1;\\n transform: scaleX(1);\\n transform-origin: left;\\n }\\n 28% {\\n transform: scaleX(1);\\n transform-origin: right;\\n }\\n 51% {\\n transform: scaleX(0);\\n transform-origin: right;\\n }\\n 58% {\\n transform: scaleX(0);\\n transform-origin: right;\\n }\\n 82% {\\n transform: scaleX(1);\\n transform-origin: right;\\n }\\n 83% {\\n transform: scaleX(1);\\n transform-origin: left;\\n }\\n 96% {\\n transform: scaleX(0);\\n transform-origin: left;\\n }\\n 100% {\\n opacity: 0.3;\\n transform: scaleX(0);\\n transform-origin: left;\\n }\\n}\\n.wJPZDvROrysdln8YIzCJYg\\\\=\\\\=,\\n._13Nk2MHDj1P6sdSQfQ7mwg\\\\=\\\\= {\\n position: absolute;\\n overflow: hidden;\\n padding: 0;\\n border: 0;\\n margin: -1px;\\n block-size: 1px;\\n clip: rect(0, 0, 0, 0);\\n inline-size: 1px;\\n visibility: inherit;\\n white-space: nowrap;\\n}\\n\\n.ylvq4Lt4zwnYlcmnQMLvBA\\\\=\\\\= {\\n display: inline-block;\\n}\\n\\n.ylvq4Lt4zwnYlcmnQMLvBA\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) {\\n position: relative;\\n}\\n\\n.hZsLy0rna5b\\\\+IJZauD\\\\+8cQ\\\\=\\\\= ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= {\\n --cds-popover-background-color: var(--cds-background-inverse, #393939);\\n --cds-popover-text-color: var(--cds-text-inverse, #ffffff);\\n}\\n\\n.nTzLYKI3ElHex80D4PHaxQ\\\\=\\\\= ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n filter: drop-shadow(0 2px 2px rgba(0, 0, 0, 0.2));\\n}\\n\\n.rKeC3aEC\\\\+-XriLuyPSKCJQ\\\\=\\\\= {\\n --cds-popover-offset: 0.625rem;\\n}\\n\\n._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= {\\n position: absolute;\\n z-index: 6000;\\n filter: var(--cds-popover-drop-shadow, none);\\n inset: 0;\\n pointer-events: none;\\n}\\n\\n.XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n --cds-layout-size-height-sm: 2rem;\\n --cds-layout-size-height-md: 2.5rem;\\n --cds-layout-size-height-lg: 3rem;\\n box-sizing: border-box;\\n padding: 0;\\n border: 0;\\n margin: 0;\\n font-family: inherit;\\n font-size: 100%;\\n vertical-align: baseline;\\n position: absolute;\\n z-index: 6000;\\n display: none;\\n border-radius: var(--cds-popover-border-radius, 2px);\\n background-color: var(--cds-popover-background-color, var(--cds-layer));\\n color: var(--cds-popover-text-color, var(--cds-text-primary, #161616));\\n inline-size: max-content;\\n max-inline-size: 23rem;\\n pointer-events: auto;\\n}\\n.XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=.hzvTaPHMAr0O8UzjTYVmPA\\\\=\\\\=, .hzvTaPHMAr0O8UzjTYVmPA\\\\=\\\\= :where(.XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=) {\\n --cds-layout-size-height: var(--cds-layout-size-height-sm);\\n}\\n.XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=.sW5sNIpIkkhqXN1c2P76Qw\\\\=\\\\=, .sW5sNIpIkkhqXN1c2P76Qw\\\\=\\\\= :where(.XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=) {\\n --cds-layout-size-height: var(--cds-layout-size-height-md);\\n}\\n.XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=.hT--WYZ4JEBnZUrzNVI2mQ\\\\=\\\\=, .hT--WYZ4JEBnZUrzNVI2mQ\\\\=\\\\= :where(.XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=) {\\n --cds-layout-size-height: var(--cds-layout-size-height-lg);\\n}\\n.XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= *,\\n.XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= *::before,\\n.XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= *::after {\\n box-sizing: inherit;\\n}\\n\\n.c-lNCeHYdwy\\\\+hrmIBG7KrA\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n display: block;\\n}\\n\\n.XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before {\\n position: absolute;\\n display: none;\\n content: \\\"\\\";\\n}\\n\\n.c-lNCeHYdwy\\\\+hrmIBG7KrA\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before {\\n display: block;\\n}\\n\\n.rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=.rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n position: absolute;\\n z-index: 6000;\\n display: none;\\n background-color: var(--cds-popover-background-color, var(--cds-layer));\\n will-change: transform;\\n}\\n\\n.rKeC3aEC\\\\+-XriLuyPSKCJQ\\\\=\\\\=.c-lNCeHYdwy\\\\+hrmIBG7KrA\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n display: block;\\n}\\n\\n.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=.rKeC3aEC\\\\+-XriLuyPSKCJQ\\\\=\\\\=.c-lNCeHYdwy\\\\+hrmIBG7KrA\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n display: block;\\n}\\n\\n.ewK\\\\+lVkva7XVD2pqZD5niw\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n display: none;\\n}\\n\\n.QJVS37uhvEoMkYbufG41xw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-block-end: 0;\\n inset-inline-start: 50%;\\n transform: translate(-50%, calc(100% + var(--cds-popover-offset, 0rem)));\\n}\\n\\n[dir=rtl] .QJVS37uhvEoMkYbufG41xw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n transform: translate(50%, calc(100% + var(--cds-popover-offset, 0rem)));\\n}\\n\\n.mfBz6l\\\\+srVLE9TY6NJeJ5A\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n._6BH6tiZglnjxgi0cwzNtQw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-block-end: 0;\\n inset-inline-start: 0;\\n transform: translate(calc(-1 * var(--cds-popover-offset, 0rem)), calc(100% + var(--cds-popover-offset, 0rem)));\\n}\\n\\n[dir=rtl] .mfBz6l\\\\+srVLE9TY6NJeJ5A\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n[dir=rtl] ._6BH6tiZglnjxgi0cwzNtQw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-inline-end: 0;\\n inset-inline-start: initial;\\n}\\n\\n._75VFVAYGs7DIrUIfmxPzFA\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n.fGaQH010Pt2FL3eGNKbDig\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-block-end: 0;\\n inset-inline-end: 0;\\n transform: translate(var(--cds-popover-offset, 0rem), calc(100% + var(--cds-popover-offset, 0rem)));\\n}\\n\\n.fGaQH010Pt2FL3eGNKbDig\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.RH-bzFqbczrIkSGQ90kJ1A\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n inset-block-end: 0;\\n inset-inline-end: 0;\\n inset-inline-start: auto;\\n}\\n\\n._6BH6tiZglnjxgi0cwzNtQw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n inset-block-end: 0;\\n inset-inline-end: auto;\\n inset-inline-start: 0;\\n transform: translate(50%, calc(var(--cds-popover-offset, 0rem)));\\n}\\n\\n.bJdXOwxfGm98IhfMsXxb4Q\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n inset-block-end: 0;\\n inset-inline-end: auto;\\n inset-inline-start: 0;\\n transform: translate(50%, calc(-1 * var(--cds-popover-offset, 0rem)));\\n}\\n\\n[dir=rtl] ._75VFVAYGs7DIrUIfmxPzFA\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n[dir=rtl] .fGaQH010Pt2FL3eGNKbDig\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-inline-start: 0;\\n}\\n\\n.QJVS37uhvEoMkYbufG41xw\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before,\\n.mfBz6l\\\\+srVLE9TY6NJeJ5A\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before,\\n._6BH6tiZglnjxgi0cwzNtQw\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before,\\n._75VFVAYGs7DIrUIfmxPzFA\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before,\\n.fGaQH010Pt2FL3eGNKbDig\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before {\\n block-size: var(--cds-popover-offset, 0rem);\\n inset-block-start: 0;\\n inset-inline: 0;\\n transform: translateY(-100%);\\n}\\n\\n.QJVS37uhvEoMkYbufG41xw\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.mfBz6l\\\\+srVLE9TY6NJeJ5A\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n._6BH6tiZglnjxgi0cwzNtQw\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n._75VFVAYGs7DIrUIfmxPzFA\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.fGaQH010Pt2FL3eGNKbDig\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n block-size: var(--cds-popover-caret-height, 0.375rem);\\n clip-path: polygon(0% 100%, 50% 0%, 100% 100%);\\n inline-size: var(--cds-popover-caret-width, 0.75rem);\\n inset-block-end: 0;\\n inset-inline-start: 50%;\\n transform: translate(-50%, var(--cds-popover-offset, 0rem));\\n}\\n\\n[dir=rtl] .QJVS37uhvEoMkYbufG41xw\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n[dir=rtl] .mfBz6l\\\\+srVLE9TY6NJeJ5A\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n[dir=rtl] ._6BH6tiZglnjxgi0cwzNtQw\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n[dir=rtl] ._75VFVAYGs7DIrUIfmxPzFA\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n[dir=rtl] .fGaQH010Pt2FL3eGNKbDig\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n transform: translate(50%, var(--cds-popover-offset, 0rem));\\n}\\n\\n.QJVS37uhvEoMkYbufG41xw\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.mfBz6l\\\\+srVLE9TY6NJeJ5A\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n._6BH6tiZglnjxgi0cwzNtQw\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n._75VFVAYGs7DIrUIfmxPzFA\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.fGaQH010Pt2FL3eGNKbDig\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n block-size: var(--cds-popover-caret-height, 0.375rem);\\n clip-path: polygon(0% 100%, 50% 0%, 100% 100%);\\n inline-size: var(--cds-popover-caret-width, 0.75rem);\\n}\\n\\n.fUfuOcye07cThPN-3Iustw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-block-start: 0;\\n inset-inline-start: 50%;\\n transform: translate(-50%, calc(-100% - var(--cds-popover-offset, 0rem)));\\n}\\n\\n[dir=rtl] .fUfuOcye07cThPN-3Iustw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n transform: translate(50%, calc(-100% - var(--cds-popover-offset, 0rem)));\\n}\\n\\n._2a2YNNezGaAufHqaYcB2Hw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n.bJdXOwxfGm98IhfMsXxb4Q\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-block-start: 0;\\n inset-inline-start: 0;\\n transform: translate(calc(-1 * var(--cds-popover-offset, 0rem)), calc(-100% - var(--cds-popover-offset, 0rem)));\\n}\\n\\n[dir=rtl] ._2a2YNNezGaAufHqaYcB2Hw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n[dir=rtl] .bJdXOwxfGm98IhfMsXxb4Q\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-inline-end: 0;\\n inset-inline-start: initial;\\n}\\n\\n._8mvGDIXojIobkv0-moj\\\\+5w\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n.RH-bzFqbczrIkSGQ90kJ1A\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-block-start: 0;\\n inset-inline-end: 0;\\n transform: translate(var(--cds-popover-offset, 0rem), calc(-100% - var(--cds-popover-offset, 0rem)));\\n}\\n\\n[dir=rtl] ._8mvGDIXojIobkv0-moj\\\\+5w\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n[dir=rtl] .RH-bzFqbczrIkSGQ90kJ1A\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-inline-start: 0;\\n}\\n\\n.fUfuOcye07cThPN-3Iustw\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before,\\n._2a2YNNezGaAufHqaYcB2Hw\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before,\\n.bJdXOwxfGm98IhfMsXxb4Q\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before,\\n._8mvGDIXojIobkv0-moj\\\\+5w\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before,\\n.RH-bzFqbczrIkSGQ90kJ1A\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before {\\n block-size: var(--cds-popover-offset, 0rem);\\n inset-block-end: 0;\\n inset-inline: 0;\\n transform: translateY(100%);\\n}\\n\\n.fUfuOcye07cThPN-3Iustw\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n._2a2YNNezGaAufHqaYcB2Hw\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.bJdXOwxfGm98IhfMsXxb4Q\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n._8mvGDIXojIobkv0-moj\\\\+5w\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.RH-bzFqbczrIkSGQ90kJ1A\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n block-size: var(--cds-popover-caret-height, 0.375rem);\\n clip-path: polygon(0% 0%, 50% 100%, 100% 0%);\\n inline-size: var(--cds-popover-caret-width, 0.75rem);\\n inset-block-start: 0;\\n inset-inline-start: 50%;\\n transform: translate(-50%, calc(-1 * var(--cds-popover-offset, 0rem)));\\n}\\n\\n[dir=rtl] .fUfuOcye07cThPN-3Iustw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n[dir=rtl] ._2a2YNNezGaAufHqaYcB2Hw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n[dir=rtl] .bJdXOwxfGm98IhfMsXxb4Q\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n[dir=rtl] ._8mvGDIXojIobkv0-moj\\\\+5w\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n[dir=rtl] .RH-bzFqbczrIkSGQ90kJ1A\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n transform: translate(50%, calc(-1 * var(--cds-popover-offset, 0rem)));\\n}\\n\\n.fUfuOcye07cThPN-3Iustw\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n._2a2YNNezGaAufHqaYcB2Hw\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.bJdXOwxfGm98IhfMsXxb4Q\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n._8mvGDIXojIobkv0-moj\\\\+5w\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.RH-bzFqbczrIkSGQ90kJ1A\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n block-size: var(--cds-popover-caret-height, 0.375rem);\\n clip-path: polygon(0% 0%, 50% 100%, 100% 0%);\\n inline-size: var(--cds-popover-caret-width, 0.75rem);\\n}\\n\\n.VnvuPfeB\\\\+7a2-uvXTnkNig\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-block-start: 50%;\\n inset-inline-start: 100%;\\n transform: translate(var(--cds-popover-offset, 0rem), -50%);\\n}\\n\\n.R0wT1V7csafFqjP6Y9XB0A\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n.qAh6UaNuBm8ALfX4q7LPVA\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-block-start: 50%;\\n inset-inline-start: 100%;\\n transform: translate(var(--cds-popover-offset, 0rem), calc(0.5 * var(--cds-popover-offset, 0rem) * -1 - 16px));\\n}\\n\\n.sVqA-uCdZXUMmLnX-famRw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n.FixLq\\\\+OBObgxNmufxjKJ5Q\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-block-end: 50%;\\n inset-inline-start: 100%;\\n transform: translate(var(--cds-popover-offset, 0rem), calc(0.5 * var(--cds-popover-offset, 0rem) + 16px));\\n}\\n\\n[dir=rtl] .VnvuPfeB\\\\+7a2-uvXTnkNig\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n[dir=rtl] .sVqA-uCdZXUMmLnX-famRw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n[dir=rtl] .FixLq\\\\+OBObgxNmufxjKJ5Q\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n[dir=rtl] .R0wT1V7csafFqjP6Y9XB0A\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n[dir=rtl] .qAh6UaNuBm8ALfX4q7LPVA\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-inline-end: 100%;\\n inset-inline-start: initial;\\n}\\n\\n.VnvuPfeB\\\\+7a2-uvXTnkNig\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before,\\n.R0wT1V7csafFqjP6Y9XB0A\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before,\\n.qAh6UaNuBm8ALfX4q7LPVA\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before,\\n.sVqA-uCdZXUMmLnX-famRw\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before,\\n.FixLq\\\\+OBObgxNmufxjKJ5Q\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before {\\n inline-size: var(--cds-popover-offset, 0rem);\\n inset-block: 0;\\n inset-inline-start: 0;\\n transform: translateX(-100%);\\n}\\n\\n.VnvuPfeB\\\\+7a2-uvXTnkNig\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.R0wT1V7csafFqjP6Y9XB0A\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.qAh6UaNuBm8ALfX4q7LPVA\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.sVqA-uCdZXUMmLnX-famRw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.FixLq\\\\+OBObgxNmufxjKJ5Q\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n block-size: var(--cds-popover-caret-width, 0.75rem);\\n clip-path: polygon(0% 50%, 100% 0%, 100% 100%);\\n inline-size: var(--cds-popover-caret-height, 0.375rem);\\n inset-block-start: 50%;\\n inset-inline-start: 100%;\\n transform: translate(calc(var(--cds-popover-offset, 0rem) - 100%), -50%);\\n}\\n\\n[dir=rtl] .VnvuPfeB\\\\+7a2-uvXTnkNig\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n[dir=rtl] .R0wT1V7csafFqjP6Y9XB0A\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n[dir=rtl] .qAh6UaNuBm8ALfX4q7LPVA\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n[dir=rtl] .sVqA-uCdZXUMmLnX-famRw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n[dir=rtl] .FixLq\\\\+OBObgxNmufxjKJ5Q\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n inset-inline-end: 100%;\\n inset-inline-start: initial;\\n}\\n\\n.VnvuPfeB\\\\+7a2-uvXTnkNig\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.R0wT1V7csafFqjP6Y9XB0A\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.qAh6UaNuBm8ALfX4q7LPVA\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.sVqA-uCdZXUMmLnX-famRw\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.FixLq\\\\+OBObgxNmufxjKJ5Q\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n block-size: var(--cds-popover-caret-width, 0.75rem);\\n clip-path: polygon(0% 50%, 100% 0%, 100% 100%);\\n inline-size: var(--cds-popover-caret-height, 0.375rem);\\n}\\n\\n.MfEhB3iPF8pQmBJwg9qCmQ\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-block-start: 50%;\\n inset-inline-end: 100%;\\n transform: translate(calc(-1 * var(--cds-popover-offset, 0rem) + 0.1px), -50%);\\n}\\n\\n.xuN90XVOkmppYLSD0iWrfA\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n.DnY\\\\+lPSokbYbD\\\\+9KsNra4w\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-block-start: 50%;\\n inset-inline-end: 100%;\\n transform: translate(calc(-1 * var(--cds-popover-offset, 0rem)), calc(-0.5 * var(--cds-popover-offset, 0rem) - 16px));\\n}\\n\\n.qHRdFf1Tu\\\\+nuaFZ4tx5ccw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n._9vFzrU6K70CqTjcFCmJYSg\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-block-end: 50%;\\n inset-inline-end: 100%;\\n transform: translate(calc(-1 * var(--cds-popover-offset, 0rem)), calc(0.5 * var(--cds-popover-offset, 0rem) + 16px));\\n}\\n\\n[dir=rtl] .MfEhB3iPF8pQmBJwg9qCmQ\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n[dir=rtl] .qHRdFf1Tu\\\\+nuaFZ4tx5ccw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n[dir=rtl] ._9vFzrU6K70CqTjcFCmJYSg\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n[dir=rtl] .xuN90XVOkmppYLSD0iWrfA\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=,\\n[dir=rtl] .DnY\\\\+lPSokbYbD\\\\+9KsNra4w\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n inset-inline-end: initial;\\n inset-inline-start: 100%;\\n}\\n\\n.MfEhB3iPF8pQmBJwg9qCmQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before,\\n.xuN90XVOkmppYLSD0iWrfA\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before,\\n.DnY\\\\+lPSokbYbD\\\\+9KsNra4w\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before,\\n.qHRdFf1Tu\\\\+nuaFZ4tx5ccw\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before,\\n._9vFzrU6K70CqTjcFCmJYSg\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\=::before {\\n inline-size: var(--cds-popover-offset, 0rem);\\n inset-block: 0;\\n inset-inline-end: 0;\\n transform: translateX(100%);\\n}\\n\\n.MfEhB3iPF8pQmBJwg9qCmQ\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.xuN90XVOkmppYLSD0iWrfA\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.DnY\\\\+lPSokbYbD\\\\+9KsNra4w\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.qHRdFf1Tu\\\\+nuaFZ4tx5ccw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n._9vFzrU6K70CqTjcFCmJYSg\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n block-size: var(--cds-popover-caret-width, 0.75rem);\\n clip-path: polygon(0% 0%, 100% 50%, 0% 100%);\\n inline-size: var(--cds-popover-caret-height, 0.375rem);\\n inset-block-start: 50%;\\n inset-inline-end: 100%;\\n transform: translate(calc(-1 * var(--cds-popover-offset, 0rem) + 100%), -50%);\\n}\\n\\n[dir=rtl] .MfEhB3iPF8pQmBJwg9qCmQ\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n[dir=rtl] .xuN90XVOkmppYLSD0iWrfA\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n[dir=rtl] .DnY\\\\+lPSokbYbD\\\\+9KsNra4w\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n[dir=rtl] .qHRdFf1Tu\\\\+nuaFZ4tx5ccw\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n[dir=rtl] ._9vFzrU6K70CqTjcFCmJYSg\\\\=\\\\=:not(.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\=) > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n inset-inline-end: initial;\\n inset-inline-start: 100%;\\n}\\n\\n.MfEhB3iPF8pQmBJwg9qCmQ\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.xuN90XVOkmppYLSD0iWrfA\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.DnY\\\\+lPSokbYbD\\\\+9KsNra4w\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n.qHRdFf1Tu\\\\+nuaFZ4tx5ccw\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\=,\\n._9vFzrU6K70CqTjcFCmJYSg\\\\=\\\\=.Xve65yBwp8TvtFtY1lPyIQ\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= > .rKfmyLjuNfXFpq0Z2\\\\+ODWw\\\\=\\\\= {\\n block-size: var(--cds-popover-caret-width, 0.75rem);\\n clip-path: polygon(0% 0%, 100% 50%, 0% 100%);\\n inline-size: var(--cds-popover-caret-height, 0.375rem);\\n}\\n\\n.ewK\\\\+lVkva7XVD2pqZD5niw\\\\=\\\\= > ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= > .XfV0HQl24Sp\\\\+zHQ6XUQk7Q\\\\=\\\\= {\\n border-radius: 0;\\n}\\n\\n.ewK\\\\+lVkva7XVD2pqZD5niw\\\\=\\\\= ._3tMDsMgl4pDETqHUmoPmrg\\\\=\\\\= {\\n will-change: filter;\\n}\\n\\n.x8eIIeULnOgUvOJhPc9wbA\\\\=\\\\= {\\n box-sizing: border-box;\\n padding: 0;\\n border: 0;\\n margin: 0;\\n font-family: inherit;\\n font-size: 100%;\\n vertical-align: baseline;\\n display: inline-block;\\n padding: 0;\\n border: 0;\\n appearance: none;\\n background: none;\\n cursor: pointer;\\n text-align: start;\\n inline-size: 100%;\\n position: relative;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n block-size: 2rem;\\n inline-size: 2rem;\\n}\\n.x8eIIeULnOgUvOJhPc9wbA\\\\=\\\\= *,\\n.x8eIIeULnOgUvOJhPc9wbA\\\\=\\\\= *::before,\\n.x8eIIeULnOgUvOJhPc9wbA\\\\=\\\\= *::after {\\n box-sizing: inherit;\\n}\\n.x8eIIeULnOgUvOJhPc9wbA\\\\=\\\\=::-moz-focus-inner {\\n border: 0;\\n}\\n.x8eIIeULnOgUvOJhPc9wbA\\\\=\\\\=:focus {\\n outline: 2px solid var(--cds-focus, #0f62fe);\\n outline-offset: -2px;\\n}\\n@media screen and (prefers-contrast) {\\n .x8eIIeULnOgUvOJhPc9wbA\\\\=\\\\=:focus {\\n outline-style: dotted;\\n }\\n}\\n.x8eIIeULnOgUvOJhPc9wbA\\\\=\\\\=:hover {\\n background-color: var(--cds-layer-hover);\\n}\\n\\n.ewK\\\\+lVkva7XVD2pqZD5niw\\\\=\\\\=.c-lNCeHYdwy\\\\+hrmIBG7KrA\\\\=\\\\= .x8eIIeULnOgUvOJhPc9wbA\\\\=\\\\= {\\n background: var(--cds-layer);\\n box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);\\n}\\n\\n.ewK\\\\+lVkva7XVD2pqZD5niw\\\\=\\\\=.c-lNCeHYdwy\\\\+hrmIBG7KrA\\\\=\\\\= .x8eIIeULnOgUvOJhPc9wbA\\\\=\\\\=:not(:focus)::after {\\n position: absolute;\\n z-index: 6001;\\n background: var(--cds-layer);\\n block-size: 2px;\\n content: \\\"\\\";\\n inline-size: 100%;\\n inset-block-end: 0;\\n}\\n\\n.x8eIIeULnOgUvOJhPc9wbA\\\\=\\\\= svg {\\n fill: var(--cds-icon-primary, #161616);\\n}\\n\\n.ONFcndatW\\\\+ipRc9SxeDElA\\\\=\\\\= {\\n --cds-popover-offset: 12px;\\n}\\n\\n.azpB1\\\\+4fKhq0ksZ\\\\+rrq6Og\\\\=\\\\= {\\n font-size: var(--cds-body-01-font-size, 0.875rem);\\n font-weight: var(--cds-body-01-font-weight, 400);\\n line-height: var(--cds-body-01-line-height, 1.42857);\\n letter-spacing: var(--cds-body-01-letter-spacing, 0.16px);\\n padding: var(--cds-tooltip-padding-block, 1rem) var(--cds-tooltip-padding-inline, 1rem);\\n max-inline-size: 18rem;\\n overflow-wrap: break-word;\\n}\\n\\n.wxjK-tSQo1yoyRVqF1z0OQ\\\\=\\\\= {\\n --cds-tooltip-padding-block: 0.125rem;\\n --cds-popover-caret-width: 0.5rem;\\n --cds-popover-caret-height: 0.25rem;\\n --cds-popover-offset: 0.5rem;\\n}\\n\\n.wxjK-tSQo1yoyRVqF1z0OQ\\\\=\\\\= .azpB1\\\\+4fKhq0ksZ\\\\+rrq6Og\\\\=\\\\= {\\n font-size: var(--cds-body-compact-01-font-size, 0.875rem);\\n font-weight: var(--cds-body-compact-01-font-weight, 400);\\n line-height: var(--cds-body-compact-01-line-height, 1.28572);\\n letter-spacing: var(--cds-body-compact-01-letter-spacing, 0.16px);\\n}\\n\\n.k2X7tJYp4ncD\\\\+q3Od-z8rg\\\\=\\\\= {\\n box-sizing: border-box;\\n padding: 0;\\n border: 0;\\n margin: 0;\\n font-family: inherit;\\n font-size: 100%;\\n vertical-align: baseline;\\n display: inline-block;\\n padding: 0;\\n border: 0;\\n appearance: none;\\n background: none;\\n cursor: pointer;\\n text-align: start;\\n inline-size: 100%;\\n border-radius: 0;\\n border-block-end: 1px dotted var(--cds-border-strong);\\n color: var(--cds-text-primary, #161616);\\n}\\n.k2X7tJYp4ncD\\\\+q3Od-z8rg\\\\=\\\\= *,\\n.k2X7tJYp4ncD\\\\+q3Od-z8rg\\\\=\\\\= *::before,\\n.k2X7tJYp4ncD\\\\+q3Od-z8rg\\\\=\\\\= *::after {\\n box-sizing: inherit;\\n}\\n.k2X7tJYp4ncD\\\\+q3Od-z8rg\\\\=\\\\=::-moz-focus-inner {\\n border: 0;\\n}\\n\\n.k2X7tJYp4ncD\\\\+q3Od-z8rg\\\\=\\\\=:focus {\\n outline: 1px solid var(--cds-focus, #0f62fe);\\n border-block-end-color: var(--cds-border-interactive, #0f62fe);\\n}\\n@media screen and (prefers-contrast) {\\n .k2X7tJYp4ncD\\\\+q3Od-z8rg\\\\=\\\\=:focus {\\n outline-style: dotted;\\n }\\n}\\n\\n.k2X7tJYp4ncD\\\\+q3Od-z8rg\\\\=\\\\=:hover {\\n border-block-end-color: var(--cds-border-interactive, #0f62fe);\\n}\\n\\n.UJKLFGSuKXgXgRVOrO9Qew\\\\=\\\\= {\\n font-size: var(--cds-body-01-font-size, 0.875rem);\\n font-weight: var(--cds-body-01-font-weight, 400);\\n line-height: var(--cds-body-01-line-height, 1.42857);\\n letter-spacing: var(--cds-body-01-letter-spacing, 0.16px);\\n padding: 0.5rem 1rem;\\n max-inline-size: 11rem;\\n text-wrap: auto;\\n word-break: break-word;\\n}\\n\\n.WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\= {\\n --cds-layout-size-height-local: clamp(max(var(--cds-layout-size-height-min), var(--cds-layout-size-height-xs)), var(--cds-layout-size-height, var(--cds-layout-size-height-lg)), min(var(--cds-layout-size-height-max), var(--cds-layout-size-height-2xl)));\\n --cds-layout-density-padding-inline-local: clamp(var(--cds-layout-density-padding-inline-min), var(--cds-layout-density-padding-inline, var(--cds-layout-density-padding-inline-normal)), var(--cds-layout-density-padding-inline-max));\\n --temp-1lh: (\\n var(--cds-body-compact-01-line-height, 1.28572) * 1em\\n );\\n --temp-expressive-1lh: (\\n var(--cds-body-compact-02-line-height, 1.375) * 1em\\n );\\n --temp-padding-block-max: calc(\\n (var(--cds-layout-size-height-lg) - var(--temp-1lh)) / 2 -\\n 0.0625rem\\n );\\n box-sizing: border-box;\\n padding: 0;\\n border: 0;\\n margin: 0;\\n font-family: inherit;\\n font-size: 100%;\\n vertical-align: baseline;\\n font-size: var(--cds-body-compact-01-font-size, 0.875rem);\\n font-weight: var(--cds-body-compact-01-font-weight, 400);\\n line-height: var(--cds-body-compact-01-line-height, 1.28572);\\n letter-spacing: var(--cds-body-compact-01-letter-spacing, 0.16px);\\n position: relative;\\n display: inline-flex;\\n flex-shrink: 0;\\n justify-content: space-between;\\n border-radius: 0;\\n margin: 0;\\n cursor: pointer;\\n inline-size: max-content;\\n max-inline-size: 20rem;\\n min-block-size: var(--cds-layout-size-height-local);\\n outline: none;\\n padding-block: min((var(--cds-layout-size-height-local) - var(--temp-1lh)) / 2 - 0.0625rem, var(--temp-padding-block-max));\\n padding-inline: calc(var(--cds-layout-density-padding-inline-local) - 0.0625rem) calc(var(--cds-layout-density-padding-inline-local) * 3 + 1rem - 0.0625rem);\\n text-align: start;\\n text-decoration: none;\\n transition: background 70ms cubic-bezier(0, 0, 0.38, 0.9), box-shadow 70ms cubic-bezier(0, 0, 0.38, 0.9), border-color 70ms cubic-bezier(0, 0, 0.38, 0.9), outline 70ms cubic-bezier(0, 0, 0.38, 0.9);\\n vertical-align: top;\\n}\\n.WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\= *,\\n.WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\= *::before,\\n.WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\= *::after {\\n box-sizing: inherit;\\n}\\n.WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=:disabled, .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=:hover:disabled, .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=:focus:disabled, .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=, .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=:hover, .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=:focus {\\n border-color: var(--cds-button-disabled, #c6c6c6);\\n background: var(--cds-button-disabled, #c6c6c6);\\n box-shadow: none;\\n color: var(--cds-text-on-color-disabled, #8d8d8d);\\n cursor: not-allowed;\\n}\\n.WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= {\\n position: absolute;\\n flex-shrink: 0;\\n block-size: 1rem;\\n inline-size: 1rem;\\n inset-block-start: min((var(--cds-layout-size-height-local) - 1rem) / 2 - 0.0625rem, var(--temp-padding-block-max));\\n inset-inline-end: var(--cds-layout-density-padding-inline-local);\\n margin-block-start: 0.0625rem;\\n}\\n\\n.WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=::-moz-focus-inner {\\n padding: 0;\\n border: 0;\\n}\\n\\n._2dfTLeSts9XPRwvi1pfBag\\\\=\\\\= {\\n border-width: 1px;\\n border-style: solid;\\n border-color: transparent;\\n background-color: var(--cds-button-primary, #0f62fe);\\n color: var(--cds-text-on-color, #ffffff);\\n}\\n._2dfTLeSts9XPRwvi1pfBag\\\\=\\\\=:hover {\\n background-color: var(--cds-button-primary-hover, #0050e6);\\n}\\n._2dfTLeSts9XPRwvi1pfBag\\\\=\\\\=:focus {\\n border-color: var(--cds-button-focus-color, var(--cds-focus, #0f62fe));\\n box-shadow: inset 0 0 0 1px var(--cds-button-focus-color, var(--cds-focus, #0f62fe)), inset 0 0 0 2px var(--cds-background, #ffffff);\\n}\\n._2dfTLeSts9XPRwvi1pfBag\\\\=\\\\=:active {\\n background-color: var(--cds-button-primary-active, #002d9c);\\n}\\n._2dfTLeSts9XPRwvi1pfBag\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\=,\\n._2dfTLeSts9XPRwvi1pfBag\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= path:not([data-icon-path]):not([fill=none]) {\\n fill: currentColor;\\n}\\n._2dfTLeSts9XPRwvi1pfBag\\\\=\\\\=:hover {\\n color: var(--cds-text-on-color, #ffffff);\\n}\\n\\n.tT8Cn7LYWg8omndB06tdqA\\\\=\\\\= {\\n border-width: 1px;\\n border-style: solid;\\n border-color: transparent;\\n background-color: var(--cds-button-secondary, #393939);\\n color: var(--cds-text-on-color, #ffffff);\\n}\\n.tT8Cn7LYWg8omndB06tdqA\\\\=\\\\=:hover {\\n background-color: var(--cds-button-secondary-hover, #474747);\\n}\\n.tT8Cn7LYWg8omndB06tdqA\\\\=\\\\=:focus {\\n border-color: var(--cds-button-focus-color, var(--cds-focus, #0f62fe));\\n box-shadow: inset 0 0 0 1px var(--cds-button-focus-color, var(--cds-focus, #0f62fe)), inset 0 0 0 2px var(--cds-background, #ffffff);\\n}\\n.tT8Cn7LYWg8omndB06tdqA\\\\=\\\\=:active {\\n background-color: var(--cds-button-secondary-active, #6f6f6f);\\n}\\n.tT8Cn7LYWg8omndB06tdqA\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\=,\\n.tT8Cn7LYWg8omndB06tdqA\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= path:not([data-icon-path]):not([fill=none]) {\\n fill: currentColor;\\n}\\n.tT8Cn7LYWg8omndB06tdqA\\\\=\\\\=:hover, .tT8Cn7LYWg8omndB06tdqA\\\\=\\\\=:focus {\\n color: var(--cds-text-on-color, #ffffff);\\n}\\n\\n.CpHouNxq93lnHGdEPYk1IA\\\\=\\\\= {\\n border-width: 1px;\\n border-style: solid;\\n border-color: var(--cds-button-tertiary, #0f62fe);\\n background-color: transparent;\\n color: var(--cds-button-tertiary, #0f62fe);\\n}\\n.CpHouNxq93lnHGdEPYk1IA\\\\=\\\\=:hover {\\n background-color: var(--cds-button-tertiary-hover, #0050e6);\\n}\\n.CpHouNxq93lnHGdEPYk1IA\\\\=\\\\=:focus {\\n border-color: var(--cds-button-focus-color, var(--cds-focus, #0f62fe));\\n box-shadow: inset 0 0 0 1px var(--cds-button-focus-color, var(--cds-focus, #0f62fe)), inset 0 0 0 2px var(--cds-background, #ffffff);\\n}\\n.CpHouNxq93lnHGdEPYk1IA\\\\=\\\\=:active {\\n background-color: var(--cds-button-tertiary-active, #002d9c);\\n}\\n.CpHouNxq93lnHGdEPYk1IA\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\=,\\n.CpHouNxq93lnHGdEPYk1IA\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= path:not([data-icon-path]):not([fill=none]) {\\n fill: currentColor;\\n}\\n.CpHouNxq93lnHGdEPYk1IA\\\\=\\\\=:hover {\\n color: var(--cds-text-inverse, #ffffff);\\n}\\n.CpHouNxq93lnHGdEPYk1IA\\\\=\\\\=:focus {\\n background-color: var(--cds-button-tertiary, #0f62fe);\\n color: var(--cds-text-inverse, #ffffff);\\n}\\n.CpHouNxq93lnHGdEPYk1IA\\\\=\\\\=:active {\\n border-color: transparent;\\n background-color: var(--cds-button-tertiary-active, #002d9c);\\n color: var(--cds-text-inverse, #ffffff);\\n}\\n.CpHouNxq93lnHGdEPYk1IA\\\\=\\\\=:disabled, .CpHouNxq93lnHGdEPYk1IA\\\\=\\\\=:hover:disabled, .CpHouNxq93lnHGdEPYk1IA\\\\=\\\\=:focus:disabled, .CpHouNxq93lnHGdEPYk1IA\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=, .CpHouNxq93lnHGdEPYk1IA\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=:hover, .CpHouNxq93lnHGdEPYk1IA\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=:focus {\\n background: transparent;\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n outline: none;\\n}\\n\\n._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\= {\\n border-width: 1px;\\n border-style: solid;\\n border-color: transparent;\\n background-color: transparent;\\n color: var(--cds-link-primary, #0f62fe);\\n padding-inline-end: calc(var(--cds-layout-density-padding-inline-local) - 0.0625rem);\\n}\\n._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=:hover {\\n background-color: var(--cds-background-hover, rgba(141, 141, 141, 0.12));\\n}\\n._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=:focus {\\n border-color: var(--cds-button-focus-color, var(--cds-focus, #0f62fe));\\n box-shadow: inset 0 0 0 1px var(--cds-button-focus-color, var(--cds-focus, #0f62fe)), inset 0 0 0 2px var(--cds-background, #ffffff);\\n}\\n._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=:active {\\n background-color: var(--cds-background-active, rgba(141, 141, 141, 0.5));\\n}\\n._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\=,\\n._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= path:not([data-icon-path]):not([fill=none]) {\\n fill: currentColor;\\n}\\n._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= {\\n position: static;\\n align-self: center;\\n margin-inline-start: 0.5rem;\\n}\\n._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=:hover, ._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=:active {\\n color: var(--cds-link-primary-hover, #0043ce);\\n}\\n._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=:active {\\n background-color: var(--cds-background-active, rgba(141, 141, 141, 0.5));\\n}\\n._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=:disabled, ._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=:hover:disabled, ._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=:focus:disabled, ._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=, ._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=:hover, ._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=:focus {\\n border-color: transparent;\\n background: transparent;\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n outline: none;\\n}\\n._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=:not([disabled]) svg {\\n fill: var(--cds-icon-primary, #161616);\\n}\\n\\n.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\= {\\n align-items: center;\\n justify-content: center;\\n padding: 0;\\n block-size: var(--cds-layout-size-height-local);\\n inline-size: var(--cds-layout-size-height-local);\\n padding-block-start: 0;\\n}\\n.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\= > :first-child {\\n min-inline-size: 1rem;\\n}\\n.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= {\\n position: static;\\n}\\n.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\=._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\=, .FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\=.oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= {\\n margin: 0;\\n}\\n.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\=.oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\= {\\n padding-inline-end: calc(var(--cds-layout-density-padding-inline-local) - 1rem);\\n}\\n\\n.MFcLhsmOoWwh2GnzKdFnmg\\\\=\\\\=:not(.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\=) {\\n padding-block-start: 1.5px;\\n}\\n\\n.MFcLhsmOoWwh2GnzKdFnmg\\\\=\\\\=:not(.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\=) .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\=,\\n.fQfOefLJ19ucVwCoyePUFw\\\\=\\\\=:not(.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\=) .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\=,\\n.-SISio8tCjrYCON9yvV2sw\\\\=\\\\=:not(.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\=) .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= {\\n margin-block-start: 0;\\n}\\n\\n.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\=.c7mSpizaM5GauGEe-eNxeA\\\\=\\\\= {\\n background: var(--cds-background-selected, rgba(141, 141, 141, 0.2));\\n}\\n\\n.WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\= path[data-icon-path=inner-path] {\\n fill: none;\\n}\\n\\n._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= path:not([data-icon-path]):not([fill=none]),\\n._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= {\\n fill: var(--cds-icon-primary, #161616);\\n}\\n\\n._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\=[disabled] .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= path:not([data-icon-path]):not([fill=none]),\\n._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\=[disabled] .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\=,\\n.WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\=._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=[disabled]:hover .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= {\\n fill: var(--cds-icon-on-color-disabled, #8d8d8d);\\n}\\n\\n._5LZAtFtr-XIa\\\\+J1H8Yv4hQ\\\\=\\\\=.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\=[disabled] {\\n cursor: not-allowed;\\n}\\n\\n.lGy8w5\\\\+S\\\\+zjO5vsbR0KPOA\\\\=\\\\= ._47VP8cPBMiYfHjEdqTmRDw\\\\=\\\\= {\\n cursor: not-allowed;\\n}\\n\\n.lGy8w5\\\\+S\\\\+zjO5vsbR0KPOA\\\\=\\\\= .FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\=[disabled] {\\n pointer-events: none;\\n}\\n\\n._52\\\\+xNaOjvvCbnq1Udabg6A\\\\=\\\\= {\\n border-width: 1px;\\n border-style: solid;\\n border-color: transparent;\\n background-color: var(--cds-button-danger-primary, #da1e28);\\n color: var(--cds-text-on-color, #ffffff);\\n}\\n._52\\\\+xNaOjvvCbnq1Udabg6A\\\\=\\\\=:hover {\\n background-color: var(--cds-button-danger-hover, #b81921);\\n}\\n._52\\\\+xNaOjvvCbnq1Udabg6A\\\\=\\\\=:focus {\\n border-color: var(--cds-button-focus-color, var(--cds-focus, #0f62fe));\\n box-shadow: inset 0 0 0 1px var(--cds-button-focus-color, var(--cds-focus, #0f62fe)), inset 0 0 0 2px var(--cds-background, #ffffff);\\n}\\n._52\\\\+xNaOjvvCbnq1Udabg6A\\\\=\\\\=:active {\\n background-color: var(--cds-button-danger-active, #750e13);\\n}\\n._52\\\\+xNaOjvvCbnq1Udabg6A\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\=,\\n._52\\\\+xNaOjvvCbnq1Udabg6A\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= path:not([data-icon-path]):not([fill=none]) {\\n fill: currentColor;\\n}\\n._52\\\\+xNaOjvvCbnq1Udabg6A\\\\=\\\\=:hover {\\n color: var(--cds-text-on-color, #ffffff);\\n}\\n.KmR3xkrdc5iOxq9YydOP2Q\\\\=\\\\= {\\n border-width: 1px;\\n border-style: solid;\\n border-color: var(--cds-button-danger-secondary, #da1e28);\\n background-color: transparent;\\n color: var(--cds-button-danger-secondary, #da1e28);\\n}\\n.KmR3xkrdc5iOxq9YydOP2Q\\\\=\\\\=:hover {\\n background-color: var(--cds-button-danger-hover, #b81921);\\n}\\n.KmR3xkrdc5iOxq9YydOP2Q\\\\=\\\\=:focus {\\n border-color: var(--cds-button-focus-color, var(--cds-focus, #0f62fe));\\n box-shadow: inset 0 0 0 1px var(--cds-button-focus-color, var(--cds-focus, #0f62fe)), inset 0 0 0 2px var(--cds-background, #ffffff);\\n}\\n.KmR3xkrdc5iOxq9YydOP2Q\\\\=\\\\=:active {\\n background-color: var(--cds-button-danger-active, #750e13);\\n}\\n.KmR3xkrdc5iOxq9YydOP2Q\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\=,\\n.KmR3xkrdc5iOxq9YydOP2Q\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= path:not([data-icon-path]):not([fill=none]) {\\n fill: currentColor;\\n}\\n.KmR3xkrdc5iOxq9YydOP2Q\\\\=\\\\=:hover {\\n border-color: var(--cds-button-danger-hover, #b81921);\\n color: var(--cds-text-on-color, #ffffff);\\n}\\n.KmR3xkrdc5iOxq9YydOP2Q\\\\=\\\\=:focus {\\n background-color: var(--cds-button-danger-primary, #da1e28);\\n color: var(--cds-text-on-color, #ffffff);\\n}\\n.KmR3xkrdc5iOxq9YydOP2Q\\\\=\\\\=:active {\\n border-color: var(--cds-button-danger-active, #750e13);\\n background-color: var(--cds-button-danger-active, #750e13);\\n color: var(--cds-text-on-color, #ffffff);\\n}\\n.KmR3xkrdc5iOxq9YydOP2Q\\\\=\\\\=:disabled, .KmR3xkrdc5iOxq9YydOP2Q\\\\=\\\\=:hover:disabled, .KmR3xkrdc5iOxq9YydOP2Q\\\\=\\\\=:focus:disabled, .KmR3xkrdc5iOxq9YydOP2Q\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=, .KmR3xkrdc5iOxq9YydOP2Q\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=:hover, .KmR3xkrdc5iOxq9YydOP2Q\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=:focus {\\n background: transparent;\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n outline: none;\\n}\\n.oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\= {\\n border-width: 1px;\\n border-style: solid;\\n border-color: transparent;\\n background-color: transparent;\\n color: var(--cds-button-danger-secondary, #da1e28);\\n padding-inline-end: calc(var(--cds-layout-density-padding-inline-local) - 0.0625rem);\\n}\\n.oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\=:hover {\\n background-color: var(--cds-button-danger-hover, #b81921);\\n}\\n.oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\=:focus {\\n border-color: var(--cds-button-focus-color, var(--cds-focus, #0f62fe));\\n box-shadow: inset 0 0 0 1px var(--cds-button-focus-color, var(--cds-focus, #0f62fe)), inset 0 0 0 2px var(--cds-background, #ffffff);\\n}\\n.oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\=:active {\\n background-color: var(--cds-button-danger-active, #750e13);\\n}\\n.oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\=,\\n.oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= path:not([data-icon-path]):not([fill=none]) {\\n fill: currentColor;\\n}\\n.oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= {\\n position: static;\\n margin-inline-start: 0.5rem;\\n}\\n.oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\=:hover, .oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\=:active {\\n color: var(--cds-text-on-color, #ffffff);\\n}\\n.oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\=:disabled, .oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\=:hover:disabled, .oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\=:focus:disabled, .oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=, .oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=:hover, .oKvPDMaRQpbRIWPTJp6wVA\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=:focus {\\n border-color: transparent;\\n background: transparent;\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n outline: none;\\n}\\n\\n.PIgba1sWe85mY4VUaCXJTw\\\\=\\\\= {\\n font-size: var(--cds-body-compact-02-font-size, 1rem);\\n font-weight: var(--cds-body-compact-02-font-weight, 400);\\n line-height: var(--cds-body-compact-02-line-height, 1.375);\\n letter-spacing: var(--cds-body-compact-02-letter-spacing, 0);\\n padding-block: min((var(--cds-layout-size-height-local) - var(--temp-expressive-1lh)) / 2 - 0.0625rem, var(--temp-padding-block-max));\\n}\\n\\n.FYz8lq-N\\\\+PsvsRACBmZIPg\\\\=\\\\=.PIgba1sWe85mY4VUaCXJTw\\\\=\\\\= {\\n padding: 12px 13px;\\n}\\n\\n.WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.PIgba1sWe85mY4VUaCXJTw\\\\=\\\\= .lccaZhlwx0FVzhAFXjxANg\\\\=\\\\= {\\n block-size: 1.25rem;\\n inline-size: 1.25rem;\\n}\\n\\n.s9b5IsETdQZllfuZ4yP2Cw\\\\=\\\\= .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.PIgba1sWe85mY4VUaCXJTw\\\\=\\\\= {\\n max-inline-size: 20rem;\\n}\\n\\n.WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.BQysSey\\\\+0hy\\\\+TP8eMDmw-g\\\\=\\\\= {\\n position: relative;\\n padding: 0;\\n border: none;\\n background: var(--cds-skeleton-background, #e8e8e8);\\n box-shadow: none;\\n pointer-events: none;\\n inline-size: 9.375rem;\\n}\\n.WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.BQysSey\\\\+0hy\\\\+TP8eMDmw-g\\\\=\\\\=:hover, .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.BQysSey\\\\+0hy\\\\+TP8eMDmw-g\\\\=\\\\=:focus, .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.BQysSey\\\\+0hy\\\\+TP8eMDmw-g\\\\=\\\\=:active {\\n border: none;\\n cursor: default;\\n outline: none;\\n}\\n.WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.BQysSey\\\\+0hy\\\\+TP8eMDmw-g\\\\=\\\\=::before {\\n position: absolute;\\n animation: 3000ms ease-in-out BQysSey\\\\+0hy\\\\+TP8eMDmw-g\\\\=\\\\= infinite;\\n background: var(--cds-skeleton-element, #c6c6c6);\\n block-size: 100%;\\n content: \\\"\\\";\\n inline-size: 100%;\\n inset-inline-start: 0;\\n will-change: transform-origin, transform, opacity;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.BQysSey\\\\+0hy\\\\+TP8eMDmw-g\\\\=\\\\=::before {\\n animation: none;\\n }\\n}\\n@media screen and (-ms-high-contrast: active), (forced-colors: active) {\\n .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.BQysSey\\\\+0hy\\\\+TP8eMDmw-g\\\\=\\\\= {\\n background: CanvasText;\\n }\\n .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.BQysSey\\\\+0hy\\\\+TP8eMDmw-g\\\\=\\\\=::before {\\n background: Canvas;\\n forced-color-adjust: none;\\n }\\n}\\n\\n.s9b5IsETdQZllfuZ4yP2Cw\\\\=\\\\= {\\n display: flex;\\n}\\n\\n.RgWeGXMmlyvzDivUg-Ro7Q\\\\=\\\\= {\\n flex-direction: column;\\n}\\n\\n.s9b5IsETdQZllfuZ4yP2Cw\\\\=\\\\= .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\= {\\n inline-size: 100%;\\n max-inline-size: 12.25rem;\\n}\\n.s9b5IsETdQZllfuZ4yP2Cw\\\\=\\\\= .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=:not(:focus) {\\n box-shadow: -0.0625rem 0 0 0 var(--cds-button-separator, #e0e0e0);\\n}\\n.s9b5IsETdQZllfuZ4yP2Cw\\\\=\\\\= .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=:first-of-type:not(:focus) {\\n box-shadow: inherit;\\n}\\n\\n.s9b5IsETdQZllfuZ4yP2Cw\\\\=\\\\= .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=:focus + .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\= {\\n box-shadow: inherit;\\n}\\n\\n.RgWeGXMmlyvzDivUg-Ro7Q\\\\=\\\\= .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=:not(:focus) {\\n box-shadow: 0 -0.0625rem 0 0 var(--cds-button-separator, #e0e0e0);\\n}\\n\\n.RgWeGXMmlyvzDivUg-Ro7Q\\\\=\\\\= .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=:first-of-type:not(:focus) {\\n box-shadow: inherit;\\n}\\n\\n.s9b5IsETdQZllfuZ4yP2Cw\\\\=\\\\= .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\= {\\n box-shadow: -0.0625rem 0 0 0 var(--cds-icon-on-color-disabled, #8d8d8d);\\n}\\n.s9b5IsETdQZllfuZ4yP2Cw\\\\=\\\\= .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=:first-of-type {\\n box-shadow: none;\\n}\\n\\n.RgWeGXMmlyvzDivUg-Ro7Q\\\\=\\\\= .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\= {\\n box-shadow: 0 -0.0625rem 0 0 var(--cds-layer-selected-disabled, #8d8d8d);\\n}\\n.RgWeGXMmlyvzDivUg-Ro7Q\\\\=\\\\= .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.QhKdiWGcpNtT8bcrXG7RNg\\\\=\\\\=:first-of-type {\\n box-shadow: none;\\n}\\n\\n.s9b5IsETdQZllfuZ4yP2Cw\\\\=\\\\= .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=.jJE029CMXQVLfce\\\\+GqTCWA\\\\=\\\\= {\\n border-color: transparent;\\n background-color: transparent;\\n box-shadow: none;\\n}\\n\\n.fQfOefLJ19ucVwCoyePUFw\\\\=\\\\= .ss1vRYJom6QcTaXjYDIgsA\\\\=\\\\= {\\n margin-block-start: 0.25rem;\\n margin-inline-end: 0.25rem;\\n}\\n\\n@media screen and (-ms-high-contrast: active), (forced-colors: active) {\\n .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=:focus {\\n color: Highlight;\\n outline: 1px solid Highlight;\\n }\\n}\\n\\n[dir=rtl] .s9b5IsETdQZllfuZ4yP2Cw\\\\=\\\\= .WOBoDyJg9RoFD9yp5S87ug\\\\=\\\\=:not(:focus) {\\n box-shadow: 0.0625rem 0 0 0 var(--cds-button-separator, #e0e0e0);\\n}\\n\\n/* 60,70 and 80 are already declared as brand-01, 02 and 03 respectively */\\n:root {\\n --brand-01: #005d5d;\\n --brand-02: #004144;\\n --brand-03: #007d79;\\n --bottom-nav-height: 4rem;\\n --workspace-header-height: 3rem;\\n --tablet-workspace-window-height: calc(100vh - var(--omrs-navbar-height) - var(--bottom-nav-height));\\n --desktop-workspace-window-height: calc(100vh - var(--omrs-navbar-height) - var(--workspace-header-height));\\n}\\n\\n/* These color variables will be removed in a future release */\\n._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\= {\\n align-items: center;\\n background-color: var(--cds-field);\\n border-block-end: 1px solid var(--cds-border-strong);\\n color: var(--cds-text-primary);\\n display: flex;\\n position: relative;\\n}\\n._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=:focus-within, ._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=.wd02PMIuu0vdK1nU01M0vA\\\\=\\\\= {\\n outline: 2px solid var(--cds-focus, #0f62fe);\\n outline-offset: -2px;\\n}\\n@media screen and (prefers-contrast) {\\n ._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=:focus-within, ._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=.wd02PMIuu0vdK1nU01M0vA\\\\=\\\\= {\\n outline-style: dotted;\\n }\\n}\\n._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=[data-invalid] {\\n outline: 2px solid var(--cds-support-error, #da1e28);\\n outline-offset: -2px;\\n}\\n@media screen and (prefers-contrast) {\\n ._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=[data-invalid] {\\n outline-style: dotted;\\n }\\n}\\n._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=[data-invalid] {\\n color: var(--cds-support-error, #da1e28);\\n}\\n._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=[data-disabled] {\\n border-block-end: 1px solid rgba(0, 0, 0, 0);\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n cursor: not-allowed;\\n}\\n\\n._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\= .u9xpQLwv8879aSrtwgBjwA\\\\=\\\\=, .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= .u9xpQLwv8879aSrtwgBjwA\\\\=\\\\= {\\n caret-color: var(--cds-text-primary);\\n}\\n._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\= .u9xpQLwv8879aSrtwgBjwA\\\\=\\\\=:focus, .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= .u9xpQLwv8879aSrtwgBjwA\\\\=\\\\=:focus {\\n outline: unset;\\n background-color: var(--cds-layer-selected-hover);\\n}\\n._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\= [data-placeholder].u9xpQLwv8879aSrtwgBjwA\\\\=\\\\=, .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= [data-placeholder].u9xpQLwv8879aSrtwgBjwA\\\\=\\\\= {\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n}\\n._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\= [data-focused=true].u9xpQLwv8879aSrtwgBjwA\\\\=\\\\=, .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= [data-focused=true].u9xpQLwv8879aSrtwgBjwA\\\\=\\\\= {\\n animation: GvYCW4Ha\\\\+xGVXQCcY1qtwA\\\\=\\\\= 1s step-end infinite;\\n}\\n[dir=\\\"rtl\\\"] ._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\= [data-focused=true].u9xpQLwv8879aSrtwgBjwA\\\\=\\\\=, [dir=\\\"rtl\\\"] .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= [data-focused=true].u9xpQLwv8879aSrtwgBjwA\\\\=\\\\=, ._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\= [dir=\\\"rtl\\\"] [data-focused=true].u9xpQLwv8879aSrtwgBjwA\\\\=\\\\=, .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= [dir=\\\"rtl\\\"] [data-focused=true].u9xpQLwv8879aSrtwgBjwA\\\\=\\\\= {\\n animation: c0RMH1TuYT8d1jqJT\\\\+6XFA\\\\=\\\\= 1s step-end infinite;\\n}\\n\\n._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\= [data-readonly]:has(+ [data-placeholder]), .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= [data-readonly]:has(+ [data-placeholder]) {\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n}\\n._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\= [data-placeholder] + [data-readonly], .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= [data-placeholder] + [data-readonly] {\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n}\\n\\n@keyframes GvYCW4Ha\\\\+xGVXQCcY1qtwA\\\\=\\\\= {\\n from, to {\\n border-right: 1px solid transparent;\\n }\\n 50% {\\n border-right: 1px solid currentColor;\\n }\\n}\\n@keyframes c0RMH1TuYT8d1jqJT\\\\+6XFA\\\\=\\\\= {\\n from, to {\\n border-left: 1px solid transparent;\\n }\\n 50% {\\n border-left: 1px solid currentColor;\\n }\\n}\\n._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\=, .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= {\\n inline-size: 15rem;\\n margin-left: 1rem;\\n min-width: 10rem;\\n max-width: 15rem;\\n}\\n.GVaG38s0eIbutuabf4\\\\+uBQ\\\\=\\\\= {\\n block-size: 2.5rem;\\n}\\n\\n._01dtBgqWiwZk6SoBjALSjQ\\\\=\\\\= {\\n block-size: 2rem;\\n}\\n\\n._0hIZ9D1--CeU4ZSveSTQQg\\\\=\\\\= {\\n block-size: 3rem;\\n}\\n\\n._7m9E2jl20P4i7p7Mp1-biA\\\\=\\\\= {\\n display: flex;\\n min-width: 10rem;\\n max-width: 15rem;\\n margin-inline-start: 1rem;\\n inline-size: 15rem;\\n}\\n\\n.mx9jP\\\\+0JMdnAXdZTjRCJhw\\\\=\\\\= {\\n block-size: 2rem;\\n}\\n\\n._6RdG0pycDtJJ2KTzHV4iIw\\\\=\\\\= {\\n block-size: 2.5rem;\\n}\\n\\n.IPnJdk8Xtzg1yfFCUoBc9A\\\\=\\\\= {\\n block-size: 3rem;\\n}\\n\\n.miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= {\\n min-width: unset;\\n margin: 0px;\\n}\\n\\n.NyabfeLUZzUPXOIdWle5bw\\\\=\\\\= {\\n flex-basis: fit-content;\\n}\\n\\n.PAI4FVG2hj35xDhzIF-jaQ\\\\=\\\\= {\\n padding-right: unset;\\n}\\n\\n.S7-qCETjknn\\\\+AcA7c0xC3g\\\\=\\\\= {\\n display: flex;\\n align-items: center;\\n margin-inline: 0.5rem;\\n}\\n\\n._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=:has([data-placeholder]) > ._7m9E2jl20P4i7p7Mp1-biA\\\\=\\\\= > .S7-qCETjknn\\\\+AcA7c0xC3g\\\\=\\\\= > span {\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n}\\n\\n.Hr9NJxCA4oSNVTBwsHmACQ\\\\=\\\\= {\\n color: var(--cds-text-error, #da1e28) !important;\\n font-size: 0.75rem;\\n font-weight: 400 !important;\\n margin: 0.25rem 0 0;\\n overflow: hidden;\\n}\\n\\n@keyframes _13UImLxwUrLdL5zUTqyARg\\\\=\\\\= {\\n from {\\n opacity: 0;\\n transform: scale(0.93);\\n }\\n to {\\n opacity: 1;\\n transform: scale(1);\\n }\\n}\\n.fJEQcItNrv2n55UaD-Nfgw\\\\=\\\\= {\\n transform-origin: top center;\\n}\\n\\n.fJEQcItNrv2n55UaD-Nfgw\\\\=\\\\=[data-placement=top],\\n.fJEQcItNrv2n55UaD-Nfgw\\\\=\\\\=[data-placement=top-start],\\n.fJEQcItNrv2n55UaD-Nfgw\\\\=\\\\=[data-placement=top-end] {\\n transform-origin: bottom center;\\n}\\n\\n.fJEQcItNrv2n55UaD-Nfgw\\\\=\\\\=[data-entering] {\\n animation: _13UImLxwUrLdL5zUTqyARg\\\\=\\\\= 110ms cubic-bezier(0, 0, 0.38, 0.9);\\n}\\n@media screen and (prefers-reduced-motion: reduce) {\\n .fJEQcItNrv2n55UaD-Nfgw\\\\=\\\\=[data-entering] {\\n animation: none;\\n }\\n}\\n\\n.gj9nEvrB9Re-WX-HkzyQEQ\\\\=\\\\= {\\n box-shadow: 0 2px 6px var(--cds-shadow, rgba(0, 0, 0, 0.3));\\n background-color: var(--cds-layer-01, #f4f4f4);\\n overflow: hidden;\\n padding: 0.25rem 0.25rem 0.5rem 0.25rem;\\n}\\n\\n.qvzkMTSvzPFL42Qx1Rp7gQ\\\\=\\\\= {\\n margin-top: 0.5rem;\\n margin-bottom: 0.5rem;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: nowrap;\\n justify-content: space-between;\\n}\\n\\n.QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\= {\\n box-sizing: border-box;\\n padding: 0;\\n border: 0;\\n margin: 0;\\n font-family: inherit;\\n font-size: 100%;\\n vertical-align: baseline;\\n}\\n.QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\= *,\\n.QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\= *::before,\\n.QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\= *::after {\\n box-sizing: inherit;\\n}\\n.QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\= {\\n background-color: inherit;\\n display: inline-flex;\\n}\\n.QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\=:hover:not(:disabled) {\\n background-color: var(--cds-layer-hover);\\n}\\n.QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\=:disabled > svg {\\n fill: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n}\\n.QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\= > svg {\\n display: block;\\n margin: auto;\\n text-align: center;\\n}\\n\\n[data-invalid] > .QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\= > svg {\\n --omrs-icon-fill: var(--cds-support-error, #da1e28);\\n}\\n\\n.ohLjF\\\\+TIoU6I01Ed\\\\+UfWxg\\\\=\\\\= {\\n height: 2.5rem;\\n width: 2.5rem;\\n}\\n\\n.sD3fm4rOJvtpunJ3wocYtA\\\\=\\\\= {\\n height: 2rem;\\n width: 2rem;\\n}\\n\\n._0fs7mgdVjmu0ElQLPZgc\\\\+Q\\\\=\\\\= {\\n height: 3rem;\\n width: 3rem;\\n}\\n\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= {\\n box-sizing: border-box;\\n padding: 0;\\n border: 0;\\n margin: 0;\\n font-family: inherit;\\n font-size: 100%;\\n vertical-align: baseline;\\n font-size: var(--cds-heading-compact-01-font-size, 0.875rem);\\n font-weight: var(--cds-heading-compact-01-font-weight, 600);\\n line-height: var(--cds-heading-compact-01-line-height, 1.28572);\\n letter-spacing: var(--cds-heading-compact-01-letter-spacing, 0.16px);\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= *,\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= *::before,\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= *::after {\\n box-sizing: inherit;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= {\\n margin-top: 0.5rem;\\n margin-block-end: 0.125rem;\\n text-align: center;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= > span {\\n margin-left: 0.25rem;\\n margin-right: 0.25rem;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) {\\n display: inline;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric] {\\n box-sizing: border-box;\\n padding: 0;\\n border: 0;\\n margin: 0;\\n font-family: inherit;\\n font-size: 100%;\\n vertical-align: baseline;\\n font-size: var(--cds-heading-compact-01-font-size, 0.875rem);\\n font-weight: var(--cds-heading-compact-01-font-weight, 600);\\n line-height: var(--cds-heading-compact-01-line-height, 1.28572);\\n letter-spacing: var(--cds-heading-compact-01-letter-spacing, 0.16px);\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric] *,\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric] *::before,\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric] *::after {\\n box-sizing: inherit;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric] {\\n background-color: var(--cds-field);\\n inline-size: 2.5rem;\\n padding: 0.25rem;\\n padding-right: 0;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric]::-webkit-outer-spin-button, .CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric]::-webkit-inner-spin-button {\\n margin: 0;\\n -webkit-appearance: none;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric]:focus {\\n outline: 1px solid var(--cds-focus, #0f62fe);\\n}\\n@media screen and (prefers-contrast) {\\n .CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric]:focus {\\n outline-style: dotted;\\n }\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric][data-invalid] {\\n outline: 2px solid var(--cds-support-error, #da1e28);\\n outline-offset: -2px;\\n}\\n@media screen and (prefers-contrast) {\\n .CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric][data-invalid] {\\n outline-style: dotted;\\n }\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric][data-disabled], .CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric][data-disabled]:hover {\\n background-color: var(--cds-layer-01, #f4f4f4);\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n pointer-events: none;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric][data-disabled] + div > button::after {\\n border-block-end-color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n border-block-start-color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric][data-disabled] + div > button:hover {\\n opacity: 0;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) div[role=group] {\\n box-sizing: border-box;\\n padding: 0;\\n border: 0;\\n margin: 0;\\n font-family: inherit;\\n font-size: 100%;\\n vertical-align: baseline;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) div[role=group] *,\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) div[role=group] *::before,\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) div[role=group] *::after {\\n box-sizing: inherit;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) div[role=group] {\\n display: inline;\\n position: relative;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]):hover button {\\n opacity: 1;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button {\\n box-sizing: border-box;\\n padding: 0;\\n border: 0;\\n margin: 0;\\n font-family: inherit;\\n font-size: 100%;\\n vertical-align: baseline;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button *,\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button *::before,\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button *::after {\\n box-sizing: inherit;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button {\\n position: absolute;\\n padding-block: 0;\\n padding-inline-start: 0.125rem;\\n padding-inline-end: 0.25rem;\\n border: none;\\n block-size: 50%;\\n cursor: pointer;\\n inline-size: 0.75rem;\\n inset-inline-start: 2.5rem;\\n line-height: 50%;\\n opacity: 0;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button::after {\\n display: block;\\n border-inline-end: 0.25rem solid transparent;\\n border-inline-start: 0.25rem solid transparent;\\n content: \\\"\\\";\\n inset-block-start: 33%;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button:hover::after {\\n border-block-end-color: var(--cds-button-primary, #0f62fe);\\n border-block-start-color: var(--cds-button-primary, #0f62fe);\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button:active::after {\\n border-block-end-color: var(--cds-border-interactive, #0f62fe);\\n border-block-start-color: var(--cds-border-interactive, #0f62fe);\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button[slot=increment] {\\n top: 0;\\n left: 0;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button[slot=decrement] {\\n top: 0.75rem;\\n left: 0;\\n}\\n\\n.uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= {\\n width: 17rem;\\n}\\n.uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= tr, .uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= tr > th, .uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= tr > td {\\n height: 2.428rem;\\n width: 2.428rem;\\n}\\n.uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= > thead > tr > th {\\n font-size: var(--cds-body-compact-01-font-size, 0.875rem);\\n font-weight: var(--cds-body-compact-01-font-weight, 400);\\n line-height: var(--cds-body-compact-01-line-height, 1.28572);\\n letter-spacing: var(--cds-body-compact-01-letter-spacing, 0.16px);\\n cursor: default;\\n text-align: center;\\n vertical-align: middle;\\n}\\n.uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= > tbody > tr > td {\\n font-size: var(--cds-body-compact-01-font-size, 0.875rem);\\n font-weight: var(--cds-body-compact-01-font-weight, 400);\\n line-height: var(--cds-body-compact-01-line-height, 1.28572);\\n letter-spacing: var(--cds-body-compact-01-letter-spacing, 0.16px);\\n cursor: pointer;\\n text-align: center;\\n vertical-align: middle;\\n}\\n.uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= > tbody > tr > td > div {\\n outline: unset;\\n}\\n.uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= > tbody > tr > td:hover:not(:has([aria-disabled], [data-selected])) {\\n background-color: var(--cds-layer-hover);\\n}\\n.uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= > tbody > tr > td:has([data-selected]) {\\n background-color: #0f62fe;\\n color: #ffffff;\\n}\\n.uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= > tbody > tr > td[aria-disabled] {\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n cursor: default;\\n}\\n\\n.wcSTDuH\\\\+PjP9kxK\\\\+pj3CUw\\\\=\\\\=:not([data-selected]) {\\n position: relative;\\n color: #0f62fe;\\n font-weight: 600;\\n font-size: var(--cds-body-compact-01-font-size, 0.875rem);\\n line-height: var(--cds-body-compact-01-line-height, 1.28572);\\n letter-spacing: var(--cds-body-compact-01-letter-spacing, 0.16px);\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n block-size: 2.5rem;\\n cursor: pointer;\\n inline-size: 2.5rem;\\n}\\n.wcSTDuH\\\\+PjP9kxK\\\\+pj3CUw\\\\=\\\\=:not([data-selected])::after {\\n position: absolute;\\n display: block;\\n block-size: 0.25rem;\\n content: \\\"\\\";\\n inline-size: 0.25rem;\\n inset-block-end: 0.4375rem;\\n inset-inline-start: 50%;\\n -webkit-transform: translateX(-50%);\\n transform: translateX(-50%);\\n}\\n.wcSTDuH\\\\+PjP9kxK\\\\+pj3CUw\\\\=\\\\=:not([data-selected])[data-disabled]::after {\\n background-color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n}\\n.wcSTDuH\\\\+PjP9kxK\\\\+pj3CUw\\\\=\\\\=:not([data-selected]):not([data-disabled])::after {\\n background-color: var(--cds-link-primary, var(--cds-link-primary, #0f62fe));\\n}\\n\\n[dir=\\\"rtl\\\"] ._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\=, [dir=\\\"rtl\\\"] .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= {\\n padding-left: unset;\\n padding-right: 0.75rem;\\n}\\n[dir=\\\"rtl\\\"] .PAI4FVG2hj35xDhzIF-jaQ\\\\=\\\\= {\\n padding-right: 0;\\n}\\n[dir=\\\"rtl\\\"] .CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric] {\\n padding-right: 0.25rem;\\n}\\n[dir=\\\"rtl\\\"] .CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= button[slot=increment] {\\n top: 0;\\n left: unset;\\n right: 0;\\n}\\n[dir=\\\"rtl\\\"] .CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= button[slot=decrement] {\\n top: 0.75rem;\\n left: unset;\\n right: 0;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../../node_modules/@carbon/styles/scss/_layout.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/utilities/_custom-property.scss\",\"webpack://./../../framework/esm-styleguide/dist/datepicker/datepicker.module.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/_layer.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/theme/_theme.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/utilities/_keyframes.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/utilities/_visually-hidden.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/components/popover/_popover.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/utilities/_component-reset.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/utilities/_layout.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/utilities/_button-reset.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/utilities/_focus-outline.scss\",\"webpack://./../../../node_modules/@carbon/themes/scss/generated/_tokens.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/components/tooltip/_tooltip.scss\",\"webpack://./../../../node_modules/@carbon/type/scss/_styles.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/components/button/_button.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/components/button/_mixins.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/components/button/_vars.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/components/button/_tokens.scss\",\"webpack://./../../../node_modules/@carbon/layout/scss/generated/_spacing.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/utilities/_skeleton.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/utilities/_high-contrast-mode.scss\",\"webpack://./../../framework/esm-styleguide/dist/_vars.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/utilities/_box-shadow.scss\"],\"names\":[],\"mappings\":\"AA+DM;ECTJ,0EAAA;EAAA,+DAAA;ACnDF;;AF0EM;ECvBJ,yGAAA;AC/CF;;AFoFQ;ECrCN,sEAAA;AC3CF;;AFgFQ;ECrCN,sEAAA;ACvCF;;AFgDM;ECTJ,wEAAA;EAAA,+DAAA;AClCF;;AFyDM;ECvBJ,uGAAA;AC9BF;;AFmEQ;ECrCN,oEAAA;AC1BF;;AF+DQ;ECrCN,oEAAA;ACtBF;;AF+BM;ECTJ,0EAAA;EAAA,+DAAA;ACjBF;;AFwCM;ECvBJ,yGAAA;ACbF;;AFkDQ;ECrCN,sEAAA;ACTF;;AF8CQ;ECrCN,sEAAA;ACLF;;AFcM;ECTJ,wEAAA;EAAA,+DAAA;ACAF;;AFuBM;ECvBJ,uGAAA;ACIF;;AFiCQ;ECrCN,oEAAA;ACQF;;AF6BQ;ECrCN,oEAAA;ACYF;;AFHM;ECTJ,wEAAA;EAAA,+DAAA;ACiBF;;AFMM;ECvBJ,uGAAA;ACqBF;;AFgBQ;ECrCN,oEAAA;ACyBF;;AFYQ;ECrCN,oEAAA;AC6BF;;AFpBM;ECTJ,yEAAA;EAAA,+DAAA;ACkCF;;AFXM;ECvBJ,wGAAA;ACsCF;;AFDQ;ECrCN,qEAAA;AC0CF;;AFLQ;ECrCN,qEAAA;AC8CF;;AFrCM;ECTJ,uGAAA;EAAA,qFAAA;ACmDF;;AF5BM;ECvBJ,iJAAA;ACuDF;;AFlBQ;ECrCN,mGAAA;AC2DF;;AFtBQ;ECrCN,mGAAA;AC+DF;;AFtDM;ECTJ,kGAAA;EAAA,qFAAA;ACoEF;;AF7CM;ECvBJ,4IAAA;ACwEF;;AFnCQ;ECrCN,8FAAA;AC4EF;;AFvCQ;ECrCN,8FAAA;ACgFF;;AF7BA;ECnDE,mCAAA;EAAA,iCAAA;EAAA,mCAAA;EAAA,iCAAA;EAAA,iCAAA;EAAA,kCAAA;EAAA,iCAAA;EAAA,yCAAA;EAAA,qDAAA;EAAA,gDAAA;EAAA,4CAAA;EAAA,oDAAA;AC+FF;;ACzIA;EF0CE,yCAAA;EAAA,uDAAA;EAAA,+DAAA;EAAA,qDAAA;EAAA,2DAAA;EAAA,uEAAA;EAAA,uDAAA;EAAA,mEAAA;EAAA,qEAAA;EAAA,yCAAA;EAAA,qDAAA;EAAA,yDAAA;EAAA,2EAAA;EAAA,yDAAA;EAAA,qDAAA;ACiHF;;ACvJA;EFs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7GiB;EA8GjB,oIACE;Adg0BN;Ac5zBE;EACE,2DE6PoB;AhBikBxB;Ac3zBE;;EAEE,kBDnGE;Abg6BN;Aa55BI;EACE,wCH4KU;AVkvBhB;;Aa15BE;ECmEA,iBCzCqB;ED0CrB,mBAAA;EACA,yBDlEI;ECmEJ,sDEsPiB;EFrPjB,wCJiGc;AV0vBhB;Acz1BE;EACE,4DEiSqB;AhB0jBzB;Acx1BE;EACE,sEA7GiB;EA8GjB,oIACE;Ady1BN;Acr1BE;EACE,6DEkQsB;AhBqlB1B;Acp1BE;;EAEE,kBDpFE;Ab06BN;Aat6BI;EAEE,wCH4JU;AV2wBhB;;Aan6BE;ECmDA,iBCzCqB;ED0CrB,mBAAA;EACA,iDE4PgB;EF3PhB,6BDpDI;ECqDJ,0CE0PgB;AhB0nBlB;Acl3BE;EACE,2DEsSoB;AhB8kBxB;Acj3BE;EACE,sEA7GiB;EA8GjB,oIACE;Adk3BN;Ac92BE;EACE,4DEuQqB;AhBymBzB;Ac72BE;;EAEE,kBDpEE;Abm7BN;Aa/6BI;EACE,uCH0IS;AVuyBf;Aa96BI;EACE,qDGkSY;EHjSZ,uCHqIS;AV2yBf;Aa76BI;EACE,yBAAA;EACA,4DGuTmB;EHtTnB,uCH+HS;AVgzBf;Aa56BI;EAME,uBAAA;EACA,uDH8HU;EG7HV,aAAA;Aby6BN;;Aar6BE;ECcA,iBCzCqB;ED0CrB,mBAAA;EACA,yBDbI;ECcJ,6BDfI;ECgBJ,uCJ0Ga;EGlHX,oFAAA;Abo6BJ;Ac15BE;EACE,wEJ5Fe;AVw/BnB;Acz5BE;EACE,sEA7GiB;EA8GjB,oIACE;Ad05BN;Act5BE;EACE,wEJhHgB;AVwgCpB;Acr5BE;;EAEE,kBD/BE;Abs7BN;Aa96BI;EACE,gBAAA;EACA,kBAAA;EACA,2BIrGO;AjBqhCb;Aa76BI;EAEE,6CHyGe;AVq0BrB;Aa36BI;EACE,wEH1Gc;AVuhCpB;Aa16BI;EAME,yBAAA;EACA,uBAAA;EACA,uDHoFU;EGnFV,aAAA;Abu6BN;Aap6BI;EACE,sCH0GS;AV4zBf;;Aal6BE;EACE,mBAAA;EACA,uBAAA;EACA,UAAA;EACA,+CAAA;EACA,gDAAA;EACA,sBAAA;Abq6BJ;Aan6BI;EACE,qBAAA;Abq6BN;Aal6BI;EACE,gBAAA;Abo6BN;Aaj6BI;EAEE,SAAA;Abk6BN;Aa/5BI;EACE,+EAAA;Abi6BN;;Aa15BE;EACE,0BAAA;Ab65BJ;;Aaz5BE;;;EAGE,qBAAA;Ab45BJ;;Aaz5BE;EACE,oEHpKkB;AVgkCtB;;Aaz5BE;EACE,UAAA;Ab45BJ;;Aaz5BE;;EAIE,sCHkDW;AVw2Bf;;Aav5BE;;;EAOE,gDHoDqB;AVk2BzB;;Aan5BE;EACE,mBAAA;Abs5BJ;;Aaj5BE;EACE,mBAAA;Abo5BJ;;Aaj5BE;EACE,oBAAA;Abo5BJ;;Aaj5BE;EC/GA,iBCzCqB;ED0CrB,mBAAA;EACA,yBDgHI;EC/GJ,2DE6PsB;EF5PtB,wCJiGc;AVm6BhB;AclgCE;EACE,yDEuRkB;AhB6uBtB;AcjgCE;EACE,sEA7GiB;EA8GjB,oIACE;AdkgCN;Ac9/BE;EACE,0DEwPmB;AhBwwBvB;Ac7/BE;;EAEE,kBD8FE;Abi6BN;Aa75BI;EACE,wCHrBU;AVo7BhB;Aa55BI;EC7HF,iBCzCqB;ED0CrB,mBAAA;EACA,yDEmQwB;EFlQxB,6BD4HM;EC3HN,kDEiQwB;AhB2xB1B;Ac1hCE;EACE,yDEuRkB;AhBqwBtB;AczhCE;EACE,sEA7GiB;EA8GjB,oIACE;Ad0hCN;ActhCE;EACE,0DEwPmB;AhBgyBvB;AcrhCE;;EAEE,kBD4GI;Ab26BR;Aav6BM;EACE,qDGsJc;EHrJd,wCHpCQ;AV68BhB;Aat6BM;EACE,2DGmHgB;EHlHhB,wCHzCQ;AVi9BhB;Aar6BM;EACE,sDGwHe;EHvHf,0DGuHe;EHtHf,wCH/CQ;AVs9BhB;Aap6BM;EAME,uBAAA;EACA,uDHnDQ;EGoDR,aAAA;Abi6BR;Aa75BI;ECnKF,iBCzCqB;ED0CrB,mBAAA;EACA,yBDoKM;ECnKN,6BDkKM;ECjKN,kDEiQwB;EHxFpB,oFAAA;Ab25BN;AclkCE;EACE,yDEuRkB;AhB6yBtB;AcjkCE;EACE,sEA7GiB;EA8GjB,oIACE;AdkkCN;Ac9jCE;EACE,0DEwPmB;AhBw0BvB;Ac7jCE;;EAEE,kBDkJI;Ab66BR;Aar6BM;EACE,gBA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\",\"sourcesContent\":[\"//\\n// Copyright IBM Corp. 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use 'sass:map';\\n@use 'sass:list';\\n\\n@use './config' as *;\\n@use './utilities/custom-property';\\n@use './utilities/convert';\\n@use './spacing' as *;\\n\\n$layout-tokens: (\\n size: (\\n height: (\\n xs: convert.to-rem(24px),\\n sm: convert.to-rem(32px),\\n md: convert.to-rem(40px),\\n lg: convert.to-rem(48px),\\n xl: convert.to-rem(64px),\\n 2xl: convert.to-rem(80px),\\n ),\\n ),\\n density: (\\n padding-inline: (\\n condensed: $spacing-03,\\n normal: $spacing-05,\\n ),\\n ),\\n);\\n\\n@mixin emit-layout-tokens {\\n @each $group, $properties in $layout-tokens {\\n @each $property, $steps in $properties {\\n @each $step, $value in $steps {\\n @include custom-property.declaration(\\n 'layout-#{$group}-#{$property}-#{$step}',\\n $value\\n );\\n }\\n\\n // CSS max() doesn't accept '0' as a value without a unit\\n // stylelint-disable length-zero-no-unit\\n @include custom-property.declaration(\\n 'layout-#{$group}-#{$property}-min',\\n 0px\\n );\\n // stylelint-enable length-zero-no-unit\\n\\n @include custom-property.declaration(\\n 'layout-#{$group}-#{$property}-max',\\n 999999999px\\n );\\n }\\n }\\n}\\n\\n@each $group, $properties in $layout-tokens {\\n @each $property, $steps in $properties {\\n @each $step, $value in $steps {\\n .#{$prefix}--layout--#{$group}-#{$step} {\\n @include custom-property.declaration(\\n 'layout-#{$group}-#{$property}-context',\\n custom-property.get-var(\\n 'layout-#{$group}-#{$property}-#{$step}',\\n $value\\n )\\n );\\n @include custom-property.declaration(\\n 'layout-#{$group}-#{$property}',\\n custom-property.get-var('layout-#{$group}-#{$property}-context')\\n );\\n }\\n\\n .#{$prefix}--layout-constraint--#{$group}__default-#{$step} {\\n @include custom-property.declaration(\\n 'layout-#{$group}-#{$property}',\\n custom-property.get-var(\\n 'layout-#{$group}-#{$property}-context',\\n custom-property.get-var(\\n 'layout-#{$group}-#{$property}-#{$step}',\\n $value\\n )\\n )\\n );\\n }\\n\\n @each $constraint in ('min', 'max') {\\n .#{$prefix}--layout-constraint--#{$group}__#{$constraint}-#{$step} {\\n @include custom-property.declaration(\\n 'layout-#{$group}-#{$property}-#{$constraint}',\\n custom-property.get-var(\\n 'layout-#{$group}-#{$property}-#{$step}',\\n $value\\n )\\n );\\n }\\n }\\n }\\n }\\n}\\n\\n:root {\\n @include emit-layout-tokens();\\n}\\n\",\"//\\n// Copyright IBM Corp. 2018, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use '../config';\\n\\n// Some CSS Custom Property terminology\\n// @see https://www.w3.org/TR/css-variables-1/\\n//\\n// <custom-property-name>:\\n// Any valid identifer that starts with two dashes (--)\\n//\\n// A declaration:\\n// CSS Custom Properties can be used as declarations in a CSS selector. They\\n// take on the form of:\\n//\\n// <custom-property-name>: <declaration-value>;\\n//\\n// The var() notation:\\n// You can use a CSS Custom Property as a substitute for a value of another\\n// property using the var() function. This function has the following syntax:\\n//\\n// var( <custom-property-name> [, <declarative-value> ]? )\\n//\\n// This function takes in an optional fallback value if the CSS Custom\\n// Property has not been previously defined\\n\\n/// Get the <custom-property-name> for a given string\\n/// @param {String} $name\\n/// @returns {String}\\n@function get-name($name) {\\n @return --#{config.$prefix}-#{$name};\\n}\\n\\n/// Get the var() representation for a given token\\n/// @param {String} $name\\n/// @param {Any} $fallback\\n/// @returns var()\\n@function get-var($name, $fallback: false) {\\n @if $fallback {\\n @return var(--#{config.$prefix}-#{$name}, #{$fallback});\\n }\\n @return var(--#{config.$prefix}-#{$name});\\n}\\n\\n/// Emit a declaration which sets the value of a CSS Custom Property using the\\n/// $name as the <custom-property-name> and the $value as the\\n/// <declaration-value>\\n/// @param {String} $name\\n/// @param {any} $value\\n@mixin declaration($name, $value) {\\n #{get-name($name)}: #{$value};\\n}\\n\",\"@use '@carbon/styles/scss/motion';\\n@use '@carbon/layout';\\n@use '@carbon/styles/scss/theme';\\n@use '@carbon/type';\\n@use '@carbon/styles/scss/components/button';\\n@use '@carbon/styles/scss/utilities/box-shadow';\\n@use '@carbon/styles/scss/utilities/component-reset';\\n@use '@carbon/styles/scss/utilities/focus-outline' as focus;\\n@use '../vars' as *;\\n\\n// Text field for dates\\n.inputGroup {\\n align-items: center;\\n background-color: var(--cds-field);\\n border-block-end: 1px solid var(--cds-border-strong);\\n color: var(--cds-text-primary);\\n display: flex;\\n position: relative;\\n\\n &:focus-within,\\n &.cds--focused {\\n @include focus.focus-outline('outline');\\n }\\n\\n &[data-invalid] {\\n @include focus.focus-outline('invalid');\\n\\n & {\\n color: theme.$support-error;\\n }\\n }\\n\\n &[data-disabled] {\\n border-block-end: 1px solid rgba(0, 0, 0, 0);\\n color: theme.$text-disabled;\\n cursor: not-allowed;\\n }\\n}\\n\\n// Shared segment styles used by both single and range inputs\\n%inputSegmentStyles {\\n caret-color: var(--cds-text-primary);\\n\\n &:focus {\\n outline: unset;\\n background-color: theme.$layer-selected-hover;\\n }\\n\\n &[data-placeholder] {\\n color: theme.$text-disabled;\\n }\\n\\n &[data-focused='true'] {\\n animation: cursor-blink 1s step-end infinite;\\n }\\n\\n :global([dir='rtl']) &[data-focused='true'] {\\n animation: cursor-blink-rtl 1s step-end infinite;\\n }\\n}\\n\\n// Shared rules for dimming read-only separators (/, -, etc.) adjacent to\\n// unfilled placeholders so they don't look \\\"active\\\" before the user starts typing.\\n%readonlyPlaceholderDimming {\\n [data-readonly]:has(+ [data-placeholder]) {\\n color: theme.$text-disabled;\\n }\\n\\n [data-placeholder] + [data-readonly] {\\n color: theme.$text-disabled;\\n }\\n}\\n\\n// Use physical `border-right`/`border-left` rather than logical `border-inline-end`:\\n// a PostCSS plugin in the build pipeline incorrectly hoists `border-inline-end`\\n// out of @keyframes and re-emits it as a static `border-right` on selectors that\\n// reference the animation, which produced a permanent vertical line on the\\n// date input wrappers in LTR contexts.\\n@keyframes cursor-blink {\\n from,\\n to {\\n border-right: 1px solid transparent;\\n }\\n 50% {\\n border-right: 1px solid currentColor;\\n }\\n}\\n\\n@keyframes cursor-blink-rtl {\\n from,\\n to {\\n border-left: 1px solid transparent;\\n }\\n 50% {\\n border-left: 1px solid currentColor;\\n }\\n}\\n\\n// Single date picker input\\n.inputWrapper {\\n inline-size: 15rem;\\n margin-left: layout.$spacing-05;\\n min-width: layout.$spacing-13;\\n max-width: 15rem;\\n\\n & .inputSegment {\\n @extend %inputSegmentStyles;\\n }\\n\\n @extend %readonlyPlaceholderDimming;\\n}\\n\\n.inputWrapperMd {\\n block-size: layout.$spacing-08;\\n}\\n\\n.inputWrapperSm {\\n block-size: layout.$spacing-07;\\n}\\n\\n.inputWrapperLg {\\n block-size: layout.$spacing-09;\\n}\\n\\n// Range date picker inputs\\n.inputsWrapper {\\n display: flex;\\n min-width: 10rem;\\n max-width: 15rem;\\n margin-inline-start: 1rem;\\n inline-size: 15rem;\\n}\\n\\n.inputsWrapperSm {\\n block-size: layout.$spacing-07;\\n}\\n\\n.inputsWrapperMd {\\n block-size: layout.$spacing-08;\\n}\\n\\n.inputsWrapperLg {\\n block-size: layout.$spacing-09;\\n}\\n\\n.dateInputWrapper {\\n @extend .inputWrapper;\\n min-width: unset;\\n margin: 0px;\\n}\\n\\n.startInput {\\n flex-basis: fit-content;\\n}\\n\\n.endInput {\\n padding-right: unset;\\n}\\n\\n.separator {\\n display: flex;\\n align-items: center;\\n margin-inline: 0.5rem;\\n}\\n\\n.inputGroup:has([data-placeholder]) > .inputsWrapper > .separator > span {\\n color: theme.$text-disabled;\\n}\\n\\n.invalidText {\\n color: theme.$text-error !important;\\n font-size: layout.$spacing-04;\\n font-weight: 400 !important;\\n margin: layout.$spacing-02 0 0;\\n overflow: hidden;\\n}\\n\\n// Used for calendar pop-over\\n@keyframes expand-in {\\n from {\\n opacity: 0;\\n transform: scale(0.93);\\n }\\n\\n to {\\n opacity: 1;\\n transform: scale(1);\\n }\\n}\\n\\n.popover {\\n transform-origin: top center;\\n}\\n\\n// When the popover flips above the trigger (near bottom of viewport), anchor from the bottom\\n.popover[data-placement='top'],\\n.popover[data-placement='top-start'],\\n.popover[data-placement='top-end'] {\\n transform-origin: bottom center;\\n}\\n\\n.popover[data-entering] {\\n animation: expand-in motion.$duration-fast-02 motion.motion(entrance, productive);\\n\\n @media screen and (prefers-reduced-motion: reduce) {\\n animation: none;\\n }\\n}\\n\\n.dialog {\\n @include box-shadow.box-shadow;\\n background-color: theme.$layer-01;\\n overflow: hidden;\\n padding: layout.$spacing-02 layout.$spacing-02 layout.$spacing-03 layout.$spacing-02;\\n}\\n\\n// Navigation header (prev/next buttons + month/year display)\\n.header {\\n margin-top: layout.$spacing-03;\\n margin-bottom: layout.$spacing-03;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: nowrap;\\n justify-content: space-between;\\n}\\n\\n.flatButton {\\n @include component-reset.reset;\\n\\n & {\\n background-color: inherit;\\n display: inline-flex;\\n }\\n\\n &:hover:not(:disabled) {\\n background-color: theme.$layer-hover;\\n }\\n\\n &:disabled > svg {\\n fill: theme.$text-disabled;\\n }\\n\\n & > svg {\\n display: block;\\n margin: auto;\\n text-align: center;\\n }\\n}\\n\\n[data-invalid] > .flatButton > svg {\\n --omrs-icon-fill: #{theme.$support-error};\\n}\\n\\n.flatButtonMd {\\n height: layout.$spacing-08;\\n width: layout.$spacing-08;\\n}\\n\\n.flatButtonSm {\\n height: layout.$spacing-07;\\n width: layout.$spacing-07;\\n}\\n\\n.flatButtonLg {\\n height: layout.$spacing-09;\\n width: layout.$spacing-09;\\n}\\n\\n.monthYear {\\n @include component-reset.reset;\\n @include type.type-style('heading-compact-01');\\n\\n & {\\n margin-top: layout.$spacing-03;\\n margin-block-end: layout.$spacing-01;\\n text-align: center;\\n }\\n\\n & > span {\\n margin-left: layout.$spacing-02;\\n margin-right: layout.$spacing-02;\\n }\\n\\n & div:has(input[inputmode='numeric']) {\\n display: inline;\\n\\n & > input[inputmode='numeric'] {\\n @include component-reset.reset;\\n @include type.type-style('heading-compact-01');\\n\\n & {\\n background-color: var(--cds-field);\\n inline-size: layout.$spacing-08;\\n padding: layout.$spacing-02;\\n padding-right: 0;\\n }\\n\\n &::-webkit-outer-spin-button,\\n &::-webkit-inner-spin-button {\\n margin: 0;\\n -webkit-appearance: none;\\n }\\n\\n &:focus {\\n @include focus.focus-outline('border');\\n }\\n\\n &[data-invalid] {\\n @include focus.focus-outline('invalid');\\n }\\n\\n &[data-disabled],\\n &[data-disabled]:hover {\\n background-color: theme.$layer-01;\\n color: theme.$text-disabled;\\n pointer-events: none;\\n }\\n\\n &[data-disabled] + div > button::after {\\n border-block-end-color: theme.$text-disabled;\\n border-block-start-color: theme.$text-disabled;\\n }\\n\\n &[data-disabled] + div > button:hover {\\n opacity: 0;\\n }\\n }\\n\\n & div[role='group'] {\\n @include component-reset.reset;\\n\\n & {\\n display: inline;\\n position: relative;\\n }\\n }\\n\\n &:hover button {\\n opacity: 1;\\n }\\n\\n & button {\\n @include component-reset.reset;\\n\\n & {\\n position: absolute;\\n padding-block: 0;\\n padding-inline-start: layout.$spacing-01;\\n padding-inline-end: layout.$spacing-02;\\n border: none;\\n block-size: 50%;\\n cursor: pointer;\\n inline-size: layout.$spacing-04;\\n inset-inline-start: layout.$spacing-08;\\n line-height: 50%;\\n opacity: 0;\\n }\\n\\n &::after {\\n display: block;\\n border-inline-end: layout.$spacing-02 solid transparent;\\n border-inline-start: layout.$spacing-02 solid transparent;\\n content: '';\\n inset-block-start: 33%;\\n }\\n\\n &:hover::after {\\n border-block-end-color: button.$button-primary;\\n border-block-start-color: button.$button-primary;\\n }\\n\\n &:active::after {\\n border-block-end-color: theme.$border-interactive;\\n border-block-start-color: theme.$border-interactive;\\n }\\n\\n &[slot='increment'] {\\n top: 0;\\n left: 0;\\n }\\n\\n &[slot='decrement'] {\\n top: layout.$spacing-04;\\n left: 0;\\n }\\n }\\n }\\n}\\n\\n// Calendar grid and day cells\\n\\n.calendarGrid {\\n width: 17rem;\\n\\n & tr,\\n & tr > th,\\n & tr > td {\\n height: 2.428rem;\\n width: 2.428rem;\\n }\\n\\n & > thead > tr > th {\\n @include type.type-style('body-compact-01');\\n cursor: default;\\n text-align: center;\\n vertical-align: middle;\\n }\\n\\n & > tbody > tr > td {\\n @include type.type-style('body-compact-01');\\n cursor: pointer;\\n text-align: center;\\n vertical-align: middle;\\n\\n & > div {\\n outline: unset;\\n }\\n\\n &:hover:not(:has([aria-disabled], [data-selected])) {\\n background-color: theme.$layer-hover;\\n }\\n\\n &:has([data-selected]) {\\n background-color: $color-blue-60-2;\\n color: $ui-background;\\n }\\n\\n &[aria-disabled] {\\n color: theme.$text-disabled;\\n cursor: default;\\n }\\n }\\n}\\n\\n.today:not([data-selected]) {\\n position: relative;\\n color: $color-blue-60-2;\\n font-weight: 600;\\n font-size: var(--cds-body-compact-01-font-size, 0.875rem);\\n line-height: var(--cds-body-compact-01-line-height, 1.28572);\\n letter-spacing: var(--cds-body-compact-01-letter-spacing, 0.16px);\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n block-size: layout.$spacing-08;\\n cursor: pointer;\\n inline-size: layout.$spacing-08;\\n\\n &::after {\\n position: absolute;\\n display: block;\\n block-size: layout.$spacing-02;\\n content: '';\\n inline-size: layout.$spacing-02;\\n inset-block-end: 0.4375rem;\\n inset-inline-start: 50%;\\n -webkit-transform: translateX(-50%);\\n transform: translateX(-50%);\\n }\\n\\n &[data-disabled]::after {\\n background-color: theme.$text-disabled;\\n }\\n\\n &:not([data-disabled])::after {\\n background-color: var(--cds-link-primary, theme.$link-primary);\\n }\\n}\\n\\n// RTL overrides\\n:global([dir='rtl']) {\\n .inputWrapper {\\n padding-left: unset;\\n padding-right: layout.$spacing-04;\\n }\\n\\n .endInput {\\n padding-right: 0;\\n }\\n\\n .monthYear {\\n & div:has(input[inputmode='numeric']) {\\n > input[inputmode='numeric'] {\\n padding-right: layout.$spacing-02;\\n }\\n }\\n\\n & button {\\n &[slot='increment'] {\\n top: 0;\\n left: unset;\\n right: 0;\\n }\\n\\n &[slot='decrement'] {\\n top: layout.$spacing-04;\\n left: unset;\\n right: 0;\\n }\\n }\\n }\\n}\\n\",\"//\\n// Copyright IBM Corp. 2021\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@forward './layer/layer-sets';\\n@use './config' as *;\\n@use './layer/layer-tokens';\\n@use './theme' as *;\\n\\n:root {\\n @include layer-tokens.emit-layer-tokens(1);\\n}\\n\\n.#{$prefix}--layer-one {\\n @include layer-tokens.emit-layer-tokens(1);\\n}\\n\\n.#{$prefix}--layer-two {\\n @include layer-tokens.emit-layer-tokens(2);\\n}\\n\\n.#{$prefix}--layer-three {\\n @include layer-tokens.emit-layer-tokens(3);\\n}\\n\\n@each $i in (one, two, three) {\\n .#{$prefix}--layer-#{$i}.#{$prefix}--layer__with-background {\\n background-color: $layer-background;\\n }\\n}\\n\",\"//\\n// Copyright IBM Corp. 2018, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use '../config' as *;\\n@use '@carbon/themes/scss/config' with (\\n $prefix: $prefix\\n);\\n@use '../compat/themes' as compat;\\n@use '../themes';\\n\\n@forward '@carbon/themes/scss/theme' with (\\n $fallback: themes.$white !default,\\n $theme: compat.$white !default\\n);\\n@forward '@carbon/themes/scss/tokens';\\n\\n@use '@carbon/themes/scss/tokens';\\n@use '@carbon/themes/scss/theme';\\n@use '../utilities/custom-property';\\n\\n// Layer sets\\n$layer: custom-property.get-var('layer');\\n$layer-active: custom-property.get-var('layer-active');\\n$layer-background: custom-property.get-var('layer-background');\\n$layer-hover: custom-property.get-var('layer-hover');\\n$layer-selected: custom-property.get-var('layer-selected');\\n$layer-selected-hover: custom-property.get-var('layer-selected-hover');\\n$layer-accent: custom-property.get-var('layer-accent');\\n$layer-accent-hover: custom-property.get-var('layer-accent-hover');\\n$layer-accent-active: custom-property.get-var('layer-accent-active');\\n\\n$field: custom-property.get-var('field');\\n$field-hover: custom-property.get-var('field-hover');\\n\\n$border-subtle: custom-property.get-var('border-subtle');\\n$border-subtle-selected: custom-property.get-var('border-subtle-selected');\\n$border-strong: custom-property.get-var('border-strong');\\n$border-tile: custom-property.get-var('border-tile');\\n\",\"//\\n// Copyright IBM Corp. 2021\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n@use '../config' as *;\\n\\n@mixin content-visible {\\n opacity: 1;\\n visibility: inherit;\\n}\\n\\n@mixin content-hidden {\\n opacity: 0;\\n visibility: hidden;\\n}\\n\\n@keyframes #{$prefix}--hide-feedback {\\n 0% {\\n @include content-visible;\\n }\\n\\n 100% {\\n @include content-hidden;\\n }\\n}\\n\\n@keyframes #{$prefix}--show-feedback {\\n 0% {\\n @include content-hidden;\\n }\\n\\n 100% {\\n @include content-visible;\\n }\\n}\\n\\n@keyframes #{$prefix}--skeleton {\\n 0% {\\n opacity: 0.3;\\n transform: scaleX(0);\\n transform-origin: left;\\n }\\n\\n 20% {\\n opacity: 1;\\n transform: scaleX(1);\\n transform-origin: left;\\n }\\n\\n 28% {\\n transform: scaleX(1);\\n transform-origin: right;\\n }\\n\\n 51% {\\n transform: scaleX(0);\\n transform-origin: right;\\n }\\n\\n 58% {\\n transform: scaleX(0);\\n transform-origin: right;\\n }\\n\\n 82% {\\n transform: scaleX(1);\\n transform-origin: right;\\n }\\n\\n 83% {\\n transform: scaleX(1);\\n transform-origin: left;\\n }\\n\\n 96% {\\n transform: scaleX(0);\\n transform-origin: left;\\n }\\n\\n 100% {\\n opacity: 0.3;\\n transform: scaleX(0);\\n transform-origin: left;\\n }\\n}\\n\",\"//\\n// Copyright IBM Corp. 2021\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use '../config' as *;\\n\\n/// Include styles for screen reader/assistive text\\n/// @access public\\n/// @group utilities\\n@mixin visually-hidden {\\n position: absolute;\\n overflow: hidden;\\n padding: 0;\\n border: 0;\\n margin: -1px;\\n block-size: 1px;\\n clip: rect(0, 0, 0, 0);\\n inline-size: 1px;\\n visibility: inherit;\\n white-space: nowrap;\\n}\\n\\n.#{$prefix}--assistive-text,\\n.#{$prefix}--visually-hidden {\\n position: absolute;\\n overflow: hidden;\\n padding: 0;\\n border: 0;\\n margin: -1px;\\n block-size: 1px;\\n clip: rect(0, 0, 0, 0);\\n inline-size: 1px;\\n visibility: inherit;\\n white-space: nowrap;\\n}\\n\",\"//\\n// Copyright IBM Corp. 2016, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use '../../config' as *;\\n@use '../../layer' as *;\\n@use '../../theme';\\n@use '../../utilities/box-shadow' as *;\\n@use '../../utilities/button-reset';\\n@use '../../utilities/component-reset';\\n@use '../../utilities/custom-property';\\n@use '../../utilities/focus-outline' as *;\\n@use '../../utilities/' as *;\\n@use '../../utilities/convert';\\n@use '../../utilities/layout';\\n\\n/// The Popover component is used for triggering a pop-up next to a trigger\\n/// element, typically a button, in a given direction. It is made up of several\\n/// parts and includes a handful of modifiers to change the appearance.\\n///\\n/// The parts of a popover include:\\n/// The popover container `.cds-popover-container`\\n/// This container contains the trigger and the popover and is used to\\n/// coordinate positioning relative to the trigger button\\n///\\n/// The popover\\n/// This is an intermediate container that is used for the\\n/// `filter: drop-shadow()` effect on the popover content and the caret. It is\\n/// an absolutely positioned container that matches the dimensions of the\\n/// container so that popover content and caret can be positioned absolutely.\\n///\\n/// Popover content\\n/// This is the containing element for user-provided content and sets the\\n/// background and text color for the area.\\n///\\n/// Popover caret\\n/// This caret is an optional modifier that displays a character centered with\\n/// respect to the trigger element\\n\\n// The background color for the popover container\\n$popover-background-color: custom-property.get-var(\\n 'popover-background-color',\\n theme.$layer\\n);\\n\\n// The drop shadow value used for the popover container\\n$popover-drop-shadow: custom-property.get-var('popover-drop-shadow', 'none');\\n\\n// The border radius value for the popover container\\n$popover-border-radius: custom-property.get-var('popover-border-radius', 2px);\\n\\n// The text color used for text placed inside of the popover\\n$popover-text-color: custom-property.get-var(\\n 'popover-text-color',\\n theme.$text-primary\\n);\\n\\n// The distance between the popover container and the triggering element\\n// Specify the distance between the popover and the trigger. This value must\\n// have a unit otherwise the `calc()` expression will not work\\n$popover-offset: custom-property.get-var('popover-offset', 0rem);\\n\\n// Customize the dimensions of the caret by specifying its width or height.\\n// These values will be flipped in left or right directions to have the\\n// correct dimensions\\n$popover-caret-width: custom-property.get-var(\\n 'popover-caret-width',\\n convert.to-rem(12px)\\n);\\n$popover-caret-height: custom-property.get-var(\\n 'popover-caret-height',\\n convert.to-rem(6px)\\n);\\n\\n@mixin popover {\\n // Container\\n .#{$prefix}--popover-container {\\n display: inline-block;\\n }\\n\\n // Do not set position: relative on autoAlign popovers.\\n // Without this, autoAlign popovers will be clipped by containing elements\\n // (using overflow: hidden, etc) if position: relative is set on the container.\\n .#{$prefix}--popover-container:not(.#{$prefix}--popover--auto-align) {\\n position: relative;\\n }\\n\\n /// Modifiers\\n\\n // High contrast modifier\\n .#{$prefix}--popover--high-contrast .#{$prefix}--popover {\\n @include custom-property.declaration(\\n 'popover-background-color',\\n theme.$background-inverse\\n );\\n @include custom-property.declaration(\\n 'popover-text-color',\\n theme.$text-inverse\\n );\\n }\\n\\n // Drop shadow modifier\\n .#{$prefix}--popover--drop-shadow\\n .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n filter: drop-shadow(0 2px 2px rgba(0, 0, 0, 0.2));\\n }\\n\\n // Caret tip modifier\\n .#{$prefix}--popover--caret {\\n @include custom-property.declaration(\\n 'popover-offset',\\n convert.to-rem(10px)\\n );\\n }\\n\\n // Popover, this element contains both the caret and the popover content\\n .#{$prefix}--popover {\\n position: absolute;\\n z-index: z('floating');\\n filter: $popover-drop-shadow;\\n inset: 0;\\n pointer-events: none;\\n }\\n\\n // Popover content\\n .#{$prefix}--popover-content {\\n // The layout.redefine-tokens is been included here because it is been redifined in _tag.scss\\n @include layout.redefine-tokens(\\n (\\n size: (\\n height: (\\n sm: convert.to-rem(32px),\\n md: convert.to-rem(40px),\\n lg: convert.to-rem(48px),\\n ),\\n ),\\n )\\n );\\n @include component-reset.reset;\\n\\n position: absolute;\\n z-index: z('floating');\\n display: none;\\n border-radius: $popover-border-radius;\\n background-color: $popover-background-color;\\n color: $popover-text-color;\\n inline-size: max-content;\\n max-inline-size: convert.to-rem(368px);\\n pointer-events: auto;\\n }\\n\\n .#{$prefix}--popover--open\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n display: block;\\n }\\n\\n // We use a pseudo element inside of the popover to create a space between the\\n // target and the popover. This helps in situations like toolcarets where you do\\n // not want the toolcaret to disappear when the user moves from the target to\\n // the popover.\\n .#{$prefix}--popover-content::before {\\n position: absolute;\\n display: none;\\n content: '';\\n }\\n\\n .#{$prefix}--popover--open\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before {\\n display: block;\\n }\\n\\n // Popover caret\\n .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--auto-align.#{$prefix}--popover-caret {\\n position: absolute;\\n z-index: z('floating');\\n display: none;\\n background-color: $popover-background-color;\\n // We use `will-change: transform` to prevent antialiasing when our caret\\n // has subpixel rendering. When this happens, a single pixel line appears\\n // between the caret and popover-content that we would like to avoid\\n will-change: transform;\\n }\\n\\n .#{$prefix}--popover--caret.#{$prefix}--popover--open\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret {\\n display: block;\\n }\\n\\n // autoAlign uses a different dom structure where the caret is within the content instead of a sibling\\n .#{$prefix}--popover--auto-align.#{$prefix}--popover--caret.#{$prefix}--popover--open\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret {\\n display: block;\\n }\\n\\n .#{$prefix}--popover--tab-tip\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret {\\n display: none;\\n }\\n\\n //-----------------------------------------------------------------------------\\n // Bottom\\n //-----------------------------------------------------------------------------\\n\\n // Popover content placement\\n .#{$prefix}--popover--bottom:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-block-end: 0;\\n inset-inline-start: 50%;\\n transform: translate(-50%, calc(100% + $popover-offset));\\n }\\n\\n [dir='rtl']\\n .#{$prefix}--popover--bottom:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n transform: translate(50%, calc(100% + $popover-offset));\\n }\\n\\n .#{$prefix}--popover--bottom-left:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n .#{$prefix}--popover--bottom-start:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-block-end: 0;\\n inset-inline-start: 0;\\n transform: translate(\\n calc(-1 * $popover-offset),\\n calc(100% + $popover-offset)\\n );\\n }\\n\\n [dir='rtl']\\n .#{$prefix}--popover--bottom-left:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n [dir='rtl']\\n .#{$prefix}--popover--bottom-start:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-inline-end: 0;\\n inset-inline-start: initial;\\n }\\n\\n .#{$prefix}--popover--bottom-right:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n .#{$prefix}--popover--bottom-end:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-block-end: 0;\\n inset-inline-end: 0;\\n transform: translate($popover-offset, calc(100% + $popover-offset));\\n }\\n\\n .#{$prefix}--popover--bottom-end:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--top-end:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret {\\n inset-block-end: 0;\\n inset-inline-end: 0;\\n inset-inline-start: auto;\\n }\\n\\n .#{$prefix}--popover--bottom-start:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret {\\n inset-block-end: 0;\\n inset-inline-end: auto;\\n inset-inline-start: 0;\\n transform: translate(50%, calc($popover-offset));\\n }\\n\\n .#{$prefix}--popover--top-start:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret {\\n inset-block-end: 0;\\n inset-inline-end: auto;\\n inset-inline-start: 0;\\n transform: translate(50%, calc(-1 * $popover-offset));\\n }\\n\\n [dir='rtl']\\n .#{$prefix}--popover--bottom-right:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n [dir='rtl']\\n .#{$prefix}--popover--bottom-end:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-inline-start: 0;\\n }\\n\\n // Popover hover area placement\\n .#{$prefix}--popover--bottom\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before,\\n .#{$prefix}--popover--bottom-left\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before,\\n .#{$prefix}--popover--bottom-start\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before,\\n .#{$prefix}--popover--bottom-right\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before,\\n .#{$prefix}--popover--bottom-end\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before {\\n block-size: $popover-offset;\\n inset-block-start: 0;\\n inset-inline: 0;\\n transform: translateY(-100%);\\n }\\n\\n // Caret placement\\n .#{$prefix}--popover--bottom\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--bottom-left\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--bottom-start\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--bottom-right\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--bottom-end\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret {\\n block-size: $popover-caret-height;\\n clip-path: polygon(0% 100%, 50% 0%, 100% 100%);\\n inline-size: $popover-caret-width;\\n inset-block-end: 0;\\n inset-inline-start: 50%;\\n transform: translate(-50%, $popover-offset);\\n }\\n\\n [dir='rtl']\\n .#{$prefix}--popover--bottom\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n [dir='rtl']\\n .#{$prefix}--popover--bottom-left\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n [dir='rtl']\\n .#{$prefix}--popover--bottom-start\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n [dir='rtl']\\n .#{$prefix}--popover--bottom-right\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n [dir='rtl']\\n .#{$prefix}--popover--bottom-end\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret {\\n transform: translate(50%, $popover-offset);\\n }\\n\\n // Caret placement for autoAlign\\n .#{$prefix}--popover--bottom.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--bottom-left.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--bottom-start.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--bottom-right.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--bottom-end.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret {\\n block-size: $popover-caret-height;\\n clip-path: polygon(0% 100%, 50% 0%, 100% 100%);\\n inline-size: $popover-caret-width;\\n }\\n\\n //-----------------------------------------------------------------------------\\n // Top\\n //-----------------------------------------------------------------------------\\n\\n // Popover content placement\\n .#{$prefix}--popover--top:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-block-start: 0;\\n inset-inline-start: 50%;\\n transform: translate(-50%, calc(-100% - $popover-offset));\\n }\\n\\n [dir='rtl']\\n .#{$prefix}--popover--top:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n transform: translate(50%, calc(-100% - $popover-offset));\\n }\\n\\n .#{$prefix}--popover--top-left:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n .#{$prefix}--popover--top-start:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-block-start: 0;\\n inset-inline-start: 0;\\n transform: translate(\\n calc(-1 * $popover-offset),\\n calc(-100% - $popover-offset)\\n );\\n }\\n\\n [dir='rtl']\\n .#{$prefix}--popover--top-left:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n [dir='rtl']\\n .#{$prefix}--popover--top-start:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-inline-end: 0;\\n inset-inline-start: initial;\\n }\\n\\n .#{$prefix}--popover--top-right:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n .#{$prefix}--popover--top-end:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-block-start: 0;\\n inset-inline-end: 0;\\n transform: translate($popover-offset, calc(-100% - $popover-offset));\\n }\\n\\n [dir='rtl']\\n .#{$prefix}--popover--top-right:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n [dir='rtl']\\n .#{$prefix}--popover--top-end:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-inline-start: 0;\\n }\\n\\n // Popover hover area placement\\n .#{$prefix}--popover--top\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before,\\n .#{$prefix}--popover--top-left\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before,\\n .#{$prefix}--popover--top-start\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before,\\n .#{$prefix}--popover--top-right\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before,\\n .#{$prefix}--popover--top-end\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before {\\n block-size: $popover-offset;\\n inset-block-end: 0;\\n inset-inline: 0;\\n transform: translateY(100%);\\n }\\n\\n // Caret placement\\n .#{$prefix}--popover--top > .#{$prefix}--popover > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--top-left\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--top-start\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--top-right\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--top-end\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret {\\n block-size: $popover-caret-height;\\n clip-path: polygon(0% 0%, 50% 100%, 100% 0%);\\n inline-size: $popover-caret-width;\\n inset-block-start: 0;\\n inset-inline-start: 50%;\\n transform: translate(-50%, calc(-1 * $popover-offset));\\n }\\n\\n [dir='rtl']\\n .#{$prefix}--popover--top:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n [dir='rtl']\\n .#{$prefix}--popover--top-left:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n [dir='rtl']\\n .#{$prefix}--popover--top-start:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n [dir='rtl']\\n .#{$prefix}--popover--top-right:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n [dir='rtl']\\n .#{$prefix}--popover--top-end:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret {\\n transform: translate(50%, calc(-1 * $popover-offset));\\n }\\n\\n // Caret placement for autoAlign\\n .#{$prefix}--popover--top.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--top-left.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--top-start.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--top-right.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--top-end.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret {\\n block-size: $popover-caret-height;\\n clip-path: polygon(0% 0%, 50% 100%, 100% 0%);\\n inline-size: $popover-caret-width;\\n }\\n\\n //-----------------------------------------------------------------------------\\n // Right\\n //-----------------------------------------------------------------------------\\n\\n // Popover content placement\\n .#{$prefix}--popover--right:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-block-start: 50%;\\n inset-inline-start: 100%;\\n // Add in 0.1px to prevent rounding errors where the content is\\n // moved farther than the caret\\n transform: translate($popover-offset, -50%);\\n }\\n\\n .#{$prefix}--popover--right-top:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n .#{$prefix}--popover--right-start:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-block-start: 50%;\\n inset-inline-start: 100%;\\n transform: translate(\\n $popover-offset,\\n calc(0.5 * $popover-offset * -1 - 16px)\\n );\\n }\\n\\n .#{$prefix}--popover--right-bottom:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n .#{$prefix}--popover--right-end:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-block-end: 50%;\\n inset-inline-start: 100%;\\n transform: translate($popover-offset, calc(0.5 * $popover-offset + 16px));\\n }\\n\\n [dir='rtl']\\n .#{$prefix}--popover--right:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n [dir='rtl']\\n .#{$prefix}--popover--right-bottom:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n [dir='rtl']\\n .#{$prefix}--popover--right-end:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n [dir='rtl']\\n .#{$prefix}--popover--right-top:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n [dir='rtl']\\n .#{$prefix}--popover--right-start:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-inline-end: 100%;\\n inset-inline-start: initial;\\n }\\n\\n // Popover hover area placement\\n .#{$prefix}--popover--right\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before,\\n .#{$prefix}--popover--right-top\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before,\\n .#{$prefix}--popover--right-start\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before,\\n .#{$prefix}--popover--right-bottom\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before,\\n .#{$prefix}--popover--right-end\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before {\\n inline-size: $popover-offset;\\n inset-block: 0;\\n inset-inline-start: 0;\\n transform: translateX(-100%);\\n }\\n\\n // Caret placement\\n .#{$prefix}--popover--right:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--right-top:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--right-start:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--right-bottom:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--right-end:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret {\\n block-size: $popover-caret-width;\\n clip-path: polygon(0% 50%, 100% 0%, 100% 100%);\\n inline-size: $popover-caret-height;\\n inset-block-start: 50%;\\n inset-inline-start: 100%;\\n transform: translate(calc($popover-offset - 100%), -50%);\\n }\\n\\n [dir='rtl']\\n .#{$prefix}--popover--right:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n [dir='rtl']\\n .#{$prefix}--popover--right-top:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n [dir='rtl']\\n .#{$prefix}--popover--right-start:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n [dir='rtl']\\n .#{$prefix}--popover--right-bottom:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n [dir='rtl']\\n .#{$prefix}--popover--right-end:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret {\\n inset-inline-end: 100%;\\n inset-inline-start: initial;\\n }\\n\\n // Caret placement for autoAlign\\n .#{$prefix}--popover--right.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--right-top.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--right-start.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--right-bottom.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--right-end.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret {\\n block-size: $popover-caret-width;\\n clip-path: polygon(0% 50%, 100% 0%, 100% 100%);\\n inline-size: $popover-caret-height;\\n }\\n\\n //-----------------------------------------------------------------------------\\n // Left\\n //-----------------------------------------------------------------------------\\n\\n // Popover content placement\\n .#{$prefix}--popover--left:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-block-start: 50%;\\n inset-inline-end: 100%;\\n // Add in 0.1px to prevent rounding errors where the content is\\n // moved farther than the caret\\n transform: translate(calc(-1 * $popover-offset + 0.1px), -50%);\\n }\\n\\n .#{$prefix}--popover--left-top:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n .#{$prefix}--popover--left-start:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-block-start: 50%;\\n inset-inline-end: 100%;\\n // Add in 0.1px to prevent rounding errors where the content is\\n // moved farther than the caret\\n transform: translate(\\n calc(-1 * $popover-offset),\\n calc(-1 * 0.5 * $popover-offset - 16px)\\n );\\n }\\n\\n .#{$prefix}--popover--left-bottom:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n .#{$prefix}--popover--left-end:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-block-end: 50%;\\n inset-inline-end: 100%;\\n // Add in 0.1px to prevent rounding errors where the content is\\n // moved farther than the caret\\n transform: translate(\\n calc(-1 * $popover-offset),\\n calc(0.5 * $popover-offset + 16px)\\n );\\n }\\n\\n [dir='rtl']\\n .#{$prefix}--popover--left:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n [dir='rtl']\\n .#{$prefix}--popover--left-bottom:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n [dir='rtl']\\n .#{$prefix}--popover--left-end:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n [dir='rtl']\\n .#{$prefix}--popover--left-top:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content,\\n [dir='rtl']\\n .#{$prefix}--popover--left-start:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n inset-inline-end: initial;\\n inset-inline-start: 100%;\\n }\\n\\n // Popover hover area placement\\n .#{$prefix}--popover--left\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before,\\n .#{$prefix}--popover--left-top\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before,\\n .#{$prefix}--popover--left-start\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before,\\n .#{$prefix}--popover--left-bottom\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before,\\n .#{$prefix}--popover--left-end\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content::before {\\n inline-size: $popover-offset;\\n inset-block: 0;\\n inset-inline-end: 0;\\n transform: translateX(100%);\\n }\\n\\n // Caret placement\\n .#{$prefix}--popover--left:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--left-top:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--left-start:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--left-bottom:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--left-end:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret {\\n block-size: $popover-caret-width;\\n clip-path: polygon(0% 0%, 100% 50%, 0% 100%);\\n inline-size: $popover-caret-height;\\n inset-block-start: 50%;\\n inset-inline-end: 100%;\\n transform: translate(calc(-1 * $popover-offset + 100%), -50%);\\n }\\n\\n [dir='rtl']\\n .#{$prefix}--popover--left:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n [dir='rtl']\\n .#{$prefix}--popover--left-top:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n [dir='rtl']\\n .#{$prefix}--popover--left-start:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n [dir='rtl']\\n .#{$prefix}--popover--left-bottom:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret,\\n [dir='rtl']\\n .#{$prefix}--popover--left-end:not(.#{$prefix}--popover--auto-align)\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-caret {\\n inset-inline-end: initial;\\n inset-inline-start: 100%;\\n }\\n\\n // Caret placement for autoAlign\\n .#{$prefix}--popover--left.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--left-top.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--left-start.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--left-bottom.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret,\\n .#{$prefix}--popover--left-end.#{$prefix}--popover--auto-align\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content\\n > .#{$prefix}--popover-caret {\\n block-size: $popover-caret-width;\\n clip-path: polygon(0% 0%, 100% 50%, 0% 100%);\\n inline-size: $popover-caret-height;\\n }\\n\\n //-----------------------------------------------------------------------------\\n // Tab Tip Variant\\n //-----------------------------------------------------------------------------\\n .#{$prefix}--popover--tab-tip\\n > .#{$prefix}--popover\\n > .#{$prefix}--popover-content {\\n border-radius: 0;\\n }\\n\\n .#{$prefix}--popover--tab-tip .#{$prefix}--popover {\\n will-change: filter;\\n }\\n\\n .#{$prefix}--popover--tab-tip__button {\\n @include button-reset.reset;\\n\\n position: relative;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n block-size: convert.to-rem(32px);\\n inline-size: convert.to-rem(32px);\\n\\n &:focus {\\n @include focus-outline('outline');\\n }\\n\\n &:hover {\\n background-color: theme.$layer-hover;\\n }\\n }\\n\\n .#{$prefix}--popover--tab-tip.#{$prefix}--popover--open\\n .#{$prefix}--popover--tab-tip__button {\\n background: theme.$layer;\\n box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);\\n }\\n\\n .#{$prefix}--popover--tab-tip.#{$prefix}--popover--open\\n .#{$prefix}--popover--tab-tip__button:not(:focus)::after {\\n position: absolute;\\n z-index: z('floating') + 1;\\n background: theme.$layer;\\n block-size: 2px;\\n content: '';\\n inline-size: 100%;\\n inset-block-end: 0;\\n }\\n\\n .#{$prefix}--popover--tab-tip__button svg {\\n fill: theme.$icon-primary;\\n }\\n}\\n\",\"//\\n// Copyright IBM Corp. 2018, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n/// Resets default browser styling\\n/// @access public\\n/// @group utilities\\n@mixin reset {\\n box-sizing: border-box;\\n padding: 0;\\n border: 0;\\n margin: 0;\\n font-family: inherit;\\n font-size: 100%;\\n vertical-align: baseline;\\n\\n *,\\n *::before,\\n *::after {\\n box-sizing: inherit;\\n }\\n}\\n\",\"//\\n// Copyright IBM Corp. 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use 'sass:map';\\n\\n@use '../config';\\n@use '../layout' as *;\\n@use './custom-property';\\n\\n/// Enables the use of contextual layout tokens within a component. This mixin should be\\n/// included on the outermost selector of the component.\\n/// @param {String} $group - The layout group to use for this component\\n/// @param {String} $default - The default step if the component is not within a layout\\n/// @param {String} $min - The minimum step supported by this component (optional)\\n/// @param {String} $max - The maximum step supported by this component (optional)\\n/// @example @include use('size', $default: 'md', $min: 'sm', $max: 'lg')\\n/// @group utilities\\n/// @access public\\n@mixin use($group, $default, $min: null, $max: null) {\\n $properties: map.get($layout-tokens, $group);\\n\\n @each $property, $steps in $properties {\\n $minValue: custom-property.get-var('layout-#{$group}-#{$property}-min');\\n @if $min {\\n $minValue: max(\\n $minValue,\\n custom-property.get-var('layout-#{$group}-#{$property}-#{$min}')\\n );\\n }\\n\\n $maxValue: custom-property.get-var('layout-#{$group}-#{$property}-max');\\n @if $max {\\n $maxValue: min(\\n $maxValue,\\n custom-property.get-var('layout-#{$group}-#{$property}-#{$max}')\\n );\\n }\\n\\n $value: clamp(\\n $minValue,\\n custom-property.get-var(\\n 'layout-#{$group}-#{$property}',\\n custom-property.get-var('layout-#{$group}-#{$property}-#{$default}')\\n ),\\n $maxValue\\n );\\n\\n @include custom-property.declaration(\\n 'layout-#{$group}-#{$property}-local',\\n $value\\n );\\n }\\n}\\n\\n/// Allows to redefine any token values of the layout module in case a component is using\\n/// non-standard values and should still participate in the layout context\\n/// @param {Map} $overrides - The map of overrides. Must follow ( group: ( property: ( step: value ) ) )\\n/// @example @include redefine-tokens(( size: ( height: ( sm: 1.125rem, md: 1.5rem ) ) ))\\n/// @group utilities\\n/// @access public\\n@mixin redefine-tokens($overrides) {\\n @each $group, $properties in $overrides {\\n @each $property, $steps in $properties {\\n @each $step, $value in $steps {\\n @include custom-property.declaration(\\n 'layout-#{$group}-#{$property}-#{$step}',\\n $value\\n );\\n\\n &.#{config.$prefix}--layout--#{$group}-#{$step},\\n .#{config.$prefix}--layout--#{$group}-#{$step} :where(&) {\\n $token: custom-property.get-var(\\n 'layout-#{$group}-#{$property}-#{$step}'\\n );\\n @include custom-property.declaration(\\n 'layout-#{$group}-#{$property}',\\n $token\\n );\\n }\\n }\\n }\\n }\\n}\\n\\n/// Internal base function for retrieving a property from a layout group.\\n/// @param {String} $group - The group name as defined in the $layout-tokens\\n/// @param {String} $property - The property name\\n/// @example @include -group('size', $property)\\n/// @group utilities\\n/// @access private\\n@function -group($group, $property) {\\n @return custom-property.get-var('layout-#{$group}-#{$property}-local');\\n}\\n\\n/// Retrieves the current value for a property token in the layout size.\\n/// @param {String} $property - The property name\\n/// @example height: size('height');\\n/// @group utilities\\n/// @access public\\n@function size($property) {\\n @return -group('size', $property);\\n}\\n\\n/// Retrieves the current value for a property token in the layout density.\\n/// @param {String} $property - The property name\\n/// @example padding-inline: density('padding-inline');\\n/// @group utilities\\n/// @access public\\n@function density($property) {\\n @return -group('density', $property);\\n}\\n\",\"//\\n// Copyright IBM Corp. 2021\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n@use 'component-reset';\\n\\n/// Resets button styles\\n/// @access public\\n/// @param {Bool} $width [true] - Sets width to 100% if true\\n/// @example @include button-reset($width: false);\\n/// @group utilities\\n@mixin reset($width: true) {\\n @include component-reset.reset;\\n\\n display: inline-block;\\n padding: 0;\\n border: 0;\\n appearance: none;\\n background: none;\\n cursor: pointer;\\n text-align: start;\\n\\n @if ($width == true) {\\n inline-size: 100%;\\n }\\n\\n &::-moz-focus-inner {\\n border: 0;\\n }\\n}\\n\",\"//\\n// Copyright IBM Corp. 2021\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use '../theme';\\n\\n/// Adds outline styles depending on specific type\\n/// @access public\\n/// @param {String} $type ['border'] - Type of outline from: `border`, `blurred`, `outline`, `invalid`, `reset`\\n/// @example @include focus-outline('outline');\\n/// @group utilities\\n@mixin focus-outline($type: 'border') {\\n @if ($type == 'border') {\\n outline: 1px solid theme.$focus;\\n\\n @media screen and (prefers-contrast) {\\n outline-style: dotted;\\n }\\n }\\n\\n @if ($type == 'blurred') {\\n box-shadow: 0 0 0 3px theme.$focus;\\n outline: 1px solid transparent;\\n }\\n\\n @if ($type == 'outline') {\\n outline: 2px solid theme.$focus;\\n outline-offset: -2px;\\n\\n @media screen and (prefers-contrast) {\\n outline-style: dotted;\\n }\\n }\\n\\n @if ($type == 'outline-compat') {\\n box-sizing: border-box;\\n border: 2px solid theme.$focus;\\n\\n @media screen and (prefers-contrast) {\\n border-style: dotted;\\n }\\n }\\n\\n @if ($type == 'invalid') {\\n outline: 2px solid theme.$support-error;\\n outline-offset: -2px;\\n\\n @media screen and (prefers-contrast) {\\n outline-style: dotted;\\n }\\n }\\n\\n @if ($type == 'reset') {\\n outline: 2px solid transparent;\\n outline-offset: -2px;\\n }\\n}\\n\",\"// Code generated by @carbon/themes. DO NOT EDIT.\\n//\\n// Copyright IBM Corp. 2018, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use 'sass:map';\\n@use '../config';\\n@use '../theme';\\n\\n/// Internal helper for generating CSS Custom Properties\\n@function _get($token) {\\n @if config.$use-fallback-value == false {\\n @return var(--#{config.$prefix}-#{$token});\\n } @else {\\n @return var(--#{config.$prefix}-#{$token}, #{theme.get($token)});\\n }\\n}\\n\\n/// The CSS Custom Property for the `background` token\\n$background: _get('background') !default;\\n\\n/// The CSS Custom Property for the `background-active` token\\n$background-active: _get('background-active') !default;\\n\\n/// The CSS Custom Property for the `background-selected` token\\n$background-selected: _get('background-selected') !default;\\n\\n/// The CSS Custom Property for the `background-selected-hover` token\\n$background-selected-hover: _get('background-selected-hover') !default;\\n\\n/// The CSS Custom Property for the `background-hover` token\\n$background-hover: _get('background-hover') !default;\\n\\n/// The CSS Custom Property for the `background-brand` token\\n$background-brand: _get('background-brand') !default;\\n\\n/// The CSS Custom Property for the `background-inverse` token\\n$background-inverse: _get('background-inverse') !default;\\n\\n/// The CSS Custom Property for the `background-inverse-hover` token\\n$background-inverse-hover: _get('background-inverse-hover') !default;\\n\\n/// The CSS Custom Property for the `layer-01` token\\n$layer-01: _get('layer-01') !default;\\n\\n/// The CSS Custom Property for the `layer-active-01` token\\n$layer-active-01: _get('layer-active-01') !default;\\n\\n/// The CSS Custom Property for the `layer-background-01` token\\n$layer-background-01: _get('layer-background-01') !default;\\n\\n/// The CSS Custom Property for the `layer-hover-01` token\\n$layer-hover-01: _get('layer-hover-01') !default;\\n\\n/// The CSS Custom Property for the `layer-selected-01` token\\n$layer-selected-01: _get('layer-selected-01') !default;\\n\\n/// The CSS Custom Property for the `layer-selected-hover-01` token\\n$layer-selected-hover-01: _get('layer-selected-hover-01') !default;\\n\\n/// The CSS Custom Property for the `layer-02` token\\n$layer-02: _get('layer-02') !default;\\n\\n/// The CSS Custom Property for the `layer-active-02` token\\n$layer-active-02: _get('layer-active-02') !default;\\n\\n/// The CSS Custom Property for the `layer-background-02` token\\n$layer-background-02: _get('layer-background-02') !default;\\n\\n/// The CSS Custom Property for the `layer-hover-02` token\\n$layer-hover-02: _get('layer-hover-02') !default;\\n\\n/// The CSS Custom Property for the `layer-selected-02` token\\n$layer-selected-02: _get('layer-selected-02') !default;\\n\\n/// The CSS Custom Property for the `layer-selected-hover-02` token\\n$layer-selected-hover-02: _get('layer-selected-hover-02') !default;\\n\\n/// The CSS Custom Property for the `layer-03` token\\n$layer-03: _get('layer-03') !default;\\n\\n/// The CSS Custom Property for the `layer-active-03` token\\n$layer-active-03: _get('layer-active-03') !default;\\n\\n/// The CSS Custom Property for the `layer-background-03` token\\n$layer-background-03: _get('layer-background-03') !default;\\n\\n/// The CSS Custom Property for the `layer-hover-03` token\\n$layer-hover-03: _get('layer-hover-03') !default;\\n\\n/// The CSS Custom Property for the `layer-selected-03` token\\n$layer-selected-03: _get('layer-selected-03') !default;\\n\\n/// The CSS Custom Property for the `layer-selected-hover-03` token\\n$layer-selected-hover-03: _get('layer-selected-hover-03') !default;\\n\\n/// The CSS Custom Property for the `layer-selected-inverse` token\\n$layer-selected-inverse: _get('layer-selected-inverse') !default;\\n\\n/// The CSS Custom Property for the `layer-selected-disabled` token\\n$layer-selected-disabled: _get('layer-selected-disabled') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-01` token\\n$layer-accent-01: _get('layer-accent-01') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-active-01` token\\n$layer-accent-active-01: _get('layer-accent-active-01') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-hover-01` token\\n$layer-accent-hover-01: _get('layer-accent-hover-01') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-02` token\\n$layer-accent-02: _get('layer-accent-02') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-active-02` token\\n$layer-accent-active-02: _get('layer-accent-active-02') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-hover-02` token\\n$layer-accent-hover-02: _get('layer-accent-hover-02') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-03` token\\n$layer-accent-03: _get('layer-accent-03') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-active-03` token\\n$layer-accent-active-03: _get('layer-accent-active-03') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-hover-03` token\\n$layer-accent-hover-03: _get('layer-accent-hover-03') !default;\\n\\n/// The CSS Custom Property for the `field-01` token\\n$field-01: _get('field-01') !default;\\n\\n/// The CSS Custom Property for the `field-hover-01` token\\n$field-hover-01: _get('field-hover-01') !default;\\n\\n/// The CSS Custom Property for the `field-02` token\\n$field-02: _get('field-02') !default;\\n\\n/// The CSS Custom Property for the `field-hover-02` token\\n$field-hover-02: _get('field-hover-02') !default;\\n\\n/// The CSS Custom Property for the `field-03` token\\n$field-03: _get('field-03') !default;\\n\\n/// The CSS Custom Property for the `field-hover-03` token\\n$field-hover-03: _get('field-hover-03') !default;\\n\\n/// The CSS Custom Property for the `interactive` token\\n$interactive: _get('interactive') !default;\\n\\n/// The CSS Custom Property for the `border-subtle-00` token\\n$border-subtle-00: _get('border-subtle-00') !default;\\n\\n/// The CSS Custom Property for the `border-subtle-01` token\\n$border-subtle-01: _get('border-subtle-01') !default;\\n\\n/// The CSS Custom Property for the `border-subtle-selected-01` token\\n$border-subtle-selected-01: _get('border-subtle-selected-01') !default;\\n\\n/// The CSS Custom Property for the `border-subtle-02` token\\n$border-subtle-02: _get('border-subtle-02') !default;\\n\\n/// The CSS Custom Property for the `border-subtle-selected-02` token\\n$border-subtle-selected-02: _get('border-subtle-selected-02') !default;\\n\\n/// The CSS Custom Property for the `border-subtle-03` token\\n$border-subtle-03: _get('border-subtle-03') !default;\\n\\n/// The CSS Custom Property for the `border-subtle-selected-03` token\\n$border-subtle-selected-03: _get('border-subtle-selected-03') !default;\\n\\n/// The CSS Custom Property for the `border-strong-01` token\\n$border-strong-01: _get('border-strong-01') !default;\\n\\n/// The CSS Custom Property for the `border-strong-02` token\\n$border-strong-02: _get('border-strong-02') !default;\\n\\n/// The CSS Custom Property for the `border-strong-03` token\\n$border-strong-03: _get('border-strong-03') !default;\\n\\n/// The CSS Custom Property for the `border-tile-01` token\\n$border-tile-01: _get('border-tile-01') !default;\\n\\n/// The CSS Custom Property for the `border-tile-02` token\\n$border-tile-02: _get('border-tile-02') !default;\\n\\n/// The CSS Custom Property for the `border-tile-03` token\\n$border-tile-03: _get('border-tile-03') !default;\\n\\n/// The CSS Custom Property for the `border-inverse` token\\n$border-inverse: _get('border-inverse') !default;\\n\\n/// The CSS Custom Property for the `border-interactive` token\\n$border-interactive: _get('border-interactive') !default;\\n\\n/// The CSS Custom Property for the `border-disabled` token\\n$border-disabled: _get('border-disabled') !default;\\n\\n/// The CSS Custom Property for the `text-primary` token\\n$text-primary: _get('text-primary') !default;\\n\\n/// The CSS Custom Property for the `text-secondary` token\\n$text-secondary: _get('text-secondary') !default;\\n\\n/// The CSS Custom Property for the `text-placeholder` token\\n$text-placeholder: _get('text-placeholder') !default;\\n\\n/// The CSS Custom Property for the `text-helper` token\\n$text-helper: _get('text-helper') !default;\\n\\n/// The CSS Custom Property for the `text-error` token\\n$text-error: _get('text-error') !default;\\n\\n/// The CSS Custom Property for the `text-inverse` token\\n$text-inverse: _get('text-inverse') !default;\\n\\n/// The CSS Custom Property for the `text-on-color` token\\n$text-on-color: _get('text-on-color') !default;\\n\\n/// The CSS Custom Property for the `text-on-color-disabled` token\\n$text-on-color-disabled: _get('text-on-color-disabled') !default;\\n\\n/// The CSS Custom Property for the `text-disabled` token\\n$text-disabled: _get('text-disabled') !default;\\n\\n/// The CSS Custom Property for the `link-primary` token\\n$link-primary: _get('link-primary') !default;\\n\\n/// The CSS Custom Property for the `link-primary-hover` token\\n$link-primary-hover: _get('link-primary-hover') !default;\\n\\n/// The CSS Custom Property for the `link-secondary` token\\n$link-secondary: _get('link-secondary') !default;\\n\\n/// The CSS Custom Property for the `link-inverse-visited` token\\n$link-inverse-visited: _get('link-inverse-visited') !default;\\n\\n/// The CSS Custom Property for the `link-visited` token\\n$link-visited: _get('link-visited') !default;\\n\\n/// The CSS Custom Property for the `link-inverse` token\\n$link-inverse: _get('link-inverse') !default;\\n\\n/// The CSS Custom Property for the `link-inverse-active` token\\n$link-inverse-active: _get('link-inverse-active') !default;\\n\\n/// The CSS Custom Property for the `link-inverse-hover` token\\n$link-inverse-hover: _get('link-inverse-hover') !default;\\n\\n/// The CSS Custom Property for the `icon-primary` token\\n$icon-primary: _get('icon-primary') !default;\\n\\n/// The CSS Custom Property for the `icon-secondary` token\\n$icon-secondary: _get('icon-secondary') !default;\\n\\n/// The CSS Custom Property for the `icon-inverse` token\\n$icon-inverse: _get('icon-inverse') !default;\\n\\n/// The CSS Custom Property for the `icon-on-color` token\\n$icon-on-color: _get('icon-on-color') !default;\\n\\n/// The CSS Custom Property for the `icon-on-color-disabled` token\\n$icon-on-color-disabled: _get('icon-on-color-disabled') !default;\\n\\n/// The CSS Custom Property for the `icon-disabled` token\\n$icon-disabled: _get('icon-disabled') !default;\\n\\n/// The CSS Custom Property for the `icon-interactive` token\\n$icon-interactive: _get('icon-interactive') !default;\\n\\n/// The CSS Custom Property for the `support-error` token\\n$support-error: _get('support-error') !default;\\n\\n/// The CSS Custom Property for the `support-success` token\\n$support-success: _get('support-success') !default;\\n\\n/// The CSS Custom Property for the `support-warning` token\\n$support-warning: _get('support-warning') !default;\\n\\n/// The CSS Custom Property for the `support-info` token\\n$support-info: _get('support-info') !default;\\n\\n/// The CSS Custom Property for the `support-error-inverse` token\\n$support-error-inverse: _get('support-error-inverse') !default;\\n\\n/// The CSS Custom Property for the `support-success-inverse` token\\n$support-success-inverse: _get('support-success-inverse') !default;\\n\\n/// The CSS Custom Property for the `support-warning-inverse` token\\n$support-warning-inverse: _get('support-warning-inverse') !default;\\n\\n/// The CSS Custom Property for the `support-info-inverse` token\\n$support-info-inverse: _get('support-info-inverse') !default;\\n\\n/// The CSS Custom Property for the `support-caution-major` token\\n$support-caution-major: _get('support-caution-major') !default;\\n\\n/// The CSS Custom Property for the `support-caution-minor` token\\n$support-caution-minor: _get('support-caution-minor') !default;\\n\\n/// The CSS Custom Property for the `support-caution-undefined` token\\n$support-caution-undefined: _get('support-caution-undefined') !default;\\n\\n/// The CSS Custom Property for the `ai-popover-background` token\\n$ai-popover-background: _get('ai-popover-background') !default;\\n\\n/// The CSS Custom Property for the `ai-popover-shadow-outer-01` token\\n$ai-popover-shadow-outer-01: _get('ai-popover-shadow-outer-01') !default;\\n\\n/// The CSS Custom Property for the `ai-popover-shadow-outer-02` token\\n$ai-popover-shadow-outer-02: _get('ai-popover-shadow-outer-02') !default;\\n\\n/// The CSS Custom Property for the `ai-inner-shadow` token\\n$ai-inner-shadow: _get('ai-inner-shadow') !default;\\n\\n/// The CSS Custom Property for the `ai-aura-start-sm` token\\n$ai-aura-start-sm: _get('ai-aura-start-sm') !default;\\n\\n/// The CSS Custom Property for the `ai-aura-start` token\\n$ai-aura-start: _get('ai-aura-start') !default;\\n\\n/// The CSS Custom Property for the `ai-aura-end` token\\n$ai-aura-end: _get('ai-aura-end') !default;\\n\\n/// The CSS Custom Property for the `ai-aura-hover-background` token\\n$ai-aura-hover-background: _get('ai-aura-hover-background') !default;\\n\\n/// The CSS Custom Property for the `ai-aura-hover-start` token\\n$ai-aura-hover-start: _get('ai-aura-hover-start') !default;\\n\\n/// The CSS Custom Property for the `ai-aura-hover-end` token\\n$ai-aura-hover-end: _get('ai-aura-hover-end') !default;\\n\\n/// The CSS Custom Property for the `ai-border-strong` token\\n$ai-border-strong: _get('ai-border-strong') !default;\\n\\n/// The CSS Custom Property for the `ai-border-start` token\\n$ai-border-start: _get('ai-border-start') !default;\\n\\n/// The CSS Custom Property for the `ai-border-end` token\\n$ai-border-end: _get('ai-border-end') !default;\\n\\n/// The CSS Custom Property for the `ai-drop-shadow` token\\n$ai-drop-shadow: _get('ai-drop-shadow') !default;\\n\\n/// The CSS Custom Property for the `ai-skeleton-background` token\\n$ai-skeleton-background: _get('ai-skeleton-background') !default;\\n\\n/// The CSS Custom Property for the `ai-skeleton-element-background` token\\n$ai-skeleton-element-background: _get(\\n 'ai-skeleton-element-background'\\n) !default;\\n\\n/// The CSS Custom Property for the `ai-overlay` token\\n$ai-overlay: _get('ai-overlay') !default;\\n\\n/// The CSS Custom Property for the `ai-popover-caret-center` token\\n$ai-popover-caret-center: _get('ai-popover-caret-center') !default;\\n\\n/// The CSS Custom Property for the `ai-popover-caret-bottom` token\\n$ai-popover-caret-bottom: _get('ai-popover-caret-bottom') !default;\\n\\n/// The CSS Custom Property for the `ai-popover-caret-bottom-background` token\\n$ai-popover-caret-bottom-background: _get(\\n 'ai-popover-caret-bottom-background'\\n) !default;\\n\\n/// The CSS Custom Property for the `ai-popover-caret-bottom-background-actions` token\\n$ai-popover-caret-bottom-background-actions: _get(\\n 'ai-popover-caret-bottom-background-actions'\\n) !default;\\n\\n/// The CSS Custom Property for the `chat-prompt-background` token\\n$chat-prompt-background: _get('chat-prompt-background') !default;\\n\\n/// The CSS Custom Property for the `chat-prompt-border-start` token\\n$chat-prompt-border-start: _get('chat-prompt-border-start') !default;\\n\\n/// The CSS Custom Property for the `chat-prompt-border-end` token\\n$chat-prompt-border-end: _get('chat-prompt-border-end') !default;\\n\\n/// The CSS Custom Property for the `chat-bubble-user` token\\n$chat-bubble-user: _get('chat-bubble-user') !default;\\n\\n/// The CSS Custom Property for the `chat-bubble-agent` token\\n$chat-bubble-agent: _get('chat-bubble-agent') !default;\\n\\n/// The CSS Custom Property for the `chat-bubble-border` token\\n$chat-bubble-border: _get('chat-bubble-border') !default;\\n\\n/// The CSS Custom Property for the `chat-avatar-bot` token\\n$chat-avatar-bot: _get('chat-avatar-bot') !default;\\n\\n/// The CSS Custom Property for the `chat-avatar-agent` token\\n$chat-avatar-agent: _get('chat-avatar-agent') !default;\\n\\n/// The CSS Custom Property for the `chat-avatar-user` token\\n$chat-avatar-user: _get('chat-avatar-user') !default;\\n\\n/// The CSS Custom Property for the `chat-shell-background` token\\n$chat-shell-background: _get('chat-shell-background') !default;\\n\\n/// The CSS Custom Property for the `chat-header-background` token\\n$chat-header-background: _get('chat-header-background') !default;\\n\\n/// The CSS Custom Property for the `chat-button` token\\n$chat-button: _get('chat-button') !default;\\n\\n/// The CSS Custom Property for the `chat-button-hover` token\\n$chat-button-hover: _get('chat-button-hover') !default;\\n\\n/// The CSS Custom Property for the `chat-button-text-hover` token\\n$chat-button-text-hover: _get('chat-button-text-hover') !default;\\n\\n/// The CSS Custom Property for the `chat-button-active` token\\n$chat-button-active: _get('chat-button-active') !default;\\n\\n/// The CSS Custom Property for the `chat-button-selected` token\\n$chat-button-selected: _get('chat-button-selected') !default;\\n\\n/// The CSS Custom Property for the `chat-button-text-selected` token\\n$chat-button-text-selected: _get('chat-button-text-selected') !default;\\n\\n/// The CSS Custom Property for the `highlight` token\\n$highlight: _get('highlight') !default;\\n\\n/// The CSS Custom Property for the `overlay` token\\n$overlay: _get('overlay') !default;\\n\\n/// The CSS Custom Property for the `toggle-off` token\\n$toggle-off: _get('toggle-off') !default;\\n\\n/// The CSS Custom Property for the `shadow` token\\n$shadow: _get('shadow') !default;\\n\\n/// The CSS Custom Property for the `focus` token\\n$focus: _get('focus') !default;\\n\\n/// The CSS Custom Property for the `focus-inset` token\\n$focus-inset: _get('focus-inset') !default;\\n\\n/// The CSS Custom Property for the `focus-inverse` token\\n$focus-inverse: _get('focus-inverse') !default;\\n\\n/// The CSS Custom Property for the `skeleton-background` token\\n$skeleton-background: _get('skeleton-background') !default;\\n\\n/// The CSS Custom Property for the `skeleton-element` token\\n$skeleton-element: _get('skeleton-element') !default;\\n\",\"//\\n// Copyright IBM Corp. 2016, 2025\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use '../popover';\\n@use '../../config' as *;\\n@use '../../spacing';\\n@use '../../theme';\\n@use '../../type';\\n@use '../../layer' as *;\\n@use '../../utilities/custom-property';\\n@use '../../utilities/convert';\\n@use '../../utilities/button-reset';\\n@use '../../utilities/focus-outline';\\n\\n$tooltip-padding-block: custom-property.get-var(\\n 'tooltip-padding-block',\\n spacing.$spacing-05\\n);\\n\\n$tooltip-padding-inline: custom-property.get-var(\\n 'tooltip-padding-inline',\\n spacing.$spacing-05\\n);\\n\\n@mixin tooltip {\\n .#{$prefix}--tooltip {\\n @include custom-property.declaration('popover-offset', 12px);\\n }\\n\\n .#{$prefix}--tooltip-content {\\n @include type.type-style('body-01');\\n\\n padding: $tooltip-padding-block $tooltip-padding-inline;\\n max-inline-size: convert.to-rem(288px);\\n overflow-wrap: break-word;\\n }\\n}\\n\\n@mixin definition-tooltip {\\n .#{$prefix}--definition-term {\\n @include button-reset.reset;\\n\\n border-radius: 0;\\n border-block-end: 1px dotted theme.$border-strong;\\n color: theme.$text-primary;\\n }\\n\\n .#{$prefix}--definition-term:focus {\\n @include focus-outline.focus-outline;\\n\\n border-block-end-color: theme.$border-interactive;\\n }\\n\\n .#{$prefix}--definition-term:hover {\\n border-block-end-color: theme.$border-interactive;\\n }\\n\\n .#{$prefix}--definition-tooltip {\\n @include type.type-style('body-01');\\n\\n padding: convert.to-rem(8px) convert.to-rem(16px);\\n max-inline-size: convert.to-rem(176px);\\n text-wrap: auto;\\n word-break: break-word;\\n }\\n}\\n\\n@mixin icon-tooltip {\\n .#{$prefix}--icon-tooltip {\\n @include custom-property.declaration(\\n 'tooltip-padding-block',\\n convert.to-rem(2px)\\n );\\n @include custom-property.declaration(\\n 'popover-caret-width',\\n convert.to-rem(8px)\\n );\\n @include custom-property.declaration(\\n 'popover-caret-height',\\n convert.to-rem(4px)\\n );\\n @include custom-property.declaration('popover-offset', convert.to-rem(8px));\\n }\\n\\n .#{$prefix}--icon-tooltip .#{$prefix}--tooltip-content {\\n @include type.type-style('body-compact-01');\\n }\\n}\\n\",\"//\\n// Copyright IBM Corp. 2018, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n// stylelint-disable number-max-precision\\n\\n@use 'sass:map';\\n@use 'sass:math';\\n@use '@carbon/grid/scss/config' as gridconfig;\\n@use '@carbon/grid/scss/breakpoint' as grid;\\n@use 'prefix' as *;\\n@use 'font-family';\\n@use 'scale';\\n\\n/// @type Map\\n/// @access public\\n/// @deprecated\\n/// @group @carbon/type\\n$caption-01: (\\n font-size: scale.type-scale(1),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.33333,\\n letter-spacing: 0.32px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @deprecated\\n/// @group @carbon/type\\n$caption-02: (\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.28572,\\n letter-spacing: 0.32px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$label-01: (\\n font-size: scale.type-scale(1),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.33333,\\n letter-spacing: 0.32px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$label-02: (\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.28572,\\n letter-spacing: 0.16px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$legal-01: (\\n font-size: scale.type-scale(1),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.33333,\\n letter-spacing: 0.32px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$legal-02: (\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.28572,\\n letter-spacing: 0.16px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @deprecated\\n/// @group @carbon/type\\n$helper-text-01: (\\n font-size: scale.type-scale(1),\\n line-height: 1.33333,\\n letter-spacing: 0.32px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @deprecated\\n/// @group @carbon/type\\n$helper-text-02: (\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.28572,\\n letter-spacing: 0.16px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$body-short-01: (\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.28572,\\n letter-spacing: 0.16px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$body-compact-01: $body-short-01 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$body-long-01: (\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.42857,\\n letter-spacing: 0.16px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$body-01: $body-long-01 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$body-short-02: (\\n font-size: scale.type-scale(3),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.375,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$body-compact-02: $body-short-02 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$body-long-02: (\\n font-size: scale.type-scale(3),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.5,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$body-02: $body-long-02 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$code-01: (\\n font-family: font-family.font-family('mono'),\\n font-size: scale.type-scale(1),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.33333,\\n letter-spacing: 0.32px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$code-02: (\\n font-family: font-family.font-family('mono'),\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.42857,\\n letter-spacing: 0.32px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-01: (\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('semibold'),\\n line-height: 1.42857,\\n letter-spacing: 0.16px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$productive-heading-01: (\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('semibold'),\\n line-height: 1.28572,\\n letter-spacing: 0.16px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-compact-01: $productive-heading-01 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-02: (\\n font-size: scale.type-scale(3),\\n font-weight: font-family.font-weight('semibold'),\\n line-height: 1.5,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$productive-heading-02: (\\n font-size: scale.type-scale(3),\\n font-weight: font-family.font-weight('semibold'),\\n line-height: 1.375,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-compact-02: $productive-heading-02 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$productive-heading-03: (\\n font-size: scale.type-scale(5),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.4,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-03: $productive-heading-03 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$productive-heading-04: (\\n font-size: scale.type-scale(7),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.28572,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-04: $productive-heading-04 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$productive-heading-05: (\\n font-size: scale.type-scale(8),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.25,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-05: $productive-heading-05 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$productive-heading-06: (\\n font-size: scale.type-scale(10),\\n font-weight: font-family.font-weight('light'),\\n // Extra digit needed for precision in Chrome\\n line-height: 1.199,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-06: $productive-heading-06 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$productive-heading-07: (\\n font-size: scale.type-scale(12),\\n font-weight: font-family.font-weight('light'),\\n line-height: 1.19,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-07: $productive-heading-07 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$expressive-heading-01: $heading-01 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$expressive-heading-02: $heading-02 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$expressive-heading-03: (\\n font-size: scale.type-scale(5),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.4,\\n letter-spacing: 0,\\n breakpoints: (\\n xlg: (\\n font-size: scale.type-scale(5),\\n line-height: 1.4,\\n ),\\n max: (\\n font-size: scale.type-scale(6),\\n line-height: 1.334,\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-heading-03: $expressive-heading-03 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$expressive-heading-04: (\\n font-size: scale.type-scale(7),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.28572,\\n letter-spacing: 0,\\n breakpoints: (\\n xlg: (\\n font-size: scale.type-scale(8),\\n line-height: 1.25,\\n font-weight: font-family.font-weight('regular'),\\n ),\\n max: (\\n font-size: scale.type-scale(8),\\n font-weight: font-family.font-weight('regular'),\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-heading-04: $expressive-heading-04 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$expressive-heading-05: (\\n font-size: scale.type-scale(8),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.25,\\n letter-spacing: 0,\\n breakpoints: (\\n md: (\\n font-size: scale.type-scale(9),\\n font-weight: font-family.font-weight('light'),\\n line-height: 1.22,\\n ),\\n lg: (\\n font-size: scale.type-scale(10),\\n line-height: 1.19,\\n ),\\n xlg: (\\n font-size: scale.type-scale(11),\\n line-height: 1.17,\\n ),\\n max: (\\n font-size: scale.type-scale(13),\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-heading-05: $expressive-heading-05 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$expressive-heading-06: (\\n font-size: scale.type-scale(8),\\n font-weight: font-family.font-weight('semibold'),\\n line-height: 1.25,\\n letter-spacing: 0,\\n breakpoints: (\\n md: (\\n font-size: scale.type-scale(9),\\n line-height: 1.22,\\n ),\\n lg: (\\n font-size: scale.type-scale(10),\\n line-height: 1.19,\\n ),\\n xlg: (\\n font-size: scale.type-scale(11),\\n line-height: 1.17,\\n ),\\n max: (\\n font-size: scale.type-scale(13),\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-heading-06: $expressive-heading-06 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$expressive-paragraph-01: (\\n font-size: scale.type-scale(6),\\n font-weight: font-family.font-weight('light'),\\n line-height: 1.334,\\n letter-spacing: 0,\\n breakpoints: (\\n lg: (\\n font-size: scale.type-scale(7),\\n line-height: 1.28572,\\n ),\\n max: (\\n font-size: scale.type-scale(8),\\n line-height: 1.25,\\n ),\\n ),\\n);\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-paragraph-01: $expressive-paragraph-01 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$quotation-01: (\\n font-family: font-family.font-family('serif'),\\n font-size: scale.type-scale(5),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.3,\\n letter-spacing: 0,\\n breakpoints: (\\n md: (\\n font-size: scale.type-scale(5),\\n ),\\n lg: (\\n font-size: scale.type-scale(6),\\n line-height: 1.334,\\n ),\\n xlg: (\\n font-size: scale.type-scale(7),\\n line-height: 1.28572,\\n ),\\n max: (\\n font-size: scale.type-scale(8),\\n line-height: 1.25,\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-quotation-01: $quotation-01 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$quotation-02: (\\n font-family: font-family.font-family('serif'),\\n font-size: scale.type-scale(8),\\n font-weight: font-family.font-weight('light'),\\n line-height: 1.25,\\n letter-spacing: 0,\\n breakpoints: (\\n md: (\\n font-size: scale.type-scale(9),\\n line-height: 1.22,\\n ),\\n lg: (\\n font-size: scale.type-scale(10),\\n line-height: 1.19,\\n ),\\n xlg: (\\n font-size: scale.type-scale(11),\\n line-height: 1.17,\\n ),\\n max: (\\n font-size: scale.type-scale(13),\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-quotation-02: $quotation-02 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$display-01: (\\n font-size: scale.type-scale(10),\\n font-weight: font-family.font-weight('light'),\\n line-height: 1.19,\\n letter-spacing: 0,\\n breakpoints: (\\n md: (\\n font-size: scale.type-scale(10),\\n ),\\n lg: (\\n font-size: scale.type-scale(12),\\n ),\\n xlg: (\\n font-size: scale.type-scale(13),\\n line-height: 1.17,\\n ),\\n max: (\\n font-size: scale.type-scale(15),\\n line-height: 1.13,\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-display-01: $display-01 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$display-02: (\\n font-size: scale.type-scale(10),\\n font-weight: font-family.font-weight('semibold'),\\n line-height: 1.19,\\n letter-spacing: 0,\\n breakpoints: (\\n md: (\\n font-size: scale.type-scale(10),\\n ),\\n lg: (\\n font-size: scale.type-scale(12),\\n ),\\n xlg: (\\n font-size: scale.type-scale(13),\\n line-height: 1.16,\\n ),\\n max: (\\n font-size: scale.type-scale(15),\\n line-height: 1.13,\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-display-02: $display-02 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$display-03: (\\n font-size: scale.type-scale(10),\\n font-weight: font-family.font-weight('light'),\\n line-height: 1.19,\\n letter-spacing: 0,\\n breakpoints: (\\n md: (\\n font-size: scale.type-scale(12),\\n line-height: 1.18,\\n ),\\n lg: (\\n font-size: scale.type-scale(13),\\n line-height: 1.16,\\n letter-spacing: -0.64px,\\n ),\\n xlg: (\\n font-size: scale.type-scale(15),\\n line-height: 1.13,\\n letter-spacing: -0.64px,\\n ),\\n max: (\\n font-size: scale.type-scale(16),\\n line-height: 1.11,\\n letter-spacing: -0.96px,\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-display-03: $display-03 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$display-04: (\\n font-size: scale.type-scale(10),\\n font-weight: font-family.font-weight('light'),\\n line-height: 1.19,\\n letter-spacing: 0,\\n breakpoints: (\\n md: (\\n font-size: scale.type-scale(14),\\n line-height: 1.15,\\n ),\\n lg: (\\n font-size: scale.type-scale(17),\\n line-height: 1.11,\\n letter-spacing: -0.64px,\\n ),\\n xlg: (\\n font-size: scale.type-scale(20),\\n line-height: 1.07,\\n letter-spacing: -0.64px,\\n ),\\n max: (\\n font-size: scale.type-scale(23),\\n line-height: 1.05,\\n letter-spacing: -0.96px,\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-display-04: $display-04 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$tokens: (\\n caption-01: $caption-01,\\n caption-02: $caption-02,\\n label-01: $label-01,\\n label-02: $label-02,\\n helper-text-01: $helper-text-01,\\n helper-text-02: $helper-text-02,\\n body-short-01: $body-short-01,\\n body-short-02: $body-short-02,\\n body-long-01: $body-long-01,\\n body-long-02: $body-long-02,\\n code-01: $code-01,\\n code-02: $code-02,\\n heading-01: $heading-01,\\n heading-02: $heading-02,\\n productive-heading-01: $productive-heading-01,\\n productive-heading-02: $productive-heading-02,\\n productive-heading-03: $productive-heading-03,\\n productive-heading-04: $productive-heading-04,\\n productive-heading-05: $productive-heading-05,\\n productive-heading-06: $productive-heading-06,\\n productive-heading-07: $productive-heading-07,\\n expressive-paragraph-01: $expressive-paragraph-01,\\n expressive-heading-01: $expressive-heading-01,\\n expressive-heading-02: $expressive-heading-02,\\n expressive-heading-03: $expressive-heading-03,\\n expressive-heading-04: $expressive-heading-04,\\n expressive-heading-05: $expressive-heading-05,\\n expressive-heading-06: $expressive-heading-06,\\n quotation-01: $quotation-01,\\n quotation-02: $quotation-02,\\n display-01: $display-01,\\n display-02: $display-02,\\n display-03: $display-03,\\n display-04: $display-04,\\n // V11 Tokens\\n legal-01: $legal-01,\\n legal-02: $legal-02,\\n body-compact-01: $body-compact-01,\\n body-compact-02: $body-compact-02,\\n heading-compact-01: $heading-compact-01,\\n heading-compact-02: $heading-compact-02,\\n body-01: $body-01,\\n body-02: $body-02,\\n heading-03: $heading-03,\\n heading-04: $heading-04,\\n heading-05: $heading-05,\\n heading-06: $heading-06,\\n heading-07: $heading-07,\\n fluid-heading-03: $fluid-heading-03,\\n fluid-heading-04: $fluid-heading-04,\\n fluid-heading-05: $fluid-heading-05,\\n fluid-heading-06: $fluid-heading-06,\\n fluid-paragraph-01: $fluid-paragraph-01,\\n fluid-quotation-01: $fluid-quotation-01,\\n fluid-quotation-02: $fluid-quotation-02,\\n fluid-display-01: $fluid-display-01,\\n fluid-display-02: $fluid-display-02,\\n fluid-display-03: $fluid-display-03,\\n fluid-display-04: $fluid-display-04,\\n) !default;\\n\\n/// @param {Map} $map\\n/// @access public\\n/// @group @carbon/type\\n@mixin properties($map) {\\n @each $name, $value in $map {\\n #{$name}: $value;\\n }\\n}\\n\\n/// @param {Number} $value - Number with units\\n/// @return {Number} Without units\\n/// @access public\\n/// @group @carbon/type\\n@function strip-unit($value) {\\n @return math.div($value, $value * 0 + 1);\\n}\\n\\n/// This helper includes fluid type styles for the given token value. Fluid type\\n/// means that the `font-size` is computed using `calc()` in order to be\\n/// determined by the screen size instead of a breakpoint. As a result, fluid\\n/// styles should be used with caution in fixed width contexts.\\n///\\n/// In addition, we make use of %-based line-heights so that the line-height of\\n/// each type style is computed correctly due to the dynamic nature of the\\n/// `font-size`.\\n///\\n/// Most of the logic for this work comes from CSS Tricks:\\n/// https://css-tricks.com/snippets/css/fluid-typography/\\n///\\n/// @param {Map} $type-styles - The value of a given type token\\n/// @param {Map} $breakpoints [$grid-breakpoints] - Custom breakpoints to use\\n/// @access public\\n/// @group @carbon/type\\n@mixin fluid-type($type-styles, $breakpoints: gridconfig.$grid-breakpoints) {\\n // Include the initial styles for the given token by default without any\\n // media query guard. This includes `font-size` as a fallback in the case\\n // that a browser does not support `calc()`\\n @include properties(map.remove($type-styles, breakpoints));\\n // We also need to include the `sm` styles by default since they don't\\n // appear in the fluid styles for tokens\\n @include fluid-type-size($type-styles, sm, $breakpoints);\\n\\n // Finally, we need to go through all the breakpoints defined in the type\\n // token and apply the properties and fluid type size for that given\\n // breakpoint\\n @each $name, $values in map.get($type-styles, breakpoints) {\\n @include grid.breakpoint($name) {\\n @include properties($values);\\n @include fluid-type-size($type-styles, $name, $breakpoints);\\n }\\n }\\n}\\n\\n/// Computes the fluid `font-size` for a given type style and breakpoint\\n/// @param {Map} $type-styles - The styles for a given token\\n/// @param {String} $name - The name of the breakpoint to which we apply the fluid\\n/// @param {Map} $breakpoints [$grid-breakpoints] - The breakpoints for the grid system\\n/// @access public\\n/// @group @carbon/type\\n@mixin fluid-type-size(\\n $type-styles,\\n $name,\\n $breakpoints: gridconfig.$grid-breakpoints\\n) {\\n // Get the information about the breakpoint we're currently working in. Useful\\n // for getting initial width information\\n $breakpoint: map.get($breakpoints, $name);\\n\\n // Our fluid styles are captured under the 'breakpoints' property in our type\\n // styles map. These define what values to treat as `max-` variables below\\n $fluid-sizes: map.get($type-styles, breakpoints);\\n $fluid-breakpoint: ();\\n // Special case for `sm` because the styles for small are on the type style\\n // directly\\n @if $name == sm {\\n $fluid-breakpoint: map.remove($type-styles, breakpoints);\\n } @else {\\n $fluid-breakpoint: map.get($fluid-sizes, $name);\\n }\\n\\n // Initialize our font-sizes to the default size for the type style\\n $max-font-size: map.get($type-styles, font-size);\\n $min-font-size: map.get($type-styles, font-size);\\n @if map.has-key($fluid-breakpoint, font-size) {\\n $min-font-size: map.get($fluid-breakpoint, font-size);\\n }\\n\\n // Initialize our min and max width to the width of the current breakpoint\\n $max-vw: map.get($breakpoint, width);\\n $min-vw: map.get($breakpoint, width);\\n\\n // We can use `breakpoint-next` to see if there is another breakpoint we can\\n // use to update `max-font-size` and `max-vw` with larger values\\n $next-breakpoint-available: grid.breakpoint-next($name, $breakpoints);\\n $next-fluid-breakpoint-name: null;\\n\\n // We need to figure out what the next available fluid breakpoint is for our\\n // given $type-styles. In this loop we try and iterate through breakpoints\\n // until we either manually set $next-breakpoint-available to null or\\n // `breakpoint-next` returns null.\\n @while $next-breakpoint-available {\\n @if map.has-key($fluid-sizes, $next-breakpoint-available) {\\n $next-fluid-breakpoint-name: $next-breakpoint-available;\\n $next-breakpoint-available: null;\\n } @else {\\n $next-breakpoint-available: grid.breakpoint-next(\\n $next-breakpoint-available,\\n $breakpoints\\n );\\n }\\n }\\n\\n // If we have found the next available fluid breakpoint name, then we know\\n // that we have values that we can use to set max-font-size and max-vw as both\\n // values derive from the next breakpoint\\n @if $next-fluid-breakpoint-name {\\n $next-fluid-breakpoint: map.get($breakpoints, $next-fluid-breakpoint-name);\\n $max-font-size: map.get(\\n map.get($fluid-sizes, $next-fluid-breakpoint-name),\\n font-size\\n );\\n $max-vw: map.get($next-fluid-breakpoint, width);\\n\\n // prettier-ignore\\n font-size: calc(#{$min-font-size} +\\n #{strip-unit($max-font-size - $min-font-size)} *\\n ((100vw - #{$min-vw}) / #{strip-unit($max-vw - $min-vw)})\\n );\\n } @else {\\n // Otherwise, just default to setting the font size found from the type\\n // style or the given fluid breakpoint in the type style\\n font-size: $min-font-size;\\n }\\n}\\n\\n// TODO move following variable and `custom-property` mixin into shared file for\\n// both `@carbon/type` and `@carbon/themes`\\n\\n/// @access private\\n/// @group @carbon/type\\n@mixin custom-properties($name, $value) {\\n @each $property, $value in $value {\\n #{$property}: var(\\n --#{$custom-property-prefix}-#{$name}-#{$property},\\n #{$value}\\n );\\n }\\n}\\n\\n/// Helper mixin to include the styles for a given token in any selector in your\\n/// project. Also includes an optional fluid option that will enable fluid\\n/// styles for the token if they are defined. Fluid styles will cause the\\n/// token's font-size to be computed based on the viewport size. As a result, use\\n/// with caution in fixed contexts.\\n/// @param {String} $name - The name of the token to get the styles for\\n/// @param {Boolean} $fluid [false] - Specify whether to include fluid styles for the\\n/// @param {Map} $breakpoints [$grid-breakpoints] - Provide a custom breakpoint map to use\\n/// @access public\\n/// @group @carbon/type\\n@mixin type-style(\\n $name,\\n $fluid: false,\\n $breakpoints: gridconfig.$grid-breakpoints\\n) {\\n @if not map.has-key($tokens, $name) {\\n @error 'Unable to find a token with the name: `#{$name}`';\\n }\\n\\n $token: map.get($tokens, $name);\\n\\n // If $fluid is set to true and the token has breakpoints defined for fluid\\n // styles, delegate to the fluid-type helper for the given token\\n @if $fluid == true and map.has-key($token, 'breakpoints') {\\n @include fluid-type($token, $breakpoints);\\n } @else {\\n @include custom-properties($name, $token);\\n }\\n}\\n\",\"//\\n// Copyright IBM Corp. 2016, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use 'tokens' as *;\\n@use 'vars' as *;\\n@use 'mixins' as *;\\n@use '../tooltip';\\n@use '../../config' as *;\\n@use '../../spacing' as *;\\n@use '../../theme' as *;\\n@use '../../type' as *;\\n@use '../../layer' as *;\\n@use '../../utilities/convert';\\n@use '../../utilities/focus-outline';\\n@use '../../utilities/high-contrast-mode' as *;\\n@use '../../utilities/skeleton' as *;\\n@use '../../utilities/visually-hidden' as *;\\n@use '../../utilities/layout';\\n\\n@mixin button {\\n .#{$prefix}--btn {\\n @include layout.use('size', $min: 'xs', $default: 'lg', $max: '2xl');\\n @include layout.use('density', $default: 'normal');\\n\\n @include button-base;\\n }\\n\\n // Reset intrinsic padding in Firefox (see #731)\\n .#{$prefix}--btn::-moz-focus-inner {\\n padding: 0;\\n border: 0;\\n }\\n\\n .#{$prefix}--btn--primary {\\n @include button-theme(\\n $button-primary,\\n transparent,\\n $text-on-color,\\n $button-primary-hover,\\n currentColor,\\n $button-primary-active\\n );\\n\\n &:hover {\\n color: $text-on-color;\\n }\\n }\\n\\n .#{$prefix}--btn--secondary {\\n @include button-theme(\\n $button-secondary,\\n transparent,\\n $text-on-color,\\n $button-secondary-hover,\\n currentColor,\\n $button-secondary-active\\n );\\n\\n &:hover,\\n &:focus {\\n color: $text-on-color;\\n }\\n }\\n\\n .#{$prefix}--btn--tertiary {\\n @include button-theme(\\n transparent,\\n $button-tertiary,\\n $button-tertiary,\\n $button-tertiary-hover,\\n currentColor,\\n $button-tertiary-active\\n );\\n\\n &:hover {\\n color: $text-inverse;\\n }\\n\\n &:focus {\\n background-color: $button-tertiary;\\n color: $text-inverse;\\n }\\n\\n &:active {\\n border-color: transparent;\\n background-color: $button-tertiary-active;\\n color: $text-inverse;\\n }\\n\\n &:disabled,\\n &:hover:disabled,\\n &:focus:disabled,\\n &.#{$prefix}--btn--disabled,\\n &.#{$prefix}--btn--disabled:hover,\\n &.#{$prefix}--btn--disabled:focus {\\n background: transparent;\\n color: $text-disabled;\\n outline: none;\\n }\\n }\\n\\n .#{$prefix}--btn--ghost {\\n @include button-theme(\\n transparent,\\n transparent,\\n $link-primary,\\n $background-hover,\\n currentColor,\\n $background-active\\n );\\n\\n padding-inline-end: calc(\\n layout.density('padding-inline') - convert.to-rem(1px)\\n );\\n\\n .#{$prefix}--btn__icon {\\n position: static;\\n align-self: center;\\n margin-inline-start: $spacing-03;\\n }\\n\\n &:hover,\\n &:active {\\n color: $link-primary-hover;\\n }\\n\\n &:active {\\n background-color: $background-active;\\n }\\n\\n &:disabled,\\n &:hover:disabled,\\n &:focus:disabled,\\n &.#{$prefix}--btn--disabled,\\n &.#{$prefix}--btn--disabled:hover,\\n &.#{$prefix}--btn--disabled:focus {\\n border-color: transparent;\\n background: transparent;\\n color: $text-disabled;\\n outline: none;\\n }\\n\\n &:not([disabled]) svg {\\n fill: $icon-primary;\\n }\\n }\\n\\n .#{$prefix}--btn--icon-only {\\n align-items: center;\\n justify-content: center;\\n padding: 0;\\n block-size: layout.size('height');\\n inline-size: layout.size('height');\\n padding-block-start: 0;\\n\\n > :first-child {\\n min-inline-size: convert.to-rem(16px);\\n }\\n\\n .#{$prefix}--btn__icon {\\n position: static;\\n }\\n\\n &.#{$prefix}--btn--ghost .#{$prefix}--btn__icon,\\n &.#{$prefix}--btn--danger--ghost .#{$prefix}--btn__icon {\\n margin: 0;\\n }\\n\\n &.#{$prefix}--btn--danger--ghost {\\n padding-inline-end: calc(\\n layout.density('padding-inline') - convert.to-rem(16px)\\n );\\n }\\n }\\n\\n // Adjust text positioning in extra small variant only\\n .#{$prefix}--btn--xs:not(.#{$prefix}--btn--icon-only) {\\n padding-block-start: 1.5px;\\n }\\n\\n // Adjust icon positioning in extra small, small, medium variants only\\n .#{$prefix}--btn--xs:not(.#{$prefix}--btn--icon-only) .#{$prefix}--btn__icon,\\n .#{$prefix}--btn--sm:not(.#{$prefix}--btn--icon-only) .#{$prefix}--btn__icon,\\n .#{$prefix}--btn--md:not(.#{$prefix}--btn--icon-only) .#{$prefix}--btn__icon {\\n margin-block-start: 0;\\n }\\n\\n .#{$prefix}--btn--icon-only.#{$prefix}--btn--selected {\\n background: $background-selected;\\n }\\n\\n .#{$prefix}--btn path[data-icon-path='inner-path'] {\\n fill: none;\\n }\\n\\n .#{$prefix}--btn--ghost.#{$prefix}--btn--icon-only\\n .#{$prefix}--btn__icon\\n path:not([data-icon-path]):not([fill='none']),\\n .#{$prefix}--btn--ghost.#{$prefix}--btn--icon-only .#{$prefix}--btn__icon {\\n fill: $icon-primary;\\n }\\n\\n .#{$prefix}--btn--ghost.#{$prefix}--btn--icon-only[disabled]\\n .#{$prefix}--btn__icon\\n path:not([data-icon-path]):not([fill='none']),\\n .#{$prefix}--btn--ghost.#{$prefix}--btn--icon-only[disabled]\\n .#{$prefix}--btn__icon,\\n .#{$prefix}--btn.#{$prefix}--btn--icon-only.#{$prefix}--btn--ghost[disabled]:hover\\n .#{$prefix}--btn__icon {\\n fill: $icon-on-color-disabled;\\n }\\n\\n .#{$prefix}--btn--ghost.#{$prefix}--btn--icon-only[disabled] {\\n cursor: not-allowed;\\n }\\n\\n // Workaround to ensure onMouseEnter events fire when moving\\n // from a disabled button to a non-disabled button (#13815)\\n .#{$prefix}--icon-tooltip--disabled .#{$prefix}--tooltip-trigger__wrapper {\\n cursor: not-allowed;\\n }\\n\\n .#{$prefix}--icon-tooltip--disabled .#{$prefix}--btn--icon-only[disabled] {\\n pointer-events: none;\\n }\\n\\n .#{$prefix}--btn--danger {\\n @include button-theme(\\n $button-danger-primary,\\n transparent,\\n $text-on-color,\\n $button-danger-hover,\\n currentColor,\\n $button-danger-active\\n );\\n\\n &:hover {\\n color: $text-on-color;\\n }\\n\\n &--tertiary {\\n @include button-theme(\\n transparent,\\n $button-danger-secondary,\\n $button-danger-secondary,\\n $button-danger-hover,\\n currentColor,\\n $button-danger-active\\n );\\n\\n &:hover {\\n border-color: $button-danger-hover;\\n color: $text-on-color;\\n }\\n\\n &:focus {\\n background-color: $button-danger-primary;\\n color: $text-on-color;\\n }\\n\\n &:active {\\n border-color: $button-danger-active;\\n background-color: $button-danger-active;\\n color: $text-on-color;\\n }\\n\\n &:disabled,\\n &:hover:disabled,\\n &:focus:disabled,\\n &.#{$prefix}--btn--disabled,\\n &.#{$prefix}--btn--disabled:hover,\\n &.#{$prefix}--btn--disabled:focus {\\n background: transparent;\\n color: $text-disabled;\\n outline: none;\\n }\\n }\\n\\n &--ghost {\\n @include button-theme(\\n transparent,\\n transparent,\\n $button-danger-secondary,\\n $button-danger-hover,\\n currentColor,\\n $button-danger-active\\n );\\n\\n padding-inline-end: calc(\\n layout.density('padding-inline') - convert.to-rem(1px)\\n );\\n\\n .#{$prefix}--btn__icon {\\n position: static;\\n margin-inline-start: $spacing-03;\\n }\\n\\n &:hover,\\n &:active {\\n color: $text-on-color;\\n }\\n\\n &:disabled,\\n &:hover:disabled,\\n &:focus:disabled,\\n &.#{$prefix}--btn--disabled,\\n &.#{$prefix}--btn--disabled:hover,\\n &.#{$prefix}--btn--disabled:focus {\\n border-color: transparent;\\n background: transparent;\\n color: $text-disabled;\\n outline: none;\\n }\\n }\\n }\\n\\n //expressive styles\\n .#{$prefix}--btn--expressive {\\n @include type-style('body-compact-02');\\n\\n padding-block: min(\\n calc(\\n (layout.size('height') - var(--temp-expressive-1lh)) / 2 - convert.to-rem(\\n 1px\\n )\\n ),\\n var(--temp-padding-block-max)\\n );\\n }\\n\\n .#{$prefix}--btn--icon-only.#{$prefix}--btn--expressive {\\n padding: 12px 13px;\\n //default size 48px\\n }\\n\\n .#{$prefix}--btn.#{$prefix}--btn--expressive .#{$prefix}--btn__icon {\\n block-size: convert.to-rem(20px);\\n inline-size: convert.to-rem(20px);\\n }\\n\\n .#{$prefix}--btn-set .#{$prefix}--btn.#{$prefix}--btn--expressive {\\n max-inline-size: convert.to-rem(320px);\\n }\\n\\n // Skeleton State\\n .#{$prefix}--btn.#{$prefix}--skeleton {\\n @include skeleton;\\n\\n inline-size: convert.to-rem(150px);\\n }\\n\\n // button set styles\\n .#{$prefix}--btn-set {\\n display: flex;\\n }\\n\\n .#{$prefix}--btn-set--stacked {\\n flex-direction: column;\\n }\\n\\n .#{$prefix}--btn-set .#{$prefix}--btn {\\n inline-size: 100%;\\n // 196px from design kit\\n max-inline-size: convert.to-rem(196px);\\n\\n &:not(:focus) {\\n box-shadow: convert.to-rem(-1px) 0 0 0 $button-separator;\\n }\\n\\n &:first-of-type:not(:focus) {\\n box-shadow: inherit;\\n }\\n }\\n\\n .#{$prefix}--btn-set .#{$prefix}--btn:focus + .#{$prefix}--btn {\\n box-shadow: inherit;\\n }\\n\\n .#{$prefix}--btn-set--stacked .#{$prefix}--btn:not(:focus) {\\n box-shadow: 0 convert.to-rem(-1px) 0 0 $button-separator;\\n }\\n\\n .#{$prefix}--btn-set--stacked .#{$prefix}--btn:first-of-type:not(:focus) {\\n box-shadow: inherit;\\n }\\n\\n .#{$prefix}--btn-set .#{$prefix}--btn.#{$prefix}--btn--disabled {\\n box-shadow: convert.to-rem(-1px) 0 0 0 $icon-on-color-disabled;\\n\\n &:first-of-type {\\n box-shadow: none;\\n }\\n }\\n\\n .#{$prefix}--btn-set--stacked .#{$prefix}--btn.#{$prefix}--btn--disabled {\\n box-shadow: 0 convert.to-rem(-1px) 0 0 $layer-selected-disabled;\\n\\n &:first-of-type {\\n box-shadow: none;\\n }\\n }\\n\\n .#{$prefix}--btn-set .#{$prefix}--btn.#{$prefix}--btn--loading {\\n border-color: transparent;\\n background-color: transparent;\\n box-shadow: none;\\n }\\n\\n // badge indicator\\n\\n .#{$prefix}--btn--sm .#{$prefix}--badge-indicator {\\n margin-block-start: $spacing-02;\\n margin-inline-end: $spacing-02;\\n }\\n\\n // Windows HCM fix\\n .#{$prefix}--btn:focus {\\n @include high-contrast-mode('focus');\\n }\\n\\n // RTL overrides\\n [dir='rtl'] .#{$prefix}--btn-set .#{$prefix}--btn:not(:focus) {\\n box-shadow: convert.to-rem(1px) 0 0 0 $button-separator;\\n }\\n}\\n\",\"//\\n// Copyright IBM Corp. 2016, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use 'sass:map';\\n\\n@use 'vars' as *;\\n@use '../../config' as *;\\n@use '../../motion' as *;\\n@use '../../spacing' as *;\\n@use '../../theme' as *;\\n@use '../../type' as *;\\n@use '../../utilities/component-reset';\\n@use '../../utilities/convert';\\n@use '../../utilities/custom-property';\\n@use '../../utilities/layout';\\n@use 'tokens' as *;\\n\\n$button-focus-color: custom-property.get-var('button-focus-color', $focus);\\n\\n@mixin button-base {\\n // https://caniuse.com/mdn-css_types_length_lh\\n --temp-1lh: (\\n #{custom-property.get-var(\\n 'body-compact-01-line-height',\\n map.get($body-compact-01, line-height)\\n )} * 1em\\n );\\n --temp-expressive-1lh: (\\n #{custom-property.get-var(\\n 'body-compact-02-line-height',\\n map.get($body-compact-02, line-height)\\n )} * 1em\\n );\\n // -1px to compensate for border width\\n --temp-padding-block-max: calc(\\n (#{custom-property.get-var('layout-size-height-lg')} - var(--temp-1lh)) / 2 -\\n #{convert.to-rem(1px)}\\n );\\n\\n @include component-reset.reset;\\n @include type-style('body-compact-01');\\n\\n position: relative;\\n display: inline-flex;\\n flex-shrink: 0;\\n justify-content: space-between;\\n border-radius: $button-border-radius;\\n // Fix to remove added margins on buttons in safari (see #5155)\\n margin: 0;\\n cursor: pointer;\\n inline-size: max-content;\\n max-inline-size: convert.to-rem(320px);\\n min-block-size: layout.size('height');\\n outline: none;\\n // -1px to compensate for border width\\n padding-block: min(\\n calc((layout.size('height') - var(--temp-1lh)) / 2 - convert.to-rem(1px)),\\n var(--temp-padding-block-max)\\n );\\n padding-inline: calc(layout.density('padding-inline') - convert.to-rem(1px))\\n calc(\\n layout.density('padding-inline') * 3 + convert.to-rem(16px) - convert.to-rem(\\n 1px\\n )\\n );\\n text-align: start;\\n text-decoration: none;\\n transition:\\n background $duration-fast-01 motion(entrance, productive),\\n box-shadow $duration-fast-01 motion(entrance, productive),\\n border-color $duration-fast-01 motion(entrance, productive),\\n outline $duration-fast-01 motion(entrance, productive);\\n vertical-align: top;\\n\\n &:disabled,\\n &:hover:disabled,\\n &:focus:disabled,\\n &.#{$prefix}--btn--disabled,\\n &.#{$prefix}--btn--disabled:hover,\\n &.#{$prefix}--btn--disabled:focus {\\n border-color: $button-disabled;\\n background: $button-disabled;\\n box-shadow: none;\\n color: $text-on-color-disabled;\\n cursor: not-allowed;\\n }\\n\\n .#{$prefix}--btn__icon {\\n position: absolute;\\n flex-shrink: 0;\\n block-size: convert.to-rem(16px);\\n inline-size: convert.to-rem(16px);\\n // -1px to compensate for border width\\n inset-block-start: min(\\n calc(\\n (layout.size('height') - convert.to-rem(16px)) / 2 - convert.to-rem(1px)\\n ),\\n var(--temp-padding-block-max)\\n );\\n inset-inline-end: layout.density('padding-inline');\\n margin-block-start: convert.to-rem(1px);\\n }\\n}\\n\\n/// Button variant styles\\n/// @access private\\n/// @group button\\n@mixin button-theme(\\n $bg-color,\\n $border-color,\\n $font-color,\\n $hover-bg-color,\\n $icon-color,\\n $active-color\\n) {\\n border-width: $button-outline-width;\\n border-style: solid;\\n border-color: $border-color;\\n background-color: $bg-color;\\n color: $font-color;\\n\\n &:hover {\\n background-color: $hover-bg-color;\\n }\\n\\n &:focus {\\n border-color: $button-focus-color;\\n box-shadow:\\n inset 0 0 0 $button-outline-width $button-focus-color,\\n inset 0 0 0 $button-border-width $background;\\n }\\n\\n &:active {\\n background-color: $active-color;\\n }\\n\\n .#{$prefix}--btn__icon,\\n .#{$prefix}--btn__icon path:not([data-icon-path]):not([fill='none']) {\\n fill: $icon-color;\\n }\\n}\\n\\n@mixin button-padding-large {\\n align-items: baseline;\\n padding-block-start: $spacing-05;\\n padding-inline: $spacing-05 $spacing-10;\\n}\\n\",\"//\\n// Copyright IBM Corp. 2016, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use '../../spacing' as *;\\n\\n/// @type Number\\n/// @access public\\n/// @group button\\n$button-font-weight: 400 !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group button\\n$button-font-size: 0.875rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group button\\n$button-border-radius: 0 !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group button\\n$button-height: 3rem !default;\\n\\n/// @type Value\\n/// @access public\\n/// @group button\\n$button-padding: calc(0.875rem - 3px) calc(#{$spacing-10} - 1px)\\n calc(0.875rem - 3px) calc(#{$spacing-05} - 1px) !default;\\n\\n/// @type Value\\n/// @access public\\n/// @group button\\n$button-padding-field: calc(0.675rem - 3px) calc(#{$spacing-10} - 4px)\\n calc(0.675rem - 3px) calc(#{$spacing-05} - 4px) !default;\\n\\n/// @type Value\\n/// @access public\\n/// @group button\\n$button-padding-sm: calc(0.375rem - 3px) calc(#{$spacing-10} - 4px)\\n calc(0.375rem - 3px) calc(#{$spacing-05} - 4px) !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group button\\n$button-padding-lg: $spacing-04 !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group button\\n/// Uses the same padding-y as normal buttons, but removes extra padding-right\\n$button-padding-ghost: calc(0.875rem - 3px) $spacing-05 !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group button\\n/// Uses the same padding-y as field buttons, but removes extra padding-right\\n$button-padding-ghost-field: calc(0.675rem - 3px) $spacing-05 !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group button\\n/// Uses the same padding-y as small buttons, but removes extra padding-right\\n$button-padding-ghost-sm: calc(0.375rem - 3px) $spacing-05 !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group button\\n$button-border-width: 2px !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group button\\n$button-outline-width: 1px !default;\\n\",\"//\\n// Copyright IBM Corp. 2018, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use 'sass:map';\\n@use '../../config';\\n@use '../../themes';\\n@use '../../utilities/component-tokens';\\n@use '@carbon/themes/scss/component-tokens' as button;\\n\\n$button-separator: (\\n fallback: map.get(button.$button-separator, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-separator, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-separator, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-separator, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-separator, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-primary: (\\n fallback: map.get(button.$button-primary, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-primary, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-primary, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-primary, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-primary, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-secondary: (\\n fallback: map.get(button.$button-secondary, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-secondary, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-secondary, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-secondary, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-secondary, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-tertiary: (\\n fallback: map.get(button.$button-tertiary, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-tertiary, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-tertiary, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-tertiary, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-tertiary, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-danger-primary: (\\n fallback: map.get(button.$button-danger-primary, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-danger-primary, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-danger-primary, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-danger-primary, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-danger-primary, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-danger-secondary: (\\n fallback: map.get(button.$button-danger-secondary, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-danger-secondary, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-danger-secondary, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-danger-secondary, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-danger-secondary, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-danger-active: (\\n fallback: map.get(button.$button-danger-active, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-danger-active, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-danger-active, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-danger-active, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-danger-active, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-primary-active: (\\n fallback: map.get(button.$button-primary-active, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-primary-active, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-primary-active, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-primary-active, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-primary-active, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-secondary-active: (\\n fallback: map.get(button.$button-secondary-active, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-secondary-active, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-secondary-active, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-secondary-active, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-secondary-active, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-tertiary-active: (\\n fallback: map.get(button.$button-tertiary-active, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-tertiary-active, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-tertiary-active, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-tertiary-active, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-tertiary-active, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-danger-hover: (\\n fallback: map.get(button.$button-danger-hover, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-danger-hover, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-danger-hover, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-danger-hover, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-danger-hover, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-primary-hover: (\\n fallback: map.get(button.$button-primary-hover, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-primary-hover, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-primary-hover, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-primary-hover, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-primary-hover, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-secondary-hover: (\\n fallback: map.get(button.$button-secondary-hover, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-secondary-hover, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-secondary-hover, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-secondary-hover, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-secondary-hover, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-tertiary-hover: (\\n fallback: map.get(button.$button-tertiary-hover, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-tertiary-hover, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-tertiary-hover, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-tertiary-hover, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-tertiary-hover, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-disabled: (\\n fallback: map.get(button.$button-disabled, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-disabled, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-disabled, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-disabled, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-disabled, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-tokens: (\\n button-separator: $button-separator,\\n button-primary: $button-primary,\\n button-secondary: $button-secondary,\\n button-tertiary: $button-tertiary,\\n button-danger-primary: $button-danger-primary,\\n button-danger-secondary: $button-danger-secondary,\\n button-danger-active: $button-danger-active,\\n button-primary-active: $button-primary-active,\\n button-secondary-active: $button-secondary-active,\\n button-tertiary-active: $button-tertiary-active,\\n button-danger-hover: $button-danger-hover,\\n button-primary-hover: $button-primary-hover,\\n button-secondary-hover: $button-secondary-hover,\\n button-tertiary-hover: $button-tertiary-hover,\\n button-disabled: $button-disabled,\\n);\\n\\n$button-separator: component-tokens.get-var(\\n $button-separator,\\n 'button-separator'\\n);\\n\\n$button-primary: component-tokens.get-var($button-primary, 'button-primary');\\n\\n$button-secondary: component-tokens.get-var(\\n $button-secondary,\\n 'button-secondary'\\n);\\n\\n$button-tertiary: component-tokens.get-var($button-tertiary, 'button-tertiary');\\n\\n$button-danger-primary: component-tokens.get-var(\\n $button-danger-primary,\\n 'button-danger-primary'\\n);\\n\\n$button-danger-secondary: component-tokens.get-var(\\n $button-danger-secondary,\\n 'button-danger-secondary'\\n);\\n\\n$button-danger-active: component-tokens.get-var(\\n $button-danger-active,\\n 'button-danger-active'\\n);\\n\\n$button-primary-active: component-tokens.get-var(\\n $button-primary-active,\\n 'button-primary-active'\\n);\\n\\n$button-secondary-active: component-tokens.get-var(\\n $button-secondary-active,\\n 'button-secondary-active'\\n);\\n\\n$button-tertiary-active: component-tokens.get-var(\\n $button-tertiary-active,\\n 'button-tertiary-active'\\n);\\n\\n$button-danger-hover: component-tokens.get-var(\\n $button-danger-hover,\\n 'button-danger-hover'\\n);\\n\\n$button-primary-hover: component-tokens.get-var(\\n $button-primary-hover,\\n 'button-primary-hover'\\n);\\n\\n$button-secondary-hover: component-tokens.get-var(\\n $button-secondary-hover,\\n 'button-secondary-hover'\\n);\\n\\n$button-tertiary-hover: component-tokens.get-var(\\n $button-tertiary-hover,\\n 'button-tertiary-hover'\\n);\\n\\n$button-disabled: component-tokens.get-var($button-disabled, 'button-disabled');\\n\",\"// Code generated by @carbon/layout. DO NOT EDIT.\\n//\\n// Copyright IBM Corp. 2018, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-01: 0.125rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-02: 0.25rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-03: 0.5rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-04: 0.75rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-05: 1rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-06: 1.5rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-07: 2rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-08: 2.5rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-09: 3rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-10: 4rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-11: 5rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-12: 6rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-13: 10rem !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/layout\\n$spacing: (\\n spacing-01: $spacing-01,\\n spacing-02: $spacing-02,\\n spacing-03: $spacing-03,\\n spacing-04: $spacing-04,\\n spacing-05: $spacing-05,\\n spacing-06: $spacing-06,\\n spacing-07: $spacing-07,\\n spacing-08: $spacing-08,\\n spacing-09: $spacing-09,\\n spacing-10: $spacing-10,\\n spacing-11: $spacing-11,\\n spacing-12: $spacing-12,\\n spacing-13: $spacing-13,\\n);\\n\",\"//\\n// Copyright IBM Corp. 2021\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use 'keyframes';\\n@use '../theme' as *;\\n@use '../config' as *;\\n@use '../utilities/high-contrast-mode' as *;\\n\\n/// Skeleton loading animation\\n/// @access public\\n/// @example @include skeleton;\\n/// @group utilities\\n@mixin skeleton {\\n position: relative;\\n padding: 0;\\n border: none;\\n background: $skeleton-background;\\n box-shadow: none;\\n pointer-events: none;\\n\\n &:hover,\\n &:focus,\\n &:active {\\n border: none;\\n cursor: default;\\n outline: none;\\n }\\n\\n &::before {\\n position: absolute;\\n animation: 3000ms ease-in-out #{$prefix}--skeleton infinite;\\n background: $skeleton-element;\\n block-size: 100%;\\n content: '';\\n inline-size: 100%;\\n inset-inline-start: 0;\\n will-change: transform-origin, transform, opacity;\\n\\n @media (prefers-reduced-motion: reduce) {\\n animation: none;\\n }\\n }\\n\\n // High Contrast Mode support\\n @include high-contrast-mode {\\n background: CanvasText;\\n\\n &::before {\\n background: Canvas;\\n forced-color-adjust: none;\\n }\\n }\\n}\\n\\n/// Circular Skeleton loading animation\\n/// @access public\\n/// @example @include circular-skeleton;\\n/// @group utilities\\n@mixin circular-skeleton {\\n position: relative;\\n overflow: hidden;\\n border-radius: 50%;\\n background: $skeleton-background;\\n\\n &::before {\\n position: absolute;\\n animation: 3000ms ease-in-out #{$prefix}--skeleton infinite;\\n background: $skeleton-element;\\n block-size: 100%;\\n content: '';\\n inline-size: 200%;\\n will-change: transform-origin, transform, opacity;\\n\\n @media (prefers-reduced-motion: reduce) {\\n animation: none;\\n }\\n }\\n\\n //High Contrast Mode\\n //Ensure Skeleton is visible and animated in Windows HCM\\n @include high-contrast-mode {\\n background: CanvasText;\\n\\n &::before {\\n background: Canvas;\\n forced-color-adjust: none;\\n }\\n }\\n}\\n\",\"//\\n// Copyright IBM Corp. 2021\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n/// High Contrast Mode mixin for Windows and macOS\\n/// @access public\\n/// @example @include high-contrast-mode;\\n/// @group utilities\\n/// Set HCM styles at the end of each file to ensure they are not overwritten\\n@mixin high-contrast-mode($type: '') {\\n @media screen and (-ms-high-contrast: active), (forced-colors: active) {\\n @if ($type == 'focus') {\\n color: Highlight;\\n outline: 1px solid Highlight;\\n }\\n\\n @if ($type == 'outline') {\\n outline: 1px solid transparent;\\n }\\n\\n @if ($type == 'disabled') {\\n color: GrayText;\\n fill: GrayText;\\n }\\n\\n @content;\\n }\\n}\\n\",\"@use '@carbon/layout';\\n\\n$ui-01: #f4f4f4;\\n$ui-02: #ffffff;\\n$ui-03: #e0e0e0;\\n$ui-04: #8d8d8d;\\n$ui-05: #161616;\\n$text-02: #525252;\\n$text-03: #a8a8a8;\\n$ui-background: #ffffff;\\n$color-gray-30: #c6c6c6;\\n$color-gray-70: #525252;\\n$color-gray-100: #161616;\\n$color-blue-60-2: #0f62fe;\\n$color-blue-10: #edf5ff;\\n$color-yellow-50: #feecae;\\n$carbon--red-50: #fa4d56;\\n$inverse-link: #78a9ff;\\n$support-02: #24a148;\\n$inverse-support-03: #f1c21b;\\n$warning-background: #fff8e1;\\n$openmrs-background-grey: #f4f4f4;\\n$danger: #da1e28;\\n$interactive-01: #0f62fe;\\n$field-01: #f4f4f4;\\n$grey-2: #e0e0e0;\\n$labeldropdown: #c6c6c6;\\n\\n$brand-primary-10: #d9fbfb;\\n$brand-primary-20: #9ef0f0;\\n$brand-primary-30: #3ddbd9;\\n$brand-primary-40: #08bdba;\\n$brand-primary-50: #009d9a;\\n\\n/* 60,70 and 80 are already declared as brand-01, 02 and 03 respectively */\\n\\n$brand-primary-90: #022b30;\\n$brand-primary-100: #081a1c;\\n\\n@mixin brand-01($property) {\\n #{$property}: #005d5d;\\n #{$property}: var(--brand-01);\\n}\\n\\n@mixin brand-02($property) {\\n #{$property}: #004144;\\n #{$property}: var(--brand-02);\\n}\\n\\n@mixin brand-03($property) {\\n #{$property}: #007d79;\\n #{$property}: var(--brand-03);\\n}\\n\\n:root {\\n --brand-01: #005d5d;\\n --brand-02: #004144;\\n --brand-03: #007d79;\\n --bottom-nav-height: #{layout.$spacing-10};\\n --workspace-header-height: #{layout.$spacing-09};\\n --tablet-workspace-window-height: calc(100vh - var(--omrs-navbar-height) - var(--bottom-nav-height));\\n --desktop-workspace-window-height: calc(100vh - var(--omrs-navbar-height) - var(--workspace-header-height));\\n}\\n\\n$breakpoint-phone-min: 0px;\\n$breakpoint-phone-max: 600px;\\n$breakpoint-tablet-min: 601px;\\n$breakpoint-tablet-max: 1023px;\\n$breakpoint-small-desktop-min: 1024px;\\n$breakpoint-small-desktop-max: 1439px;\\n$breakpoint-large-desktop-min: 1440px;\\n$breakpoint-large-desktop-max: 99999999px;\\n\\n/* These color variables will be removed in a future release */\\n$brand-teal-01: #007d79;\\n$brand-01: #005d5d;\\n$brand-02: #004144;\\n\",\"//\\n// Copyright IBM Corp. 2021\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use '../theme';\\n\\n/// Adds box shadow\\n/// @access public\\n/// @example @include box-shadow;\\n/// @group utilities\\n@mixin box-shadow {\\n box-shadow: 0 2px 6px theme.$shadow;\\n}\\n\\n@mixin box-shadow-top {\\n box-shadow: 0 -2px 6px theme.$shadow;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"cds--layout--size-xs\": \"Dl6B3+z7iSDloToxFNPpGg==\",\n\t\"cds--layout-constraint--size__default-xs\": \"hUd58YauFSAKmUj4LteOPw==\",\n\t\"cds--layout-constraint--size__min-xs\": \"lXkuPCiQMrg2Hy+cX1fYHg==\",\n\t\"cds--layout-constraint--size__max-xs\": \"DqJ9j0ab4hdCQevtHxj3uQ==\",\n\t\"cds--layout--size-sm\": \"hzvTaPHMAr0O8UzjTYVmPA==\",\n\t\"cds--layout-constraint--size__default-sm\": \"MmGePL4sdXw+NQspOf4cqA==\",\n\t\"cds--layout-constraint--size__min-sm\": \"YUKHVuv+i6a34aaDNME7Ag==\",\n\t\"cds--layout-constraint--size__max-sm\": \"Gh3YHt2Mkh8XMCMOECmoNA==\",\n\t\"cds--layout--size-md\": \"sW5sNIpIkkhqXN1c2P76Qw==\",\n\t\"cds--layout-constraint--size__default-md\": \"_8DNYCHscOJwj1YL3wmy49g==\",\n\t\"cds--layout-constraint--size__min-md\": \"Z3AlZ33zKEmoBl98AMihRQ==\",\n\t\"cds--layout-constraint--size__max-md\": \"mB99vz+pF6QLPFulDO76Pg==\",\n\t\"cds--layout--size-lg\": \"hT--WYZ4JEBnZUrzNVI2mQ==\",\n\t\"cds--layout-constraint--size__default-lg\": \"Bbo8n11sbU02a4LEGk2ELQ==\",\n\t\"cds--layout-constraint--size__min-lg\": \"vYf8r08PTVNO-gz2zmdBBA==\",\n\t\"cds--layout-constraint--size__max-lg\": \"bQBfEY2jb12gGAbDcVmEfg==\",\n\t\"cds--layout--size-xl\": \"_5ZFPLB-r0cF+EgcYFZLFGg==\",\n\t\"cds--layout-constraint--size__default-xl\": \"_6xR72Q+OnwHYKFZG1rofrQ==\",\n\t\"cds--layout-constraint--size__min-xl\": \"RQuiNDiXkhrXMA94vtmpNA==\",\n\t\"cds--layout-constraint--size__max-xl\": \"nStjrplO4t1OY3jIf3-7fQ==\",\n\t\"cds--layout--size-2xl\": \"-phAqf5qlL3hTaJhaOiZsQ==\",\n\t\"cds--layout-constraint--size__default-2xl\": \"_2yVrwKicSkavYQwFJcLEHw==\",\n\t\"cds--layout-constraint--size__min-2xl\": \"Pt6NHQV3Diuii+Pq5Xy45g==\",\n\t\"cds--layout-constraint--size__max-2xl\": \"w1BOUEe-4FJS0qxBvKjxrA==\",\n\t\"cds--layout--density-condensed\": \"_6EuALkpTeVVT+tArqYQDmg==\",\n\t\"cds--layout-constraint--density__default-condensed\": \"qwfm+sPn29Q0be1E1+0WZg==\",\n\t\"cds--layout-constraint--density__min-condensed\": \"l1e616QeLHXtUPrIj6iPbg==\",\n\t\"cds--layout-constraint--density__max-condensed\": \"_4ftezWzt-fFxpoUrgae5Ag==\",\n\t\"cds--layout--density-normal\": \"KGsxiv4kL8Q0hLVG--TfMg==\",\n\t\"cds--layout-constraint--density__default-normal\": \"NFZgOKmjvWD7qwWfmSgZVA==\",\n\t\"cds--layout-constraint--density__min-normal\": \"ZnRSViA6gXzqk9PrWelh1g==\",\n\t\"cds--layout-constraint--density__max-normal\": \"Gi0Ln1iW1wyIqFi2D2TvRA==\",\n\t\"cds--layer-one\": \"ImV2tmEe0CYn6jSdurzBsA==\",\n\t\"cds--layer-two\": \"F2N5YMbWFppugkj8IAq9gQ==\",\n\t\"cds--layer-three\": \"S+lgZPasqy3PdrHJTaHFcA==\",\n\t\"cds--layer__with-background\": \"wvqDrnu0+2YCq3f8MzocYA==\",\n\t\"cds--assistive-text\": \"wJPZDvROrysdln8YIzCJYg==\",\n\t\"cds--visually-hidden\": \"_13Nk2MHDj1P6sdSQfQ7mwg==\",\n\t\"cds--popover-container\": \"ylvq4Lt4zwnYlcmnQMLvBA==\",\n\t\"cds--popover--auto-align\": \"Xve65yBwp8TvtFtY1lPyIQ==\",\n\t\"cds--popover--high-contrast\": \"hZsLy0rna5b+IJZauD+8cQ==\",\n\t\"cds--popover\": \"_3tMDsMgl4pDETqHUmoPmrg==\",\n\t\"cds--popover--drop-shadow\": \"nTzLYKI3ElHex80D4PHaxQ==\",\n\t\"cds--popover-content\": \"XfV0HQl24Sp+zHQ6XUQk7Q==\",\n\t\"cds--popover--caret\": \"rKeC3aEC+-XriLuyPSKCJQ==\",\n\t\"cds--popover--open\": \"c-lNCeHYdwy+hrmIBG7KrA==\",\n\t\"cds--popover-caret\": \"rKfmyLjuNfXFpq0Z2+ODWw==\",\n\t\"cds--popover--tab-tip\": \"ewK+lVkva7XVD2pqZD5niw==\",\n\t\"cds--popover--bottom\": \"QJVS37uhvEoMkYbufG41xw==\",\n\t\"cds--popover--bottom-left\": \"mfBz6l+srVLE9TY6NJeJ5A==\",\n\t\"cds--popover--bottom-start\": \"_6BH6tiZglnjxgi0cwzNtQw==\",\n\t\"cds--popover--bottom-right\": \"_75VFVAYGs7DIrUIfmxPzFA==\",\n\t\"cds--popover--bottom-end\": \"fGaQH010Pt2FL3eGNKbDig==\",\n\t\"cds--popover--top-end\": \"RH-bzFqbczrIkSGQ90kJ1A==\",\n\t\"cds--popover--top-start\": \"bJdXOwxfGm98IhfMsXxb4Q==\",\n\t\"cds--popover--top\": \"fUfuOcye07cThPN-3Iustw==\",\n\t\"cds--popover--top-left\": \"_2a2YNNezGaAufHqaYcB2Hw==\",\n\t\"cds--popover--top-right\": \"_8mvGDIXojIobkv0-moj+5w==\",\n\t\"cds--popover--right\": \"VnvuPfeB+7a2-uvXTnkNig==\",\n\t\"cds--popover--right-top\": \"R0wT1V7csafFqjP6Y9XB0A==\",\n\t\"cds--popover--right-start\": \"qAh6UaNuBm8ALfX4q7LPVA==\",\n\t\"cds--popover--right-bottom\": \"sVqA-uCdZXUMmLnX-famRw==\",\n\t\"cds--popover--right-end\": \"FixLq+OBObgxNmufxjKJ5Q==\",\n\t\"cds--popover--left\": \"MfEhB3iPF8pQmBJwg9qCmQ==\",\n\t\"cds--popover--left-top\": \"xuN90XVOkmppYLSD0iWrfA==\",\n\t\"cds--popover--left-start\": \"DnY+lPSokbYbD+9KsNra4w==\",\n\t\"cds--popover--left-bottom\": \"qHRdFf1Tu+nuaFZ4tx5ccw==\",\n\t\"cds--popover--left-end\": \"_9vFzrU6K70CqTjcFCmJYSg==\",\n\t\"cds--popover--tab-tip__button\": \"x8eIIeULnOgUvOJhPc9wbA==\",\n\t\"cds--tooltip\": \"ONFcndatW+ipRc9SxeDElA==\",\n\t\"cds--tooltip-content\": \"azpB1+4fKhq0ksZ+rrq6Og==\",\n\t\"cds--icon-tooltip\": \"wxjK-tSQo1yoyRVqF1z0OQ==\",\n\t\"cds--definition-term\": \"k2X7tJYp4ncD+q3Od-z8rg==\",\n\t\"cds--definition-tooltip\": \"UJKLFGSuKXgXgRVOrO9Qew==\",\n\t\"cds--btn\": \"WOBoDyJg9RoFD9yp5S87ug==\",\n\t\"cds--btn--disabled\": \"QhKdiWGcpNtT8bcrXG7RNg==\",\n\t\"cds--btn__icon\": \"lccaZhlwx0FVzhAFXjxANg==\",\n\t\"cds--btn--primary\": \"_2dfTLeSts9XPRwvi1pfBag==\",\n\t\"cds--btn--secondary\": \"tT8Cn7LYWg8omndB06tdqA==\",\n\t\"cds--btn--tertiary\": \"CpHouNxq93lnHGdEPYk1IA==\",\n\t\"cds--btn--ghost\": \"_5LZAtFtr-XIa+J1H8Yv4hQ==\",\n\t\"cds--btn--icon-only\": \"FYz8lq-N+PsvsRACBmZIPg==\",\n\t\"cds--btn--danger--ghost\": \"oKvPDMaRQpbRIWPTJp6wVA==\",\n\t\"cds--btn--xs\": \"MFcLhsmOoWwh2GnzKdFnmg==\",\n\t\"cds--btn--sm\": \"fQfOefLJ19ucVwCoyePUFw==\",\n\t\"cds--btn--md\": \"-SISio8tCjrYCON9yvV2sw==\",\n\t\"cds--btn--selected\": \"c7mSpizaM5GauGEe-eNxeA==\",\n\t\"cds--icon-tooltip--disabled\": \"lGy8w5+S+zjO5vsbR0KPOA==\",\n\t\"cds--tooltip-trigger__wrapper\": \"_47VP8cPBMiYfHjEdqTmRDw==\",\n\t\"cds--btn--danger\": \"_52+xNaOjvvCbnq1Udabg6A==\",\n\t\"cds--btn--danger--tertiary\": \"KmR3xkrdc5iOxq9YydOP2Q==\",\n\t\"cds--btn--expressive\": \"PIgba1sWe85mY4VUaCXJTw==\",\n\t\"cds--btn-set\": \"s9b5IsETdQZllfuZ4yP2Cw==\",\n\t\"cds--skeleton\": \"BQysSey+0hy+TP8eMDmw-g==\",\n\t\"cds--btn-set--stacked\": \"RgWeGXMmlyvzDivUg-Ro7Q==\",\n\t\"cds--btn--loading\": \"jJE029CMXQVLfce+GqTCWA==\",\n\t\"cds--badge-indicator\": \"ss1vRYJom6QcTaXjYDIgsA==\",\n\t\"inputGroup\": \"_3ghL9VvEMEBGtxu4pMwlUQ==\",\n\t\"cds--focused\": \"wd02PMIuu0vdK1nU01M0vA==\",\n\t\"inputWrapper\": \"_8dD8Tb9JIvtXiK-H-m58+Q==\",\n\t\"inputSegment\": \"u9xpQLwv8879aSrtwgBjwA==\",\n\t\"dateInputWrapper\": \"miyGBksDDw6IAgDq8oEiMw==\",\n\t\"cursor-blink\": \"GvYCW4Ha+xGVXQCcY1qtwA==\",\n\t\"cursor-blink-rtl\": \"c0RMH1TuYT8d1jqJT+6XFA==\",\n\t\"inputWrapperMd\": \"GVaG38s0eIbutuabf4+uBQ==\",\n\t\"inputWrapperSm\": \"_01dtBgqWiwZk6SoBjALSjQ==\",\n\t\"inputWrapperLg\": \"_0hIZ9D1--CeU4ZSveSTQQg==\",\n\t\"inputsWrapper\": \"_7m9E2jl20P4i7p7Mp1-biA==\",\n\t\"inputsWrapperSm\": \"mx9jP+0JMdnAXdZTjRCJhw==\",\n\t\"inputsWrapperMd\": \"_6RdG0pycDtJJ2KTzHV4iIw==\",\n\t\"inputsWrapperLg\": \"IPnJdk8Xtzg1yfFCUoBc9A==\",\n\t\"startInput\": \"NyabfeLUZzUPXOIdWle5bw==\",\n\t\"endInput\": \"PAI4FVG2hj35xDhzIF-jaQ==\",\n\t\"separator\": \"S7-qCETjknn+AcA7c0xC3g==\",\n\t\"invalidText\": \"Hr9NJxCA4oSNVTBwsHmACQ==\",\n\t\"popover\": \"fJEQcItNrv2n55UaD-Nfgw==\",\n\t\"expand-in\": \"_13UImLxwUrLdL5zUTqyARg==\",\n\t\"dialog\": \"gj9nEvrB9Re-WX-HkzyQEQ==\",\n\t\"header\": \"qvzkMTSvzPFL42Qx1Rp7gQ==\",\n\t\"flatButton\": \"QEZ5dHMMHKxzY8OYNICm0w==\",\n\t\"flatButtonMd\": \"ohLjF+TIoU6I01Ed+UfWxg==\",\n\t\"flatButtonSm\": \"sD3fm4rOJvtpunJ3wocYtA==\",\n\t\"flatButtonLg\": \"_0fs7mgdVjmu0ElQLPZgc+Q==\",\n\t\"monthYear\": \"CyXMAICmKG6JIYk9V7yM9A==\",\n\t\"calendarGrid\": \"uoEjJIOS+CBqkco8jRUt6Q==\",\n\t\"today\": \"wcSTDuH+PjP9kxK+pj3CUw==\",\n\t\"cds--hide-feedback\": \"DQg9n64ZoLJ1wGQi-kDQjg==\",\n\t\"cds--show-feedback\": \"j8jn4nb04i1KzBJutZw-RA==\"\n};\n/* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvb3Blbm1ycy1lc20tY29yZS9vcGVubXJzLWVzbS1jb3JlL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvZGlzdC9kYXRlcGlja2VyL2RhdGVwaWNrZXIubW9kdWxlLnNjc3MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9kaXN0L2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUuc2Nzcz8zNzA2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLkRsNkIzXFxcXCt6N2lTRGxvVG94Rk5QcEdnXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtY29udGV4dDogdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC14cywgMS41cmVtKTtcXG4gIC0tY2RzLWxheW91dC1zaXplLWhlaWdodDogdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1jb250ZXh0KTtcXG59XFxuXFxuLmhVZDU4WWF1RlNBS21VajRMdGVPUHdcXFxcPVxcXFw9IHtcXG4gIC0tY2RzLWxheW91dC1zaXplLWhlaWdodDogdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1jb250ZXh0LCB2YXIoLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LXhzLCAxLjVyZW0pKTtcXG59XFxuXFxuLmxYa3VQQ2lRTXJnMkh5XFxcXCtjWDFmWUhnXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtbWluOiB2YXIoLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LXhzLCAxLjVyZW0pO1xcbn1cXG5cXG4uRHFKOWowYWI0aGRDUWV2dEh4ajN1UVxcXFw9XFxcXD0ge1xcbiAgLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LW1heDogdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC14cywgMS41cmVtKTtcXG59XFxuXFxuLmh6dlRhUEhNQXIwTzhVempUWVZtUEFcXFxcPVxcXFw9IHtcXG4gIC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1jb250ZXh0OiB2YXIoLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LXNtLCAycmVtKTtcXG4gIC0tY2RzLWxheW91dC1zaXplLWhlaWdodDogdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1jb250ZXh0KTtcXG59XFxuXFxuLk1tR2VQTDRzZFh3XFxcXCtOUXNwT2Y0Y3FBXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQ6IHZhcigtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtY29udGV4dCwgdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1zbSwgMnJlbSkpO1xcbn1cXG5cXG4uWVVLSFZ1dlxcXFwraTZhMzRhYUROTUU3QWdcXFxcPVxcXFw9IHtcXG4gIC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1taW46IHZhcigtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtc20sIDJyZW0pO1xcbn1cXG5cXG4uR2gzWUh0Mk1raDhYTUNNT0VDbW9OQVxcXFw9XFxcXD0ge1xcbiAgLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LW1heDogdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1zbSwgMnJlbSk7XFxufVxcblxcbi5zVzVzTklwSWtraHFYTjFjMlA3NlF3XFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtY29udGV4dDogdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1tZCwgMi41cmVtKTtcXG4gIC0tY2RzLWxheW91dC1zaXplLWhlaWdodDogdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1jb250ZXh0KTtcXG59XFxuXFxuLl84RE5ZQ0hzY09Kd2oxWUwzd215NDlnXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQ6IHZhcigtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtY29udGV4dCwgdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1tZCwgMi41cmVtKSk7XFxufVxcblxcbi5aM0FsWjMzektFbW9CbDk4QU1paFJRXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtbWluOiB2YXIoLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LW1kLCAyLjVyZW0pO1xcbn1cXG5cXG4ubUI5OXZ6XFxcXCtwRjZRTFBGdWxETzc2UGdcXFxcPVxcXFw9IHtcXG4gIC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1tYXg6IHZhcigtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtbWQsIDIuNXJlbSk7XFxufVxcblxcbi5oVC0tV1laNEpFQm5aVXJ6TlZJMm1RXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtY29udGV4dDogdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1sZywgM3JlbSk7XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQ6IHZhcigtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtY29udGV4dCk7XFxufVxcblxcbi5CYm84bjExc2JVMDJhNExFR2syRUxRXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQ6IHZhcigtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtY29udGV4dCwgdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1sZywgM3JlbSkpO1xcbn1cXG5cXG4udllmOHIwOFBUVk5PLWd6MnptZEJCQVxcXFw9XFxcXD0ge1xcbiAgLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LW1pbjogdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1sZywgM3JlbSk7XFxufVxcblxcbi5iUUJmRVkyamIxMmdHQWJEY1ZtRWZnXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtbWF4OiB2YXIoLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LWxnLCAzcmVtKTtcXG59XFxuXFxuLl81WkZQTEItcjBjRlxcXFwrRWdjWUZaTEZHZ1xcXFw9XFxcXD0ge1xcbiAgLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LWNvbnRleHQ6IHZhcigtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQteGwsIDRyZW0pO1xcbiAgLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0OiB2YXIoLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LWNvbnRleHQpO1xcbn1cXG5cXG4uXzZ4UjcyUVxcXFwrT253SFlLRlpHMXJvZnJRXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQ6IHZhcigtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtY29udGV4dCwgdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC14bCwgNHJlbSkpO1xcbn1cXG5cXG4uUlF1aU5EaVhraHJYTUE5NHZ0bXBOQVxcXFw9XFxcXD0ge1xcbiAgLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LW1pbjogdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC14bCwgNHJlbSk7XFxufVxcblxcbi5uU3RqcnBsTzR0MU9ZM2pJZjMtN2ZRXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtbWF4OiB2YXIoLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LXhsLCA0cmVtKTtcXG59XFxuXFxuLi1waEFxZjVxbEwzaFRhSmhhT2lac1FcXFxcPVxcXFw9IHtcXG4gIC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1jb250ZXh0OiB2YXIoLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LTJ4bCwgNXJlbSk7XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQ6IHZhcigtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtY29udGV4dCk7XFxufVxcblxcbi5fMnlWcndLaWNTa2F2WVF3RkpjTEVId1xcXFw9XFxcXD0ge1xcbiAgLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0OiB2YXIoLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LWNvbnRleHQsIHZhcigtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtMnhsLCA1cmVtKSk7XFxufVxcblxcbi5QdDZOSFFWM0RpdWlpXFxcXCtQcTVYeTQ1Z1xcXFw9XFxcXD0ge1xcbiAgLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LW1pbjogdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC0yeGwsIDVyZW0pO1xcbn1cXG5cXG4udzFCT1VFZS00RkpTMHF4QnZLanhyQVxcXFw9XFxcXD0ge1xcbiAgLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LW1heDogdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC0yeGwsIDVyZW0pO1xcbn1cXG5cXG4uXzZFdUFMa3BUZVZWVFxcXFwrdEFycVlRRG1nXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtZGVuc2l0eS1wYWRkaW5nLWlubGluZS1jb250ZXh0OiB2YXIoLS1jZHMtbGF5b3V0LWRlbnNpdHktcGFkZGluZy1pbmxpbmUtY29uZGVuc2VkLCAwLjVyZW0pO1xcbiAgLS1jZHMtbGF5b3V0LWRlbnNpdHktcGFkZGluZy1pbmxpbmU6IHZhcigtLWNkcy1sYXlvdXQtZGVuc2l0eS1wYWRkaW5nLWlubGluZS1jb250ZXh0KTtcXG59XFxuXFxuLnF3Zm1cXFxcK3NQbjI5UTBiZTFFMVxcXFwrMFdaZ1xcXFw9XFxcXD0ge1xcbiAgLS1jZHMtbGF5b3V0LWRlbnNpdHktcGFkZGluZy1pbmxpbmU6IHZhcigtLWNkcy1sYXlvdXQtZGVuc2l0eS1wYWRkaW5nLWlubGluZS1jb250ZXh0LCB2YXIoLS1jZHMtbGF5b3V0LWRlbnNpdHktcGFkZGluZy1pbmxpbmUtY29uZGVuc2VkLCAwLjVyZW0pKTtcXG59XFxuXFxuLmwxZTYxNlFlTEhYdFVQcklqNmlQYmdcXFxcPVxcXFw9IHtcXG4gIC0tY2RzLWxheW91dC1kZW5zaXR5LXBhZGRpbmctaW5saW5lLW1pbjogdmFyKC0tY2RzLWxheW91dC1kZW5zaXR5LXBhZGRpbmctaW5saW5lLWNvbmRlbnNlZCwgMC41cmVtKTtcXG59XFxuXFxuLl80ZnRleld6dC1mRnhwb1VyZ2FlNUFnXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtZGVuc2l0eS1wYWRkaW5nLWlubGluZS1tYXg6IHZhcigtLWNkcy1sYXlvdXQtZGVuc2l0eS1wYWRkaW5nLWlubGluZS1jb25kZW5zZWQsIDAuNXJlbSk7XFxufVxcblxcbi5LR3N4aXY0a0w4UTBoTFZHLS1UZk1nXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtZGVuc2l0eS1wYWRkaW5nLWlubGluZS1jb250ZXh0OiB2YXIoLS1jZHMtbGF5b3V0LWRlbnNpdHktcGFkZGluZy1pbmxpbmUtbm9ybWFsLCAxcmVtKTtcXG4gIC0tY2RzLWxheW91dC1kZW5zaXR5LXBhZGRpbmctaW5saW5lOiB2YXIoLS1jZHMtbGF5b3V0LWRlbnNpdHktcGFkZGluZy1pbmxpbmUtY29udGV4dCk7XFxufVxcblxcbi5ORlpnT0ttanZXRDdxd1dmbVNnWlZBXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtZGVuc2l0eS1wYWRkaW5nLWlubGluZTogdmFyKC0tY2RzLWxheW91dC1kZW5zaXR5LXBhZGRpbmctaW5saW5lLWNvbnRleHQsIHZhcigtLWNkcy1sYXlvdXQtZGVuc2l0eS1wYWRkaW5nLWlubGluZS1ub3JtYWwsIDFyZW0pKTtcXG59XFxuXFxuLlpuUlNWaUE2Z1h6cWs5UHJXZWxoMWdcXFxcPVxcXFw9IHtcXG4gIC0tY2RzLWxheW91dC1kZW5zaXR5LXBhZGRpbmctaW5saW5lLW1pbjogdmFyKC0tY2RzLWxheW91dC1kZW5zaXR5LXBhZGRpbmctaW5saW5lLW5vcm1hbCwgMXJlbSk7XFxufVxcblxcbi5HaTBMbjFpVzF3eUlxRmkyRDJUdlJBXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtZGVuc2l0eS1wYWRkaW5nLWlubGluZS1tYXg6IHZhcigtLWNkcy1sYXlvdXQtZGVuc2l0eS1wYWRkaW5nLWlubGluZS1ub3JtYWwsIDFyZW0pO1xcbn1cXG5cXG46cm9vdCB7XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQteHM6IDEuNXJlbTtcXG4gIC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1zbTogMnJlbTtcXG4gIC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1tZDogMi41cmVtO1xcbiAgLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LWxnOiAzcmVtO1xcbiAgLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LXhsOiA0cmVtO1xcbiAgLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LTJ4bDogNXJlbTtcXG4gIC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1taW46IDBweDtcXG4gIC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1tYXg6IDk5OTk5OTk5OXB4O1xcbiAgLS1jZHMtbGF5b3V0LWRlbnNpdHktcGFkZGluZy1pbmxpbmUtY29uZGVuc2VkOiAwLjVyZW07XFxuICAtLWNkcy1sYXlvdXQtZGVuc2l0eS1wYWRkaW5nLWlubGluZS1ub3JtYWw6IDFyZW07XFxuICAtLWNkcy1sYXlvdXQtZGVuc2l0eS1wYWRkaW5nLWlubGluZS1taW46IDBweDtcXG4gIC0tY2RzLWxheW91dC1kZW5zaXR5LXBhZGRpbmctaW5saW5lLW1heDogOTk5OTk5OTk5cHg7XFxufVxcblxcbjpyb290IHtcXG4gIC0tY2RzLWxheWVyOiB2YXIoLS1jZHMtbGF5ZXItMDEsICNmNGY0ZjQpO1xcbiAgLS1jZHMtbGF5ZXItYWN0aXZlOiB2YXIoLS1jZHMtbGF5ZXItYWN0aXZlLTAxLCAjYzZjNmM2KTtcXG4gIC0tY2RzLWxheWVyLWJhY2tncm91bmQ6IHZhcigtLWNkcy1sYXllci1iYWNrZ3JvdW5kLTAxLCAjZmZmZmZmKTtcXG4gIC0tY2RzLWxheWVyLWhvdmVyOiB2YXIoLS1jZHMtbGF5ZXItaG92ZXItMDEsICNlOGU4ZTgpO1xcbiAgLS1jZHMtbGF5ZXItc2VsZWN0ZWQ6IHZhcigtLWNkcy1sYXllci1zZWxlY3RlZC0wMSwgI2UwZTBlMCk7XFxuICAtLWNkcy1sYXllci1zZWxlY3RlZC1ob3ZlcjogdmFyKC0tY2RzLWxheWVyLXNlbGVjdGVkLWhvdmVyLTAxLCAjZDFkMWQxKTtcXG4gIC0tY2RzLWxheWVyLWFjY2VudDogdmFyKC0tY2RzLWxheWVyLWFjY2VudC0wMSwgI2UwZTBlMCk7XFxuICAtLWNkcy1sYXllci1hY2NlbnQtaG92ZXI6IHZhcigtLWNkcy1sYXllci1hY2NlbnQtaG92ZXItMDEsICNkMWQxZDEpO1xcbiAgLS1jZHMtbGF5ZXItYWNjZW50LWFjdGl2ZTogdmFyKC0tY2RzLWxheWVyLWFjY2VudC1hY3RpdmUtMDEsICNhOGE4YTgpO1xcbiAgLS1jZHMtZmllbGQ6IHZhcigtLWNkcy1maWVsZC0wMSwgI2Y0ZjRmNCk7XFxuICAtLWNkcy1maWVsZC1ob3ZlcjogdmFyKC0tY2RzLWZpZWxkLWhvdmVyLTAxLCAjZThlOGU4KTtcXG4gIC0tY2RzLWJvcmRlci1zdWJ0bGU6IHZhcigtLWNkcy1ib3JkZXItc3VidGxlLTAwLCAjZTBlMGUwKTtcXG4gIC0tY2RzLWJvcmRlci1zdWJ0bGUtc2VsZWN0ZWQ6IHZhcigtLWNkcy1ib3JkZXItc3VidGxlLXNlbGVjdGVkLTAxLCAjYzZjNmM2KTtcXG4gIC0tY2RzLWJvcmRlci1zdHJvbmc6IHZhcigtLWNkcy1ib3JkZXItc3Ryb25nLTAxLCAjOGQ4ZDhkKTtcXG4gIC0tY2RzLWJvcmRlci10aWxlOiB2YXIoLS1jZHMtYm9yZGVyLXRpbGUtMDEsICNjNmM2YzYpO1xcbn1cXG5cXG4uSW1WMnRtRWUwQ1luNmpTZHVyekJzQVxcXFw9XFxcXD0ge1xcbiAgLS1jZHMtbGF5ZXI6IHZhcigtLWNkcy1sYXllci0wMSwgI2Y0ZjRmNCk7XFxuICAtLWNkcy1sYXllci1hY3RpdmU6IHZhcigtLWNkcy1sYXllci1hY3RpdmUtMDEsICNjNmM2YzYpO1xcbiAgLS1jZHMtbGF5ZXItYmFja2dyb3VuZDogdmFyKC0tY2RzLWxheWVyLWJhY2tncm91bmQtMDEsICNmZmZmZmYpO1xcbiAgLS1jZHMtbGF5ZXItaG92ZXI6IHZhcigtLWNkcy1sYXllci1ob3Zlci0wMSwgI2U4ZThlOCk7XFxuICAtLWNkcy1sYXllci1zZWxlY3RlZDogdmFyKC0tY2RzLWxheWVyLXNlbGVjdGVkLTAxLCAjZTBlMGUwKTtcXG4gIC0tY2RzLWxheWVyLXNlbGVjdGVkLWhvdmVyOiB2YXIoLS1jZHMtbGF5ZXItc2VsZWN0ZWQtaG92ZXItMDEsICNkMWQxZDEpO1xcbiAgLS1jZHMtbGF5ZXItYWNjZW50OiB2YXIoLS1jZHMtbGF5ZXItYWNjZW50LTAxLCAjZTBlMGUwKTtcXG4gIC0tY2RzLWxheWVyLWFjY2VudC1ob3ZlcjogdmFyKC0tY2RzLWxheWVyLWFjY2VudC1ob3Zlci0wMSwgI2QxZDFkMSk7XFxuICAtLWNkcy1sYXllci1hY2NlbnQtYWN0aXZlOiB2YXIoLS1jZHMtbGF5ZXItYWNjZW50LWFjdGl2ZS0wMSwgI2E4YThhOCk7XFxuICAtLWNkcy1maWVsZDogdmFyKC0tY2RzLWZpZWxkLTAxLCAjZjRmNGY0KTtcXG4gIC0tY2RzLWZpZWxkLWhvdmVyOiB2YXIoLS1jZHMtZmllbGQtaG92ZXItMDEsICNlOGU4ZTgpO1xcbiAgLS1jZHMtYm9yZGVyLXN1YnRsZTogdmFyKC0tY2RzLWJvcmRlci1zdWJ0bGUtMDAsICNlMGUwZTApO1xcbiAgLS1jZHMtYm9yZGVyLXN1YnRsZS1zZWxlY3RlZDogdmFyKC0tY2RzLWJvcmRlci1zdWJ0bGUtc2VsZWN0ZWQtMDEsICNjNmM2YzYpO1xcbiAgLS1jZHMtYm9yZGVyLXN0cm9uZzogdmFyKC0tY2RzLWJvcmRlci1zdHJvbmctMDEsICM4ZDhkOGQpO1xcbiAgLS1jZHMtYm9yZGVyLXRpbGU6IHZhcigtLWNkcy1ib3JkZXItdGlsZS0wMSwgI2M2YzZjNik7XFxufVxcblxcbi5GMk41WU1iV0ZwcHVna2o4SUFxOWdRXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXllcjogdmFyKC0tY2RzLWxheWVyLTAyLCAjZmZmZmZmKTtcXG4gIC0tY2RzLWxheWVyLWFjdGl2ZTogdmFyKC0tY2RzLWxheWVyLWFjdGl2ZS0wMiwgI2M2YzZjNik7XFxuICAtLWNkcy1sYXllci1iYWNrZ3JvdW5kOiB2YXIoLS1jZHMtbGF5ZXItYmFja2dyb3VuZC0wMiwgI2Y0ZjRmNCk7XFxuICAtLWNkcy1sYXllci1ob3ZlcjogdmFyKC0tY2RzLWxheWVyLWhvdmVyLTAyLCAjZThlOGU4KTtcXG4gIC0tY2RzLWxheWVyLXNlbGVjdGVkOiB2YXIoLS1jZHMtbGF5ZXItc2VsZWN0ZWQtMDIsICNlMGUwZTApO1xcbiAgLS1jZHMtbGF5ZXItc2VsZWN0ZWQtaG92ZXI6IHZhcigtLWNkcy1sYXllci1zZWxlY3RlZC1ob3Zlci0wMiwgI2QxZDFkMSk7XFxuICAtLWNkcy1sYXllci1hY2NlbnQ6IHZhcigtLWNkcy1sYXllci1hY2NlbnQtMDIsICNlMGUwZTApO1xcbiAgLS1jZHMtbGF5ZXItYWNjZW50LWhvdmVyOiB2YXIoLS1jZHMtbGF5ZXItYWNjZW50LWhvdmVyLTAyLCAjZDFkMWQxKTtcXG4gIC0tY2RzLWxheWVyLWFjY2VudC1hY3RpdmU6IHZhcigtLWNkcy1sYXllci1hY2NlbnQtYWN0aXZlLTAyLCAjYThhOGE4KTtcXG4gIC0tY2RzLWZpZWxkOiB2YXIoLS1jZHMtZmllbGQtMDIsICNmZmZmZmYpO1xcbiAgLS1jZHMtZmllbGQtaG92ZXI6IHZhcigtLWNkcy1maWVsZC1ob3Zlci0wMiwgI2U4ZThlOCk7XFxuICAtLWNkcy1ib3JkZXItc3VidGxlOiB2YXIoLS1jZHMtYm9yZGVyLXN1YnRsZS0wMSwgI2M2YzZjNik7XFxuICAtLWNkcy1ib3JkZXItc3VidGxlLXNlbGVjdGVkOiB2YXIoLS1jZHMtYm9yZGVyLXN1YnRsZS1zZWxlY3RlZC0wMiwgI2M2YzZjNik7XFxuICAtLWNkcy1ib3JkZXItc3Ryb25nOiB2YXIoLS1jZHMtYm9yZGVyLXN0cm9uZy0wMiwgIzhkOGQ4ZCk7XFxuICAtLWNkcy1ib3JkZXItdGlsZTogdmFyKC0tY2RzLWJvcmRlci10aWxlLTAyLCAjYThhOGE4KTtcXG59XFxuXFxuLlNcXFxcK2xnWlBhc3F5M1BkckhKVGFIRmNBXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXllcjogdmFyKC0tY2RzLWxheWVyLTAzLCAjZjRmNGY0KTtcXG4gIC0tY2RzLWxheWVyLWFjdGl2ZTogdmFyKC0tY2RzLWxheWVyLWFjdGl2ZS0wMywgI2M2YzZjNik7XFxuICAtLWNkcy1sYXllci1iYWNrZ3JvdW5kOiB2YXIoLS1jZHMtbGF5ZXItYmFja2dyb3VuZC0wMywgI2ZmZmZmZik7XFxuICAtLWNkcy1sYXllci1ob3ZlcjogdmFyKC0tY2RzLWxheWVyLWhvdmVyLTAzLCAjZThlOGU4KTtcXG4gIC0tY2RzLWxheWVyLXNlbGVjdGVkOiB2YXIoLS1jZHMtbGF5ZXItc2VsZWN0ZWQtMDMsICNlMGUwZTApO1xcbiAgLS1jZHMtbGF5ZXItc2VsZWN0ZWQtaG92ZXI6IHZhcigtLWNkcy1sYXllci1zZWxlY3RlZC1ob3Zlci0wMywgI2QxZDFkMSk7XFxuICAtLWNkcy1sYXllci1hY2NlbnQ6IHZhcigtLWNkcy1sYXllci1hY2NlbnQtMDMsICNlMGUwZTApO1xcbiAgLS1jZHMtbGF5ZXItYWNjZW50LWhvdmVyOiB2YXIoLS1jZHMtbGF5ZXItYWNjZW50LWhvdmVyLTAzLCAjZDFkMWQxKTtcXG4gIC0tY2RzLWxheWVyLWFjY2VudC1hY3RpdmU6IHZhcigtLWNkcy1sYXllci1hY2NlbnQtYWN0aXZlLTAzLCAjYThhOGE4KTtcXG4gIC0tY2RzLWZpZWxkOiB2YXIoLS1jZHMtZmllbGQtMDMsICNmNGY0ZjQpO1xcbiAgLS1jZHMtZmllbGQtaG92ZXI6IHZhcigtLWNkcy1maWVsZC1ob3Zlci0wMywgI2U4ZThlOCk7XFxuICAtLWNkcy1ib3JkZXItc3VidGxlOiB2YXIoLS1jZHMtYm9yZGVyLXN1YnRsZS0wMiwgI2UwZTBlMCk7XFxuICAtLWNkcy1ib3JkZXItc3VidGxlLXNlbGVjdGVkOiB2YXIoLS1jZHMtYm9yZGVyLXN1YnRsZS1zZWxlY3RlZC0wMywgI2M2YzZjNik7XFxuICAtLWNkcy1ib3JkZXItc3Ryb25nOiB2YXIoLS1jZHMtYm9yZGVyLXN0cm9uZy0wMywgIzhkOGQ4ZCk7XFxuICAtLWNkcy1ib3JkZXItdGlsZTogdmFyKC0tY2RzLWJvcmRlci10aWxlLTAzLCAjYzZjNmM2KTtcXG59XFxuXFxuLkltVjJ0bUVlMENZbjZqU2R1cnpCc0FcXFxcPVxcXFw9Lnd2cURybnUwXFxcXCsyWUNxM2Y4TXpvY1lBXFxcXD1cXFxcPSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtbGF5ZXItYmFja2dyb3VuZCk7XFxufVxcblxcbi5GMk41WU1iV0ZwcHVna2o4SUFxOWdRXFxcXD1cXFxcPS53dnFEcm51MFxcXFwrMllDcTNmOE16b2NZQVxcXFw9XFxcXD0ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWxheWVyLWJhY2tncm91bmQpO1xcbn1cXG5cXG4uU1xcXFwrbGdaUGFzcXkzUGRySEpUYUhGY0FcXFxcPVxcXFw9Lnd2cURybnUwXFxcXCsyWUNxM2Y4TXpvY1lBXFxcXD1cXFxcPSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtbGF5ZXItYmFja2dyb3VuZCk7XFxufVxcblxcbkBrZXlmcmFtZXMgRFFnOW42NFpvTEoxd0dRaS1rRFFqZ1xcXFw9XFxcXD0ge1xcbiAgMCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICB2aXNpYmlsaXR5OiBpbmhlcml0O1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBqOGpuNG5iMDRpMUt6Qkp1dFp3LVJBXFxcXD1cXFxcPSB7XFxuICAwJSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICB2aXNpYmlsaXR5OiBpbmhlcml0O1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIEJReXNTZXlcXFxcKzBoeVxcXFwrVFA4ZU1EbXctZ1xcXFw9XFxcXD0ge1xcbiAgMCUge1xcbiAgICBvcGFjaXR5OiAwLjM7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDApO1xcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xcbiAgfVxcbiAgMjAlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7XFxuICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQ7XFxuICB9XFxuICAyOCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTtcXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQ7XFxuICB9XFxuICA1MSUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQ7XFxuICB9XFxuICA1OCUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQ7XFxuICB9XFxuICA4MiUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTtcXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQ7XFxuICB9XFxuICA4MyUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTtcXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdDtcXG4gIH1cXG4gIDk2JSB7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDApO1xcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIG9wYWNpdHk6IDAuMztcXG4gICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XFxuICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQ7XFxuICB9XFxufVxcbi53SlBaRHZST3J5c2RsbjhZSXpDSllnXFxcXD1cXFxcPSxcXG4uXzEzTmsyTUhEajFQNnNkU1FmUTdtd2dcXFxcPVxcXFw9IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwYWRkaW5nOiAwO1xcbiAgYm9yZGVyOiAwO1xcbiAgbWFyZ2luOiAtMXB4O1xcbiAgYmxvY2stc2l6ZTogMXB4O1xcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcXG4gIGlubGluZS1zaXplOiAxcHg7XFxuICB2aXNpYmlsaXR5OiBpbmhlcml0O1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG59XFxuXFxuLnlsdnE0THQ0enduWWxjbW5RTUx2QkFcXFxcPVxcXFw9IHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG59XFxuXFxuLnlsdnE0THQ0enduWWxjbW5RTUx2QkFcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuXFxuLmhac0x5MHJuYTViXFxcXCtJSlphdURcXFxcKzhjUVxcXFw9XFxcXD0gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1wb3BvdmVyLWJhY2tncm91bmQtY29sb3I6IHZhcigtLWNkcy1iYWNrZ3JvdW5kLWludmVyc2UsICMzOTM5MzkpO1xcbiAgLS1jZHMtcG9wb3Zlci10ZXh0LWNvbG9yOiB2YXIoLS1jZHMtdGV4dC1pbnZlcnNlLCAjZmZmZmZmKTtcXG59XFxuXFxuLm5UekxZS0kzRWxIZXg4MEQ0UEhheFFcXFxcPVxcXFw9IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9IHtcXG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMCAycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSk7XFxufVxcblxcbi5yS2VDM2FFQ1xcXFwrLVhyaUx1eVBTS0NKUVxcXFw9XFxcXD0ge1xcbiAgLS1jZHMtcG9wb3Zlci1vZmZzZXQ6IDAuNjI1cmVtO1xcbn1cXG5cXG4uXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9IHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IDYwMDA7XFxuICBmaWx0ZXI6IHZhcigtLWNkcy1wb3BvdmVyLWRyb3Atc2hhZG93LCBub25lKTtcXG4gIGluc2V0OiAwO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcblxcbi5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0ge1xcbiAgLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LXNtOiAycmVtO1xcbiAgLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LW1kOiAyLjVyZW07XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtbGc6IDNyZW07XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlcjogMDtcXG4gIG1hcmdpbjogMDtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgZm9udC1zaXplOiAxMDAlO1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogNjAwMDtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1jZHMtcG9wb3Zlci1ib3JkZXItcmFkaXVzLCAycHgpO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLXBvcG92ZXItYmFja2dyb3VuZC1jb2xvciwgdmFyKC0tY2RzLWxheWVyKSk7XFxuICBjb2xvcjogdmFyKC0tY2RzLXBvcG92ZXItdGV4dC1jb2xvciwgdmFyKC0tY2RzLXRleHQtcHJpbWFyeSwgIzE2MTYxNikpO1xcbiAgaW5saW5lLXNpemU6IG1heC1jb250ZW50O1xcbiAgbWF4LWlubGluZS1zaXplOiAyM3JlbTtcXG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xcbn1cXG4uWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9Lmh6dlRhUEhNQXIwTzhVempUWVZtUEFcXFxcPVxcXFw9LCAuaHp2VGFQSE1BcjBPOFV6alRZVm1QQVxcXFw9XFxcXD0gOndoZXJlKC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0pIHtcXG4gIC0tY2RzLWxheW91dC1zaXplLWhlaWdodDogdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1zbSk7XFxufVxcbi5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0uc1c1c05JcElra2hxWE4xYzJQNzZRd1xcXFw9XFxcXD0sIC5zVzVzTklwSWtraHFYTjFjMlA3NlF3XFxcXD1cXFxcPSA6d2hlcmUoLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSkge1xcbiAgLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0OiB2YXIoLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LW1kKTtcXG59XFxuLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPS5oVC0tV1laNEpFQm5aVXJ6TlZJMm1RXFxcXD1cXFxcPSwgLmhULS1XWVo0SkVCblpVcnpOVkkybVFcXFxcPVxcXFw9IDp3aGVyZSguWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9KSB7XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQ6IHZhcigtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtbGcpO1xcbn1cXG4uWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9ICosXFxuLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSAqOjpiZWZvcmUsXFxuLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSAqOjphZnRlciB7XFxuICBib3gtc2l6aW5nOiBpbmhlcml0O1xcbn1cXG5cXG4uYy1sTkNlSFlkd3lcXFxcK2hybUlCRzdLckFcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0ge1xcbiAgZGlzcGxheTogYmxvY2s7XFxufVxcblxcbi5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD06OmJlZm9yZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBkaXNwbGF5OiBub25lO1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxufVxcblxcbi5jLWxOQ2VIWWR3eVxcXFwraHJtSUJHN0tyQVxcXFw9XFxcXD0gPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPTo6YmVmb3JlIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbn1cXG5cXG4ucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbi5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPS5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogNjAwMDtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtcG9wb3Zlci1iYWNrZ3JvdW5kLWNvbG9yLCB2YXIoLS1jZHMtbGF5ZXIpKTtcXG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XFxufVxcblxcbi5yS2VDM2FFQ1xcXFwrLVhyaUx1eVBTS0NKUVxcXFw9XFxcXD0uYy1sTkNlSFlkd3lcXFxcK2hybUlCRzdLckFcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0ge1xcbiAgZGlzcGxheTogYmxvY2s7XFxufVxcblxcbi5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPS5yS2VDM2FFQ1xcXFwrLVhyaUx1eVBTS0NKUVxcXFw9XFxcXD0uYy1sTkNlSFlkd3lcXFxcK2hybUlCRzdLckFcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9IHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbn1cXG5cXG4uZXdLXFxcXCtsVmt2YTdYVkQycHFaRDVuaXdcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0ge1xcbiAgZGlzcGxheTogbm9uZTtcXG59XFxuXFxuLlFKVlMzN3VodkVvTWtZYnVmRzQxeHdcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0ge1xcbiAgaW5zZXQtYmxvY2stZW5kOiAwO1xcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiA1MCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCBjYWxjKDEwMCUgKyB2YXIoLS1jZHMtcG9wb3Zlci1vZmZzZXQsIDByZW0pKSk7XFxufVxcblxcbltkaXI9cnRsXSAuUUpWUzM3dWh2RW9Na1lidWZHNDF4d1xcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1MCUsIGNhbGMoMTAwJSArIHZhcigtLWNkcy1wb3BvdmVyLW9mZnNldCwgMHJlbSkpKTtcXG59XFxuXFxuLm1mQno2bFxcXFwrc3JWTEU5VFk2TkplSjVBXFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9LFxcbi5fNkJINnRpWmdsbmp4Z2kwY3d6TnRRd1xcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSB7XFxuICBpbnNldC1ibG9jay1lbmQ6IDA7XFxuICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShjYWxjKC0xICogdmFyKC0tY2RzLXBvcG92ZXItb2Zmc2V0LCAwcmVtKSksIGNhbGMoMTAwJSArIHZhcigtLWNkcy1wb3BvdmVyLW9mZnNldCwgMHJlbSkpKTtcXG59XFxuXFxuW2Rpcj1ydGxdIC5tZkJ6NmxcXFxcK3NyVkxFOVRZNk5KZUo1QVxcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSxcXG5bZGlyPXJ0bF0gLl82Qkg2dGlaZ2xuanhnaTBjd3pOdFF3XFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9IHtcXG4gIGluc2V0LWlubGluZS1lbmQ6IDA7XFxuICBpbnNldC1pbmxpbmUtc3RhcnQ6IGluaXRpYWw7XFxufVxcblxcbi5fNzVWRlZBWUdzN0RJclVJZm14UHpGQVxcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSxcXG4uZkdhUUgwMTBQdDJGTDNlR05LYkRpZ1xcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSB7XFxuICBpbnNldC1ibG9jay1lbmQ6IDA7XFxuICBpbnNldC1pbmxpbmUtZW5kOiAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUodmFyKC0tY2RzLXBvcG92ZXItb2Zmc2V0LCAwcmVtKSwgY2FsYygxMDAlICsgdmFyKC0tY2RzLXBvcG92ZXItb2Zmc2V0LCAwcmVtKSkpO1xcbn1cXG5cXG4uZkdhUUgwMTBQdDJGTDNlR05LYkRpZ1xcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG4uUkgtYnpGcWJjenJJa1NHUTkwa0oxQVxcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSB7XFxuICBpbnNldC1ibG9jay1lbmQ6IDA7XFxuICBpbnNldC1pbmxpbmUtZW5kOiAwO1xcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiBhdXRvO1xcbn1cXG5cXG4uXzZCSDZ0aVpnbG5qeGdpMGN3ek50UXdcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0ge1xcbiAgaW5zZXQtYmxvY2stZW5kOiAwO1xcbiAgaW5zZXQtaW5saW5lLWVuZDogYXV0bztcXG4gIGluc2V0LWlubGluZS1zdGFydDogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDUwJSwgY2FsYyh2YXIoLS1jZHMtcG9wb3Zlci1vZmZzZXQsIDByZW0pKSk7XFxufVxcblxcbi5iSmRYT3d4ZkdtOThJaGZNc1h4YjRRXFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9IHtcXG4gIGluc2V0LWJsb2NrLWVuZDogMDtcXG4gIGluc2V0LWlubGluZS1lbmQ6IGF1dG87XFxuICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1MCUsIGNhbGMoLTEgKiB2YXIoLS1jZHMtcG9wb3Zlci1vZmZzZXQsIDByZW0pKSk7XFxufVxcblxcbltkaXI9cnRsXSAuXzc1VkZWQVlHczdESXJVSWZteFB6RkFcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0sXFxuW2Rpcj1ydGxdIC5mR2FRSDAxMFB0MkZMM2VHTktiRGlnXFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9IHtcXG4gIGluc2V0LWlubGluZS1zdGFydDogMDtcXG59XFxuXFxuLlFKVlMzN3VodkVvTWtZYnVmRzQxeHdcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD06OmJlZm9yZSxcXG4ubWZCejZsXFxcXCtzclZMRTlUWTZOSmVKNUFcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD06OmJlZm9yZSxcXG4uXzZCSDZ0aVpnbG5qeGdpMGN3ek50UXdcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD06OmJlZm9yZSxcXG4uXzc1VkZWQVlHczdESXJVSWZteFB6RkFcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD06OmJlZm9yZSxcXG4uZkdhUUgwMTBQdDJGTDNlR05LYkRpZ1xcXFw9XFxcXD0gPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPTo6YmVmb3JlIHtcXG4gIGJsb2NrLXNpemU6IHZhcigtLWNkcy1wb3BvdmVyLW9mZnNldCwgMHJlbSk7XFxuICBpbnNldC1ibG9jay1zdGFydDogMDtcXG4gIGluc2V0LWlubGluZTogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XFxufVxcblxcbi5RSlZTMzd1aHZFb01rWWJ1Zkc0MXh3XFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbi5tZkJ6NmxcXFxcK3NyVkxFOVRZNk5KZUo1QVxcXFw9XFxcXD0gPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG4uXzZCSDZ0aVpnbG5qeGdpMGN3ek50UXdcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0sXFxuLl83NVZGVkFZR3M3RElyVUlmbXhQekZBXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbi5mR2FRSDAxMFB0MkZMM2VHTktiRGlnXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9IHtcXG4gIGJsb2NrLXNpemU6IHZhcigtLWNkcy1wb3BvdmVyLWNhcmV0LWhlaWdodCwgMC4zNzVyZW0pO1xcbiAgY2xpcC1wYXRoOiBwb2x5Z29uKDAlIDEwMCUsIDUwJSAwJSwgMTAwJSAxMDAlKTtcXG4gIGlubGluZS1zaXplOiB2YXIoLS1jZHMtcG9wb3Zlci1jYXJldC13aWR0aCwgMC43NXJlbSk7XFxuICBpbnNldC1ibG9jay1lbmQ6IDA7XFxuICBpbnNldC1pbmxpbmUtc3RhcnQ6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIHZhcigtLWNkcy1wb3BvdmVyLW9mZnNldCwgMHJlbSkpO1xcbn1cXG5cXG5bZGlyPXJ0bF0gLlFKVlMzN3VodkVvTWtZYnVmRzQxeHdcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0sXFxuW2Rpcj1ydGxdIC5tZkJ6NmxcXFxcK3NyVkxFOVRZNk5KZUo1QVxcXFw9XFxcXD0gPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG5bZGlyPXJ0bF0gLl82Qkg2dGlaZ2xuanhnaTBjd3pOdFF3XFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbltkaXI9cnRsXSAuXzc1VkZWQVlHczdESXJVSWZteFB6RkFcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0sXFxuW2Rpcj1ydGxdIC5mR2FRSDAxMFB0MkZMM2VHTktiRGlnXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9IHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDUwJSwgdmFyKC0tY2RzLXBvcG92ZXItb2Zmc2V0LCAwcmVtKSk7XFxufVxcblxcbi5RSlZTMzd1aHZFb01rWWJ1Zkc0MXh3XFxcXD1cXFxcPS5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG4ubWZCejZsXFxcXCtzclZMRTlUWTZOSmVKNUFcXFxcPVxcXFw9Llh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbi5fNkJINnRpWmdsbmp4Z2kwY3d6TnRRd1xcXFw9XFxcXD0uWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0gPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0sXFxuLl83NVZGVkFZR3M3RElyVUlmbXhQekZBXFxcXD1cXFxcPS5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG4uZkdhUUgwMTBQdDJGTDNlR05LYkRpZ1xcXFw9XFxcXD0uWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0gPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0ge1xcbiAgYmxvY2stc2l6ZTogdmFyKC0tY2RzLXBvcG92ZXItY2FyZXQtaGVpZ2h0LCAwLjM3NXJlbSk7XFxuICBjbGlwLXBhdGg6IHBvbHlnb24oMCUgMTAwJSwgNTAlIDAlLCAxMDAlIDEwMCUpO1xcbiAgaW5saW5lLXNpemU6IHZhcigtLWNkcy1wb3BvdmVyLWNhcmV0LXdpZHRoLCAwLjc1cmVtKTtcXG59XFxuXFxuLmZVZnVPY3llMDdjVGhQTi0zSXVzdHdcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0ge1xcbiAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XFxuICBpbnNldC1pbmxpbmUtc3RhcnQ6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIGNhbGMoLTEwMCUgLSB2YXIoLS1jZHMtcG9wb3Zlci1vZmZzZXQsIDByZW0pKSk7XFxufVxcblxcbltkaXI9cnRsXSAuZlVmdU9jeWUwN2NUaFBOLTNJdXN0d1xcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1MCUsIGNhbGMoLTEwMCUgLSB2YXIoLS1jZHMtcG9wb3Zlci1vZmZzZXQsIDByZW0pKSk7XFxufVxcblxcbi5fMmEyWU5OZXpHYUF1ZkhxYVljQjJId1xcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSxcXG4uYkpkWE93eGZHbTk4SWhmTXNYeGI0UVxcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSB7XFxuICBpbnNldC1ibG9jay1zdGFydDogMDtcXG4gIGluc2V0LWlubGluZS1zdGFydDogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKGNhbGMoLTEgKiB2YXIoLS1jZHMtcG9wb3Zlci1vZmZzZXQsIDByZW0pKSwgY2FsYygtMTAwJSAtIHZhcigtLWNkcy1wb3BvdmVyLW9mZnNldCwgMHJlbSkpKTtcXG59XFxuXFxuW2Rpcj1ydGxdIC5fMmEyWU5OZXpHYUF1ZkhxYVljQjJId1xcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSxcXG5bZGlyPXJ0bF0gLmJKZFhPd3hmR205OEloZk1zWHhiNFFcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0ge1xcbiAgaW5zZXQtaW5saW5lLWVuZDogMDtcXG4gIGluc2V0LWlubGluZS1zdGFydDogaW5pdGlhbDtcXG59XFxuXFxuLl84bXZHRElYb2pJb2JrdjAtbW9qXFxcXCs1d1xcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSxcXG4uUkgtYnpGcWJjenJJa1NHUTkwa0oxQVxcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSB7XFxuICBpbnNldC1ibG9jay1zdGFydDogMDtcXG4gIGluc2V0LWlubGluZS1lbmQ6IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSh2YXIoLS1jZHMtcG9wb3Zlci1vZmZzZXQsIDByZW0pLCBjYWxjKC0xMDAlIC0gdmFyKC0tY2RzLXBvcG92ZXItb2Zmc2V0LCAwcmVtKSkpO1xcbn1cXG5cXG5bZGlyPXJ0bF0gLl84bXZHRElYb2pJb2JrdjAtbW9qXFxcXCs1d1xcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSxcXG5bZGlyPXJ0bF0gLlJILWJ6RnFiY3pySWtTR1E5MGtKMUFcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0ge1xcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xcbn1cXG5cXG4uZlVmdU9jeWUwN2NUaFBOLTNJdXN0d1xcXFw9XFxcXD0gPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPTo6YmVmb3JlLFxcbi5fMmEyWU5OZXpHYUF1ZkhxYVljQjJId1xcXFw9XFxcXD0gPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPTo6YmVmb3JlLFxcbi5iSmRYT3d4ZkdtOThJaGZNc1h4YjRRXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9OjpiZWZvcmUsXFxuLl84bXZHRElYb2pJb2JrdjAtbW9qXFxcXCs1d1xcXFw9XFxcXD0gPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPTo6YmVmb3JlLFxcbi5SSC1iekZxYmN6cklrU0dROTBrSjFBXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9OjpiZWZvcmUge1xcbiAgYmxvY2stc2l6ZTogdmFyKC0tY2RzLXBvcG92ZXItb2Zmc2V0LCAwcmVtKTtcXG4gIGluc2V0LWJsb2NrLWVuZDogMDtcXG4gIGluc2V0LWlubGluZTogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG59XFxuXFxuLmZVZnVPY3llMDdjVGhQTi0zSXVzdHdcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0sXFxuLl8yYTJZTk5lekdhQXVmSHFhWWNCMkh3XFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbi5iSmRYT3d4ZkdtOThJaGZNc1h4YjRRXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbi5fOG12R0RJWG9qSW9ia3YwLW1valxcXFwrNXdcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0sXFxuLlJILWJ6RnFiY3pySWtTR1E5MGtKMUFcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0ge1xcbiAgYmxvY2stc2l6ZTogdmFyKC0tY2RzLXBvcG92ZXItY2FyZXQtaGVpZ2h0LCAwLjM3NXJlbSk7XFxuICBjbGlwLXBhdGg6IHBvbHlnb24oMCUgMCUsIDUwJSAxMDAlLCAxMDAlIDAlKTtcXG4gIGlubGluZS1zaXplOiB2YXIoLS1jZHMtcG9wb3Zlci1jYXJldC13aWR0aCwgMC43NXJlbSk7XFxuICBpbnNldC1ibG9jay1zdGFydDogMDtcXG4gIGluc2V0LWlubGluZS1zdGFydDogNTAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgY2FsYygtMSAqIHZhcigtLWNkcy1wb3BvdmVyLW9mZnNldCwgMHJlbSkpKTtcXG59XFxuXFxuW2Rpcj1ydGxdIC5mVWZ1T2N5ZTA3Y1RoUE4tM0l1c3R3XFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbltkaXI9cnRsXSAuXzJhMllOTmV6R2FBdWZIcWFZY0IySHdcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0sXFxuW2Rpcj1ydGxdIC5iSmRYT3d4ZkdtOThJaGZNc1h4YjRRXFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbltkaXI9cnRsXSAuXzhtdkdESVhvaklvYmt2MC1tb2pcXFxcKzV3XFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbltkaXI9cnRsXSAuUkgtYnpGcWJjenJJa1NHUTkwa0oxQVxcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1MCUsIGNhbGMoLTEgKiB2YXIoLS1jZHMtcG9wb3Zlci1vZmZzZXQsIDByZW0pKSk7XFxufVxcblxcbi5mVWZ1T2N5ZTA3Y1RoUE4tM0l1c3R3XFxcXD1cXFxcPS5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG4uXzJhMllOTmV6R2FBdWZIcWFZY0IySHdcXFxcPVxcXFw9Llh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbi5iSmRYT3d4ZkdtOThJaGZNc1h4YjRRXFxcXD1cXFxcPS5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG4uXzhtdkdESVhvaklvYmt2MC1tb2pcXFxcKzV3XFxcXD1cXFxcPS5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG4uUkgtYnpGcWJjenJJa1NHUTkwa0oxQVxcXFw9XFxcXD0uWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0gPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0ge1xcbiAgYmxvY2stc2l6ZTogdmFyKC0tY2RzLXBvcG92ZXItY2FyZXQtaGVpZ2h0LCAwLjM3NXJlbSk7XFxuICBjbGlwLXBhdGg6IHBvbHlnb24oMCUgMCUsIDUwJSAxMDAlLCAxMDAlIDAlKTtcXG4gIGlubGluZS1zaXplOiB2YXIoLS1jZHMtcG9wb3Zlci1jYXJldC13aWR0aCwgMC43NXJlbSk7XFxufVxcblxcbi5WbnZ1UGZlQlxcXFwrN2EyLXV2WFRua05pZ1xcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSB7XFxuICBpbnNldC1ibG9jay1zdGFydDogNTAlO1xcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiAxMDAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUodmFyKC0tY2RzLXBvcG92ZXItb2Zmc2V0LCAwcmVtKSwgLTUwJSk7XFxufVxcblxcbi5SMHdUMVY3Y3NhZkZxalA2WTlYQjBBXFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9LFxcbi5xQWg2VWFOdUJtOEFMZlg0cTdMUFZBXFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9IHtcXG4gIGluc2V0LWJsb2NrLXN0YXJ0OiA1MCU7XFxuICBpbnNldC1pbmxpbmUtc3RhcnQ6IDEwMCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSh2YXIoLS1jZHMtcG9wb3Zlci1vZmZzZXQsIDByZW0pLCBjYWxjKDAuNSAqIHZhcigtLWNkcy1wb3BvdmVyLW9mZnNldCwgMHJlbSkgKiAtMSAtIDE2cHgpKTtcXG59XFxuXFxuLnNWcUEtdUNkWlhVTW1MblgtZmFtUndcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0sXFxuLkZpeExxXFxcXCtPQk9iZ3hObXVmeGpLSjVRXFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9IHtcXG4gIGluc2V0LWJsb2NrLWVuZDogNTAlO1xcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiAxMDAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUodmFyKC0tY2RzLXBvcG92ZXItb2Zmc2V0LCAwcmVtKSwgY2FsYygwLjUgKiB2YXIoLS1jZHMtcG9wb3Zlci1vZmZzZXQsIDByZW0pICsgMTZweCkpO1xcbn1cXG5cXG5bZGlyPXJ0bF0gLlZudnVQZmVCXFxcXCs3YTItdXZYVG5rTmlnXFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9LFxcbltkaXI9cnRsXSAuc1ZxQS11Q2RaWFVNbUxuWC1mYW1Sd1xcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSxcXG5bZGlyPXJ0bF0gLkZpeExxXFxcXCtPQk9iZ3hObXVmeGpLSjVRXFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9LFxcbltkaXI9cnRsXSAuUjB3VDFWN2NzYWZGcWpQNlk5WEIwQVxcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSxcXG5bZGlyPXJ0bF0gLnFBaDZVYU51Qm04QUxmWDRxN0xQVkFcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0ge1xcbiAgaW5zZXQtaW5saW5lLWVuZDogMTAwJTtcXG4gIGluc2V0LWlubGluZS1zdGFydDogaW5pdGlhbDtcXG59XFxuXFxuLlZudnVQZmVCXFxcXCs3YTItdXZYVG5rTmlnXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9OjpiZWZvcmUsXFxuLlIwd1QxVjdjc2FmRnFqUDZZOVhCMEFcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD06OmJlZm9yZSxcXG4ucUFoNlVhTnVCbThBTGZYNHE3TFBWQVxcXFw9XFxcXD0gPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPTo6YmVmb3JlLFxcbi5zVnFBLXVDZFpYVU1tTG5YLWZhbVJ3XFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9OjpiZWZvcmUsXFxuLkZpeExxXFxcXCtPQk9iZ3hObXVmeGpLSjVRXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9OjpiZWZvcmUge1xcbiAgaW5saW5lLXNpemU6IHZhcigtLWNkcy1wb3BvdmVyLW9mZnNldCwgMHJlbSk7XFxuICBpbnNldC1ibG9jazogMDtcXG4gIGluc2V0LWlubGluZS1zdGFydDogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XFxufVxcblxcbi5WbnZ1UGZlQlxcXFwrN2EyLXV2WFRua05pZ1xcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG4uUjB3VDFWN2NzYWZGcWpQNlk5WEIwQVxcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG4ucUFoNlVhTnVCbThBTGZYNHE3TFBWQVxcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG4uc1ZxQS11Q2RaWFVNbUxuWC1mYW1Sd1xcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG4uRml4THFcXFxcK09CT2JneE5tdWZ4aktKNVFcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0ge1xcbiAgYmxvY2stc2l6ZTogdmFyKC0tY2RzLXBvcG92ZXItY2FyZXQtd2lkdGgsIDAuNzVyZW0pO1xcbiAgY2xpcC1wYXRoOiBwb2x5Z29uKDAlIDUwJSwgMTAwJSAwJSwgMTAwJSAxMDAlKTtcXG4gIGlubGluZS1zaXplOiB2YXIoLS1jZHMtcG9wb3Zlci1jYXJldC1oZWlnaHQsIDAuMzc1cmVtKTtcXG4gIGluc2V0LWJsb2NrLXN0YXJ0OiA1MCU7XFxuICBpbnNldC1pbmxpbmUtc3RhcnQ6IDEwMCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShjYWxjKHZhcigtLWNkcy1wb3BvdmVyLW9mZnNldCwgMHJlbSkgLSAxMDAlKSwgLTUwJSk7XFxufVxcblxcbltkaXI9cnRsXSAuVm52dVBmZUJcXFxcKzdhMi11dlhUbmtOaWdcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0sXFxuW2Rpcj1ydGxdIC5SMHdUMVY3Y3NhZkZxalA2WTlYQjBBXFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbltkaXI9cnRsXSAucUFoNlVhTnVCbThBTGZYNHE3TFBWQVxcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG5bZGlyPXJ0bF0gLnNWcUEtdUNkWlhVTW1MblgtZmFtUndcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0sXFxuW2Rpcj1ydGxdIC5GaXhMcVxcXFwrT0JPYmd4Tm11ZnhqS0o1UVxcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSB7XFxuICBpbnNldC1pbmxpbmUtZW5kOiAxMDAlO1xcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiBpbml0aWFsO1xcbn1cXG5cXG4uVm52dVBmZUJcXFxcKzdhMi11dlhUbmtOaWdcXFxcPVxcXFw9Llh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbi5SMHdUMVY3Y3NhZkZxalA2WTlYQjBBXFxcXD1cXFxcPS5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG4ucUFoNlVhTnVCbThBTGZYNHE3TFBWQVxcXFw9XFxcXD0uWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0gPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0sXFxuLnNWcUEtdUNkWlhVTW1MblgtZmFtUndcXFxcPVxcXFw9Llh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbi5GaXhMcVxcXFwrT0JPYmd4Tm11ZnhqS0o1UVxcXFw9XFxcXD0uWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0gPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0ge1xcbiAgYmxvY2stc2l6ZTogdmFyKC0tY2RzLXBvcG92ZXItY2FyZXQtd2lkdGgsIDAuNzVyZW0pO1xcbiAgY2xpcC1wYXRoOiBwb2x5Z29uKDAlIDUwJSwgMTAwJSAwJSwgMTAwJSAxMDAlKTtcXG4gIGlubGluZS1zaXplOiB2YXIoLS1jZHMtcG9wb3Zlci1jYXJldC1oZWlnaHQsIDAuMzc1cmVtKTtcXG59XFxuXFxuLk1mRWhCM2lQRjhwUW1CSndnOXFDbVFcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0ge1xcbiAgaW5zZXQtYmxvY2stc3RhcnQ6IDUwJTtcXG4gIGluc2V0LWlubGluZS1lbmQ6IDEwMCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShjYWxjKC0xICogdmFyKC0tY2RzLXBvcG92ZXItb2Zmc2V0LCAwcmVtKSArIDAuMXB4KSwgLTUwJSk7XFxufVxcblxcbi54dU45MFhWT2ttcHBZTFNEMGlXcmZBXFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9LFxcbi5EbllcXFxcK2xQU29rYlliRFxcXFwrOUtzTnJhNHdcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0ge1xcbiAgaW5zZXQtYmxvY2stc3RhcnQ6IDUwJTtcXG4gIGluc2V0LWlubGluZS1lbmQ6IDEwMCU7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShjYWxjKC0xICogdmFyKC0tY2RzLXBvcG92ZXItb2Zmc2V0LCAwcmVtKSksIGNhbGMoLTAuNSAqIHZhcigtLWNkcy1wb3BvdmVyLW9mZnNldCwgMHJlbSkgLSAxNnB4KSk7XFxufVxcblxcbi5xSFJkRmYxVHVcXFxcK251YUZaNHR4NWNjd1xcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSxcXG4uXzl2RnpyVTZLNzBDcVRqY0ZDbUpZU2dcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0ge1xcbiAgaW5zZXQtYmxvY2stZW5kOiA1MCU7XFxuICBpbnNldC1pbmxpbmUtZW5kOiAxMDAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYygtMSAqIHZhcigtLWNkcy1wb3BvdmVyLW9mZnNldCwgMHJlbSkpLCBjYWxjKDAuNSAqIHZhcigtLWNkcy1wb3BvdmVyLW9mZnNldCwgMHJlbSkgKyAxNnB4KSk7XFxufVxcblxcbltkaXI9cnRsXSAuTWZFaEIzaVBGOHBRbUJKd2c5cUNtUVxcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSxcXG5bZGlyPXJ0bF0gLnFIUmRGZjFUdVxcXFwrbnVhRlo0dHg1Y2N3XFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9LFxcbltkaXI9cnRsXSAuXzl2RnpyVTZLNzBDcVRqY0ZDbUpZU2dcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0sXFxuW2Rpcj1ydGxdIC54dU45MFhWT2ttcHBZTFNEMGlXcmZBXFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9LFxcbltkaXI9cnRsXSAuRG5ZXFxcXCtsUFNva2JZYkRcXFxcKzlLc05yYTR3XFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9IHtcXG4gIGluc2V0LWlubGluZS1lbmQ6IGluaXRpYWw7XFxuICBpbnNldC1pbmxpbmUtc3RhcnQ6IDEwMCU7XFxufVxcblxcbi5NZkVoQjNpUEY4cFFtQkp3ZzlxQ21RXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9OjpiZWZvcmUsXFxuLnh1TjkwWFZPa21wcFlMU0QwaVdyZkFcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD06OmJlZm9yZSxcXG4uRG5ZXFxcXCtsUFNva2JZYkRcXFxcKzlLc05yYTR3XFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9OjpiZWZvcmUsXFxuLnFIUmRGZjFUdVxcXFwrbnVhRlo0dHg1Y2N3XFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9OjpiZWZvcmUsXFxuLl85dkZ6clU2SzcwQ3FUamNGQ21KWVNnXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9OjpiZWZvcmUge1xcbiAgaW5saW5lLXNpemU6IHZhcigtLWNkcy1wb3BvdmVyLW9mZnNldCwgMHJlbSk7XFxuICBpbnNldC1ibG9jazogMDtcXG4gIGluc2V0LWlubGluZS1lbmQ6IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxufVxcblxcbi5NZkVoQjNpUEY4cFFtQkp3ZzlxQ21RXFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbi54dU45MFhWT2ttcHBZTFNEMGlXcmZBXFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbi5EbllcXFxcK2xQU29rYlliRFxcXFwrOUtzTnJhNHdcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0sXFxuLnFIUmRGZjFUdVxcXFwrbnVhRlo0dHg1Y2N3XFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9LFxcbi5fOXZGenJVNks3MENxVGpjRkNtSllTZ1xcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSB7XFxuICBibG9jay1zaXplOiB2YXIoLS1jZHMtcG9wb3Zlci1jYXJldC13aWR0aCwgMC43NXJlbSk7XFxuICBjbGlwLXBhdGg6IHBvbHlnb24oMCUgMCUsIDEwMCUgNTAlLCAwJSAxMDAlKTtcXG4gIGlubGluZS1zaXplOiB2YXIoLS1jZHMtcG9wb3Zlci1jYXJldC1oZWlnaHQsIDAuMzc1cmVtKTtcXG4gIGluc2V0LWJsb2NrLXN0YXJ0OiA1MCU7XFxuICBpbnNldC1pbmxpbmUtZW5kOiAxMDAlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYygtMSAqIHZhcigtLWNkcy1wb3BvdmVyLW9mZnNldCwgMHJlbSkgKyAxMDAlKSwgLTUwJSk7XFxufVxcblxcbltkaXI9cnRsXSAuTWZFaEIzaVBGOHBRbUJKd2c5cUNtUVxcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG5bZGlyPXJ0bF0gLnh1TjkwWFZPa21wcFlMU0QwaVdyZkFcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0sXFxuW2Rpcj1ydGxdIC5EbllcXFxcK2xQU29rYlliRFxcXFwrOUtzTnJhNHdcXFxcPVxcXFw9Om5vdCguWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0pID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0sXFxuW2Rpcj1ydGxdIC5xSFJkRmYxVHVcXFxcK251YUZaNHR4NWNjd1xcXFw9XFxcXD06bm90KC5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSkgPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG5bZGlyPXJ0bF0gLl85dkZ6clU2SzcwQ3FUamNGQ21KWVNnXFxcXD1cXFxcPTpub3QoLlh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9KSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9IHtcXG4gIGluc2V0LWlubGluZS1lbmQ6IGluaXRpYWw7XFxuICBpbnNldC1pbmxpbmUtc3RhcnQ6IDEwMCU7XFxufVxcblxcbi5NZkVoQjNpUEY4cFFtQkp3ZzlxQ21RXFxcXD1cXFxcPS5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG4ueHVOOTBYVk9rbXBwWUxTRDBpV3JmQVxcXFw9XFxcXD0uWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0gPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0sXFxuLkRuWVxcXFwrbFBTb2tiWWJEXFxcXCs5S3NOcmE0d1xcXFw9XFxcXD0uWHZlNjV5QndwOFR2dEZ0WTFsUHlJUVxcXFw9XFxcXD0gPiAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9ID4gLlhmVjBIUWwyNFNwXFxcXCt6SFE2WFVRazdRXFxcXD1cXFxcPSA+IC5yS2ZteUxqdU5mWEZwcTBaMlxcXFwrT0RXd1xcXFw9XFxcXD0sXFxuLnFIUmRGZjFUdVxcXFwrbnVhRlo0dHg1Y2N3XFxcXD1cXFxcPS5YdmU2NXlCd3A4VHZ0RnRZMWxQeUlRXFxcXD1cXFxcPSA+IC5fM3RNRHNNZ2w0cERFVHFIVW1vUG1yZ1xcXFw9XFxcXD0gPiAuWGZWMEhRbDI0U3BcXFxcK3pIUTZYVVFrN1FcXFxcPVxcXFw9ID4gLnJLZm15TGp1TmZYRnBxMFoyXFxcXCtPRFd3XFxcXD1cXFxcPSxcXG4uXzl2RnpyVTZLNzBDcVRqY0ZDbUpZU2dcXFxcPVxcXFw9Llh2ZTY1eUJ3cDhUdnRGdFkxbFB5SVFcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0gPiAucktmbXlManVOZlhGcHEwWjJcXFxcK09EV3dcXFxcPVxcXFw9IHtcXG4gIGJsb2NrLXNpemU6IHZhcigtLWNkcy1wb3BvdmVyLWNhcmV0LXdpZHRoLCAwLjc1cmVtKTtcXG4gIGNsaXAtcGF0aDogcG9seWdvbigwJSAwJSwgMTAwJSA1MCUsIDAlIDEwMCUpO1xcbiAgaW5saW5lLXNpemU6IHZhcigtLWNkcy1wb3BvdmVyLWNhcmV0LWhlaWdodCwgMC4zNzVyZW0pO1xcbn1cXG5cXG4uZXdLXFxcXCtsVmt2YTdYVkQycHFaRDVuaXdcXFxcPVxcXFw9ID4gLl8zdE1Ec01nbDRwREVUcUhVbW9QbXJnXFxcXD1cXFxcPSA+IC5YZlYwSFFsMjRTcFxcXFwrekhRNlhVUWs3UVxcXFw9XFxcXD0ge1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG59XFxuXFxuLmV3S1xcXFwrbFZrdmE3WFZEMnBxWkQ1bml3XFxcXD1cXFxcPSAuXzN0TURzTWdsNHBERVRxSFVtb1BtcmdcXFxcPVxcXFw9IHtcXG4gIHdpbGwtY2hhbmdlOiBmaWx0ZXI7XFxufVxcblxcbi54OGVJSWVVTG5PZ1V2T0poUGM5d2JBXFxcXD1cXFxcPSB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlcjogMDtcXG4gIG1hcmdpbjogMDtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgZm9udC1zaXplOiAxMDAlO1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlcjogMDtcXG4gIGFwcGVhcmFuY2U6IG5vbmU7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XFxuICBpbmxpbmUtc2l6ZTogMTAwJTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgYmxvY2stc2l6ZTogMnJlbTtcXG4gIGlubGluZS1zaXplOiAycmVtO1xcbn1cXG4ueDhlSUllVUxuT2dVdk9KaFBjOXdiQVxcXFw9XFxcXD0gKixcXG4ueDhlSUllVUxuT2dVdk9KaFBjOXdiQVxcXFw9XFxcXD0gKjo6YmVmb3JlLFxcbi54OGVJSWVVTG5PZ1V2T0poUGM5d2JBXFxcXD1cXFxcPSAqOjphZnRlciB7XFxuICBib3gtc2l6aW5nOiBpbmhlcml0O1xcbn1cXG4ueDhlSUllVUxuT2dVdk9KaFBjOXdiQVxcXFw9XFxcXD06Oi1tb3otZm9jdXMtaW5uZXIge1xcbiAgYm9yZGVyOiAwO1xcbn1cXG4ueDhlSUllVUxuT2dVdk9KaFBjOXdiQVxcXFw9XFxcXD06Zm9jdXMge1xcbiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNkcy1mb2N1cywgIzBmNjJmZSk7XFxuICBvdXRsaW5lLW9mZnNldDogLTJweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtY29udHJhc3QpIHtcXG4gIC54OGVJSWVVTG5PZ1V2T0poUGM5d2JBXFxcXD1cXFxcPTpmb2N1cyB7XFxuICAgIG91dGxpbmUtc3R5bGU6IGRvdHRlZDtcXG4gIH1cXG59XFxuLng4ZUlJZVVMbk9nVXZPSmhQYzl3YkFcXFxcPVxcXFw9OmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNkcy1sYXllci1ob3Zlcik7XFxufVxcblxcbi5ld0tcXFxcK2xWa3ZhN1hWRDJwcVpENW5pd1xcXFw9XFxcXD0uYy1sTkNlSFlkd3lcXFxcK2hybUlCRzdLckFcXFxcPVxcXFw9IC54OGVJSWVVTG5PZ1V2T0poUGM5d2JBXFxcXD1cXFxcPSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jZHMtbGF5ZXIpO1xcbiAgYm94LXNoYWRvdzogMCAycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcXG59XFxuXFxuLmV3S1xcXFwrbFZrdmE3WFZEMnBxWkQ1bml3XFxcXD1cXFxcPS5jLWxOQ2VIWWR3eVxcXFwraHJtSUJHN0tyQVxcXFw9XFxcXD0gLng4ZUlJZVVMbk9nVXZPSmhQYzl3YkFcXFxcPVxcXFw9Om5vdCg6Zm9jdXMpOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB6LWluZGV4OiA2MDAxO1xcbiAgYmFja2dyb3VuZDogdmFyKC0tY2RzLWxheWVyKTtcXG4gIGJsb2NrLXNpemU6IDJweDtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgaW5saW5lLXNpemU6IDEwMCU7XFxuICBpbnNldC1ibG9jay1lbmQ6IDA7XFxufVxcblxcbi54OGVJSWVVTG5PZ1V2T0poUGM5d2JBXFxcXD1cXFxcPSBzdmcge1xcbiAgZmlsbDogdmFyKC0tY2RzLWljb24tcHJpbWFyeSwgIzE2MTYxNik7XFxufVxcblxcbi5PTkZjbmRhdFdcXFxcK2lwUmM5U3hlREVsQVxcXFw9XFxcXD0ge1xcbiAgLS1jZHMtcG9wb3Zlci1vZmZzZXQ6IDEycHg7XFxufVxcblxcbi5henBCMVxcXFwrNGZLaHEwa3NaXFxcXCtycnE2T2dcXFxcPVxcXFw9IHtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tY2RzLWJvZHktMDEtZm9udC1zaXplLCAwLjg3NXJlbSk7XFxuICBmb250LXdlaWdodDogdmFyKC0tY2RzLWJvZHktMDEtZm9udC13ZWlnaHQsIDQwMCk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0tY2RzLWJvZHktMDEtbGluZS1oZWlnaHQsIDEuNDI4NTcpO1xcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWNkcy1ib2R5LTAxLWxldHRlci1zcGFjaW5nLCAwLjE2cHgpO1xcbiAgcGFkZGluZzogdmFyKC0tY2RzLXRvb2x0aXAtcGFkZGluZy1ibG9jaywgMXJlbSkgdmFyKC0tY2RzLXRvb2x0aXAtcGFkZGluZy1pbmxpbmUsIDFyZW0pO1xcbiAgbWF4LWlubGluZS1zaXplOiAxOHJlbTtcXG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XFxufVxcblxcbi53eGpLLXRTUW8xeW95UlZxRjF6ME9RXFxcXD1cXFxcPSB7XFxuICAtLWNkcy10b29sdGlwLXBhZGRpbmctYmxvY2s6IDAuMTI1cmVtO1xcbiAgLS1jZHMtcG9wb3Zlci1jYXJldC13aWR0aDogMC41cmVtO1xcbiAgLS1jZHMtcG9wb3Zlci1jYXJldC1oZWlnaHQ6IDAuMjVyZW07XFxuICAtLWNkcy1wb3BvdmVyLW9mZnNldDogMC41cmVtO1xcbn1cXG5cXG4ud3hqSy10U1FvMXlveVJWcUYxejBPUVxcXFw9XFxcXD0gLmF6cEIxXFxcXCs0ZktocTBrc1pcXFxcK3JycTZPZ1xcXFw9XFxcXD0ge1xcbiAgZm9udC1zaXplOiB2YXIoLS1jZHMtYm9keS1jb21wYWN0LTAxLWZvbnQtc2l6ZSwgMC44NzVyZW0pO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWNkcy1ib2R5LWNvbXBhY3QtMDEtZm9udC13ZWlnaHQsIDQwMCk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMS1saW5lLWhlaWdodCwgMS4yODU3Mik7XFxuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMS1sZXR0ZXItc3BhY2luZywgMC4xNnB4KTtcXG59XFxuXFxuLmsyWDd0SllwNG5jRFxcXFwrcTNPZC16OHJnXFxcXD1cXFxcPSB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlcjogMDtcXG4gIG1hcmdpbjogMDtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgZm9udC1zaXplOiAxMDAlO1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlcjogMDtcXG4gIGFwcGVhcmFuY2U6IG5vbmU7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XFxuICBpbmxpbmUtc2l6ZTogMTAwJTtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxuICBib3JkZXItYmxvY2stZW5kOiAxcHggZG90dGVkIHZhcigtLWNkcy1ib3JkZXItc3Ryb25nKTtcXG4gIGNvbG9yOiB2YXIoLS1jZHMtdGV4dC1wcmltYXJ5LCAjMTYxNjE2KTtcXG59XFxuLmsyWDd0SllwNG5jRFxcXFwrcTNPZC16OHJnXFxcXD1cXFxcPSAqLFxcbi5rMlg3dEpZcDRuY0RcXFxcK3EzT2QtejhyZ1xcXFw9XFxcXD0gKjo6YmVmb3JlLFxcbi5rMlg3dEpZcDRuY0RcXFxcK3EzT2QtejhyZ1xcXFw9XFxcXD0gKjo6YWZ0ZXIge1xcbiAgYm94LXNpemluZzogaW5oZXJpdDtcXG59XFxuLmsyWDd0SllwNG5jRFxcXFwrcTNPZC16OHJnXFxcXD1cXFxcPTo6LW1vei1mb2N1cy1pbm5lciB7XFxuICBib3JkZXI6IDA7XFxufVxcblxcbi5rMlg3dEpZcDRuY0RcXFxcK3EzT2QtejhyZ1xcXFw9XFxcXD06Zm9jdXMge1xcbiAgb3V0bGluZTogMXB4IHNvbGlkIHZhcigtLWNkcy1mb2N1cywgIzBmNjJmZSk7XFxuICBib3JkZXItYmxvY2stZW5kLWNvbG9yOiB2YXIoLS1jZHMtYm9yZGVyLWludGVyYWN0aXZlLCAjMGY2MmZlKTtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtY29udHJhc3QpIHtcXG4gIC5rMlg3dEpZcDRuY0RcXFxcK3EzT2QtejhyZ1xcXFw9XFxcXD06Zm9jdXMge1xcbiAgICBvdXRsaW5lLXN0eWxlOiBkb3R0ZWQ7XFxuICB9XFxufVxcblxcbi5rMlg3dEpZcDRuY0RcXFxcK3EzT2QtejhyZ1xcXFw9XFxcXD06aG92ZXIge1xcbiAgYm9yZGVyLWJsb2NrLWVuZC1jb2xvcjogdmFyKC0tY2RzLWJvcmRlci1pbnRlcmFjdGl2ZSwgIzBmNjJmZSk7XFxufVxcblxcbi5VSktMRkdTdUtYZ1hnUlZPck85UWV3XFxcXD1cXFxcPSB7XFxuICBmb250LXNpemU6IHZhcigtLWNkcy1ib2R5LTAxLWZvbnQtc2l6ZSwgMC44NzVyZW0pO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWNkcy1ib2R5LTAxLWZvbnQtd2VpZ2h0LCA0MDApO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWNkcy1ib2R5LTAxLWxpbmUtaGVpZ2h0LCAxLjQyODU3KTtcXG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1jZHMtYm9keS0wMS1sZXR0ZXItc3BhY2luZywgMC4xNnB4KTtcXG4gIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xcbiAgbWF4LWlubGluZS1zaXplOiAxMXJlbTtcXG4gIHRleHQtd3JhcDogYXV0bztcXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XFxufVxcblxcbi5XT0JvRHlKZzlSb0ZEOXlwNVM4N3VnXFxcXD1cXFxcPSB7XFxuICAtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtbG9jYWw6IGNsYW1wKG1heCh2YXIoLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LW1pbiksIHZhcigtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQteHMpKSwgdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodCwgdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1sZykpLCBtaW4odmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1tYXgpLCB2YXIoLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LTJ4bCkpKTtcXG4gIC0tY2RzLWxheW91dC1kZW5zaXR5LXBhZGRpbmctaW5saW5lLWxvY2FsOiBjbGFtcCh2YXIoLS1jZHMtbGF5b3V0LWRlbnNpdHktcGFkZGluZy1pbmxpbmUtbWluKSwgdmFyKC0tY2RzLWxheW91dC1kZW5zaXR5LXBhZGRpbmctaW5saW5lLCB2YXIoLS1jZHMtbGF5b3V0LWRlbnNpdHktcGFkZGluZy1pbmxpbmUtbm9ybWFsKSksIHZhcigtLWNkcy1sYXlvdXQtZGVuc2l0eS1wYWRkaW5nLWlubGluZS1tYXgpKTtcXG4gIC0tdGVtcC0xbGg6IChcXG4gICAgdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMS1saW5lLWhlaWdodCwgMS4yODU3MikgKiAxZW1cXG4gICk7XFxuICAtLXRlbXAtZXhwcmVzc2l2ZS0xbGg6IChcXG4gICAgdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMi1saW5lLWhlaWdodCwgMS4zNzUpICogMWVtXFxuICApO1xcbiAgLS10ZW1wLXBhZGRpbmctYmxvY2stbWF4OiBjYWxjKFxcbiAgICAodmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1sZykgLSB2YXIoLS10ZW1wLTFsaCkpIC8gMiAtXFxuICAgICAgMC4wNjI1cmVtXFxuICApO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXI6IDA7XFxuICBtYXJnaW46IDA7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGZvbnQtc2l6ZTogMTAwJTtcXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMS1mb250LXNpemUsIDAuODc1cmVtKTtcXG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1jZHMtYm9keS1jb21wYWN0LTAxLWZvbnQtd2VpZ2h0LCA0MDApO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWNkcy1ib2R5LWNvbXBhY3QtMDEtbGluZS1oZWlnaHQsIDEuMjg1NzIpO1xcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWNkcy1ib2R5LWNvbXBhY3QtMDEtbGV0dGVyLXNwYWNpbmcsIDAuMTZweCk7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGZsZXgtc2hyaW5rOiAwO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG4gIG1hcmdpbjogMDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGlubGluZS1zaXplOiBtYXgtY29udGVudDtcXG4gIG1heC1pbmxpbmUtc2l6ZTogMjByZW07XFxuICBtaW4tYmxvY2stc2l6ZTogdmFyKC0tY2RzLWxheW91dC1zaXplLWhlaWdodC1sb2NhbCk7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgcGFkZGluZy1ibG9jazogbWluKCh2YXIoLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LWxvY2FsKSAtIHZhcigtLXRlbXAtMWxoKSkgLyAyIC0gMC4wNjI1cmVtLCB2YXIoLS10ZW1wLXBhZGRpbmctYmxvY2stbWF4KSk7XFxuICBwYWRkaW5nLWlubGluZTogY2FsYyh2YXIoLS1jZHMtbGF5b3V0LWRlbnNpdHktcGFkZGluZy1pbmxpbmUtbG9jYWwpIC0gMC4wNjI1cmVtKSBjYWxjKHZhcigtLWNkcy1sYXlvdXQtZGVuc2l0eS1wYWRkaW5nLWlubGluZS1sb2NhbCkgKiAzICsgMXJlbSAtIDAuMDYyNXJlbSk7XFxuICB0ZXh0LWFsaWduOiBzdGFydDtcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgNzBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4zOCwgMC45KSwgYm94LXNoYWRvdyA3MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjM4LCAwLjkpLCBib3JkZXItY29sb3IgNzBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4zOCwgMC45KSwgb3V0bGluZSA3MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjM4LCAwLjkpO1xcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcXG59XFxuLldPQm9EeUpnOVJvRkQ5eXA1Uzg3dWdcXFxcPVxcXFw9ICosXFxuLldPQm9EeUpnOVJvRkQ5eXA1Uzg3dWdcXFxcPVxcXFw9ICo6OmJlZm9yZSxcXG4uV09Cb0R5Smc5Um9GRDl5cDVTODd1Z1xcXFw9XFxcXD0gKjo6YWZ0ZXIge1xcbiAgYm94LXNpemluZzogaW5oZXJpdDtcXG59XFxuLldPQm9EeUpnOVJvRkQ5eXA1Uzg3dWdcXFxcPVxcXFw9OmRpc2FibGVkLCAuV09Cb0R5Smc5Um9GRDl5cDVTODd1Z1xcXFw9XFxcXD06aG92ZXI6ZGlzYWJsZWQsIC5XT0JvRHlKZzlSb0ZEOXlwNVM4N3VnXFxcXD1cXFxcPTpmb2N1czpkaXNhYmxlZCwgLldPQm9EeUpnOVJvRkQ5eXA1Uzg3dWdcXFxcPVxcXFw9LlFoS2RpV0djcE50VDhiY3JYRzdSTmdcXFxcPVxcXFw9LCAuV09Cb0R5Smc5Um9GRDl5cDVTODd1Z1xcXFw9XFxcXD0uUWhLZGlXR2NwTnRUOGJjclhHN1JOZ1xcXFw9XFxcXD06aG92ZXIsIC5XT0JvRHlKZzlSb0ZEOXlwNVM4N3VnXFxcXD1cXFxcPS5RaEtkaVdHY3BOdFQ4YmNyWEc3Uk5nXFxcXD1cXFxcPTpmb2N1cyB7XFxuICBib3JkZXItY29sb3I6IHZhcigtLWNkcy1idXR0b24tZGlzYWJsZWQsICNjNmM2YzYpO1xcbiAgYmFja2dyb3VuZDogdmFyKC0tY2RzLWJ1dHRvbi1kaXNhYmxlZCwgI2M2YzZjNik7XFxuICBib3gtc2hhZG93OiBub25lO1xcbiAgY29sb3I6IHZhcigtLWNkcy10ZXh0LW9uLWNvbG9yLWRpc2FibGVkLCAjOGQ4ZDhkKTtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxufVxcbi5XT0JvRHlKZzlSb0ZEOXlwNVM4N3VnXFxcXD1cXFxcPSAubGNjYVpobHd4MEZWemhBRlhqeEFOZ1xcXFw9XFxcXD0ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZmxleC1zaHJpbms6IDA7XFxuICBibG9jay1zaXplOiAxcmVtO1xcbiAgaW5saW5lLXNpemU6IDFyZW07XFxuICBpbnNldC1ibG9jay1zdGFydDogbWluKCh2YXIoLS1jZHMtbGF5b3V0LXNpemUtaGVpZ2h0LWxvY2FsKSAtIDFyZW0pIC8gMiAtIDAuMDYyNXJlbSwgdmFyKC0tdGVtcC1wYWRkaW5nLWJsb2NrLW1heCkpO1xcbiAgaW5zZXQtaW5saW5lLWVuZDogdmFyKC0tY2RzLWxheW91dC1kZW5zaXR5LXBhZGRpbmctaW5saW5lLWxvY2FsKTtcXG4gIG1hcmdpbi1ibG9jay1zdGFydDogMC4wNjI1cmVtO1xcbn1cXG5cXG4uV09Cb0R5Smc5Um9GRDl5cDVTODd1Z1xcXFw9XFxcXD06Oi1tb3otZm9jdXMtaW5uZXIge1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlcjogMDtcXG59XFxuXFxuLl8yZGZUTGVTdHM5WFBSd3ZpMXBmQmFnXFxcXD1cXFxcPSB7XFxuICBib3JkZXItd2lkdGg6IDFweDtcXG4gIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi1wcmltYXJ5LCAjMGY2MmZlKTtcXG4gIGNvbG9yOiB2YXIoLS1jZHMtdGV4dC1vbi1jb2xvciwgI2ZmZmZmZik7XFxufVxcbi5fMmRmVExlU3RzOVhQUnd2aTFwZkJhZ1xcXFw9XFxcXD06aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi1wcmltYXJ5LWhvdmVyLCAjMDA1MGU2KTtcXG59XFxuLl8yZGZUTGVTdHM5WFBSd3ZpMXBmQmFnXFxcXD1cXFxcPTpmb2N1cyB7XFxuICBib3JkZXItY29sb3I6IHZhcigtLWNkcy1idXR0b24tZm9jdXMtY29sb3IsIHZhcigtLWNkcy1mb2N1cywgIzBmNjJmZSkpO1xcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLWNkcy1idXR0b24tZm9jdXMtY29sb3IsIHZhcigtLWNkcy1mb2N1cywgIzBmNjJmZSkpLCBpbnNldCAwIDAgMCAycHggdmFyKC0tY2RzLWJhY2tncm91bmQsICNmZmZmZmYpO1xcbn1cXG4uXzJkZlRMZVN0czlYUFJ3dmkxcGZCYWdcXFxcPVxcXFw9OmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtYnV0dG9uLXByaW1hcnktYWN0aXZlLCAjMDAyZDljKTtcXG59XFxuLl8yZGZUTGVTdHM5WFBSd3ZpMXBmQmFnXFxcXD1cXFxcPSAubGNjYVpobHd4MEZWemhBRlhqeEFOZ1xcXFw9XFxcXD0sXFxuLl8yZGZUTGVTdHM5WFBSd3ZpMXBmQmFnXFxcXD1cXFxcPSAubGNjYVpobHd4MEZWemhBRlhqeEFOZ1xcXFw9XFxcXD0gcGF0aDpub3QoW2RhdGEtaWNvbi1wYXRoXSk6bm90KFtmaWxsPW5vbmVdKSB7XFxuICBmaWxsOiBjdXJyZW50Q29sb3I7XFxufVxcbi5fMmRmVExlU3RzOVhQUnd2aTFwZkJhZ1xcXFw9XFxcXD06aG92ZXIge1xcbiAgY29sb3I6IHZhcigtLWNkcy10ZXh0LW9uLWNvbG9yLCAjZmZmZmZmKTtcXG59XFxuXFxuLnRUOENuN0xZV2c4b21uZEIwNnRkcUFcXFxcPVxcXFw9IHtcXG4gIGJvcmRlci13aWR0aDogMXB4O1xcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtYnV0dG9uLXNlY29uZGFyeSwgIzM5MzkzOSk7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtb24tY29sb3IsICNmZmZmZmYpO1xcbn1cXG4udFQ4Q243TFlXZzhvbW5kQjA2dGRxQVxcXFw9XFxcXD06aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi1zZWNvbmRhcnktaG92ZXIsICM0NzQ3NDcpO1xcbn1cXG4udFQ4Q243TFlXZzhvbW5kQjA2dGRxQVxcXFw9XFxcXD06Zm9jdXMge1xcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jZHMtYnV0dG9uLWZvY3VzLWNvbG9yLCB2YXIoLS1jZHMtZm9jdXMsICMwZjYyZmUpKTtcXG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1jZHMtYnV0dG9uLWZvY3VzLWNvbG9yLCB2YXIoLS1jZHMtZm9jdXMsICMwZjYyZmUpKSwgaW5zZXQgMCAwIDAgMnB4IHZhcigtLWNkcy1iYWNrZ3JvdW5kLCAjZmZmZmZmKTtcXG59XFxuLnRUOENuN0xZV2c4b21uZEIwNnRkcUFcXFxcPVxcXFw9OmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtYnV0dG9uLXNlY29uZGFyeS1hY3RpdmUsICM2ZjZmNmYpO1xcbn1cXG4udFQ4Q243TFlXZzhvbW5kQjA2dGRxQVxcXFw9XFxcXD0gLmxjY2FaaGx3eDBGVnpoQUZYanhBTmdcXFxcPVxcXFw9LFxcbi50VDhDbjdMWVdnOG9tbmRCMDZ0ZHFBXFxcXD1cXFxcPSAubGNjYVpobHd4MEZWemhBRlhqeEFOZ1xcXFw9XFxcXD0gcGF0aDpub3QoW2RhdGEtaWNvbi1wYXRoXSk6bm90KFtmaWxsPW5vbmVdKSB7XFxuICBmaWxsOiBjdXJyZW50Q29sb3I7XFxufVxcbi50VDhDbjdMWVdnOG9tbmRCMDZ0ZHFBXFxcXD1cXFxcPTpob3ZlciwgLnRUOENuN0xZV2c4b21uZEIwNnRkcUFcXFxcPVxcXFw9OmZvY3VzIHtcXG4gIGNvbG9yOiB2YXIoLS1jZHMtdGV4dC1vbi1jb2xvciwgI2ZmZmZmZik7XFxufVxcblxcbi5DcEhvdU54cTkzbG5IR2RFUFlrMUlBXFxcXD1cXFxcPSB7XFxuICBib3JkZXItd2lkdGg6IDFweDtcXG4gIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICBib3JkZXItY29sb3I6IHZhcigtLWNkcy1idXR0b24tdGVydGlhcnksICMwZjYyZmUpO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBjb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi10ZXJ0aWFyeSwgIzBmNjJmZSk7XFxufVxcbi5DcEhvdU54cTkzbG5IR2RFUFlrMUlBXFxcXD1cXFxcPTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtYnV0dG9uLXRlcnRpYXJ5LWhvdmVyLCAjMDA1MGU2KTtcXG59XFxuLkNwSG91TnhxOTNsbkhHZEVQWWsxSUFcXFxcPVxcXFw9OmZvY3VzIHtcXG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi1mb2N1cy1jb2xvciwgdmFyKC0tY2RzLWZvY3VzLCAjMGY2MmZlKSk7XFxuICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2RzLWJ1dHRvbi1mb2N1cy1jb2xvciwgdmFyKC0tY2RzLWZvY3VzLCAjMGY2MmZlKSksIGluc2V0IDAgMCAwIDJweCB2YXIoLS1jZHMtYmFja2dyb3VuZCwgI2ZmZmZmZik7XFxufVxcbi5DcEhvdU54cTkzbG5IR2RFUFlrMUlBXFxcXD1cXFxcPTphY3RpdmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi10ZXJ0aWFyeS1hY3RpdmUsICMwMDJkOWMpO1xcbn1cXG4uQ3BIb3VOeHE5M2xuSEdkRVBZazFJQVxcXFw9XFxcXD0gLmxjY2FaaGx3eDBGVnpoQUZYanhBTmdcXFxcPVxcXFw9LFxcbi5DcEhvdU54cTkzbG5IR2RFUFlrMUlBXFxcXD1cXFxcPSAubGNjYVpobHd4MEZWemhBRlhqeEFOZ1xcXFw9XFxcXD0gcGF0aDpub3QoW2RhdGEtaWNvbi1wYXRoXSk6bm90KFtmaWxsPW5vbmVdKSB7XFxuICBmaWxsOiBjdXJyZW50Q29sb3I7XFxufVxcbi5DcEhvdU54cTkzbG5IR2RFUFlrMUlBXFxcXD1cXFxcPTpob3ZlciB7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtaW52ZXJzZSwgI2ZmZmZmZik7XFxufVxcbi5DcEhvdU54cTkzbG5IR2RFUFlrMUlBXFxcXD1cXFxcPTpmb2N1cyB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtYnV0dG9uLXRlcnRpYXJ5LCAjMGY2MmZlKTtcXG4gIGNvbG9yOiB2YXIoLS1jZHMtdGV4dC1pbnZlcnNlLCAjZmZmZmZmKTtcXG59XFxuLkNwSG91TnhxOTNsbkhHZEVQWWsxSUFcXFxcPVxcXFw9OmFjdGl2ZSB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi10ZXJ0aWFyeS1hY3RpdmUsICMwMDJkOWMpO1xcbiAgY29sb3I6IHZhcigtLWNkcy10ZXh0LWludmVyc2UsICNmZmZmZmYpO1xcbn1cXG4uQ3BIb3VOeHE5M2xuSEdkRVBZazFJQVxcXFw9XFxcXD06ZGlzYWJsZWQsIC5DcEhvdU54cTkzbG5IR2RFUFlrMUlBXFxcXD1cXFxcPTpob3ZlcjpkaXNhYmxlZCwgLkNwSG91TnhxOTNsbkhHZEVQWWsxSUFcXFxcPVxcXFw9OmZvY3VzOmRpc2FibGVkLCAuQ3BIb3VOeHE5M2xuSEdkRVBZazFJQVxcXFw9XFxcXD0uUWhLZGlXR2NwTnRUOGJjclhHN1JOZ1xcXFw9XFxcXD0sIC5DcEhvdU54cTkzbG5IR2RFUFlrMUlBXFxcXD1cXFxcPS5RaEtkaVdHY3BOdFQ4YmNyWEc3Uk5nXFxcXD1cXFxcPTpob3ZlciwgLkNwSG91TnhxOTNsbkhHZEVQWWsxSUFcXFxcPVxcXFw9LlFoS2RpV0djcE50VDhiY3JYRzdSTmdcXFxcPVxcXFw9OmZvY3VzIHtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgY29sb3I6IHZhcigtLWNkcy10ZXh0LWRpc2FibGVkLCByZ2JhKDIyLCAyMiwgMjIsIDAuMjUpKTtcXG4gIG91dGxpbmU6IG5vbmU7XFxufVxcblxcbi5fNUxaQXRGdHItWElhXFxcXCtKMUg4WXY0aFFcXFxcPVxcXFw9IHtcXG4gIGJvcmRlci13aWR0aDogMXB4O1xcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGNvbG9yOiB2YXIoLS1jZHMtbGluay1wcmltYXJ5LCAjMGY2MmZlKTtcXG4gIHBhZGRpbmctaW5saW5lLWVuZDogY2FsYyh2YXIoLS1jZHMtbGF5b3V0LWRlbnNpdHktcGFkZGluZy1pbmxpbmUtbG9jYWwpIC0gMC4wNjI1cmVtKTtcXG59XFxuLl81TFpBdEZ0ci1YSWFcXFxcK0oxSDhZdjRoUVxcXFw9XFxcXD06aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWJhY2tncm91bmQtaG92ZXIsIHJnYmEoMTQxLCAxNDEsIDE0MSwgMC4xMikpO1xcbn1cXG4uXzVMWkF0RnRyLVhJYVxcXFwrSjFIOFl2NGhRXFxcXD1cXFxcPTpmb2N1cyB7XFxuICBib3JkZXItY29sb3I6IHZhcigtLWNkcy1idXR0b24tZm9jdXMtY29sb3IsIHZhcigtLWNkcy1mb2N1cywgIzBmNjJmZSkpO1xcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLWNkcy1idXR0b24tZm9jdXMtY29sb3IsIHZhcigtLWNkcy1mb2N1cywgIzBmNjJmZSkpLCBpbnNldCAwIDAgMCAycHggdmFyKC0tY2RzLWJhY2tncm91bmQsICNmZmZmZmYpO1xcbn1cXG4uXzVMWkF0RnRyLVhJYVxcXFwrSjFIOFl2NGhRXFxcXD1cXFxcPTphY3RpdmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWJhY2tncm91bmQtYWN0aXZlLCByZ2JhKDE0MSwgMTQxLCAxNDEsIDAuNSkpO1xcbn1cXG4uXzVMWkF0RnRyLVhJYVxcXFwrSjFIOFl2NGhRXFxcXD1cXFxcPSAubGNjYVpobHd4MEZWemhBRlhqeEFOZ1xcXFw9XFxcXD0sXFxuLl81TFpBdEZ0ci1YSWFcXFxcK0oxSDhZdjRoUVxcXFw9XFxcXD0gLmxjY2FaaGx3eDBGVnpoQUZYanhBTmdcXFxcPVxcXFw9IHBhdGg6bm90KFtkYXRhLWljb24tcGF0aF0pOm5vdChbZmlsbD1ub25lXSkge1xcbiAgZmlsbDogY3VycmVudENvbG9yO1xcbn1cXG4uXzVMWkF0RnRyLVhJYVxcXFwrSjFIOFl2NGhRXFxcXD1cXFxcPSAubGNjYVpobHd4MEZWemhBRlhqeEFOZ1xcXFw9XFxcXD0ge1xcbiAgcG9zaXRpb246IHN0YXRpYztcXG4gIGFsaWduLXNlbGY6IGNlbnRlcjtcXG4gIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDAuNXJlbTtcXG59XFxuLl81TFpBdEZ0ci1YSWFcXFxcK0oxSDhZdjRoUVxcXFw9XFxcXD06aG92ZXIsIC5fNUxaQXRGdHItWElhXFxcXCtKMUg4WXY0aFFcXFxcPVxcXFw9OmFjdGl2ZSB7XFxuICBjb2xvcjogdmFyKC0tY2RzLWxpbmstcHJpbWFyeS1ob3ZlciwgIzAwNDNjZSk7XFxufVxcbi5fNUxaQXRGdHItWElhXFxcXCtKMUg4WXY0aFFcXFxcPVxcXFw9OmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtYmFja2dyb3VuZC1hY3RpdmUsIHJnYmEoMTQxLCAxNDEsIDE0MSwgMC41KSk7XFxufVxcbi5fNUxaQXRGdHItWElhXFxcXCtKMUg4WXY0aFFcXFxcPVxcXFw9OmRpc2FibGVkLCAuXzVMWkF0RnRyLVhJYVxcXFwrSjFIOFl2NGhRXFxcXD1cXFxcPTpob3ZlcjpkaXNhYmxlZCwgLl81TFpBdEZ0ci1YSWFcXFxcK0oxSDhZdjRoUVxcXFw9XFxcXD06Zm9jdXM6ZGlzYWJsZWQsIC5fNUxaQXRGdHItWElhXFxcXCtKMUg4WXY0aFFcXFxcPVxcXFw9LlFoS2RpV0djcE50VDhiY3JYRzdSTmdcXFxcPVxcXFw9LCAuXzVMWkF0RnRyLVhJYVxcXFwrSjFIOFl2NGhRXFxcXD1cXFxcPS5RaEtkaVdHY3BOdFQ4YmNyWEc3Uk5nXFxcXD1cXFxcPTpob3ZlciwgLl81TFpBdEZ0ci1YSWFcXFxcK0oxSDhZdjRoUVxcXFw9XFxcXD0uUWhLZGlXR2NwTnRUOGJjclhHN1JOZ1xcXFw9XFxcXD06Zm9jdXMge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgY29sb3I6IHZhcigtLWNkcy10ZXh0LWRpc2FibGVkLCByZ2JhKDIyLCAyMiwgMjIsIDAuMjUpKTtcXG4gIG91dGxpbmU6IG5vbmU7XFxufVxcbi5fNUxaQXRGdHItWElhXFxcXCtKMUg4WXY0aFFcXFxcPVxcXFw9Om5vdChbZGlzYWJsZWRdKSBzdmcge1xcbiAgZmlsbDogdmFyKC0tY2RzLWljb24tcHJpbWFyeSwgIzE2MTYxNik7XFxufVxcblxcbi5GWXo4bHEtTlxcXFwrUHN2c1JBQ0JtWklQZ1xcXFw9XFxcXD0ge1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgcGFkZGluZzogMDtcXG4gIGJsb2NrLXNpemU6IHZhcigtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtbG9jYWwpO1xcbiAgaW5saW5lLXNpemU6IHZhcigtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtbG9jYWwpO1xcbiAgcGFkZGluZy1ibG9jay1zdGFydDogMDtcXG59XFxuLkZZejhscS1OXFxcXCtQc3ZzUkFDQm1aSVBnXFxcXD1cXFxcPSA+IDpmaXJzdC1jaGlsZCB7XFxuICBtaW4taW5saW5lLXNpemU6IDFyZW07XFxufVxcbi5GWXo4bHEtTlxcXFwrUHN2c1JBQ0JtWklQZ1xcXFw9XFxcXD0gLmxjY2FaaGx3eDBGVnpoQUZYanhBTmdcXFxcPVxcXFw9IHtcXG4gIHBvc2l0aW9uOiBzdGF0aWM7XFxufVxcbi5GWXo4bHEtTlxcXFwrUHN2c1JBQ0JtWklQZ1xcXFw9XFxcXD0uXzVMWkF0RnRyLVhJYVxcXFwrSjFIOFl2NGhRXFxcXD1cXFxcPSAubGNjYVpobHd4MEZWemhBRlhqeEFOZ1xcXFw9XFxcXD0sIC5GWXo4bHEtTlxcXFwrUHN2c1JBQ0JtWklQZ1xcXFw9XFxcXD0ub0t2UERNYVJRcGJSSVdQVEpwNndWQVxcXFw9XFxcXD0gLmxjY2FaaGx3eDBGVnpoQUZYanhBTmdcXFxcPVxcXFw9IHtcXG4gIG1hcmdpbjogMDtcXG59XFxuLkZZejhscS1OXFxcXCtQc3ZzUkFDQm1aSVBnXFxcXD1cXFxcPS5vS3ZQRE1hUlFwYlJJV1BUSnA2d1ZBXFxcXD1cXFxcPSB7XFxuICBwYWRkaW5nLWlubGluZS1lbmQ6IGNhbGModmFyKC0tY2RzLWxheW91dC1kZW5zaXR5LXBhZGRpbmctaW5saW5lLWxvY2FsKSAtIDFyZW0pO1xcbn1cXG5cXG4uTUZjTGhzbU9vV3doMkduektkRm5tZ1xcXFw9XFxcXD06bm90KC5GWXo4bHEtTlxcXFwrUHN2c1JBQ0JtWklQZ1xcXFw9XFxcXD0pIHtcXG4gIHBhZGRpbmctYmxvY2stc3RhcnQ6IDEuNXB4O1xcbn1cXG5cXG4uTUZjTGhzbU9vV3doMkduektkRm5tZ1xcXFw9XFxcXD06bm90KC5GWXo4bHEtTlxcXFwrUHN2c1JBQ0JtWklQZ1xcXFw9XFxcXD0pIC5sY2NhWmhsd3gwRlZ6aEFGWGp4QU5nXFxcXD1cXFxcPSxcXG4uZlFmT2VmTEoxOXVjVndDb3llUFVGd1xcXFw9XFxcXD06bm90KC5GWXo4bHEtTlxcXFwrUHN2c1JBQ0JtWklQZ1xcXFw9XFxcXD0pIC5sY2NhWmhsd3gwRlZ6aEFGWGp4QU5nXFxcXD1cXFxcPSxcXG4uLVNJU2lvOHRDanJZQ09OOXl2VjJzd1xcXFw9XFxcXD06bm90KC5GWXo4bHEtTlxcXFwrUHN2c1JBQ0JtWklQZ1xcXFw9XFxcXD0pIC5sY2NhWmhsd3gwRlZ6aEFGWGp4QU5nXFxcXD1cXFxcPSB7XFxuICBtYXJnaW4tYmxvY2stc3RhcnQ6IDA7XFxufVxcblxcbi5GWXo4bHEtTlxcXFwrUHN2c1JBQ0JtWklQZ1xcXFw9XFxcXD0uYzdtU3BpemFNNUdhdUdFZS1lTnhlQVxcXFw9XFxcXD0ge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tY2RzLWJhY2tncm91bmQtc2VsZWN0ZWQsIHJnYmEoMTQxLCAxNDEsIDE0MSwgMC4yKSk7XFxufVxcblxcbi5XT0JvRHlKZzlSb0ZEOXlwNVM4N3VnXFxcXD1cXFxcPSBwYXRoW2RhdGEtaWNvbi1wYXRoPWlubmVyLXBhdGhdIHtcXG4gIGZpbGw6IG5vbmU7XFxufVxcblxcbi5fNUxaQXRGdHItWElhXFxcXCtKMUg4WXY0aFFcXFxcPVxcXFw9LkZZejhscS1OXFxcXCtQc3ZzUkFDQm1aSVBnXFxcXD1cXFxcPSAubGNjYVpobHd4MEZWemhBRlhqeEFOZ1xcXFw9XFxcXD0gcGF0aDpub3QoW2RhdGEtaWNvbi1wYXRoXSk6bm90KFtmaWxsPW5vbmVdKSxcXG4uXzVMWkF0RnRyLVhJYVxcXFwrSjFIOFl2NGhRXFxcXD1cXFxcPS5GWXo4bHEtTlxcXFwrUHN2c1JBQ0JtWklQZ1xcXFw9XFxcXD0gLmxjY2FaaGx3eDBGVnpoQUZYanhBTmdcXFxcPVxcXFw9IHtcXG4gIGZpbGw6IHZhcigtLWNkcy1pY29uLXByaW1hcnksICMxNjE2MTYpO1xcbn1cXG5cXG4uXzVMWkF0RnRyLVhJYVxcXFwrSjFIOFl2NGhRXFxcXD1cXFxcPS5GWXo4bHEtTlxcXFwrUHN2c1JBQ0JtWklQZ1xcXFw9XFxcXD1bZGlzYWJsZWRdIC5sY2NhWmhsd3gwRlZ6aEFGWGp4QU5nXFxcXD1cXFxcPSBwYXRoOm5vdChbZGF0YS1pY29uLXBhdGhdKTpub3QoW2ZpbGw9bm9uZV0pLFxcbi5fNUxaQXRGdHItWElhXFxcXCtKMUg4WXY0aFFcXFxcPVxcXFw9LkZZejhscS1OXFxcXCtQc3ZzUkFDQm1aSVBnXFxcXD1cXFxcPVtkaXNhYmxlZF0gLmxjY2FaaGx3eDBGVnpoQUZYanhBTmdcXFxcPVxcXFw9LFxcbi5XT0JvRHlKZzlSb0ZEOXlwNVM4N3VnXFxcXD1cXFxcPS5GWXo4bHEtTlxcXFwrUHN2c1JBQ0JtWklQZ1xcXFw9XFxcXD0uXzVMWkF0RnRyLVhJYVxcXFwrSjFIOFl2NGhRXFxcXD1cXFxcPVtkaXNhYmxlZF06aG92ZXIgLmxjY2FaaGx3eDBGVnpoQUZYanhBTmdcXFxcPVxcXFw9IHtcXG4gIGZpbGw6IHZhcigtLWNkcy1pY29uLW9uLWNvbG9yLWRpc2FibGVkLCAjOGQ4ZDhkKTtcXG59XFxuXFxuLl81TFpBdEZ0ci1YSWFcXFxcK0oxSDhZdjRoUVxcXFw9XFxcXD0uRll6OGxxLU5cXFxcK1BzdnNSQUNCbVpJUGdcXFxcPVxcXFw9W2Rpc2FibGVkXSB7XFxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbn1cXG5cXG4ubEd5OHc1XFxcXCtTXFxcXCt6ak81dnNiUjBLUE9BXFxcXD1cXFxcPSAuXzQ3VlA4Y1BCTWlZZkhqRWRxVG1SRHdcXFxcPVxcXFw9IHtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxufVxcblxcbi5sR3k4dzVcXFxcK1NcXFxcK3pqTzV2c2JSMEtQT0FcXFxcPVxcXFw9IC5GWXo4bHEtTlxcXFwrUHN2c1JBQ0JtWklQZ1xcXFw9XFxcXD1bZGlzYWJsZWRdIHtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG5cXG4uXzUyXFxcXCt4TmFPanZ2Q2JucTFVZGFiZzZBXFxcXD1cXFxcPSB7XFxuICBib3JkZXItd2lkdGg6IDFweDtcXG4gIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi1kYW5nZXItcHJpbWFyeSwgI2RhMWUyOCk7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtb24tY29sb3IsICNmZmZmZmYpO1xcbn1cXG4uXzUyXFxcXCt4TmFPanZ2Q2JucTFVZGFiZzZBXFxcXD1cXFxcPTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtYnV0dG9uLWRhbmdlci1ob3ZlciwgI2I4MTkyMSk7XFxufVxcbi5fNTJcXFxcK3hOYU9qdnZDYm5xMVVkYWJnNkFcXFxcPVxcXFw9OmZvY3VzIHtcXG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi1mb2N1cy1jb2xvciwgdmFyKC0tY2RzLWZvY3VzLCAjMGY2MmZlKSk7XFxuICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2RzLWJ1dHRvbi1mb2N1cy1jb2xvciwgdmFyKC0tY2RzLWZvY3VzLCAjMGY2MmZlKSksIGluc2V0IDAgMCAwIDJweCB2YXIoLS1jZHMtYmFja2dyb3VuZCwgI2ZmZmZmZik7XFxufVxcbi5fNTJcXFxcK3hOYU9qdnZDYm5xMVVkYWJnNkFcXFxcPVxcXFw9OmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtYnV0dG9uLWRhbmdlci1hY3RpdmUsICM3NTBlMTMpO1xcbn1cXG4uXzUyXFxcXCt4TmFPanZ2Q2JucTFVZGFiZzZBXFxcXD1cXFxcPSAubGNjYVpobHd4MEZWemhBRlhqeEFOZ1xcXFw9XFxcXD0sXFxuLl81MlxcXFwreE5hT2p2dkNibnExVWRhYmc2QVxcXFw9XFxcXD0gLmxjY2FaaGx3eDBGVnpoQUZYanhBTmdcXFxcPVxcXFw9IHBhdGg6bm90KFtkYXRhLWljb24tcGF0aF0pOm5vdChbZmlsbD1ub25lXSkge1xcbiAgZmlsbDogY3VycmVudENvbG9yO1xcbn1cXG4uXzUyXFxcXCt4TmFPanZ2Q2JucTFVZGFiZzZBXFxcXD1cXFxcPTpob3ZlciB7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtb24tY29sb3IsICNmZmZmZmYpO1xcbn1cXG4uS21SM3hrcmRjNWlPeHE5WXlkT1AyUVxcXFw9XFxcXD0ge1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICBib3JkZXItc3R5bGU6IHNvbGlkO1xcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jZHMtYnV0dG9uLWRhbmdlci1zZWNvbmRhcnksICNkYTFlMjgpO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBjb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi1kYW5nZXItc2Vjb25kYXJ5LCAjZGExZTI4KTtcXG59XFxuLkttUjN4a3JkYzVpT3hxOVl5ZE9QMlFcXFxcPVxcXFw9OmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNkcy1idXR0b24tZGFuZ2VyLWhvdmVyLCAjYjgxOTIxKTtcXG59XFxuLkttUjN4a3JkYzVpT3hxOVl5ZE9QMlFcXFxcPVxcXFw9OmZvY3VzIHtcXG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi1mb2N1cy1jb2xvciwgdmFyKC0tY2RzLWZvY3VzLCAjMGY2MmZlKSk7XFxuICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2RzLWJ1dHRvbi1mb2N1cy1jb2xvciwgdmFyKC0tY2RzLWZvY3VzLCAjMGY2MmZlKSksIGluc2V0IDAgMCAwIDJweCB2YXIoLS1jZHMtYmFja2dyb3VuZCwgI2ZmZmZmZik7XFxufVxcbi5LbVIzeGtyZGM1aU94cTlZeWRPUDJRXFxcXD1cXFxcPTphY3RpdmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi1kYW5nZXItYWN0aXZlLCAjNzUwZTEzKTtcXG59XFxuLkttUjN4a3JkYzVpT3hxOVl5ZE9QMlFcXFxcPVxcXFw9IC5sY2NhWmhsd3gwRlZ6aEFGWGp4QU5nXFxcXD1cXFxcPSxcXG4uS21SM3hrcmRjNWlPeHE5WXlkT1AyUVxcXFw9XFxcXD0gLmxjY2FaaGx3eDBGVnpoQUZYanhBTmdcXFxcPVxcXFw9IHBhdGg6bm90KFtkYXRhLWljb24tcGF0aF0pOm5vdChbZmlsbD1ub25lXSkge1xcbiAgZmlsbDogY3VycmVudENvbG9yO1xcbn1cXG4uS21SM3hrcmRjNWlPeHE5WXlkT1AyUVxcXFw9XFxcXD06aG92ZXIge1xcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jZHMtYnV0dG9uLWRhbmdlci1ob3ZlciwgI2I4MTkyMSk7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtb24tY29sb3IsICNmZmZmZmYpO1xcbn1cXG4uS21SM3hrcmRjNWlPeHE5WXlkT1AyUVxcXFw9XFxcXD06Zm9jdXMge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi1kYW5nZXItcHJpbWFyeSwgI2RhMWUyOCk7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtb24tY29sb3IsICNmZmZmZmYpO1xcbn1cXG4uS21SM3hrcmRjNWlPeHE5WXlkT1AyUVxcXFw9XFxcXD06YWN0aXZlIHtcXG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi1kYW5nZXItYWN0aXZlLCAjNzUwZTEzKTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNkcy1idXR0b24tZGFuZ2VyLWFjdGl2ZSwgIzc1MGUxMyk7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtb24tY29sb3IsICNmZmZmZmYpO1xcbn1cXG4uS21SM3hrcmRjNWlPeHE5WXlkT1AyUVxcXFw9XFxcXD06ZGlzYWJsZWQsIC5LbVIzeGtyZGM1aU94cTlZeWRPUDJRXFxcXD1cXFxcPTpob3ZlcjpkaXNhYmxlZCwgLkttUjN4a3JkYzVpT3hxOVl5ZE9QMlFcXFxcPVxcXFw9OmZvY3VzOmRpc2FibGVkLCAuS21SM3hrcmRjNWlPeHE5WXlkT1AyUVxcXFw9XFxcXD0uUWhLZGlXR2NwTnRUOGJjclhHN1JOZ1xcXFw9XFxcXD0sIC5LbVIzeGtyZGM1aU94cTlZeWRPUDJRXFxcXD1cXFxcPS5RaEtkaVdHY3BOdFQ4YmNyWEc3Uk5nXFxcXD1cXFxcPTpob3ZlciwgLkttUjN4a3JkYzVpT3hxOVl5ZE9QMlFcXFxcPVxcXFw9LlFoS2RpV0djcE50VDhiY3JYRzdSTmdcXFxcPVxcXFw9OmZvY3VzIHtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgY29sb3I6IHZhcigtLWNkcy10ZXh0LWRpc2FibGVkLCByZ2JhKDIyLCAyMiwgMjIsIDAuMjUpKTtcXG4gIG91dGxpbmU6IG5vbmU7XFxufVxcbi5vS3ZQRE1hUlFwYlJJV1BUSnA2d1ZBXFxcXD1cXFxcPSB7XFxuICBib3JkZXItd2lkdGg6IDFweDtcXG4gIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBjb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi1kYW5nZXItc2Vjb25kYXJ5LCAjZGExZTI4KTtcXG4gIHBhZGRpbmctaW5saW5lLWVuZDogY2FsYyh2YXIoLS1jZHMtbGF5b3V0LWRlbnNpdHktcGFkZGluZy1pbmxpbmUtbG9jYWwpIC0gMC4wNjI1cmVtKTtcXG59XFxuLm9LdlBETWFSUXBiUklXUFRKcDZ3VkFcXFxcPVxcXFw9OmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNkcy1idXR0b24tZGFuZ2VyLWhvdmVyLCAjYjgxOTIxKTtcXG59XFxuLm9LdlBETWFSUXBiUklXUFRKcDZ3VkFcXFxcPVxcXFw9OmZvY3VzIHtcXG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi1mb2N1cy1jb2xvciwgdmFyKC0tY2RzLWZvY3VzLCAjMGY2MmZlKSk7XFxuICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2RzLWJ1dHRvbi1mb2N1cy1jb2xvciwgdmFyKC0tY2RzLWZvY3VzLCAjMGY2MmZlKSksIGluc2V0IDAgMCAwIDJweCB2YXIoLS1jZHMtYmFja2dyb3VuZCwgI2ZmZmZmZik7XFxufVxcbi5vS3ZQRE1hUlFwYlJJV1BUSnA2d1ZBXFxcXD1cXFxcPTphY3RpdmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi1kYW5nZXItYWN0aXZlLCAjNzUwZTEzKTtcXG59XFxuLm9LdlBETWFSUXBiUklXUFRKcDZ3VkFcXFxcPVxcXFw9IC5sY2NhWmhsd3gwRlZ6aEFGWGp4QU5nXFxcXD1cXFxcPSxcXG4ub0t2UERNYVJRcGJSSVdQVEpwNndWQVxcXFw9XFxcXD0gLmxjY2FaaGx3eDBGVnpoQUZYanhBTmdcXFxcPVxcXFw9IHBhdGg6bm90KFtkYXRhLWljb24tcGF0aF0pOm5vdChbZmlsbD1ub25lXSkge1xcbiAgZmlsbDogY3VycmVudENvbG9yO1xcbn1cXG4ub0t2UERNYVJRcGJSSVdQVEpwNndWQVxcXFw9XFxcXD0gLmxjY2FaaGx3eDBGVnpoQUZYanhBTmdcXFxcPVxcXFw9IHtcXG4gIHBvc2l0aW9uOiBzdGF0aWM7XFxuICBtYXJnaW4taW5saW5lLXN0YXJ0OiAwLjVyZW07XFxufVxcbi5vS3ZQRE1hUlFwYlJJV1BUSnA2d1ZBXFxcXD1cXFxcPTpob3ZlciwgLm9LdlBETWFSUXBiUklXUFRKcDZ3VkFcXFxcPVxcXFw9OmFjdGl2ZSB7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtb24tY29sb3IsICNmZmZmZmYpO1xcbn1cXG4ub0t2UERNYVJRcGJSSVdQVEpwNndWQVxcXFw9XFxcXD06ZGlzYWJsZWQsIC5vS3ZQRE1hUlFwYlJJV1BUSnA2d1ZBXFxcXD1cXFxcPTpob3ZlcjpkaXNhYmxlZCwgLm9LdlBETWFSUXBiUklXUFRKcDZ3VkFcXFxcPVxcXFw9OmZvY3VzOmRpc2FibGVkLCAub0t2UERNYVJRcGJSSVdQVEpwNndWQVxcXFw9XFxcXD0uUWhLZGlXR2NwTnRUOGJjclhHN1JOZ1xcXFw9XFxcXD0sIC5vS3ZQRE1hUlFwYlJJV1BUSnA2d1ZBXFxcXD1cXFxcPS5RaEtkaVdHY3BOdFQ4YmNyWEc3Uk5nXFxcXD1cXFxcPTpob3ZlciwgLm9LdlBETWFSUXBiUklXUFRKcDZ3VkFcXFxcPVxcXFw9LlFoS2RpV0djcE50VDhiY3JYRzdSTmdcXFxcPVxcXFw9OmZvY3VzIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIGNvbG9yOiB2YXIoLS1jZHMtdGV4dC1kaXNhYmxlZCwgcmdiYSgyMiwgMjIsIDIyLCAwLjI1KSk7XFxuICBvdXRsaW5lOiBub25lO1xcbn1cXG5cXG4uUElnYmExc1dlODVtWTRWVWFDWEpUd1xcXFw9XFxcXD0ge1xcbiAgZm9udC1zaXplOiB2YXIoLS1jZHMtYm9keS1jb21wYWN0LTAyLWZvbnQtc2l6ZSwgMXJlbSk7XFxuICBmb250LXdlaWdodDogdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMi1mb250LXdlaWdodCwgNDAwKTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1jZHMtYm9keS1jb21wYWN0LTAyLWxpbmUtaGVpZ2h0LCAxLjM3NSk7XFxuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMi1sZXR0ZXItc3BhY2luZywgMCk7XFxuICBwYWRkaW5nLWJsb2NrOiBtaW4oKHZhcigtLWNkcy1sYXlvdXQtc2l6ZS1oZWlnaHQtbG9jYWwpIC0gdmFyKC0tdGVtcC1leHByZXNzaXZlLTFsaCkpIC8gMiAtIDAuMDYyNXJlbSwgdmFyKC0tdGVtcC1wYWRkaW5nLWJsb2NrLW1heCkpO1xcbn1cXG5cXG4uRll6OGxxLU5cXFxcK1BzdnNSQUNCbVpJUGdcXFxcPVxcXFw9LlBJZ2JhMXNXZTg1bVk0VlVhQ1hKVHdcXFxcPVxcXFw9IHtcXG4gIHBhZGRpbmc6IDEycHggMTNweDtcXG59XFxuXFxuLldPQm9EeUpnOVJvRkQ5eXA1Uzg3dWdcXFxcPVxcXFw9LlBJZ2JhMXNXZTg1bVk0VlVhQ1hKVHdcXFxcPVxcXFw9IC5sY2NhWmhsd3gwRlZ6aEFGWGp4QU5nXFxcXD1cXFxcPSB7XFxuICBibG9jay1zaXplOiAxLjI1cmVtO1xcbiAgaW5saW5lLXNpemU6IDEuMjVyZW07XFxufVxcblxcbi5zOWI1SXNFVGRRWmxsZnVaNHlQMkN3XFxcXD1cXFxcPSAuV09Cb0R5Smc5Um9GRDl5cDVTODd1Z1xcXFw9XFxcXD0uUElnYmExc1dlODVtWTRWVWFDWEpUd1xcXFw9XFxcXD0ge1xcbiAgbWF4LWlubGluZS1zaXplOiAyMHJlbTtcXG59XFxuXFxuLldPQm9EeUpnOVJvRkQ5eXA1Uzg3dWdcXFxcPVxcXFw9LkJReXNTZXlcXFxcKzBoeVxcXFwrVFA4ZU1EbXctZ1xcXFw9XFxcXD0ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWNkcy1za2VsZXRvbi1iYWNrZ3JvdW5kLCAjZThlOGU4KTtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIGlubGluZS1zaXplOiA5LjM3NXJlbTtcXG59XFxuLldPQm9EeUpnOVJvRkQ5eXA1Uzg3dWdcXFxcPVxcXFw9LkJReXNTZXlcXFxcKzBoeVxcXFwrVFA4ZU1EbXctZ1xcXFw9XFxcXD06aG92ZXIsIC5XT0JvRHlKZzlSb0ZEOXlwNVM4N3VnXFxcXD1cXFxcPS5CUXlzU2V5XFxcXCswaHlcXFxcK1RQOGVNRG13LWdcXFxcPVxcXFw9OmZvY3VzLCAuV09Cb0R5Smc5Um9GRDl5cDVTODd1Z1xcXFw9XFxcXD0uQlF5c1NleVxcXFwrMGh5XFxcXCtUUDhlTURtdy1nXFxcXD1cXFxcPTphY3RpdmUge1xcbiAgYm9yZGVyOiBub25lO1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgb3V0bGluZTogbm9uZTtcXG59XFxuLldPQm9EeUpnOVJvRkQ5eXA1Uzg3dWdcXFxcPVxcXFw9LkJReXNTZXlcXFxcKzBoeVxcXFwrVFA4ZU1EbXctZ1xcXFw9XFxcXD06OmJlZm9yZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBhbmltYXRpb246IDMwMDBtcyBlYXNlLWluLW91dCBCUXlzU2V5XFxcXCswaHlcXFxcK1RQOGVNRG13LWdcXFxcPVxcXFw9IGluZmluaXRlO1xcbiAgYmFja2dyb3VuZDogdmFyKC0tY2RzLXNrZWxldG9uLWVsZW1lbnQsICNjNmM2YzYpO1xcbiAgYmxvY2stc2l6ZTogMTAwJTtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgaW5saW5lLXNpemU6IDEwMCU7XFxuICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XFxuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtLW9yaWdpbiwgdHJhbnNmb3JtLCBvcGFjaXR5O1xcbn1cXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xcbiAgLldPQm9EeUpnOVJvRkQ5eXA1Uzg3dWdcXFxcPVxcXFw9LkJReXNTZXlcXFxcKzBoeVxcXFwrVFA4ZU1EbXctZ1xcXFw9XFxcXD06OmJlZm9yZSB7XFxuICAgIGFuaW1hdGlvbjogbm9uZTtcXG4gIH1cXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpLCAoZm9yY2VkLWNvbG9yczogYWN0aXZlKSB7XFxuICAuV09Cb0R5Smc5Um9GRDl5cDVTODd1Z1xcXFw9XFxcXD0uQlF5c1NleVxcXFwrMGh5XFxcXCtUUDhlTURtdy1nXFxcXD1cXFxcPSB7XFxuICAgIGJhY2tncm91bmQ6IENhbnZhc1RleHQ7XFxuICB9XFxuICAuV09Cb0R5Smc5Um9GRDl5cDVTODd1Z1xcXFw9XFxcXD0uQlF5c1NleVxcXFwrMGh5XFxcXCtUUDhlTURtdy1nXFxcXD1cXFxcPTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogQ2FudmFzO1xcbiAgICBmb3JjZWQtY29sb3ItYWRqdXN0OiBub25lO1xcbiAgfVxcbn1cXG5cXG4uczliNUlzRVRkUVpsbGZ1WjR5UDJDd1xcXFw9XFxcXD0ge1xcbiAgZGlzcGxheTogZmxleDtcXG59XFxuXFxuLlJnV2VHWE1tbHl2ekRpdlVnLVJvN1FcXFxcPVxcXFw9IHtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcblxcbi5zOWI1SXNFVGRRWmxsZnVaNHlQMkN3XFxcXD1cXFxcPSAuV09Cb0R5Smc5Um9GRDl5cDVTODd1Z1xcXFw9XFxcXD0ge1xcbiAgaW5saW5lLXNpemU6IDEwMCU7XFxuICBtYXgtaW5saW5lLXNpemU6IDEyLjI1cmVtO1xcbn1cXG4uczliNUlzRVRkUVpsbGZ1WjR5UDJDd1xcXFw9XFxcXD0gLldPQm9EeUpnOVJvRkQ5eXA1Uzg3dWdcXFxcPVxcXFw9Om5vdCg6Zm9jdXMpIHtcXG4gIGJveC1zaGFkb3c6IC0wLjA2MjVyZW0gMCAwIDAgdmFyKC0tY2RzLWJ1dHRvbi1zZXBhcmF0b3IsICNlMGUwZTApO1xcbn1cXG4uczliNUlzRVRkUVpsbGZ1WjR5UDJDd1xcXFw9XFxcXD0gLldPQm9EeUpnOVJvRkQ5eXA1Uzg3dWdcXFxcPVxcXFw9OmZpcnN0LW9mLXR5cGU6bm90KDpmb2N1cykge1xcbiAgYm94LXNoYWRvdzogaW5oZXJpdDtcXG59XFxuXFxuLnM5YjVJc0VUZFFabGxmdVo0eVAyQ3dcXFxcPVxcXFw9IC5XT0JvRHlKZzlSb0ZEOXlwNVM4N3VnXFxcXD1cXFxcPTpmb2N1cyArIC5XT0JvRHlKZzlSb0ZEOXlwNVM4N3VnXFxcXD1cXFxcPSB7XFxuICBib3gtc2hhZG93OiBpbmhlcml0O1xcbn1cXG5cXG4uUmdXZUdYTW1seXZ6RGl2VWctUm83UVxcXFw9XFxcXD0gLldPQm9EeUpnOVJvRkQ5eXA1Uzg3dWdcXFxcPVxcXFw9Om5vdCg6Zm9jdXMpIHtcXG4gIGJveC1zaGFkb3c6IDAgLTAuMDYyNXJlbSAwIDAgdmFyKC0tY2RzLWJ1dHRvbi1zZXBhcmF0b3IsICNlMGUwZTApO1xcbn1cXG5cXG4uUmdXZUdYTW1seXZ6RGl2VWctUm83UVxcXFw9XFxcXD0gLldPQm9EeUpnOVJvRkQ5eXA1Uzg3dWdcXFxcPVxcXFw9OmZpcnN0LW9mLXR5cGU6bm90KDpmb2N1cykge1xcbiAgYm94LXNoYWRvdzogaW5oZXJpdDtcXG59XFxuXFxuLnM5YjVJc0VUZFFabGxmdVo0eVAyQ3dcXFxcPVxcXFw9IC5XT0JvRHlKZzlSb0ZEOXlwNVM4N3VnXFxcXD1cXFxcPS5RaEtkaVdHY3BOdFQ4YmNyWEc3Uk5nXFxcXD1cXFxcPSB7XFxuICBib3gtc2hhZG93OiAtMC4wNjI1cmVtIDAgMCAwIHZhcigtLWNkcy1pY29uLW9uLWNvbG9yLWRpc2FibGVkLCAjOGQ4ZDhkKTtcXG59XFxuLnM5YjVJc0VUZFFabGxmdVo0eVAyQ3dcXFxcPVxcXFw9IC5XT0JvRHlKZzlSb0ZEOXlwNVM4N3VnXFxcXD1cXFxcPS5RaEtkaVdHY3BOdFQ4YmNyWEc3Uk5nXFxcXD1cXFxcPTpmaXJzdC1vZi10eXBlIHtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxufVxcblxcbi5SZ1dlR1hNbWx5dnpEaXZVZy1SbzdRXFxcXD1cXFxcPSAuV09Cb0R5Smc5Um9GRDl5cDVTODd1Z1xcXFw9XFxcXD0uUWhLZGlXR2NwTnRUOGJjclhHN1JOZ1xcXFw9XFxcXD0ge1xcbiAgYm94LXNoYWRvdzogMCAtMC4wNjI1cmVtIDAgMCB2YXIoLS1jZHMtbGF5ZXItc2VsZWN0ZWQtZGlzYWJsZWQsICM4ZDhkOGQpO1xcbn1cXG4uUmdXZUdYTW1seXZ6RGl2VWctUm83UVxcXFw9XFxcXD0gLldPQm9EeUpnOVJvRkQ5eXA1Uzg3dWdcXFxcPVxcXFw9LlFoS2RpV0djcE50VDhiY3JYRzdSTmdcXFxcPVxcXFw9OmZpcnN0LW9mLXR5cGUge1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG59XFxuXFxuLnM5YjVJc0VUZFFabGxmdVo0eVAyQ3dcXFxcPVxcXFw9IC5XT0JvRHlKZzlSb0ZEOXlwNVM4N3VnXFxcXD1cXFxcPS5qSkUwMjlDTVhRVkxmY2VcXFxcK0dxVENXQVxcXFw9XFxcXD0ge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG59XFxuXFxuLmZRZk9lZkxKMTl1Y1Z3Q295ZVBVRndcXFxcPVxcXFw9IC5zczF2UllKb202UWNUYVhqWURJZ3NBXFxcXD1cXFxcPSB7XFxuICBtYXJnaW4tYmxvY2stc3RhcnQ6IDAuMjVyZW07XFxuICBtYXJnaW4taW5saW5lLWVuZDogMC4yNXJlbTtcXG59XFxuXFxuQG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpLCAoZm9yY2VkLWNvbG9yczogYWN0aXZlKSB7XFxuICAuV09Cb0R5Smc5Um9GRDl5cDVTODd1Z1xcXFw9XFxcXD06Zm9jdXMge1xcbiAgICBjb2xvcjogSGlnaGxpZ2h0O1xcbiAgICBvdXRsaW5lOiAxcHggc29saWQgSGlnaGxpZ2h0O1xcbiAgfVxcbn1cXG5cXG5bZGlyPXJ0bF0gLnM5YjVJc0VUZFFabGxmdVo0eVAyQ3dcXFxcPVxcXFw9IC5XT0JvRHlKZzlSb0ZEOXlwNVM4N3VnXFxcXD1cXFxcPTpub3QoOmZvY3VzKSB7XFxuICBib3gtc2hhZG93OiAwLjA2MjVyZW0gMCAwIDAgdmFyKC0tY2RzLWJ1dHRvbi1zZXBhcmF0b3IsICNlMGUwZTApO1xcbn1cXG5cXG4vKiA2MCw3MCBhbmQgODAgYXJlIGFscmVhZHkgZGVjbGFyZWQgYXMgYnJhbmQtMDEsIDAyIGFuZCAwMyByZXNwZWN0aXZlbHkgKi9cXG46cm9vdCB7XFxuICAtLWJyYW5kLTAxOiAjMDA1ZDVkO1xcbiAgLS1icmFuZC0wMjogIzAwNDE0NDtcXG4gIC0tYnJhbmQtMDM6ICMwMDdkNzk7XFxuICAtLWJvdHRvbS1uYXYtaGVpZ2h0OiA0cmVtO1xcbiAgLS13b3Jrc3BhY2UtaGVhZGVyLWhlaWdodDogM3JlbTtcXG4gIC0tdGFibGV0LXdvcmtzcGFjZS13aW5kb3ctaGVpZ2h0OiBjYWxjKDEwMHZoIC0gdmFyKC0tb21ycy1uYXZiYXItaGVpZ2h0KSAtIHZhcigtLWJvdHRvbS1uYXYtaGVpZ2h0KSk7XFxuICAtLWRlc2t0b3Atd29ya3NwYWNlLXdpbmRvdy1oZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS1vbXJzLW5hdmJhci1oZWlnaHQpIC0gdmFyKC0td29ya3NwYWNlLWhlYWRlci1oZWlnaHQpKTtcXG59XFxuXFxuLyogVGhlc2UgY29sb3IgdmFyaWFibGVzIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlICovXFxuLl8zZ2hMOVZ2RU1FQkd0eHU0cE13bFVRXFxcXD1cXFxcPSB7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWZpZWxkKTtcXG4gIGJvcmRlci1ibG9jay1lbmQ6IDFweCBzb2xpZCB2YXIoLS1jZHMtYm9yZGVyLXN0cm9uZyk7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtcHJpbWFyeSk7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4uXzNnaEw5VnZFTUVCR3R4dTRwTXdsVVFcXFxcPVxcXFw9OmZvY3VzLXdpdGhpbiwgLl8zZ2hMOVZ2RU1FQkd0eHU0cE13bFVRXFxcXD1cXFxcPS53ZDAyUE1JdXUwdmRLMW5VMDFNMHZBXFxcXD1cXFxcPSB7XFxuICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tY2RzLWZvY3VzLCAjMGY2MmZlKTtcXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1jb250cmFzdCkge1xcbiAgLl8zZ2hMOVZ2RU1FQkd0eHU0cE13bFVRXFxcXD1cXFxcPTpmb2N1cy13aXRoaW4sIC5fM2doTDlWdkVNRUJHdHh1NHBNd2xVUVxcXFw9XFxcXD0ud2QwMlBNSXV1MHZkSzFuVTAxTTB2QVxcXFw9XFxcXD0ge1xcbiAgICBvdXRsaW5lLXN0eWxlOiBkb3R0ZWQ7XFxuICB9XFxufVxcbi5fM2doTDlWdkVNRUJHdHh1NHBNd2xVUVxcXFw9XFxcXD1bZGF0YS1pbnZhbGlkXSB7XFxuICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tY2RzLXN1cHBvcnQtZXJyb3IsICNkYTFlMjgpO1xcbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLWNvbnRyYXN0KSB7XFxuICAuXzNnaEw5VnZFTUVCR3R4dTRwTXdsVVFcXFxcPVxcXFw9W2RhdGEtaW52YWxpZF0ge1xcbiAgICBvdXRsaW5lLXN0eWxlOiBkb3R0ZWQ7XFxuICB9XFxufVxcbi5fM2doTDlWdkVNRUJHdHh1NHBNd2xVUVxcXFw9XFxcXD1bZGF0YS1pbnZhbGlkXSB7XFxuICBjb2xvcjogdmFyKC0tY2RzLXN1cHBvcnQtZXJyb3IsICNkYTFlMjgpO1xcbn1cXG4uXzNnaEw5VnZFTUVCR3R4dTRwTXdsVVFcXFxcPVxcXFw9W2RhdGEtZGlzYWJsZWRdIHtcXG4gIGJvcmRlci1ibG9jay1lbmQ6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDApO1xcbiAgY29sb3I6IHZhcigtLWNkcy10ZXh0LWRpc2FibGVkLCByZ2JhKDIyLCAyMiwgMjIsIDAuMjUpKTtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxufVxcblxcbi5fOGREOFRiOUpJdnRYaUstSC1tNThcXFxcK1FcXFxcPVxcXFw9IC51OXhwUUx3djg4NzlhU3J0d2dCandBXFxcXD1cXFxcPSwgLm1peUdCa3NERHc2SUFnRHE4b0VpTXdcXFxcPVxcXFw9IC51OXhwUUx3djg4NzlhU3J0d2dCandBXFxcXD1cXFxcPSB7XFxuICBjYXJldC1jb2xvcjogdmFyKC0tY2RzLXRleHQtcHJpbWFyeSk7XFxufVxcbi5fOGREOFRiOUpJdnRYaUstSC1tNThcXFxcK1FcXFxcPVxcXFw9IC51OXhwUUx3djg4NzlhU3J0d2dCandBXFxcXD1cXFxcPTpmb2N1cywgLm1peUdCa3NERHc2SUFnRHE4b0VpTXdcXFxcPVxcXFw9IC51OXhwUUx3djg4NzlhU3J0d2dCandBXFxcXD1cXFxcPTpmb2N1cyB7XFxuICBvdXRsaW5lOiB1bnNldDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNkcy1sYXllci1zZWxlY3RlZC1ob3Zlcik7XFxufVxcbi5fOGREOFRiOUpJdnRYaUstSC1tNThcXFxcK1FcXFxcPVxcXFw9IFtkYXRhLXBsYWNlaG9sZGVyXS51OXhwUUx3djg4NzlhU3J0d2dCandBXFxcXD1cXFxcPSwgLm1peUdCa3NERHc2SUFnRHE4b0VpTXdcXFxcPVxcXFw9IFtkYXRhLXBsYWNlaG9sZGVyXS51OXhwUUx3djg4NzlhU3J0d2dCandBXFxcXD1cXFxcPSB7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtZGlzYWJsZWQsIHJnYmEoMjIsIDIyLCAyMiwgMC4yNSkpO1xcbn1cXG4uXzhkRDhUYjlKSXZ0WGlLLUgtbTU4XFxcXCtRXFxcXD1cXFxcPSBbZGF0YS1mb2N1c2VkPXRydWVdLnU5eHBRTHd2ODg3OWFTcnR3Z0Jqd0FcXFxcPVxcXFw9LCAubWl5R0Jrc0REdzZJQWdEcThvRWlNd1xcXFw9XFxcXD0gW2RhdGEtZm9jdXNlZD10cnVlXS51OXhwUUx3djg4NzlhU3J0d2dCandBXFxcXD1cXFxcPSB7XFxuICBhbmltYXRpb246IEd2WUNXNEhhXFxcXCt4R1ZYUUNjWTFxdHdBXFxcXD1cXFxcPSAxcyBzdGVwLWVuZCBpbmZpbml0ZTtcXG59XFxuW2Rpcj1cXFwicnRsXFxcIl0gLl84ZEQ4VGI5Skl2dFhpSy1ILW01OFxcXFwrUVxcXFw9XFxcXD0gW2RhdGEtZm9jdXNlZD10cnVlXS51OXhwUUx3djg4NzlhU3J0d2dCandBXFxcXD1cXFxcPSwgW2Rpcj1cXFwicnRsXFxcIl0gLm1peUdCa3NERHc2SUFnRHE4b0VpTXdcXFxcPVxcXFw9IFtkYXRhLWZvY3VzZWQ9dHJ1ZV0udTl4cFFMd3Y4ODc5YVNydHdnQmp3QVxcXFw9XFxcXD0sIC5fOGREOFRiOUpJdnRYaUstSC1tNThcXFxcK1FcXFxcPVxcXFw9IFtkaXI9XFxcInJ0bFxcXCJdIFtkYXRhLWZvY3VzZWQ9dHJ1ZV0udTl4cFFMd3Y4ODc5YVNydHdnQmp3QVxcXFw9XFxcXD0sIC5taXlHQmtzRER3NklBZ0RxOG9FaU13XFxcXD1cXFxcPSBbZGlyPVxcXCJydGxcXFwiXSBbZGF0YS1mb2N1c2VkPXRydWVdLnU5eHBRTHd2ODg3OWFTcnR3Z0Jqd0FcXFxcPVxcXFw9IHtcXG4gIGFuaW1hdGlvbjogYzBSTUgxVHVZVDhkMWpxSlRcXFxcKzZYRkFcXFxcPVxcXFw9IDFzIHN0ZXAtZW5kIGluZmluaXRlO1xcbn1cXG5cXG4uXzhkRDhUYjlKSXZ0WGlLLUgtbTU4XFxcXCtRXFxcXD1cXFxcPSBbZGF0YS1yZWFkb25seV06aGFzKCsgW2RhdGEtcGxhY2Vob2xkZXJdKSwgLm1peUdCa3NERHc2SUFnRHE4b0VpTXdcXFxcPVxcXFw9IFtkYXRhLXJlYWRvbmx5XTpoYXMoKyBbZGF0YS1wbGFjZWhvbGRlcl0pIHtcXG4gIGNvbG9yOiB2YXIoLS1jZHMtdGV4dC1kaXNhYmxlZCwgcmdiYSgyMiwgMjIsIDIyLCAwLjI1KSk7XFxufVxcbi5fOGREOFRiOUpJdnRYaUstSC1tNThcXFxcK1FcXFxcPVxcXFw9IFtkYXRhLXBsYWNlaG9sZGVyXSArIFtkYXRhLXJlYWRvbmx5XSwgLm1peUdCa3NERHc2SUFnRHE4b0VpTXdcXFxcPVxcXFw9IFtkYXRhLXBsYWNlaG9sZGVyXSArIFtkYXRhLXJlYWRvbmx5XSB7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtZGlzYWJsZWQsIHJnYmEoMjIsIDIyLCAyMiwgMC4yNSkpO1xcbn1cXG5cXG5Aa2V5ZnJhbWVzIEd2WUNXNEhhXFxcXCt4R1ZYUUNjWTFxdHdBXFxcXD1cXFxcPSB7XFxuICBmcm9tLCB0byB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgfVxcbiAgNTAlIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgY3VycmVudENvbG9yO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIGMwUk1IMVR1WVQ4ZDFqcUpUXFxcXCs2WEZBXFxcXD1cXFxcPSB7XFxuICBmcm9tLCB0byB7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICB9XFxuICA1MCUge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcXG4gIH1cXG59XFxuLl84ZEQ4VGI5Skl2dFhpSy1ILW01OFxcXFwrUVxcXFw9XFxcXD0sIC5taXlHQmtzRER3NklBZ0RxOG9FaU13XFxcXD1cXFxcPSB7XFxuICBpbmxpbmUtc2l6ZTogMTVyZW07XFxuICBtYXJnaW4tbGVmdDogMXJlbTtcXG4gIG1pbi13aWR0aDogMTByZW07XFxuICBtYXgtd2lkdGg6IDE1cmVtO1xcbn1cXG4uR1ZhRzM4czBlSWJ1dHVhYmY0XFxcXCt1QlFcXFxcPVxcXFw9IHtcXG4gIGJsb2NrLXNpemU6IDIuNXJlbTtcXG59XFxuXFxuLl8wMWR0QmdxV2l3Wms2U29CakFMU2pRXFxcXD1cXFxcPSB7XFxuICBibG9jay1zaXplOiAycmVtO1xcbn1cXG5cXG4uXzBoSVo5RDEtLUNlVTRaU3ZlU1RRUWdcXFxcPVxcXFw9IHtcXG4gIGJsb2NrLXNpemU6IDNyZW07XFxufVxcblxcbi5fN205RTJqbDIwUDRpN3A3TXAxLWJpQVxcXFw9XFxcXD0ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIG1pbi13aWR0aDogMTByZW07XFxuICBtYXgtd2lkdGg6IDE1cmVtO1xcbiAgbWFyZ2luLWlubGluZS1zdGFydDogMXJlbTtcXG4gIGlubGluZS1zaXplOiAxNXJlbTtcXG59XFxuXFxuLm14OWpQXFxcXCswSk1kbkFYZFpUalJDSmh3XFxcXD1cXFxcPSB7XFxuICBibG9jay1zaXplOiAycmVtO1xcbn1cXG5cXG4uXzZSZEcwcHljRHRKSjJLVHpIVjRpSXdcXFxcPVxcXFw9IHtcXG4gIGJsb2NrLXNpemU6IDIuNXJlbTtcXG59XFxuXFxuLklQbkpkazhYdHpnMXlmRkNVb0JjOUFcXFxcPVxcXFw9IHtcXG4gIGJsb2NrLXNpemU6IDNyZW07XFxufVxcblxcbi5taXlHQmtzRER3NklBZ0RxOG9FaU13XFxcXD1cXFxcPSB7XFxuICBtaW4td2lkdGg6IHVuc2V0O1xcbiAgbWFyZ2luOiAwcHg7XFxufVxcblxcbi5OeWFiZmVMVVp6VVBYT0lkV2xlNWJ3XFxcXD1cXFxcPSB7XFxuICBmbGV4LWJhc2lzOiBmaXQtY29udGVudDtcXG59XFxuXFxuLlBBSTRGVkcyaGozNXhEaHpJRi1qYVFcXFxcPVxcXFw9IHtcXG4gIHBhZGRpbmctcmlnaHQ6IHVuc2V0O1xcbn1cXG5cXG4uUzctcUNFVGprbm5cXFxcK0FjQTdjMHhDM2dcXFxcPVxcXFw9IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgbWFyZ2luLWlubGluZTogMC41cmVtO1xcbn1cXG5cXG4uXzNnaEw5VnZFTUVCR3R4dTRwTXdsVVFcXFxcPVxcXFw9OmhhcyhbZGF0YS1wbGFjZWhvbGRlcl0pID4gLl83bTlFMmpsMjBQNGk3cDdNcDEtYmlBXFxcXD1cXFxcPSA+IC5TNy1xQ0VUamtublxcXFwrQWNBN2MweEMzZ1xcXFw9XFxcXD0gPiBzcGFuIHtcXG4gIGNvbG9yOiB2YXIoLS1jZHMtdGV4dC1kaXNhYmxlZCwgcmdiYSgyMiwgMjIsIDIyLCAwLjI1KSk7XFxufVxcblxcbi5IcjlOSnhDQTRvU05WVEJ3c0htQUNRXFxcXD1cXFxcPSB7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtZXJyb3IsICNkYTFlMjgpICFpbXBvcnRhbnQ7XFxuICBmb250LXNpemU6IDAuNzVyZW07XFxuICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7XFxuICBtYXJnaW46IDAuMjVyZW0gMCAwO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuXFxuQGtleWZyYW1lcyBfMTNVSW1MeHdVckxkTDV6VVRxeUFSZ1xcXFw9XFxcXD0ge1xcbiAgZnJvbSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Myk7XFxuICB9XFxuICB0byB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XFxuICB9XFxufVxcbi5mSkVRY0l0TnJ2Mm41NVVhRC1OZmd3XFxcXD1cXFxcPSB7XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgY2VudGVyO1xcbn1cXG5cXG4uZkpFUWNJdE5ydjJuNTVVYUQtTmZnd1xcXFw9XFxcXD1bZGF0YS1wbGFjZW1lbnQ9dG9wXSxcXG4uZkpFUWNJdE5ydjJuNTVVYUQtTmZnd1xcXFw9XFxcXD1bZGF0YS1wbGFjZW1lbnQ9dG9wLXN0YXJ0XSxcXG4uZkpFUWNJdE5ydjJuNTVVYUQtTmZnd1xcXFw9XFxcXD1bZGF0YS1wbGFjZW1lbnQ9dG9wLWVuZF0ge1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIGNlbnRlcjtcXG59XFxuXFxuLmZKRVFjSXROcnYybjU1VWFELU5mZ3dcXFxcPVxcXFw9W2RhdGEtZW50ZXJpbmddIHtcXG4gIGFuaW1hdGlvbjogXzEzVUltTHh3VXJMZEw1elVUcXlBUmdcXFxcPVxcXFw9IDExMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjM4LCAwLjkpO1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XFxuICAuZkpFUWNJdE5ydjJuNTVVYUQtTmZnd1xcXFw9XFxcXD1bZGF0YS1lbnRlcmluZ10ge1xcbiAgICBhbmltYXRpb246IG5vbmU7XFxuICB9XFxufVxcblxcbi5najluRXZyQjlSZS1XWC1Ia3p5UUVRXFxcXD1cXFxcPSB7XFxuICBib3gtc2hhZG93OiAwIDJweCA2cHggdmFyKC0tY2RzLXNoYWRvdywgcmdiYSgwLCAwLCAwLCAwLjMpKTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNkcy1sYXllci0wMSwgI2Y0ZjRmNCk7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgcGFkZGluZzogMC4yNXJlbSAwLjI1cmVtIDAuNXJlbSAwLjI1cmVtO1xcbn1cXG5cXG4ucXZ6a01UU3Z6UEZMNDJReDFScDdnUVxcXFw9XFxcXD0ge1xcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICBmbGV4LXdyYXA6IG5vd3JhcDtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG59XFxuXFxuLlFFWjVkSE1NSEt4elk4T1lOSUNtMHdcXFxcPVxcXFw9IHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBwYWRkaW5nOiAwO1xcbiAgYm9yZGVyOiAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBmb250LXNpemU6IDEwMCU7XFxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XFxufVxcbi5RRVo1ZEhNTUhLeHpZOE9ZTklDbTB3XFxcXD1cXFxcPSAqLFxcbi5RRVo1ZEhNTUhLeHpZOE9ZTklDbTB3XFxcXD1cXFxcPSAqOjpiZWZvcmUsXFxuLlFFWjVkSE1NSEt4elk4T1lOSUNtMHdcXFxcPVxcXFw9ICo6OmFmdGVyIHtcXG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XFxufVxcbi5RRVo1ZEhNTUhLeHpZOE9ZTklDbTB3XFxcXD1cXFxcPSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxufVxcbi5RRVo1ZEhNTUhLeHpZOE9ZTklDbTB3XFxcXD1cXFxcPTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtbGF5ZXItaG92ZXIpO1xcbn1cXG4uUUVaNWRITU1IS3h6WThPWU5JQ20wd1xcXFw9XFxcXD06ZGlzYWJsZWQgPiBzdmcge1xcbiAgZmlsbDogdmFyKC0tY2RzLXRleHQtZGlzYWJsZWQsIHJnYmEoMjIsIDIyLCAyMiwgMC4yNSkpO1xcbn1cXG4uUUVaNWRITU1IS3h6WThPWU5JQ20wd1xcXFw9XFxcXD0gPiBzdmcge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBtYXJnaW46IGF1dG87XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcblxcbltkYXRhLWludmFsaWRdID4gLlFFWjVkSE1NSEt4elk4T1lOSUNtMHdcXFxcPVxcXFw9ID4gc3ZnIHtcXG4gIC0tb21ycy1pY29uLWZpbGw6IHZhcigtLWNkcy1zdXBwb3J0LWVycm9yLCAjZGExZTI4KTtcXG59XFxuXFxuLm9oTGpGXFxcXCtUSW9VNkkwMUVkXFxcXCtVZld4Z1xcXFw9XFxcXD0ge1xcbiAgaGVpZ2h0OiAyLjVyZW07XFxuICB3aWR0aDogMi41cmVtO1xcbn1cXG5cXG4uc0QzZm00ck9KdnRwdW5KM3dvY1l0QVxcXFw9XFxcXD0ge1xcbiAgaGVpZ2h0OiAycmVtO1xcbiAgd2lkdGg6IDJyZW07XFxufVxcblxcbi5fMGZzN21nZFZqbXUwRWxRTFBaZ2NcXFxcK1FcXFxcPVxcXFw9IHtcXG4gIGhlaWdodDogM3JlbTtcXG4gIHdpZHRoOiAzcmVtO1xcbn1cXG5cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0ge1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXI6IDA7XFxuICBtYXJnaW46IDA7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGZvbnQtc2l6ZTogMTAwJTtcXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tY2RzLWhlYWRpbmctY29tcGFjdC0wMS1mb250LXNpemUsIDAuODc1cmVtKTtcXG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1jZHMtaGVhZGluZy1jb21wYWN0LTAxLWZvbnQtd2VpZ2h0LCA2MDApO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWNkcy1oZWFkaW5nLWNvbXBhY3QtMDEtbGluZS1oZWlnaHQsIDEuMjg1NzIpO1xcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWNkcy1oZWFkaW5nLWNvbXBhY3QtMDEtbGV0dGVyLXNwYWNpbmcsIDAuMTZweCk7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSAqLFxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSAqOjpiZWZvcmUsXFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9ICo6OmFmdGVyIHtcXG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSB7XFxuICBtYXJnaW4tdG9wOiAwLjVyZW07XFxuICBtYXJnaW4tYmxvY2stZW5kOiAwLjEyNXJlbTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG59XFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9ID4gc3BhbiB7XFxuICBtYXJnaW4tbGVmdDogMC4yNXJlbTtcXG4gIG1hcmdpbi1yaWdodDogMC4yNXJlbTtcXG59XFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSB7XFxuICBkaXNwbGF5OiBpbmxpbmU7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgPiBpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10ge1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXI6IDA7XFxuICBtYXJnaW46IDA7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGZvbnQtc2l6ZTogMTAwJTtcXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tY2RzLWhlYWRpbmctY29tcGFjdC0wMS1mb250LXNpemUsIDAuODc1cmVtKTtcXG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1jZHMtaGVhZGluZy1jb21wYWN0LTAxLWZvbnQtd2VpZ2h0LCA2MDApO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWNkcy1oZWFkaW5nLWNvbXBhY3QtMDEtbGluZS1oZWlnaHQsIDEuMjg1NzIpO1xcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWNkcy1oZWFkaW5nLWNvbXBhY3QtMDEtbGV0dGVyLXNwYWNpbmcsIDAuMTZweCk7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgPiBpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10gKixcXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pID4gaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdICo6OmJlZm9yZSxcXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pID4gaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdICo6OmFmdGVyIHtcXG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgPiBpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWZpZWxkKTtcXG4gIGlubGluZS1zaXplOiAyLjVyZW07XFxuICBwYWRkaW5nOiAwLjI1cmVtO1xcbiAgcGFkZGluZy1yaWdodDogMDtcXG59XFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSA+IGlucHV0W2lucHV0bW9kZT1udW1lcmljXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiwgLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSA+IGlucHV0W2lucHV0bW9kZT1udW1lcmljXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7XFxuICBtYXJnaW46IDA7XFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgPiBpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY106Zm9jdXMge1xcbiAgb3V0bGluZTogMXB4IHNvbGlkIHZhcigtLWNkcy1mb2N1cywgIzBmNjJmZSk7XFxufVxcbkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLWNvbnRyYXN0KSB7XFxuICAuQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pID4gaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdOmZvY3VzIHtcXG4gICAgb3V0bGluZS1zdHlsZTogZG90dGVkO1xcbiAgfVxcbn1cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pID4gaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdW2RhdGEtaW52YWxpZF0ge1xcbiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNkcy1zdXBwb3J0LWVycm9yLCAjZGExZTI4KTtcXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1jb250cmFzdCkge1xcbiAgLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSA+IGlucHV0W2lucHV0bW9kZT1udW1lcmljXVtkYXRhLWludmFsaWRdIHtcXG4gICAgb3V0bGluZS1zdHlsZTogZG90dGVkO1xcbiAgfVxcbn1cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pID4gaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdW2RhdGEtZGlzYWJsZWRdLCAuQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pID4gaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdW2RhdGEtZGlzYWJsZWRdOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNkcy1sYXllci0wMSwgI2Y0ZjRmNCk7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtZGlzYWJsZWQsIHJnYmEoMjIsIDIyLCAyMiwgMC4yNSkpO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgPiBpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY11bZGF0YS1kaXNhYmxlZF0gKyBkaXYgPiBidXR0b246OmFmdGVyIHtcXG4gIGJvcmRlci1ibG9jay1lbmQtY29sb3I6IHZhcigtLWNkcy10ZXh0LWRpc2FibGVkLCByZ2JhKDIyLCAyMiwgMjIsIDAuMjUpKTtcXG4gIGJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogdmFyKC0tY2RzLXRleHQtZGlzYWJsZWQsIHJnYmEoMjIsIDIyLCAyMiwgMC4yNSkpO1xcbn1cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pID4gaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdW2RhdGEtZGlzYWJsZWRdICsgZGl2ID4gYnV0dG9uOmhvdmVyIHtcXG4gIG9wYWNpdHk6IDA7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgZGl2W3JvbGU9Z3JvdXBdIHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBwYWRkaW5nOiAwO1xcbiAgYm9yZGVyOiAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBmb250LXNpemU6IDEwMCU7XFxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgZGl2W3JvbGU9Z3JvdXBdICosXFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSBkaXZbcm9sZT1ncm91cF0gKjo6YmVmb3JlLFxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgZGl2W3JvbGU9Z3JvdXBdICo6OmFmdGVyIHtcXG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgZGl2W3JvbGU9Z3JvdXBdIHtcXG4gIGRpc3BsYXk6IGlubGluZTtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKTpob3ZlciBidXR0b24ge1xcbiAgb3BhY2l0eTogMTtcXG59XFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSBidXR0b24ge1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXI6IDA7XFxuICBtYXJnaW46IDA7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGZvbnQtc2l6ZTogMTAwJTtcXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcXG59XFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSBidXR0b24gKixcXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pIGJ1dHRvbiAqOjpiZWZvcmUsXFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSBidXR0b24gKjo6YWZ0ZXIge1xcbiAgYm94LXNpemluZzogaW5oZXJpdDtcXG59XFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSBidXR0b24ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgcGFkZGluZy1ibG9jazogMDtcXG4gIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAwLjEyNXJlbTtcXG4gIHBhZGRpbmctaW5saW5lLWVuZDogMC4yNXJlbTtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIGJsb2NrLXNpemU6IDUwJTtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGlubGluZS1zaXplOiAwLjc1cmVtO1xcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiAyLjVyZW07XFxuICBsaW5lLWhlaWdodDogNTAlO1xcbiAgb3BhY2l0eTogMDtcXG59XFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSBidXR0b246OmFmdGVyIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgYm9yZGVyLWlubGluZS1lbmQ6IDAuMjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItaW5saW5lLXN0YXJ0OiAwLjI1cmVtIHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBpbnNldC1ibG9jay1zdGFydDogMzMlO1xcbn1cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pIGJ1dHRvbjpob3Zlcjo6YWZ0ZXIge1xcbiAgYm9yZGVyLWJsb2NrLWVuZC1jb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi1wcmltYXJ5LCAjMGY2MmZlKTtcXG4gIGJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogdmFyKC0tY2RzLWJ1dHRvbi1wcmltYXJ5LCAjMGY2MmZlKTtcXG59XFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSBidXR0b246YWN0aXZlOjphZnRlciB7XFxuICBib3JkZXItYmxvY2stZW5kLWNvbG9yOiB2YXIoLS1jZHMtYm9yZGVyLWludGVyYWN0aXZlLCAjMGY2MmZlKTtcXG4gIGJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogdmFyKC0tY2RzLWJvcmRlci1pbnRlcmFjdGl2ZSwgIzBmNjJmZSk7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgYnV0dG9uW3Nsb3Q9aW5jcmVtZW50XSB7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbn1cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pIGJ1dHRvbltzbG90PWRlY3JlbWVudF0ge1xcbiAgdG9wOiAwLjc1cmVtO1xcbiAgbGVmdDogMDtcXG59XFxuXFxuLnVvRWpKSU9TXFxcXCtDQnFrY284alJVdDZRXFxcXD1cXFxcPSB7XFxuICB3aWR0aDogMTdyZW07XFxufVxcbi51b0VqSklPU1xcXFwrQ0Jxa2NvOGpSVXQ2UVxcXFw9XFxcXD0gdHIsIC51b0VqSklPU1xcXFwrQ0Jxa2NvOGpSVXQ2UVxcXFw9XFxcXD0gdHIgPiB0aCwgLnVvRWpKSU9TXFxcXCtDQnFrY284alJVdDZRXFxcXD1cXFxcPSB0ciA+IHRkIHtcXG4gIGhlaWdodDogMi40MjhyZW07XFxuICB3aWR0aDogMi40MjhyZW07XFxufVxcbi51b0VqSklPU1xcXFwrQ0Jxa2NvOGpSVXQ2UVxcXFw9XFxcXD0gPiB0aGVhZCA+IHRyID4gdGgge1xcbiAgZm9udC1zaXplOiB2YXIoLS1jZHMtYm9keS1jb21wYWN0LTAxLWZvbnQtc2l6ZSwgMC44NzVyZW0pO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWNkcy1ib2R5LWNvbXBhY3QtMDEtZm9udC13ZWlnaHQsIDQwMCk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMS1saW5lLWhlaWdodCwgMS4yODU3Mik7XFxuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMS1sZXR0ZXItc3BhY2luZywgMC4xNnB4KTtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxufVxcbi51b0VqSklPU1xcXFwrQ0Jxa2NvOGpSVXQ2UVxcXFw9XFxcXD0gPiB0Ym9keSA+IHRyID4gdGQge1xcbiAgZm9udC1zaXplOiB2YXIoLS1jZHMtYm9keS1jb21wYWN0LTAxLWZvbnQtc2l6ZSwgMC44NzVyZW0pO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWNkcy1ib2R5LWNvbXBhY3QtMDEtZm9udC13ZWlnaHQsIDQwMCk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMS1saW5lLWhlaWdodCwgMS4yODU3Mik7XFxuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMS1sZXR0ZXItc3BhY2luZywgMC4xNnB4KTtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxufVxcbi51b0VqSklPU1xcXFwrQ0Jxa2NvOGpSVXQ2UVxcXFw9XFxcXD0gPiB0Ym9keSA+IHRyID4gdGQgPiBkaXYge1xcbiAgb3V0bGluZTogdW5zZXQ7XFxufVxcbi51b0VqSklPU1xcXFwrQ0Jxa2NvOGpSVXQ2UVxcXFw9XFxcXD0gPiB0Ym9keSA+IHRyID4gdGQ6aG92ZXI6bm90KDpoYXMoW2FyaWEtZGlzYWJsZWRdLCBbZGF0YS1zZWxlY3RlZF0pKSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtbGF5ZXItaG92ZXIpO1xcbn1cXG4udW9FakpJT1NcXFxcK0NCcWtjbzhqUlV0NlFcXFxcPVxcXFw9ID4gdGJvZHkgPiB0ciA+IHRkOmhhcyhbZGF0YS1zZWxlY3RlZF0pIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwZjYyZmU7XFxuICBjb2xvcjogI2ZmZmZmZjtcXG59XFxuLnVvRWpKSU9TXFxcXCtDQnFrY284alJVdDZRXFxcXD1cXFxcPSA+IHRib2R5ID4gdHIgPiB0ZFthcmlhLWRpc2FibGVkXSB7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtZGlzYWJsZWQsIHJnYmEoMjIsIDIyLCAyMiwgMC4yNSkpO1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbn1cXG5cXG4ud2NTVER1SFxcXFwrUGpQOWt4S1xcXFwrcGozQ1V3XFxcXD1cXFxcPTpub3QoW2RhdGEtc2VsZWN0ZWRdKSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBjb2xvcjogIzBmNjJmZTtcXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICBmb250LXNpemU6IHZhcigtLWNkcy1ib2R5LWNvbXBhY3QtMDEtZm9udC1zaXplLCAwLjg3NXJlbSk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMS1saW5lLWhlaWdodCwgMS4yODU3Mik7XFxuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMS1sZXR0ZXItc3BhY2luZywgMC4xNnB4KTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBibG9jay1zaXplOiAyLjVyZW07XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBpbmxpbmUtc2l6ZTogMi41cmVtO1xcbn1cXG4ud2NTVER1SFxcXFwrUGpQOWt4S1xcXFwrcGozQ1V3XFxcXD1cXFxcPTpub3QoW2RhdGEtc2VsZWN0ZWRdKTo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBibG9jay1zaXplOiAwLjI1cmVtO1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBpbmxpbmUtc2l6ZTogMC4yNXJlbTtcXG4gIGluc2V0LWJsb2NrLWVuZDogMC40Mzc1cmVtO1xcbiAgaW5zZXQtaW5saW5lLXN0YXJ0OiA1MCU7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXG59XFxuLndjU1REdUhcXFxcK1BqUDlreEtcXFxcK3BqM0NVd1xcXFw9XFxcXD06bm90KFtkYXRhLXNlbGVjdGVkXSlbZGF0YS1kaXNhYmxlZF06OmFmdGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNkcy10ZXh0LWRpc2FibGVkLCByZ2JhKDIyLCAyMiwgMjIsIDAuMjUpKTtcXG59XFxuLndjU1REdUhcXFxcK1BqUDlreEtcXFxcK3BqM0NVd1xcXFw9XFxcXD06bm90KFtkYXRhLXNlbGVjdGVkXSk6bm90KFtkYXRhLWRpc2FibGVkXSk6OmFmdGVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNkcy1saW5rLXByaW1hcnksIHZhcigtLWNkcy1saW5rLXByaW1hcnksICMwZjYyZmUpKTtcXG59XFxuXFxuW2Rpcj1cXFwicnRsXFxcIl0gLl84ZEQ4VGI5Skl2dFhpSy1ILW01OFxcXFwrUVxcXFw9XFxcXD0sIFtkaXI9XFxcInJ0bFxcXCJdIC5taXlHQmtzRER3NklBZ0RxOG9FaU13XFxcXD1cXFxcPSB7XFxuICBwYWRkaW5nLWxlZnQ6IHVuc2V0O1xcbiAgcGFkZGluZy1yaWdodDogMC43NXJlbTtcXG59XFxuW2Rpcj1cXFwicnRsXFxcIl0gLlBBSTRGVkcyaGozNXhEaHpJRi1qYVFcXFxcPVxcXFw9IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDA7XFxufVxcbltkaXI9XFxcInJ0bFxcXCJdIC5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgPiBpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10ge1xcbiAgcGFkZGluZy1yaWdodDogMC4yNXJlbTtcXG59XFxuW2Rpcj1cXFwicnRsXFxcIl0gLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGJ1dHRvbltzbG90PWluY3JlbWVudF0ge1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogdW5zZXQ7XFxuICByaWdodDogMDtcXG59XFxuW2Rpcj1cXFwicnRsXFxcIl0gLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGJ1dHRvbltzbG90PWRlY3JlbWVudF0ge1xcbiAgdG9wOiAwLjc1cmVtO1xcbiAgbGVmdDogdW5zZXQ7XFxuICByaWdodDogMDtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vc3R5bGVzL3Njc3MvX2xheW91dC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGNhcmJvbi9zdHlsZXMvc2Nzcy91dGlsaXRpZXMvX2N1c3RvbS1wcm9wZXJ0eS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvZGlzdC9kYXRlcGlja2VyL2RhdGVwaWNrZXIubW9kdWxlLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3N0eWxlcy9zY3NzL19sYXllci5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGNhcmJvbi9zdHlsZXMvc2Nzcy90aGVtZS9fdGhlbWUuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vc3R5bGVzL3Njc3MvdXRpbGl0aWVzL19rZXlmcmFtZXMuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vc3R5bGVzL3Njc3MvdXRpbGl0aWVzL192aXN1YWxseS1oaWRkZW4uc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vc3R5bGVzL3Njc3MvY29tcG9uZW50cy9wb3BvdmVyL19wb3BvdmVyLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3N0eWxlcy9zY3NzL3V0aWxpdGllcy9fY29tcG9uZW50LXJlc2V0LnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3N0eWxlcy9zY3NzL3V0aWxpdGllcy9fbGF5b3V0LnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3N0eWxlcy9zY3NzL3V0aWxpdGllcy9fYnV0dG9uLXJlc2V0LnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3N0eWxlcy9zY3NzL3V0aWxpdGllcy9fZm9jdXMtb3V0bGluZS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGNhcmJvbi90aGVtZXMvc2Nzcy9nZW5lcmF0ZWQvX3Rva2Vucy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGNhcmJvbi9zdHlsZXMvc2Nzcy9jb21wb25lbnRzL3Rvb2x0aXAvX3Rvb2x0aXAuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vdHlwZS9zY3NzL19zdHlsZXMuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vc3R5bGVzL3Njc3MvY29tcG9uZW50cy9idXR0b24vX2J1dHRvbi5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGNhcmJvbi9zdHlsZXMvc2Nzcy9jb21wb25lbnRzL2J1dHRvbi9fbWl4aW5zLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3N0eWxlcy9zY3NzL2NvbXBvbmVudHMvYnV0dG9uL192YXJzLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3N0eWxlcy9zY3NzL2NvbXBvbmVudHMvYnV0dG9uL190b2tlbnMuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vbGF5b3V0L3Njc3MvZ2VuZXJhdGVkL19zcGFjaW5nLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3N0eWxlcy9zY3NzL3V0aWxpdGllcy9fc2tlbGV0b24uc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vc3R5bGVzL3Njc3MvdXRpbGl0aWVzL19oaWdoLWNvbnRyYXN0LW1vZGUuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL2Rpc3QvX3ZhcnMuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vc3R5bGVzL3Njc3MvdXRpbGl0aWVzL19ib3gtc2hhZG93LnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBK0RNO0VDVEosMEVBQUE7RUFBQSwrREFBQTtBQ25ERjs7QUYwRU07RUN2QkoseUdBQUE7QUMvQ0Y7O0FGb0ZRO0VDckNOLHNFQUFBO0FDM0NGOztBRmdGUTtFQ3JDTixzRUFBQTtBQ3ZDRjs7QUZnRE07RUNUSix3RUFBQTtFQUFBLCtEQUFBO0FDbENGOztBRnlETTtFQ3ZCSix1R0FBQTtBQzlCRjs7QUZtRVE7RUNyQ04sb0VBQUE7QUMxQkY7O0FGK0RRO0VDckNOLG9FQUFBO0FDdEJGOztBRitCTTtFQ1RKLDBFQUFBO0VBQUEsK0RBQUE7QUNqQkY7O0FGd0NNO0VDdkJKLHlHQUFBO0FDYkY7O0FGa0RRO0VDckNOLHNFQUFBO0FDVEY7O0FGOENRO0VDckNOLHNFQUFBO0FDTEY7O0FGY007RUNU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QVYyd0JoQjs7QWFuNkJFO0VDbURBLGlCQ3pDcUI7RUQwQ3JCLG1CQUFBO0VBQ0EsaURFNFBnQjtFRjNQaEIsNkJEcERJO0VDcURKLDBDRTBQZ0I7QWhCMG5CbEI7QWNsM0JFO0VBQ0UsMkRFc1NvQjtBaEI4a0J4QjtBY2ozQkU7RUFDRSxzRUE3R2lCO0VBOEdqQixvSUFDRTtBZGszQk47QWM5MkJFO0VBQ0UsNERFdVFxQjtBaEJ5bUJ6QjtBYzcyQkU7O0VBRUUsa0JEcEVFO0FibTdCTjtBYS82Qkk7RUFDRSx1Q0gwSVM7QVZ1eUJmO0FhOTZCSTtFQUNFLHFER2tTWTtFSGpTWix1Q0hxSVM7QVYyeUJmO0FhNzZCSTtFQUNFLHlCQUFBO0VBQ0EsNERHdVRtQjtFSHRUbkIsdUNIK0hTO0FWZ3pCZjtBYTU2Qkk7RUFNRSx1QkFBQTtFQUNBLHVESDhIVTtFRzdIVixhQUFBO0FieTZCTjs7QWFyNkJFO0VDY0EsaUJDekNxQjtFRDBDckIsbUJBQUE7RUFDQSx5QkRiSTtFQ2NKLDZCRGZJO0VDZ0JKLHVDSjBHYTtFR2xIWCxvRkFBQTtBYm82Qko7QWMxNUJFO0VBQ0Usd0VKNUZlO0FWdy9CbkI7QWN6NUJFO0VBQ0Usc0VBN0dpQjtFQThHakIsb0lBQ0U7QWQwNUJOO0FjdDVCRTtFQUNFLHdFSmhIZ0I7QVZ3Z0NwQjtBY3I1QkU7O0VBRUUsa0JEL0JFO0FiczdCTjtBYTk2Qkk7RUFDRSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsMkJJckdPO0FqQnFoQ2I7QWE3NkJJO0VBRUUsNkNIeUdlO0FWcTBCckI7QWEzNkJJO0VBQ0Usd0VIMUdjO0FWdWhDcEI7QWExNkJJO0VBTUUseUJBQUE7RUFDQSx1QkFBQTtFQUNBLHVESG9GVTtFR25GVixhQUFBO0FidTZCTjtBYXA2Qkk7RUFDRSxzQ0gwR1M7QVY0ekJmOztBYWw2QkU7RUFDRSxtQkFBQTtFQUNBLHVCQUFBO0VBQ0EsVUFBQTtFQUNBLCtDQUFBO0VBQ0EsZ0RBQUE7RUFDQSxzQkFBQTtBYnE2Qko7QWFuNkJJO0VBQ0UscUJBQUE7QWJxNkJOO0FhbDZCSTtFQUNFLGdCQUFBO0FibzZCTjtBYWo2Qkk7RUFFRSxTQUFBO0FiazZCTjtBYS81Qkk7RUFDRSwrRUFBQTtBYmk2Qk47O0FhMTVCRTtFQUNFLDBCQUFBO0FiNjVCSjs7QWF6NUJFOzs7RUFHRSxxQkFBQTtBYjQ1Qko7O0FhejVCRTtFQUNFLG9FSHBLa0I7QVZna0N0Qjs7QWF6NUJFO0VBQ0UsVUFBQTtBYjQ1Qko7O0FhejVCRTs7RUFJRSxzQ0hrRFc7QVZ3MkJmOztBYXY1QkU7OztFQU9FLGdESG9EcUI7QVZrMkJ6Qjs7QWFuNUJFO0VBQ0UsbUJBQUE7QWJzNUJKOztBYWo1QkU7RUFDRSxtQkFBQTtBYm81Qko7O0FhajVCRTtFQUNFLG9CQUFBO0FibzVCSjs7QWFqNUJFO0VDL0dBLGlCQ3pDcUI7RUQwQ3JCLG1CQUFBO0VBQ0EseUJEZ0hJO0VDL0dKLDJERTZQc0I7RUY1UHRCLHdDSmlHYztBVm02QmhCO0FjbGdDRTtFQUNFLHlERXVSa0I7QWhCNnVCdEI7QWNqZ0NFO0VBQ0Usc0VBN0dpQjtFQThHakIsb0lBQ0U7QWRrZ0NOO0FjOS9CRTtFQUNFLDBERXdQbUI7QWhCd3dCdkI7QWM3L0JFOztFQUVFLGtCRDhGRTtBYmk2Qk47QWE3NUJJO0VBQ0Usd0NIckJVO0FWbzdCaEI7QWE1NUJJO0VDN0hGLGlCQ3pDcUI7RUQwQ3JCLG1CQUFBO0VBQ0EseURFbVF3QjtFRmxReEIsNkJENEhNO0VDM0hOLGtERWlRd0I7QWhCMnhCMUI7QWMxaENFO0VBQ0UseURFdVJrQjtBaEJxd0J0QjtBY3poQ0U7RUFDRSxzRUE3R2lCO0VBOEdqQixvSUFDRTtBZDBoQ047QWN0aENFO0VBQ0UsMERFd1BtQjtBaEJneUJ2QjtBY3JoQ0U7O0VBRUUsa0JENEdJO0FiMjZCUjtBYXY2Qk07RUFDRSxxREdzSmM7RUhySmQsd0NIcENRO0FWNjhCaEI7QWF0NkJNO0VBQ0UsMkRHbUhnQjtFSGxIaEIsd0NIekNRO0FWaTlCaEI7QWFyNkJNO0VBQ0Usc0RHd0hlO0VIdkhmLDBER3VIZTtFSHRIZix3Q0gvQ1E7QVZzOUJoQjtBYXA2Qk07RUFNRSx1QkFBQTtFQUNBLHVESG5EUTtFR29EUixhQUFBO0FiaTZCUjtBYTc1Qkk7RUNuS0YsaUJDekNxQjtFRDBDckIsbUJBQUE7RUFDQSx5QkRvS007RUNuS04sNkJEa0tNO0VDaktOLGtERWlRd0I7RUh4RnBCLG9GQUFBO0FiMjVCTjtBY2xrQ0U7RUFDRSx5REV1UmtCO0FoQjZ5QnRCO0FjamtDRTtFQUNFLHNFQTdHaUI7RUE4R2pCLG9JQUNFO0Fka2tDTjtBYzlqQ0U7RUFDRSwwREV3UG1CO0FoQncwQnZCO0FjN2pDRTs7RUFFRSxrQkRrSkk7QWI2NkJSO0FhcjZCTTtFQUNFLGdCQUFBO0VBQ0EsMkJJclJLO0FqQjRyQ2I7QWFwNkJNO0VBRUUsd0NIbkZRO0FWdy9CaEI7QWFsNkJNO0VBTUUseUJBQUE7RUFDQSx1QkFBQTtFQUNBLHVESHhGUTtFR3lGUixhQUFBO0FiKzVCUjs7QWF6NUJFO0VEaWlCRSxxREFBQTtFQUFBLHdEQUFBO0VBQUEsMERBQUE7RUFBQSw0REFBQTtFQzloQkEscUlBQUE7QWI4NUJKOztBYXA1QkU7RUFDRSxrQkFBQTtBYnU1Qko7O0FhbjVCRTtFQUNFLG1CQUFBO0VBQ0Esb0JBQUE7QWJzNUJKOztBYW41QkU7RUFDRSxzQkFBQTtBYnM1Qko7O0FhbDVCRTtFSzVVQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0VBQ0EsbURSNGFvQjtFUTNhcEIsZ0JBQUE7RUFDQSxvQkFBQTtFTDBVRSxxQkFBQTtBYnk1Qko7QWtCanVDRTtFQUdFLFlBQUE7RUFDQSxlQUFBO0VBQ0EsYUFBQTtBbEJpdUNKO0FrQjl0Q0U7RUFDRSxrQkFBQTtFQUNBLG1FQUFBO0VBQ0EsZ0RSZ2FlO0VRL1pmLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLGlCQUFBO0VBQ0EscUJBQUE7RUFDQSxpREFBQTtBbEJndUNKO0FrQjl0Q0k7RUFWRjtJQVdJLGVBQUE7RWxCaXVDSjtBQUNGO0FtQmh3Q0U7RU5nVkE7SUs1U0Usc0JBQUE7RWxCZ3VDRjtFa0I5dENFO0lBQ0Usa0JBQUE7SUFDQSx5QkFBQTtFbEJndUNKO0FBQ0Y7O0FhbDdCRTtFQUNFLGFBQUE7QWJxN0JKOztBYWw3QkU7RUFDRSxzQkFBQTtBYnE3Qko7O0FhbDdCRTtFQUNFLGlCQUFBO0VBRUEseUJBQUE7QWJvN0JKO0FhbDdCSTtFQUNFLGlFQUFBO0FibzdCTjtBYWo3Qkk7RUFDRSxtQkFBQTtBYm03Qk47O0FhLzZCRTtFQUNFLG1CQUFBO0FiazdCSjs7QWEvNkJFO0VBQ0UsaUVBQUE7QWJrN0JKOztBYS82QkU7RUFDRSxtQkFBQTtBYms3Qko7O0FhLzZCRTtFQUNFLHVFQUFBO0FiazdCSjtBYWg3Qkk7RUFDRSxnQkFBQTtBYms3Qk47O0FhOTZCRTtFQUNFLHdFQUFBO0FiaTdCSjtBYS82Qkk7RUFDRSxnQkFBQTtBYmk3Qk47O0FhNzZCRTtFQUNFLHlCQUFBO0VBQ0EsNkJBQUE7RUFDQSxnQkFBQTtBYmc3Qko7O0FhMzZCRTtFQUNFLDJCSS9ZUztFSmdaVCwwQkloWlM7QWpCOHpDYjs7QW1CajBDRTtFTnVaQTtJTXJaSSxnQkFBQTtJQUNBLDRCQUFBO0VuQm8wQ0o7QUFDRjs7QWE1NkJFO0VBQ0UsZ0VBQUE7QWIrNkJKOztBb0J2ekNBLDBFQUFBO0FBb0JBO0VBQ0UsbUJBQUE7RUFDQSxtQkFBQTtFQUNBLG1CQUFBO0VBQ0EseUJBQUE7RUFDQSwrQkFBQTtFQUNBLG9HQUFBO0VBQ0EsMkdBQUE7QXBCdXlDRjs7QW9CM3hDQSw4REFBQTtBcEI5REE7RUFDRSxtQkFBQTtFQUNBLGtDQUFBO0VBQ0Esb0RBQUE7RUFDQSw4QkFBQTtFQUNBLGFBQUE7RUFDQSxrQkFBQTtBQTYxQ0Y7QUEzMUNFO0VTVUUsNENBQUE7RUFDQSxvQkFBQTtBVG8xQ0o7QVNsMUNJO0VUYkY7SVNjSSxxQkFBQTtFVHExQ0o7QUFDRjtBQS8xQ0U7RVN1QkUsb0RBQUE7RUFDQSxvQkFBQTtBVDIwQ0o7QVN6MENJO0VUMUJGO0lTMkJJLHFCQUFBO0VUNDBDSjtBQUNGO0FBcjJDSTtFQUNFLHdDVXNQVTtBVmluQ2hCO0FBbjJDRTtFQUNFLDRDQUFBO0VBQ0EsdURVZ01ZO0VWL0xaLG1CQUFBO0FBcTJDSjs7QUFoMkNBO0VBQ0Usb0NBQUE7QUFtMkNGO0FBajJDRTtFQUNFLGNBQUE7RUFDQSxpREVmbUI7QUZrM0N2QjtBQWgyQ0U7RUFDRSx1RFVpTFk7QVZpckNoQjtBQS8xQ0U7RUFDRSwyREFBQTtBQWkyQ0o7QUE5MUNFO0VBQ0UsMkRBQUE7QUFnMkNKOztBQXoxQ0U7RUFDRSx1RFVpS1k7QVYyckNoQjtBQXoxQ0U7RUFDRSx1RFU2Slk7QVY4ckNoQjs7QUFsMUNBO0VBQ0U7SUFFRSxtQ0FBQTtFQW8xQ0Y7RUFsMUNBO0lBQ0Usb0NBQUE7RUFvMUNGO0FBQ0Y7QUFqMUNBO0VBQ0U7SUFFRSxrQ0FBQTtFQWsxQ0Y7RUFoMUNBO0lBQ0UsbUNBQUE7RUFrMUNGO0FBQ0Y7QUE5MENBO0VBQ0Usa0JBQUE7RUFDQSxpQmlCdEVXO0VqQnVFWCxnQmlCL0JXO0VqQmdDWCxnQkFBQTtBQWcxQ0Y7QUF2MENBO0VBQ0Usa0JpQm5FVztBakI0NENiOztBQXQwQ0E7RUFDRSxnQmlCNUVXO0FqQnE1Q2I7O0FBdDBDQTtFQUNFLGdCaUJ0RVc7QWpCKzRDYjs7QUFyMENBO0VBQ0UsYUFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSx5QkFBQTtFQUNBLGtCQUFBO0FBdzBDRjs7QUFyMENBO0VBQ0UsZ0JpQjdGVztBakJxNkNiOztBQXIwQ0E7RUFDRSxrQmlCNUZXO0FqQm82Q2I7O0FBcjBDQTtFQUNFLGdCaUIzRlc7QWpCbTZDYjs7QUFyMENBO0VBRUUsZ0JBQUE7RUFDQSxXQUFBO0FBdTBDRjs7QUFwMENBO0VBQ0UsdUJBQUE7QUF1MENGOztBQXAwQ0E7RUFDRSxvQkFBQTtBQXUwQ0Y7O0FBcDBDQTtFQUNFLGFBQUE7RUFDQSxtQkFBQTtFQUNBLHFCQUFBO0FBdTBDRjs7QUFwMENBO0VBQ0UsdURVNERjO0FWMndDaEI7O0FBcDBDQTtFQUNFLGdEQUFBO0VBQ0Esa0JpQmpKVztFakJrSlgsMkJBQUE7RUFDQSxtQkFBQTtFQUNBLGdCQUFBO0FBdTBDRjs7QUFuMENBO0VBQ0U7SUFDRSxVQUFBO0lBQ0Esc0JBQUE7RUFzMENGO0VBbjBDQTtJQUNFLFVBQUE7SUFDQSxtQkFBQTtFQXEwQ0Y7QUFDRjtBQWwwQ0E7RUFDRSw0QkFBQTtBQW8wQ0Y7O0FBaDBDQTs7O0VBR0UsK0JBQUE7QUFtMENGOztBQWgwQ0E7RUFDRSwwRUFBQTtBQW0wQ0Y7QUFqMENFO0VBSEY7SUFJSSxlQUFBO0VBbzBDRjtBQUNGOztBQWowQ0E7RXFCbk1FLDJEQUFBO0VyQnFNQSw4Q1VyS1M7RVZzS1QsZ0JBQUE7RUFDQSx1Q0FBQTtBQW8wQ0Y7O0FBaDBDQTtFQUNFLGtCaUJyTVc7RWpCc01YLHFCaUJ0TVc7RWpCdU1YLGFBQUE7RUFDQSxtQkFBQTtFQUNBLGlCQUFBO0VBQ0EsOEJBQUE7QUFtMENGOztBQWgwQ0E7RU12TkUsc0JBQUE7RUFDQSxVQUFBO0VBQ0EsU0FBQTtFQUNBLFNBQUE7RUFDQSxvQkFBQTtFQUNBLGVBQUE7RUFDQSx3QkFBQTtBTjJoREY7QU16aERFOzs7RUFHRSxtQkFBQTtBTjJoREo7QUE1MENFO0VBQ0UseUJBQUE7RUFDQSxvQkFBQTtBQTgwQ0o7QUEzMENFO0VBQ0Usd0NFL01VO0FGNGhEZDtBQTEwQ0U7RUFDRSxzRFViWTtBVnkxQ2hCO0FBejBDRTtFQUNFLGNBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7QUEyMENKOztBQXYwQ0E7RUFDRSxtREFBQTtBQTAwQ0Y7O0FBdjBDQTtFQUNFLGNpQmhOVztFakJpTlgsYWlCak5XO0FqQjJoRGI7O0FBdjBDQTtFQUNFLFlpQjFOVztFakIyTlgsV2lCM05XO0FqQnFpRGI7O0FBdjBDQTtFQUNFLFlpQnJOVztFakJzTlgsV2lCdE5XO0FqQmdpRGI7O0FBdjBDQTtFTWpRRSxzQkFBQTtFQUNBLFVBQUE7RUFDQSxTQUFBO0VBQ0EsU0FBQTtFQUNBLG9CQUFBO0VBQ0EsZUFBQTtFQUNBLHdCQUFBO0VNaTFCRSw0REFBQTtFQUFBLDJEQUFBO0VBQUEsK0RBQUE7RUFBQSxvRUFBQTtBWit2Qko7QU05a0RFOzs7RUFHRSxtQkFBQTtBTmdsREo7QUF0MUNFO0VBQ0Usa0JpQjVQUztFakI2UFQsMEJpQnZRUztFakJ3UVQsa0JBQUE7QUF3MUNKO0FBcjFDRTtFQUNFLG9CaUJ2UVM7RWpCd1FULHFCaUJ4UVM7QWpCK2xEYjtBQXAxQ0U7RUFDRSxlQUFBO0FBczFDSjtBQXAxQ0k7RU1uUkYsc0JBQUE7RUFDQSxVQUFBO0VBQ0EsU0FBQTtFQUNBLFNBQUE7RUFDQSxvQkFBQTtFQUNBLGVBQUE7RUFDQSx3QkFBQTtFTWkxQkUsNERBQUE7RUFBQSwyREFBQTtFQUFBLCtEQUFBO0VBQUEsb0VBQUE7QVo2eEJKO0FNNW1ERTs7O0VBR0UsbUJBQUE7QU44bURKO0FBbDJDTTtFQUNFLGtDQUFBO0VBQ0EsbUJpQnRQSztFakJ1UEwsZ0JpQnJSSztFakJzUkwsZ0JBQUE7QUFvMkNSO0FBajJDTTtFQUVFLFNBQUE7RUFDQSx3QkFBQTtBQWsyQ1I7QUEvMUNNO0VTL1JGLDRDQUFBO0FUaW9ESjtBUy9uREk7RVQ2UkU7SVM1UkEscUJBQUE7RVRrb0RKO0FBQ0Y7QUFuMkNNO0VTcFFGLG9EQUFBO0VBQ0Esb0JBQUE7QVQwbURKO0FTeG1ESTtFVGlRRTtJU2hRQSxxQkFBQTtFVDJtREo7QUFDRjtBQXgyQ007RUFFRSw4Q1UzUUc7RVY0UUgsdURVeEZRO0VWeUZSLG9CQUFBO0FBeTJDUjtBQXQyQ007RUFDRSx3RVU3RlE7RVY4RlIsMEVVOUZRO0FWczhDaEI7QUFyMkNNO0VBQ0UsVUFBQTtBQXUyQ1I7QUFuMkNJO0VNN1RGLHNCQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7RUFDQSxTQUFBO0VBQ0Esb0JBQUE7RUFDQSxlQUFBO0VBQ0Esd0JBQUE7QU5tcURGO0FNanFERTs7O0VBR0UsbUJBQUE7QU5tcURKO0FBOTJDTTtFQUNFLGVBQUE7RUFDQSxrQkFBQTtBQWczQ1I7QUE1MkNJO0VBQ0UsVUFBQTtBQTgyQ047QUEzMkNJO0VNMVVGLHNCQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7RUFDQSxTQUFBO0VBQ0Esb0JBQUE7RUFDQSxlQUFBO0VBQ0Esd0JBQUE7QU53ckRGO0FNdHJERTs7O0VBR0UsbUJBQUE7QU53ckRKO0FBdDNDTTtFQUNFLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSw4QmlCaFZLO0VqQmlWTCwyQmlCNVVLO0VqQjZVTCxZQUFBO0VBQ0EsZUFBQTtFQUNBLGVBQUE7RUFDQSxvQmlCdFVLO0VqQnVVTCwwQmlCblRLO0VqQm9UTCxnQkFBQTtFQUNBLFVBQUE7QUF3M0NSO0FBcjNDTTtFQUNFLGNBQUE7RUFDQSw0Q0FBQTtFQUNBLDhDQUFBO0VBQ0EsV0FBQTtFQUNBLHNCQUFBO0FBdTNDUjtBQXAzQ007RUFDRSwwRGdCRFM7RWhCRVQsNERnQkZTO0FoQnczQ2pCO0FBbjNDTTtFQUNFLDhEVWhMYTtFVmlMYixnRVVqTGE7QVZzaURyQjtBQWwzQ007RUFDRSxNQUFBO0VBQ0EsT0FBQTtBQW8zQ1I7QUFqM0NNO0VBQ0UsWWlCcFdLO0VqQnFXTCxPQUFBO0FBbTNDUjs7QUEzMkNBO0VBQ0UsWUFBQTtBQTgyQ0Y7QUE1MkNFO0VBR0UsZ0JBQUE7RUFDQSxlQUFBO0FBNDJDSjtBQXoyQ0U7RVlpZEUseURBQUE7RUFBQSx3REFBQTtFQUFBLDREQUFBO0VBQUEsaUVBQUE7RVovY0EsZUFBQTtFQUNBLGtCQUFBO0VBQ0Esc0JBQUE7QUE4MkNKO0FBMzJDRTtFWTBjRSx5REFBQTtFQUFBLHdEQUFBO0VBQUEsNERBQUE7RUFBQSxpRUFBQTtFWnhjQSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxzQkFBQTtBQWczQ0o7QUE5MkNJO0VBQ0UsY0FBQTtBQWczQ047QUE3MkNJO0VBQ0Usd0NFdllRO0FGc3ZEZDtBQTUyQ0k7RUFDRSx5Qm9CMVpZO0VwQjJaWixjb0IvWlU7QXBCNndEaEI7QUEzMkNJO0VBQ0UsdURVMU1VO0VWMk1WLGVBQUE7QUE2MkNOOztBQXgyQ0E7RUFDRSxrQkFBQTtFQUNBLGNvQnZhZ0I7RXBCd2FoQixnQkFBQTtFQUNBLHlEQUFBO0VBQ0EsNERBQUE7RUFDQSxpRUFBQTtFQUNBLGFBQUE7RUFDQSxtQkFBQTtFQUNBLHVCQUFBO0VBQ0Esa0JpQjlZVztFakIrWVgsZUFBQTtFQUNBLG1CaUJoWlc7QWpCMnZEYjtBQXoyQ0U7RUFDRSxrQkFBQTtFQUNBLGNBQUE7RUFDQSxtQmlCbmJTO0VqQm9iVCxXQUFBO0VBQ0Esb0JpQnJiUztFakJzYlQsMEJBQUE7RUFDQSx1QkFBQTtFQUNBLG1DQUFBO0VBQ0EsMkJBQUE7QUEyMkNKO0FBeDJDRTtFQUNFLGtFVTNPWTtBVnFsRGhCO0FBdjJDRTtFQUNFLDJFQUFBO0FBeTJDSjs7QUFuMkNFO0VBQ0UsbUJBQUE7RUFDQSxzQmlCL2JTO0FqQnF5RGI7QUFuMkNFO0VBQ0UsZ0JBQUE7QUFxMkNKO0FBaDJDTTtFQUNFLHNCaUJuZEs7QWpCcXpEYjtBQTcxQ007RUFDRSxNQUFBO0VBQ0EsV0FBQTtFQUNBLFFBQUE7QUErMUNSO0FBNTFDTTtFQUNFLFlpQnJkSztFakJzZEwsV0FBQTtFQUNBLFFBQUE7QUE4MUNSXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi8vXFxuLy8gQ29weXJpZ2h0IElCTSBDb3JwLiAyMDIzXFxuLy9cXG4vLyBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUtMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuLy8gTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbi8vXFxuXFxuQHVzZSAnc2FzczptYXAnO1xcbkB1c2UgJ3Nhc3M6bGlzdCc7XFxuXFxuQHVzZSAnLi9jb25maWcnIGFzICo7XFxuQHVzZSAnLi91dGlsaXRpZXMvY3VzdG9tLXByb3BlcnR5JztcXG5AdXNlICcuL3V0aWxpdGllcy9jb252ZXJ0JztcXG5AdXNlICcuL3NwYWNpbmcnIGFzICo7XFxuXFxuJGxheW91dC10b2tlbnM6IChcXG4gIHNpemU6IChcXG4gICAgaGVpZ2h0OiAoXFxuICAgICAgeHM6IGNvbnZlcnQudG8tcmVtKDI0cHgpLFxcbiAgICAgIHNtOiBjb252ZXJ0LnRvLXJlbSgzMnB4KSxcXG4gICAgICBtZDogY29udmVydC50by1yZW0oNDBweCksXFxuICAgICAgbGc6IGNvbnZlcnQudG8tcmVtKDQ4cHgpLFxcbiAgICAgIHhsOiBjb252ZXJ0LnRvLXJlbSg2NHB4KSxcXG4gICAgICAyeGw6IGNvbnZlcnQudG8tcmVtKDgwcHgpLFxcbiAgICApLFxcbiAgKSxcXG4gIGRlbnNpdHk6IChcXG4gICAgcGFkZGluZy1pbmxpbmU6IChcXG4gICAgICBjb25kZW5zZWQ6ICRzcGFjaW5nLTAzLFxcbiAgICAgIG5vcm1hbDogJHNwYWNpbmctMDUsXFxuICAgICksXFxuICApLFxcbik7XFxuXFxuQG1peGluIGVtaXQtbGF5b3V0LXRva2VucyB7XFxuICBAZWFjaCAkZ3JvdXAsICRwcm9wZXJ0aWVzIGluICRsYXlvdXQtdG9rZW5zIHtcXG4gICAgQGVhY2ggJHByb3BlcnR5LCAkc3RlcHMgaW4gJHByb3BlcnRpZXMge1xcbiAgICAgIEBlYWNoICRzdGVwLCAkdmFsdWUgaW4gJHN0ZXBzIHtcXG4gICAgICAgIEBpbmNsdWRlIGN1c3RvbS1wcm9wZXJ0eS5kZWNsYXJhdGlvbihcXG4gICAgICAgICAgJ2xheW91dC0jeyRncm91cH0tI3skcHJvcGVydHl9LSN7JHN0ZXB9JyxcXG4gICAgICAgICAgJHZhbHVlXFxuICAgICAgICApO1xcbiAgICAgIH1cXG5cXG4gICAgICAvLyBDU1MgbWF4KCkgZG9lc24ndCBhY2NlcHQgJzAnIGFzIGEgdmFsdWUgd2l0aG91dCBhIHVuaXRcXG4gICAgICAvLyBzdHlsZWxpbnQtZGlzYWJsZSBsZW5ndGgtemVyby1uby11bml0XFxuICAgICAgQGluY2x1ZGUgY3VzdG9tLXByb3BlcnR5LmRlY2xhcmF0aW9uKFxcbiAgICAgICAgJ2xheW91dC0jeyRncm91cH0tI3skcHJvcGVydHl9LW1pbicsXFxuICAgICAgICAwcHhcXG4gICAgICApO1xcbiAgICAgIC8vIHN0eWxlbGludC1lbmFibGUgbGVuZ3RoLXplcm8tbm8tdW5pdFxcblxcbiAgICAgIEBpbmNsdWRlIGN1c3RvbS1wcm9wZXJ0eS5kZWNsYXJhdGlvbihcXG4gICAgICAgICdsYXlvdXQtI3skZ3JvdXB9LSN7JHByb3BlcnR5fS1tYXgnLFxcbiAgICAgICAgOTk5OTk5OTk5cHhcXG4gICAgICApO1xcbiAgICB9XFxuICB9XFxufVxcblxcbkBlYWNoICRncm91cCwgJHByb3BlcnRpZXMgaW4gJGxheW91dC10b2tlbnMge1xcbiAgQGVhY2ggJHByb3BlcnR5LCAkc3RlcHMgaW4gJHByb3BlcnRpZXMge1xcbiAgICBAZWFjaCAkc3RlcCwgJHZhbHVlIGluICRzdGVwcyB7XFxuICAgICAgLiN7JHByZWZpeH0tLWxheW91dC0tI3skZ3JvdXB9LSN7JHN0ZXB9IHtcXG4gICAgICAgIEBpbmNsdWRlIGN1c3RvbS1wcm9wZXJ0eS5kZWNsYXJhdGlvbihcXG4gICAgICAgICAgJ2xheW91dC0jeyRncm91cH0tI3skcHJvcGVydHl9LWNvbnRleHQnLFxcbiAgICAgICAgICBjdXN0b20tcHJvcGVydHkuZ2V0LXZhcihcXG4gICAgICAgICAgICAnbGF5b3V0LSN7JGdyb3VwfS0jeyRwcm9wZXJ0eX0tI3skc3RlcH0nLFxcbiAgICAgICAgICAgICR2YWx1ZVxcbiAgICAgICAgICApXFxuICAgICAgICApO1xcbiAgICAgICAgQGluY2x1ZGUgY3VzdG9tLXByb3BlcnR5LmRlY2xhcmF0aW9uKFxcbiAgICAgICAgICAnbGF5b3V0LSN7JGdyb3VwfS0jeyRwcm9wZXJ0eX0nLFxcbiAgICAgICAgICBjdXN0b20tcHJvcGVydHkuZ2V0LXZhcignbGF5b3V0LSN7JGdyb3VwfS0jeyRwcm9wZXJ0eX0tY29udGV4dCcpXFxuICAgICAgICApO1xcbiAgICAgIH1cXG5cXG4gICAgICAuI3skcHJlZml4fS0tbGF5b3V0LWNvbnN0cmFpbnQtLSN7JGdyb3VwfV9fZGVmYXVsdC0jeyRzdGVwfSB7XFxuICAgICAgICBAaW5jbHVkZSBjdXN0b20tcHJvcGVydHkuZGVjbGFyYXRpb24oXFxuICAgICAgICAgICdsYXlvdXQtI3skZ3JvdXB9LSN7JHByb3BlcnR5fScsXFxuICAgICAgICAgIGN1c3RvbS1wcm9wZXJ0eS5nZXQtdmFyKFxcbiAgICAgICAgICAgICdsYXlvdXQtI3skZ3JvdXB9LSN7JHByb3BlcnR5fS1jb250ZXh0JyxcXG4gICAgICAgICAgICBjdXN0b20tcHJvcGVydHkuZ2V0LXZhcihcXG4gICAgICAgICAgICAgICdsYXlvdXQtI3skZ3JvdXB9LSN7JHByb3BlcnR5fS0jeyRzdGVwfScsXFxuICAgICAgICAgICAgICAkdmFsdWVcXG4gICAgICAgICAgICApXFxuICAgICAgICAgIClcXG4gICAgICAgICk7XFxuICAgICAgfVxcblxcbiAgICAgIEBlYWNoICRjb25zdHJhaW50IGluICgnbWluJywgJ21heCcpIHtcXG4gICAgICAgIC4jeyRwcmVmaXh9LS1sYXlvdXQtY29uc3RyYWludC0tI3skZ3JvdXB9X18jeyRjb25zdHJhaW50fS0jeyRzdGVwfSB7XFxuICAgICAgICAgIEBpbmNsdWRlIGN1c3RvbS1wcm9wZXJ0eS5kZWNsYXJhdGlvbihcXG4gICAgICAgICAgICAnbGF5b3V0LSN7JGdyb3VwfS0jeyRwcm9wZXJ0eX0tI3skY29uc3RyYWludH0nLFxcbiAgICAgICAgICAgIGN1c3RvbS1wcm9wZXJ0eS5nZXQtdmFyKFxcbiAgICAgICAgICAgICAgJ2xheW91dC0jeyRncm91cH0tI3skcHJvcGVydHl9LSN7JHN0ZXB9JyxcXG4gICAgICAgICAgICAgICR2YWx1ZVxcbiAgICAgICAgICAgIClcXG4gICAgICAgICAgKTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuOnJvb3Qge1xcbiAgQGluY2x1ZGUgZW1pdC1sYXlvdXQtdG9rZW5zKCk7XFxufVxcblwiLFwiLy9cXG4vLyBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMTgsIDIwMjNcXG4vL1xcbi8vIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZS0yLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4vLyBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuLy9cXG5cXG5AdXNlICcuLi9jb25maWcnO1xcblxcbi8vIFNvbWUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSB0ZXJtaW5vbG9neVxcbi8vIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy12YXJpYWJsZXMtMS9cXG4vL1xcbi8vIDxjdXN0b20tcHJvcGVydHktbmFtZT46XFxuLy8gICBBbnkgdmFsaWQgaWRlbnRpZmVyIHRoYXQgc3RhcnRzIHdpdGggdHdvIGRhc2hlcyAoLS0pXFxuLy9cXG4vLyBBIGRlY2xhcmF0aW9uOlxcbi8vICAgQ1NTIEN1c3RvbSBQcm9wZXJ0aWVzIGNhbiBiZSB1c2VkIGFzIGRlY2xhcmF0aW9ucyBpbiBhIENTUyBzZWxlY3Rvci4gVGhleVxcbi8vICAgdGFrZSBvbiB0aGUgZm9ybSBvZjpcXG4vL1xcbi8vICAgPGN1c3RvbS1wcm9wZXJ0eS1uYW1lPjogPGRlY2xhcmF0aW9uLXZhbHVlPjtcXG4vL1xcbi8vIFRoZSB2YXIoKSBub3RhdGlvbjpcXG4vLyAgIFlvdSBjYW4gdXNlIGEgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBhcyBhIHN1YnN0aXR1dGUgZm9yIGEgdmFsdWUgb2YgYW5vdGhlclxcbi8vICAgcHJvcGVydHkgdXNpbmcgdGhlIHZhcigpIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIGhhcyB0aGUgZm9sbG93aW5nIHN5bnRheDpcXG4vL1xcbi8vICAgdmFyKCA8Y3VzdG9tLXByb3BlcnR5LW5hbWU+IFssIDxkZWNsYXJhdGl2ZS12YWx1ZT4gXT8gKVxcbi8vXFxuLy8gICBUaGlzIGZ1bmN0aW9uIHRha2VzIGluIGFuIG9wdGlvbmFsIGZhbGxiYWNrIHZhbHVlIGlmIHRoZSBDU1MgQ3VzdG9tXFxuLy8gICBQcm9wZXJ0eSBoYXMgbm90IGJlZW4gcHJldmlvdXNseSBkZWZpbmVkXFxuXFxuLy8vIEdldCB0aGUgPGN1c3RvbS1wcm9wZXJ0eS1uYW1lPiBmb3IgYSBnaXZlbiBzdHJpbmdcXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lXFxuLy8vIEByZXR1cm5zIHtTdHJpbmd9XFxuQGZ1bmN0aW9uIGdldC1uYW1lKCRuYW1lKSB7XFxuICBAcmV0dXJuIC0tI3tjb25maWcuJHByZWZpeH0tI3skbmFtZX07XFxufVxcblxcbi8vLyBHZXQgdGhlIHZhcigpIHJlcHJlc2VudGF0aW9uIGZvciBhIGdpdmVuIHRva2VuXFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZVxcbi8vLyBAcGFyYW0ge0FueX0gJGZhbGxiYWNrXFxuLy8vIEByZXR1cm5zIHZhcigpXFxuQGZ1bmN0aW9uIGdldC12YXIoJG5hbWUsICRmYWxsYmFjazogZmFsc2UpIHtcXG4gIEBpZiAkZmFsbGJhY2sge1xcbiAgICBAcmV0dXJuIHZhcigtLSN7Y29uZmlnLiRwcmVmaXh9LSN7JG5hbWV9LCAjeyRmYWxsYmFja30pO1xcbiAgfVxcbiAgQHJldHVybiB2YXIoLS0je2NvbmZpZy4kcHJlZml4fS0jeyRuYW1lfSk7XFxufVxcblxcbi8vLyBFbWl0IGEgZGVjbGFyYXRpb24gd2hpY2ggc2V0cyB0aGUgdmFsdWUgb2YgYSBDU1MgQ3VzdG9tIFByb3BlcnR5IHVzaW5nIHRoZVxcbi8vLyAkbmFtZSBhcyB0aGUgPGN1c3RvbS1wcm9wZXJ0eS1uYW1lPiBhbmQgdGhlICR2YWx1ZSBhcyB0aGVcXG4vLy8gPGRlY2xhcmF0aW9uLXZhbHVlPlxcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWVcXG4vLy8gQHBhcmFtIHthbnl9ICR2YWx1ZVxcbkBtaXhpbiBkZWNsYXJhdGlvbigkbmFtZSwgJHZhbHVlKSB7XFxuICAje2dldC1uYW1lKCRuYW1lKX06ICN7JHZhbHVlfTtcXG59XFxuXCIsXCJAdXNlICdAY2FyYm9uL3N0eWxlcy9zY3NzL21vdGlvbic7XFxuQHVzZSAnQGNhcmJvbi9sYXlvdXQnO1xcbkB1c2UgJ0BjYXJib24vc3R5bGVzL3Njc3MvdGhlbWUnO1xcbkB1c2UgJ0BjYXJib24vdHlwZSc7XFxuQHVzZSAnQGNhcmJvbi9zdHlsZXMvc2Nzcy9jb21wb25lbnRzL2J1dHRvbic7XFxuQHVzZSAnQGNhcmJvbi9zdHlsZXMvc2Nzcy91dGlsaXRpZXMvYm94LXNoYWRvdyc7XFxuQHVzZSAnQGNhcmJvbi9zdHlsZXMvc2Nzcy91dGlsaXRpZXMvY29tcG9uZW50LXJlc2V0JztcXG5AdXNlICdAY2FyYm9uL3N0eWxlcy9zY3NzL3V0aWxpdGllcy9mb2N1cy1vdXRsaW5lJyBhcyBmb2N1cztcXG5AdXNlICcuLi92YXJzJyBhcyAqO1xcblxcbi8vIFRleHQgZmllbGQgZm9yIGRhdGVzXFxuLmlucHV0R3JvdXAge1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNkcy1maWVsZCk7XFxuICBib3JkZXItYmxvY2stZW5kOiAxcHggc29saWQgdmFyKC0tY2RzLWJvcmRlci1zdHJvbmcpO1xcbiAgY29sb3I6IHZhcigtLWNkcy10ZXh0LXByaW1hcnkpO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXG4gICY6Zm9jdXMtd2l0aGluLFxcbiAgJi5jZHMtLWZvY3VzZWQge1xcbiAgICBAaW5jbHVkZSBmb2N1cy5mb2N1cy1vdXRsaW5lKCdvdXRsaW5lJyk7XFxuICB9XFxuXFxuICAmW2RhdGEtaW52YWxpZF0ge1xcbiAgICBAaW5jbHVkZSBmb2N1cy5mb2N1cy1vdXRsaW5lKCdpbnZhbGlkJyk7XFxuXFxuICAgICYge1xcbiAgICAgIGNvbG9yOiB0aGVtZS4kc3VwcG9ydC1lcnJvcjtcXG4gICAgfVxcbiAgfVxcblxcbiAgJltkYXRhLWRpc2FibGVkXSB7XFxuICAgIGJvcmRlci1ibG9jay1lbmQ6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDApO1xcbiAgICBjb2xvcjogdGhlbWUuJHRleHQtZGlzYWJsZWQ7XFxuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxuICB9XFxufVxcblxcbi8vIFNoYXJlZCBzZWdtZW50IHN0eWxlcyB1c2VkIGJ5IGJvdGggc2luZ2xlIGFuZCByYW5nZSBpbnB1dHNcXG4laW5wdXRTZWdtZW50U3R5bGVzIHtcXG4gIGNhcmV0LWNvbG9yOiB2YXIoLS1jZHMtdGV4dC1wcmltYXJ5KTtcXG5cXG4gICY6Zm9jdXMge1xcbiAgICBvdXRsaW5lOiB1bnNldDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWUuJGxheWVyLXNlbGVjdGVkLWhvdmVyO1xcbiAgfVxcblxcbiAgJltkYXRhLXBsYWNlaG9sZGVyXSB7XFxuICAgIGNvbG9yOiB0aGVtZS4kdGV4dC1kaXNhYmxlZDtcXG4gIH1cXG5cXG4gICZbZGF0YS1mb2N1c2VkPSd0cnVlJ10ge1xcbiAgICBhbmltYXRpb246IGN1cnNvci1ibGluayAxcyBzdGVwLWVuZCBpbmZpbml0ZTtcXG4gIH1cXG5cXG4gIDpnbG9iYWwoW2Rpcj0ncnRsJ10pICZbZGF0YS1mb2N1c2VkPSd0cnVlJ10ge1xcbiAgICBhbmltYXRpb246IGN1cnNvci1ibGluay1ydGwgMXMgc3RlcC1lbmQgaW5maW5pdGU7XFxuICB9XFxufVxcblxcbi8vIFNoYXJlZCBydWxlcyBmb3IgZGltbWluZyByZWFkLW9ubHkgc2VwYXJhdG9ycyAoLywgLSwgZXRjLikgYWRqYWNlbnQgdG9cXG4vLyB1bmZpbGxlZCBwbGFjZWhvbGRlcnMgc28gdGhleSBkb24ndCBsb29rIFxcXCJhY3RpdmVcXFwiIGJlZm9yZSB0aGUgdXNlciBzdGFydHMgdHlwaW5nLlxcbiVyZWFkb25seVBsYWNlaG9sZGVyRGltbWluZyB7XFxuICBbZGF0YS1yZWFkb25seV06aGFzKCsgW2RhdGEtcGxhY2Vob2xkZXJdKSB7XFxuICAgIGNvbG9yOiB0aGVtZS4kdGV4dC1kaXNhYmxlZDtcXG4gIH1cXG5cXG4gIFtkYXRhLXBsYWNlaG9sZGVyXSArIFtkYXRhLXJlYWRvbmx5XSB7XFxuICAgIGNvbG9yOiB0aGVtZS4kdGV4dC1kaXNhYmxlZDtcXG4gIH1cXG59XFxuXFxuLy8gVXNlIHBoeXNpY2FsIGBib3JkZXItcmlnaHRgL2Bib3JkZXItbGVmdGAgcmF0aGVyIHRoYW4gbG9naWNhbCBgYm9yZGVyLWlubGluZS1lbmRgOlxcbi8vIGEgUG9zdENTUyBwbHVnaW4gaW4gdGhlIGJ1aWxkIHBpcGVsaW5lIGluY29ycmVjdGx5IGhvaXN0cyBgYm9yZGVyLWlubGluZS1lbmRgXFxuLy8gb3V0IG9mIEBrZXlmcmFtZXMgYW5kIHJlLWVtaXRzIGl0IGFzIGEgc3RhdGljIGBib3JkZXItcmlnaHRgIG9uIHNlbGVjdG9ycyB0aGF0XFxuLy8gcmVmZXJlbmNlIHRoZSBhbmltYXRpb24sIHdoaWNoIHByb2R1Y2VkIGEgcGVybWFuZW50IHZlcnRpY2FsIGxpbmUgb24gdGhlXFxuLy8gZGF0ZSBpbnB1dCB3cmFwcGVycyBpbiBMVFIgY29udGV4dHMuXFxuQGtleWZyYW1lcyBjdXJzb3ItYmxpbmsge1xcbiAgZnJvbSxcXG4gIHRvIHtcXG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICB9XFxuICA1MCUge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBjdXJyZW50Q29sb3I7XFxuICB9XFxufVxcblxcbkBrZXlmcmFtZXMgY3Vyc29yLWJsaW5rLXJ0bCB7XFxuICBmcm9tLFxcbiAgdG8ge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgfVxcbiAgNTAlIHtcXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCBjdXJyZW50Q29sb3I7XFxuICB9XFxufVxcblxcbi8vIFNpbmdsZSBkYXRlIHBpY2tlciBpbnB1dFxcbi5pbnB1dFdyYXBwZXIge1xcbiAgaW5saW5lLXNpemU6IDE1cmVtO1xcbiAgbWFyZ2luLWxlZnQ6IGxheW91dC4kc3BhY2luZy0wNTtcXG4gIG1pbi13aWR0aDogbGF5b3V0LiRzcGFjaW5nLTEzO1xcbiAgbWF4LXdpZHRoOiAxNXJlbTtcXG5cXG4gICYgLmlucHV0U2VnbWVudCB7XFxuICAgIEBleHRlbmQgJWlucHV0U2VnbWVudFN0eWxlcztcXG4gIH1cXG5cXG4gIEBleHRlbmQgJXJlYWRvbmx5UGxhY2Vob2xkZXJEaW1taW5nO1xcbn1cXG5cXG4uaW5wdXRXcmFwcGVyTWQge1xcbiAgYmxvY2stc2l6ZTogbGF5b3V0LiRzcGFjaW5nLTA4O1xcbn1cXG5cXG4uaW5wdXRXcmFwcGVyU20ge1xcbiAgYmxvY2stc2l6ZTogbGF5b3V0LiRzcGFjaW5nLTA3O1xcbn1cXG5cXG4uaW5wdXRXcmFwcGVyTGcge1xcbiAgYmxvY2stc2l6ZTogbGF5b3V0LiRzcGFjaW5nLTA5O1xcbn1cXG5cXG4vLyBSYW5nZSBkYXRlIHBpY2tlciBpbnB1dHNcXG4uaW5wdXRzV3JhcHBlciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgbWluLXdpZHRoOiAxMHJlbTtcXG4gIG1heC13aWR0aDogMTVyZW07XFxuICBtYXJnaW4taW5saW5lLXN0YXJ0OiAxcmVtO1xcbiAgaW5saW5lLXNpemU6IDE1cmVtO1xcbn1cXG5cXG4uaW5wdXRzV3JhcHBlclNtIHtcXG4gIGJsb2NrLXNpemU6IGxheW91dC4kc3BhY2luZy0wNztcXG59XFxuXFxuLmlucHV0c1dyYXBwZXJNZCB7XFxuICBibG9jay1zaXplOiBsYXlvdXQuJHNwYWNpbmctMDg7XFxufVxcblxcbi5pbnB1dHNXcmFwcGVyTGcge1xcbiAgYmxvY2stc2l6ZTogbGF5b3V0LiRzcGFjaW5nLTA5O1xcbn1cXG5cXG4uZGF0ZUlucHV0V3JhcHBlciB7XFxuICBAZXh0ZW5kIC5pbnB1dFdyYXBwZXI7XFxuICBtaW4td2lkdGg6IHVuc2V0O1xcbiAgbWFyZ2luOiAwcHg7XFxufVxcblxcbi5zdGFydElucHV0IHtcXG4gIGZsZXgtYmFzaXM6IGZpdC1jb250ZW50O1xcbn1cXG5cXG4uZW5kSW5wdXQge1xcbiAgcGFkZGluZy1yaWdodDogdW5zZXQ7XFxufVxcblxcbi5zZXBhcmF0b3Ige1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBtYXJnaW4taW5saW5lOiAwLjVyZW07XFxufVxcblxcbi5pbnB1dEdyb3VwOmhhcyhbZGF0YS1wbGFjZWhvbGRlcl0pID4gLmlucHV0c1dyYXBwZXIgPiAuc2VwYXJhdG9yID4gc3BhbiB7XFxuICBjb2xvcjogdGhlbWUuJHRleHQtZGlzYWJsZWQ7XFxufVxcblxcbi5pbnZhbGlkVGV4dCB7XFxuICBjb2xvcjogdGhlbWUuJHRleHQtZXJyb3IgIWltcG9ydGFudDtcXG4gIGZvbnQtc2l6ZTogbGF5b3V0LiRzcGFjaW5nLTA0O1xcbiAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50O1xcbiAgbWFyZ2luOiBsYXlvdXQuJHNwYWNpbmctMDIgMCAwO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuXFxuLy8gVXNlZCBmb3IgY2FsZW5kYXIgcG9wLW92ZXJcXG5Aa2V5ZnJhbWVzIGV4cGFuZC1pbiB7XFxuICBmcm9tIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkzKTtcXG4gIH1cXG5cXG4gIHRvIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcXG4gIH1cXG59XFxuXFxuLnBvcG92ZXIge1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcjtcXG59XFxuXFxuLy8gV2hlbiB0aGUgcG9wb3ZlciBmbGlwcyBhYm92ZSB0aGUgdHJpZ2dlciAobmVhciBib3R0b20gb2Ygdmlld3BvcnQpLCBhbmNob3IgZnJvbSB0aGUgYm90dG9tXFxuLnBvcG92ZXJbZGF0YS1wbGFjZW1lbnQ9J3RvcCddLFxcbi5wb3BvdmVyW2RhdGEtcGxhY2VtZW50PSd0b3Atc3RhcnQnXSxcXG4ucG9wb3ZlcltkYXRhLXBsYWNlbWVudD0ndG9wLWVuZCddIHtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSBjZW50ZXI7XFxufVxcblxcbi5wb3BvdmVyW2RhdGEtZW50ZXJpbmddIHtcXG4gIGFuaW1hdGlvbjogZXhwYW5kLWluIG1vdGlvbi4kZHVyYXRpb24tZmFzdC0wMiBtb3Rpb24ubW90aW9uKGVudHJhbmNlLCBwcm9kdWN0aXZlKTtcXG5cXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcXG4gICAgYW5pbWF0aW9uOiBub25lO1xcbiAgfVxcbn1cXG5cXG4uZGlhbG9nIHtcXG4gIEBpbmNsdWRlIGJveC1zaGFkb3cuYm94LXNoYWRvdztcXG4gIGJhY2tncm91bmQtY29sb3I6IHRoZW1lLiRsYXllci0wMTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwYWRkaW5nOiBsYXlvdXQuJHNwYWNpbmctMDIgbGF5b3V0LiRzcGFjaW5nLTAyIGxheW91dC4kc3BhY2luZy0wMyBsYXlvdXQuJHNwYWNpbmctMDI7XFxufVxcblxcbi8vIE5hdmlnYXRpb24gaGVhZGVyIChwcmV2L25leHQgYnV0dG9ucyArIG1vbnRoL3llYXIgZGlzcGxheSlcXG4uaGVhZGVyIHtcXG4gIG1hcmdpbi10b3A6IGxheW91dC4kc3BhY2luZy0wMztcXG4gIG1hcmdpbi1ib3R0b206IGxheW91dC4kc3BhY2luZy0wMztcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgZmxleC13cmFwOiBub3dyYXA7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxufVxcblxcbi5mbGF0QnV0dG9uIHtcXG4gIEBpbmNsdWRlIGNvbXBvbmVudC1yZXNldC5yZXNldDtcXG5cXG4gICYge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIH1cXG5cXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZS4kbGF5ZXItaG92ZXI7XFxuICB9XFxuXFxuICAmOmRpc2FibGVkID4gc3ZnIHtcXG4gICAgZmlsbDogdGhlbWUuJHRleHQtZGlzYWJsZWQ7XFxuICB9XFxuXFxuICAmID4gc3ZnIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIG1hcmdpbjogYXV0bztcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgfVxcbn1cXG5cXG5bZGF0YS1pbnZhbGlkXSA+IC5mbGF0QnV0dG9uID4gc3ZnIHtcXG4gIC0tb21ycy1pY29uLWZpbGw6ICN7dGhlbWUuJHN1cHBvcnQtZXJyb3J9O1xcbn1cXG5cXG4uZmxhdEJ1dHRvbk1kIHtcXG4gIGhlaWdodDogbGF5b3V0LiRzcGFjaW5nLTA4O1xcbiAgd2lkdGg6IGxheW91dC4kc3BhY2luZy0wODtcXG59XFxuXFxuLmZsYXRCdXR0b25TbSB7XFxuICBoZWlnaHQ6IGxheW91dC4kc3BhY2luZy0wNztcXG4gIHdpZHRoOiBsYXlvdXQuJHNwYWNpbmctMDc7XFxufVxcblxcbi5mbGF0QnV0dG9uTGcge1xcbiAgaGVpZ2h0OiBsYXlvdXQuJHNwYWNpbmctMDk7XFxuICB3aWR0aDogbGF5b3V0LiRzcGFjaW5nLTA5O1xcbn1cXG5cXG4ubW9udGhZZWFyIHtcXG4gIEBpbmNsdWRlIGNvbXBvbmVudC1yZXNldC5yZXNldDtcXG4gIEBpbmNsdWRlIHR5cGUudHlwZS1zdHlsZSgnaGVhZGluZy1jb21wYWN0LTAxJyk7XFxuXFxuICAmIHtcXG4gICAgbWFyZ2luLXRvcDogbGF5b3V0LiRzcGFjaW5nLTAzO1xcbiAgICBtYXJnaW4tYmxvY2stZW5kOiBsYXlvdXQuJHNwYWNpbmctMDE7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIH1cXG5cXG4gICYgPiBzcGFuIHtcXG4gICAgbWFyZ2luLWxlZnQ6IGxheW91dC4kc3BhY2luZy0wMjtcXG4gICAgbWFyZ2luLXJpZ2h0OiBsYXlvdXQuJHNwYWNpbmctMDI7XFxuICB9XFxuXFxuICAmIGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPSdudW1lcmljJ10pIHtcXG4gICAgZGlzcGxheTogaW5saW5lO1xcblxcbiAgICAmID4gaW5wdXRbaW5wdXRtb2RlPSdudW1lcmljJ10ge1xcbiAgICAgIEBpbmNsdWRlIGNvbXBvbmVudC1yZXNldC5yZXNldDtcXG4gICAgICBAaW5jbHVkZSB0eXBlLnR5cGUtc3R5bGUoJ2hlYWRpbmctY29tcGFjdC0wMScpO1xcblxcbiAgICAgICYge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWZpZWxkKTtcXG4gICAgICAgIGlubGluZS1zaXplOiBsYXlvdXQuJHNwYWNpbmctMDg7XFxuICAgICAgICBwYWRkaW5nOiBsYXlvdXQuJHNwYWNpbmctMDI7XFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xcbiAgICAgIH1cXG5cXG4gICAgICAmOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLFxcbiAgICAgICY6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ge1xcbiAgICAgICAgbWFyZ2luOiAwO1xcbiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbiAgICAgIH1cXG5cXG4gICAgICAmOmZvY3VzIHtcXG4gICAgICAgIEBpbmNsdWRlIGZvY3VzLmZvY3VzLW91dGxpbmUoJ2JvcmRlcicpO1xcbiAgICAgIH1cXG5cXG4gICAgICAmW2RhdGEtaW52YWxpZF0ge1xcbiAgICAgICAgQGluY2x1ZGUgZm9jdXMuZm9jdXMtb3V0bGluZSgnaW52YWxpZCcpO1xcbiAgICAgIH1cXG5cXG4gICAgICAmW2RhdGEtZGlzYWJsZWRdLFxcbiAgICAgICZbZGF0YS1kaXNhYmxlZF06aG92ZXIge1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWUuJGxheWVyLTAxO1xcbiAgICAgICAgY29sb3I6IHRoZW1lLiR0ZXh0LWRpc2FibGVkO1xcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICAgICAgfVxcblxcbiAgICAgICZbZGF0YS1kaXNhYmxlZF0gKyBkaXYgPiBidXR0b246OmFmdGVyIHtcXG4gICAgICAgIGJvcmRlci1ibG9jay1lbmQtY29sb3I6IHRoZW1lLiR0ZXh0LWRpc2FibGVkO1xcbiAgICAgICAgYm9yZGVyLWJsb2NrLXN0YXJ0LWNvbG9yOiB0aGVtZS4kdGV4dC1kaXNhYmxlZDtcXG4gICAgICB9XFxuXFxuICAgICAgJltkYXRhLWRpc2FibGVkXSArIGRpdiA+IGJ1dHRvbjpob3ZlciB7XFxuICAgICAgICBvcGFjaXR5OiAwO1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmIGRpdltyb2xlPSdncm91cCddIHtcXG4gICAgICBAaW5jbHVkZSBjb21wb25lbnQtcmVzZXQucmVzZXQ7XFxuXFxuICAgICAgJiB7XFxuICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XFxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgICY6aG92ZXIgYnV0dG9uIHtcXG4gICAgICBvcGFjaXR5OiAxO1xcbiAgICB9XFxuXFxuICAgICYgYnV0dG9uIHtcXG4gICAgICBAaW5jbHVkZSBjb21wb25lbnQtcmVzZXQucmVzZXQ7XFxuXFxuICAgICAgJiB7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICBwYWRkaW5nLWJsb2NrOiAwO1xcbiAgICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IGxheW91dC4kc3BhY2luZy0wMTtcXG4gICAgICAgIHBhZGRpbmctaW5saW5lLWVuZDogbGF5b3V0LiRzcGFjaW5nLTAyO1xcbiAgICAgICAgYm9yZGVyOiBub25lO1xcbiAgICAgICAgYmxvY2stc2l6ZTogNTAlO1xcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICAgICAgaW5saW5lLXNpemU6IGxheW91dC4kc3BhY2luZy0wNDtcXG4gICAgICAgIGluc2V0LWlubGluZS1zdGFydDogbGF5b3V0LiRzcGFjaW5nLTA4O1xcbiAgICAgICAgbGluZS1oZWlnaHQ6IDUwJTtcXG4gICAgICAgIG9wYWNpdHk6IDA7XFxuICAgICAgfVxcblxcbiAgICAgICY6OmFmdGVyIHtcXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgICAgYm9yZGVyLWlubGluZS1lbmQ6IGxheW91dC4kc3BhY2luZy0wMiBzb2xpZCB0cmFuc3BhcmVudDtcXG4gICAgICAgIGJvcmRlci1pbmxpbmUtc3RhcnQ6IGxheW91dC4kc3BhY2luZy0wMiBzb2xpZCB0cmFuc3BhcmVudDtcXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDMzJTtcXG4gICAgICB9XFxuXFxuICAgICAgJjpob3Zlcjo6YWZ0ZXIge1xcbiAgICAgICAgYm9yZGVyLWJsb2NrLWVuZC1jb2xvcjogYnV0dG9uLiRidXR0b24tcHJpbWFyeTtcXG4gICAgICAgIGJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogYnV0dG9uLiRidXR0b24tcHJpbWFyeTtcXG4gICAgICB9XFxuXFxuICAgICAgJjphY3RpdmU6OmFmdGVyIHtcXG4gICAgICAgIGJvcmRlci1ibG9jay1lbmQtY29sb3I6IHRoZW1lLiRib3JkZXItaW50ZXJhY3RpdmU7XFxuICAgICAgICBib3JkZXItYmxvY2stc3RhcnQtY29sb3I6IHRoZW1lLiRib3JkZXItaW50ZXJhY3RpdmU7XFxuICAgICAgfVxcblxcbiAgICAgICZbc2xvdD0naW5jcmVtZW50J10ge1xcbiAgICAgICAgdG9wOiAwO1xcbiAgICAgICAgbGVmdDogMDtcXG4gICAgICB9XFxuXFxuICAgICAgJltzbG90PSdkZWNyZW1lbnQnXSB7XFxuICAgICAgICB0b3A6IGxheW91dC4kc3BhY2luZy0wNDtcXG4gICAgICAgIGxlZnQ6IDA7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxufVxcblxcbi8vIENhbGVuZGFyIGdyaWQgYW5kIGRheSBjZWxsc1xcblxcbi5jYWxlbmRhckdyaWQge1xcbiAgd2lkdGg6IDE3cmVtO1xcblxcbiAgJiB0cixcXG4gICYgdHIgPiB0aCxcXG4gICYgdHIgPiB0ZCB7XFxuICAgIGhlaWdodDogMi40MjhyZW07XFxuICAgIHdpZHRoOiAyLjQyOHJlbTtcXG4gIH1cXG5cXG4gICYgPiB0aGVhZCA+IHRyID4gdGgge1xcbiAgICBAaW5jbHVkZSB0eXBlLnR5cGUtc3R5bGUoJ2JvZHktY29tcGFjdC0wMScpO1xcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG4gIH1cXG5cXG4gICYgPiB0Ym9keSA+IHRyID4gdGQge1xcbiAgICBAaW5jbHVkZSB0eXBlLnR5cGUtc3R5bGUoJ2JvZHktY29tcGFjdC0wMScpO1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG5cXG4gICAgJiA+IGRpdiB7XFxuICAgICAgb3V0bGluZTogdW5zZXQ7XFxuICAgIH1cXG5cXG4gICAgJjpob3Zlcjpub3QoOmhhcyhbYXJpYS1kaXNhYmxlZF0sIFtkYXRhLXNlbGVjdGVkXSkpIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZS4kbGF5ZXItaG92ZXI7XFxuICAgIH1cXG5cXG4gICAgJjpoYXMoW2RhdGEtc2VsZWN0ZWRdKSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJsdWUtNjAtMjtcXG4gICAgICBjb2xvcjogJHVpLWJhY2tncm91bmQ7XFxuICAgIH1cXG5cXG4gICAgJlthcmlhLWRpc2FibGVkXSB7XFxuICAgICAgY29sb3I6IHRoZW1lLiR0ZXh0LWRpc2FibGVkO1xcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4udG9kYXk6bm90KFtkYXRhLXNlbGVjdGVkXSkge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgY29sb3I6ICRjb2xvci1ibHVlLTYwLTI7XFxuICBmb250LXdlaWdodDogNjAwO1xcbiAgZm9udC1zaXplOiB2YXIoLS1jZHMtYm9keS1jb21wYWN0LTAxLWZvbnQtc2l6ZSwgMC44NzVyZW0pO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWNkcy1ib2R5LWNvbXBhY3QtMDEtbGluZS1oZWlnaHQsIDEuMjg1NzIpO1xcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWNkcy1ib2R5LWNvbXBhY3QtMDEtbGV0dGVyLXNwYWNpbmcsIDAuMTZweCk7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgYmxvY2stc2l6ZTogbGF5b3V0LiRzcGFjaW5nLTA4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgaW5saW5lLXNpemU6IGxheW91dC4kc3BhY2luZy0wODtcXG5cXG4gICY6OmFmdGVyIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgYmxvY2stc2l6ZTogbGF5b3V0LiRzcGFjaW5nLTAyO1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgaW5saW5lLXNpemU6IGxheW91dC4kc3BhY2luZy0wMjtcXG4gICAgaW5zZXQtYmxvY2stZW5kOiAwLjQzNzVyZW07XFxuICAgIGluc2V0LWlubGluZS1zdGFydDogNTAlO1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xcbiAgfVxcblxcbiAgJltkYXRhLWRpc2FibGVkXTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZS4kdGV4dC1kaXNhYmxlZDtcXG4gIH1cXG5cXG4gICY6bm90KFtkYXRhLWRpc2FibGVkXSk6OmFmdGVyIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWxpbmstcHJpbWFyeSwgdGhlbWUuJGxpbmstcHJpbWFyeSk7XFxuICB9XFxufVxcblxcbi8vIFJUTCBvdmVycmlkZXNcXG46Z2xvYmFsKFtkaXI9J3J0bCddKSB7XFxuICAuaW5wdXRXcmFwcGVyIHtcXG4gICAgcGFkZGluZy1sZWZ0OiB1bnNldDtcXG4gICAgcGFkZGluZy1yaWdodDogbGF5b3V0LiRzcGFjaW5nLTA0O1xcbiAgfVxcblxcbiAgLmVuZElucHV0IHtcXG4gICAgcGFkZGluZy1yaWdodDogMDtcXG4gIH1cXG5cXG4gIC5tb250aFllYXIge1xcbiAgICAmIGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPSdudW1lcmljJ10pIHtcXG4gICAgICA+IGlucHV0W2lucHV0bW9kZT0nbnVtZXJpYyddIHtcXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IGxheW91dC4kc3BhY2luZy0wMjtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgJiBidXR0b24ge1xcbiAgICAgICZbc2xvdD0naW5jcmVtZW50J10ge1xcbiAgICAgICAgdG9wOiAwO1xcbiAgICAgICAgbGVmdDogdW5zZXQ7XFxuICAgICAgICByaWdodDogMDtcXG4gICAgICB9XFxuXFxuICAgICAgJltzbG90PSdkZWNyZW1lbnQnXSB7XFxuICAgICAgICB0b3A6IGxheW91dC4kc3BhY2luZy0wNDtcXG4gICAgICAgIGxlZnQ6IHVuc2V0O1xcbiAgICAgICAgcmlnaHQ6IDA7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxufVxcblwiLFwiLy9cXG4vLyBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMjFcXG4vL1xcbi8vIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZS0yLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4vLyBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuLy9cXG5cXG5AZm9yd2FyZCAnLi9sYXllci9sYXllci1zZXRzJztcXG5AdXNlICcuL2NvbmZpZycgYXMgKjtcXG5AdXNlICcuL2xheWVyL2xheWVyLXRva2Vucyc7XFxuQHVzZSAnLi90aGVtZScgYXMgKjtcXG5cXG46cm9vdCB7XFxuICBAaW5jbHVkZSBsYXllci10b2tlbnMuZW1pdC1sYXllci10b2tlbnMoMSk7XFxufVxcblxcbi4jeyRwcmVmaXh9LS1sYXllci1vbmUge1xcbiAgQGluY2x1ZGUgbGF5ZXItdG9rZW5zLmVtaXQtbGF5ZXItdG9rZW5zKDEpO1xcbn1cXG5cXG4uI3skcHJlZml4fS0tbGF5ZXItdHdvIHtcXG4gIEBpbmNsdWRlIGxheWVyLXRva2Vucy5lbWl0LWxheWVyLXRva2VucygyKTtcXG59XFxuXFxuLiN7JHByZWZpeH0tLWxheWVyLXRocmVlIHtcXG4gIEBpbmNsdWRlIGxheWVyLXRva2Vucy5lbWl0LWxheWVyLXRva2VucygzKTtcXG59XFxuXFxuQGVhY2ggJGkgaW4gKG9uZSwgdHdvLCB0aHJlZSkge1xcbiAgLiN7JHByZWZpeH0tLWxheWVyLSN7JGl9LiN7JHByZWZpeH0tLWxheWVyX193aXRoLWJhY2tncm91bmQge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGF5ZXItYmFja2dyb3VuZDtcXG4gIH1cXG59XFxuXCIsXCIvL1xcbi8vIENvcHlyaWdodCBJQk0gQ29ycC4gMjAxOCwgMjAyM1xcbi8vXFxuLy8gVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbi8vIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4vL1xcblxcbkB1c2UgJy4uL2NvbmZpZycgYXMgKjtcXG5AdXNlICdAY2FyYm9uL3RoZW1lcy9zY3NzL2NvbmZpZycgd2l0aCAoXFxuICAkcHJlZml4OiAkcHJlZml4XFxuKTtcXG5AdXNlICcuLi9jb21wYXQvdGhlbWVzJyBhcyBjb21wYXQ7XFxuQHVzZSAnLi4vdGhlbWVzJztcXG5cXG5AZm9yd2FyZCAnQGNhcmJvbi90aGVtZXMvc2Nzcy90aGVtZScgd2l0aCAoXFxuICAkZmFsbGJhY2s6IHRoZW1lcy4kd2hpdGUgIWRlZmF1bHQsXFxuICAkdGhlbWU6IGNvbXBhdC4kd2hpdGUgIWRlZmF1bHRcXG4pO1xcbkBmb3J3YXJkICdAY2FyYm9uL3RoZW1lcy9zY3NzL3Rva2Vucyc7XFxuXFxuQHVzZSAnQGNhcmJvbi90aGVtZXMvc2Nzcy90b2tlbnMnO1xcbkB1c2UgJ0BjYXJib24vdGhlbWVzL3Njc3MvdGhlbWUnO1xcbkB1c2UgJy4uL3V0aWxpdGllcy9jdXN0b20tcHJvcGVydHknO1xcblxcbi8vIExheWVyIHNldHNcXG4kbGF5ZXI6IGN1c3RvbS1wcm9wZXJ0eS5nZXQtdmFyKCdsYXllcicpO1xcbiRsYXllci1hY3RpdmU6IGN1c3RvbS1wcm9wZXJ0eS5nZXQtdmFyKCdsYXllci1hY3RpdmUnKTtcXG4kbGF5ZXItYmFja2dyb3VuZDogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2xheWVyLWJhY2tncm91bmQnKTtcXG4kbGF5ZXItaG92ZXI6IGN1c3RvbS1wcm9wZXJ0eS5nZXQtdmFyKCdsYXllci1ob3ZlcicpO1xcbiRsYXllci1zZWxlY3RlZDogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2xheWVyLXNlbGVjdGVkJyk7XFxuJGxheWVyLXNlbGVjdGVkLWhvdmVyOiBjdXN0b20tcHJvcGVydHkuZ2V0LXZhcignbGF5ZXItc2VsZWN0ZWQtaG92ZXInKTtcXG4kbGF5ZXItYWNjZW50OiBjdXN0b20tcHJvcGVydHkuZ2V0LXZhcignbGF5ZXItYWNjZW50Jyk7XFxuJGxheWVyLWFjY2VudC1ob3ZlcjogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2xheWVyLWFjY2VudC1ob3ZlcicpO1xcbiRsYXllci1hY2NlbnQtYWN0aXZlOiBjdXN0b20tcHJvcGVydHkuZ2V0LXZhcignbGF5ZXItYWNjZW50LWFjdGl2ZScpO1xcblxcbiRmaWVsZDogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2ZpZWxkJyk7XFxuJGZpZWxkLWhvdmVyOiBjdXN0b20tcHJvcGVydHkuZ2V0LXZhcignZmllbGQtaG92ZXInKTtcXG5cXG4kYm9yZGVyLXN1YnRsZTogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2JvcmRlci1zdWJ0bGUnKTtcXG4kYm9yZGVyLXN1YnRsZS1zZWxlY3RlZDogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2JvcmRlci1zdWJ0bGUtc2VsZWN0ZWQnKTtcXG4kYm9yZGVyLXN0cm9uZzogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2JvcmRlci1zdHJvbmcnKTtcXG4kYm9yZGVyLXRpbGU6IGN1c3RvbS1wcm9wZXJ0eS5nZXQtdmFyKCdib3JkZXItdGlsZScpO1xcblwiLFwiLy9cXG4vLyBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMjFcXG4vL1xcbi8vIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZS0yLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4vLyBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuLy9cXG5AdXNlICcuLi9jb25maWcnIGFzICo7XFxuXFxuQG1peGluIGNvbnRlbnQtdmlzaWJsZSB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdmlzaWJpbGl0eTogaW5oZXJpdDtcXG59XFxuXFxuQG1peGluIGNvbnRlbnQtaGlkZGVuIHtcXG4gIG9wYWNpdHk6IDA7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxufVxcblxcbkBrZXlmcmFtZXMgI3skcHJlZml4fS0taGlkZS1mZWVkYmFjayB7XFxuICAwJSB7XFxuICAgIEBpbmNsdWRlIGNvbnRlbnQtdmlzaWJsZTtcXG4gIH1cXG5cXG4gIDEwMCUge1xcbiAgICBAaW5jbHVkZSBjb250ZW50LWhpZGRlbjtcXG4gIH1cXG59XFxuXFxuQGtleWZyYW1lcyAjeyRwcmVmaXh9LS1zaG93LWZlZWRiYWNrIHtcXG4gIDAlIHtcXG4gICAgQGluY2x1ZGUgY29udGVudC1oaWRkZW47XFxuICB9XFxuXFxuICAxMDAlIHtcXG4gICAgQGluY2x1ZGUgY29udGVudC12aXNpYmxlO1xcbiAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzICN7JHByZWZpeH0tLXNrZWxldG9uIHtcXG4gIDAlIHtcXG4gICAgb3BhY2l0eTogMC4zO1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdDtcXG4gIH1cXG5cXG4gIDIwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpO1xcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xcbiAgfVxcblxcbiAgMjglIHtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7XFxuICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0O1xcbiAgfVxcblxcbiAgNTElIHtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XFxuICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0O1xcbiAgfVxcblxcbiAgNTglIHtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7XFxuICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0O1xcbiAgfVxcblxcbiAgODIlIHtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7XFxuICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0O1xcbiAgfVxcblxcbiAgODMlIHtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7XFxuICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQ7XFxuICB9XFxuXFxuICA5NiUge1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTtcXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdDtcXG4gIH1cXG5cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAwLjM7XFxuICAgIHRyYW5zZm9ybTogc2NhbGVYKDApO1xcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0O1xcbiAgfVxcbn1cXG5cIixcIi8vXFxuLy8gQ29weXJpZ2h0IElCTSBDb3JwLiAyMDIxXFxuLy9cXG4vLyBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUtMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuLy8gTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbi8vXFxuXFxuQHVzZSAnLi4vY29uZmlnJyBhcyAqO1xcblxcbi8vLyBJbmNsdWRlIHN0eWxlcyBmb3Igc2NyZWVuIHJlYWRlci9hc3Npc3RpdmUgdGV4dFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgdXRpbGl0aWVzXFxuQG1peGluIHZpc3VhbGx5LWhpZGRlbiB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlcjogMDtcXG4gIG1hcmdpbjogLTFweDtcXG4gIGJsb2NrLXNpemU6IDFweDtcXG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XFxuICBpbmxpbmUtc2l6ZTogMXB4O1xcbiAgdmlzaWJpbGl0eTogaW5oZXJpdDtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxufVxcblxcbi4jeyRwcmVmaXh9LS1hc3Npc3RpdmUtdGV4dCxcXG4uI3skcHJlZml4fS0tdmlzdWFsbHktaGlkZGVuIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBwYWRkaW5nOiAwO1xcbiAgYm9yZGVyOiAwO1xcbiAgbWFyZ2luOiAtMXB4O1xcbiAgYmxvY2stc2l6ZTogMXB4O1xcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcXG4gIGlubGluZS1zaXplOiAxcHg7XFxuICB2aXNpYmlsaXR5OiBpbmhlcml0O1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG59XFxuXCIsXCIvL1xcbi8vIENvcHlyaWdodCBJQk0gQ29ycC4gMjAxNiwgMjAyM1xcbi8vXFxuLy8gVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbi8vIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4vL1xcblxcbkB1c2UgJy4uLy4uL2NvbmZpZycgYXMgKjtcXG5AdXNlICcuLi8uLi9sYXllcicgYXMgKjtcXG5AdXNlICcuLi8uLi90aGVtZSc7XFxuQHVzZSAnLi4vLi4vdXRpbGl0aWVzL2JveC1zaGFkb3cnIGFzICo7XFxuQHVzZSAnLi4vLi4vdXRpbGl0aWVzL2J1dHRvbi1yZXNldCc7XFxuQHVzZSAnLi4vLi4vdXRpbGl0aWVzL2NvbXBvbmVudC1yZXNldCc7XFxuQHVzZSAnLi4vLi4vdXRpbGl0aWVzL2N1c3RvbS1wcm9wZXJ0eSc7XFxuQHVzZSAnLi4vLi4vdXRpbGl0aWVzL2ZvY3VzLW91dGxpbmUnIGFzICo7XFxuQHVzZSAnLi4vLi4vdXRpbGl0aWVzLycgYXMgKjtcXG5AdXNlICcuLi8uLi91dGlsaXRpZXMvY29udmVydCc7XFxuQHVzZSAnLi4vLi4vdXRpbGl0aWVzL2xheW91dCc7XFxuXFxuLy8vIFRoZSBQb3BvdmVyIGNvbXBvbmVudCBpcyB1c2VkIGZvciB0cmlnZ2VyaW5nIGEgcG9wLXVwIG5leHQgdG8gYSB0cmlnZ2VyXFxuLy8vIGVsZW1lbnQsIHR5cGljYWxseSBhIGJ1dHRvbiwgaW4gYSBnaXZlbiBkaXJlY3Rpb24uIEl0IGlzIG1hZGUgdXAgb2Ygc2V2ZXJhbFxcbi8vLyBwYXJ0cyBhbmQgaW5jbHVkZXMgYSBoYW5kZnVsIG9mIG1vZGlmaWVycyB0byBjaGFuZ2UgdGhlIGFwcGVhcmFuY2UuXFxuLy8vXFxuLy8vIFRoZSBwYXJ0cyBvZiBhIHBvcG92ZXIgaW5jbHVkZTpcXG4vLy8gICBUaGUgcG9wb3ZlciBjb250YWluZXIgYC5jZHMtcG9wb3Zlci1jb250YWluZXJgXFxuLy8vICAgVGhpcyBjb250YWluZXIgY29udGFpbnMgdGhlIHRyaWdnZXIgYW5kIHRoZSBwb3BvdmVyIGFuZCBpcyB1c2VkIHRvXFxuLy8vICAgY29vcmRpbmF0ZSBwb3NpdGlvbmluZyByZWxhdGl2ZSB0byB0aGUgdHJpZ2dlciBidXR0b25cXG4vLy9cXG4vLy8gICBUaGUgcG9wb3Zlclxcbi8vLyAgIFRoaXMgaXMgYW4gaW50ZXJtZWRpYXRlIGNvbnRhaW5lciB0aGF0IGlzIHVzZWQgZm9yIHRoZVxcbi8vLyAgIGBmaWx0ZXI6IGRyb3Atc2hhZG93KClgIGVmZmVjdCBvbiB0aGUgcG9wb3ZlciBjb250ZW50IGFuZCB0aGUgY2FyZXQuIEl0IGlzXFxuLy8vICAgYW4gYWJzb2x1dGVseSBwb3NpdGlvbmVkIGNvbnRhaW5lciB0aGF0IG1hdGNoZXMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlXFxuLy8vICAgY29udGFpbmVyIHNvIHRoYXQgcG9wb3ZlciBjb250ZW50IGFuZCBjYXJldCBjYW4gYmUgcG9zaXRpb25lZCBhYnNvbHV0ZWx5Llxcbi8vL1xcbi8vLyAgIFBvcG92ZXIgY29udGVudFxcbi8vLyAgIFRoaXMgaXMgdGhlIGNvbnRhaW5pbmcgZWxlbWVudCBmb3IgdXNlci1wcm92aWRlZCBjb250ZW50IGFuZCBzZXRzIHRoZVxcbi8vLyAgIGJhY2tncm91bmQgYW5kIHRleHQgY29sb3IgZm9yIHRoZSBhcmVhLlxcbi8vL1xcbi8vLyAgIFBvcG92ZXIgY2FyZXRcXG4vLy8gICBUaGlzIGNhcmV0IGlzIGFuIG9wdGlvbmFsIG1vZGlmaWVyIHRoYXQgZGlzcGxheXMgYSBjaGFyYWN0ZXIgY2VudGVyZWQgd2l0aFxcbi8vLyAgIHJlc3BlY3QgdG8gdGhlIHRyaWdnZXIgZWxlbWVudFxcblxcbi8vIFRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgcG9wb3ZlciBjb250YWluZXJcXG4kcG9wb3Zlci1iYWNrZ3JvdW5kLWNvbG9yOiBjdXN0b20tcHJvcGVydHkuZ2V0LXZhcihcXG4gICdwb3BvdmVyLWJhY2tncm91bmQtY29sb3InLFxcbiAgdGhlbWUuJGxheWVyXFxuKTtcXG5cXG4vLyBUaGUgZHJvcCBzaGFkb3cgdmFsdWUgdXNlZCBmb3IgdGhlIHBvcG92ZXIgY29udGFpbmVyXFxuJHBvcG92ZXItZHJvcC1zaGFkb3c6IGN1c3RvbS1wcm9wZXJ0eS5nZXQtdmFyKCdwb3BvdmVyLWRyb3Atc2hhZG93JywgJ25vbmUnKTtcXG5cXG4vLyBUaGUgYm9yZGVyIHJhZGl1cyB2YWx1ZSBmb3IgdGhlIHBvcG92ZXIgY29udGFpbmVyXFxuJHBvcG92ZXItYm9yZGVyLXJhZGl1czogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ3BvcG92ZXItYm9yZGVyLXJhZGl1cycsIDJweCk7XFxuXFxuLy8gVGhlIHRleHQgY29sb3IgdXNlZCBmb3IgdGV4dCBwbGFjZWQgaW5zaWRlIG9mIHRoZSBwb3BvdmVyXFxuJHBvcG92ZXItdGV4dC1jb2xvcjogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoXFxuICAncG9wb3Zlci10ZXh0LWNvbG9yJyxcXG4gIHRoZW1lLiR0ZXh0LXByaW1hcnlcXG4pO1xcblxcbi8vIFRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwb3BvdmVyIGNvbnRhaW5lciBhbmQgdGhlIHRyaWdnZXJpbmcgZWxlbWVudFxcbi8vIFNwZWNpZnkgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHBvcG92ZXIgYW5kIHRoZSB0cmlnZ2VyLiBUaGlzIHZhbHVlIG11c3RcXG4vLyBoYXZlIGEgdW5pdCBvdGhlcndpc2UgdGhlIGBjYWxjKClgIGV4cHJlc3Npb24gd2lsbCBub3Qgd29ya1xcbiRwb3BvdmVyLW9mZnNldDogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ3BvcG92ZXItb2Zmc2V0JywgMHJlbSk7XFxuXFxuLy8gQ3VzdG9taXplIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBjYXJldCBieSBzcGVjaWZ5aW5nIGl0cyB3aWR0aCBvciBoZWlnaHQuXFxuLy8gVGhlc2UgdmFsdWVzIHdpbGwgYmUgZmxpcHBlZCBpbiBsZWZ0IG9yIHJpZ2h0IGRpcmVjdGlvbnMgdG8gaGF2ZSB0aGVcXG4vLyBjb3JyZWN0IGRpbWVuc2lvbnNcXG4kcG9wb3Zlci1jYXJldC13aWR0aDogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoXFxuICAncG9wb3Zlci1jYXJldC13aWR0aCcsXFxuICBjb252ZXJ0LnRvLXJlbSgxMnB4KVxcbik7XFxuJHBvcG92ZXItY2FyZXQtaGVpZ2h0OiBjdXN0b20tcHJvcGVydHkuZ2V0LXZhcihcXG4gICdwb3BvdmVyLWNhcmV0LWhlaWdodCcsXFxuICBjb252ZXJ0LnRvLXJlbSg2cHgpXFxuKTtcXG5cXG5AbWl4aW4gcG9wb3ZlciB7XFxuICAvLyBDb250YWluZXJcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRhaW5lciB7XFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIH1cXG5cXG4gIC8vIERvIG5vdCBzZXQgcG9zaXRpb246IHJlbGF0aXZlIG9uIGF1dG9BbGlnbiBwb3BvdmVycy5cXG4gIC8vIFdpdGhvdXQgdGhpcywgYXV0b0FsaWduIHBvcG92ZXJzIHdpbGwgYmUgY2xpcHBlZCBieSBjb250YWluaW5nIGVsZW1lbnRzXFxuICAvLyAodXNpbmcgb3ZlcmZsb3c6IGhpZGRlbiwgZXRjKSBpZiBwb3NpdGlvbjogcmVsYXRpdmUgaXMgc2V0IG9uIHRoZSBjb250YWluZXIuXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250YWluZXI6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKSB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIH1cXG5cXG4gIC8vLyBNb2RpZmllcnNcXG5cXG4gIC8vIEhpZ2ggY29udHJhc3QgbW9kaWZpZXJcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1oaWdoLWNvbnRyYXN0IC4jeyRwcmVmaXh9LS1wb3BvdmVyIHtcXG4gICAgQGluY2x1ZGUgY3VzdG9tLXByb3BlcnR5LmRlY2xhcmF0aW9uKFxcbiAgICAgICdwb3BvdmVyLWJhY2tncm91bmQtY29sb3InLFxcbiAgICAgIHRoZW1lLiRiYWNrZ3JvdW5kLWludmVyc2VcXG4gICAgKTtcXG4gICAgQGluY2x1ZGUgY3VzdG9tLXByb3BlcnR5LmRlY2xhcmF0aW9uKFxcbiAgICAgICdwb3BvdmVyLXRleHQtY29sb3InLFxcbiAgICAgIHRoZW1lLiR0ZXh0LWludmVyc2VcXG4gICAgKTtcXG4gIH1cXG5cXG4gIC8vIERyb3Agc2hhZG93IG1vZGlmaWVyXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tZHJvcC1zaGFkb3dcXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50IHtcXG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDJweCAycHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcXG4gIH1cXG5cXG4gIC8vIENhcmV0IHRpcCBtb2RpZmllclxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWNhcmV0IHtcXG4gICAgQGluY2x1ZGUgY3VzdG9tLXByb3BlcnR5LmRlY2xhcmF0aW9uKFxcbiAgICAgICdwb3BvdmVyLW9mZnNldCcsXFxuICAgICAgY29udmVydC50by1yZW0oMTBweClcXG4gICAgKTtcXG4gIH1cXG5cXG4gIC8vIFBvcG92ZXIsIHRoaXMgZWxlbWVudCBjb250YWlucyBib3RoIHRoZSBjYXJldCBhbmQgdGhlIHBvcG92ZXIgY29udGVudFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXIge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHotaW5kZXg6IHooJ2Zsb2F0aW5nJyk7XFxuICAgIGZpbHRlcjogJHBvcG92ZXItZHJvcC1zaGFkb3c7XFxuICAgIGluc2V0OiAwO1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIH1cXG5cXG4gIC8vIFBvcG92ZXIgY29udGVudFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudCB7XFxuICAgIC8vIFRoZSBsYXlvdXQucmVkZWZpbmUtdG9rZW5zIGlzIGJlZW4gaW5jbHVkZWQgaGVyZSBiZWNhdXNlIGl0IGlzIGJlZW4gcmVkaWZpbmVkIGluIF90YWcuc2Nzc1xcbiAgICBAaW5jbHVkZSBsYXlvdXQucmVkZWZpbmUtdG9rZW5zKFxcbiAgICAgIChcXG4gICAgICAgIHNpemU6IChcXG4gICAgICAgICAgaGVpZ2h0OiAoXFxuICAgICAgICAgICAgc206IGNvbnZlcnQudG8tcmVtKDMycHgpLFxcbiAgICAgICAgICAgIG1kOiBjb252ZXJ0LnRvLXJlbSg0MHB4KSxcXG4gICAgICAgICAgICBsZzogY29udmVydC50by1yZW0oNDhweCksXFxuICAgICAgICAgICksXFxuICAgICAgICApLFxcbiAgICAgIClcXG4gICAgKTtcXG4gICAgQGluY2x1ZGUgY29tcG9uZW50LXJlc2V0LnJlc2V0O1xcblxcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHotaW5kZXg6IHooJ2Zsb2F0aW5nJyk7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIGJvcmRlci1yYWRpdXM6ICRwb3BvdmVyLWJvcmRlci1yYWRpdXM7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRwb3BvdmVyLWJhY2tncm91bmQtY29sb3I7XFxuICAgIGNvbG9yOiAkcG9wb3Zlci10ZXh0LWNvbG9yO1xcbiAgICBpbmxpbmUtc2l6ZTogbWF4LWNvbnRlbnQ7XFxuICAgIG1heC1pbmxpbmUtc2l6ZTogY29udmVydC50by1yZW0oMzY4cHgpO1xcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1vcGVuXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50IHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICB9XFxuXFxuICAvLyBXZSB1c2UgYSBwc2V1ZG8gZWxlbWVudCBpbnNpZGUgb2YgdGhlIHBvcG92ZXIgdG8gY3JlYXRlIGEgc3BhY2UgYmV0d2VlbiB0aGVcXG4gIC8vIHRhcmdldCBhbmQgdGhlIHBvcG92ZXIuIFRoaXMgaGVscHMgaW4gc2l0dWF0aW9ucyBsaWtlIHRvb2xjYXJldHMgd2hlcmUgeW91IGRvXFxuICAvLyBub3Qgd2FudCB0aGUgdG9vbGNhcmV0IHRvIGRpc2FwcGVhciB3aGVuIHRoZSB1c2VyIG1vdmVzIGZyb20gdGhlIHRhcmdldCB0b1xcbiAgLy8gdGhlIHBvcG92ZXIuXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50OjpiZWZvcmUge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgfVxcblxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLW9wZW5cXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQ6OmJlZm9yZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgfVxcblxcbiAgLy8gUG9wb3ZlciBjYXJldFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbi4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0IHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB6LWluZGV4OiB6KCdmbG9hdGluZycpO1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcG9wb3Zlci1iYWNrZ3JvdW5kLWNvbG9yO1xcbiAgICAvLyBXZSB1c2UgYHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm1gIHRvIHByZXZlbnQgYW50aWFsaWFzaW5nIHdoZW4gb3VyIGNhcmV0XFxuICAgIC8vIGhhcyBzdWJwaXhlbCByZW5kZXJpbmcuIFdoZW4gdGhpcyBoYXBwZW5zLCBhIHNpbmdsZSBwaXhlbCBsaW5lIGFwcGVhcnNcXG4gICAgLy8gYmV0d2VlbiB0aGUgY2FyZXQgYW5kIHBvcG92ZXItY29udGVudCB0aGF0IHdlIHdvdWxkIGxpa2UgdG8gYXZvaWRcXG4gICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1jYXJldC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1vcGVuXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgfVxcblxcbiAgLy8gYXV0b0FsaWduIHVzZXMgYSBkaWZmZXJlbnQgZG9tIHN0cnVjdHVyZSB3aGVyZSB0aGUgY2FyZXQgaXMgd2l0aGluIHRoZSBjb250ZW50IGluc3RlYWQgb2YgYSBzaWJsaW5nXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbi4jeyRwcmVmaXh9LS1wb3BvdmVyLS1jYXJldC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1vcGVuXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50XFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS10YWItdGlwXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICB9XFxuXFxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICAvLyBCb3R0b21cXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG5cXG4gIC8vIFBvcG92ZXIgY29udGVudCBwbGFjZW1lbnRcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1ib3R0b206bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudCB7XFxuICAgIGluc2V0LWJsb2NrLWVuZDogMDtcXG4gICAgaW5zZXQtaW5saW5lLXN0YXJ0OiA1MCU7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIGNhbGMoMTAwJSArICRwb3BvdmVyLW9mZnNldCkpO1xcbiAgfVxcblxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWJvdHRvbTpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50IHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoNTAlLCBjYWxjKDEwMCUgKyAkcG9wb3Zlci1vZmZzZXQpKTtcXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1ib3R0b20tbGVmdDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50LFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWJvdHRvbS1zdGFydDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50IHtcXG4gICAgaW5zZXQtYmxvY2stZW5kOiAwO1xcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKFxcbiAgICAgIGNhbGMoLTEgKiAkcG9wb3Zlci1vZmZzZXQpLFxcbiAgICAgIGNhbGMoMTAwJSArICRwb3BvdmVyLW9mZnNldClcXG4gICAgKTtcXG4gIH1cXG5cXG4gIFtkaXI9J3J0bCddXFxuICAgIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1ib3R0b20tbGVmdDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50LFxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWJvdHRvbS1zdGFydDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50IHtcXG4gICAgaW5zZXQtaW5saW5lLWVuZDogMDtcXG4gICAgaW5zZXQtaW5saW5lLXN0YXJ0OiBpbml0aWFsO1xcbiAgfVxcblxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWJvdHRvbS1yaWdodDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50LFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWJvdHRvbS1lbmQ6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudCB7XFxuICAgIGluc2V0LWJsb2NrLWVuZDogMDtcXG4gICAgaW5zZXQtaW5saW5lLWVuZDogMDtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoJHBvcG92ZXItb2Zmc2V0LCBjYWxjKDEwMCUgKyAkcG9wb3Zlci1vZmZzZXQpKTtcXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1ib3R0b20tZW5kOm5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRvcC1lbmQ6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQge1xcbiAgICBpbnNldC1ibG9jay1lbmQ6IDA7XFxuICAgIGluc2V0LWlubGluZS1lbmQ6IDA7XFxuICAgIGluc2V0LWlubGluZS1zdGFydDogYXV0bztcXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1ib3R0b20tc3RhcnQ6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQge1xcbiAgICBpbnNldC1ibG9jay1lbmQ6IDA7XFxuICAgIGluc2V0LWlubGluZS1lbmQ6IGF1dG87XFxuICAgIGluc2V0LWlubGluZS1zdGFydDogMDtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoNTAlLCBjYWxjKCRwb3BvdmVyLW9mZnNldCkpO1xcbiAgfVxcblxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRvcC1zdGFydDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCB7XFxuICAgIGluc2V0LWJsb2NrLWVuZDogMDtcXG4gICAgaW5zZXQtaW5saW5lLWVuZDogYXV0bztcXG4gICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1MCUsIGNhbGMoLTEgKiAkcG9wb3Zlci1vZmZzZXQpKTtcXG4gIH1cXG5cXG4gIFtkaXI9J3J0bCddXFxuICAgIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1ib3R0b20tcmlnaHQ6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudCxcXG4gIFtkaXI9J3J0bCddXFxuICAgIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1ib3R0b20tZW5kOm5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQge1xcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDA7XFxuICB9XFxuXFxuICAvLyBQb3BvdmVyIGhvdmVyIGFyZWEgcGxhY2VtZW50XFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tYm90dG9tXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50OjpiZWZvcmUsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tYm90dG9tLWxlZnRcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQ6OmJlZm9yZSxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1ib3R0b20tc3RhcnRcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQ6OmJlZm9yZSxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1ib3R0b20tcmlnaHRcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQ6OmJlZm9yZSxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1ib3R0b20tZW5kXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50OjpiZWZvcmUge1xcbiAgICBibG9jay1zaXplOiAkcG9wb3Zlci1vZmZzZXQ7XFxuICAgIGluc2V0LWJsb2NrLXN0YXJ0OiAwO1xcbiAgICBpbnNldC1pbmxpbmU6IDA7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XFxuICB9XFxuXFxuICAvLyBDYXJldCBwbGFjZW1lbnRcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1ib3R0b21cXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWJvdHRvbS1sZWZ0XFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1ib3R0b20tc3RhcnRcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWJvdHRvbS1yaWdodFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tYm90dG9tLWVuZFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQge1xcbiAgICBibG9jay1zaXplOiAkcG9wb3Zlci1jYXJldC1oZWlnaHQ7XFxuICAgIGNsaXAtcGF0aDogcG9seWdvbigwJSAxMDAlLCA1MCUgMCUsIDEwMCUgMTAwJSk7XFxuICAgIGlubGluZS1zaXplOiAkcG9wb3Zlci1jYXJldC13aWR0aDtcXG4gICAgaW5zZXQtYmxvY2stZW5kOiAwO1xcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDUwJTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgJHBvcG92ZXItb2Zmc2V0KTtcXG4gIH1cXG5cXG4gIFtkaXI9J3J0bCddXFxuICAgIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1ib3R0b21cXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWJvdHRvbS1sZWZ0XFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCxcXG4gIFtkaXI9J3J0bCddXFxuICAgIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1ib3R0b20tc3RhcnRcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWJvdHRvbS1yaWdodFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQsXFxuICBbZGlyPSdydGwnXVxcbiAgICAuI3skcHJlZml4fS0tcG9wb3Zlci0tYm90dG9tLWVuZFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1MCUsICRwb3BvdmVyLW9mZnNldCk7XFxuICB9XFxuXFxuICAvLyBDYXJldCBwbGFjZW1lbnQgZm9yIGF1dG9BbGlnblxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWJvdHRvbS4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50XFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tYm90dG9tLWxlZnQuI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnblxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWJvdHRvbS1zdGFydC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50XFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tYm90dG9tLXJpZ2h0LiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ25cXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnRcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1ib3R0b20tZW5kLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ25cXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnRcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCB7XFxuICAgIGJsb2NrLXNpemU6ICRwb3BvdmVyLWNhcmV0LWhlaWdodDtcXG4gICAgY2xpcC1wYXRoOiBwb2x5Z29uKDAlIDEwMCUsIDUwJSAwJSwgMTAwJSAxMDAlKTtcXG4gICAgaW5saW5lLXNpemU6ICRwb3BvdmVyLWNhcmV0LXdpZHRoO1xcbiAgfVxcblxcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgLy8gVG9wXFxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuXFxuICAvLyBQb3BvdmVyIGNvbnRlbnQgcGxhY2VtZW50XFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tdG9wOm5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQge1xcbiAgICBpbnNldC1ibG9jay1zdGFydDogMDtcXG4gICAgaW5zZXQtaW5saW5lLXN0YXJ0OiA1MCU7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIGNhbGMoLTEwMCUgLSAkcG9wb3Zlci1vZmZzZXQpKTtcXG4gIH1cXG5cXG4gIFtkaXI9J3J0bCddXFxuICAgIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS10b3A6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudCB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDUwJSwgY2FsYygtMTAwJSAtICRwb3BvdmVyLW9mZnNldCkpO1xcbiAgfVxcblxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRvcC1sZWZ0Om5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tdG9wLXN0YXJ0Om5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQge1xcbiAgICBpbnNldC1ibG9jay1zdGFydDogMDtcXG4gICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcXG4gICAgICBjYWxjKC0xICogJHBvcG92ZXItb2Zmc2V0KSxcXG4gICAgICBjYWxjKC0xMDAlIC0gJHBvcG92ZXItb2Zmc2V0KVxcbiAgICApO1xcbiAgfVxcblxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRvcC1sZWZ0Om5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQsXFxuICBbZGlyPSdydGwnXVxcbiAgICAuI3skcHJlZml4fS0tcG9wb3Zlci0tdG9wLXN0YXJ0Om5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQge1xcbiAgICBpbnNldC1pbmxpbmUtZW5kOiAwO1xcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IGluaXRpYWw7XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tdG9wLXJpZ2h0Om5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tdG9wLWVuZDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50IHtcXG4gICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XFxuICAgIGluc2V0LWlubGluZS1lbmQ6IDA7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKCRwb3BvdmVyLW9mZnNldCwgY2FsYygtMTAwJSAtICRwb3BvdmVyLW9mZnNldCkpO1xcbiAgfVxcblxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRvcC1yaWdodDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50LFxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRvcC1lbmQ6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudCB7XFxuICAgIGluc2V0LWlubGluZS1zdGFydDogMDtcXG4gIH1cXG5cXG4gIC8vIFBvcG92ZXIgaG92ZXIgYXJlYSBwbGFjZW1lbnRcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS10b3BcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQ6OmJlZm9yZSxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS10b3AtbGVmdFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudDo6YmVmb3JlLFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRvcC1zdGFydFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudDo6YmVmb3JlLFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRvcC1yaWdodFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudDo6YmVmb3JlLFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRvcC1lbmRcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQ6OmJlZm9yZSB7XFxuICAgIGJsb2NrLXNpemU6ICRwb3BvdmVyLW9mZnNldDtcXG4gICAgaW5zZXQtYmxvY2stZW5kOiAwO1xcbiAgICBpbnNldC1pbmxpbmU6IDA7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gIH1cXG5cXG4gIC8vIENhcmV0IHBsYWNlbWVudFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRvcCA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tdG9wLWxlZnRcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRvcC1zdGFydFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tdG9wLXJpZ2h0XFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS10b3AtZW5kXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCB7XFxuICAgIGJsb2NrLXNpemU6ICRwb3BvdmVyLWNhcmV0LWhlaWdodDtcXG4gICAgY2xpcC1wYXRoOiBwb2x5Z29uKDAlIDAlLCA1MCUgMTAwJSwgMTAwJSAwJSk7XFxuICAgIGlubGluZS1zaXplOiAkcG9wb3Zlci1jYXJldC13aWR0aDtcXG4gICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XFxuICAgIGluc2V0LWlubGluZS1zdGFydDogNTAlO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCBjYWxjKC0xICogJHBvcG92ZXItb2Zmc2V0KSk7XFxuICB9XFxuXFxuICBbZGlyPSdydGwnXVxcbiAgICAuI3skcHJlZml4fS0tcG9wb3Zlci0tdG9wOm5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRvcC1sZWZ0Om5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRvcC1zdGFydDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCxcXG4gIFtkaXI9J3J0bCddXFxuICAgIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS10b3AtcmlnaHQ6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQsXFxuICBbZGlyPSdydGwnXVxcbiAgICAuI3skcHJlZml4fS0tcG9wb3Zlci0tdG9wLWVuZDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDUwJSwgY2FsYygtMSAqICRwb3BvdmVyLW9mZnNldCkpO1xcbiAgfVxcblxcbiAgLy8gQ2FyZXQgcGxhY2VtZW50IGZvciBhdXRvQWxpZ25cXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS10b3AuI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnblxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRvcC1sZWZ0LiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ25cXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnRcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS10b3Atc3RhcnQuI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnblxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRvcC1yaWdodC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50XFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tdG9wLWVuZC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50XFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQge1xcbiAgICBibG9jay1zaXplOiAkcG9wb3Zlci1jYXJldC1oZWlnaHQ7XFxuICAgIGNsaXAtcGF0aDogcG9seWdvbigwJSAwJSwgNTAlIDEwMCUsIDEwMCUgMCUpO1xcbiAgICBpbmxpbmUtc2l6ZTogJHBvcG92ZXItY2FyZXQtd2lkdGg7XFxuICB9XFxuXFxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICAvLyBSaWdodFxcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcblxcbiAgLy8gUG9wb3ZlciBjb250ZW50IHBsYWNlbWVudFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXJpZ2h0Om5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQge1xcbiAgICBpbnNldC1ibG9jay1zdGFydDogNTAlO1xcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDEwMCU7XFxuICAgIC8vIEFkZCBpbiAwLjFweCB0byBwcmV2ZW50IHJvdW5kaW5nIGVycm9ycyB3aGVyZSB0aGUgY29udGVudCBpc1xcbiAgICAvLyBtb3ZlZCBmYXJ0aGVyIHRoYW4gdGhlIGNhcmV0XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKCRwb3BvdmVyLW9mZnNldCwgLTUwJSk7XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tcmlnaHQtdG9wOm5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tcmlnaHQtc3RhcnQ6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudCB7XFxuICAgIGluc2V0LWJsb2NrLXN0YXJ0OiA1MCU7XFxuICAgIGluc2V0LWlubGluZS1zdGFydDogMTAwJTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoXFxuICAgICAgJHBvcG92ZXItb2Zmc2V0LFxcbiAgICAgIGNhbGMoMC41ICogJHBvcG92ZXItb2Zmc2V0ICogLTEgLSAxNnB4KVxcbiAgICApO1xcbiAgfVxcblxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXJpZ2h0LWJvdHRvbTpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50LFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXJpZ2h0LWVuZDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50IHtcXG4gICAgaW5zZXQtYmxvY2stZW5kOiA1MCU7XFxuICAgIGluc2V0LWlubGluZS1zdGFydDogMTAwJTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoJHBvcG92ZXItb2Zmc2V0LCBjYWxjKDAuNSAqICRwb3BvdmVyLW9mZnNldCArIDE2cHgpKTtcXG4gIH1cXG5cXG4gIFtkaXI9J3J0bCddXFxuICAgIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1yaWdodDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50LFxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXJpZ2h0LWJvdHRvbTpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50LFxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXJpZ2h0LWVuZDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50LFxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXJpZ2h0LXRvcDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50LFxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXJpZ2h0LXN0YXJ0Om5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQge1xcbiAgICBpbnNldC1pbmxpbmUtZW5kOiAxMDAlO1xcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IGluaXRpYWw7XFxuICB9XFxuXFxuICAvLyBQb3BvdmVyIGhvdmVyIGFyZWEgcGxhY2VtZW50XFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tcmlnaHRcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQ6OmJlZm9yZSxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1yaWdodC10b3BcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQ6OmJlZm9yZSxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1yaWdodC1zdGFydFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudDo6YmVmb3JlLFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXJpZ2h0LWJvdHRvbVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudDo6YmVmb3JlLFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXJpZ2h0LWVuZFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudDo6YmVmb3JlIHtcXG4gICAgaW5saW5lLXNpemU6ICRwb3BvdmVyLW9mZnNldDtcXG4gICAgaW5zZXQtYmxvY2s6IDA7XFxuICAgIGluc2V0LWlubGluZS1zdGFydDogMDtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcXG4gIH1cXG5cXG4gIC8vIENhcmV0IHBsYWNlbWVudFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXJpZ2h0Om5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXJpZ2h0LXRvcDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1yaWdodC1zdGFydDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1yaWdodC1ib3R0b206bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tcmlnaHQtZW5kOm5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0IHtcXG4gICAgYmxvY2stc2l6ZTogJHBvcG92ZXItY2FyZXQtd2lkdGg7XFxuICAgIGNsaXAtcGF0aDogcG9seWdvbigwJSA1MCUsIDEwMCUgMCUsIDEwMCUgMTAwJSk7XFxuICAgIGlubGluZS1zaXplOiAkcG9wb3Zlci1jYXJldC1oZWlnaHQ7XFxuICAgIGluc2V0LWJsb2NrLXN0YXJ0OiA1MCU7XFxuICAgIGluc2V0LWlubGluZS1zdGFydDogMTAwJTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYygkcG9wb3Zlci1vZmZzZXQgLSAxMDAlKSwgLTUwJSk7XFxuICB9XFxuXFxuICBbZGlyPSdydGwnXVxcbiAgICAuI3skcHJlZml4fS0tcG9wb3Zlci0tcmlnaHQ6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQsXFxuICBbZGlyPSdydGwnXVxcbiAgICAuI3skcHJlZml4fS0tcG9wb3Zlci0tcmlnaHQtdG9wOm5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXJpZ2h0LXN0YXJ0Om5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXJpZ2h0LWJvdHRvbTpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCxcXG4gIFtkaXI9J3J0bCddXFxuICAgIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1yaWdodC1lbmQ6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQge1xcbiAgICBpbnNldC1pbmxpbmUtZW5kOiAxMDAlO1xcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IGluaXRpYWw7XFxuICB9XFxuXFxuICAvLyBDYXJldCBwbGFjZW1lbnQgZm9yIGF1dG9BbGlnblxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXJpZ2h0LiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ25cXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnRcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1yaWdodC10b3AuI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnblxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXJpZ2h0LXN0YXJ0LiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ25cXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnRcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1yaWdodC1ib3R0b20uI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnblxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXJpZ2h0LWVuZC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50XFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQge1xcbiAgICBibG9jay1zaXplOiAkcG9wb3Zlci1jYXJldC13aWR0aDtcXG4gICAgY2xpcC1wYXRoOiBwb2x5Z29uKDAlIDUwJSwgMTAwJSAwJSwgMTAwJSAxMDAlKTtcXG4gICAgaW5saW5lLXNpemU6ICRwb3BvdmVyLWNhcmV0LWhlaWdodDtcXG4gIH1cXG5cXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4gIC8vIExlZnRcXG4gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG5cXG4gIC8vIFBvcG92ZXIgY29udGVudCBwbGFjZW1lbnRcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1sZWZ0Om5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQge1xcbiAgICBpbnNldC1ibG9jay1zdGFydDogNTAlO1xcbiAgICBpbnNldC1pbmxpbmUtZW5kOiAxMDAlO1xcbiAgICAvLyBBZGQgaW4gMC4xcHggdG8gcHJldmVudCByb3VuZGluZyBlcnJvcnMgd2hlcmUgdGhlIGNvbnRlbnQgaXNcXG4gICAgLy8gbW92ZWQgZmFydGhlciB0aGFuIHRoZSBjYXJldFxcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShjYWxjKC0xICogJHBvcG92ZXItb2Zmc2V0ICsgMC4xcHgpLCAtNTAlKTtcXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1sZWZ0LXRvcDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50LFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWxlZnQtc3RhcnQ6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudCB7XFxuICAgIGluc2V0LWJsb2NrLXN0YXJ0OiA1MCU7XFxuICAgIGluc2V0LWlubGluZS1lbmQ6IDEwMCU7XFxuICAgIC8vIEFkZCBpbiAwLjFweCB0byBwcmV2ZW50IHJvdW5kaW5nIGVycm9ycyB3aGVyZSB0aGUgY29udGVudCBpc1xcbiAgICAvLyBtb3ZlZCBmYXJ0aGVyIHRoYW4gdGhlIGNhcmV0XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKFxcbiAgICAgIGNhbGMoLTEgKiAkcG9wb3Zlci1vZmZzZXQpLFxcbiAgICAgIGNhbGMoLTEgKiAwLjUgKiAkcG9wb3Zlci1vZmZzZXQgLSAxNnB4KVxcbiAgICApO1xcbiAgfVxcblxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWxlZnQtYm90dG9tOm5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tbGVmdC1lbmQ6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudCB7XFxuICAgIGluc2V0LWJsb2NrLWVuZDogNTAlO1xcbiAgICBpbnNldC1pbmxpbmUtZW5kOiAxMDAlO1xcbiAgICAvLyBBZGQgaW4gMC4xcHggdG8gcHJldmVudCByb3VuZGluZyBlcnJvcnMgd2hlcmUgdGhlIGNvbnRlbnQgaXNcXG4gICAgLy8gbW92ZWQgZmFydGhlciB0aGFuIHRoZSBjYXJldFxcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcXG4gICAgICBjYWxjKC0xICogJHBvcG92ZXItb2Zmc2V0KSxcXG4gICAgICBjYWxjKDAuNSAqICRwb3BvdmVyLW9mZnNldCArIDE2cHgpXFxuICAgICk7XFxuICB9XFxuXFxuICBbZGlyPSdydGwnXVxcbiAgICAuI3skcHJlZml4fS0tcG9wb3Zlci0tbGVmdDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50LFxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWxlZnQtYm90dG9tOm5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQsXFxuICBbZGlyPSdydGwnXVxcbiAgICAuI3skcHJlZml4fS0tcG9wb3Zlci0tbGVmdC1lbmQ6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudCxcXG4gIFtkaXI9J3J0bCddXFxuICAgIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1sZWZ0LXRvcDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50LFxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWxlZnQtc3RhcnQ6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudCB7XFxuICAgIGluc2V0LWlubGluZS1lbmQ6IGluaXRpYWw7XFxuICAgIGluc2V0LWlubGluZS1zdGFydDogMTAwJTtcXG4gIH1cXG5cXG4gIC8vIFBvcG92ZXIgaG92ZXIgYXJlYSBwbGFjZW1lbnRcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1sZWZ0XFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50OjpiZWZvcmUsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tbGVmdC10b3BcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQ6OmJlZm9yZSxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1sZWZ0LXN0YXJ0XFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50OjpiZWZvcmUsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tbGVmdC1ib3R0b21cXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnQ6OmJlZm9yZSxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1sZWZ0LWVuZFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudDo6YmVmb3JlIHtcXG4gICAgaW5saW5lLXNpemU6ICRwb3BvdmVyLW9mZnNldDtcXG4gICAgaW5zZXQtYmxvY2s6IDA7XFxuICAgIGluc2V0LWlubGluZS1lbmQ6IDA7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gIH1cXG5cXG4gIC8vIENhcmV0IHBsYWNlbWVudFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWxlZnQ6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tbGVmdC10b3A6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tbGVmdC1zdGFydDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1sZWZ0LWJvdHRvbTpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1sZWZ0LWVuZDpub3QoLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ24pXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCB7XFxuICAgIGJsb2NrLXNpemU6ICRwb3BvdmVyLWNhcmV0LXdpZHRoO1xcbiAgICBjbGlwLXBhdGg6IHBvbHlnb24oMCUgMCUsIDEwMCUgNTAlLCAwJSAxMDAlKTtcXG4gICAgaW5saW5lLXNpemU6ICRwb3BvdmVyLWNhcmV0LWhlaWdodDtcXG4gICAgaW5zZXQtYmxvY2stc3RhcnQ6IDUwJTtcXG4gICAgaW5zZXQtaW5saW5lLWVuZDogMTAwJTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYygtMSAqICRwb3BvdmVyLW9mZnNldCArIDEwMCUpLCAtNTAlKTtcXG4gIH1cXG5cXG4gIFtkaXI9J3J0bCddXFxuICAgIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1sZWZ0Om5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWxlZnQtdG9wOm5vdCguI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnbilcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgW2Rpcj0ncnRsJ11cXG4gICAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWxlZnQtc3RhcnQ6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQsXFxuICBbZGlyPSdydGwnXVxcbiAgICAuI3skcHJlZml4fS0tcG9wb3Zlci0tbGVmdC1ib3R0b206bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQsXFxuICBbZGlyPSdydGwnXVxcbiAgICAuI3skcHJlZml4fS0tcG9wb3Zlci0tbGVmdC1lbmQ6bm90KC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduKVxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQge1xcbiAgICBpbnNldC1pbmxpbmUtZW5kOiBpbml0aWFsO1xcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDEwMCU7XFxuICB9XFxuXFxuICAvLyBDYXJldCBwbGFjZW1lbnQgZm9yIGF1dG9BbGlnblxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWxlZnQuI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnblxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0LFxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLWxlZnQtdG9wLiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ25cXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnRcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1sZWZ0LXN0YXJ0LiN7JHByZWZpeH0tLXBvcG92ZXItLWF1dG8tYWxpZ25cXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3ZlclxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNvbnRlbnRcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jYXJldCxcXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS1sZWZ0LWJvdHRvbS4jeyRwcmVmaXh9LS1wb3BvdmVyLS1hdXRvLWFsaWduXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXJcXG4gICAgPiAuI3skcHJlZml4fS0tcG9wb3Zlci1jb250ZW50XFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY2FyZXQsXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tbGVmdC1lbmQuI3skcHJlZml4fS0tcG9wb3Zlci0tYXV0by1hbGlnblxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyLWNhcmV0IHtcXG4gICAgYmxvY2stc2l6ZTogJHBvcG92ZXItY2FyZXQtd2lkdGg7XFxuICAgIGNsaXAtcGF0aDogcG9seWdvbigwJSAwJSwgMTAwJSA1MCUsIDAlIDEwMCUpO1xcbiAgICBpbmxpbmUtc2l6ZTogJHBvcG92ZXItY2FyZXQtaGVpZ2h0O1xcbiAgfVxcblxcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgLy8gVGFiIFRpcCBWYXJpYW50XFxuICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tdGFiLXRpcFxcbiAgICA+IC4jeyRwcmVmaXh9LS1wb3BvdmVyXFxuICAgID4gLiN7JHByZWZpeH0tLXBvcG92ZXItY29udGVudCB7XFxuICAgIGJvcmRlci1yYWRpdXM6IDA7XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tdGFiLXRpcCAuI3skcHJlZml4fS0tcG9wb3ZlciB7XFxuICAgIHdpbGwtY2hhbmdlOiBmaWx0ZXI7XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0tcG9wb3Zlci0tdGFiLXRpcF9fYnV0dG9uIHtcXG4gICAgQGluY2x1ZGUgYnV0dG9uLXJlc2V0LnJlc2V0O1xcblxcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgYmxvY2stc2l6ZTogY29udmVydC50by1yZW0oMzJweCk7XFxuICAgIGlubGluZS1zaXplOiBjb252ZXJ0LnRvLXJlbSgzMnB4KTtcXG5cXG4gICAgJjpmb2N1cyB7XFxuICAgICAgQGluY2x1ZGUgZm9jdXMtb3V0bGluZSgnb3V0bGluZScpO1xcbiAgICB9XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lLiRsYXllci1ob3ZlcjtcXG4gICAgfVxcbiAgfVxcblxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRhYi10aXAuI3skcHJlZml4fS0tcG9wb3Zlci0tb3BlblxcbiAgICAuI3skcHJlZml4fS0tcG9wb3Zlci0tdGFiLXRpcF9fYnV0dG9uIHtcXG4gICAgYmFja2dyb3VuZDogdGhlbWUuJGxheWVyO1xcbiAgICBib3gtc2hhZG93OiAwIDJweCAycHggcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgfVxcblxcbiAgLiN7JHByZWZpeH0tLXBvcG92ZXItLXRhYi10aXAuI3skcHJlZml4fS0tcG9wb3Zlci0tb3BlblxcbiAgICAuI3skcHJlZml4fS0tcG9wb3Zlci0tdGFiLXRpcF9fYnV0dG9uOm5vdCg6Zm9jdXMpOjphZnRlciB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgei1pbmRleDogeignZmxvYXRpbmcnKSArIDE7XFxuICAgIGJhY2tncm91bmQ6IHRoZW1lLiRsYXllcjtcXG4gICAgYmxvY2stc2l6ZTogMnB4O1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgaW5saW5lLXNpemU6IDEwMCU7XFxuICAgIGluc2V0LWJsb2NrLWVuZDogMDtcXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1wb3BvdmVyLS10YWItdGlwX19idXR0b24gc3ZnIHtcXG4gICAgZmlsbDogdGhlbWUuJGljb24tcHJpbWFyeTtcXG4gIH1cXG59XFxuXCIsXCIvL1xcbi8vIENvcHlyaWdodCBJQk0gQ29ycC4gMjAxOCwgMjAyM1xcbi8vXFxuLy8gVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbi8vIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4vL1xcblxcbi8vLyBSZXNldHMgZGVmYXVsdCBicm93c2VyIHN0eWxpbmdcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIHV0aWxpdGllc1xcbkBtaXhpbiByZXNldCB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlcjogMDtcXG4gIG1hcmdpbjogMDtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgZm9udC1zaXplOiAxMDAlO1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xcblxcbiAgKixcXG4gICo6OmJlZm9yZSxcXG4gICo6OmFmdGVyIHtcXG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcXG4gIH1cXG59XFxuXCIsXCIvL1xcbi8vIENvcHlyaWdodCBJQk0gQ29ycC4gMjAyM1xcbi8vXFxuLy8gVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbi8vIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4vL1xcblxcbkB1c2UgJ3Nhc3M6bWFwJztcXG5cXG5AdXNlICcuLi9jb25maWcnO1xcbkB1c2UgJy4uL2xheW91dCcgYXMgKjtcXG5AdXNlICcuL2N1c3RvbS1wcm9wZXJ0eSc7XFxuXFxuLy8vIEVuYWJsZXMgdGhlIHVzZSBvZiBjb250ZXh0dWFsIGxheW91dCB0b2tlbnMgd2l0aGluIGEgY29tcG9uZW50LiBUaGlzIG1peGluIHNob3VsZCBiZVxcbi8vLyBpbmNsdWRlZCBvbiB0aGUgb3V0ZXJtb3N0IHNlbGVjdG9yIG9mIHRoZSBjb21wb25lbnQuXFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZ3JvdXAgLSBUaGUgbGF5b3V0IGdyb3VwIHRvIHVzZSBmb3IgdGhpcyBjb21wb25lbnRcXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkZWZhdWx0IC0gVGhlIGRlZmF1bHQgc3RlcCBpZiB0aGUgY29tcG9uZW50IGlzIG5vdCB3aXRoaW4gYSBsYXlvdXRcXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtaW4gLSBUaGUgbWluaW11bSBzdGVwIHN1cHBvcnRlZCBieSB0aGlzIGNvbXBvbmVudCAob3B0aW9uYWwpXFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWF4IC0gVGhlIG1heGltdW0gc3RlcCBzdXBwb3J0ZWQgYnkgdGhpcyBjb21wb25lbnQgKG9wdGlvbmFsKVxcbi8vLyBAZXhhbXBsZSBAaW5jbHVkZSB1c2UoJ3NpemUnLCAkZGVmYXVsdDogJ21kJywgJG1pbjogJ3NtJywgJG1heDogJ2xnJylcXG4vLy8gQGdyb3VwIHV0aWxpdGllc1xcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbkBtaXhpbiB1c2UoJGdyb3VwLCAkZGVmYXVsdCwgJG1pbjogbnVsbCwgJG1heDogbnVsbCkge1xcbiAgJHByb3BlcnRpZXM6IG1hcC5nZXQoJGxheW91dC10b2tlbnMsICRncm91cCk7XFxuXFxuICBAZWFjaCAkcHJvcGVydHksICRzdGVwcyBpbiAkcHJvcGVydGllcyB7XFxuICAgICRtaW5WYWx1ZTogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2xheW91dC0jeyRncm91cH0tI3skcHJvcGVydHl9LW1pbicpO1xcbiAgICBAaWYgJG1pbiB7XFxuICAgICAgJG1pblZhbHVlOiBtYXgoXFxuICAgICAgICAkbWluVmFsdWUsXFxuICAgICAgICBjdXN0b20tcHJvcGVydHkuZ2V0LXZhcignbGF5b3V0LSN7JGdyb3VwfS0jeyRwcm9wZXJ0eX0tI3skbWlufScpXFxuICAgICAgKTtcXG4gICAgfVxcblxcbiAgICAkbWF4VmFsdWU6IGN1c3RvbS1wcm9wZXJ0eS5nZXQtdmFyKCdsYXlvdXQtI3skZ3JvdXB9LSN7JHByb3BlcnR5fS1tYXgnKTtcXG4gICAgQGlmICRtYXgge1xcbiAgICAgICRtYXhWYWx1ZTogbWluKFxcbiAgICAgICAgJG1heFZhbHVlLFxcbiAgICAgICAgY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2xheW91dC0jeyRncm91cH0tI3skcHJvcGVydHl9LSN7JG1heH0nKVxcbiAgICAgICk7XFxuICAgIH1cXG5cXG4gICAgJHZhbHVlOiBjbGFtcChcXG4gICAgICAkbWluVmFsdWUsXFxuICAgICAgY3VzdG9tLXByb3BlcnR5LmdldC12YXIoXFxuICAgICAgICAnbGF5b3V0LSN7JGdyb3VwfS0jeyRwcm9wZXJ0eX0nLFxcbiAgICAgICAgY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2xheW91dC0jeyRncm91cH0tI3skcHJvcGVydHl9LSN7JGRlZmF1bHR9JylcXG4gICAgICApLFxcbiAgICAgICRtYXhWYWx1ZVxcbiAgICApO1xcblxcbiAgICBAaW5jbHVkZSBjdXN0b20tcHJvcGVydHkuZGVjbGFyYXRpb24oXFxuICAgICAgJ2xheW91dC0jeyRncm91cH0tI3skcHJvcGVydHl9LWxvY2FsJyxcXG4gICAgICAkdmFsdWVcXG4gICAgKTtcXG4gIH1cXG59XFxuXFxuLy8vIEFsbG93cyB0byByZWRlZmluZSBhbnkgdG9rZW4gdmFsdWVzIG9mIHRoZSBsYXlvdXQgbW9kdWxlIGluIGNhc2UgYSBjb21wb25lbnQgaXMgdXNpbmdcXG4vLy8gbm9uLXN0YW5kYXJkIHZhbHVlcyBhbmQgc2hvdWxkIHN0aWxsIHBhcnRpY2lwYXRlIGluIHRoZSBsYXlvdXQgY29udGV4dFxcbi8vLyBAcGFyYW0ge01hcH0gJG92ZXJyaWRlcyAtIFRoZSBtYXAgb2Ygb3ZlcnJpZGVzLiBNdXN0IGZvbGxvdyAoIGdyb3VwOiAoIHByb3BlcnR5OiAoIHN0ZXA6IHZhbHVlICkgKSApXFxuLy8vIEBleGFtcGxlIEBpbmNsdWRlIHJlZGVmaW5lLXRva2VucygoIHNpemU6ICggaGVpZ2h0OiAoIHNtOiAxLjEyNXJlbSwgbWQ6IDEuNXJlbSApICkgKSlcXG4vLy8gQGdyb3VwIHV0aWxpdGllc1xcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbkBtaXhpbiByZWRlZmluZS10b2tlbnMoJG92ZXJyaWRlcykge1xcbiAgQGVhY2ggJGdyb3VwLCAkcHJvcGVydGllcyBpbiAkb3ZlcnJpZGVzIHtcXG4gICAgQGVhY2ggJHByb3BlcnR5LCAkc3RlcHMgaW4gJHByb3BlcnRpZXMge1xcbiAgICAgIEBlYWNoICRzdGVwLCAkdmFsdWUgaW4gJHN0ZXBzIHtcXG4gICAgICAgIEBpbmNsdWRlIGN1c3RvbS1wcm9wZXJ0eS5kZWNsYXJhdGlvbihcXG4gICAgICAgICAgJ2xheW91dC0jeyRncm91cH0tI3skcHJvcGVydHl9LSN7JHN0ZXB9JyxcXG4gICAgICAgICAgJHZhbHVlXFxuICAgICAgICApO1xcblxcbiAgICAgICAgJi4je2NvbmZpZy4kcHJlZml4fS0tbGF5b3V0LS0jeyRncm91cH0tI3skc3RlcH0sXFxuICAgICAgICAuI3tjb25maWcuJHByZWZpeH0tLWxheW91dC0tI3skZ3JvdXB9LSN7JHN0ZXB9IDp3aGVyZSgmKSB7XFxuICAgICAgICAgICR0b2tlbjogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoXFxuICAgICAgICAgICAgJ2xheW91dC0jeyRncm91cH0tI3skcHJvcGVydHl9LSN7JHN0ZXB9J1xcbiAgICAgICAgICApO1xcbiAgICAgICAgICBAaW5jbHVkZSBjdXN0b20tcHJvcGVydHkuZGVjbGFyYXRpb24oXFxuICAgICAgICAgICAgJ2xheW91dC0jeyRncm91cH0tI3skcHJvcGVydHl9JyxcXG4gICAgICAgICAgICAkdG9rZW5cXG4gICAgICAgICAgKTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLy8vIEludGVybmFsIGJhc2UgZnVuY3Rpb24gZm9yIHJldHJpZXZpbmcgYSBwcm9wZXJ0eSBmcm9tIGEgbGF5b3V0IGdyb3VwLlxcbi8vLyBAcGFyYW0ge1N0cmluZ30gJGdyb3VwIC0gVGhlIGdyb3VwIG5hbWUgYXMgZGVmaW5lZCBpbiB0aGUgJGxheW91dC10b2tlbnNcXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBuYW1lXFxuLy8vIEBleGFtcGxlIEBpbmNsdWRlIC1ncm91cCgnc2l6ZScsICRwcm9wZXJ0eSlcXG4vLy8gQGdyb3VwIHV0aWxpdGllc1xcbi8vLyBAYWNjZXNzIHByaXZhdGVcXG5AZnVuY3Rpb24gLWdyb3VwKCRncm91cCwgJHByb3BlcnR5KSB7XFxuICBAcmV0dXJuIGN1c3RvbS1wcm9wZXJ0eS5nZXQtdmFyKCdsYXlvdXQtI3skZ3JvdXB9LSN7JHByb3BlcnR5fS1sb2NhbCcpO1xcbn1cXG5cXG4vLy8gUmV0cmlldmVzIHRoZSBjdXJyZW50IHZhbHVlIGZvciBhIHByb3BlcnR5IHRva2VuIGluIHRoZSBsYXlvdXQgc2l6ZS5cXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBuYW1lXFxuLy8vIEBleGFtcGxlIGhlaWdodDogc2l6ZSgnaGVpZ2h0Jyk7XFxuLy8vIEBncm91cCB1dGlsaXRpZXNcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG5AZnVuY3Rpb24gc2l6ZSgkcHJvcGVydHkpIHtcXG4gIEByZXR1cm4gLWdyb3VwKCdzaXplJywgJHByb3BlcnR5KTtcXG59XFxuXFxuLy8vIFJldHJpZXZlcyB0aGUgY3VycmVudCB2YWx1ZSBmb3IgYSBwcm9wZXJ0eSB0b2tlbiBpbiB0aGUgbGF5b3V0IGRlbnNpdHkuXFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkcHJvcGVydHkgLSBUaGUgcHJvcGVydHkgbmFtZVxcbi8vLyBAZXhhbXBsZSBwYWRkaW5nLWlubGluZTogZGVuc2l0eSgncGFkZGluZy1pbmxpbmUnKTtcXG4vLy8gQGdyb3VwIHV0aWxpdGllc1xcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbkBmdW5jdGlvbiBkZW5zaXR5KCRwcm9wZXJ0eSkge1xcbiAgQHJldHVybiAtZ3JvdXAoJ2RlbnNpdHknLCAkcHJvcGVydHkpO1xcbn1cXG5cIixcIi8vXFxuLy8gQ29weXJpZ2h0IElCTSBDb3JwLiAyMDIxXFxuLy9cXG4vLyBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUtMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuLy8gTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbi8vXFxuQHVzZSAnY29tcG9uZW50LXJlc2V0JztcXG5cXG4vLy8gUmVzZXRzIGJ1dHRvbiBzdHlsZXNcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQHBhcmFtIHtCb29sfSAkd2lkdGggW3RydWVdIC0gU2V0cyB3aWR0aCB0byAxMDAlIGlmIHRydWVcXG4vLy8gQGV4YW1wbGUgQGluY2x1ZGUgYnV0dG9uLXJlc2V0KCR3aWR0aDogZmFsc2UpO1xcbi8vLyBAZ3JvdXAgdXRpbGl0aWVzXFxuQG1peGluIHJlc2V0KCR3aWR0aDogdHJ1ZSkge1xcbiAgQGluY2x1ZGUgY29tcG9uZW50LXJlc2V0LnJlc2V0O1xcblxcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlcjogMDtcXG4gIGFwcGVhcmFuY2U6IG5vbmU7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XFxuXFxuICBAaWYgKCR3aWR0aCA9PSB0cnVlKSB7XFxuICAgIGlubGluZS1zaXplOiAxMDAlO1xcbiAgfVxcblxcbiAgJjo6LW1vei1mb2N1cy1pbm5lciB7XFxuICAgIGJvcmRlcjogMDtcXG4gIH1cXG59XFxuXCIsXCIvL1xcbi8vIENvcHlyaWdodCBJQk0gQ29ycC4gMjAyMVxcbi8vXFxuLy8gVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbi8vIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4vL1xcblxcbkB1c2UgJy4uL3RoZW1lJztcXG5cXG4vLy8gQWRkcyBvdXRsaW5lIHN0eWxlcyBkZXBlbmRpbmcgb24gc3BlY2lmaWMgdHlwZVxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHR5cGUgWydib3JkZXInXSAtIFR5cGUgb2Ygb3V0bGluZSBmcm9tOiBgYm9yZGVyYCwgYGJsdXJyZWRgLCBgb3V0bGluZWAsIGBpbnZhbGlkYCwgYHJlc2V0YFxcbi8vLyBAZXhhbXBsZSBAaW5jbHVkZSBmb2N1cy1vdXRsaW5lKCdvdXRsaW5lJyk7XFxuLy8vIEBncm91cCB1dGlsaXRpZXNcXG5AbWl4aW4gZm9jdXMtb3V0bGluZSgkdHlwZTogJ2JvcmRlcicpIHtcXG4gIEBpZiAoJHR5cGUgPT0gJ2JvcmRlcicpIHtcXG4gICAgb3V0bGluZTogMXB4IHNvbGlkIHRoZW1lLiRmb2N1cztcXG5cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtY29udHJhc3QpIHtcXG4gICAgICBvdXRsaW5lLXN0eWxlOiBkb3R0ZWQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gIEBpZiAoJHR5cGUgPT0gJ2JsdXJyZWQnKSB7XFxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCB0aGVtZS4kZm9jdXM7XFxuICAgIG91dGxpbmU6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIH1cXG5cXG4gIEBpZiAoJHR5cGUgPT0gJ291dGxpbmUnKSB7XFxuICAgIG91dGxpbmU6IDJweCBzb2xpZCB0aGVtZS4kZm9jdXM7XFxuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xcblxcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1jb250cmFzdCkge1xcbiAgICAgIG91dGxpbmUtc3R5bGU6IGRvdHRlZDtcXG4gICAgfVxcbiAgfVxcblxcbiAgQGlmICgkdHlwZSA9PSAnb3V0bGluZS1jb21wYXQnKSB7XFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgIGJvcmRlcjogMnB4IHNvbGlkIHRoZW1lLiRmb2N1cztcXG5cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtY29udHJhc3QpIHtcXG4gICAgICBib3JkZXItc3R5bGU6IGRvdHRlZDtcXG4gICAgfVxcbiAgfVxcblxcbiAgQGlmICgkdHlwZSA9PSAnaW52YWxpZCcpIHtcXG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHRoZW1lLiRzdXBwb3J0LWVycm9yO1xcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcXG5cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtY29udHJhc3QpIHtcXG4gICAgICBvdXRsaW5lLXN0eWxlOiBkb3R0ZWQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gIEBpZiAoJHR5cGUgPT0gJ3Jlc2V0Jykge1xcbiAgICBvdXRsaW5lOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xcbiAgfVxcbn1cXG5cIixcIi8vIENvZGUgZ2VuZXJhdGVkIGJ5IEBjYXJib24vdGhlbWVzLiBETyBOT1QgRURJVC5cXG4vL1xcbi8vIENvcHlyaWdodCBJQk0gQ29ycC4gMjAxOCwgMjAyM1xcbi8vXFxuLy8gVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbi8vIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4vL1xcblxcbkB1c2UgJ3Nhc3M6bWFwJztcXG5AdXNlICcuLi9jb25maWcnO1xcbkB1c2UgJy4uL3RoZW1lJztcXG5cXG4vLy8gSW50ZXJuYWwgaGVscGVyIGZvciBnZW5lcmF0aW5nIENTUyBDdXN0b20gUHJvcGVydGllc1xcbkBmdW5jdGlvbiBfZ2V0KCR0b2tlbikge1xcbiAgQGlmIGNvbmZpZy4kdXNlLWZhbGxiYWNrLXZhbHVlID09IGZhbHNlIHtcXG4gICAgQHJldHVybiB2YXIoLS0je2NvbmZpZy4kcHJlZml4fS0jeyR0b2tlbn0pO1xcbiAgfSBAZWxzZSB7XFxuICAgIEByZXR1cm4gdmFyKC0tI3tjb25maWcuJHByZWZpeH0tI3skdG9rZW59LCAje3RoZW1lLmdldCgkdG9rZW4pfSk7XFxuICB9XFxufVxcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBiYWNrZ3JvdW5kYCB0b2tlblxcbiRiYWNrZ3JvdW5kOiBfZ2V0KCdiYWNrZ3JvdW5kJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGJhY2tncm91bmQtYWN0aXZlYCB0b2tlblxcbiRiYWNrZ3JvdW5kLWFjdGl2ZTogX2dldCgnYmFja2dyb3VuZC1hY3RpdmUnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYmFja2dyb3VuZC1zZWxlY3RlZGAgdG9rZW5cXG4kYmFja2dyb3VuZC1zZWxlY3RlZDogX2dldCgnYmFja2dyb3VuZC1zZWxlY3RlZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBiYWNrZ3JvdW5kLXNlbGVjdGVkLWhvdmVyYCB0b2tlblxcbiRiYWNrZ3JvdW5kLXNlbGVjdGVkLWhvdmVyOiBfZ2V0KCdiYWNrZ3JvdW5kLXNlbGVjdGVkLWhvdmVyJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGJhY2tncm91bmQtaG92ZXJgIHRva2VuXFxuJGJhY2tncm91bmQtaG92ZXI6IF9nZXQoJ2JhY2tncm91bmQtaG92ZXInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYmFja2dyb3VuZC1icmFuZGAgdG9rZW5cXG4kYmFja2dyb3VuZC1icmFuZDogX2dldCgnYmFja2dyb3VuZC1icmFuZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBiYWNrZ3JvdW5kLWludmVyc2VgIHRva2VuXFxuJGJhY2tncm91bmQtaW52ZXJzZTogX2dldCgnYmFja2dyb3VuZC1pbnZlcnNlJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGJhY2tncm91bmQtaW52ZXJzZS1ob3ZlcmAgdG9rZW5cXG4kYmFja2dyb3VuZC1pbnZlcnNlLWhvdmVyOiBfZ2V0KCdiYWNrZ3JvdW5kLWludmVyc2UtaG92ZXInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItMDFgIHRva2VuXFxuJGxheWVyLTAxOiBfZ2V0KCdsYXllci0wMScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1hY3RpdmUtMDFgIHRva2VuXFxuJGxheWVyLWFjdGl2ZS0wMTogX2dldCgnbGF5ZXItYWN0aXZlLTAxJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLWJhY2tncm91bmQtMDFgIHRva2VuXFxuJGxheWVyLWJhY2tncm91bmQtMDE6IF9nZXQoJ2xheWVyLWJhY2tncm91bmQtMDEnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItaG92ZXItMDFgIHRva2VuXFxuJGxheWVyLWhvdmVyLTAxOiBfZ2V0KCdsYXllci1ob3Zlci0wMScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1zZWxlY3RlZC0wMWAgdG9rZW5cXG4kbGF5ZXItc2VsZWN0ZWQtMDE6IF9nZXQoJ2xheWVyLXNlbGVjdGVkLTAxJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLXNlbGVjdGVkLWhvdmVyLTAxYCB0b2tlblxcbiRsYXllci1zZWxlY3RlZC1ob3Zlci0wMTogX2dldCgnbGF5ZXItc2VsZWN0ZWQtaG92ZXItMDEnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItMDJgIHRva2VuXFxuJGxheWVyLTAyOiBfZ2V0KCdsYXllci0wMicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1hY3RpdmUtMDJgIHRva2VuXFxuJGxheWVyLWFjdGl2ZS0wMjogX2dldCgnbGF5ZXItYWN0aXZlLTAyJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLWJhY2tncm91bmQtMDJgIHRva2VuXFxuJGxheWVyLWJhY2tncm91bmQtMDI6IF9nZXQoJ2xheWVyLWJhY2tncm91bmQtMDInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItaG92ZXItMDJgIHRva2VuXFxuJGxheWVyLWhvdmVyLTAyOiBfZ2V0KCdsYXllci1ob3Zlci0wMicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1zZWxlY3RlZC0wMmAgdG9rZW5cXG4kbGF5ZXItc2VsZWN0ZWQtMDI6IF9nZXQoJ2xheWVyLXNlbGVjdGVkLTAyJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLXNlbGVjdGVkLWhvdmVyLTAyYCB0b2tlblxcbiRsYXllci1zZWxlY3RlZC1ob3Zlci0wMjogX2dldCgnbGF5ZXItc2VsZWN0ZWQtaG92ZXItMDInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItMDNgIHRva2VuXFxuJGxheWVyLTAzOiBfZ2V0KCdsYXllci0wMycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1hY3RpdmUtMDNgIHRva2VuXFxuJGxheWVyLWFjdGl2ZS0wMzogX2dldCgnbGF5ZXItYWN0aXZlLTAzJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLWJhY2tncm91bmQtMDNgIHRva2VuXFxuJGxheWVyLWJhY2tncm91bmQtMDM6IF9nZXQoJ2xheWVyLWJhY2tncm91bmQtMDMnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItaG92ZXItMDNgIHRva2VuXFxuJGxheWVyLWhvdmVyLTAzOiBfZ2V0KCdsYXllci1ob3Zlci0wMycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1zZWxlY3RlZC0wM2AgdG9rZW5cXG4kbGF5ZXItc2VsZWN0ZWQtMDM6IF9nZXQoJ2xheWVyLXNlbGVjdGVkLTAzJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLXNlbGVjdGVkLWhvdmVyLTAzYCB0b2tlblxcbiRsYXllci1zZWxlY3RlZC1ob3Zlci0wMzogX2dldCgnbGF5ZXItc2VsZWN0ZWQtaG92ZXItMDMnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItc2VsZWN0ZWQtaW52ZXJzZWAgdG9rZW5cXG4kbGF5ZXItc2VsZWN0ZWQtaW52ZXJzZTogX2dldCgnbGF5ZXItc2VsZWN0ZWQtaW52ZXJzZScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1zZWxlY3RlZC1kaXNhYmxlZGAgdG9rZW5cXG4kbGF5ZXItc2VsZWN0ZWQtZGlzYWJsZWQ6IF9nZXQoJ2xheWVyLXNlbGVjdGVkLWRpc2FibGVkJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLWFjY2VudC0wMWAgdG9rZW5cXG4kbGF5ZXItYWNjZW50LTAxOiBfZ2V0KCdsYXllci1hY2NlbnQtMDEnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItYWNjZW50LWFjdGl2ZS0wMWAgdG9rZW5cXG4kbGF5ZXItYWNjZW50LWFjdGl2ZS0wMTogX2dldCgnbGF5ZXItYWNjZW50LWFjdGl2ZS0wMScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1hY2NlbnQtaG92ZXItMDFgIHRva2VuXFxuJGxheWVyLWFjY2VudC1ob3Zlci0wMTogX2dldCgnbGF5ZXItYWNjZW50LWhvdmVyLTAxJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLWFjY2VudC0wMmAgdG9rZW5cXG4kbGF5ZXItYWNjZW50LTAyOiBfZ2V0KCdsYXllci1hY2NlbnQtMDInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItYWNjZW50LWFjdGl2ZS0wMmAgdG9rZW5cXG4kbGF5ZXItYWNjZW50LWFjdGl2ZS0wMjogX2dldCgnbGF5ZXItYWNjZW50LWFjdGl2ZS0wMicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1hY2NlbnQtaG92ZXItMDJgIHRva2VuXFxuJGxheWVyLWFjY2VudC1ob3Zlci0wMjogX2dldCgnbGF5ZXItYWNjZW50LWhvdmVyLTAyJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLWFjY2VudC0wM2AgdG9rZW5cXG4kbGF5ZXItYWNjZW50LTAzOiBfZ2V0KCdsYXllci1hY2NlbnQtMDMnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItYWNjZW50LWFjdGl2ZS0wM2AgdG9rZW5cXG4kbGF5ZXItYWNjZW50LWFjdGl2ZS0wMzogX2dldCgnbGF5ZXItYWNjZW50LWFjdGl2ZS0wMycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1hY2NlbnQtaG92ZXItMDNgIHRva2VuXFxuJGxheWVyLWFjY2VudC1ob3Zlci0wMzogX2dldCgnbGF5ZXItYWNjZW50LWhvdmVyLTAzJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGZpZWxkLTAxYCB0b2tlblxcbiRmaWVsZC0wMTogX2dldCgnZmllbGQtMDEnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgZmllbGQtaG92ZXItMDFgIHRva2VuXFxuJGZpZWxkLWhvdmVyLTAxOiBfZ2V0KCdmaWVsZC1ob3Zlci0wMScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBmaWVsZC0wMmAgdG9rZW5cXG4kZmllbGQtMDI6IF9nZXQoJ2ZpZWxkLTAyJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGZpZWxkLWhvdmVyLTAyYCB0b2tlblxcbiRmaWVsZC1ob3Zlci0wMjogX2dldCgnZmllbGQtaG92ZXItMDInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgZmllbGQtMDNgIHRva2VuXFxuJGZpZWxkLTAzOiBfZ2V0KCdmaWVsZC0wMycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBmaWVsZC1ob3Zlci0wM2AgdG9rZW5cXG4kZmllbGQtaG92ZXItMDM6IF9nZXQoJ2ZpZWxkLWhvdmVyLTAzJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGludGVyYWN0aXZlYCB0b2tlblxcbiRpbnRlcmFjdGl2ZTogX2dldCgnaW50ZXJhY3RpdmUnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYm9yZGVyLXN1YnRsZS0wMGAgdG9rZW5cXG4kYm9yZGVyLXN1YnRsZS0wMDogX2dldCgnYm9yZGVyLXN1YnRsZS0wMCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBib3JkZXItc3VidGxlLTAxYCB0b2tlblxcbiRib3JkZXItc3VidGxlLTAxOiBfZ2V0KCdib3JkZXItc3VidGxlLTAxJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGJvcmRlci1zdWJ0bGUtc2VsZWN0ZWQtMDFgIHRva2VuXFxuJGJvcmRlci1zdWJ0bGUtc2VsZWN0ZWQtMDE6IF9nZXQoJ2JvcmRlci1zdWJ0bGUtc2VsZWN0ZWQtMDEnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYm9yZGVyLXN1YnRsZS0wMmAgdG9rZW5cXG4kYm9yZGVyLXN1YnRsZS0wMjogX2dldCgnYm9yZGVyLXN1YnRsZS0wMicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBib3JkZXItc3VidGxlLXNlbGVjdGVkLTAyYCB0b2tlblxcbiRib3JkZXItc3VidGxlLXNlbGVjdGVkLTAyOiBfZ2V0KCdib3JkZXItc3VidGxlLXNlbGVjdGVkLTAyJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGJvcmRlci1zdWJ0bGUtMDNgIHRva2VuXFxuJGJvcmRlci1zdWJ0bGUtMDM6IF9nZXQoJ2JvcmRlci1zdWJ0bGUtMDMnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYm9yZGVyLXN1YnRsZS1zZWxlY3RlZC0wM2AgdG9rZW5cXG4kYm9yZGVyLXN1YnRsZS1zZWxlY3RlZC0wMzogX2dldCgnYm9yZGVyLXN1YnRsZS1zZWxlY3RlZC0wMycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBib3JkZXItc3Ryb25nLTAxYCB0b2tlblxcbiRib3JkZXItc3Ryb25nLTAxOiBfZ2V0KCdib3JkZXItc3Ryb25nLTAxJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGJvcmRlci1zdHJvbmctMDJgIHRva2VuXFxuJGJvcmRlci1zdHJvbmctMDI6IF9nZXQoJ2JvcmRlci1zdHJvbmctMDInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYm9yZGVyLXN0cm9uZy0wM2AgdG9rZW5cXG4kYm9yZGVyLXN0cm9uZy0wMzogX2dldCgnYm9yZGVyLXN0cm9uZy0wMycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBib3JkZXItdGlsZS0wMWAgdG9rZW5cXG4kYm9yZGVyLXRpbGUtMDE6IF9nZXQoJ2JvcmRlci10aWxlLTAxJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGJvcmRlci10aWxlLTAyYCB0b2tlblxcbiRib3JkZXItdGlsZS0wMjogX2dldCgnYm9yZGVyLXRpbGUtMDInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYm9yZGVyLXRpbGUtMDNgIHRva2VuXFxuJGJvcmRlci10aWxlLTAzOiBfZ2V0KCdib3JkZXItdGlsZS0wMycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBib3JkZXItaW52ZXJzZWAgdG9rZW5cXG4kYm9yZGVyLWludmVyc2U6IF9nZXQoJ2JvcmRlci1pbnZlcnNlJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGJvcmRlci1pbnRlcmFjdGl2ZWAgdG9rZW5cXG4kYm9yZGVyLWludGVyYWN0aXZlOiBfZ2V0KCdib3JkZXItaW50ZXJhY3RpdmUnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYm9yZGVyLWRpc2FibGVkYCB0b2tlblxcbiRib3JkZXItZGlzYWJsZWQ6IF9nZXQoJ2JvcmRlci1kaXNhYmxlZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGB0ZXh0LXByaW1hcnlgIHRva2VuXFxuJHRleHQtcHJpbWFyeTogX2dldCgndGV4dC1wcmltYXJ5JykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYHRleHQtc2Vjb25kYXJ5YCB0b2tlblxcbiR0ZXh0LXNlY29uZGFyeTogX2dldCgndGV4dC1zZWNvbmRhcnknKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgdGV4dC1wbGFjZWhvbGRlcmAgdG9rZW5cXG4kdGV4dC1wbGFjZWhvbGRlcjogX2dldCgndGV4dC1wbGFjZWhvbGRlcicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGB0ZXh0LWhlbHBlcmAgdG9rZW5cXG4kdGV4dC1oZWxwZXI6IF9nZXQoJ3RleHQtaGVscGVyJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYHRleHQtZXJyb3JgIHRva2VuXFxuJHRleHQtZXJyb3I6IF9nZXQoJ3RleHQtZXJyb3InKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgdGV4dC1pbnZlcnNlYCB0b2tlblxcbiR0ZXh0LWludmVyc2U6IF9nZXQoJ3RleHQtaW52ZXJzZScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGB0ZXh0LW9uLWNvbG9yYCB0b2tlblxcbiR0ZXh0LW9uLWNvbG9yOiBfZ2V0KCd0ZXh0LW9uLWNvbG9yJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYHRleHQtb24tY29sb3ItZGlzYWJsZWRgIHRva2VuXFxuJHRleHQtb24tY29sb3ItZGlzYWJsZWQ6IF9nZXQoJ3RleHQtb24tY29sb3ItZGlzYWJsZWQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgdGV4dC1kaXNhYmxlZGAgdG9rZW5cXG4kdGV4dC1kaXNhYmxlZDogX2dldCgndGV4dC1kaXNhYmxlZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsaW5rLXByaW1hcnlgIHRva2VuXFxuJGxpbmstcHJpbWFyeTogX2dldCgnbGluay1wcmltYXJ5JykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxpbmstcHJpbWFyeS1ob3ZlcmAgdG9rZW5cXG4kbGluay1wcmltYXJ5LWhvdmVyOiBfZ2V0KCdsaW5rLXByaW1hcnktaG92ZXInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGluay1zZWNvbmRhcnlgIHRva2VuXFxuJGxpbmstc2Vjb25kYXJ5OiBfZ2V0KCdsaW5rLXNlY29uZGFyeScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsaW5rLWludmVyc2UtdmlzaXRlZGAgdG9rZW5cXG4kbGluay1pbnZlcnNlLXZpc2l0ZWQ6IF9nZXQoJ2xpbmstaW52ZXJzZS12aXNpdGVkJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxpbmstdmlzaXRlZGAgdG9rZW5cXG4kbGluay12aXNpdGVkOiBfZ2V0KCdsaW5rLXZpc2l0ZWQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGluay1pbnZlcnNlYCB0b2tlblxcbiRsaW5rLWludmVyc2U6IF9nZXQoJ2xpbmstaW52ZXJzZScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsaW5rLWludmVyc2UtYWN0aXZlYCB0b2tlblxcbiRsaW5rLWludmVyc2UtYWN0aXZlOiBfZ2V0KCdsaW5rLWludmVyc2UtYWN0aXZlJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxpbmstaW52ZXJzZS1ob3ZlcmAgdG9rZW5cXG4kbGluay1pbnZlcnNlLWhvdmVyOiBfZ2V0KCdsaW5rLWludmVyc2UtaG92ZXInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgaWNvbi1wcmltYXJ5YCB0b2tlblxcbiRpY29uLXByaW1hcnk6IF9nZXQoJ2ljb24tcHJpbWFyeScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBpY29uLXNlY29uZGFyeWAgdG9rZW5cXG4kaWNvbi1zZWNvbmRhcnk6IF9nZXQoJ2ljb24tc2Vjb25kYXJ5JykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGljb24taW52ZXJzZWAgdG9rZW5cXG4kaWNvbi1pbnZlcnNlOiBfZ2V0KCdpY29uLWludmVyc2UnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgaWNvbi1vbi1jb2xvcmAgdG9rZW5cXG4kaWNvbi1vbi1jb2xvcjogX2dldCgnaWNvbi1vbi1jb2xvcicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBpY29uLW9uLWNvbG9yLWRpc2FibGVkYCB0b2tlblxcbiRpY29uLW9uLWNvbG9yLWRpc2FibGVkOiBfZ2V0KCdpY29uLW9uLWNvbG9yLWRpc2FibGVkJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGljb24tZGlzYWJsZWRgIHRva2VuXFxuJGljb24tZGlzYWJsZWQ6IF9nZXQoJ2ljb24tZGlzYWJsZWQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgaWNvbi1pbnRlcmFjdGl2ZWAgdG9rZW5cXG4kaWNvbi1pbnRlcmFjdGl2ZTogX2dldCgnaWNvbi1pbnRlcmFjdGl2ZScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBzdXBwb3J0LWVycm9yYCB0b2tlblxcbiRzdXBwb3J0LWVycm9yOiBfZ2V0KCdzdXBwb3J0LWVycm9yJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYHN1cHBvcnQtc3VjY2Vzc2AgdG9rZW5cXG4kc3VwcG9ydC1zdWNjZXNzOiBfZ2V0KCdzdXBwb3J0LXN1Y2Nlc3MnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgc3VwcG9ydC13YXJuaW5nYCB0b2tlblxcbiRzdXBwb3J0LXdhcm5pbmc6IF9nZXQoJ3N1cHBvcnQtd2FybmluZycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBzdXBwb3J0LWluZm9gIHRva2VuXFxuJHN1cHBvcnQtaW5mbzogX2dldCgnc3VwcG9ydC1pbmZvJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYHN1cHBvcnQtZXJyb3ItaW52ZXJzZWAgdG9rZW5cXG4kc3VwcG9ydC1lcnJvci1pbnZlcnNlOiBfZ2V0KCdzdXBwb3J0LWVycm9yLWludmVyc2UnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgc3VwcG9ydC1zdWNjZXNzLWludmVyc2VgIHRva2VuXFxuJHN1cHBvcnQtc3VjY2Vzcy1pbnZlcnNlOiBfZ2V0KCdzdXBwb3J0LXN1Y2Nlc3MtaW52ZXJzZScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBzdXBwb3J0LXdhcm5pbmctaW52ZXJzZWAgdG9rZW5cXG4kc3VwcG9ydC13YXJuaW5nLWludmVyc2U6IF9nZXQoJ3N1cHBvcnQtd2FybmluZy1pbnZlcnNlJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYHN1cHBvcnQtaW5mby1pbnZlcnNlYCB0b2tlblxcbiRzdXBwb3J0LWluZm8taW52ZXJzZTogX2dldCgnc3VwcG9ydC1pbmZvLWludmVyc2UnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgc3VwcG9ydC1jYXV0aW9uLW1ham9yYCB0b2tlblxcbiRzdXBwb3J0LWNhdXRpb24tbWFqb3I6IF9nZXQoJ3N1cHBvcnQtY2F1dGlvbi1tYWpvcicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBzdXBwb3J0LWNhdXRpb24tbWlub3JgIHRva2VuXFxuJHN1cHBvcnQtY2F1dGlvbi1taW5vcjogX2dldCgnc3VwcG9ydC1jYXV0aW9uLW1pbm9yJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYHN1cHBvcnQtY2F1dGlvbi11bmRlZmluZWRgIHRva2VuXFxuJHN1cHBvcnQtY2F1dGlvbi11bmRlZmluZWQ6IF9nZXQoJ3N1cHBvcnQtY2F1dGlvbi11bmRlZmluZWQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYWktcG9wb3Zlci1iYWNrZ3JvdW5kYCB0b2tlblxcbiRhaS1wb3BvdmVyLWJhY2tncm91bmQ6IF9nZXQoJ2FpLXBvcG92ZXItYmFja2dyb3VuZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBhaS1wb3BvdmVyLXNoYWRvdy1vdXRlci0wMWAgdG9rZW5cXG4kYWktcG9wb3Zlci1zaGFkb3ctb3V0ZXItMDE6IF9nZXQoJ2FpLXBvcG92ZXItc2hhZG93LW91dGVyLTAxJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGFpLXBvcG92ZXItc2hhZG93LW91dGVyLTAyYCB0b2tlblxcbiRhaS1wb3BvdmVyLXNoYWRvdy1vdXRlci0wMjogX2dldCgnYWktcG9wb3Zlci1zaGFkb3ctb3V0ZXItMDInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYWktaW5uZXItc2hhZG93YCB0b2tlblxcbiRhaS1pbm5lci1zaGFkb3c6IF9nZXQoJ2FpLWlubmVyLXNoYWRvdycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBhaS1hdXJhLXN0YXJ0LXNtYCB0b2tlblxcbiRhaS1hdXJhLXN0YXJ0LXNtOiBfZ2V0KCdhaS1hdXJhLXN0YXJ0LXNtJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGFpLWF1cmEtc3RhcnRgIHRva2VuXFxuJGFpLWF1cmEtc3RhcnQ6IF9nZXQoJ2FpLWF1cmEtc3RhcnQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYWktYXVyYS1lbmRgIHRva2VuXFxuJGFpLWF1cmEtZW5kOiBfZ2V0KCdhaS1hdXJhLWVuZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBhaS1hdXJhLWhvdmVyLWJhY2tncm91bmRgIHRva2VuXFxuJGFpLWF1cmEtaG92ZXItYmFja2dyb3VuZDogX2dldCgnYWktYXVyYS1ob3Zlci1iYWNrZ3JvdW5kJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGFpLWF1cmEtaG92ZXItc3RhcnRgIHRva2VuXFxuJGFpLWF1cmEtaG92ZXItc3RhcnQ6IF9nZXQoJ2FpLWF1cmEtaG92ZXItc3RhcnQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYWktYXVyYS1ob3Zlci1lbmRgIHRva2VuXFxuJGFpLWF1cmEtaG92ZXItZW5kOiBfZ2V0KCdhaS1hdXJhLWhvdmVyLWVuZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBhaS1ib3JkZXItc3Ryb25nYCB0b2tlblxcbiRhaS1ib3JkZXItc3Ryb25nOiBfZ2V0KCdhaS1ib3JkZXItc3Ryb25nJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGFpLWJvcmRlci1zdGFydGAgdG9rZW5cXG4kYWktYm9yZGVyLXN0YXJ0OiBfZ2V0KCdhaS1ib3JkZXItc3RhcnQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYWktYm9yZGVyLWVuZGAgdG9rZW5cXG4kYWktYm9yZGVyLWVuZDogX2dldCgnYWktYm9yZGVyLWVuZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBhaS1kcm9wLXNoYWRvd2AgdG9rZW5cXG4kYWktZHJvcC1zaGFkb3c6IF9nZXQoJ2FpLWRyb3Atc2hhZG93JykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGFpLXNrZWxldG9uLWJhY2tncm91bmRgIHRva2VuXFxuJGFpLXNrZWxldG9uLWJhY2tncm91bmQ6IF9nZXQoJ2FpLXNrZWxldG9uLWJhY2tncm91bmQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYWktc2tlbGV0b24tZWxlbWVudC1iYWNrZ3JvdW5kYCB0b2tlblxcbiRhaS1za2VsZXRvbi1lbGVtZW50LWJhY2tncm91bmQ6IF9nZXQoXFxuICAnYWktc2tlbGV0b24tZWxlbWVudC1iYWNrZ3JvdW5kJ1xcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGFpLW92ZXJsYXlgIHRva2VuXFxuJGFpLW92ZXJsYXk6IF9nZXQoJ2FpLW92ZXJsYXknKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYWktcG9wb3Zlci1jYXJldC1jZW50ZXJgIHRva2VuXFxuJGFpLXBvcG92ZXItY2FyZXQtY2VudGVyOiBfZ2V0KCdhaS1wb3BvdmVyLWNhcmV0LWNlbnRlcicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBhaS1wb3BvdmVyLWNhcmV0LWJvdHRvbWAgdG9rZW5cXG4kYWktcG9wb3Zlci1jYXJldC1ib3R0b206IF9nZXQoJ2FpLXBvcG92ZXItY2FyZXQtYm90dG9tJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGFpLXBvcG92ZXItY2FyZXQtYm90dG9tLWJhY2tncm91bmRgIHRva2VuXFxuJGFpLXBvcG92ZXItY2FyZXQtYm90dG9tLWJhY2tncm91bmQ6IF9nZXQoXFxuICAnYWktcG9wb3Zlci1jYXJldC1ib3R0b20tYmFja2dyb3VuZCdcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBhaS1wb3BvdmVyLWNhcmV0LWJvdHRvbS1iYWNrZ3JvdW5kLWFjdGlvbnNgIHRva2VuXFxuJGFpLXBvcG92ZXItY2FyZXQtYm90dG9tLWJhY2tncm91bmQtYWN0aW9uczogX2dldChcXG4gICdhaS1wb3BvdmVyLWNhcmV0LWJvdHRvbS1iYWNrZ3JvdW5kLWFjdGlvbnMnXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgY2hhdC1wcm9tcHQtYmFja2dyb3VuZGAgdG9rZW5cXG4kY2hhdC1wcm9tcHQtYmFja2dyb3VuZDogX2dldCgnY2hhdC1wcm9tcHQtYmFja2dyb3VuZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBjaGF0LXByb21wdC1ib3JkZXItc3RhcnRgIHRva2VuXFxuJGNoYXQtcHJvbXB0LWJvcmRlci1zdGFydDogX2dldCgnY2hhdC1wcm9tcHQtYm9yZGVyLXN0YXJ0JykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGNoYXQtcHJvbXB0LWJvcmRlci1lbmRgIHRva2VuXFxuJGNoYXQtcHJvbXB0LWJvcmRlci1lbmQ6IF9nZXQoJ2NoYXQtcHJvbXB0LWJvcmRlci1lbmQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgY2hhdC1idWJibGUtdXNlcmAgdG9rZW5cXG4kY2hhdC1idWJibGUtdXNlcjogX2dldCgnY2hhdC1idWJibGUtdXNlcicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBjaGF0LWJ1YmJsZS1hZ2VudGAgdG9rZW5cXG4kY2hhdC1idWJibGUtYWdlbnQ6IF9nZXQoJ2NoYXQtYnViYmxlLWFnZW50JykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGNoYXQtYnViYmxlLWJvcmRlcmAgdG9rZW5cXG4kY2hhdC1idWJibGUtYm9yZGVyOiBfZ2V0KCdjaGF0LWJ1YmJsZS1ib3JkZXInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgY2hhdC1hdmF0YXItYm90YCB0b2tlblxcbiRjaGF0LWF2YXRhci1ib3Q6IF9nZXQoJ2NoYXQtYXZhdGFyLWJvdCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBjaGF0LWF2YXRhci1hZ2VudGAgdG9rZW5cXG4kY2hhdC1hdmF0YXItYWdlbnQ6IF9nZXQoJ2NoYXQtYXZhdGFyLWFnZW50JykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGNoYXQtYXZhdGFyLXVzZXJgIHRva2VuXFxuJGNoYXQtYXZhdGFyLXVzZXI6IF9nZXQoJ2NoYXQtYXZhdGFyLXVzZXInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgY2hhdC1zaGVsbC1iYWNrZ3JvdW5kYCB0b2tlblxcbiRjaGF0LXNoZWxsLWJhY2tncm91bmQ6IF9nZXQoJ2NoYXQtc2hlbGwtYmFja2dyb3VuZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBjaGF0LWhlYWRlci1iYWNrZ3JvdW5kYCB0b2tlblxcbiRjaGF0LWhlYWRlci1iYWNrZ3JvdW5kOiBfZ2V0KCdjaGF0LWhlYWRlci1iYWNrZ3JvdW5kJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGNoYXQtYnV0dG9uYCB0b2tlblxcbiRjaGF0LWJ1dHRvbjogX2dldCgnY2hhdC1idXR0b24nKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgY2hhdC1idXR0b24taG92ZXJgIHRva2VuXFxuJGNoYXQtYnV0dG9uLWhvdmVyOiBfZ2V0KCdjaGF0LWJ1dHRvbi1ob3ZlcicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBjaGF0LWJ1dHRvbi10ZXh0LWhvdmVyYCB0b2tlblxcbiRjaGF0LWJ1dHRvbi10ZXh0LWhvdmVyOiBfZ2V0KCdjaGF0LWJ1dHRvbi10ZXh0LWhvdmVyJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGNoYXQtYnV0dG9uLWFjdGl2ZWAgdG9rZW5cXG4kY2hhdC1idXR0b24tYWN0aXZlOiBfZ2V0KCdjaGF0LWJ1dHRvbi1hY3RpdmUnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgY2hhdC1idXR0b24tc2VsZWN0ZWRgIHRva2VuXFxuJGNoYXQtYnV0dG9uLXNlbGVjdGVkOiBfZ2V0KCdjaGF0LWJ1dHRvbi1zZWxlY3RlZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBjaGF0LWJ1dHRvbi10ZXh0LXNlbGVjdGVkYCB0b2tlblxcbiRjaGF0LWJ1dHRvbi10ZXh0LXNlbGVjdGVkOiBfZ2V0KCdjaGF0LWJ1dHRvbi10ZXh0LXNlbGVjdGVkJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGhpZ2hsaWdodGAgdG9rZW5cXG4kaGlnaGxpZ2h0OiBfZ2V0KCdoaWdobGlnaHQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgb3ZlcmxheWAgdG9rZW5cXG4kb3ZlcmxheTogX2dldCgnb3ZlcmxheScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGB0b2dnbGUtb2ZmYCB0b2tlblxcbiR0b2dnbGUtb2ZmOiBfZ2V0KCd0b2dnbGUtb2ZmJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYHNoYWRvd2AgdG9rZW5cXG4kc2hhZG93OiBfZ2V0KCdzaGFkb3cnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgZm9jdXNgIHRva2VuXFxuJGZvY3VzOiBfZ2V0KCdmb2N1cycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBmb2N1cy1pbnNldGAgdG9rZW5cXG4kZm9jdXMtaW5zZXQ6IF9nZXQoJ2ZvY3VzLWluc2V0JykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGZvY3VzLWludmVyc2VgIHRva2VuXFxuJGZvY3VzLWludmVyc2U6IF9nZXQoJ2ZvY3VzLWludmVyc2UnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgc2tlbGV0b24tYmFja2dyb3VuZGAgdG9rZW5cXG4kc2tlbGV0b24tYmFja2dyb3VuZDogX2dldCgnc2tlbGV0b24tYmFja2dyb3VuZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBza2VsZXRvbi1lbGVtZW50YCB0b2tlblxcbiRza2VsZXRvbi1lbGVtZW50OiBfZ2V0KCdza2VsZXRvbi1lbGVtZW50JykgIWRlZmF1bHQ7XFxuXCIsXCIvL1xcbi8vIENvcHlyaWdodCBJQk0gQ29ycC4gMjAxNiwgMjAyNVxcbi8vXFxuLy8gVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbi8vIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4vL1xcblxcbkB1c2UgJy4uL3BvcG92ZXInO1xcbkB1c2UgJy4uLy4uL2NvbmZpZycgYXMgKjtcXG5AdXNlICcuLi8uLi9zcGFjaW5nJztcXG5AdXNlICcuLi8uLi90aGVtZSc7XFxuQHVzZSAnLi4vLi4vdHlwZSc7XFxuQHVzZSAnLi4vLi4vbGF5ZXInIGFzICo7XFxuQHVzZSAnLi4vLi4vdXRpbGl0aWVzL2N1c3RvbS1wcm9wZXJ0eSc7XFxuQHVzZSAnLi4vLi4vdXRpbGl0aWVzL2NvbnZlcnQnO1xcbkB1c2UgJy4uLy4uL3V0aWxpdGllcy9idXR0b24tcmVzZXQnO1xcbkB1c2UgJy4uLy4uL3V0aWxpdGllcy9mb2N1cy1vdXRsaW5lJztcXG5cXG4kdG9vbHRpcC1wYWRkaW5nLWJsb2NrOiBjdXN0b20tcHJvcGVydHkuZ2V0LXZhcihcXG4gICd0b29sdGlwLXBhZGRpbmctYmxvY2snLFxcbiAgc3BhY2luZy4kc3BhY2luZy0wNVxcbik7XFxuXFxuJHRvb2x0aXAtcGFkZGluZy1pbmxpbmU6IGN1c3RvbS1wcm9wZXJ0eS5nZXQtdmFyKFxcbiAgJ3Rvb2x0aXAtcGFkZGluZy1pbmxpbmUnLFxcbiAgc3BhY2luZy4kc3BhY2luZy0wNVxcbik7XFxuXFxuQG1peGluIHRvb2x0aXAge1xcbiAgLiN7JHByZWZpeH0tLXRvb2x0aXAge1xcbiAgICBAaW5jbHVkZSBjdXN0b20tcHJvcGVydHkuZGVjbGFyYXRpb24oJ3BvcG92ZXItb2Zmc2V0JywgMTJweCk7XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0tdG9vbHRpcC1jb250ZW50IHtcXG4gICAgQGluY2x1ZGUgdHlwZS50eXBlLXN0eWxlKCdib2R5LTAxJyk7XFxuXFxuICAgIHBhZGRpbmc6ICR0b29sdGlwLXBhZGRpbmctYmxvY2sgJHRvb2x0aXAtcGFkZGluZy1pbmxpbmU7XFxuICAgIG1heC1pbmxpbmUtc2l6ZTogY29udmVydC50by1yZW0oMjg4cHgpO1xcbiAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xcbiAgfVxcbn1cXG5cXG5AbWl4aW4gZGVmaW5pdGlvbi10b29sdGlwIHtcXG4gIC4jeyRwcmVmaXh9LS1kZWZpbml0aW9uLXRlcm0ge1xcbiAgICBAaW5jbHVkZSBidXR0b24tcmVzZXQucmVzZXQ7XFxuXFxuICAgIGJvcmRlci1yYWRpdXM6IDA7XFxuICAgIGJvcmRlci1ibG9jay1lbmQ6IDFweCBkb3R0ZWQgdGhlbWUuJGJvcmRlci1zdHJvbmc7XFxuICAgIGNvbG9yOiB0aGVtZS4kdGV4dC1wcmltYXJ5O1xcbiAgfVxcblxcbiAgLiN7JHByZWZpeH0tLWRlZmluaXRpb24tdGVybTpmb2N1cyB7XFxuICAgIEBpbmNsdWRlIGZvY3VzLW91dGxpbmUuZm9jdXMtb3V0bGluZTtcXG5cXG4gICAgYm9yZGVyLWJsb2NrLWVuZC1jb2xvcjogdGhlbWUuJGJvcmRlci1pbnRlcmFjdGl2ZTtcXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1kZWZpbml0aW9uLXRlcm06aG92ZXIge1xcbiAgICBib3JkZXItYmxvY2stZW5kLWNvbG9yOiB0aGVtZS4kYm9yZGVyLWludGVyYWN0aXZlO1xcbiAgfVxcblxcbiAgLiN7JHByZWZpeH0tLWRlZmluaXRpb24tdG9vbHRpcCB7XFxuICAgIEBpbmNsdWRlIHR5cGUudHlwZS1zdHlsZSgnYm9keS0wMScpO1xcblxcbiAgICBwYWRkaW5nOiBjb252ZXJ0LnRvLXJlbSg4cHgpIGNvbnZlcnQudG8tcmVtKDE2cHgpO1xcbiAgICBtYXgtaW5saW5lLXNpemU6IGNvbnZlcnQudG8tcmVtKDE3NnB4KTtcXG4gICAgdGV4dC13cmFwOiBhdXRvO1xcbiAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xcbiAgfVxcbn1cXG5cXG5AbWl4aW4gaWNvbi10b29sdGlwIHtcXG4gIC4jeyRwcmVmaXh9LS1pY29uLXRvb2x0aXAge1xcbiAgICBAaW5jbHVkZSBjdXN0b20tcHJvcGVydHkuZGVjbGFyYXRpb24oXFxuICAgICAgJ3Rvb2x0aXAtcGFkZGluZy1ibG9jaycsXFxuICAgICAgY29udmVydC50by1yZW0oMnB4KVxcbiAgICApO1xcbiAgICBAaW5jbHVkZSBjdXN0b20tcHJvcGVydHkuZGVjbGFyYXRpb24oXFxuICAgICAgJ3BvcG92ZXItY2FyZXQtd2lkdGgnLFxcbiAgICAgIGNvbnZlcnQudG8tcmVtKDhweClcXG4gICAgKTtcXG4gICAgQGluY2x1ZGUgY3VzdG9tLXByb3BlcnR5LmRlY2xhcmF0aW9uKFxcbiAgICAgICdwb3BvdmVyLWNhcmV0LWhlaWdodCcsXFxuICAgICAgY29udmVydC50by1yZW0oNHB4KVxcbiAgICApO1xcbiAgICBAaW5jbHVkZSBjdXN0b20tcHJvcGVydHkuZGVjbGFyYXRpb24oJ3BvcG92ZXItb2Zmc2V0JywgY29udmVydC50by1yZW0oOHB4KSk7XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0taWNvbi10b29sdGlwIC4jeyRwcmVmaXh9LS10b29sdGlwLWNvbnRlbnQge1xcbiAgICBAaW5jbHVkZSB0eXBlLnR5cGUtc3R5bGUoJ2JvZHktY29tcGFjdC0wMScpO1xcbiAgfVxcbn1cXG5cIixcIi8vXFxuLy8gQ29weXJpZ2h0IElCTSBDb3JwLiAyMDE4LCAyMDIzXFxuLy9cXG4vLyBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUtMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuLy8gTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbi8vXFxuXFxuLy8gc3R5bGVsaW50LWRpc2FibGUgbnVtYmVyLW1heC1wcmVjaXNpb25cXG5cXG5AdXNlICdzYXNzOm1hcCc7XFxuQHVzZSAnc2FzczptYXRoJztcXG5AdXNlICdAY2FyYm9uL2dyaWQvc2Nzcy9jb25maWcnIGFzIGdyaWRjb25maWc7XFxuQHVzZSAnQGNhcmJvbi9ncmlkL3Njc3MvYnJlYWtwb2ludCcgYXMgZ3JpZDtcXG5AdXNlICdwcmVmaXgnIGFzICo7XFxuQHVzZSAnZm9udC1mYW1pbHknO1xcbkB1c2UgJ3NjYWxlJztcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBkZXByZWNhdGVkXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kY2FwdGlvbi0wMTogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICBsaW5lLWhlaWdodDogMS4zMzMzMyxcXG4gIGxldHRlci1zcGFjaW5nOiAwLjMycHgsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBkZXByZWNhdGVkXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kY2FwdGlvbi0wMjogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDIpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICBsaW5lLWhlaWdodDogMS4yODU3MixcXG4gIGxldHRlci1zcGFjaW5nOiAwLjMycHgsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kbGFiZWwtMDE6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxKSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgncmVndWxhcicpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMzMzMzMsXFxuICBsZXR0ZXItc3BhY2luZzogMC4zMnB4LFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGxhYmVsLTAyOiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMiksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3JlZ3VsYXInKSxcXG4gIGxpbmUtaGVpZ2h0OiAxLjI4NTcyLFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMTZweCxcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRsZWdhbC0wMTogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICBsaW5lLWhlaWdodDogMS4zMzMzMyxcXG4gIGxldHRlci1zcGFjaW5nOiAwLjMycHgsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kbGVnYWwtMDI6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgyKSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgncmVndWxhcicpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMjg1NzIsXFxuICBsZXR0ZXItc3BhY2luZzogMC4xNnB4LFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZGVwcmVjYXRlZFxcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGhlbHBlci10ZXh0LTAxOiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMSksXFxuICBsaW5lLWhlaWdodDogMS4zMzMzMyxcXG4gIGxldHRlci1zcGFjaW5nOiAwLjMycHgsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBkZXByZWNhdGVkXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kaGVscGVyLXRleHQtMDI6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgyKSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgncmVndWxhcicpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMjg1NzIsXFxuICBsZXR0ZXItc3BhY2luZzogMC4xNnB4LFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGJvZHktc2hvcnQtMDE6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgyKSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgncmVndWxhcicpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMjg1NzIsXFxuICBsZXR0ZXItc3BhY2luZzogMC4xNnB4LFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGJvZHktY29tcGFjdC0wMTogJGJvZHktc2hvcnQtMDEgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGJvZHktbG9uZy0wMTogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDIpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICBsaW5lLWhlaWdodDogMS40Mjg1NyxcXG4gIGxldHRlci1zcGFjaW5nOiAwLjE2cHgsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kYm9keS0wMTogJGJvZHktbG9uZy0wMSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kYm9keS1zaG9ydC0wMjogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDMpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICBsaW5lLWhlaWdodDogMS4zNzUsXFxuICBsZXR0ZXItc3BhY2luZzogMCxcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRib2R5LWNvbXBhY3QtMDI6ICRib2R5LXNob3J0LTAyICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRib2R5LWxvbmctMDI6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgzKSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgncmVndWxhcicpLFxcbiAgbGluZS1oZWlnaHQ6IDEuNSxcXG4gIGxldHRlci1zcGFjaW5nOiAwLFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGJvZHktMDI6ICRib2R5LWxvbmctMDIgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGNvZGUtMDE6IChcXG4gIGZvbnQtZmFtaWx5OiBmb250LWZhbWlseS5mb250LWZhbWlseSgnbW9ubycpLFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICBsaW5lLWhlaWdodDogMS4zMzMzMyxcXG4gIGxldHRlci1zcGFjaW5nOiAwLjMycHgsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kY29kZS0wMjogKFxcbiAgZm9udC1mYW1pbHk6IGZvbnQtZmFtaWx5LmZvbnQtZmFtaWx5KCdtb25vJyksXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMiksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3JlZ3VsYXInKSxcXG4gIGxpbmUtaGVpZ2h0OiAxLjQyODU3LFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMzJweCxcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRoZWFkaW5nLTAxOiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMiksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3NlbWlib2xkJyksXFxuICBsaW5lLWhlaWdodDogMS40Mjg1NyxcXG4gIGxldHRlci1zcGFjaW5nOiAwLjE2cHgsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kcHJvZHVjdGl2ZS1oZWFkaW5nLTAxOiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMiksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3NlbWlib2xkJyksXFxuICBsaW5lLWhlaWdodDogMS4yODU3MixcXG4gIGxldHRlci1zcGFjaW5nOiAwLjE2cHgsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kaGVhZGluZy1jb21wYWN0LTAxOiAkcHJvZHVjdGl2ZS1oZWFkaW5nLTAxICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRoZWFkaW5nLTAyOiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMyksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3NlbWlib2xkJyksXFxuICBsaW5lLWhlaWdodDogMS41LFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kcHJvZHVjdGl2ZS1oZWFkaW5nLTAyOiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMyksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3NlbWlib2xkJyksXFxuICBsaW5lLWhlaWdodDogMS4zNzUsXFxuICBsZXR0ZXItc3BhY2luZzogMCxcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRoZWFkaW5nLWNvbXBhY3QtMDI6ICRwcm9kdWN0aXZlLWhlYWRpbmctMDIgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJHByb2R1Y3RpdmUtaGVhZGluZy0wMzogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDUpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICBsaW5lLWhlaWdodDogMS40LFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kaGVhZGluZy0wMzogJHByb2R1Y3RpdmUtaGVhZGluZy0wMyAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kcHJvZHVjdGl2ZS1oZWFkaW5nLTA0OiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoNyksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3JlZ3VsYXInKSxcXG4gIGxpbmUtaGVpZ2h0OiAxLjI4NTcyLFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kaGVhZGluZy0wNDogJHByb2R1Y3RpdmUtaGVhZGluZy0wNCAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kcHJvZHVjdGl2ZS1oZWFkaW5nLTA1OiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoOCksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3JlZ3VsYXInKSxcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1LFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kaGVhZGluZy0wNTogJHByb2R1Y3RpdmUtaGVhZGluZy0wNSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kcHJvZHVjdGl2ZS1oZWFkaW5nLTA2OiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTApLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdsaWdodCcpLFxcbiAgLy8gRXh0cmEgZGlnaXQgbmVlZGVkIGZvciBwcmVjaXNpb24gaW4gQ2hyb21lXFxuICBsaW5lLWhlaWdodDogMS4xOTksXFxuICBsZXR0ZXItc3BhY2luZzogMCxcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRoZWFkaW5nLTA2OiAkcHJvZHVjdGl2ZS1oZWFkaW5nLTA2ICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRwcm9kdWN0aXZlLWhlYWRpbmctMDc6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxMiksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ2xpZ2h0JyksXFxuICBsaW5lLWhlaWdodDogMS4xOSxcXG4gIGxldHRlci1zcGFjaW5nOiAwLFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGhlYWRpbmctMDc6ICRwcm9kdWN0aXZlLWhlYWRpbmctMDcgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGV4cHJlc3NpdmUtaGVhZGluZy0wMTogJGhlYWRpbmctMDEgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGV4cHJlc3NpdmUtaGVhZGluZy0wMjogJGhlYWRpbmctMDIgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGV4cHJlc3NpdmUtaGVhZGluZy0wMzogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDUpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICBsaW5lLWhlaWdodDogMS40LFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAsXFxuICBicmVha3BvaW50czogKFxcbiAgICB4bGc6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoNSksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuNCxcXG4gICAgKSxcXG4gICAgbWF4OiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDYpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjMzNCxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kZmx1aWQtaGVhZGluZy0wMzogJGV4cHJlc3NpdmUtaGVhZGluZy0wMyAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kZXhwcmVzc2l2ZS1oZWFkaW5nLTA0OiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoNyksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3JlZ3VsYXInKSxcXG4gIGxpbmUtaGVpZ2h0OiAxLjI4NTcyLFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAsXFxuICBicmVha3BvaW50czogKFxcbiAgICB4bGc6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoOCksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMjUsXFxuICAgICAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICAgICksXFxuICAgIG1heDogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSg4KSxcXG4gICAgICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3JlZ3VsYXInKSxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kZmx1aWQtaGVhZGluZy0wNDogJGV4cHJlc3NpdmUtaGVhZGluZy0wNCAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kZXhwcmVzc2l2ZS1oZWFkaW5nLTA1OiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoOCksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3JlZ3VsYXInKSxcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1LFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAsXFxuICBicmVha3BvaW50czogKFxcbiAgICBtZDogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSg5KSxcXG4gICAgICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ2xpZ2h0JyksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMjIsXFxuICAgICksXFxuICAgIGxnOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEwKSxcXG4gICAgICBsaW5lLWhlaWdodDogMS4xOSxcXG4gICAgKSxcXG4gICAgeGxnOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDExKSxcXG4gICAgICBsaW5lLWhlaWdodDogMS4xNyxcXG4gICAgKSxcXG4gICAgbWF4OiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEzKSxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kZmx1aWQtaGVhZGluZy0wNTogJGV4cHJlc3NpdmUtaGVhZGluZy0wNSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kZXhwcmVzc2l2ZS1oZWFkaW5nLTA2OiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoOCksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3NlbWlib2xkJyksXFxuICBsaW5lLWhlaWdodDogMS4yNSxcXG4gIGxldHRlci1zcGFjaW5nOiAwLFxcbiAgYnJlYWtwb2ludHM6IChcXG4gICAgbWQ6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoOSksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMjIsXFxuICAgICksXFxuICAgIGxnOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEwKSxcXG4gICAgICBsaW5lLWhlaWdodDogMS4xOSxcXG4gICAgKSxcXG4gICAgeGxnOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDExKSxcXG4gICAgICBsaW5lLWhlaWdodDogMS4xNyxcXG4gICAgKSxcXG4gICAgbWF4OiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEzKSxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kZmx1aWQtaGVhZGluZy0wNjogJGV4cHJlc3NpdmUtaGVhZGluZy0wNiAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kZXhwcmVzc2l2ZS1wYXJhZ3JhcGgtMDE6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSg2KSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgnbGlnaHQnKSxcXG4gIGxpbmUtaGVpZ2h0OiAxLjMzNCxcXG4gIGxldHRlci1zcGFjaW5nOiAwLFxcbiAgYnJlYWtwb2ludHM6IChcXG4gICAgbGc6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoNyksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMjg1NzIsXFxuICAgICksXFxuICAgIG1heDogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSg4KSxcXG4gICAgICBsaW5lLWhlaWdodDogMS4yNSxcXG4gICAgKSxcXG4gICksXFxuKTtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kZmx1aWQtcGFyYWdyYXBoLTAxOiAkZXhwcmVzc2l2ZS1wYXJhZ3JhcGgtMDEgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJHF1b3RhdGlvbi0wMTogKFxcbiAgZm9udC1mYW1pbHk6IGZvbnQtZmFtaWx5LmZvbnQtZmFtaWx5KCdzZXJpZicpLFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDUpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICBsaW5lLWhlaWdodDogMS4zLFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAsXFxuICBicmVha3BvaW50czogKFxcbiAgICBtZDogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSg1KSxcXG4gICAgKSxcXG4gICAgbGc6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoNiksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMzM0LFxcbiAgICApLFxcbiAgICB4bGc6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoNyksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMjg1NzIsXFxuICAgICksXFxuICAgIG1heDogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSg4KSxcXG4gICAgICBsaW5lLWhlaWdodDogMS4yNSxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kZmx1aWQtcXVvdGF0aW9uLTAxOiAkcXVvdGF0aW9uLTAxICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRxdW90YXRpb24tMDI6IChcXG4gIGZvbnQtZmFtaWx5OiBmb250LWZhbWlseS5mb250LWZhbWlseSgnc2VyaWYnKSxcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSg4KSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgnbGlnaHQnKSxcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1LFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAsXFxuICBicmVha3BvaW50czogKFxcbiAgICBtZDogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSg5KSxcXG4gICAgICBsaW5lLWhlaWdodDogMS4yMixcXG4gICAgKSxcXG4gICAgbGc6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTApLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjE5LFxcbiAgICApLFxcbiAgICB4bGc6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTEpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjE3LFxcbiAgICApLFxcbiAgICBtYXg6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTMpLFxcbiAgICApLFxcbiAgKSxcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRmbHVpZC1xdW90YXRpb24tMDI6ICRxdW90YXRpb24tMDIgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGRpc3BsYXktMDE6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxMCksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ2xpZ2h0JyksXFxuICBsaW5lLWhlaWdodDogMS4xOSxcXG4gIGxldHRlci1zcGFjaW5nOiAwLFxcbiAgYnJlYWtwb2ludHM6IChcXG4gICAgbWQ6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTApLFxcbiAgICApLFxcbiAgICBsZzogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxMiksXFxuICAgICksXFxuICAgIHhsZzogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxMyksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMTcsXFxuICAgICksXFxuICAgIG1heDogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxNSksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMTMsXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGZsdWlkLWRpc3BsYXktMDE6ICRkaXNwbGF5LTAxICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRkaXNwbGF5LTAyOiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTApLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdzZW1pYm9sZCcpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMTksXFxuICBsZXR0ZXItc3BhY2luZzogMCxcXG4gIGJyZWFrcG9pbnRzOiAoXFxuICAgIG1kOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEwKSxcXG4gICAgKSxcXG4gICAgbGc6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTIpLFxcbiAgICApLFxcbiAgICB4bGc6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTMpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjE2LFxcbiAgICApLFxcbiAgICBtYXg6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTUpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjEzLFxcbiAgICApLFxcbiAgKSxcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRmbHVpZC1kaXNwbGF5LTAyOiAkZGlzcGxheS0wMiAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kZGlzcGxheS0wMzogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEwKSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgnbGlnaHQnKSxcXG4gIGxpbmUtaGVpZ2h0OiAxLjE5LFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAsXFxuICBicmVha3BvaW50czogKFxcbiAgICBtZDogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxMiksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMTgsXFxuICAgICksXFxuICAgIGxnOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEzKSxcXG4gICAgICBsaW5lLWhlaWdodDogMS4xNixcXG4gICAgICBsZXR0ZXItc3BhY2luZzogLTAuNjRweCxcXG4gICAgKSxcXG4gICAgeGxnOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDE1KSxcXG4gICAgICBsaW5lLWhlaWdodDogMS4xMyxcXG4gICAgICBsZXR0ZXItc3BhY2luZzogLTAuNjRweCxcXG4gICAgKSxcXG4gICAgbWF4OiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDE2KSxcXG4gICAgICBsaW5lLWhlaWdodDogMS4xMSxcXG4gICAgICBsZXR0ZXItc3BhY2luZzogLTAuOTZweCxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kZmx1aWQtZGlzcGxheS0wMzogJGRpc3BsYXktMDMgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGRpc3BsYXktMDQ6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxMCksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ2xpZ2h0JyksXFxuICBsaW5lLWhlaWdodDogMS4xOSxcXG4gIGxldHRlci1zcGFjaW5nOiAwLFxcbiAgYnJlYWtwb2ludHM6IChcXG4gICAgbWQ6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTQpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjE1LFxcbiAgICApLFxcbiAgICBsZzogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxNyksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMTEsXFxuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjY0cHgsXFxuICAgICksXFxuICAgIHhsZzogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgyMCksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMDcsXFxuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjY0cHgsXFxuICAgICksXFxuICAgIG1heDogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgyMyksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMDUsXFxuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjk2cHgsXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGZsdWlkLWRpc3BsYXktMDQ6ICRkaXNwbGF5LTA0ICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiR0b2tlbnM6IChcXG4gIGNhcHRpb24tMDE6ICRjYXB0aW9uLTAxLFxcbiAgY2FwdGlvbi0wMjogJGNhcHRpb24tMDIsXFxuICBsYWJlbC0wMTogJGxhYmVsLTAxLFxcbiAgbGFiZWwtMDI6ICRsYWJlbC0wMixcXG4gIGhlbHBlci10ZXh0LTAxOiAkaGVscGVyLXRleHQtMDEsXFxuICBoZWxwZXItdGV4dC0wMjogJGhlbHBlci10ZXh0LTAyLFxcbiAgYm9keS1zaG9ydC0wMTogJGJvZHktc2hvcnQtMDEsXFxuICBib2R5LXNob3J0LTAyOiAkYm9keS1zaG9ydC0wMixcXG4gIGJvZHktbG9uZy0wMTogJGJvZHktbG9uZy0wMSxcXG4gIGJvZHktbG9uZy0wMjogJGJvZHktbG9uZy0wMixcXG4gIGNvZGUtMDE6ICRjb2RlLTAxLFxcbiAgY29kZS0wMjogJGNvZGUtMDIsXFxuICBoZWFkaW5nLTAxOiAkaGVhZGluZy0wMSxcXG4gIGhlYWRpbmctMDI6ICRoZWFkaW5nLTAyLFxcbiAgcHJvZHVjdGl2ZS1oZWFkaW5nLTAxOiAkcHJvZHVjdGl2ZS1oZWFkaW5nLTAxLFxcbiAgcHJvZHVjdGl2ZS1oZWFkaW5nLTAyOiAkcHJvZHVjdGl2ZS1oZWFkaW5nLTAyLFxcbiAgcHJvZHVjdGl2ZS1oZWFkaW5nLTAzOiAkcHJvZHVjdGl2ZS1oZWFkaW5nLTAzLFxcbiAgcHJvZHVjdGl2ZS1oZWFkaW5nLTA0OiAkcHJvZHVjdGl2ZS1oZWFkaW5nLTA0LFxcbiAgcHJvZHVjdGl2ZS1oZWFkaW5nLTA1OiAkcHJvZHVjdGl2ZS1oZWFkaW5nLTA1LFxcbiAgcHJvZHVjdGl2ZS1oZWFkaW5nLTA2OiAkcHJvZHVjdGl2ZS1oZWFkaW5nLTA2LFxcbiAgcHJvZHVjdGl2ZS1oZWFkaW5nLTA3OiAkcHJvZHVjdGl2ZS1oZWFkaW5nLTA3LFxcbiAgZXhwcmVzc2l2ZS1wYXJhZ3JhcGgtMDE6ICRleHByZXNzaXZlLXBhcmFncmFwaC0wMSxcXG4gIGV4cHJlc3NpdmUtaGVhZGluZy0wMTogJGV4cHJlc3NpdmUtaGVhZGluZy0wMSxcXG4gIGV4cHJlc3NpdmUtaGVhZGluZy0wMjogJGV4cHJlc3NpdmUtaGVhZGluZy0wMixcXG4gIGV4cHJlc3NpdmUtaGVhZGluZy0wMzogJGV4cHJlc3NpdmUtaGVhZGluZy0wMyxcXG4gIGV4cHJlc3NpdmUtaGVhZGluZy0wNDogJGV4cHJlc3NpdmUtaGVhZGluZy0wNCxcXG4gIGV4cHJlc3NpdmUtaGVhZGluZy0wNTogJGV4cHJlc3NpdmUtaGVhZGluZy0wNSxcXG4gIGV4cHJlc3NpdmUtaGVhZGluZy0wNjogJGV4cHJlc3NpdmUtaGVhZGluZy0wNixcXG4gIHF1b3RhdGlvbi0wMTogJHF1b3RhdGlvbi0wMSxcXG4gIHF1b3RhdGlvbi0wMjogJHF1b3RhdGlvbi0wMixcXG4gIGRpc3BsYXktMDE6ICRkaXNwbGF5LTAxLFxcbiAgZGlzcGxheS0wMjogJGRpc3BsYXktMDIsXFxuICBkaXNwbGF5LTAzOiAkZGlzcGxheS0wMyxcXG4gIGRpc3BsYXktMDQ6ICRkaXNwbGF5LTA0LFxcbiAgLy8gVjExIFRva2Vuc1xcbiAgbGVnYWwtMDE6ICRsZWdhbC0wMSxcXG4gIGxlZ2FsLTAyOiAkbGVnYWwtMDIsXFxuICBib2R5LWNvbXBhY3QtMDE6ICRib2R5LWNvbXBhY3QtMDEsXFxuICBib2R5LWNvbXBhY3QtMDI6ICRib2R5LWNvbXBhY3QtMDIsXFxuICBoZWFkaW5nLWNvbXBhY3QtMDE6ICRoZWFkaW5nLWNvbXBhY3QtMDEsXFxuICBoZWFkaW5nLWNvbXBhY3QtMDI6ICRoZWFkaW5nLWNvbXBhY3QtMDIsXFxuICBib2R5LTAxOiAkYm9keS0wMSxcXG4gIGJvZHktMDI6ICRib2R5LTAyLFxcbiAgaGVhZGluZy0wMzogJGhlYWRpbmctMDMsXFxuICBoZWFkaW5nLTA0OiAkaGVhZGluZy0wNCxcXG4gIGhlYWRpbmctMDU6ICRoZWFkaW5nLTA1LFxcbiAgaGVhZGluZy0wNjogJGhlYWRpbmctMDYsXFxuICBoZWFkaW5nLTA3OiAkaGVhZGluZy0wNyxcXG4gIGZsdWlkLWhlYWRpbmctMDM6ICRmbHVpZC1oZWFkaW5nLTAzLFxcbiAgZmx1aWQtaGVhZGluZy0wNDogJGZsdWlkLWhlYWRpbmctMDQsXFxuICBmbHVpZC1oZWFkaW5nLTA1OiAkZmx1aWQtaGVhZGluZy0wNSxcXG4gIGZsdWlkLWhlYWRpbmctMDY6ICRmbHVpZC1oZWFkaW5nLTA2LFxcbiAgZmx1aWQtcGFyYWdyYXBoLTAxOiAkZmx1aWQtcGFyYWdyYXBoLTAxLFxcbiAgZmx1aWQtcXVvdGF0aW9uLTAxOiAkZmx1aWQtcXVvdGF0aW9uLTAxLFxcbiAgZmx1aWQtcXVvdGF0aW9uLTAyOiAkZmx1aWQtcXVvdGF0aW9uLTAyLFxcbiAgZmx1aWQtZGlzcGxheS0wMTogJGZsdWlkLWRpc3BsYXktMDEsXFxuICBmbHVpZC1kaXNwbGF5LTAyOiAkZmx1aWQtZGlzcGxheS0wMixcXG4gIGZsdWlkLWRpc3BsYXktMDM6ICRmbHVpZC1kaXNwbGF5LTAzLFxcbiAgZmx1aWQtZGlzcGxheS0wNDogJGZsdWlkLWRpc3BsYXktMDQsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbkBtaXhpbiBwcm9wZXJ0aWVzKCRtYXApIHtcXG4gIEBlYWNoICRuYW1lLCAkdmFsdWUgaW4gJG1hcCB7XFxuICAgICN7JG5hbWV9OiAkdmFsdWU7XFxuICB9XFxufVxcblxcbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gTnVtYmVyIHdpdGggdW5pdHNcXG4vLy8gQHJldHVybiB7TnVtYmVyfSBXaXRob3V0IHVuaXRzXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkdmFsdWUpIHtcXG4gIEByZXR1cm4gbWF0aC5kaXYoJHZhbHVlLCAkdmFsdWUgKiAwICsgMSk7XFxufVxcblxcbi8vLyBUaGlzIGhlbHBlciBpbmNsdWRlcyBmbHVpZCB0eXBlIHN0eWxlcyBmb3IgdGhlIGdpdmVuIHRva2VuIHZhbHVlLiBGbHVpZCB0eXBlXFxuLy8vIG1lYW5zIHRoYXQgdGhlIGBmb250LXNpemVgIGlzIGNvbXB1dGVkIHVzaW5nIGBjYWxjKClgIGluIG9yZGVyIHRvIGJlXFxuLy8vIGRldGVybWluZWQgYnkgdGhlIHNjcmVlbiBzaXplIGluc3RlYWQgb2YgYSBicmVha3BvaW50LiBBcyBhIHJlc3VsdCwgZmx1aWRcXG4vLy8gc3R5bGVzIHNob3VsZCBiZSB1c2VkIHdpdGggY2F1dGlvbiBpbiBmaXhlZCB3aWR0aCBjb250ZXh0cy5cXG4vLy9cXG4vLy8gSW4gYWRkaXRpb24sIHdlIG1ha2UgdXNlIG9mICUtYmFzZWQgbGluZS1oZWlnaHRzIHNvIHRoYXQgdGhlIGxpbmUtaGVpZ2h0IG9mXFxuLy8vIGVhY2ggdHlwZSBzdHlsZSBpcyBjb21wdXRlZCBjb3JyZWN0bHkgZHVlIHRvIHRoZSBkeW5hbWljIG5hdHVyZSBvZiB0aGVcXG4vLy8gYGZvbnQtc2l6ZWAuXFxuLy8vXFxuLy8vIE1vc3Qgb2YgdGhlIGxvZ2ljIGZvciB0aGlzIHdvcmsgY29tZXMgZnJvbSBDU1MgVHJpY2tzOlxcbi8vLyBodHRwczovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL2Nzcy9mbHVpZC10eXBvZ3JhcGh5L1xcbi8vL1xcbi8vLyBAcGFyYW0ge01hcH0gJHR5cGUtc3R5bGVzIC0gVGhlIHZhbHVlIG9mIGEgZ2l2ZW4gdHlwZSB0b2tlblxcbi8vLyBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzIFskZ3JpZC1icmVha3BvaW50c10gLSBDdXN0b20gYnJlYWtwb2ludHMgdG8gdXNlXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG5AbWl4aW4gZmx1aWQtdHlwZSgkdHlwZS1zdHlsZXMsICRicmVha3BvaW50czogZ3JpZGNvbmZpZy4kZ3JpZC1icmVha3BvaW50cykge1xcbiAgLy8gSW5jbHVkZSB0aGUgaW5pdGlhbCBzdHlsZXMgZm9yIHRoZSBnaXZlbiB0b2tlbiBieSBkZWZhdWx0IHdpdGhvdXQgYW55XFxuICAvLyBtZWRpYSBxdWVyeSBndWFyZC4gVGhpcyBpbmNsdWRlcyBgZm9udC1zaXplYCBhcyBhIGZhbGxiYWNrIGluIHRoZSBjYXNlXFxuICAvLyB0aGF0IGEgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGBjYWxjKClgXFxuICBAaW5jbHVkZSBwcm9wZXJ0aWVzKG1hcC5yZW1vdmUoJHR5cGUtc3R5bGVzLCBicmVha3BvaW50cykpO1xcbiAgLy8gV2UgYWxzbyBuZWVkIHRvIGluY2x1ZGUgdGhlIGBzbWAgc3R5bGVzIGJ5IGRlZmF1bHQgc2luY2UgdGhleSBkb24ndFxcbiAgLy8gYXBwZWFyIGluIHRoZSBmbHVpZCBzdHlsZXMgZm9yIHRva2Vuc1xcbiAgQGluY2x1ZGUgZmx1aWQtdHlwZS1zaXplKCR0eXBlLXN0eWxlcywgc20sICRicmVha3BvaW50cyk7XFxuXFxuICAvLyBGaW5hbGx5LCB3ZSBuZWVkIHRvIGdvIHRocm91Z2ggYWxsIHRoZSBicmVha3BvaW50cyBkZWZpbmVkIGluIHRoZSB0eXBlXFxuICAvLyB0b2tlbiBhbmQgYXBwbHkgdGhlIHByb3BlcnRpZXMgYW5kIGZsdWlkIHR5cGUgc2l6ZSBmb3IgdGhhdCBnaXZlblxcbiAgLy8gYnJlYWtwb2ludFxcbiAgQGVhY2ggJG5hbWUsICR2YWx1ZXMgaW4gbWFwLmdldCgkdHlwZS1zdHlsZXMsIGJyZWFrcG9pbnRzKSB7XFxuICAgIEBpbmNsdWRlIGdyaWQuYnJlYWtwb2ludCgkbmFtZSkge1xcbiAgICAgIEBpbmNsdWRlIHByb3BlcnRpZXMoJHZhbHVlcyk7XFxuICAgICAgQGluY2x1ZGUgZmx1aWQtdHlwZS1zaXplKCR0eXBlLXN0eWxlcywgJG5hbWUsICRicmVha3BvaW50cyk7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLy8vIENvbXB1dGVzIHRoZSBmbHVpZCBgZm9udC1zaXplYCBmb3IgYSBnaXZlbiB0eXBlIHN0eWxlIGFuZCBicmVha3BvaW50XFxuLy8vIEBwYXJhbSB7TWFwfSAkdHlwZS1zdHlsZXMgLSBUaGUgc3R5bGVzIGZvciBhIGdpdmVuIHRva2VuXFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50IHRvIHdoaWNoIHdlIGFwcGx5IHRoZSBmbHVpZFxcbi8vLyBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzIFskZ3JpZC1icmVha3BvaW50c10gLSBUaGUgYnJlYWtwb2ludHMgZm9yIHRoZSBncmlkIHN5c3RlbVxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuQG1peGluIGZsdWlkLXR5cGUtc2l6ZShcXG4gICR0eXBlLXN0eWxlcyxcXG4gICRuYW1lLFxcbiAgJGJyZWFrcG9pbnRzOiBncmlkY29uZmlnLiRncmlkLWJyZWFrcG9pbnRzXFxuKSB7XFxuICAvLyBHZXQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBicmVha3BvaW50IHdlJ3JlIGN1cnJlbnRseSB3b3JraW5nIGluLiBVc2VmdWxcXG4gIC8vIGZvciBnZXR0aW5nIGluaXRpYWwgd2lkdGggaW5mb3JtYXRpb25cXG4gICRicmVha3BvaW50OiBtYXAuZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xcblxcbiAgLy8gT3VyIGZsdWlkIHN0eWxlcyBhcmUgY2FwdHVyZWQgdW5kZXIgdGhlICdicmVha3BvaW50cycgcHJvcGVydHkgaW4gb3VyIHR5cGVcXG4gIC8vIHN0eWxlcyBtYXAuIFRoZXNlIGRlZmluZSB3aGF0IHZhbHVlcyB0byB0cmVhdCBhcyBgbWF4LWAgdmFyaWFibGVzIGJlbG93XFxuICAkZmx1aWQtc2l6ZXM6IG1hcC5nZXQoJHR5cGUtc3R5bGVzLCBicmVha3BvaW50cyk7XFxuICAkZmx1aWQtYnJlYWtwb2ludDogKCk7XFxuICAvLyBTcGVjaWFsIGNhc2UgZm9yIGBzbWAgYmVjYXVzZSB0aGUgc3R5bGVzIGZvciBzbWFsbCBhcmUgb24gdGhlIHR5cGUgc3R5bGVcXG4gIC8vIGRpcmVjdGx5XFxuICBAaWYgJG5hbWUgPT0gc20ge1xcbiAgICAkZmx1aWQtYnJlYWtwb2ludDogbWFwLnJlbW92ZSgkdHlwZS1zdHlsZXMsIGJyZWFrcG9pbnRzKTtcXG4gIH0gQGVsc2Uge1xcbiAgICAkZmx1aWQtYnJlYWtwb2ludDogbWFwLmdldCgkZmx1aWQtc2l6ZXMsICRuYW1lKTtcXG4gIH1cXG5cXG4gIC8vIEluaXRpYWxpemUgb3VyIGZvbnQtc2l6ZXMgdG8gdGhlIGRlZmF1bHQgc2l6ZSBmb3IgdGhlIHR5cGUgc3R5bGVcXG4gICRtYXgtZm9udC1zaXplOiBtYXAuZ2V0KCR0eXBlLXN0eWxlcywgZm9udC1zaXplKTtcXG4gICRtaW4tZm9udC1zaXplOiBtYXAuZ2V0KCR0eXBlLXN0eWxlcywgZm9udC1zaXplKTtcXG4gIEBpZiBtYXAuaGFzLWtleSgkZmx1aWQtYnJlYWtwb2ludCwgZm9udC1zaXplKSB7XFxuICAgICRtaW4tZm9udC1zaXplOiBtYXAuZ2V0KCRmbHVpZC1icmVha3BvaW50LCBmb250LXNpemUpO1xcbiAgfVxcblxcbiAgLy8gSW5pdGlhbGl6ZSBvdXIgbWluIGFuZCBtYXggd2lkdGggdG8gdGhlIHdpZHRoIG9mIHRoZSBjdXJyZW50IGJyZWFrcG9pbnRcXG4gICRtYXgtdnc6IG1hcC5nZXQoJGJyZWFrcG9pbnQsIHdpZHRoKTtcXG4gICRtaW4tdnc6IG1hcC5nZXQoJGJyZWFrcG9pbnQsIHdpZHRoKTtcXG5cXG4gIC8vIFdlIGNhbiB1c2UgYGJyZWFrcG9pbnQtbmV4dGAgdG8gc2VlIGlmIHRoZXJlIGlzIGFub3RoZXIgYnJlYWtwb2ludCB3ZSBjYW5cXG4gIC8vIHVzZSB0byB1cGRhdGUgYG1heC1mb250LXNpemVgIGFuZCBgbWF4LXZ3YCB3aXRoIGxhcmdlciB2YWx1ZXNcXG4gICRuZXh0LWJyZWFrcG9pbnQtYXZhaWxhYmxlOiBncmlkLmJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcXG4gICRuZXh0LWZsdWlkLWJyZWFrcG9pbnQtbmFtZTogbnVsbDtcXG5cXG4gIC8vIFdlIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoZSBuZXh0IGF2YWlsYWJsZSBmbHVpZCBicmVha3BvaW50IGlzIGZvciBvdXJcXG4gIC8vIGdpdmVuICR0eXBlLXN0eWxlcy4gSW4gdGhpcyBsb29wIHdlIHRyeSBhbmQgaXRlcmF0ZSB0aHJvdWdoIGJyZWFrcG9pbnRzXFxuICAvLyB1bnRpbCB3ZSBlaXRoZXIgbWFudWFsbHkgc2V0ICRuZXh0LWJyZWFrcG9pbnQtYXZhaWxhYmxlIHRvIG51bGwgb3JcXG4gIC8vIGBicmVha3BvaW50LW5leHRgIHJldHVybnMgbnVsbC5cXG4gIEB3aGlsZSAkbmV4dC1icmVha3BvaW50LWF2YWlsYWJsZSB7XFxuICAgIEBpZiBtYXAuaGFzLWtleSgkZmx1aWQtc2l6ZXMsICRuZXh0LWJyZWFrcG9pbnQtYXZhaWxhYmxlKSB7XFxuICAgICAgJG5leHQtZmx1aWQtYnJlYWtwb2ludC1uYW1lOiAkbmV4dC1icmVha3BvaW50LWF2YWlsYWJsZTtcXG4gICAgICAkbmV4dC1icmVha3BvaW50LWF2YWlsYWJsZTogbnVsbDtcXG4gICAgfSBAZWxzZSB7XFxuICAgICAgJG5leHQtYnJlYWtwb2ludC1hdmFpbGFibGU6IGdyaWQuYnJlYWtwb2ludC1uZXh0KFxcbiAgICAgICAgJG5leHQtYnJlYWtwb2ludC1hdmFpbGFibGUsXFxuICAgICAgICAkYnJlYWtwb2ludHNcXG4gICAgICApO1xcbiAgICB9XFxuICB9XFxuXFxuICAvLyBJZiB3ZSBoYXZlIGZvdW5kIHRoZSBuZXh0IGF2YWlsYWJsZSBmbHVpZCBicmVha3BvaW50IG5hbWUsIHRoZW4gd2Uga25vd1xcbiAgLy8gdGhhdCB3ZSBoYXZlIHZhbHVlcyB0aGF0IHdlIGNhbiB1c2UgdG8gc2V0IG1heC1mb250LXNpemUgYW5kIG1heC12dyBhcyBib3RoXFxuICAvLyB2YWx1ZXMgZGVyaXZlIGZyb20gdGhlIG5leHQgYnJlYWtwb2ludFxcbiAgQGlmICRuZXh0LWZsdWlkLWJyZWFrcG9pbnQtbmFtZSB7XFxuICAgICRuZXh0LWZsdWlkLWJyZWFrcG9pbnQ6IG1hcC5nZXQoJGJyZWFrcG9pbnRzLCAkbmV4dC1mbHVpZC1icmVha3BvaW50LW5hbWUpO1xcbiAgICAkbWF4LWZvbnQtc2l6ZTogbWFwLmdldChcXG4gICAgICBtYXAuZ2V0KCRmbHVpZC1zaXplcywgJG5leHQtZmx1aWQtYnJlYWtwb2ludC1uYW1lKSxcXG4gICAgICBmb250LXNpemVcXG4gICAgKTtcXG4gICAgJG1heC12dzogbWFwLmdldCgkbmV4dC1mbHVpZC1icmVha3BvaW50LCB3aWR0aCk7XFxuXFxuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxcbiAgICBmb250LXNpemU6IGNhbGMoI3skbWluLWZvbnQtc2l6ZX0gK1xcbiAgICAgICN7c3RyaXAtdW5pdCgkbWF4LWZvbnQtc2l6ZSAtICRtaW4tZm9udC1zaXplKX0gKlxcbiAgICAgICgoMTAwdncgLSAjeyRtaW4tdnd9KSAvICN7c3RyaXAtdW5pdCgkbWF4LXZ3IC0gJG1pbi12dyl9KVxcbiAgICApO1xcbiAgfSBAZWxzZSB7XFxuICAgIC8vIE90aGVyd2lzZSwganVzdCBkZWZhdWx0IHRvIHNldHRpbmcgdGhlIGZvbnQgc2l6ZSBmb3VuZCBmcm9tIHRoZSB0eXBlXFxuICAgIC8vIHN0eWxlIG9yIHRoZSBnaXZlbiBmbHVpZCBicmVha3BvaW50IGluIHRoZSB0eXBlIHN0eWxlXFxuICAgIGZvbnQtc2l6ZTogJG1pbi1mb250LXNpemU7XFxuICB9XFxufVxcblxcbi8vIFRPRE8gbW92ZSBmb2xsb3dpbmcgdmFyaWFibGUgYW5kIGBjdXN0b20tcHJvcGVydHlgIG1peGluIGludG8gc2hhcmVkIGZpbGUgZm9yXFxuLy8gYm90aCBgQGNhcmJvbi90eXBlYCBhbmQgYEBjYXJib24vdGhlbWVzYFxcblxcbi8vLyBAYWNjZXNzIHByaXZhdGVcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbkBtaXhpbiBjdXN0b20tcHJvcGVydGllcygkbmFtZSwgJHZhbHVlKSB7XFxuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkdmFsdWUge1xcbiAgICAjeyRwcm9wZXJ0eX06IHZhcihcXG4gICAgICAtLSN7JGN1c3RvbS1wcm9wZXJ0eS1wcmVmaXh9LSN7JG5hbWV9LSN7JHByb3BlcnR5fSxcXG4gICAgICAjeyR2YWx1ZX1cXG4gICAgKTtcXG4gIH1cXG59XFxuXFxuLy8vIEhlbHBlciBtaXhpbiB0byBpbmNsdWRlIHRoZSBzdHlsZXMgZm9yIGEgZ2l2ZW4gdG9rZW4gaW4gYW55IHNlbGVjdG9yIGluIHlvdXJcXG4vLy8gcHJvamVjdC4gQWxzbyBpbmNsdWRlcyBhbiBvcHRpb25hbCBmbHVpZCBvcHRpb24gdGhhdCB3aWxsIGVuYWJsZSBmbHVpZFxcbi8vLyBzdHlsZXMgZm9yIHRoZSB0b2tlbiBpZiB0aGV5IGFyZSBkZWZpbmVkLiBGbHVpZCBzdHlsZXMgd2lsbCBjYXVzZSB0aGVcXG4vLy8gdG9rZW4ncyBmb250LXNpemUgdG8gYmUgY29tcHV0ZWQgYmFzZWQgb24gdGhlIHZpZXdwb3J0IHNpemUuIEFzIGEgcmVzdWx0LCB1c2VcXG4vLy8gd2l0aCBjYXV0aW9uIGluIGZpeGVkIGNvbnRleHRzLlxcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgdG9rZW4gdG8gZ2V0IHRoZSBzdHlsZXMgZm9yXFxuLy8vIEBwYXJhbSB7Qm9vbGVhbn0gJGZsdWlkIFtmYWxzZV0gLSBTcGVjaWZ5IHdoZXRoZXIgdG8gaW5jbHVkZSBmbHVpZCBzdHlsZXMgZm9yIHRoZVxcbi8vLyBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzIFskZ3JpZC1icmVha3BvaW50c10gLSBQcm92aWRlIGEgY3VzdG9tIGJyZWFrcG9pbnQgbWFwIHRvIHVzZVxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuQG1peGluIHR5cGUtc3R5bGUoXFxuICAkbmFtZSxcXG4gICRmbHVpZDogZmFsc2UsXFxuICAkYnJlYWtwb2ludHM6IGdyaWRjb25maWcuJGdyaWQtYnJlYWtwb2ludHNcXG4pIHtcXG4gIEBpZiBub3QgbWFwLmhhcy1rZXkoJHRva2VucywgJG5hbWUpIHtcXG4gICAgQGVycm9yICdVbmFibGUgdG8gZmluZCBhIHRva2VuIHdpdGggdGhlIG5hbWU6IGAjeyRuYW1lfWAnO1xcbiAgfVxcblxcbiAgJHRva2VuOiBtYXAuZ2V0KCR0b2tlbnMsICRuYW1lKTtcXG5cXG4gIC8vIElmICRmbHVpZCBpcyBzZXQgdG8gdHJ1ZSBhbmQgdGhlIHRva2VuIGhhcyBicmVha3BvaW50cyBkZWZpbmVkIGZvciBmbHVpZFxcbiAgLy8gc3R5bGVzLCBkZWxlZ2F0ZSB0byB0aGUgZmx1aWQtdHlwZSBoZWxwZXIgZm9yIHRoZSBnaXZlbiB0b2tlblxcbiAgQGlmICRmbHVpZCA9PSB0cnVlIGFuZCBtYXAuaGFzLWtleSgkdG9rZW4sICdicmVha3BvaW50cycpIHtcXG4gICAgQGluY2x1ZGUgZmx1aWQtdHlwZSgkdG9rZW4sICRicmVha3BvaW50cyk7XFxuICB9IEBlbHNlIHtcXG4gICAgQGluY2x1ZGUgY3VzdG9tLXByb3BlcnRpZXMoJG5hbWUsICR0b2tlbik7XFxuICB9XFxufVxcblwiLFwiLy9cXG4vLyBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMTYsIDIwMjNcXG4vL1xcbi8vIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZS0yLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4vLyBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuLy9cXG5cXG5AdXNlICd0b2tlbnMnIGFzICo7XFxuQHVzZSAndmFycycgYXMgKjtcXG5AdXNlICdtaXhpbnMnIGFzICo7XFxuQHVzZSAnLi4vdG9vbHRpcCc7XFxuQHVzZSAnLi4vLi4vY29uZmlnJyBhcyAqO1xcbkB1c2UgJy4uLy4uL3NwYWNpbmcnIGFzICo7XFxuQHVzZSAnLi4vLi4vdGhlbWUnIGFzICo7XFxuQHVzZSAnLi4vLi4vdHlwZScgYXMgKjtcXG5AdXNlICcuLi8uLi9sYXllcicgYXMgKjtcXG5AdXNlICcuLi8uLi91dGlsaXRpZXMvY29udmVydCc7XFxuQHVzZSAnLi4vLi4vdXRpbGl0aWVzL2ZvY3VzLW91dGxpbmUnO1xcbkB1c2UgJy4uLy4uL3V0aWxpdGllcy9oaWdoLWNvbnRyYXN0LW1vZGUnIGFzICo7XFxuQHVzZSAnLi4vLi4vdXRpbGl0aWVzL3NrZWxldG9uJyBhcyAqO1xcbkB1c2UgJy4uLy4uL3V0aWxpdGllcy92aXN1YWxseS1oaWRkZW4nIGFzICo7XFxuQHVzZSAnLi4vLi4vdXRpbGl0aWVzL2xheW91dCc7XFxuXFxuQG1peGluIGJ1dHRvbiB7XFxuICAuI3skcHJlZml4fS0tYnRuIHtcXG4gICAgQGluY2x1ZGUgbGF5b3V0LnVzZSgnc2l6ZScsICRtaW46ICd4cycsICRkZWZhdWx0OiAnbGcnLCAkbWF4OiAnMnhsJyk7XFxuICAgIEBpbmNsdWRlIGxheW91dC51c2UoJ2RlbnNpdHknLCAkZGVmYXVsdDogJ25vcm1hbCcpO1xcblxcbiAgICBAaW5jbHVkZSBidXR0b24tYmFzZTtcXG4gIH1cXG5cXG4gIC8vIFJlc2V0IGludHJpbnNpYyBwYWRkaW5nIGluIEZpcmVmb3ggKHNlZSAjNzMxKVxcbiAgLiN7JHByZWZpeH0tLWJ0bjo6LW1vei1mb2N1cy1pbm5lciB7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIGJvcmRlcjogMDtcXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1idG4tLXByaW1hcnkge1xcbiAgICBAaW5jbHVkZSBidXR0b24tdGhlbWUoXFxuICAgICAgJGJ1dHRvbi1wcmltYXJ5LFxcbiAgICAgIHRyYW5zcGFyZW50LFxcbiAgICAgICR0ZXh0LW9uLWNvbG9yLFxcbiAgICAgICRidXR0b24tcHJpbWFyeS1ob3ZlcixcXG4gICAgICBjdXJyZW50Q29sb3IsXFxuICAgICAgJGJ1dHRvbi1wcmltYXJ5LWFjdGl2ZVxcbiAgICApO1xcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBjb2xvcjogJHRleHQtb24tY29sb3I7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1idG4tLXNlY29uZGFyeSB7XFxuICAgIEBpbmNsdWRlIGJ1dHRvbi10aGVtZShcXG4gICAgICAkYnV0dG9uLXNlY29uZGFyeSxcXG4gICAgICB0cmFuc3BhcmVudCxcXG4gICAgICAkdGV4dC1vbi1jb2xvcixcXG4gICAgICAkYnV0dG9uLXNlY29uZGFyeS1ob3ZlcixcXG4gICAgICBjdXJyZW50Q29sb3IsXFxuICAgICAgJGJ1dHRvbi1zZWNvbmRhcnktYWN0aXZlXFxuICAgICk7XFxuXFxuICAgICY6aG92ZXIsXFxuICAgICY6Zm9jdXMge1xcbiAgICAgIGNvbG9yOiAkdGV4dC1vbi1jb2xvcjtcXG4gICAgfVxcbiAgfVxcblxcbiAgLiN7JHByZWZpeH0tLWJ0bi0tdGVydGlhcnkge1xcbiAgICBAaW5jbHVkZSBidXR0b24tdGhlbWUoXFxuICAgICAgdHJhbnNwYXJlbnQsXFxuICAgICAgJGJ1dHRvbi10ZXJ0aWFyeSxcXG4gICAgICAkYnV0dG9uLXRlcnRpYXJ5LFxcbiAgICAgICRidXR0b24tdGVydGlhcnktaG92ZXIsXFxuICAgICAgY3VycmVudENvbG9yLFxcbiAgICAgICRidXR0b24tdGVydGlhcnktYWN0aXZlXFxuICAgICk7XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGNvbG9yOiAkdGV4dC1pbnZlcnNlO1xcbiAgICB9XFxuXFxuICAgICY6Zm9jdXMge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tdGVydGlhcnk7XFxuICAgICAgY29sb3I6ICR0ZXh0LWludmVyc2U7XFxuICAgIH1cXG5cXG4gICAgJjphY3RpdmUge1xcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbi10ZXJ0aWFyeS1hY3RpdmU7XFxuICAgICAgY29sb3I6ICR0ZXh0LWludmVyc2U7XFxuICAgIH1cXG5cXG4gICAgJjpkaXNhYmxlZCxcXG4gICAgJjpob3ZlcjpkaXNhYmxlZCxcXG4gICAgJjpmb2N1czpkaXNhYmxlZCxcXG4gICAgJi4jeyRwcmVmaXh9LS1idG4tLWRpc2FibGVkLFxcbiAgICAmLiN7JHByZWZpeH0tLWJ0bi0tZGlzYWJsZWQ6aG92ZXIsXFxuICAgICYuI3skcHJlZml4fS0tYnRuLS1kaXNhYmxlZDpmb2N1cyB7XFxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICAgICAgY29sb3I6ICR0ZXh0LWRpc2FibGVkO1xcbiAgICAgIG91dGxpbmU6IG5vbmU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1idG4tLWdob3N0IHtcXG4gICAgQGluY2x1ZGUgYnV0dG9uLXRoZW1lKFxcbiAgICAgIHRyYW5zcGFyZW50LFxcbiAgICAgIHRyYW5zcGFyZW50LFxcbiAgICAgICRsaW5rLXByaW1hcnksXFxuICAgICAgJGJhY2tncm91bmQtaG92ZXIsXFxuICAgICAgY3VycmVudENvbG9yLFxcbiAgICAgICRiYWNrZ3JvdW5kLWFjdGl2ZVxcbiAgICApO1xcblxcbiAgICBwYWRkaW5nLWlubGluZS1lbmQ6IGNhbGMoXFxuICAgICAgbGF5b3V0LmRlbnNpdHkoJ3BhZGRpbmctaW5saW5lJykgLSBjb252ZXJ0LnRvLXJlbSgxcHgpXFxuICAgICk7XFxuXFxuICAgIC4jeyRwcmVmaXh9LS1idG5fX2ljb24ge1xcbiAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XFxuICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xcbiAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6ICRzcGFjaW5nLTAzO1xcbiAgICB9XFxuXFxuICAgICY6aG92ZXIsXFxuICAgICY6YWN0aXZlIHtcXG4gICAgICBjb2xvcjogJGxpbmstcHJpbWFyeS1ob3ZlcjtcXG4gICAgfVxcblxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtYWN0aXZlO1xcbiAgICB9XFxuXFxuICAgICY6ZGlzYWJsZWQsXFxuICAgICY6aG92ZXI6ZGlzYWJsZWQsXFxuICAgICY6Zm9jdXM6ZGlzYWJsZWQsXFxuICAgICYuI3skcHJlZml4fS0tYnRuLS1kaXNhYmxlZCxcXG4gICAgJi4jeyRwcmVmaXh9LS1idG4tLWRpc2FibGVkOmhvdmVyLFxcbiAgICAmLiN7JHByZWZpeH0tLWJ0bi0tZGlzYWJsZWQ6Zm9jdXMge1xcbiAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICAgICAgY29sb3I6ICR0ZXh0LWRpc2FibGVkO1xcbiAgICAgIG91dGxpbmU6IG5vbmU7XFxuICAgIH1cXG5cXG4gICAgJjpub3QoW2Rpc2FibGVkXSkgc3ZnIHtcXG4gICAgICBmaWxsOiAkaWNvbi1wcmltYXJ5O1xcbiAgICB9XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0tYnRuLS1pY29uLW9ubHkge1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgYmxvY2stc2l6ZTogbGF5b3V0LnNpemUoJ2hlaWdodCcpO1xcbiAgICBpbmxpbmUtc2l6ZTogbGF5b3V0LnNpemUoJ2hlaWdodCcpO1xcbiAgICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiAwO1xcblxcbiAgICA+IDpmaXJzdC1jaGlsZCB7XFxuICAgICAgbWluLWlubGluZS1zaXplOiBjb252ZXJ0LnRvLXJlbSgxNnB4KTtcXG4gICAgfVxcblxcbiAgICAuI3skcHJlZml4fS0tYnRuX19pY29uIHtcXG4gICAgICBwb3NpdGlvbjogc3RhdGljO1xcbiAgICB9XFxuXFxuICAgICYuI3skcHJlZml4fS0tYnRuLS1naG9zdCAuI3skcHJlZml4fS0tYnRuX19pY29uLFxcbiAgICAmLiN7JHByZWZpeH0tLWJ0bi0tZGFuZ2VyLS1naG9zdCAuI3skcHJlZml4fS0tYnRuX19pY29uIHtcXG4gICAgICBtYXJnaW46IDA7XFxuICAgIH1cXG5cXG4gICAgJi4jeyRwcmVmaXh9LS1idG4tLWRhbmdlci0tZ2hvc3Qge1xcbiAgICAgIHBhZGRpbmctaW5saW5lLWVuZDogY2FsYyhcXG4gICAgICAgIGxheW91dC5kZW5zaXR5KCdwYWRkaW5nLWlubGluZScpIC0gY29udmVydC50by1yZW0oMTZweClcXG4gICAgICApO1xcbiAgICB9XFxuICB9XFxuXFxuICAvLyBBZGp1c3QgdGV4dCBwb3NpdGlvbmluZyBpbiBleHRyYSBzbWFsbCB2YXJpYW50IG9ubHlcXG4gIC4jeyRwcmVmaXh9LS1idG4tLXhzOm5vdCguI3skcHJlZml4fS0tYnRuLS1pY29uLW9ubHkpIHtcXG4gICAgcGFkZGluZy1ibG9jay1zdGFydDogMS41cHg7XFxuICB9XFxuXFxuICAvLyBBZGp1c3QgaWNvbiBwb3NpdGlvbmluZyBpbiBleHRyYSBzbWFsbCwgc21hbGwsIG1lZGl1bSB2YXJpYW50cyBvbmx5XFxuICAuI3skcHJlZml4fS0tYnRuLS14czpub3QoLiN7JHByZWZpeH0tLWJ0bi0taWNvbi1vbmx5KSAuI3skcHJlZml4fS0tYnRuX19pY29uLFxcbiAgLiN7JHByZWZpeH0tLWJ0bi0tc206bm90KC4jeyRwcmVmaXh9LS1idG4tLWljb24tb25seSkgLiN7JHByZWZpeH0tLWJ0bl9faWNvbixcXG4gIC4jeyRwcmVmaXh9LS1idG4tLW1kOm5vdCguI3skcHJlZml4fS0tYnRuLS1pY29uLW9ubHkpIC4jeyRwcmVmaXh9LS1idG5fX2ljb24ge1xcbiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IDA7XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0tYnRuLS1pY29uLW9ubHkuI3skcHJlZml4fS0tYnRuLS1zZWxlY3RlZCB7XFxuICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kLXNlbGVjdGVkO1xcbiAgfVxcblxcbiAgLiN7JHByZWZpeH0tLWJ0biBwYXRoW2RhdGEtaWNvbi1wYXRoPSdpbm5lci1wYXRoJ10ge1xcbiAgICBmaWxsOiBub25lO1xcbiAgfVxcblxcbiAgLiN7JHByZWZpeH0tLWJ0bi0tZ2hvc3QuI3skcHJlZml4fS0tYnRuLS1pY29uLW9ubHlcXG4gICAgLiN7JHByZWZpeH0tLWJ0bl9faWNvblxcbiAgICBwYXRoOm5vdChbZGF0YS1pY29uLXBhdGhdKTpub3QoW2ZpbGw9J25vbmUnXSksXFxuICAuI3skcHJlZml4fS0tYnRuLS1naG9zdC4jeyRwcmVmaXh9LS1idG4tLWljb24tb25seSAuI3skcHJlZml4fS0tYnRuX19pY29uIHtcXG4gICAgZmlsbDogJGljb24tcHJpbWFyeTtcXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1idG4tLWdob3N0LiN7JHByZWZpeH0tLWJ0bi0taWNvbi1vbmx5W2Rpc2FibGVkXVxcbiAgICAuI3skcHJlZml4fS0tYnRuX19pY29uXFxuICAgIHBhdGg6bm90KFtkYXRhLWljb24tcGF0aF0pOm5vdChbZmlsbD0nbm9uZSddKSxcXG4gIC4jeyRwcmVmaXh9LS1idG4tLWdob3N0LiN7JHByZWZpeH0tLWJ0bi0taWNvbi1vbmx5W2Rpc2FibGVkXVxcbiAgICAuI3skcHJlZml4fS0tYnRuX19pY29uLFxcbiAgLiN7JHByZWZpeH0tLWJ0bi4jeyRwcmVmaXh9LS1idG4tLWljb24tb25seS4jeyRwcmVmaXh9LS1idG4tLWdob3N0W2Rpc2FibGVkXTpob3ZlclxcbiAgICAuI3skcHJlZml4fS0tYnRuX19pY29uIHtcXG4gICAgZmlsbDogJGljb24tb24tY29sb3ItZGlzYWJsZWQ7XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0tYnRuLS1naG9zdC4jeyRwcmVmaXh9LS1idG4tLWljb24tb25seVtkaXNhYmxlZF0ge1xcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbiAgfVxcblxcbiAgLy8gV29ya2Fyb3VuZCB0byBlbnN1cmUgb25Nb3VzZUVudGVyIGV2ZW50cyBmaXJlIHdoZW4gbW92aW5nXFxuICAvLyBmcm9tIGEgZGlzYWJsZWQgYnV0dG9uIHRvIGEgbm9uLWRpc2FibGVkIGJ1dHRvbiAoIzEzODE1KVxcbiAgLiN7JHByZWZpeH0tLWljb24tdG9vbHRpcC0tZGlzYWJsZWQgLiN7JHByZWZpeH0tLXRvb2x0aXAtdHJpZ2dlcl9fd3JhcHBlciB7XFxuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0taWNvbi10b29sdGlwLS1kaXNhYmxlZCAuI3skcHJlZml4fS0tYnRuLS1pY29uLW9ubHlbZGlzYWJsZWRdIHtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0tYnRuLS1kYW5nZXIge1xcbiAgICBAaW5jbHVkZSBidXR0b24tdGhlbWUoXFxuICAgICAgJGJ1dHRvbi1kYW5nZXItcHJpbWFyeSxcXG4gICAgICB0cmFuc3BhcmVudCxcXG4gICAgICAkdGV4dC1vbi1jb2xvcixcXG4gICAgICAkYnV0dG9uLWRhbmdlci1ob3ZlcixcXG4gICAgICBjdXJyZW50Q29sb3IsXFxuICAgICAgJGJ1dHRvbi1kYW5nZXItYWN0aXZlXFxuICAgICk7XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGNvbG9yOiAkdGV4dC1vbi1jb2xvcjtcXG4gICAgfVxcblxcbiAgICAmLS10ZXJ0aWFyeSB7XFxuICAgICAgQGluY2x1ZGUgYnV0dG9uLXRoZW1lKFxcbiAgICAgICAgdHJhbnNwYXJlbnQsXFxuICAgICAgICAkYnV0dG9uLWRhbmdlci1zZWNvbmRhcnksXFxuICAgICAgICAkYnV0dG9uLWRhbmdlci1zZWNvbmRhcnksXFxuICAgICAgICAkYnV0dG9uLWRhbmdlci1ob3ZlcixcXG4gICAgICAgIGN1cnJlbnRDb2xvcixcXG4gICAgICAgICRidXR0b24tZGFuZ2VyLWFjdGl2ZVxcbiAgICAgICk7XFxuXFxuICAgICAgJjpob3ZlciB7XFxuICAgICAgICBib3JkZXItY29sb3I6ICRidXR0b24tZGFuZ2VyLWhvdmVyO1xcbiAgICAgICAgY29sb3I6ICR0ZXh0LW9uLWNvbG9yO1xcbiAgICAgIH1cXG5cXG4gICAgICAmOmZvY3VzIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tZGFuZ2VyLXByaW1hcnk7XFxuICAgICAgICBjb2xvcjogJHRleHQtb24tY29sb3I7XFxuICAgICAgfVxcblxcbiAgICAgICY6YWN0aXZlIHtcXG4gICAgICAgIGJvcmRlci1jb2xvcjogJGJ1dHRvbi1kYW5nZXItYWN0aXZlO1xcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbi1kYW5nZXItYWN0aXZlO1xcbiAgICAgICAgY29sb3I6ICR0ZXh0LW9uLWNvbG9yO1xcbiAgICAgIH1cXG5cXG4gICAgICAmOmRpc2FibGVkLFxcbiAgICAgICY6aG92ZXI6ZGlzYWJsZWQsXFxuICAgICAgJjpmb2N1czpkaXNhYmxlZCxcXG4gICAgICAmLiN7JHByZWZpeH0tLWJ0bi0tZGlzYWJsZWQsXFxuICAgICAgJi4jeyRwcmVmaXh9LS1idG4tLWRpc2FibGVkOmhvdmVyLFxcbiAgICAgICYuI3skcHJlZml4fS0tYnRuLS1kaXNhYmxlZDpmb2N1cyB7XFxuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gICAgICAgIGNvbG9yOiAkdGV4dC1kaXNhYmxlZDtcXG4gICAgICAgIG91dGxpbmU6IG5vbmU7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgICYtLWdob3N0IHtcXG4gICAgICBAaW5jbHVkZSBidXR0b24tdGhlbWUoXFxuICAgICAgICB0cmFuc3BhcmVudCxcXG4gICAgICAgIHRyYW5zcGFyZW50LFxcbiAgICAgICAgJGJ1dHRvbi1kYW5nZXItc2Vjb25kYXJ5LFxcbiAgICAgICAgJGJ1dHRvbi1kYW5nZXItaG92ZXIsXFxuICAgICAgICBjdXJyZW50Q29sb3IsXFxuICAgICAgICAkYnV0dG9uLWRhbmdlci1hY3RpdmVcXG4gICAgICApO1xcblxcbiAgICAgIHBhZGRpbmctaW5saW5lLWVuZDogY2FsYyhcXG4gICAgICAgIGxheW91dC5kZW5zaXR5KCdwYWRkaW5nLWlubGluZScpIC0gY29udmVydC50by1yZW0oMXB4KVxcbiAgICAgICk7XFxuXFxuICAgICAgLiN7JHByZWZpeH0tLWJ0bl9faWNvbiB7XFxuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xcbiAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogJHNwYWNpbmctMDM7XFxuICAgICAgfVxcblxcbiAgICAgICY6aG92ZXIsXFxuICAgICAgJjphY3RpdmUge1xcbiAgICAgICAgY29sb3I6ICR0ZXh0LW9uLWNvbG9yO1xcbiAgICAgIH1cXG5cXG4gICAgICAmOmRpc2FibGVkLFxcbiAgICAgICY6aG92ZXI6ZGlzYWJsZWQsXFxuICAgICAgJjpmb2N1czpkaXNhYmxlZCxcXG4gICAgICAmLiN7JHByZWZpeH0tLWJ0bi0tZGlzYWJsZWQsXFxuICAgICAgJi4jeyRwcmVmaXh9LS1idG4tLWRpc2FibGVkOmhvdmVyLFxcbiAgICAgICYuI3skcHJlZml4fS0tYnRuLS1kaXNhYmxlZDpmb2N1cyB7XFxuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICAgICAgICBjb2xvcjogJHRleHQtZGlzYWJsZWQ7XFxuICAgICAgICBvdXRsaW5lOiBub25lO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgLy9leHByZXNzaXZlIHN0eWxlc1xcbiAgLiN7JHByZWZpeH0tLWJ0bi0tZXhwcmVzc2l2ZSB7XFxuICAgIEBpbmNsdWRlIHR5cGUtc3R5bGUoJ2JvZHktY29tcGFjdC0wMicpO1xcblxcbiAgICBwYWRkaW5nLWJsb2NrOiBtaW4oXFxuICAgICAgY2FsYyhcXG4gICAgICAgIChsYXlvdXQuc2l6ZSgnaGVpZ2h0JykgLSB2YXIoLS10ZW1wLWV4cHJlc3NpdmUtMWxoKSkgLyAyIC0gY29udmVydC50by1yZW0oXFxuICAgICAgICAgICAgMXB4XFxuICAgICAgICAgIClcXG4gICAgICApLFxcbiAgICAgIHZhcigtLXRlbXAtcGFkZGluZy1ibG9jay1tYXgpXFxuICAgICk7XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0tYnRuLS1pY29uLW9ubHkuI3skcHJlZml4fS0tYnRuLS1leHByZXNzaXZlIHtcXG4gICAgcGFkZGluZzogMTJweCAxM3B4O1xcbiAgICAvL2RlZmF1bHQgc2l6ZSA0OHB4XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0tYnRuLiN7JHByZWZpeH0tLWJ0bi0tZXhwcmVzc2l2ZSAuI3skcHJlZml4fS0tYnRuX19pY29uIHtcXG4gICAgYmxvY2stc2l6ZTogY29udmVydC50by1yZW0oMjBweCk7XFxuICAgIGlubGluZS1zaXplOiBjb252ZXJ0LnRvLXJlbSgyMHB4KTtcXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1idG4tc2V0IC4jeyRwcmVmaXh9LS1idG4uI3skcHJlZml4fS0tYnRuLS1leHByZXNzaXZlIHtcXG4gICAgbWF4LWlubGluZS1zaXplOiBjb252ZXJ0LnRvLXJlbSgzMjBweCk7XFxuICB9XFxuXFxuICAvLyBTa2VsZXRvbiBTdGF0ZVxcbiAgLiN7JHByZWZpeH0tLWJ0bi4jeyRwcmVmaXh9LS1za2VsZXRvbiB7XFxuICAgIEBpbmNsdWRlIHNrZWxldG9uO1xcblxcbiAgICBpbmxpbmUtc2l6ZTogY29udmVydC50by1yZW0oMTUwcHgpO1xcbiAgfVxcblxcbiAgLy8gYnV0dG9uIHNldCBzdHlsZXNcXG4gIC4jeyRwcmVmaXh9LS1idG4tc2V0IHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1idG4tc2V0LS1zdGFja2VkIHtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1idG4tc2V0IC4jeyRwcmVmaXh9LS1idG4ge1xcbiAgICBpbmxpbmUtc2l6ZTogMTAwJTtcXG4gICAgLy8gMTk2cHggZnJvbSBkZXNpZ24ga2l0XFxuICAgIG1heC1pbmxpbmUtc2l6ZTogY29udmVydC50by1yZW0oMTk2cHgpO1xcblxcbiAgICAmOm5vdCg6Zm9jdXMpIHtcXG4gICAgICBib3gtc2hhZG93OiBjb252ZXJ0LnRvLXJlbSgtMXB4KSAwIDAgMCAkYnV0dG9uLXNlcGFyYXRvcjtcXG4gICAgfVxcblxcbiAgICAmOmZpcnN0LW9mLXR5cGU6bm90KDpmb2N1cykge1xcbiAgICAgIGJveC1zaGFkb3c6IGluaGVyaXQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1idG4tc2V0IC4jeyRwcmVmaXh9LS1idG46Zm9jdXMgKyAuI3skcHJlZml4fS0tYnRuIHtcXG4gICAgYm94LXNoYWRvdzogaW5oZXJpdDtcXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1idG4tc2V0LS1zdGFja2VkIC4jeyRwcmVmaXh9LS1idG46bm90KDpmb2N1cykge1xcbiAgICBib3gtc2hhZG93OiAwIGNvbnZlcnQudG8tcmVtKC0xcHgpIDAgMCAkYnV0dG9uLXNlcGFyYXRvcjtcXG4gIH1cXG5cXG4gIC4jeyRwcmVmaXh9LS1idG4tc2V0LS1zdGFja2VkIC4jeyRwcmVmaXh9LS1idG46Zmlyc3Qtb2YtdHlwZTpub3QoOmZvY3VzKSB7XFxuICAgIGJveC1zaGFkb3c6IGluaGVyaXQ7XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0tYnRuLXNldCAuI3skcHJlZml4fS0tYnRuLiN7JHByZWZpeH0tLWJ0bi0tZGlzYWJsZWQge1xcbiAgICBib3gtc2hhZG93OiBjb252ZXJ0LnRvLXJlbSgtMXB4KSAwIDAgMCAkaWNvbi1vbi1jb2xvci1kaXNhYmxlZDtcXG5cXG4gICAgJjpmaXJzdC1vZi10eXBlIHtcXG4gICAgICBib3gtc2hhZG93OiBub25lO1xcbiAgICB9XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0tYnRuLXNldC0tc3RhY2tlZCAuI3skcHJlZml4fS0tYnRuLiN7JHByZWZpeH0tLWJ0bi0tZGlzYWJsZWQge1xcbiAgICBib3gtc2hhZG93OiAwIGNvbnZlcnQudG8tcmVtKC0xcHgpIDAgMCAkbGF5ZXItc2VsZWN0ZWQtZGlzYWJsZWQ7XFxuXFxuICAgICY6Zmlyc3Qtb2YtdHlwZSB7XFxuICAgICAgYm94LXNoYWRvdzogbm9uZTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLiN7JHByZWZpeH0tLWJ0bi1zZXQgLiN7JHByZWZpeH0tLWJ0bi4jeyRwcmVmaXh9LS1idG4tLWxvYWRpbmcge1xcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgYm94LXNoYWRvdzogbm9uZTtcXG4gIH1cXG5cXG4gIC8vIGJhZGdlIGluZGljYXRvclxcblxcbiAgLiN7JHByZWZpeH0tLWJ0bi0tc20gLiN7JHByZWZpeH0tLWJhZGdlLWluZGljYXRvciB7XFxuICAgIG1hcmdpbi1ibG9jay1zdGFydDogJHNwYWNpbmctMDI7XFxuICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAkc3BhY2luZy0wMjtcXG4gIH1cXG5cXG4gIC8vIFdpbmRvd3MgSENNIGZpeFxcbiAgLiN7JHByZWZpeH0tLWJ0bjpmb2N1cyB7XFxuICAgIEBpbmNsdWRlIGhpZ2gtY29udHJhc3QtbW9kZSgnZm9jdXMnKTtcXG4gIH1cXG5cXG4gIC8vIFJUTCBvdmVycmlkZXNcXG4gIFtkaXI9J3J0bCddIC4jeyRwcmVmaXh9LS1idG4tc2V0IC4jeyRwcmVmaXh9LS1idG46bm90KDpmb2N1cykge1xcbiAgICBib3gtc2hhZG93OiBjb252ZXJ0LnRvLXJlbSgxcHgpIDAgMCAwICRidXR0b24tc2VwYXJhdG9yO1xcbiAgfVxcbn1cXG5cIixcIi8vXFxuLy8gQ29weXJpZ2h0IElCTSBDb3JwLiAyMDE2LCAyMDIzXFxuLy9cXG4vLyBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUtMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuLy8gTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbi8vXFxuXFxuQHVzZSAnc2FzczptYXAnO1xcblxcbkB1c2UgJ3ZhcnMnIGFzICo7XFxuQHVzZSAnLi4vLi4vY29uZmlnJyBhcyAqO1xcbkB1c2UgJy4uLy4uL21vdGlvbicgYXMgKjtcXG5AdXNlICcuLi8uLi9zcGFjaW5nJyBhcyAqO1xcbkB1c2UgJy4uLy4uL3RoZW1lJyBhcyAqO1xcbkB1c2UgJy4uLy4uL3R5cGUnIGFzICo7XFxuQHVzZSAnLi4vLi4vdXRpbGl0aWVzL2NvbXBvbmVudC1yZXNldCc7XFxuQHVzZSAnLi4vLi4vdXRpbGl0aWVzL2NvbnZlcnQnO1xcbkB1c2UgJy4uLy4uL3V0aWxpdGllcy9jdXN0b20tcHJvcGVydHknO1xcbkB1c2UgJy4uLy4uL3V0aWxpdGllcy9sYXlvdXQnO1xcbkB1c2UgJ3Rva2VucycgYXMgKjtcXG5cXG4kYnV0dG9uLWZvY3VzLWNvbG9yOiBjdXN0b20tcHJvcGVydHkuZ2V0LXZhcignYnV0dG9uLWZvY3VzLWNvbG9yJywgJGZvY3VzKTtcXG5cXG5AbWl4aW4gYnV0dG9uLWJhc2Uge1xcbiAgLy8gaHR0cHM6Ly9jYW5pdXNlLmNvbS9tZG4tY3NzX3R5cGVzX2xlbmd0aF9saFxcbiAgLS10ZW1wLTFsaDogKFxcbiAgICAje2N1c3RvbS1wcm9wZXJ0eS5nZXQtdmFyKFxcbiAgICAgICAgJ2JvZHktY29tcGFjdC0wMS1saW5lLWhlaWdodCcsXFxuICAgICAgICBtYXAuZ2V0KCRib2R5LWNvbXBhY3QtMDEsIGxpbmUtaGVpZ2h0KVxcbiAgICAgICl9ICogMWVtXFxuICApO1xcbiAgLS10ZW1wLWV4cHJlc3NpdmUtMWxoOiAoXFxuICAgICN7Y3VzdG9tLXByb3BlcnR5LmdldC12YXIoXFxuICAgICAgICAnYm9keS1jb21wYWN0LTAyLWxpbmUtaGVpZ2h0JyxcXG4gICAgICAgIG1hcC5nZXQoJGJvZHktY29tcGFjdC0wMiwgbGluZS1oZWlnaHQpXFxuICAgICAgKX0gKiAxZW1cXG4gICk7XFxuICAvLyAtMXB4IHRvIGNvbXBlbnNhdGUgZm9yIGJvcmRlciB3aWR0aFxcbiAgLS10ZW1wLXBhZGRpbmctYmxvY2stbWF4OiBjYWxjKFxcbiAgICAoI3tjdXN0b20tcHJvcGVydHkuZ2V0LXZhcignbGF5b3V0LXNpemUtaGVpZ2h0LWxnJyl9IC0gdmFyKC0tdGVtcC0xbGgpKSAvIDIgLVxcbiAgICAgICN7Y29udmVydC50by1yZW0oMXB4KX1cXG4gICk7XFxuXFxuICBAaW5jbHVkZSBjb21wb25lbnQtcmVzZXQucmVzZXQ7XFxuICBAaW5jbHVkZSB0eXBlLXN0eWxlKCdib2R5LWNvbXBhY3QtMDEnKTtcXG5cXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgZmxleC1zaHJpbms6IDA7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICBib3JkZXItcmFkaXVzOiAkYnV0dG9uLWJvcmRlci1yYWRpdXM7XFxuICAvLyBGaXggdG8gcmVtb3ZlIGFkZGVkIG1hcmdpbnMgb24gYnV0dG9ucyBpbiBzYWZhcmkgKHNlZSAjNTE1NSlcXG4gIG1hcmdpbjogMDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIGlubGluZS1zaXplOiBtYXgtY29udGVudDtcXG4gIG1heC1pbmxpbmUtc2l6ZTogY29udmVydC50by1yZW0oMzIwcHgpO1xcbiAgbWluLWJsb2NrLXNpemU6IGxheW91dC5zaXplKCdoZWlnaHQnKTtcXG4gIG91dGxpbmU6IG5vbmU7XFxuICAvLyAtMXB4IHRvIGNvbXBlbnNhdGUgZm9yIGJvcmRlciB3aWR0aFxcbiAgcGFkZGluZy1ibG9jazogbWluKFxcbiAgICBjYWxjKChsYXlvdXQuc2l6ZSgnaGVpZ2h0JykgLSB2YXIoLS10ZW1wLTFsaCkpIC8gMiAtIGNvbnZlcnQudG8tcmVtKDFweCkpLFxcbiAgICB2YXIoLS10ZW1wLXBhZGRpbmctYmxvY2stbWF4KVxcbiAgKTtcXG4gIHBhZGRpbmctaW5saW5lOiBjYWxjKGxheW91dC5kZW5zaXR5KCdwYWRkaW5nLWlubGluZScpIC0gY29udmVydC50by1yZW0oMXB4KSlcXG4gICAgY2FsYyhcXG4gICAgICBsYXlvdXQuZGVuc2l0eSgncGFkZGluZy1pbmxpbmUnKSAqIDMgKyBjb252ZXJ0LnRvLXJlbSgxNnB4KSAtIGNvbnZlcnQudG8tcmVtKFxcbiAgICAgICAgICAxcHhcXG4gICAgICAgIClcXG4gICAgKTtcXG4gIHRleHQtYWxpZ246IHN0YXJ0O1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgdHJhbnNpdGlvbjpcXG4gICAgYmFja2dyb3VuZCAkZHVyYXRpb24tZmFzdC0wMSBtb3Rpb24oZW50cmFuY2UsIHByb2R1Y3RpdmUpLFxcbiAgICBib3gtc2hhZG93ICRkdXJhdGlvbi1mYXN0LTAxIG1vdGlvbihlbnRyYW5jZSwgcHJvZHVjdGl2ZSksXFxuICAgIGJvcmRlci1jb2xvciAkZHVyYXRpb24tZmFzdC0wMSBtb3Rpb24oZW50cmFuY2UsIHByb2R1Y3RpdmUpLFxcbiAgICBvdXRsaW5lICRkdXJhdGlvbi1mYXN0LTAxIG1vdGlvbihlbnRyYW5jZSwgcHJvZHVjdGl2ZSk7XFxuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xcblxcbiAgJjpkaXNhYmxlZCxcXG4gICY6aG92ZXI6ZGlzYWJsZWQsXFxuICAmOmZvY3VzOmRpc2FibGVkLFxcbiAgJi4jeyRwcmVmaXh9LS1idG4tLWRpc2FibGVkLFxcbiAgJi4jeyRwcmVmaXh9LS1idG4tLWRpc2FibGVkOmhvdmVyLFxcbiAgJi4jeyRwcmVmaXh9LS1idG4tLWRpc2FibGVkOmZvY3VzIHtcXG4gICAgYm9yZGVyLWNvbG9yOiAkYnV0dG9uLWRpc2FibGVkO1xcbiAgICBiYWNrZ3JvdW5kOiAkYnV0dG9uLWRpc2FibGVkO1xcbiAgICBib3gtc2hhZG93OiBub25lO1xcbiAgICBjb2xvcjogJHRleHQtb24tY29sb3ItZGlzYWJsZWQ7XFxuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0tYnRuX19pY29uIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBmbGV4LXNocmluazogMDtcXG4gICAgYmxvY2stc2l6ZTogY29udmVydC50by1yZW0oMTZweCk7XFxuICAgIGlubGluZS1zaXplOiBjb252ZXJ0LnRvLXJlbSgxNnB4KTtcXG4gICAgLy8gLTFweCB0byBjb21wZW5zYXRlIGZvciBib3JkZXIgd2lkdGhcXG4gICAgaW5zZXQtYmxvY2stc3RhcnQ6IG1pbihcXG4gICAgICBjYWxjKFxcbiAgICAgICAgKGxheW91dC5zaXplKCdoZWlnaHQnKSAtIGNvbnZlcnQudG8tcmVtKDE2cHgpKSAvIDIgLSBjb252ZXJ0LnRvLXJlbSgxcHgpXFxuICAgICAgKSxcXG4gICAgICB2YXIoLS10ZW1wLXBhZGRpbmctYmxvY2stbWF4KVxcbiAgICApO1xcbiAgICBpbnNldC1pbmxpbmUtZW5kOiBsYXlvdXQuZGVuc2l0eSgncGFkZGluZy1pbmxpbmUnKTtcXG4gICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiBjb252ZXJ0LnRvLXJlbSgxcHgpO1xcbiAgfVxcbn1cXG5cXG4vLy8gQnV0dG9uIHZhcmlhbnQgc3R5bGVzXFxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxcbi8vLyBAZ3JvdXAgYnV0dG9uXFxuQG1peGluIGJ1dHRvbi10aGVtZShcXG4gICRiZy1jb2xvcixcXG4gICRib3JkZXItY29sb3IsXFxuICAkZm9udC1jb2xvcixcXG4gICRob3Zlci1iZy1jb2xvcixcXG4gICRpY29uLWNvbG9yLFxcbiAgJGFjdGl2ZS1jb2xvclxcbikge1xcbiAgYm9yZGVyLXdpZHRoOiAkYnV0dG9uLW91dGxpbmUtd2lkdGg7XFxuICBib3JkZXItc3R5bGU6IHNvbGlkO1xcbiAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLWNvbG9yO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJnLWNvbG9yO1xcbiAgY29sb3I6ICRmb250LWNvbG9yO1xcblxcbiAgJjpob3ZlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRob3Zlci1iZy1jb2xvcjtcXG4gIH1cXG5cXG4gICY6Zm9jdXMge1xcbiAgICBib3JkZXItY29sb3I6ICRidXR0b24tZm9jdXMtY29sb3I7XFxuICAgIGJveC1zaGFkb3c6XFxuICAgICAgaW5zZXQgMCAwIDAgJGJ1dHRvbi1vdXRsaW5lLXdpZHRoICRidXR0b24tZm9jdXMtY29sb3IsXFxuICAgICAgaW5zZXQgMCAwIDAgJGJ1dHRvbi1ib3JkZXItd2lkdGggJGJhY2tncm91bmQ7XFxuICB9XFxuXFxuICAmOmFjdGl2ZSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRhY3RpdmUtY29sb3I7XFxuICB9XFxuXFxuICAuI3skcHJlZml4fS0tYnRuX19pY29uLFxcbiAgLiN7JHByZWZpeH0tLWJ0bl9faWNvbiBwYXRoOm5vdChbZGF0YS1pY29uLXBhdGhdKTpub3QoW2ZpbGw9J25vbmUnXSkge1xcbiAgICBmaWxsOiAkaWNvbi1jb2xvcjtcXG4gIH1cXG59XFxuXFxuQG1peGluIGJ1dHRvbi1wYWRkaW5nLWxhcmdlIHtcXG4gIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcXG4gIHBhZGRpbmctYmxvY2stc3RhcnQ6ICRzcGFjaW5nLTA1O1xcbiAgcGFkZGluZy1pbmxpbmU6ICRzcGFjaW5nLTA1ICRzcGFjaW5nLTEwO1xcbn1cXG5cIixcIi8vXFxuLy8gQ29weXJpZ2h0IElCTSBDb3JwLiAyMDE2LCAyMDIzXFxuLy9cXG4vLyBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUtMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuLy8gTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbi8vXFxuXFxuQHVzZSAnLi4vLi4vc3BhY2luZycgYXMgKjtcXG5cXG4vLy8gQHR5cGUgTnVtYmVyXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBidXR0b25cXG4kYnV0dG9uLWZvbnQtd2VpZ2h0OiA0MDAgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE51bWJlclxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgYnV0dG9uXFxuJGJ1dHRvbi1mb250LXNpemU6IDAuODc1cmVtICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBOdW1iZXJcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIGJ1dHRvblxcbiRidXR0b24tYm9yZGVyLXJhZGl1czogMCAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTnVtYmVyXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBidXR0b25cXG4kYnV0dG9uLWhlaWdodDogM3JlbSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgVmFsdWVcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIGJ1dHRvblxcbiRidXR0b24tcGFkZGluZzogY2FsYygwLjg3NXJlbSAtIDNweCkgY2FsYygjeyRzcGFjaW5nLTEwfSAtIDFweClcXG4gIGNhbGMoMC44NzVyZW0gLSAzcHgpIGNhbGMoI3skc3BhY2luZy0wNX0gLSAxcHgpICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBWYWx1ZVxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgYnV0dG9uXFxuJGJ1dHRvbi1wYWRkaW5nLWZpZWxkOiBjYWxjKDAuNjc1cmVtIC0gM3B4KSBjYWxjKCN7JHNwYWNpbmctMTB9IC0gNHB4KVxcbiAgY2FsYygwLjY3NXJlbSAtIDNweCkgY2FsYygjeyRzcGFjaW5nLTA1fSAtIDRweCkgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIFZhbHVlXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBidXR0b25cXG4kYnV0dG9uLXBhZGRpbmctc206IGNhbGMoMC4zNzVyZW0gLSAzcHgpIGNhbGMoI3skc3BhY2luZy0xMH0gLSA0cHgpXFxuICBjYWxjKDAuMzc1cmVtIC0gM3B4KSBjYWxjKCN7JHNwYWNpbmctMDV9IC0gNHB4KSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTnVtYmVyXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBidXR0b25cXG4kYnV0dG9uLXBhZGRpbmctbGc6ICRzcGFjaW5nLTA0ICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBOdW1iZXJcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIGJ1dHRvblxcbi8vLyBVc2VzIHRoZSBzYW1lIHBhZGRpbmcteSBhcyBub3JtYWwgYnV0dG9ucywgYnV0IHJlbW92ZXMgZXh0cmEgcGFkZGluZy1yaWdodFxcbiRidXR0b24tcGFkZGluZy1naG9zdDogY2FsYygwLjg3NXJlbSAtIDNweCkgJHNwYWNpbmctMDUgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE51bWJlclxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgYnV0dG9uXFxuLy8vIFVzZXMgdGhlIHNhbWUgcGFkZGluZy15IGFzIGZpZWxkIGJ1dHRvbnMsIGJ1dCByZW1vdmVzIGV4dHJhIHBhZGRpbmctcmlnaHRcXG4kYnV0dG9uLXBhZGRpbmctZ2hvc3QtZmllbGQ6IGNhbGMoMC42NzVyZW0gLSAzcHgpICRzcGFjaW5nLTA1ICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBOdW1iZXJcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIGJ1dHRvblxcbi8vLyBVc2VzIHRoZSBzYW1lIHBhZGRpbmcteSBhcyBzbWFsbCBidXR0b25zLCBidXQgcmVtb3ZlcyBleHRyYSBwYWRkaW5nLXJpZ2h0XFxuJGJ1dHRvbi1wYWRkaW5nLWdob3N0LXNtOiBjYWxjKDAuMzc1cmVtIC0gM3B4KSAkc3BhY2luZy0wNSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTnVtYmVyXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBidXR0b25cXG4kYnV0dG9uLWJvcmRlci13aWR0aDogMnB4ICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBOdW1iZXJcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIGJ1dHRvblxcbiRidXR0b24tb3V0bGluZS13aWR0aDogMXB4ICFkZWZhdWx0O1xcblwiLFwiLy9cXG4vLyBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMTgsIDIwMjNcXG4vL1xcbi8vIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZS0yLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4vLyBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuLy9cXG5cXG5AdXNlICdzYXNzOm1hcCc7XFxuQHVzZSAnLi4vLi4vY29uZmlnJztcXG5AdXNlICcuLi8uLi90aGVtZXMnO1xcbkB1c2UgJy4uLy4uL3V0aWxpdGllcy9jb21wb25lbnQtdG9rZW5zJztcXG5AdXNlICdAY2FyYm9uL3RoZW1lcy9zY3NzL2NvbXBvbmVudC10b2tlbnMnIGFzIGJ1dHRvbjtcXG5cXG4kYnV0dG9uLXNlcGFyYXRvcjogKFxcbiAgZmFsbGJhY2s6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tc2VwYXJhdG9yLCB3aGl0ZS10aGVtZSksXFxuICB2YWx1ZXM6IChcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJHdoaXRlLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXNlcGFyYXRvciwgd2hpdGUtdGhlbWUpLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXNlcGFyYXRvciwgZy0xMCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnOTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tc2VwYXJhdG9yLCBnLTkwKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMDAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tc2VwYXJhdG9yLCBnLTEwMCksXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuJGJ1dHRvbi1wcmltYXJ5OiAoXFxuICBmYWxsYmFjazogbWFwLmdldChidXR0b24uJGJ1dHRvbi1wcmltYXJ5LCB3aGl0ZS10aGVtZSksXFxuICB2YWx1ZXM6IChcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJHdoaXRlLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXByaW1hcnksIHdoaXRlLXRoZW1lKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1wcmltYXJ5LCBnLTEwKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGc5MCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1wcmltYXJ5LCBnLTkwKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMDAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tcHJpbWFyeSwgZy0xMDApLFxcbiAgICApLFxcbiAgKSxcXG4pICFkZWZhdWx0O1xcblxcbiRidXR0b24tc2Vjb25kYXJ5OiAoXFxuICBmYWxsYmFjazogbWFwLmdldChidXR0b24uJGJ1dHRvbi1zZWNvbmRhcnksIHdoaXRlLXRoZW1lKSxcXG4gIHZhbHVlczogKFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kd2hpdGUsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tc2Vjb25kYXJ5LCB3aGl0ZS10aGVtZSksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tc2Vjb25kYXJ5LCBnLTEwKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGc5MCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1zZWNvbmRhcnksIGctOTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1zZWNvbmRhcnksIGctMTAwKSxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4kYnV0dG9uLXRlcnRpYXJ5OiAoXFxuICBmYWxsYmFjazogbWFwLmdldChidXR0b24uJGJ1dHRvbi10ZXJ0aWFyeSwgd2hpdGUtdGhlbWUpLFxcbiAgdmFsdWVzOiAoXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiR3aGl0ZSxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi10ZXJ0aWFyeSwgd2hpdGUtdGhlbWUpLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXRlcnRpYXJ5LCBnLTEwKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGc5MCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi10ZXJ0aWFyeSwgZy05MCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXRlcnRpYXJ5LCBnLTEwMCksXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuJGJ1dHRvbi1kYW5nZXItcHJpbWFyeTogKFxcbiAgZmFsbGJhY2s6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tZGFuZ2VyLXByaW1hcnksIHdoaXRlLXRoZW1lKSxcXG4gIHZhbHVlczogKFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kd2hpdGUsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tZGFuZ2VyLXByaW1hcnksIHdoaXRlLXRoZW1lKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1kYW5nZXItcHJpbWFyeSwgZy0xMCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnOTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tZGFuZ2VyLXByaW1hcnksIGctOTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1kYW5nZXItcHJpbWFyeSwgZy0xMDApLFxcbiAgICApLFxcbiAgKSxcXG4pICFkZWZhdWx0O1xcblxcbiRidXR0b24tZGFuZ2VyLXNlY29uZGFyeTogKFxcbiAgZmFsbGJhY2s6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tZGFuZ2VyLXNlY29uZGFyeSwgd2hpdGUtdGhlbWUpLFxcbiAgdmFsdWVzOiAoXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiR3aGl0ZSxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1kYW5nZXItc2Vjb25kYXJ5LCB3aGl0ZS10aGVtZSksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tZGFuZ2VyLXNlY29uZGFyeSwgZy0xMCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnOTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tZGFuZ2VyLXNlY29uZGFyeSwgZy05MCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRhbmdlci1zZWNvbmRhcnksIGctMTAwKSxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4kYnV0dG9uLWRhbmdlci1hY3RpdmU6IChcXG4gIGZhbGxiYWNrOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRhbmdlci1hY3RpdmUsIHdoaXRlLXRoZW1lKSxcXG4gIHZhbHVlczogKFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kd2hpdGUsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tZGFuZ2VyLWFjdGl2ZSwgd2hpdGUtdGhlbWUpLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRhbmdlci1hY3RpdmUsIGctMTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzkwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRhbmdlci1hY3RpdmUsIGctOTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1kYW5nZXItYWN0aXZlLCBnLTEwMCksXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuJGJ1dHRvbi1wcmltYXJ5LWFjdGl2ZTogKFxcbiAgZmFsbGJhY2s6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tcHJpbWFyeS1hY3RpdmUsIHdoaXRlLXRoZW1lKSxcXG4gIHZhbHVlczogKFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kd2hpdGUsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tcHJpbWFyeS1hY3RpdmUsIHdoaXRlLXRoZW1lKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1wcmltYXJ5LWFjdGl2ZSwgZy0xMCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnOTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tcHJpbWFyeS1hY3RpdmUsIGctOTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1wcmltYXJ5LWFjdGl2ZSwgZy0xMDApLFxcbiAgICApLFxcbiAgKSxcXG4pICFkZWZhdWx0O1xcblxcbiRidXR0b24tc2Vjb25kYXJ5LWFjdGl2ZTogKFxcbiAgZmFsbGJhY2s6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tc2Vjb25kYXJ5LWFjdGl2ZSwgd2hpdGUtdGhlbWUpLFxcbiAgdmFsdWVzOiAoXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiR3aGl0ZSxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1zZWNvbmRhcnktYWN0aXZlLCB3aGl0ZS10aGVtZSksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tc2Vjb25kYXJ5LWFjdGl2ZSwgZy0xMCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnOTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tc2Vjb25kYXJ5LWFjdGl2ZSwgZy05MCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXNlY29uZGFyeS1hY3RpdmUsIGctMTAwKSxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4kYnV0dG9uLXRlcnRpYXJ5LWFjdGl2ZTogKFxcbiAgZmFsbGJhY2s6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tdGVydGlhcnktYWN0aXZlLCB3aGl0ZS10aGVtZSksXFxuICB2YWx1ZXM6IChcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJHdoaXRlLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXRlcnRpYXJ5LWFjdGl2ZSwgd2hpdGUtdGhlbWUpLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXRlcnRpYXJ5LWFjdGl2ZSwgZy0xMCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnOTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tdGVydGlhcnktYWN0aXZlLCBnLTkwKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMDAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tdGVydGlhcnktYWN0aXZlLCBnLTEwMCksXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuJGJ1dHRvbi1kYW5nZXItaG92ZXI6IChcXG4gIGZhbGxiYWNrOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRhbmdlci1ob3Zlciwgd2hpdGUtdGhlbWUpLFxcbiAgdmFsdWVzOiAoXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiR3aGl0ZSxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1kYW5nZXItaG92ZXIsIHdoaXRlLXRoZW1lKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1kYW5nZXItaG92ZXIsIGctMTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzkwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRhbmdlci1ob3ZlciwgZy05MCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRhbmdlci1ob3ZlciwgZy0xMDApLFxcbiAgICApLFxcbiAgKSxcXG4pICFkZWZhdWx0O1xcblxcbiRidXR0b24tcHJpbWFyeS1ob3ZlcjogKFxcbiAgZmFsbGJhY2s6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tcHJpbWFyeS1ob3Zlciwgd2hpdGUtdGhlbWUpLFxcbiAgdmFsdWVzOiAoXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiR3aGl0ZSxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1wcmltYXJ5LWhvdmVyLCB3aGl0ZS10aGVtZSksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tcHJpbWFyeS1ob3ZlciwgZy0xMCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnOTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tcHJpbWFyeS1ob3ZlciwgZy05MCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXByaW1hcnktaG92ZXIsIGctMTAwKSxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4kYnV0dG9uLXNlY29uZGFyeS1ob3ZlcjogKFxcbiAgZmFsbGJhY2s6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tc2Vjb25kYXJ5LWhvdmVyLCB3aGl0ZS10aGVtZSksXFxuICB2YWx1ZXM6IChcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJHdoaXRlLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXNlY29uZGFyeS1ob3Zlciwgd2hpdGUtdGhlbWUpLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXNlY29uZGFyeS1ob3ZlciwgZy0xMCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnOTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tc2Vjb25kYXJ5LWhvdmVyLCBnLTkwKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMDAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tc2Vjb25kYXJ5LWhvdmVyLCBnLTEwMCksXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuJGJ1dHRvbi10ZXJ0aWFyeS1ob3ZlcjogKFxcbiAgZmFsbGJhY2s6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tdGVydGlhcnktaG92ZXIsIHdoaXRlLXRoZW1lKSxcXG4gIHZhbHVlczogKFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kd2hpdGUsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tdGVydGlhcnktaG92ZXIsIHdoaXRlLXRoZW1lKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi10ZXJ0aWFyeS1ob3ZlciwgZy0xMCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnOTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tdGVydGlhcnktaG92ZXIsIGctOTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi10ZXJ0aWFyeS1ob3ZlciwgZy0xMDApLFxcbiAgICApLFxcbiAgKSxcXG4pICFkZWZhdWx0O1xcblxcbiRidXR0b24tZGlzYWJsZWQ6IChcXG4gIGZhbGxiYWNrOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRpc2FibGVkLCB3aGl0ZS10aGVtZSksXFxuICB2YWx1ZXM6IChcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJHdoaXRlLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRpc2FibGVkLCB3aGl0ZS10aGVtZSksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tZGlzYWJsZWQsIGctMTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzkwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRpc2FibGVkLCBnLTkwKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMDAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tZGlzYWJsZWQsIGctMTAwKSxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4kYnV0dG9uLXRva2VuczogKFxcbiAgYnV0dG9uLXNlcGFyYXRvcjogJGJ1dHRvbi1zZXBhcmF0b3IsXFxuICBidXR0b24tcHJpbWFyeTogJGJ1dHRvbi1wcmltYXJ5LFxcbiAgYnV0dG9uLXNlY29uZGFyeTogJGJ1dHRvbi1zZWNvbmRhcnksXFxuICBidXR0b24tdGVydGlhcnk6ICRidXR0b24tdGVydGlhcnksXFxuICBidXR0b24tZGFuZ2VyLXByaW1hcnk6ICRidXR0b24tZGFuZ2VyLXByaW1hcnksXFxuICBidXR0b24tZGFuZ2VyLXNlY29uZGFyeTogJGJ1dHRvbi1kYW5nZXItc2Vjb25kYXJ5LFxcbiAgYnV0dG9uLWRhbmdlci1hY3RpdmU6ICRidXR0b24tZGFuZ2VyLWFjdGl2ZSxcXG4gIGJ1dHRvbi1wcmltYXJ5LWFjdGl2ZTogJGJ1dHRvbi1wcmltYXJ5LWFjdGl2ZSxcXG4gIGJ1dHRvbi1zZWNvbmRhcnktYWN0aXZlOiAkYnV0dG9uLXNlY29uZGFyeS1hY3RpdmUsXFxuICBidXR0b24tdGVydGlhcnktYWN0aXZlOiAkYnV0dG9uLXRlcnRpYXJ5LWFjdGl2ZSxcXG4gIGJ1dHRvbi1kYW5nZXItaG92ZXI6ICRidXR0b24tZGFuZ2VyLWhvdmVyLFxcbiAgYnV0dG9uLXByaW1hcnktaG92ZXI6ICRidXR0b24tcHJpbWFyeS1ob3ZlcixcXG4gIGJ1dHRvbi1zZWNvbmRhcnktaG92ZXI6ICRidXR0b24tc2Vjb25kYXJ5LWhvdmVyLFxcbiAgYnV0dG9uLXRlcnRpYXJ5LWhvdmVyOiAkYnV0dG9uLXRlcnRpYXJ5LWhvdmVyLFxcbiAgYnV0dG9uLWRpc2FibGVkOiAkYnV0dG9uLWRpc2FibGVkLFxcbik7XFxuXFxuJGJ1dHRvbi1zZXBhcmF0b3I6IGNvbXBvbmVudC10b2tlbnMuZ2V0LXZhcihcXG4gICRidXR0b24tc2VwYXJhdG9yLFxcbiAgJ2J1dHRvbi1zZXBhcmF0b3InXFxuKTtcXG5cXG4kYnV0dG9uLXByaW1hcnk6IGNvbXBvbmVudC10b2tlbnMuZ2V0LXZhcigkYnV0dG9uLXByaW1hcnksICdidXR0b24tcHJpbWFyeScpO1xcblxcbiRidXR0b24tc2Vjb25kYXJ5OiBjb21wb25lbnQtdG9rZW5zLmdldC12YXIoXFxuICAkYnV0dG9uLXNlY29uZGFyeSxcXG4gICdidXR0b24tc2Vjb25kYXJ5J1xcbik7XFxuXFxuJGJ1dHRvbi10ZXJ0aWFyeTogY29tcG9uZW50LXRva2Vucy5nZXQtdmFyKCRidXR0b24tdGVydGlhcnksICdidXR0b24tdGVydGlhcnknKTtcXG5cXG4kYnV0dG9uLWRhbmdlci1wcmltYXJ5OiBjb21wb25lbnQtdG9rZW5zLmdldC12YXIoXFxuICAkYnV0dG9uLWRhbmdlci1wcmltYXJ5LFxcbiAgJ2J1dHRvbi1kYW5nZXItcHJpbWFyeSdcXG4pO1xcblxcbiRidXR0b24tZGFuZ2VyLXNlY29uZGFyeTogY29tcG9uZW50LXRva2Vucy5nZXQtdmFyKFxcbiAgJGJ1dHRvbi1kYW5nZXItc2Vjb25kYXJ5LFxcbiAgJ2J1dHRvbi1kYW5nZXItc2Vjb25kYXJ5J1xcbik7XFxuXFxuJGJ1dHRvbi1kYW5nZXItYWN0aXZlOiBjb21wb25lbnQtdG9rZW5zLmdldC12YXIoXFxuICAkYnV0dG9uLWRhbmdlci1hY3RpdmUsXFxuICAnYnV0dG9uLWRhbmdlci1hY3RpdmUnXFxuKTtcXG5cXG4kYnV0dG9uLXByaW1hcnktYWN0aXZlOiBjb21wb25lbnQtdG9rZW5zLmdldC12YXIoXFxuICAkYnV0dG9uLXByaW1hcnktYWN0aXZlLFxcbiAgJ2J1dHRvbi1wcmltYXJ5LWFjdGl2ZSdcXG4pO1xcblxcbiRidXR0b24tc2Vjb25kYXJ5LWFjdGl2ZTogY29tcG9uZW50LXRva2Vucy5nZXQtdmFyKFxcbiAgJGJ1dHRvbi1zZWNvbmRhcnktYWN0aXZlLFxcbiAgJ2J1dHRvbi1zZWNvbmRhcnktYWN0aXZlJ1xcbik7XFxuXFxuJGJ1dHRvbi10ZXJ0aWFyeS1hY3RpdmU6IGNvbXBvbmVudC10b2tlbnMuZ2V0LXZhcihcXG4gICRidXR0b24tdGVydGlhcnktYWN0aXZlLFxcbiAgJ2J1dHRvbi10ZXJ0aWFyeS1hY3RpdmUnXFxuKTtcXG5cXG4kYnV0dG9uLWRhbmdlci1ob3ZlcjogY29tcG9uZW50LXRva2Vucy5nZXQtdmFyKFxcbiAgJGJ1dHRvbi1kYW5nZXItaG92ZXIsXFxuICAnYnV0dG9uLWRhbmdlci1ob3ZlcidcXG4pO1xcblxcbiRidXR0b24tcHJpbWFyeS1ob3ZlcjogY29tcG9uZW50LXRva2Vucy5nZXQtdmFyKFxcbiAgJGJ1dHRvbi1wcmltYXJ5LWhvdmVyLFxcbiAgJ2J1dHRvbi1wcmltYXJ5LWhvdmVyJ1xcbik7XFxuXFxuJGJ1dHRvbi1zZWNvbmRhcnktaG92ZXI6IGNvbXBvbmVudC10b2tlbnMuZ2V0LXZhcihcXG4gICRidXR0b24tc2Vjb25kYXJ5LWhvdmVyLFxcbiAgJ2J1dHRvbi1zZWNvbmRhcnktaG92ZXInXFxuKTtcXG5cXG4kYnV0dG9uLXRlcnRpYXJ5LWhvdmVyOiBjb21wb25lbnQtdG9rZW5zLmdldC12YXIoXFxuICAkYnV0dG9uLXRlcnRpYXJ5LWhvdmVyLFxcbiAgJ2J1dHRvbi10ZXJ0aWFyeS1ob3ZlcidcXG4pO1xcblxcbiRidXR0b24tZGlzYWJsZWQ6IGNvbXBvbmVudC10b2tlbnMuZ2V0LXZhcigkYnV0dG9uLWRpc2FibGVkLCAnYnV0dG9uLWRpc2FibGVkJyk7XFxuXCIsXCIvLyBDb2RlIGdlbmVyYXRlZCBieSBAY2FyYm9uL2xheW91dC4gRE8gTk9UIEVESVQuXFxuLy9cXG4vLyBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMTgsIDIwMjNcXG4vL1xcbi8vIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZS0yLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4vLyBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuLy9cXG5cXG4vLy8gQHR5cGUgTnVtYmVyXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL2xheW91dFxcbiRzcGFjaW5nLTAxOiAwLjEyNXJlbSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTnVtYmVyXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL2xheW91dFxcbiRzcGFjaW5nLTAyOiAwLjI1cmVtICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBOdW1iZXJcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vbGF5b3V0XFxuJHNwYWNpbmctMDM6IDAuNXJlbSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTnVtYmVyXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL2xheW91dFxcbiRzcGFjaW5nLTA0OiAwLjc1cmVtICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBOdW1iZXJcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vbGF5b3V0XFxuJHNwYWNpbmctMDU6IDFyZW0gIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE51bWJlclxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi9sYXlvdXRcXG4kc3BhY2luZy0wNjogMS41cmVtICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBOdW1iZXJcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vbGF5b3V0XFxuJHNwYWNpbmctMDc6IDJyZW0gIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE51bWJlclxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi9sYXlvdXRcXG4kc3BhY2luZy0wODogMi41cmVtICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBOdW1iZXJcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vbGF5b3V0XFxuJHNwYWNpbmctMDk6IDNyZW0gIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE51bWJlclxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi9sYXlvdXRcXG4kc3BhY2luZy0xMDogNHJlbSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTnVtYmVyXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL2xheW91dFxcbiRzcGFjaW5nLTExOiA1cmVtICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBOdW1iZXJcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vbGF5b3V0XFxuJHNwYWNpbmctMTI6IDZyZW0gIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE51bWJlclxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi9sYXlvdXRcXG4kc3BhY2luZy0xMzogMTByZW0gIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi9sYXlvdXRcXG4kc3BhY2luZzogKFxcbiAgc3BhY2luZy0wMTogJHNwYWNpbmctMDEsXFxuICBzcGFjaW5nLTAyOiAkc3BhY2luZy0wMixcXG4gIHNwYWNpbmctMDM6ICRzcGFjaW5nLTAzLFxcbiAgc3BhY2luZy0wNDogJHNwYWNpbmctMDQsXFxuICBzcGFjaW5nLTA1OiAkc3BhY2luZy0wNSxcXG4gIHNwYWNpbmctMDY6ICRzcGFjaW5nLTA2LFxcbiAgc3BhY2luZy0wNzogJHNwYWNpbmctMDcsXFxuICBzcGFjaW5nLTA4OiAkc3BhY2luZy0wOCxcXG4gIHNwYWNpbmctMDk6ICRzcGFjaW5nLTA5LFxcbiAgc3BhY2luZy0xMDogJHNwYWNpbmctMTAsXFxuICBzcGFjaW5nLTExOiAkc3BhY2luZy0xMSxcXG4gIHNwYWNpbmctMTI6ICRzcGFjaW5nLTEyLFxcbiAgc3BhY2luZy0xMzogJHNwYWNpbmctMTMsXFxuKTtcXG5cIixcIi8vXFxuLy8gQ29weXJpZ2h0IElCTSBDb3JwLiAyMDIxXFxuLy9cXG4vLyBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUtMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuLy8gTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbi8vXFxuXFxuQHVzZSAna2V5ZnJhbWVzJztcXG5AdXNlICcuLi90aGVtZScgYXMgKjtcXG5AdXNlICcuLi9jb25maWcnIGFzICo7XFxuQHVzZSAnLi4vdXRpbGl0aWVzL2hpZ2gtY29udHJhc3QtbW9kZScgYXMgKjtcXG5cXG4vLy8gU2tlbGV0b24gbG9hZGluZyBhbmltYXRpb25cXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGV4YW1wbGUgQGluY2x1ZGUgc2tlbGV0b247XFxuLy8vIEBncm91cCB1dGlsaXRpZXNcXG5AbWl4aW4gc2tlbGV0b24ge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIGJhY2tncm91bmQ6ICRza2VsZXRvbi1iYWNrZ3JvdW5kO1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcblxcbiAgJjpob3ZlcixcXG4gICY6Zm9jdXMsXFxuICAmOmFjdGl2ZSB7XFxuICAgIGJvcmRlcjogbm9uZTtcXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICBvdXRsaW5lOiBub25lO1xcbiAgfVxcblxcbiAgJjo6YmVmb3JlIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBhbmltYXRpb246IDMwMDBtcyBlYXNlLWluLW91dCAjeyRwcmVmaXh9LS1za2VsZXRvbiBpbmZpbml0ZTtcXG4gICAgYmFja2dyb3VuZDogJHNrZWxldG9uLWVsZW1lbnQ7XFxuICAgIGJsb2NrLXNpemU6IDEwMCU7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBpbmxpbmUtc2l6ZTogMTAwJTtcXG4gICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xcbiAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtLW9yaWdpbiwgdHJhbnNmb3JtLCBvcGFjaXR5O1xcblxcbiAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xcbiAgICAgIGFuaW1hdGlvbjogbm9uZTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLy8gSGlnaCBDb250cmFzdCBNb2RlIHN1cHBvcnRcXG4gIEBpbmNsdWRlIGhpZ2gtY29udHJhc3QtbW9kZSB7XFxuICAgIGJhY2tncm91bmQ6IENhbnZhc1RleHQ7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogQ2FudmFzO1xcbiAgICAgIGZvcmNlZC1jb2xvci1hZGp1c3Q6IG5vbmU7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLy8vIENpcmN1bGFyIFNrZWxldG9uIGxvYWRpbmcgYW5pbWF0aW9uXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBleGFtcGxlIEBpbmNsdWRlIGNpcmN1bGFyLXNrZWxldG9uO1xcbi8vLyBAZ3JvdXAgdXRpbGl0aWVzXFxuQG1peGluIGNpcmN1bGFyLXNrZWxldG9uIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBiYWNrZ3JvdW5kOiAkc2tlbGV0b24tYmFja2dyb3VuZDtcXG5cXG4gICY6OmJlZm9yZSB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgYW5pbWF0aW9uOiAzMDAwbXMgZWFzZS1pbi1vdXQgI3skcHJlZml4fS0tc2tlbGV0b24gaW5maW5pdGU7XFxuICAgIGJhY2tncm91bmQ6ICRza2VsZXRvbi1lbGVtZW50O1xcbiAgICBibG9jay1zaXplOiAxMDAlO1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgaW5saW5lLXNpemU6IDIwMCU7XFxuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0tb3JpZ2luLCB0cmFuc2Zvcm0sIG9wYWNpdHk7XFxuXFxuICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XFxuICAgICAgYW5pbWF0aW9uOiBub25lO1xcbiAgICB9XFxuICB9XFxuXFxuICAvL0hpZ2ggQ29udHJhc3QgTW9kZVxcbiAgLy9FbnN1cmUgU2tlbGV0b24gaXMgdmlzaWJsZSBhbmQgYW5pbWF0ZWQgaW4gV2luZG93cyBIQ01cXG4gIEBpbmNsdWRlIGhpZ2gtY29udHJhc3QtbW9kZSB7XFxuICAgIGJhY2tncm91bmQ6IENhbnZhc1RleHQ7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogQ2FudmFzO1xcbiAgICAgIGZvcmNlZC1jb2xvci1hZGp1c3Q6IG5vbmU7XFxuICAgIH1cXG4gIH1cXG59XFxuXCIsXCIvL1xcbi8vIENvcHlyaWdodCBJQk0gQ29ycC4gMjAyMVxcbi8vXFxuLy8gVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbi8vIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4vL1xcblxcbi8vLyBIaWdoIENvbnRyYXN0IE1vZGUgbWl4aW4gZm9yIFdpbmRvd3MgYW5kIG1hY09TXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBleGFtcGxlIEBpbmNsdWRlIGhpZ2gtY29udHJhc3QtbW9kZTtcXG4vLy8gQGdyb3VwIHV0aWxpdGllc1xcbi8vLyBTZXQgSENNIHN0eWxlcyBhdCB0aGUgZW5kIG9mIGVhY2ggZmlsZSB0byBlbnN1cmUgdGhleSBhcmUgbm90IG92ZXJ3cml0dGVuXFxuQG1peGluIGhpZ2gtY29udHJhc3QtbW9kZSgkdHlwZTogJycpIHtcXG4gIEBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSwgKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSkge1xcbiAgICBAaWYgKCR0eXBlID09ICdmb2N1cycpIHtcXG4gICAgICBjb2xvcjogSGlnaGxpZ2h0O1xcbiAgICAgIG91dGxpbmU6IDFweCBzb2xpZCBIaWdobGlnaHQ7XFxuICAgIH1cXG5cXG4gICAgQGlmICgkdHlwZSA9PSAnb3V0bGluZScpIHtcXG4gICAgICBvdXRsaW5lOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICAgIH1cXG5cXG4gICAgQGlmICgkdHlwZSA9PSAnZGlzYWJsZWQnKSB7XFxuICAgICAgY29sb3I6IEdyYXlUZXh0O1xcbiAgICAgIGZpbGw6IEdyYXlUZXh0O1xcbiAgICB9XFxuXFxuICAgIEBjb250ZW50O1xcbiAgfVxcbn1cXG5cIixcIkB1c2UgJ0BjYXJib24vbGF5b3V0JztcXG5cXG4kdWktMDE6ICNmNGY0ZjQ7XFxuJHVpLTAyOiAjZmZmZmZmO1xcbiR1aS0wMzogI2UwZTBlMDtcXG4kdWktMDQ6ICM4ZDhkOGQ7XFxuJHVpLTA1OiAjMTYxNjE2O1xcbiR0ZXh0LTAyOiAjNTI1MjUyO1xcbiR0ZXh0LTAzOiAjYThhOGE4O1xcbiR1aS1iYWNrZ3JvdW5kOiAjZmZmZmZmO1xcbiRjb2xvci1ncmF5LTMwOiAjYzZjNmM2O1xcbiRjb2xvci1ncmF5LTcwOiAjNTI1MjUyO1xcbiRjb2xvci1ncmF5LTEwMDogIzE2MTYxNjtcXG4kY29sb3ItYmx1ZS02MC0yOiAjMGY2MmZlO1xcbiRjb2xvci1ibHVlLTEwOiAjZWRmNWZmO1xcbiRjb2xvci15ZWxsb3ctNTA6ICNmZWVjYWU7XFxuJGNhcmJvbi0tcmVkLTUwOiAjZmE0ZDU2O1xcbiRpbnZlcnNlLWxpbms6ICM3OGE5ZmY7XFxuJHN1cHBvcnQtMDI6ICMyNGExNDg7XFxuJGludmVyc2Utc3VwcG9ydC0wMzogI2YxYzIxYjtcXG4kd2FybmluZy1iYWNrZ3JvdW5kOiAjZmZmOGUxO1xcbiRvcGVubXJzLWJhY2tncm91bmQtZ3JleTogI2Y0ZjRmNDtcXG4kZGFuZ2VyOiAjZGExZTI4O1xcbiRpbnRlcmFjdGl2ZS0wMTogIzBmNjJmZTtcXG4kZmllbGQtMDE6ICNmNGY0ZjQ7XFxuJGdyZXktMjogI2UwZTBlMDtcXG4kbGFiZWxkcm9wZG93bjogI2M2YzZjNjtcXG5cXG4kYnJhbmQtcHJpbWFyeS0xMDogI2Q5ZmJmYjtcXG4kYnJhbmQtcHJpbWFyeS0yMDogIzllZjBmMDtcXG4kYnJhbmQtcHJpbWFyeS0zMDogIzNkZGJkOTtcXG4kYnJhbmQtcHJpbWFyeS00MDogIzA4YmRiYTtcXG4kYnJhbmQtcHJpbWFyeS01MDogIzAwOWQ5YTtcXG5cXG4vKiA2MCw3MCBhbmQgODAgYXJlIGFscmVhZHkgZGVjbGFyZWQgYXMgYnJhbmQtMDEsIDAyIGFuZCAwMyByZXNwZWN0aXZlbHkgKi9cXG5cXG4kYnJhbmQtcHJpbWFyeS05MDogIzAyMmIzMDtcXG4kYnJhbmQtcHJpbWFyeS0xMDA6ICMwODFhMWM7XFxuXFxuQG1peGluIGJyYW5kLTAxKCRwcm9wZXJ0eSkge1xcbiAgI3skcHJvcGVydHl9OiAjMDA1ZDVkO1xcbiAgI3skcHJvcGVydHl9OiB2YXIoLS1icmFuZC0wMSk7XFxufVxcblxcbkBtaXhpbiBicmFuZC0wMigkcHJvcGVydHkpIHtcXG4gICN7JHByb3BlcnR5fTogIzAwNDE0NDtcXG4gICN7JHByb3BlcnR5fTogdmFyKC0tYnJhbmQtMDIpO1xcbn1cXG5cXG5AbWl4aW4gYnJhbmQtMDMoJHByb3BlcnR5KSB7XFxuICAjeyRwcm9wZXJ0eX06ICMwMDdkNzk7XFxuICAjeyRwcm9wZXJ0eX06IHZhcigtLWJyYW5kLTAzKTtcXG59XFxuXFxuOnJvb3Qge1xcbiAgLS1icmFuZC0wMTogIzAwNWQ1ZDtcXG4gIC0tYnJhbmQtMDI6ICMwMDQxNDQ7XFxuICAtLWJyYW5kLTAzOiAjMDA3ZDc5O1xcbiAgLS1ib3R0b20tbmF2LWhlaWdodDogI3tsYXlvdXQuJHNwYWNpbmctMTB9O1xcbiAgLS13b3Jrc3BhY2UtaGVhZGVyLWhlaWdodDogI3tsYXlvdXQuJHNwYWNpbmctMDl9O1xcbiAgLS10YWJsZXQtd29ya3NwYWNlLXdpbmRvdy1oZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS1vbXJzLW5hdmJhci1oZWlnaHQpIC0gdmFyKC0tYm90dG9tLW5hdi1oZWlnaHQpKTtcXG4gIC0tZGVza3RvcC13b3Jrc3BhY2Utd2luZG93LWhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLW9tcnMtbmF2YmFyLWhlaWdodCkgLSB2YXIoLS13b3Jrc3BhY2UtaGVhZGVyLWhlaWdodCkpO1xcbn1cXG5cXG4kYnJlYWtwb2ludC1waG9uZS1taW46IDBweDtcXG4kYnJlYWtwb2ludC1waG9uZS1tYXg6IDYwMHB4O1xcbiRicmVha3BvaW50LXRhYmxldC1taW46IDYwMXB4O1xcbiRicmVha3BvaW50LXRhYmxldC1tYXg6IDEwMjNweDtcXG4kYnJlYWtwb2ludC1zbWFsbC1kZXNrdG9wLW1pbjogMTAyNHB4O1xcbiRicmVha3BvaW50LXNtYWxsLWRlc2t0b3AtbWF4OiAxNDM5cHg7XFxuJGJyZWFrcG9pbnQtbGFyZ2UtZGVza3RvcC1taW46IDE0NDBweDtcXG4kYnJlYWtwb2ludC1sYXJnZS1kZXNrdG9wLW1heDogOTk5OTk5OTlweDtcXG5cXG4vKiBUaGVzZSBjb2xvciB2YXJpYWJsZXMgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UgKi9cXG4kYnJhbmQtdGVhbC0wMTogIzAwN2Q3OTtcXG4kYnJhbmQtMDE6ICMwMDVkNWQ7XFxuJGJyYW5kLTAyOiAjMDA0MTQ0O1xcblwiLFwiLy9cXG4vLyBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMjFcXG4vL1xcbi8vIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZS0yLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcXG4vLyBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXFxuLy9cXG5cXG5AdXNlICcuLi90aGVtZSc7XFxuXFxuLy8vIEFkZHMgYm94IHNoYWRvd1xcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZXhhbXBsZSBAaW5jbHVkZSBib3gtc2hhZG93O1xcbi8vLyBAZ3JvdXAgdXRpbGl0aWVzXFxuQG1peGluIGJveC1zaGFkb3cge1xcbiAgYm94LXNoYWRvdzogMCAycHggNnB4IHRoZW1lLiRzaGFkb3c7XFxufVxcblxcbkBtaXhpbiBib3gtc2hhZG93LXRvcCB7XFxuICBib3gtc2hhZG93OiAwIC0ycHggNnB4IHRoZW1lLiRzaGFkb3c7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ubG9jYWxzID0ge1xuXHRcImNkcy0tbGF5b3V0LS1zaXplLXhzXCI6IFwiRGw2QjMrejdpU0Rsb1RveEZOUHBHZz09XCIsXG5cdFwiY2RzLS1sYXlvdXQtY29uc3RyYWludC0tc2l6ZV9fZGVmYXVsdC14c1wiOiBcImhVZDU4WWF1RlNBS21VajRMdGVPUHc9PVwiLFxuXHRcImNkcy0tbGF5b3V0LWNvbnN0cmFpbnQtLXNpemVfX21pbi14c1wiOiBcImxYa3VQQ2lRTXJnMkh5K2NYMWZZSGc9PVwiLFxuXHRcImNkcy0tbGF5b3V0LWNvbnN0cmFpbnQtLXNpemVfX21heC14c1wiOiBcIkRxSjlqMGFiNGhkQ1FldnRIeGozdVE9PVwiLFxuXHRcImNkcy0tbGF5b3V0LS1zaXplLXNtXCI6IFwiaHp2VGFQSE1BcjBPOFV6alRZVm1QQT09XCIsXG5cdFwiY2RzLS1sYXlvdXQtY29uc3RyYWludC0tc2l6ZV9fZGVmYXVsdC1zbVwiOiBcIk1tR2VQTDRzZFh3K05Rc3BPZjRjcUE9PVwiLFxuXHRcImNkcy0tbGF5b3V0LWNvbnN0cmFpbnQtLXNpemVfX21pbi1zbVwiOiBcIllVS0hWdXYraTZhMzRhYUROTUU3QWc9PVwiLFxuXHRcImNkcy0tbGF5b3V0LWNvbnN0cmFpbnQtLXNpemVfX21heC1zbVwiOiBcIkdoM1lIdDJNa2g4WE1DTU9FQ21vTkE9PVwiLFxuXHRcImNkcy0tbGF5b3V0LS1zaXplLW1kXCI6IFwic1c1c05JcElra2hxWE4xYzJQNzZRdz09XCIsXG5cdFwiY2RzLS1sYXlvdXQtY29uc3RyYWludC0tc2l6ZV9fZGVmYXVsdC1tZFwiOiBcIl84RE5ZQ0hzY09Kd2oxWUwzd215NDlnPT1cIixcblx0XCJjZHMtLWxheW91dC1jb25zdHJhaW50LS1zaXplX19taW4tbWRcIjogXCJaM0FsWjMzektFbW9CbDk4QU1paFJRPT1cIixcblx0XCJjZHMtLWxheW91dC1jb25zdHJhaW50LS1zaXplX19tYXgtbWRcIjogXCJtQjk5dnorcEY2UUxQRnVsRE83NlBnPT1cIixcblx0XCJjZHMtLWxheW91dC0tc2l6ZS1sZ1wiOiBcImhULS1XWVo0SkVCblpVcnpOVkkybVE9PVwiLFxuXHRcImNkcy0tbGF5b3V0LWNvbnN0cmFpbnQtLXNpemVfX2RlZmF1bHQtbGdcIjogXCJCYm84bjExc2JVMDJhNExFR2syRUxRPT1cIixcblx0XCJjZHMtLWxheW91dC1jb25zdHJhaW50LS1zaXplX19taW4tbGdcIjogXCJ2WWY4cjA4UFRWTk8tZ3oyem1kQkJBPT1cIixcblx0XCJjZHMtLWxheW91dC1jb25zdHJhaW50LS1zaXplX19tYXgtbGdcIjogXCJiUUJmRVkyamIxMmdHQWJEY1ZtRWZnPT1cIixcblx0XCJjZHMtLWxheW91dC0tc2l6ZS14bFwiOiBcIl81WkZQTEItcjBjRitFZ2NZRlpMRkdnPT1cIixcblx0XCJjZHMtLWxheW91dC1jb25zdHJhaW50LS1zaXplX19kZWZhdWx0LXhsXCI6IFwiXzZ4UjcyUStPbndIWUtGWkcxcm9mclE9PVwiLFxuXHRcImNkcy0tbGF5b3V0LWNvbnN0cmFpbnQtLXNpemVfX21pbi14bFwiOiBcIlJRdWlORGlYa2hyWE1BOTR2dG1wTkE9PVwiLFxuXHRcImNkcy0tbGF5b3V0LWNvbnN0cmFpbnQtLXNpemVfX21heC14bFwiOiBcIm5TdGpycGxPNHQxT1kzaklmMy03ZlE9PVwiLFxuXHRcImNkcy0tbGF5b3V0LS1zaXplLTJ4bFwiOiBcIi1waEFxZjVxbEwzaFRhSmhhT2lac1E9PVwiLFxuXHRcImNkcy0tbGF5b3V0LWNvbnN0cmFpbnQtLXNpemVfX2RlZmF1bHQtMnhsXCI6IFwiXzJ5VnJ3S2ljU2thdllRd0ZKY0xFSHc9PVwiLFxuXHRcImNkcy0tbGF5b3V0LWNvbnN0cmFpbnQtLXNpemVfX21pbi0yeGxcIjogXCJQdDZOSFFWM0RpdWlpK1BxNVh5NDVnPT1cIixcblx0XCJjZHMtLWxheW91dC1jb25zdHJhaW50LS1zaXplX19tYXgtMnhsXCI6IFwidzFCT1VFZS00RkpTMHF4QnZLanhyQT09XCIsXG5cdFwiY2RzLS1sYXlvdXQtLWRlbnNpdHktY29uZGVuc2VkXCI6IFwiXzZFdUFMa3BUZVZWVCt0QXJxWVFEbWc9PVwiLFxuXHRcImNkcy0tbGF5b3V0LWNvbnN0cmFpbnQtLWRlbnNpdHlfX2RlZmF1bHQtY29uZGVuc2VkXCI6IFwicXdmbStzUG4yOVEwYmUxRTErMFdaZz09XCIsXG5cdFwiY2RzLS1sYXlvdXQtY29uc3RyYWludC0tZGVuc2l0eV9fbWluLWNvbmRlbnNlZFwiOiBcImwxZTYxNlFlTEhYdFVQcklqNmlQYmc9PVwiLFxuXHRcImNkcy0tbGF5b3V0LWNvbnN0cmFpbnQtLWRlbnNpdHlfX21heC1jb25kZW5zZWRcIjogXCJfNGZ0ZXpXenQtZkZ4cG9VcmdhZTVBZz09XCIsXG5cdFwiY2RzLS1sYXlvdXQtLWRlbnNpdHktbm9ybWFsXCI6IFwiS0dzeGl2NGtMOFEwaExWRy0tVGZNZz09XCIsXG5cdFwiY2RzLS1sYXlvdXQtY29uc3RyYWludC0tZGVuc2l0eV9fZGVmYXVsdC1ub3JtYWxcIjogXCJORlpnT0ttanZXRDdxd1dmbVNnWlZBPT1cIixcblx0XCJjZHMtLWxheW91dC1jb25zdHJhaW50LS1kZW5zaXR5X19taW4tbm9ybWFsXCI6IFwiWm5SU1ZpQTZnWHpxazlQcldlbGgxZz09XCIsXG5cdFwiY2RzLS1sYXlvdXQtY29uc3RyYWludC0tZGVuc2l0eV9fbWF4LW5vcm1hbFwiOiBcIkdpMExuMWlXMXd5SXFGaTJEMlR2UkE9PVwiLFxuXHRcImNkcy0tbGF5ZXItb25lXCI6IFwiSW1WMnRtRWUwQ1luNmpTZHVyekJzQT09XCIsXG5cdFwiY2RzLS1sYXllci10d29cIjogXCJGMk41WU1iV0ZwcHVna2o4SUFxOWdRPT1cIixcblx0XCJjZHMtLWxheWVyLXRocmVlXCI6IFwiUytsZ1pQYXNxeTNQZHJISlRhSEZjQT09XCIsXG5cdFwiY2RzLS1sYXllcl9fd2l0aC1iYWNrZ3JvdW5kXCI6IFwid3ZxRHJudTArMllDcTNmOE16b2NZQT09XCIsXG5cdFwiY2RzLS1hc3Npc3RpdmUtdGV4dFwiOiBcIndKUFpEdlJPcnlzZGxuOFlJekNKWWc9PVwiLFxuXHRcImNkcy0tdmlzdWFsbHktaGlkZGVuXCI6IFwiXzEzTmsyTUhEajFQNnNkU1FmUTdtd2c9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci1jb250YWluZXJcIjogXCJ5bHZxNEx0NHp3bllsY21uUU1MdkJBPT1cIixcblx0XCJjZHMtLXBvcG92ZXItLWF1dG8tYWxpZ25cIjogXCJYdmU2NXlCd3A4VHZ0RnRZMWxQeUlRPT1cIixcblx0XCJjZHMtLXBvcG92ZXItLWhpZ2gtY29udHJhc3RcIjogXCJoWnNMeTBybmE1YitJSlphdUQrOGNRPT1cIixcblx0XCJjZHMtLXBvcG92ZXJcIjogXCJfM3RNRHNNZ2w0cERFVHFIVW1vUG1yZz09XCIsXG5cdFwiY2RzLS1wb3BvdmVyLS1kcm9wLXNoYWRvd1wiOiBcIm5UekxZS0kzRWxIZXg4MEQ0UEhheFE9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci1jb250ZW50XCI6IFwiWGZWMEhRbDI0U3ArekhRNlhVUWs3UT09XCIsXG5cdFwiY2RzLS1wb3BvdmVyLS1jYXJldFwiOiBcInJLZUMzYUVDKy1YcmlMdXlQU0tDSlE9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci0tb3BlblwiOiBcImMtbE5DZUhZZHd5K2hybUlCRzdLckE9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci1jYXJldFwiOiBcInJLZm15TGp1TmZYRnBxMFoyK09EV3c9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci0tdGFiLXRpcFwiOiBcImV3SytsVmt2YTdYVkQycHFaRDVuaXc9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci0tYm90dG9tXCI6IFwiUUpWUzM3dWh2RW9Na1lidWZHNDF4dz09XCIsXG5cdFwiY2RzLS1wb3BvdmVyLS1ib3R0b20tbGVmdFwiOiBcIm1mQno2bCtzclZMRTlUWTZOSmVKNUE9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci0tYm90dG9tLXN0YXJ0XCI6IFwiXzZCSDZ0aVpnbG5qeGdpMGN3ek50UXc9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci0tYm90dG9tLXJpZ2h0XCI6IFwiXzc1VkZWQVlHczdESXJVSWZteFB6RkE9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci0tYm90dG9tLWVuZFwiOiBcImZHYVFIMDEwUHQyRkwzZUdOS2JEaWc9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci0tdG9wLWVuZFwiOiBcIlJILWJ6RnFiY3pySWtTR1E5MGtKMUE9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci0tdG9wLXN0YXJ0XCI6IFwiYkpkWE93eGZHbTk4SWhmTXNYeGI0UT09XCIsXG5cdFwiY2RzLS1wb3BvdmVyLS10b3BcIjogXCJmVWZ1T2N5ZTA3Y1RoUE4tM0l1c3R3PT1cIixcblx0XCJjZHMtLXBvcG92ZXItLXRvcC1sZWZ0XCI6IFwiXzJhMllOTmV6R2FBdWZIcWFZY0IySHc9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci0tdG9wLXJpZ2h0XCI6IFwiXzhtdkdESVhvaklvYmt2MC1tb2orNXc9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci0tcmlnaHRcIjogXCJWbnZ1UGZlQis3YTItdXZYVG5rTmlnPT1cIixcblx0XCJjZHMtLXBvcG92ZXItLXJpZ2h0LXRvcFwiOiBcIlIwd1QxVjdjc2FmRnFqUDZZOVhCMEE9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci0tcmlnaHQtc3RhcnRcIjogXCJxQWg2VWFOdUJtOEFMZlg0cTdMUFZBPT1cIixcblx0XCJjZHMtLXBvcG92ZXItLXJpZ2h0LWJvdHRvbVwiOiBcInNWcUEtdUNkWlhVTW1MblgtZmFtUnc9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci0tcmlnaHQtZW5kXCI6IFwiRml4THErT0JPYmd4Tm11ZnhqS0o1UT09XCIsXG5cdFwiY2RzLS1wb3BvdmVyLS1sZWZ0XCI6IFwiTWZFaEIzaVBGOHBRbUJKd2c5cUNtUT09XCIsXG5cdFwiY2RzLS1wb3BvdmVyLS1sZWZ0LXRvcFwiOiBcInh1TjkwWFZPa21wcFlMU0QwaVdyZkE9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci0tbGVmdC1zdGFydFwiOiBcIkRuWStsUFNva2JZYkQrOUtzTnJhNHc9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci0tbGVmdC1ib3R0b21cIjogXCJxSFJkRmYxVHUrbnVhRlo0dHg1Y2N3PT1cIixcblx0XCJjZHMtLXBvcG92ZXItLWxlZnQtZW5kXCI6IFwiXzl2RnpyVTZLNzBDcVRqY0ZDbUpZU2c9PVwiLFxuXHRcImNkcy0tcG9wb3Zlci0tdGFiLXRpcF9fYnV0dG9uXCI6IFwieDhlSUllVUxuT2dVdk9KaFBjOXdiQT09XCIsXG5cdFwiY2RzLS10b29sdGlwXCI6IFwiT05GY25kYXRXK2lwUmM5U3hlREVsQT09XCIsXG5cdFwiY2RzLS10b29sdGlwLWNvbnRlbnRcIjogXCJhenBCMSs0ZktocTBrc1orcnJxNk9nPT1cIixcblx0XCJjZHMtLWljb24tdG9vbHRpcFwiOiBcInd4akstdFNRbzF5b3lSVnFGMXowT1E9PVwiLFxuXHRcImNkcy0tZGVmaW5pdGlvbi10ZXJtXCI6IFwiazJYN3RKWXA0bmNEK3EzT2QtejhyZz09XCIsXG5cdFwiY2RzLS1kZWZpbml0aW9uLXRvb2x0aXBcIjogXCJVSktMRkdTdUtYZ1hnUlZPck85UWV3PT1cIixcblx0XCJjZHMtLWJ0blwiOiBcIldPQm9EeUpnOVJvRkQ5eXA1Uzg3dWc9PVwiLFxuXHRcImNkcy0tYnRuLS1kaXNhYmxlZFwiOiBcIlFoS2RpV0djcE50VDhiY3JYRzdSTmc9PVwiLFxuXHRcImNkcy0tYnRuX19pY29uXCI6IFwibGNjYVpobHd4MEZWemhBRlhqeEFOZz09XCIsXG5cdFwiY2RzLS1idG4tLXByaW1hcnlcIjogXCJfMmRmVExlU3RzOVhQUnd2aTFwZkJhZz09XCIsXG5cdFwiY2RzLS1idG4tLXNlY29uZGFyeVwiOiBcInRUOENuN0xZV2c4b21uZEIwNnRkcUE9PVwiLFxuXHRcImNkcy0tYnRuLS10ZXJ0aWFyeVwiOiBcIkNwSG91TnhxOTNsbkhHZEVQWWsxSUE9PVwiLFxuXHRcImNkcy0tYnRuLS1naG9zdFwiOiBcIl81TFpBdEZ0ci1YSWErSjFIOFl2NGhRPT1cIixcblx0XCJjZHMtLWJ0bi0taWNvbi1vbmx5XCI6IFwiRll6OGxxLU4rUHN2c1JBQ0JtWklQZz09XCIsXG5cdFwiY2RzLS1idG4tLWRhbmdlci0tZ2hvc3RcIjogXCJvS3ZQRE1hUlFwYlJJV1BUSnA2d1ZBPT1cIixcblx0XCJjZHMtLWJ0bi0teHNcIjogXCJNRmNMaHNtT29Xd2gyR256S2RGbm1nPT1cIixcblx0XCJjZHMtLWJ0bi0tc21cIjogXCJmUWZPZWZMSjE5dWNWd0NveWVQVUZ3PT1cIixcblx0XCJjZHMtLWJ0bi0tbWRcIjogXCItU0lTaW84dENqcllDT045eXZWMnN3PT1cIixcblx0XCJjZHMtLWJ0bi0tc2VsZWN0ZWRcIjogXCJjN21TcGl6YU01R2F1R0VlLWVOeGVBPT1cIixcblx0XCJjZHMtLWljb24tdG9vbHRpcC0tZGlzYWJsZWRcIjogXCJsR3k4dzUrUyt6ak81dnNiUjBLUE9BPT1cIixcblx0XCJjZHMtLXRvb2x0aXAtdHJpZ2dlcl9fd3JhcHBlclwiOiBcIl80N1ZQOGNQQk1pWWZIakVkcVRtUkR3PT1cIixcblx0XCJjZHMtLWJ0bi0tZGFuZ2VyXCI6IFwiXzUyK3hOYU9qdnZDYm5xMVVkYWJnNkE9PVwiLFxuXHRcImNkcy0tYnRuLS1kYW5nZXItLXRlcnRpYXJ5XCI6IFwiS21SM3hrcmRjNWlPeHE5WXlkT1AyUT09XCIsXG5cdFwiY2RzLS1idG4tLWV4cHJlc3NpdmVcIjogXCJQSWdiYTFzV2U4NW1ZNFZVYUNYSlR3PT1cIixcblx0XCJjZHMtLWJ0bi1zZXRcIjogXCJzOWI1SXNFVGRRWmxsZnVaNHlQMkN3PT1cIixcblx0XCJjZHMtLXNrZWxldG9uXCI6IFwiQlF5c1NleSswaHkrVFA4ZU1EbXctZz09XCIsXG5cdFwiY2RzLS1idG4tc2V0LS1zdGFja2VkXCI6IFwiUmdXZUdYTW1seXZ6RGl2VWctUm83UT09XCIsXG5cdFwiY2RzLS1idG4tLWxvYWRpbmdcIjogXCJqSkUwMjlDTVhRVkxmY2UrR3FUQ1dBPT1cIixcblx0XCJjZHMtLWJhZGdlLWluZGljYXRvclwiOiBcInNzMXZSWUpvbTZRY1RhWGpZRElnc0E9PVwiLFxuXHRcImlucHV0R3JvdXBcIjogXCJfM2doTDlWdkVNRUJHdHh1NHBNd2xVUT09XCIsXG5cdFwiY2RzLS1mb2N1c2VkXCI6IFwid2QwMlBNSXV1MHZkSzFuVTAxTTB2QT09XCIsXG5cdFwiaW5wdXRXcmFwcGVyXCI6IFwiXzhkRDhUYjlKSXZ0WGlLLUgtbTU4K1E9PVwiLFxuXHRcImlucHV0U2VnbWVudFwiOiBcInU5eHBRTHd2ODg3OWFTcnR3Z0Jqd0E9PVwiLFxuXHRcImRhdGVJbnB1dFdyYXBwZXJcIjogXCJtaXlHQmtzRER3NklBZ0RxOG9FaU13PT1cIixcblx0XCJjdXJzb3ItYmxpbmtcIjogXCJHdllDVzRIYSt4R1ZYUUNjWTFxdHdBPT1cIixcblx0XCJjdXJzb3ItYmxpbmstcnRsXCI6IFwiYzBSTUgxVHVZVDhkMWpxSlQrNlhGQT09XCIsXG5cdFwiaW5wdXRXcmFwcGVyTWRcIjogXCJHVmFHMzhzMGVJYnV0dWFiZjQrdUJRPT1cIixcblx0XCJpbnB1dFdyYXBwZXJTbVwiOiBcIl8wMWR0QmdxV2l3Wms2U29CakFMU2pRPT1cIixcblx0XCJpbnB1dFdyYXBwZXJMZ1wiOiBcIl8waElaOUQxLS1DZVU0WlN2ZVNUUVFnPT1cIixcblx0XCJpbnB1dHNXcmFwcGVyXCI6IFwiXzdtOUUyamwyMFA0aTdwN01wMS1iaUE9PVwiLFxuXHRcImlucHV0c1dyYXBwZXJTbVwiOiBcIm14OWpQKzBKTWRuQVhkWlRqUkNKaHc9PVwiLFxuXHRcImlucHV0c1dyYXBwZXJNZFwiOiBcIl82UmRHMHB5Y0R0SkoyS1R6SFY0aUl3PT1cIixcblx0XCJpbnB1dHNXcmFwcGVyTGdcIjogXCJJUG5KZGs4WHR6ZzF5ZkZDVW9CYzlBPT1cIixcblx0XCJzdGFydElucHV0XCI6IFwiTnlhYmZlTFVaelVQWE9JZFdsZTVidz09XCIsXG5cdFwiZW5kSW5wdXRcIjogXCJQQUk0RlZHMmhqMzV4RGh6SUYtamFRPT1cIixcblx0XCJzZXBhcmF0b3JcIjogXCJTNy1xQ0VUamtubitBY0E3YzB4QzNnPT1cIixcblx0XCJpbnZhbGlkVGV4dFwiOiBcIkhyOU5KeENBNG9TTlZUQndzSG1BQ1E9PVwiLFxuXHRcInBvcG92ZXJcIjogXCJmSkVRY0l0TnJ2Mm41NVVhRC1OZmd3PT1cIixcblx0XCJleHBhbmQtaW5cIjogXCJfMTNVSW1MeHdVckxkTDV6VVRxeUFSZz09XCIsXG5cdFwiZGlhbG9nXCI6IFwiZ2o5bkV2ckI5UmUtV1gtSGt6eVFFUT09XCIsXG5cdFwiaGVhZGVyXCI6IFwicXZ6a01UU3Z6UEZMNDJReDFScDdnUT09XCIsXG5cdFwiZmxhdEJ1dHRvblwiOiBcIlFFWjVkSE1NSEt4elk4T1lOSUNtMHc9PVwiLFxuXHRcImZsYXRCdXR0b25NZFwiOiBcIm9oTGpGK1RJb1U2STAxRWQrVWZXeGc9PVwiLFxuXHRcImZsYXRCdXR0b25TbVwiOiBcInNEM2ZtNHJPSnZ0cHVuSjN3b2NZdEE9PVwiLFxuXHRcImZsYXRCdXR0b25MZ1wiOiBcIl8wZnM3bWdkVmptdTBFbFFMUFpnYytRPT1cIixcblx0XCJtb250aFllYXJcIjogXCJDeVhNQUlDbUtHNkpJWWs5Vjd5TTlBPT1cIixcblx0XCJjYWxlbmRhckdyaWRcIjogXCJ1b0VqSklPUytDQnFrY284alJVdDZRPT1cIixcblx0XCJ0b2RheVwiOiBcIndjU1REdUgrUGpQOWt4SytwajNDVXc9PVwiLFxuXHRcImNkcy0taGlkZS1mZWVkYmFja1wiOiBcIkRRZzluNjRab0xKMXdHUWkta0RRamc9PVwiLFxuXHRcImNkcy0tc2hvdy1mZWVkYmFja1wiOiBcImo4am40bmIwNGkxS3pCSnV0WnctUkE9PVwiXG59O1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNrSTtBQUM3QjtBQUNyRyw4QkFBOEIsdUVBQTJCLENBQUMsNEZBQXFDO0FBQy9GO0FBQ0EsMkVBQTJFLCtFQUErRSxvRUFBb0UsR0FBRyxtQ0FBbUMsOEdBQThHLEdBQUcscUNBQXFDLDJFQUEyRSxHQUFHLG1DQUFtQywyRUFBMkUsR0FBRyxtQ0FBbUMsNkVBQTZFLG9FQUFvRSxHQUFHLHFDQUFxQyw0R0FBNEcsR0FBRyxxQ0FBcUMseUVBQXlFLEdBQUcsbUNBQW1DLHlFQUF5RSxHQUFHLG1DQUFtQywrRUFBK0Usb0VBQW9FLEdBQUcsb0NBQW9DLDhHQUE4RyxHQUFHLG1DQUFtQywyRUFBMkUsR0FBRyxxQ0FBcUMsMkVBQTJFLEdBQUcsbUNBQW1DLDZFQUE2RSxvRUFBb0UsR0FBRyxtQ0FBbUMsNEdBQTRHLEdBQUcsbUNBQW1DLHlFQUF5RSxHQUFHLG1DQUFtQyx5RUFBeUUsR0FBRyxzQ0FBc0MsNkVBQTZFLG9FQUFvRSxHQUFHLHNDQUFzQyw0R0FBNEcsR0FBRyxtQ0FBbUMseUVBQXlFLEdBQUcsbUNBQW1DLHlFQUF5RSxHQUFHLG1DQUFtQyw4RUFBOEUsb0VBQW9FLEdBQUcsb0NBQW9DLDZHQUE2RyxHQUFHLHFDQUFxQywwRUFBMEUsR0FBRyxtQ0FBbUMsMEVBQTBFLEdBQUcsc0NBQXNDLDRHQUE0RywwRkFBMEYsR0FBRyx1Q0FBdUMsc0pBQXNKLEdBQUcsbUNBQW1DLHdHQUF3RyxHQUFHLG9DQUFvQyx3R0FBd0csR0FBRyxtQ0FBbUMsdUdBQXVHLDBGQUEwRixHQUFHLG1DQUFtQyxpSkFBaUosR0FBRyxtQ0FBbUMsbUdBQW1HLEdBQUcsbUNBQW1DLG1HQUFtRyxHQUFHLFdBQVcsd0NBQXdDLHNDQUFzQyx3Q0FBd0Msc0NBQXNDLHNDQUFzQyx1Q0FBdUMsc0NBQXNDLDhDQUE4QywwREFBMEQscURBQXFELGlEQUFpRCx5REFBeUQsR0FBRyxXQUFXLDhDQUE4Qyw0REFBNEQsb0VBQW9FLDBEQUEwRCxnRUFBZ0UsNEVBQTRFLDREQUE0RCx3RUFBd0UsMEVBQTBFLDhDQUE4QywwREFBMEQsOERBQThELGdGQUFnRiw4REFBOEQsMERBQTBELEdBQUcsbUNBQW1DLDhDQUE4Qyw0REFBNEQsb0VBQW9FLDBEQUEwRCxnRUFBZ0UsNEVBQTRFLDREQUE0RCx3RUFBd0UsMEVBQTBFLDhDQUE4QywwREFBMEQsOERBQThELGdGQUFnRiw4REFBOEQsMERBQTBELEdBQUcsbUNBQW1DLDhDQUE4Qyw0REFBNEQsb0VBQW9FLDBEQUEwRCxnRUFBZ0UsNEVBQTRFLDREQUE0RCx3RUFBd0UsMEVBQTBFLDhDQUE4QywwREFBMEQsOERBQThELGdGQUFnRiw4REFBOEQsMERBQTBELEdBQUcscUNBQXFDLDhDQUE4Qyw0REFBNEQsb0VBQW9FLDBEQUEwRCxnRUFBZ0UsNEVBQTRFLDREQUE0RCx3RUFBd0UsMEVBQTBFLDhDQUE4QywwREFBMEQsOERBQThELGdGQUFnRiw4REFBOEQsMERBQTBELEdBQUcsa0VBQWtFLGtEQUFrRCxHQUFHLGtFQUFrRSxrREFBa0QsR0FBRyxvRUFBb0Usa0RBQWtELEdBQUcsNkNBQTZDLFFBQVEsaUJBQWlCLDBCQUEwQixLQUFLLFVBQVUsaUJBQWlCLHlCQUF5QixLQUFLLEdBQUcsMkNBQTJDLFFBQVEsaUJBQWlCLHlCQUF5QixLQUFLLFVBQVUsaUJBQWlCLDBCQUEwQixLQUFLLEdBQUcsK0NBQStDLFFBQVEsbUJBQW1CLDJCQUEyQiw2QkFBNkIsS0FBSyxTQUFTLGlCQUFpQiwyQkFBMkIsNkJBQTZCLEtBQUssU0FBUywyQkFBMkIsOEJBQThCLEtBQUssU0FBUywyQkFBMkIsOEJBQThCLEtBQUssU0FBUywyQkFBMkIsOEJBQThCLEtBQUssU0FBUywyQkFBMkIsOEJBQThCLEtBQUssU0FBUywyQkFBMkIsNkJBQTZCLEtBQUssU0FBUywyQkFBMkIsNkJBQTZCLEtBQUssVUFBVSxtQkFBbUIsMkJBQTJCLDZCQUE2QixLQUFLLEdBQUcsa0VBQWtFLHVCQUF1QixxQkFBcUIsZUFBZSxjQUFjLGlCQUFpQixvQkFBb0IsMkJBQTJCLHFCQUFxQix3QkFBd0Isd0JBQXdCLEdBQUcsbUNBQW1DLDBCQUEwQixHQUFHLHNFQUFzRSx1QkFBdUIsR0FBRyxzRUFBc0UsMkVBQTJFLCtEQUErRCxHQUFHLG9HQUFvRyxzREFBc0QsR0FBRyxxQ0FBcUMsbUNBQW1DLEdBQUcsb0NBQW9DLHVCQUF1QixrQkFBa0IsaURBQWlELGFBQWEseUJBQXlCLEdBQUcscUNBQXFDLHNDQUFzQyx3Q0FBd0Msc0NBQXNDLDJCQUEyQixlQUFlLGNBQWMsY0FBYyx5QkFBeUIsb0JBQW9CLDZCQUE2Qix1QkFBdUIsa0JBQWtCLGtCQUFrQix5REFBeUQsNEVBQTRFLDJFQUEyRSw2QkFBNkIsMkJBQTJCLHlCQUF5QixHQUFHLHVJQUF1SSwrREFBK0QsR0FBRyx1SUFBdUksK0RBQStELEdBQUcsdUlBQXVJLCtEQUErRCxHQUFHLDRIQUE0SCx3QkFBd0IsR0FBRyx3R0FBd0csbUJBQW1CLEdBQUcsNkNBQTZDLHVCQUF1QixrQkFBa0Isa0JBQWtCLEdBQUcsZ0hBQWdILG1CQUFtQixHQUFHLG9HQUFvRyx1QkFBdUIsa0JBQWtCLGtCQUFrQiw0RUFBNEUsMkJBQTJCLEdBQUcsdUlBQXVJLG1CQUFtQixHQUFHLHNNQUFzTSxtQkFBbUIsR0FBRyx3R0FBd0csa0JBQWtCLEdBQUcseUlBQXlJLHVCQUF1Qiw0QkFBNEIsNkVBQTZFLEdBQUcsbUpBQW1KLDRFQUE0RSxHQUFHLGtSQUFrUix1QkFBdUIsMEJBQTBCLG1IQUFtSCxHQUFHLHNTQUFzUyx3QkFBd0IsZ0NBQWdDLEdBQUcsZ1JBQWdSLHVCQUF1Qix3QkFBd0Isd0dBQXdHLEdBQUcsK1FBQStRLHVCQUF1Qix3QkFBd0IsNkJBQTZCLEdBQUcsMElBQTBJLHVCQUF1QiwyQkFBMkIsMEJBQTBCLHFFQUFxRSxHQUFHLHlJQUF5SSx1QkFBdUIsMkJBQTJCLDBCQUEwQiwwRUFBMEUsR0FBRyxvU0FBb1MsMEJBQTBCLEdBQUcsOGhCQUE4aEIsZ0RBQWdELHlCQUF5QixvQkFBb0IsaUNBQWlDLEdBQUcsc2ZBQXNmLDBEQUEwRCxtREFBbUQseURBQXlELHVCQUF1Qiw0QkFBNEIsZ0VBQWdFLEdBQUcsd2lCQUF3aUIsK0RBQStELEdBQUcsaXpCQUFpekIsMERBQTBELG1EQUFtRCx5REFBeUQsR0FBRyx5SUFBeUkseUJBQXlCLDRCQUE0Qiw4RUFBOEUsR0FBRyxtSkFBbUosNkVBQTZFLEdBQUcsZ1JBQWdSLHlCQUF5QiwwQkFBMEIsb0hBQW9ILEdBQUcsb1NBQW9TLHdCQUF3QixnQ0FBZ0MsR0FBRyxrUkFBa1IseUJBQXlCLHdCQUF3Qix5R0FBeUcsR0FBRyxzU0FBc1MsMEJBQTBCLEdBQUcsOGhCQUE4aEIsZ0RBQWdELHVCQUF1QixvQkFBb0IsZ0NBQWdDLEdBQUcsc2ZBQXNmLDBEQUEwRCxpREFBaUQseURBQXlELHlCQUF5Qiw0QkFBNEIsMkVBQTJFLEdBQUcsdXRCQUF1dEIsMEVBQTBFLEdBQUcsaXpCQUFpekIsMERBQTBELGlEQUFpRCx5REFBeUQsR0FBRywySUFBMkksMkJBQTJCLDZCQUE2QixnRUFBZ0UsR0FBRywrUUFBK1EsMkJBQTJCLDZCQUE2QixtSEFBbUgsR0FBRyxpUkFBaVIseUJBQXlCLDZCQUE2Qiw4R0FBOEcsR0FBRyx1dEJBQXV0QiwyQkFBMkIsZ0NBQWdDLEdBQUcsOGhCQUE4aEIsaURBQWlELG1CQUFtQiwwQkFBMEIsaUNBQWlDLEdBQUcscXFCQUFxcUIsd0RBQXdELG1EQUFtRCwyREFBMkQsMkJBQTJCLDZCQUE2Qiw2RUFBNkUsR0FBRyx1dEJBQXV0QiwyQkFBMkIsZ0NBQWdDLEdBQUcsaXpCQUFpekIsd0RBQXdELG1EQUFtRCwyREFBMkQsR0FBRyx5SUFBeUksMkJBQTJCLDJCQUEyQixtRkFBbUYsR0FBRyxtUkFBbVIsMkJBQTJCLDJCQUEyQiwwSEFBMEgsR0FBRyxrUkFBa1IseUJBQXlCLDJCQUEyQix5SEFBeUgsR0FBRywwdEJBQTB0Qiw4QkFBOEIsNkJBQTZCLEdBQUcsaWlCQUFpaUIsaURBQWlELG1CQUFtQix3QkFBd0IsZ0NBQWdDLEdBQUcsd3FCQUF3cUIsd0RBQXdELGlEQUFpRCwyREFBMkQsMkJBQTJCLDJCQUEyQixrRkFBa0YsR0FBRywwdEJBQTB0Qiw4QkFBOEIsNkJBQTZCLEdBQUcsb3pCQUFvekIsd0RBQXdELGlEQUFpRCwyREFBMkQsR0FBRyx3R0FBd0cscUJBQXFCLEdBQUcsb0VBQW9FLHdCQUF3QixHQUFHLG1DQUFtQywyQkFBMkIsZUFBZSxjQUFjLGNBQWMseUJBQXlCLG9CQUFvQiw2QkFBNkIsMEJBQTBCLGVBQWUsY0FBYyxxQkFBcUIscUJBQXFCLG9CQUFvQixzQkFBc0Isc0JBQXNCLHVCQUF1Qix5QkFBeUIsd0JBQXdCLDRCQUE0QixxQkFBcUIsc0JBQXNCLEdBQUcsc0hBQXNILHdCQUF3QixHQUFHLG1EQUFtRCxjQUFjLEdBQUcsdUNBQXVDLGlEQUFpRCx5QkFBeUIsR0FBRyx3Q0FBd0MseUNBQXlDLDRCQUE0QixLQUFLLEdBQUcsdUNBQXVDLDZDQUE2QyxHQUFHLGtHQUFrRyxpQ0FBaUMsNkNBQTZDLEdBQUcscUhBQXFILHVCQUF1QixrQkFBa0IsaUNBQWlDLG9CQUFvQixrQkFBa0Isc0JBQXNCLHVCQUF1QixHQUFHLHVDQUF1QywyQ0FBMkMsR0FBRyxxQ0FBcUMsK0JBQStCLEdBQUcsdUNBQXVDLHNEQUFzRCxxREFBcUQseURBQXlELDhEQUE4RCw0RkFBNEYsMkJBQTJCLDhCQUE4QixHQUFHLG1DQUFtQywwQ0FBMEMsc0NBQXNDLHdDQUF3QyxpQ0FBaUMsR0FBRyxxRUFBcUUsOERBQThELDZEQUE2RCxpRUFBaUUsc0VBQXNFLEdBQUcscUNBQXFDLDJCQUEyQixlQUFlLGNBQWMsY0FBYyx5QkFBeUIsb0JBQW9CLDZCQUE2QiwwQkFBMEIsZUFBZSxjQUFjLHFCQUFxQixxQkFBcUIsb0JBQW9CLHNCQUFzQixzQkFBc0IscUJBQXFCLDBEQUEwRCw0Q0FBNEMsR0FBRyw0SEFBNEgsd0JBQXdCLEdBQUcscURBQXFELGNBQWMsR0FBRywyQ0FBMkMsaURBQWlELG1FQUFtRSxHQUFHLHdDQUF3QywyQ0FBMkMsNEJBQTRCLEtBQUssR0FBRywyQ0FBMkMsbUVBQW1FLEdBQUcsbUNBQW1DLHNEQUFzRCxxREFBcUQseURBQXlELDhEQUE4RCx5QkFBeUIsMkJBQTJCLG9CQUFvQiwyQkFBMkIsR0FBRyxtQ0FBbUMsZ1FBQWdRLDRPQUE0TyxrRkFBa0YsMkZBQTJGLDBIQUEwSCwyQkFBMkIsZUFBZSxjQUFjLGNBQWMseUJBQXlCLG9CQUFvQiw2QkFBNkIsOERBQThELDZEQUE2RCxpRUFBaUUsc0VBQXNFLHVCQUF1Qix5QkFBeUIsbUJBQW1CLG1DQUFtQyxxQkFBcUIsY0FBYyxvQkFBb0IsNkJBQTZCLDJCQUEyQix3REFBd0Qsa0JBQWtCLCtIQUErSCxpS0FBaUssc0JBQXNCLDBCQUEwQiwwTUFBME0sd0JBQXdCLEdBQUcsc0hBQXNILHdCQUF3QixHQUFHLHNVQUFzVSxzREFBc0Qsb0RBQW9ELHFCQUFxQixzREFBc0Qsd0JBQXdCLEdBQUcsK0RBQStELHVCQUF1QixtQkFBbUIscUJBQXFCLHNCQUFzQix3SEFBd0gscUVBQXFFLGtDQUFrQyxHQUFHLHFEQUFxRCxlQUFlLGNBQWMsR0FBRyxvQ0FBb0Msc0JBQXNCLHdCQUF3Qiw4QkFBOEIseURBQXlELDZDQUE2QyxHQUFHLHdDQUF3QywrREFBK0QsR0FBRyx3Q0FBd0MsMkVBQTJFLHlJQUF5SSxHQUFHLHlDQUF5QyxnRUFBZ0UsR0FBRywyS0FBMkssdUJBQXVCLEdBQUcsd0NBQXdDLDZDQUE2QyxHQUFHLG1DQUFtQyxzQkFBc0Isd0JBQXdCLDhCQUE4QiwyREFBMkQsNkNBQTZDLEdBQUcsdUNBQXVDLGlFQUFpRSxHQUFHLHVDQUF1QywyRUFBMkUseUlBQXlJLEdBQUcsd0NBQXdDLGtFQUFrRSxHQUFHLHlLQUF5Syx1QkFBdUIsR0FBRyw0RUFBNEUsNkNBQTZDLEdBQUcsbUNBQW1DLHNCQUFzQix3QkFBd0Isc0RBQXNELGtDQUFrQywrQ0FBK0MsR0FBRyx1Q0FBdUMsZ0VBQWdFLEdBQUcsdUNBQXVDLDJFQUEyRSx5SUFBeUksR0FBRyx3Q0FBd0MsaUVBQWlFLEdBQUcseUtBQXlLLHVCQUF1QixHQUFHLHVDQUF1Qyw0Q0FBNEMsR0FBRyx1Q0FBdUMsMERBQTBELDRDQUE0QyxHQUFHLHdDQUF3Qyw4QkFBOEIsaUVBQWlFLDRDQUE0QyxHQUFHLHNVQUFzVSw0QkFBNEIsNERBQTRELGtCQUFrQixHQUFHLHNDQUFzQyxzQkFBc0Isd0JBQXdCLDhCQUE4QixrQ0FBa0MsNENBQTRDLHlGQUF5RixHQUFHLDBDQUEwQyw2RUFBNkUsR0FBRywwQ0FBMEMsMkVBQTJFLHlJQUF5SSxHQUFHLDJDQUEyQyw2RUFBNkUsR0FBRywrS0FBK0ssdUJBQXVCLEdBQUcsa0VBQWtFLHFCQUFxQix1QkFBdUIsZ0NBQWdDLEdBQUcsbUZBQW1GLGtEQUFrRCxHQUFHLDJDQUEyQyw2RUFBNkUsR0FBRyx3VkFBd1YsOEJBQThCLDRCQUE0Qiw0REFBNEQsa0JBQWtCLEdBQUcsd0RBQXdELDJDQUEyQyxHQUFHLHFDQUFxQyx3QkFBd0IsNEJBQTRCLGVBQWUsb0RBQW9ELHFEQUFxRCwyQkFBMkIsR0FBRyxrREFBa0QsMEJBQTBCLEdBQUcsaUVBQWlFLHFCQUFxQixHQUFHLDZMQUE2TCxjQUFjLEdBQUcsZ0VBQWdFLG9GQUFvRixHQUFHLHdFQUF3RSwrQkFBK0IsR0FBRyw0U0FBNFMsMEJBQTBCLEdBQUcsa0VBQWtFLHlFQUF5RSxHQUFHLG1FQUFtRSxlQUFlLEdBQUcsK09BQStPLDJDQUEyQyxHQUFHLGdaQUFnWixxREFBcUQsR0FBRywrRUFBK0Usd0JBQXdCLEdBQUcsc0VBQXNFLHdCQUF3QixHQUFHLGlGQUFpRix5QkFBeUIsR0FBRyxzQ0FBc0Msc0JBQXNCLHdCQUF3Qiw4QkFBOEIsZ0VBQWdFLDZDQUE2QyxHQUFHLDBDQUEwQyw4REFBOEQsR0FBRywwQ0FBMEMsMkVBQTJFLHlJQUF5SSxHQUFHLDJDQUEyQywrREFBK0QsR0FBRywrS0FBK0ssdUJBQXVCLEdBQUcsMENBQTBDLDZDQUE2QyxHQUFHLGlDQUFpQyxzQkFBc0Isd0JBQXdCLDhEQUE4RCxrQ0FBa0MsdURBQXVELEdBQUcsdUNBQXVDLDhEQUE4RCxHQUFHLHVDQUF1QywyRUFBMkUseUlBQXlJLEdBQUcsd0NBQXdDLCtEQUErRCxHQUFHLHlLQUF5Syx1QkFBdUIsR0FBRyx1Q0FBdUMsMERBQTBELDZDQUE2QyxHQUFHLHVDQUF1QyxnRUFBZ0UsNkNBQTZDLEdBQUcsd0NBQXdDLDJEQUEyRCwrREFBK0QsNkNBQTZDLEdBQUcsc1VBQXNVLDRCQUE0Qiw0REFBNEQsa0JBQWtCLEdBQUcsaUNBQWlDLHNCQUFzQix3QkFBd0IsOEJBQThCLGtDQUFrQyx1REFBdUQseUZBQXlGLEdBQUcsdUNBQXVDLDhEQUE4RCxHQUFHLHVDQUF1QywyRUFBMkUseUlBQXlJLEdBQUcsd0NBQXdDLCtEQUErRCxHQUFHLHlLQUF5Syx1QkFBdUIsR0FBRywrREFBK0QscUJBQXFCLGdDQUFnQyxHQUFHLDZFQUE2RSw2Q0FBNkMsR0FBRyxzVUFBc1UsOEJBQThCLDRCQUE0Qiw0REFBNEQsa0JBQWtCLEdBQUcsbUNBQW1DLDBEQUEwRCw2REFBNkQsK0RBQStELGlFQUFpRSwwSUFBMEksR0FBRyxrRUFBa0UsdUJBQXVCLEdBQUcsOEZBQThGLHdCQUF3Qix5QkFBeUIsR0FBRyw4RkFBOEYsMkJBQTJCLEdBQUcsb0VBQW9FLHVCQUF1QixlQUFlLGlCQUFpQix3REFBd0QscUJBQXFCLHlCQUF5QiwwQkFBMEIsR0FBRyxxTkFBcU4saUJBQWlCLG9CQUFvQixrQkFBa0IsR0FBRywwRUFBMEUsdUJBQXVCLDRFQUE0RSxxREFBcUQscUJBQXFCLGtCQUFrQixzQkFBc0IsMEJBQTBCLHNEQUFzRCxHQUFHLDJDQUEyQyw0RUFBNEUsc0JBQXNCLEtBQUssR0FBRywwRUFBMEUsb0VBQW9FLDZCQUE2QixLQUFLLDRFQUE0RSx5QkFBeUIsZ0NBQWdDLEtBQUssR0FBRyxtQ0FBbUMsa0JBQWtCLEdBQUcsbUNBQW1DLDJCQUEyQixHQUFHLGlFQUFpRSxzQkFBc0IsOEJBQThCLEdBQUcsMkVBQTJFLHNFQUFzRSxHQUFHLHlGQUF5Rix3QkFBd0IsR0FBRyx1R0FBdUcsd0JBQXdCLEdBQUcsNkVBQTZFLHNFQUFzRSxHQUFHLDJGQUEyRix3QkFBd0IsR0FBRyw4RkFBOEYsNEVBQTRFLEdBQUcsMEdBQTBHLHFCQUFxQixHQUFHLDhGQUE4Riw2RUFBNkUsR0FBRywwR0FBMEcscUJBQXFCLEdBQUcsZ0dBQWdHLDhCQUE4QixrQ0FBa0MscUJBQXFCLEdBQUcsaUVBQWlFLGdDQUFnQywrQkFBK0IsR0FBRyw0RUFBNEUseUNBQXlDLHVCQUF1QixtQ0FBbUMsS0FBSyxHQUFHLHVGQUF1RixxRUFBcUUsR0FBRyx3RkFBd0Ysd0JBQXdCLHdCQUF3Qix3QkFBd0IsOEJBQThCLG9DQUFvQyx5R0FBeUcsZ0hBQWdILEdBQUcscUdBQXFHLHdCQUF3Qix1Q0FBdUMseURBQXlELG1DQUFtQyxrQkFBa0IsdUJBQXVCLEdBQUcsNEdBQTRHLGlEQUFpRCx5QkFBeUIsR0FBRyx3Q0FBd0MsOEdBQThHLDRCQUE0QixLQUFLLEdBQUcsZ0RBQWdELHlEQUF5RCx5QkFBeUIsR0FBRyx3Q0FBd0Msa0RBQWtELDRCQUE0QixLQUFLLEdBQUcsZ0RBQWdELDZDQUE2QyxHQUFHLGlEQUFpRCxpREFBaUQsNERBQTRELHdCQUF3QixHQUFHLGlJQUFpSSx5Q0FBeUMsR0FBRywySUFBMkksbUJBQW1CLHNEQUFzRCxHQUFHLG1LQUFtSyw0REFBNEQsR0FBRyxxS0FBcUssbUVBQW1FLEdBQUcsZ1lBQWdZLG1FQUFtRSxHQUFHLHlKQUF5Siw0REFBNEQsR0FBRyw2SUFBNkksNERBQTRELEdBQUcsK0NBQStDLGNBQWMsMENBQTBDLEtBQUssU0FBUywyQ0FBMkMsS0FBSyxHQUFHLDZDQUE2QyxjQUFjLHlDQUF5QyxLQUFLLFNBQVMsMENBQTBDLEtBQUssR0FBRyxtRUFBbUUsdUJBQXVCLHNCQUFzQixxQkFBcUIscUJBQXFCLEdBQUcsbUNBQW1DLHVCQUF1QixHQUFHLG9DQUFvQyxxQkFBcUIsR0FBRyxvQ0FBb0MscUJBQXFCLEdBQUcsb0NBQW9DLGtCQUFrQixxQkFBcUIscUJBQXFCLDhCQUE4Qix1QkFBdUIsR0FBRyxxQ0FBcUMscUJBQXFCLEdBQUcsb0NBQW9DLHVCQUF1QixHQUFHLG1DQUFtQyxxQkFBcUIsR0FBRyxtQ0FBbUMscUJBQXFCLGdCQUFnQixHQUFHLG1DQUFtQyw0QkFBNEIsR0FBRyxtQ0FBbUMseUJBQXlCLEdBQUcscUNBQXFDLGtCQUFrQix3QkFBd0IsMEJBQTBCLEdBQUcsc0lBQXNJLDREQUE0RCxHQUFHLG1DQUFtQyxxREFBcUQsdUJBQXVCLGdDQUFnQyx3QkFBd0IscUJBQXFCLEdBQUcsOENBQThDLFVBQVUsaUJBQWlCLDZCQUE2QixLQUFLLFFBQVEsaUJBQWlCLDBCQUEwQixLQUFLLEdBQUcsaUNBQWlDLGlDQUFpQyxHQUFHLHlLQUF5SyxvQ0FBb0MsR0FBRyxrREFBa0QsaUZBQWlGLEdBQUcsc0RBQXNELGtEQUFrRCxzQkFBc0IsS0FBSyxHQUFHLG1DQUFtQyxnRUFBZ0UsbURBQW1ELHFCQUFxQiw0Q0FBNEMsR0FBRyxtQ0FBbUMsdUJBQXVCLDBCQUEwQixrQkFBa0Isd0JBQXdCLHNCQUFzQixtQ0FBbUMsR0FBRyxtQ0FBbUMsMkJBQTJCLGVBQWUsY0FBYyxjQUFjLHlCQUF5QixvQkFBb0IsNkJBQTZCLEdBQUcsc0hBQXNILHdCQUF3QixHQUFHLGlDQUFpQyw4QkFBOEIseUJBQXlCLEdBQUcsc0RBQXNELDZDQUE2QyxHQUFHLGdEQUFnRCwyREFBMkQsR0FBRyx1Q0FBdUMsbUJBQW1CLGlCQUFpQix1QkFBdUIsR0FBRywwREFBMEQsd0RBQXdELEdBQUcsdUNBQXVDLG1CQUFtQixrQkFBa0IsR0FBRyxtQ0FBbUMsaUJBQWlCLGdCQUFnQixHQUFHLHNDQUFzQyxpQkFBaUIsZ0JBQWdCLEdBQUcsbUNBQW1DLDJCQUEyQixlQUFlLGNBQWMsY0FBYyx5QkFBeUIsb0JBQW9CLDZCQUE2QixpRUFBaUUsZ0VBQWdFLG9FQUFvRSx5RUFBeUUsR0FBRyxzSEFBc0gsd0JBQXdCLEdBQUcsaUNBQWlDLHVCQUF1QiwrQkFBK0IsdUJBQXVCLEdBQUcsd0NBQXdDLHlCQUF5QiwwQkFBMEIsR0FBRyxtRUFBbUUsb0JBQW9CLEdBQUcsOEZBQThGLDJCQUEyQixlQUFlLGNBQWMsY0FBYyx5QkFBeUIsb0JBQW9CLDZCQUE2QixpRUFBaUUsZ0VBQWdFLG9FQUFvRSx5RUFBeUUsR0FBRyw2U0FBNlMsd0JBQXdCLEdBQUcsOEZBQThGLHVDQUF1Qyx3QkFBd0IscUJBQXFCLHFCQUFxQixHQUFHLGdQQUFnUCxjQUFjLDZCQUE2QixHQUFHLG9HQUFvRyxpREFBaUQsR0FBRyx3Q0FBd0Msc0dBQXNHLDRCQUE0QixLQUFLLEdBQUcsNEdBQTRHLHlEQUF5RCx5QkFBeUIsR0FBRyx3Q0FBd0MsOEdBQThHLDRCQUE0QixLQUFLLEdBQUcsOE5BQThOLG1EQUFtRCw0REFBNEQseUJBQXlCLEdBQUcsbUlBQW1JLDZFQUE2RSwrRUFBK0UsR0FBRyxrSUFBa0ksZUFBZSxHQUFHLG1GQUFtRiwyQkFBMkIsZUFBZSxjQUFjLGNBQWMseUJBQXlCLG9CQUFvQiw2QkFBNkIsR0FBRyw0UUFBNFEsd0JBQXdCLEdBQUcsbUZBQW1GLG9CQUFvQix1QkFBdUIsR0FBRyxnRkFBZ0YsZUFBZSxHQUFHLDBFQUEwRSwyQkFBMkIsZUFBZSxjQUFjLGNBQWMseUJBQXlCLG9CQUFvQiw2QkFBNkIsR0FBRyxpUEFBaVAsd0JBQXdCLEdBQUcsMEVBQTBFLHVCQUF1QixxQkFBcUIsbUNBQW1DLGdDQUFnQyxpQkFBaUIsb0JBQW9CLG9CQUFvQix5QkFBeUIsK0JBQStCLHFCQUFxQixlQUFlLEdBQUcsaUZBQWlGLG1CQUFtQixpREFBaUQsbURBQW1ELGtCQUFrQiwyQkFBMkIsR0FBRyx1RkFBdUYsK0RBQStELGlFQUFpRSxHQUFHLHdGQUF3RixtRUFBbUUscUVBQXFFLEdBQUcsMEZBQTBGLFdBQVcsWUFBWSxHQUFHLDBGQUEwRixpQkFBaUIsWUFBWSxHQUFHLHFDQUFxQyxpQkFBaUIsR0FBRyx3SEFBd0gscUJBQXFCLG9CQUFvQixHQUFHLHFEQUFxRCw4REFBOEQsNkRBQTZELGlFQUFpRSxzRUFBc0Usb0JBQW9CLHVCQUF1QiwyQkFBMkIsR0FBRyxxREFBcUQsOERBQThELDZEQUE2RCxpRUFBaUUsc0VBQXNFLG9CQUFvQix1QkFBdUIsMkJBQTJCLEdBQUcsMkRBQTJELG1CQUFtQixHQUFHLHVHQUF1Ryw2Q0FBNkMsR0FBRywwRUFBMEUsOEJBQThCLG1CQUFtQixHQUFHLG9FQUFvRSw0REFBNEQsb0JBQW9CLEdBQUcsNERBQTRELHVCQUF1QixtQkFBbUIscUJBQXFCLDhEQUE4RCxpRUFBaUUsc0VBQXNFLGtCQUFrQix3QkFBd0IsNEJBQTRCLHVCQUF1QixvQkFBb0Isd0JBQXdCLEdBQUcsaUVBQWlFLHVCQUF1QixtQkFBbUIsd0JBQXdCLGtCQUFrQix5QkFBeUIsK0JBQStCLDRCQUE0Qix3Q0FBd0MsZ0NBQWdDLEdBQUcsZ0ZBQWdGLHVFQUF1RSxHQUFHLHNGQUFzRixnRkFBZ0YsR0FBRyxpR0FBaUcsd0JBQXdCLDJCQUEyQixHQUFHLCtDQUErQyxxQkFBcUIsR0FBRyw0R0FBNEcsMkJBQTJCLEdBQUcsc0VBQXNFLFdBQVcsZ0JBQWdCLGFBQWEsR0FBRyxzRUFBc0UsaUJBQWlCLGdCQUFnQixhQUFhLEdBQUcsT0FBTywwOURBQTA5RCxXQUFXLFdBQVcsT0FBTyxNQUFNLFlBQVksT0FBTyxNQUFNLFlBQVksT0FBTyxNQUFNLFlBQVksT0FBTyxNQUFNLFdBQVcsV0FBVyxPQUFPLE1BQU0sWUFBWSxPQUFPLE1BQU0sWUFBWSxPQUFPLE1BQU0sWUFBWSxPQUFPLE1BQU0sV0FBVyxXQUFXLE9BQU8sTUFBTSxZQUFZLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxZQUFZLE1BQU0sS0FBSyxXQUFXLFdBQVcsTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLFlBQVksTUFBTSxLQUFLLFdBQVcsV0FBVyxPQUFPLEtBQUssWUFBWSxPQUFPLE1BQU0sWUFBWSxPQUFPLEtBQUssWUFBWSxPQUFPLE1BQU0sV0FBVyxXQUFXLE9BQU8sS0FBSyxZQUFZLE9BQU8sS0FBSyxZQUFZLE9BQU8sS0FBSyxZQUFZLE9BQU8sTUFBTSxXQUFXLFdBQVcsT0FBTyxNQUFNLFlBQVksT0FBTyxNQUFNLFlBQVksT0FBTyxNQUFNLFlBQVksT0FBTyxNQUFNLFdBQVcsV0FBVyxPQUFPLE1BQU0sWUFBWSxPQUFPLE1BQU0sWUFBWSxPQUFPLE1BQU0sWUFBWSxPQUFPLE1BQU0sWUFBWSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsT0FBTyxNQUFNLFlBQVksV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLE9BQU8sTUFBTSxZQUFZLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxPQUFPLE1BQU0sWUFBWSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsT0FBTyxNQUFNLFlBQVksV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLE9BQU8sTUFBTSxXQUFXLFFBQVEsTUFBTSxXQUFXLFFBQVEsTUFBTSxXQUFXLFFBQVEsTUFBTSxLQUFLLFVBQVUsV0FBVyxNQUFNLE1BQU0sVUFBVSxXQUFXLE1BQU0sS0FBSyxNQUFNLEtBQUssVUFBVSxXQUFXLE1BQU0sTUFBTSxXQUFXLFdBQVcsTUFBTSxLQUFLLE1BQU0sS0FBSyxVQUFVLFdBQVcsV0FBVyxNQUFNLE1BQU0sVUFBVSxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsV0FBVyxNQUFNLE1BQU0sV0FBVyxXQUFXLE1BQU0sTUFBTSxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsV0FBVyxNQUFNLE1BQU0sV0FBVyxXQUFXLE1BQU0sTUFBTSxXQUFXLFdBQVcsTUFBTSxNQUFNLFVBQVUsV0FBVyxXQUFXLE1BQU0sS0FBSyxPQUFPLFdBQVcsV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsT0FBTyxNQUFNLFdBQVcsT0FBTyxNQUFNLFdBQVcsT0FBTyxNQUFNLFlBQVksV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sWUFBWSxPQUFPLE1BQU0sV0FBVyxVQUFVLGFBQWEsWUFBWSxXQUFXLE9BQU8sTUFBTSxZQUFZLFdBQVcsV0FBVyxZQUFZLFVBQVUsVUFBVSxVQUFVLFdBQVcsVUFBVSxXQUFXLFlBQVksVUFBVSxVQUFVLGFBQWEsZUFBZSxlQUFlLGFBQWEsV0FBVyxXQUFXLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxZQUFZLE1BQU0sUUFBUSxXQUFXLE9BQU8sTUFBTSxVQUFVLE9BQU8sTUFBTSxXQUFXLFVBQVUsVUFBVSxPQUFPLE1BQU0sVUFBVSxPQUFPLE9BQU8sV0FBVyxVQUFVLFVBQVUsYUFBYSxhQUFhLE9BQU8sTUFBTSxVQUFVLE9BQU8sTUFBTSxVQUFVLE9BQU8sTUFBTSxVQUFVLE9BQU8sTUFBTSxXQUFXLFdBQVcsV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE9BQU8sV0FBVyxXQUFXLFdBQVcsT0FBTyxPQUFPLFdBQVcsV0FBVyxPQUFPLE9BQU8sV0FBVyxXQUFXLFdBQVcsT0FBTyxPQUFPLFdBQVcsV0FBVyxXQUFXLE9BQU8sTUFBTSxXQUFXLFdBQVcsV0FBVyxXQUFXLE9BQU8sTUFBTSxXQUFXLFdBQVcsV0FBVyxXQUFXLE9BQU8sT0FBTyxXQUFXLE9BQU8sVUFBVSxZQUFZLFlBQVksVUFBVSxXQUFXLE9BQU8sVUFBVSxhQUFhLGFBQWEsYUFBYSxhQUFhLFdBQVcsV0FBVyxPQUFPLFVBQVUsWUFBWSxPQUFPLFVBQVUsY0FBYyxhQUFhLGFBQWEsUUFBUSxNQUFNLFdBQVcsV0FBVyxXQUFXLE9BQU8sTUFBTSxXQUFXLE9BQU8sT0FBTyxXQUFXLFdBQVcsV0FBVyxPQUFPLE9BQU8sV0FBVyxXQUFXLE9BQU8sT0FBTyxXQUFXLFdBQVcsV0FBVyxPQUFPLE9BQU8sV0FBVyxPQUFPLFVBQVUsWUFBWSxZQUFZLFVBQVUsV0FBVyxPQUFPLFVBQVUsYUFBYSxhQUFhLGFBQWEsYUFBYSxXQUFXLFdBQVcsT0FBTyxVQUFVLFlBQVksT0FBTyxVQUFVLGNBQWMsYUFBYSxhQUFhLFNBQVMsS0FBSyxXQUFXLFdBQVcsV0FBVyxNQUFNLE1BQU0sV0FBVyxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsV0FBVyxXQUFXLE1BQU0sU0FBUyxZQUFZLFdBQVcsTUFBTSxVQUFVLGFBQWEsWUFBWSxXQUFXLFdBQVcsT0FBTyxVQUFVLGNBQWMsY0FBYyxjQUFjLGNBQWMsV0FBVyxXQUFXLE9BQU8sVUFBVSxZQUFZLFdBQVcsT0FBTyxVQUFVLGVBQWUsY0FBYyxjQUFjLFNBQVMsTUFBTSxXQUFXLFdBQVcsV0FBVyxPQUFPLE9BQU8sV0FBVyxXQUFXLFdBQVcsT0FBTyxPQUFPLFdBQVcsV0FBVyxXQUFXLE9BQU8sVUFBVSxZQUFZLFdBQVcsT0FBTyxVQUFVLGFBQWEsWUFBWSxXQUFXLFdBQVcsT0FBTyxVQUFVLGNBQWMsY0FBYyxjQUFjLGNBQWMsV0FBVyxXQUFXLE9BQU8sVUFBVSxZQUFZLFdBQVcsT0FBTyxVQUFVLGVBQWUsY0FBYyxjQUFjLFNBQVMsTUFBTSxXQUFXLE9BQU8sTUFBTSxXQUFXLE9BQU8sTUFBTSxhQUFhLFVBQVUsVUFBVSxVQUFVLFdBQVcsVUFBVSxXQUFXLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxVQUFVLFdBQVcsV0FBVyxhQUFhLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxNQUFNLFNBQVMsV0FBVyxPQUFPLE9BQU8sVUFBVSxPQUFPLE1BQU0sYUFBYSxXQUFXLE9BQU8sT0FBTyxPQUFPLGFBQWEsT0FBTyxLQUFLLE1BQU0sYUFBYSxRQUFRLE1BQU0sYUFBYSxhQUFhLE9BQU8sTUFBTSxXQUFXLFVBQVUsYUFBYSxZQUFZLFVBQVUsV0FBVyxXQUFXLE9BQU8sTUFBTSxhQUFhLFFBQVEsT0FBTyxZQUFZLFFBQVEsT0FBTyxhQUFhLFdBQVcsV0FBVyxXQUFXLGFBQWEsV0FBVyxXQUFXLFFBQVEsT0FBTyxZQUFZLFdBQVcsV0FBVyxXQUFXLFFBQVEsT0FBTyxhQUFhLFdBQVcsV0FBVyxXQUFXLE9BQU8sT0FBTyxZQUFZLFVBQVUsVUFBVSxVQUFVLFdBQVcsVUFBVSxXQUFXLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxVQUFVLFdBQVcsV0FBVyxZQUFZLFdBQVcsWUFBWSxPQUFPLFNBQVMsV0FBVyxPQUFPLE9BQU8sVUFBVSxRQUFRLE9BQU8sWUFBWSxjQUFjLFFBQVEsT0FBTyxNQUFNLFlBQVksT0FBTyxNQUFNLE9BQU8sYUFBYSxTQUFTLE9BQU8sYUFBYSxXQUFXLFdBQVcsV0FBVyxhQUFhLFdBQVcsVUFBVSxXQUFXLFFBQVEsT0FBTyxZQUFZLFdBQVcsT0FBTyxLQUFLLE1BQU0sS0FBSyxPQUFPLEtBQUssWUFBWSxVQUFVLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxhQUFhLFdBQVcsV0FBVyxXQUFXLGFBQWEsV0FBVyxVQUFVLFdBQVcsYUFBYSxZQUFZLFVBQVUsV0FBVyxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxPQUFPLFNBQVMsV0FBVyxPQUFPLE9BQU8sWUFBWSxhQUFhLFlBQVksYUFBYSxhQUFhLE9BQU8sT0FBTyxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFFBQVEsT0FBTyxVQUFVLFVBQVUsUUFBUSxPQUFPLGNBQWMsYUFBYSxZQUFZLGFBQWEsYUFBYSxRQUFRLE9BQU8sYUFBYSxTQUFTLE9BQU8sYUFBYSxhQUFhLE9BQU8sT0FBTyxhQUFhLFNBQVMsUUFBUSxZQUFZLE9BQU8sT0FBTyxZQUFZLFNBQVMsT0FBTyxjQUFjLGFBQWEsWUFBWSxjQUFjLGNBQWMsUUFBUSxPQUFPLGFBQWEsU0FBUyxPQUFPLGFBQWEsYUFBYSxPQUFPLE9BQU8sYUFBYSxTQUFTLFFBQVEsWUFBWSxPQUFPLE9BQU8sWUFBWSxTQUFTLE9BQU8sY0FBYyxhQUFhLGFBQWEsY0FBYyxjQUFjLFNBQVMsT0FBTyxhQUFhLFNBQVMsT0FBTyxhQUFhLGFBQWEsT0FBTyxPQUFPLGFBQWEsU0FBUyxRQUFRLFlBQVksT0FBTyxPQUFPLFlBQVksT0FBTyxPQUFPLFlBQVksYUFBYSxPQUFPLE9BQU8sV0FBVyxhQUFhLGNBQWMsT0FBTyxPQUFPLFdBQVcsWUFBWSxXQUFXLFFBQVEsT0FBTyxhQUFhLGFBQWEsV0FBVyxXQUFXLGFBQWEsWUFBWSxPQUFPLE9BQU8sWUFBWSxRQUFRLE9BQU8sYUFBYSxhQUFhLE9BQU8sT0FBTyxhQUFhLFFBQVEsUUFBUSxZQUFZLE9BQU8sT0FBTyxXQUFXLFdBQVcsWUFBWSxRQUFRLE9BQU8sWUFBWSxRQUFRLE9BQU8sWUFBWSxRQUFRLE9BQU8sV0FBVyxXQUFXLFlBQVksV0FBVyxPQUFPLE9BQU8sWUFBWSxRQUFRLE9BQU8sV0FBVyxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsT0FBTyxPQUFPLFdBQVcsT0FBTyxPQUFPLFdBQVcsT0FBTyxPQUFPLFVBQVUsT0FBTyxPQUFPLFdBQVcsUUFBUSxPQUFPLFdBQVcsUUFBUSxTQUFTLFdBQVcsUUFBUSxPQUFPLGFBQWEsU0FBUyxPQUFPLFVBQVUsUUFBUSxRQUFRLFlBQVksUUFBUSxTQUFTLGFBQWEsU0FBUyxPQUFPLFdBQVcsUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLGNBQWMsYUFBYSxZQUFZLGNBQWMsY0FBYyxRQUFRLE9BQU8sYUFBYSxTQUFTLE9BQU8sYUFBYSxhQUFhLE9BQU8sT0FBTyxhQUFhLFNBQVMsUUFBUSxZQUFZLE9BQU8sT0FBTyxZQUFZLFFBQVEsT0FBTyxjQUFjLGFBQWEsYUFBYSxjQUFjLGNBQWMsU0FBUyxPQUFPLGFBQWEsU0FBUyxPQUFPLGFBQWEsYUFBYSxPQUFPLE9BQU8sYUFBYSxTQUFTLFFBQVEsWUFBWSxPQUFPLE9BQU8sWUFBWSxhQUFhLFFBQVEsT0FBTyxhQUFhLGNBQWMsUUFBUSxPQUFPLFlBQVksYUFBYSxhQUFhLFFBQVEsT0FBTyxXQUFXLFlBQVksV0FBVyxPQUFPLE9BQU8sY0FBYyxhQUFhLFlBQVksYUFBYSxjQUFjLGFBQWEsT0FBTyxPQUFPLGFBQWEsU0FBUyxPQUFPLGFBQWEsYUFBYSxPQUFPLE9BQU8sYUFBYSxTQUFTLFFBQVEsWUFBWSxPQUFPLE9BQU8sV0FBVyxZQUFZLFFBQVEsT0FBTyxZQUFZLFFBQVEsT0FBTyxXQUFXLFdBQVcsWUFBWSxXQUFXLFFBQVEsT0FBTyxhQUFhLFdBQVcsV0FBVyxXQUFXLGFBQWEsUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFdBQVcsV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sWUFBWSxVQUFVLFVBQVUsYUFBYSxhQUFhLFdBQVcsWUFBWSxPQUFPLFFBQVEsVUFBVSxVQUFVLFVBQVUsUUFBUSxRQUFRLFdBQVcsV0FBVyxZQUFZLFlBQVksVUFBVSxXQUFXLFdBQVcsV0FBVyxRQUFRLFFBQVEsS0FBSyxVQUFVLFFBQVEsS0FBSyxRQUFRLE1BQU0sWUFBWSxRQUFRLFFBQVEsV0FBVyxXQUFXLFFBQVEsTUFBTSxPQUFPLFVBQVUsUUFBUSxPQUFPLFdBQVcsUUFBUSxPQUFPLFdBQVcsV0FBVyxPQUFPLE9BQU8sV0FBVyxPQUFPLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxPQUFPLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxPQUFPLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxXQUFXLFdBQVcsUUFBUSxPQUFPLFlBQVksYUFBYSxTQUFTLFFBQVEsTUFBTSxZQUFZLFdBQVcsUUFBUSxNQUFNLE9BQU8sV0FBVyxRQUFRLGNBQWMsTUFBTSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFNBQVMsY0FBYyxPQUFPLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxXQUFXLE9BQU8sT0FBTyxXQUFXLFdBQVcsT0FBTyxPQUFPLEtBQUssV0FBVyxPQUFPLEtBQUssT0FBTyxZQUFZLFdBQVcsT0FBTyxPQUFPLE1BQU0sWUFBWSxPQUFPLEtBQUssT0FBTyxZQUFZLFFBQVEsT0FBTyxXQUFXLFlBQVksWUFBWSxRQUFRLE9BQU8sV0FBVyxPQUFPLE9BQU8sVUFBVSxZQUFZLFFBQVEsT0FBTyxZQUFZLFFBQVEsT0FBTyxXQUFXLE9BQU8sT0FBTyxXQUFXLFFBQVEsT0FBTyxZQUFZLFFBQVEsT0FBTyxZQUFZLFNBQVMsT0FBTyxLQUFLLFdBQVcsT0FBTyxPQUFPLFdBQVcsT0FBTyxLQUFLLE9BQU8sS0FBSyxXQUFXLE9BQU8sT0FBTyxXQUFXLE9BQU8sS0FBSyxPQUFPLFdBQVcsYUFBYSxlQUFlLGFBQWEsT0FBTyxPQUFPLGFBQWEsU0FBUyxPQUFPLGFBQWEsU0FBUyxPQUFPLGFBQWEsU0FBUyxPQUFPLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxRQUFRLE9BQU8sYUFBYSxTQUFTLE9BQU8sYUFBYSxTQUFTLE9BQU8sYUFBYSxTQUFTLE9BQU8sV0FBVyxVQUFVLFFBQVEsT0FBTyxXQUFXLFFBQVEsT0FBTyxXQUFXLFFBQVEsT0FBTyxVQUFVLFdBQVcsV0FBVyxRQUFRLE9BQU8sWUFBWSxTQUFTLE9BQU8sV0FBVyxhQUFhLGFBQWEsV0FBVyxXQUFXLFFBQVEsT0FBTyxLQUFLLFVBQVUsV0FBVyxPQUFPLE9BQU8sVUFBVSxXQUFXLE9BQU8sS0FBSyxPQUFPLFdBQVcsUUFBUSxTQUFTLFdBQVcsUUFBUSxPQUFPLFdBQVcsT0FBTyxPQUFPLEtBQUssVUFBVSxPQUFPLE1BQU0sT0FBTyxhQUFhLGNBQWMsWUFBWSxXQUFXLFFBQVEsT0FBTyxhQUFhLGVBQWUsWUFBWSxXQUFXLFdBQVcsV0FBVyxRQUFRLE9BQU8sWUFBWSxVQUFVLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxPQUFPLFNBQVMsV0FBVyxPQUFPLE9BQU8sV0FBVyxXQUFXLE9BQU8sT0FBTyxZQUFZLE9BQU8sT0FBTyxXQUFXLFFBQVEsT0FBTyxVQUFVLFVBQVUsV0FBVyxRQUFRLE9BQU8sV0FBVyxRQUFRLE9BQU8sWUFBWSxjQUFjLFNBQVMsT0FBTyxZQUFZLGNBQWMsU0FBUyxPQUFPLFlBQVksY0FBYyxTQUFTLE9BQU8sWUFBWSxVQUFVLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxhQUFhLFdBQVcsV0FBVyxXQUFXLE9BQU8sU0FBUyxXQUFXLE9BQU8sT0FBTyxhQUFhLGVBQWUsYUFBYSxPQUFPLE9BQU8sYUFBYSxlQUFlLFFBQVEsT0FBTyxVQUFVLE9BQU8sT0FBTyxZQUFZLFVBQVUsVUFBVSxVQUFVLFdBQVcsVUFBVSxXQUFXLGFBQWEsV0FBVyxXQUFXLFdBQVcsT0FBTyxTQUFTLFdBQVcsT0FBTyxPQUFPLFdBQVcsYUFBYSxlQUFlLGFBQWEsT0FBTyxPQUFPLFVBQVUsV0FBVyxPQUFPLE9BQU8sWUFBWSxPQUFPLE9BQU8sTUFBTSxZQUFZLE9BQU8sS0FBSyxPQUFPLFlBQVksV0FBVyxPQUFPLE9BQU8sTUFBTSxZQUFZLE9BQU8sS0FBSyxPQUFPLFlBQVksYUFBYSxZQUFZLE9BQU8sT0FBTyxZQUFZLGFBQWEsUUFBUSxPQUFPLFVBQVUsT0FBTyxPQUFPLFlBQVksVUFBVSxVQUFVLFVBQVUsV0FBVyxVQUFVLFdBQVcsT0FBTyxTQUFTLFdBQVcsT0FBTyxPQUFPLFVBQVUsV0FBVyxPQUFPLE9BQU8sVUFBVSxPQUFPLE9BQU8sWUFBWSxVQUFVLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxPQUFPLFNBQVMsV0FBVyxPQUFPLE9BQU8sV0FBVyxXQUFXLGFBQWEsZUFBZSxZQUFZLFVBQVUsVUFBVSxhQUFhLGVBQWUsYUFBYSxVQUFVLE9BQU8sT0FBTyxVQUFVLFdBQVcsV0FBVyxVQUFVLFdBQVcsT0FBTyxPQUFPLFlBQVksYUFBYSxTQUFTLE9BQU8sWUFBWSxhQUFhLFFBQVEsT0FBTyxVQUFVLFVBQVUsT0FBTyxPQUFPLFlBQVksWUFBWSxRQUFRLE9BQU8sVUFBVSxPQUFPLE9BQU8sV0FB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NEIsMEJBQTBCLDRCQUE0QiwyQkFBMkIseUJBQXlCLHVCQUF1QiwrQkFBK0IsK0JBQStCLG9DQUFvQyxtQkFBbUIsMkJBQTJCLHFCQUFxQixtQkFBbUIsMEJBQTBCLCtCQUErQiw2QkFBNkIsNkJBQTZCLDZCQUE2Qiw2QkFBNkIsOEdBQThHLDhCQUE4QixnQ0FBZ0MsTUFBTSxVQUFVLFVBQVUsTUFBTSxVQUFVLGtCQUFrQixHQUFHLGdDQUFnQyxNQUFNLFVBQVUsVUFBVSxNQUFNLFVBQVUsa0JBQWtCLEdBQUcsZ0NBQWdDLE1BQU0sVUFBVSxVQUFVLE1BQU0sVUFBVSxrQkFBa0IsR0FBRyxXQUFXLHdCQUF3Qix3QkFBd0Isd0JBQXdCLDJCQUEyQixvQkFBb0IsaUNBQWlDLG9CQUFvQix5R0FBeUcsZ0hBQWdILEdBQUcsK0JBQStCLCtCQUErQixnQ0FBZ0MsaUNBQWlDLHdDQUF3Qyx3Q0FBd0Msd0NBQXdDLDRDQUE0Qyw2RkFBNkYscUJBQXFCLHFCQUFxQix1TUFBdU0sOEVBQThFLDJDQUEyQyx3Q0FBd0MsR0FBRywyQkFBMkIseUNBQXlDLEdBQUcscUJBQXFCO0FBQzM3a087QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFlLHVCQUF1QixFQUFDIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../framework/esm-styleguide/dist/datepicker/datepicker.module.scss\n\n}");
|
|
19
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n \"default\": () => (__rspack_default_export)\n});\n/* import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__rspack_import_0 = __webpack_require__(\"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__rspack_import_0);\n/* import */ var _node_modules_css_loader_dist_runtime_api_js__rspack_import_1 = __webpack_require__(\"../../../node_modules/css-loader/dist/runtime/api.js\");\n/* import */ var _node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__rspack_import_1);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__rspack_import_1_default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__rspack_import_0_default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* 60,70 and 80 are already declared as brand-01, 02 and 03 respectively */\\n:root {\\n --brand-01: #005d5d;\\n --brand-02: #004144;\\n --brand-03: #007d79;\\n --bottom-nav-height: 4rem;\\n --workspace-header-height: 3rem;\\n --tablet-workspace-window-height: calc(100vh - var(--omrs-navbar-height) - var(--bottom-nav-height));\\n --desktop-workspace-window-height: calc(100vh - var(--omrs-navbar-height) - var(--workspace-header-height));\\n}\\n\\n/* These color variables will be removed in a future release */\\n._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\= {\\n align-items: center;\\n background-color: var(--cds-field);\\n border-block-end: 1px solid var(--cds-border-strong);\\n color: var(--cds-text-primary);\\n display: flex;\\n position: relative;\\n}\\n._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=:focus-within, ._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=.wd02PMIuu0vdK1nU01M0vA\\\\=\\\\= {\\n outline: 2px solid var(--cds-focus, #0f62fe);\\n outline-offset: -2px;\\n}\\n@media screen and (prefers-contrast) {\\n ._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=:focus-within, ._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=.wd02PMIuu0vdK1nU01M0vA\\\\=\\\\= {\\n outline-style: dotted;\\n }\\n}\\n._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=[data-invalid] {\\n outline: 2px solid var(--cds-support-error, #da1e28);\\n outline-offset: -2px;\\n}\\n@media screen and (prefers-contrast) {\\n ._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=[data-invalid] {\\n outline-style: dotted;\\n }\\n}\\n._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=[data-invalid] {\\n color: var(--cds-support-error, #da1e28);\\n}\\n._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=[data-disabled] {\\n border-block-end: 1px solid rgba(0, 0, 0, 0);\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n cursor: not-allowed;\\n}\\n\\n._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\= .u9xpQLwv8879aSrtwgBjwA\\\\=\\\\=, .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= .u9xpQLwv8879aSrtwgBjwA\\\\=\\\\= {\\n caret-color: var(--cds-text-primary);\\n}\\n._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\= .u9xpQLwv8879aSrtwgBjwA\\\\=\\\\=:focus, .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= .u9xpQLwv8879aSrtwgBjwA\\\\=\\\\=:focus {\\n outline: unset;\\n background-color: var(--cds-layer-selected-hover);\\n}\\n._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\= [data-placeholder].u9xpQLwv8879aSrtwgBjwA\\\\=\\\\=, .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= [data-placeholder].u9xpQLwv8879aSrtwgBjwA\\\\=\\\\= {\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n}\\n._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\= [data-focused=true].u9xpQLwv8879aSrtwgBjwA\\\\=\\\\=, .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= [data-focused=true].u9xpQLwv8879aSrtwgBjwA\\\\=\\\\= {\\n animation: GvYCW4Ha\\\\+xGVXQCcY1qtwA\\\\=\\\\= 1s step-end infinite;\\n}\\n[dir=\\\"rtl\\\"] ._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\= [data-focused=true].u9xpQLwv8879aSrtwgBjwA\\\\=\\\\=, [dir=\\\"rtl\\\"] .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= [data-focused=true].u9xpQLwv8879aSrtwgBjwA\\\\=\\\\=, ._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\= [dir=\\\"rtl\\\"] [data-focused=true].u9xpQLwv8879aSrtwgBjwA\\\\=\\\\=, .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= [dir=\\\"rtl\\\"] [data-focused=true].u9xpQLwv8879aSrtwgBjwA\\\\=\\\\= {\\n animation: c0RMH1TuYT8d1jqJT\\\\+6XFA\\\\=\\\\= 1s step-end infinite;\\n}\\n\\n._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\= [data-readonly]:has(+ [data-placeholder]), .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= [data-readonly]:has(+ [data-placeholder]) {\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n}\\n._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\= [data-placeholder] + [data-readonly], .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= [data-placeholder] + [data-readonly] {\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n}\\n\\n@keyframes GvYCW4Ha\\\\+xGVXQCcY1qtwA\\\\=\\\\= {\\n from, to {\\n border-right: 1px solid transparent;\\n }\\n 50% {\\n border-right: 1px solid currentColor;\\n }\\n}\\n@keyframes c0RMH1TuYT8d1jqJT\\\\+6XFA\\\\=\\\\= {\\n from, to {\\n border-left: 1px solid transparent;\\n }\\n 50% {\\n border-left: 1px solid currentColor;\\n }\\n}\\n._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\=, .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= {\\n inline-size: 15rem;\\n margin-left: 1rem;\\n min-width: 10rem;\\n max-width: 15rem;\\n}\\n.GVaG38s0eIbutuabf4\\\\+uBQ\\\\=\\\\= {\\n block-size: 2.5rem;\\n}\\n\\n._01dtBgqWiwZk6SoBjALSjQ\\\\=\\\\= {\\n block-size: 2rem;\\n}\\n\\n._0hIZ9D1--CeU4ZSveSTQQg\\\\=\\\\= {\\n block-size: 3rem;\\n}\\n\\n._7m9E2jl20P4i7p7Mp1-biA\\\\=\\\\= {\\n display: flex;\\n min-width: 10rem;\\n max-width: 15rem;\\n margin-inline-start: 1rem;\\n inline-size: 15rem;\\n}\\n\\n.mx9jP\\\\+0JMdnAXdZTjRCJhw\\\\=\\\\= {\\n block-size: 2rem;\\n}\\n\\n._6RdG0pycDtJJ2KTzHV4iIw\\\\=\\\\= {\\n block-size: 2.5rem;\\n}\\n\\n.IPnJdk8Xtzg1yfFCUoBc9A\\\\=\\\\= {\\n block-size: 3rem;\\n}\\n\\n.miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= {\\n min-width: unset;\\n margin: 0px;\\n}\\n\\n.NyabfeLUZzUPXOIdWle5bw\\\\=\\\\= {\\n flex-basis: fit-content;\\n}\\n\\n.PAI4FVG2hj35xDhzIF-jaQ\\\\=\\\\= {\\n padding-right: unset;\\n}\\n\\n.S7-qCETjknn\\\\+AcA7c0xC3g\\\\=\\\\= {\\n display: flex;\\n align-items: center;\\n margin-inline: 0.5rem;\\n}\\n\\n._3ghL9VvEMEBGtxu4pMwlUQ\\\\=\\\\=:has([data-placeholder]) > ._7m9E2jl20P4i7p7Mp1-biA\\\\=\\\\= > .S7-qCETjknn\\\\+AcA7c0xC3g\\\\=\\\\= > span {\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n}\\n\\n.Hr9NJxCA4oSNVTBwsHmACQ\\\\=\\\\= {\\n color: var(--cds-text-error, #da1e28) !important;\\n font-size: 0.75rem;\\n font-weight: 400 !important;\\n margin: 0.25rem 0 0;\\n overflow: hidden;\\n}\\n\\n@keyframes _13UImLxwUrLdL5zUTqyARg\\\\=\\\\= {\\n from {\\n opacity: 0;\\n transform: scale(0.93);\\n }\\n to {\\n opacity: 1;\\n transform: scale(1);\\n }\\n}\\n.fJEQcItNrv2n55UaD-Nfgw\\\\=\\\\= {\\n transform-origin: top center;\\n}\\n\\n.fJEQcItNrv2n55UaD-Nfgw\\\\=\\\\=[data-placement=top],\\n.fJEQcItNrv2n55UaD-Nfgw\\\\=\\\\=[data-placement=top-start],\\n.fJEQcItNrv2n55UaD-Nfgw\\\\=\\\\=[data-placement=top-end] {\\n transform-origin: bottom center;\\n}\\n\\n.fJEQcItNrv2n55UaD-Nfgw\\\\=\\\\=[data-entering] {\\n animation: _13UImLxwUrLdL5zUTqyARg\\\\=\\\\= 110ms cubic-bezier(0, 0, 0.38, 0.9);\\n}\\n@media screen and (prefers-reduced-motion: reduce) {\\n .fJEQcItNrv2n55UaD-Nfgw\\\\=\\\\=[data-entering] {\\n animation: none;\\n }\\n}\\n\\n.gj9nEvrB9Re-WX-HkzyQEQ\\\\=\\\\= {\\n box-shadow: 0 2px 6px var(--cds-shadow, rgba(0, 0, 0, 0.3));\\n background-color: var(--cds-layer-01, #f4f4f4);\\n overflow: hidden;\\n padding: 0.25rem 0.25rem 0.5rem 0.25rem;\\n}\\n\\n.qvzkMTSvzPFL42Qx1Rp7gQ\\\\=\\\\= {\\n margin-top: 0.5rem;\\n margin-bottom: 0.5rem;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: nowrap;\\n justify-content: space-between;\\n}\\n\\n.QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\= {\\n box-sizing: border-box;\\n padding: 0;\\n border: 0;\\n margin: 0;\\n font-family: inherit;\\n font-size: 100%;\\n vertical-align: baseline;\\n}\\n.QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\= *,\\n.QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\= *::before,\\n.QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\= *::after {\\n box-sizing: inherit;\\n}\\n.QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\= {\\n background-color: inherit;\\n display: inline-flex;\\n}\\n.QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\=:hover:not(:disabled) {\\n background-color: var(--cds-layer-hover);\\n}\\n.QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\=:disabled > svg {\\n fill: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n}\\n.QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\= > svg {\\n display: block;\\n margin: auto;\\n text-align: center;\\n}\\n\\n[data-invalid] > .QEZ5dHMMHKxzY8OYNICm0w\\\\=\\\\= > svg {\\n --omrs-icon-fill: var(--cds-support-error, #da1e28);\\n}\\n\\n.ohLjF\\\\+TIoU6I01Ed\\\\+UfWxg\\\\=\\\\= {\\n height: 2.5rem;\\n width: 2.5rem;\\n}\\n\\n.sD3fm4rOJvtpunJ3wocYtA\\\\=\\\\= {\\n height: 2rem;\\n width: 2rem;\\n}\\n\\n._0fs7mgdVjmu0ElQLPZgc\\\\+Q\\\\=\\\\= {\\n height: 3rem;\\n width: 3rem;\\n}\\n\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= {\\n box-sizing: border-box;\\n padding: 0;\\n border: 0;\\n margin: 0;\\n font-family: inherit;\\n font-size: 100%;\\n vertical-align: baseline;\\n font-size: var(--cds-heading-compact-01-font-size, 0.875rem);\\n font-weight: var(--cds-heading-compact-01-font-weight, 600);\\n line-height: var(--cds-heading-compact-01-line-height, 1.28572);\\n letter-spacing: var(--cds-heading-compact-01-letter-spacing, 0.16px);\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= *,\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= *::before,\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= *::after {\\n box-sizing: inherit;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= {\\n margin-top: 0.5rem;\\n margin-block-end: 0.125rem;\\n text-align: center;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= > span {\\n margin-left: 0.25rem;\\n margin-right: 0.25rem;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) {\\n display: inline;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric] {\\n box-sizing: border-box;\\n padding: 0;\\n border: 0;\\n margin: 0;\\n font-family: inherit;\\n font-size: 100%;\\n vertical-align: baseline;\\n font-size: var(--cds-heading-compact-01-font-size, 0.875rem);\\n font-weight: var(--cds-heading-compact-01-font-weight, 600);\\n line-height: var(--cds-heading-compact-01-line-height, 1.28572);\\n letter-spacing: var(--cds-heading-compact-01-letter-spacing, 0.16px);\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric] *,\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric] *::before,\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric] *::after {\\n box-sizing: inherit;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric] {\\n background-color: var(--cds-field);\\n inline-size: 2.5rem;\\n padding: 0.25rem;\\n padding-right: 0;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric]::-webkit-outer-spin-button, .CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric]::-webkit-inner-spin-button {\\n margin: 0;\\n -webkit-appearance: none;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric]:focus {\\n outline: 1px solid var(--cds-focus, #0f62fe);\\n}\\n@media screen and (prefers-contrast) {\\n .CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric]:focus {\\n outline-style: dotted;\\n }\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric][data-invalid] {\\n outline: 2px solid var(--cds-support-error, #da1e28);\\n outline-offset: -2px;\\n}\\n@media screen and (prefers-contrast) {\\n .CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric][data-invalid] {\\n outline-style: dotted;\\n }\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric][data-disabled], .CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric][data-disabled]:hover {\\n background-color: var(--cds-layer-01, #f4f4f4);\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n pointer-events: none;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric][data-disabled] + div > button::after {\\n border-block-end-color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n border-block-start-color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric][data-disabled] + div > button:hover {\\n opacity: 0;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) div[role=group] {\\n box-sizing: border-box;\\n padding: 0;\\n border: 0;\\n margin: 0;\\n font-family: inherit;\\n font-size: 100%;\\n vertical-align: baseline;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) div[role=group] *,\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) div[role=group] *::before,\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) div[role=group] *::after {\\n box-sizing: inherit;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) div[role=group] {\\n display: inline;\\n position: relative;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]):hover button {\\n opacity: 1;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button {\\n box-sizing: border-box;\\n padding: 0;\\n border: 0;\\n margin: 0;\\n font-family: inherit;\\n font-size: 100%;\\n vertical-align: baseline;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button *,\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button *::before,\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button *::after {\\n box-sizing: inherit;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button {\\n position: absolute;\\n padding-block: 0;\\n padding-inline-start: 0.125rem;\\n padding-inline-end: 0.25rem;\\n border: none;\\n block-size: 50%;\\n cursor: pointer;\\n inline-size: 0.75rem;\\n inset-inline-start: 2.5rem;\\n line-height: 50%;\\n opacity: 0;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button::after {\\n display: block;\\n border-inline-end: 0.25rem solid transparent;\\n border-inline-start: 0.25rem solid transparent;\\n content: \\\"\\\";\\n inset-block-start: 33%;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button:hover::after {\\n border-block-end-color: var(--cds-button-primary, #0f62fe);\\n border-block-start-color: var(--cds-button-primary, #0f62fe);\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button:active::after {\\n border-block-end-color: var(--cds-border-interactive, #0f62fe);\\n border-block-start-color: var(--cds-border-interactive, #0f62fe);\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button[slot=increment] {\\n top: 0;\\n left: 0;\\n}\\n.CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) button[slot=decrement] {\\n top: 0.75rem;\\n left: 0;\\n}\\n\\n.uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= {\\n width: 17rem;\\n}\\n.uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= tr, .uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= tr > th, .uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= tr > td {\\n height: 2.428rem;\\n width: 2.428rem;\\n}\\n.uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= > thead > tr > th {\\n font-size: var(--cds-body-compact-01-font-size, 0.875rem);\\n font-weight: var(--cds-body-compact-01-font-weight, 400);\\n line-height: var(--cds-body-compact-01-line-height, 1.28572);\\n letter-spacing: var(--cds-body-compact-01-letter-spacing, 0.16px);\\n cursor: default;\\n text-align: center;\\n vertical-align: middle;\\n}\\n.uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= > tbody > tr > td {\\n font-size: var(--cds-body-compact-01-font-size, 0.875rem);\\n font-weight: var(--cds-body-compact-01-font-weight, 400);\\n line-height: var(--cds-body-compact-01-line-height, 1.28572);\\n letter-spacing: var(--cds-body-compact-01-letter-spacing, 0.16px);\\n cursor: pointer;\\n text-align: center;\\n vertical-align: middle;\\n}\\n.uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= > tbody > tr > td > div {\\n outline: unset;\\n}\\n.uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= > tbody > tr > td:hover:not(:has([aria-disabled], [data-selected])) {\\n background-color: var(--cds-layer-hover);\\n}\\n.uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= > tbody > tr > td:has([data-selected]) {\\n background-color: #0f62fe;\\n color: #ffffff;\\n}\\n.uoEjJIOS\\\\+CBqkco8jRUt6Q\\\\=\\\\= > tbody > tr > td[aria-disabled] {\\n color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n cursor: default;\\n}\\n\\n.wcSTDuH\\\\+PjP9kxK\\\\+pj3CUw\\\\=\\\\=:not([data-selected]) {\\n position: relative;\\n color: #0f62fe;\\n font-weight: 600;\\n font-size: var(--cds-body-compact-01-font-size, 0.875rem);\\n line-height: var(--cds-body-compact-01-line-height, 1.28572);\\n letter-spacing: var(--cds-body-compact-01-letter-spacing, 0.16px);\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n block-size: 2.5rem;\\n cursor: pointer;\\n inline-size: 2.5rem;\\n}\\n.wcSTDuH\\\\+PjP9kxK\\\\+pj3CUw\\\\=\\\\=:not([data-selected])::after {\\n position: absolute;\\n display: block;\\n block-size: 0.25rem;\\n content: \\\"\\\";\\n inline-size: 0.25rem;\\n inset-block-end: 0.4375rem;\\n inset-inline-start: 50%;\\n -webkit-transform: translateX(-50%);\\n transform: translateX(-50%);\\n}\\n.wcSTDuH\\\\+PjP9kxK\\\\+pj3CUw\\\\=\\\\=:not([data-selected])[data-disabled]::after {\\n background-color: var(--cds-text-disabled, rgba(22, 22, 22, 0.25));\\n}\\n.wcSTDuH\\\\+PjP9kxK\\\\+pj3CUw\\\\=\\\\=:not([data-selected]):not([data-disabled])::after {\\n background-color: var(--cds-link-primary, var(--cds-link-primary, #0f62fe));\\n}\\n\\n[dir=\\\"rtl\\\"] ._8dD8Tb9JIvtXiK-H-m58\\\\+Q\\\\=\\\\=, [dir=\\\"rtl\\\"] .miyGBksDDw6IAgDq8oEiMw\\\\=\\\\= {\\n padding-left: unset;\\n padding-right: 0.75rem;\\n}\\n[dir=\\\"rtl\\\"] .PAI4FVG2hj35xDhzIF-jaQ\\\\=\\\\= {\\n padding-right: 0;\\n}\\n[dir=\\\"rtl\\\"] .CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= div:has(input[inputmode=numeric]) > input[inputmode=numeric] {\\n padding-right: 0.25rem;\\n}\\n[dir=\\\"rtl\\\"] .CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= button[slot=increment] {\\n top: 0;\\n left: unset;\\n right: 0;\\n}\\n[dir=\\\"rtl\\\"] .CyXMAICmKG6JIYk9V7yM9A\\\\=\\\\= button[slot=decrement] {\\n top: 0.75rem;\\n left: unset;\\n right: 0;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../framework/esm-styleguide/dist/_vars.scss\",\"webpack://./../../framework/esm-styleguide/dist/datepicker/datepicker.module.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/utilities/_focus-outline.scss\",\"webpack://./../../../node_modules/@carbon/themes/scss/generated/_tokens.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/theme/_theme.scss\",\"webpack://./../../../node_modules/@carbon/layout/scss/generated/_spacing.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/utilities/_box-shadow.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/utilities/_component-reset.scss\",\"webpack://./../../../node_modules/@carbon/type/scss/_styles.scss\",\"webpack://./../../../node_modules/@carbon/styles/scss/components/button/_tokens.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@use '@carbon/layout';\\n\\n$ui-01: #f4f4f4;\\n$ui-02: #ffffff;\\n$ui-03: #e0e0e0;\\n$ui-04: #8d8d8d;\\n$ui-05: #161616;\\n$text-02: #525252;\\n$text-03: #a8a8a8;\\n$ui-background: #ffffff;\\n$color-gray-30: #c6c6c6;\\n$color-gray-70: #525252;\\n$color-gray-100: #161616;\\n$color-blue-60-2: #0f62fe;\\n$color-blue-10: #edf5ff;\\n$color-yellow-50: #feecae;\\n$carbon--red-50: #fa4d56;\\n$inverse-link: #78a9ff;\\n$support-02: #24a148;\\n$inverse-support-03: #f1c21b;\\n$warning-background: #fff8e1;\\n$openmrs-background-grey: #f4f4f4;\\n$danger: #da1e28;\\n$interactive-01: #0f62fe;\\n$field-01: #f4f4f4;\\n$grey-2: #e0e0e0;\\n$labeldropdown: #c6c6c6;\\n\\n$brand-primary-10: #d9fbfb;\\n$brand-primary-20: #9ef0f0;\\n$brand-primary-30: #3ddbd9;\\n$brand-primary-40: #08bdba;\\n$brand-primary-50: #009d9a;\\n\\n/* 60,70 and 80 are already declared as brand-01, 02 and 03 respectively */\\n\\n$brand-primary-90: #022b30;\\n$brand-primary-100: #081a1c;\\n\\n@mixin brand-01($property) {\\n #{$property}: #005d5d;\\n #{$property}: var(--brand-01);\\n}\\n\\n@mixin brand-02($property) {\\n #{$property}: #004144;\\n #{$property}: var(--brand-02);\\n}\\n\\n@mixin brand-03($property) {\\n #{$property}: #007d79;\\n #{$property}: var(--brand-03);\\n}\\n\\n:root {\\n --brand-01: #005d5d;\\n --brand-02: #004144;\\n --brand-03: #007d79;\\n --bottom-nav-height: #{layout.$spacing-10};\\n --workspace-header-height: #{layout.$spacing-09};\\n --tablet-workspace-window-height: calc(100vh - var(--omrs-navbar-height) - var(--bottom-nav-height));\\n --desktop-workspace-window-height: calc(100vh - var(--omrs-navbar-height) - var(--workspace-header-height));\\n}\\n\\n$breakpoint-phone-min: 0px;\\n$breakpoint-phone-max: 600px;\\n$breakpoint-tablet-min: 601px;\\n$breakpoint-tablet-max: 1023px;\\n$breakpoint-small-desktop-min: 1024px;\\n$breakpoint-small-desktop-max: 1439px;\\n$breakpoint-large-desktop-min: 1440px;\\n$breakpoint-large-desktop-max: 99999999px;\\n\\n/* These color variables will be removed in a future release */\\n$brand-teal-01: #007d79;\\n$brand-01: #005d5d;\\n$brand-02: #004144;\\n\",\"@use '@carbon/styles/scss/motion';\\n@use '@carbon/layout';\\n@use '@carbon/styles/scss/theme';\\n@use '@carbon/type';\\n// `.../components/button` would emit Carbon's entire button stylesheet; the tokens module emits none.\\n@use '@carbon/styles/scss/components/button/tokens' as button;\\n@use '@carbon/styles/scss/utilities/box-shadow';\\n@use '@carbon/styles/scss/utilities/component-reset';\\n@use '@carbon/styles/scss/utilities/focus-outline' as focus;\\n@use '../vars' as *;\\n\\n// Text field for dates\\n.inputGroup {\\n align-items: center;\\n background-color: var(--cds-field);\\n border-block-end: 1px solid var(--cds-border-strong);\\n color: var(--cds-text-primary);\\n display: flex;\\n position: relative;\\n\\n &:focus-within,\\n &.cds--focused {\\n @include focus.focus-outline('outline');\\n }\\n\\n &[data-invalid] {\\n @include focus.focus-outline('invalid');\\n\\n & {\\n color: theme.$support-error;\\n }\\n }\\n\\n &[data-disabled] {\\n border-block-end: 1px solid rgba(0, 0, 0, 0);\\n color: theme.$text-disabled;\\n cursor: not-allowed;\\n }\\n}\\n\\n// Shared segment styles used by both single and range inputs\\n%inputSegmentStyles {\\n caret-color: var(--cds-text-primary);\\n\\n &:focus {\\n outline: unset;\\n background-color: theme.$layer-selected-hover;\\n }\\n\\n &[data-placeholder] {\\n color: theme.$text-disabled;\\n }\\n\\n &[data-focused='true'] {\\n animation: cursor-blink 1s step-end infinite;\\n }\\n\\n :global([dir='rtl']) &[data-focused='true'] {\\n animation: cursor-blink-rtl 1s step-end infinite;\\n }\\n}\\n\\n// Shared rules for dimming read-only separators (/, -, etc.) adjacent to\\n// unfilled placeholders so they don't look \\\"active\\\" before the user starts typing.\\n%readonlyPlaceholderDimming {\\n [data-readonly]:has(+ [data-placeholder]) {\\n color: theme.$text-disabled;\\n }\\n\\n [data-placeholder] + [data-readonly] {\\n color: theme.$text-disabled;\\n }\\n}\\n\\n// Use physical `border-right`/`border-left` rather than logical `border-inline-end`:\\n// a PostCSS plugin in the build pipeline incorrectly hoists `border-inline-end`\\n// out of @keyframes and re-emits it as a static `border-right` on selectors that\\n// reference the animation, which produced a permanent vertical line on the\\n// date input wrappers in LTR contexts.\\n@keyframes cursor-blink {\\n from,\\n to {\\n border-right: 1px solid transparent;\\n }\\n 50% {\\n border-right: 1px solid currentColor;\\n }\\n}\\n\\n@keyframes cursor-blink-rtl {\\n from,\\n to {\\n border-left: 1px solid transparent;\\n }\\n 50% {\\n border-left: 1px solid currentColor;\\n }\\n}\\n\\n// Single date picker input\\n.inputWrapper {\\n inline-size: 15rem;\\n margin-left: layout.$spacing-05;\\n min-width: layout.$spacing-13;\\n max-width: 15rem;\\n\\n & .inputSegment {\\n @extend %inputSegmentStyles;\\n }\\n\\n @extend %readonlyPlaceholderDimming;\\n}\\n\\n.inputWrapperMd {\\n block-size: layout.$spacing-08;\\n}\\n\\n.inputWrapperSm {\\n block-size: layout.$spacing-07;\\n}\\n\\n.inputWrapperLg {\\n block-size: layout.$spacing-09;\\n}\\n\\n// Range date picker inputs\\n.inputsWrapper {\\n display: flex;\\n min-width: 10rem;\\n max-width: 15rem;\\n margin-inline-start: 1rem;\\n inline-size: 15rem;\\n}\\n\\n.inputsWrapperSm {\\n block-size: layout.$spacing-07;\\n}\\n\\n.inputsWrapperMd {\\n block-size: layout.$spacing-08;\\n}\\n\\n.inputsWrapperLg {\\n block-size: layout.$spacing-09;\\n}\\n\\n.dateInputWrapper {\\n @extend .inputWrapper;\\n min-width: unset;\\n margin: 0px;\\n}\\n\\n.startInput {\\n flex-basis: fit-content;\\n}\\n\\n.endInput {\\n padding-right: unset;\\n}\\n\\n.separator {\\n display: flex;\\n align-items: center;\\n margin-inline: 0.5rem;\\n}\\n\\n.inputGroup:has([data-placeholder]) > .inputsWrapper > .separator > span {\\n color: theme.$text-disabled;\\n}\\n\\n.invalidText {\\n color: theme.$text-error !important;\\n font-size: layout.$spacing-04;\\n font-weight: 400 !important;\\n margin: layout.$spacing-02 0 0;\\n overflow: hidden;\\n}\\n\\n// Used for calendar pop-over\\n@keyframes expand-in {\\n from {\\n opacity: 0;\\n transform: scale(0.93);\\n }\\n\\n to {\\n opacity: 1;\\n transform: scale(1);\\n }\\n}\\n\\n.popover {\\n transform-origin: top center;\\n}\\n\\n// When the popover flips above the trigger (near bottom of viewport), anchor from the bottom\\n.popover[data-placement='top'],\\n.popover[data-placement='top-start'],\\n.popover[data-placement='top-end'] {\\n transform-origin: bottom center;\\n}\\n\\n.popover[data-entering] {\\n animation: expand-in motion.$duration-fast-02 motion.motion(entrance, productive);\\n\\n @media screen and (prefers-reduced-motion: reduce) {\\n animation: none;\\n }\\n}\\n\\n.dialog {\\n @include box-shadow.box-shadow;\\n background-color: theme.$layer-01;\\n overflow: hidden;\\n padding: layout.$spacing-02 layout.$spacing-02 layout.$spacing-03 layout.$spacing-02;\\n}\\n\\n// Navigation header (prev/next buttons + month/year display)\\n.header {\\n margin-top: layout.$spacing-03;\\n margin-bottom: layout.$spacing-03;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: nowrap;\\n justify-content: space-between;\\n}\\n\\n.flatButton {\\n @include component-reset.reset;\\n\\n & {\\n background-color: inherit;\\n display: inline-flex;\\n }\\n\\n &:hover:not(:disabled) {\\n background-color: theme.$layer-hover;\\n }\\n\\n &:disabled > svg {\\n fill: theme.$text-disabled;\\n }\\n\\n & > svg {\\n display: block;\\n margin: auto;\\n text-align: center;\\n }\\n}\\n\\n[data-invalid] > .flatButton > svg {\\n --omrs-icon-fill: #{theme.$support-error};\\n}\\n\\n.flatButtonMd {\\n height: layout.$spacing-08;\\n width: layout.$spacing-08;\\n}\\n\\n.flatButtonSm {\\n height: layout.$spacing-07;\\n width: layout.$spacing-07;\\n}\\n\\n.flatButtonLg {\\n height: layout.$spacing-09;\\n width: layout.$spacing-09;\\n}\\n\\n.monthYear {\\n @include component-reset.reset;\\n @include type.type-style('heading-compact-01');\\n\\n & {\\n margin-top: layout.$spacing-03;\\n margin-block-end: layout.$spacing-01;\\n text-align: center;\\n }\\n\\n & > span {\\n margin-left: layout.$spacing-02;\\n margin-right: layout.$spacing-02;\\n }\\n\\n & div:has(input[inputmode='numeric']) {\\n display: inline;\\n\\n & > input[inputmode='numeric'] {\\n @include component-reset.reset;\\n @include type.type-style('heading-compact-01');\\n\\n & {\\n background-color: var(--cds-field);\\n inline-size: layout.$spacing-08;\\n padding: layout.$spacing-02;\\n padding-right: 0;\\n }\\n\\n &::-webkit-outer-spin-button,\\n &::-webkit-inner-spin-button {\\n margin: 0;\\n -webkit-appearance: none;\\n }\\n\\n &:focus {\\n @include focus.focus-outline('border');\\n }\\n\\n &[data-invalid] {\\n @include focus.focus-outline('invalid');\\n }\\n\\n &[data-disabled],\\n &[data-disabled]:hover {\\n background-color: theme.$layer-01;\\n color: theme.$text-disabled;\\n pointer-events: none;\\n }\\n\\n &[data-disabled] + div > button::after {\\n border-block-end-color: theme.$text-disabled;\\n border-block-start-color: theme.$text-disabled;\\n }\\n\\n &[data-disabled] + div > button:hover {\\n opacity: 0;\\n }\\n }\\n\\n & div[role='group'] {\\n @include component-reset.reset;\\n\\n & {\\n display: inline;\\n position: relative;\\n }\\n }\\n\\n &:hover button {\\n opacity: 1;\\n }\\n\\n & button {\\n @include component-reset.reset;\\n\\n & {\\n position: absolute;\\n padding-block: 0;\\n padding-inline-start: layout.$spacing-01;\\n padding-inline-end: layout.$spacing-02;\\n border: none;\\n block-size: 50%;\\n cursor: pointer;\\n inline-size: layout.$spacing-04;\\n inset-inline-start: layout.$spacing-08;\\n line-height: 50%;\\n opacity: 0;\\n }\\n\\n &::after {\\n display: block;\\n border-inline-end: layout.$spacing-02 solid transparent;\\n border-inline-start: layout.$spacing-02 solid transparent;\\n content: '';\\n inset-block-start: 33%;\\n }\\n\\n &:hover::after {\\n border-block-end-color: button.$button-primary;\\n border-block-start-color: button.$button-primary;\\n }\\n\\n &:active::after {\\n border-block-end-color: theme.$border-interactive;\\n border-block-start-color: theme.$border-interactive;\\n }\\n\\n &[slot='increment'] {\\n top: 0;\\n left: 0;\\n }\\n\\n &[slot='decrement'] {\\n top: layout.$spacing-04;\\n left: 0;\\n }\\n }\\n }\\n}\\n\\n// Calendar grid and day cells\\n\\n.calendarGrid {\\n width: 17rem;\\n\\n & tr,\\n & tr > th,\\n & tr > td {\\n height: 2.428rem;\\n width: 2.428rem;\\n }\\n\\n & > thead > tr > th {\\n @include type.type-style('body-compact-01');\\n cursor: default;\\n text-align: center;\\n vertical-align: middle;\\n }\\n\\n & > tbody > tr > td {\\n @include type.type-style('body-compact-01');\\n cursor: pointer;\\n text-align: center;\\n vertical-align: middle;\\n\\n & > div {\\n outline: unset;\\n }\\n\\n &:hover:not(:has([aria-disabled], [data-selected])) {\\n background-color: theme.$layer-hover;\\n }\\n\\n &:has([data-selected]) {\\n background-color: $color-blue-60-2;\\n color: $ui-background;\\n }\\n\\n &[aria-disabled] {\\n color: theme.$text-disabled;\\n cursor: default;\\n }\\n }\\n}\\n\\n.today:not([data-selected]) {\\n position: relative;\\n color: $color-blue-60-2;\\n font-weight: 600;\\n font-size: var(--cds-body-compact-01-font-size, 0.875rem);\\n line-height: var(--cds-body-compact-01-line-height, 1.28572);\\n letter-spacing: var(--cds-body-compact-01-letter-spacing, 0.16px);\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n block-size: layout.$spacing-08;\\n cursor: pointer;\\n inline-size: layout.$spacing-08;\\n\\n &::after {\\n position: absolute;\\n display: block;\\n block-size: layout.$spacing-02;\\n content: '';\\n inline-size: layout.$spacing-02;\\n inset-block-end: 0.4375rem;\\n inset-inline-start: 50%;\\n -webkit-transform: translateX(-50%);\\n transform: translateX(-50%);\\n }\\n\\n &[data-disabled]::after {\\n background-color: theme.$text-disabled;\\n }\\n\\n &:not([data-disabled])::after {\\n background-color: var(--cds-link-primary, theme.$link-primary);\\n }\\n}\\n\\n// RTL overrides\\n:global([dir='rtl']) {\\n .inputWrapper {\\n padding-left: unset;\\n padding-right: layout.$spacing-04;\\n }\\n\\n .endInput {\\n padding-right: 0;\\n }\\n\\n .monthYear {\\n & div:has(input[inputmode='numeric']) {\\n > input[inputmode='numeric'] {\\n padding-right: layout.$spacing-02;\\n }\\n }\\n\\n & button {\\n &[slot='increment'] {\\n top: 0;\\n left: unset;\\n right: 0;\\n }\\n\\n &[slot='decrement'] {\\n top: layout.$spacing-04;\\n left: unset;\\n right: 0;\\n }\\n }\\n }\\n}\\n\",\"//\\n// Copyright IBM Corp. 2021\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use '../theme';\\n\\n/// Adds outline styles depending on specific type\\n/// @access public\\n/// @param {String} $type ['border'] - Type of outline from: `border`, `blurred`, `outline`, `invalid`, `reset`\\n/// @example @include focus-outline('outline');\\n/// @group utilities\\n@mixin focus-outline($type: 'border') {\\n @if ($type == 'border') {\\n outline: 1px solid theme.$focus;\\n\\n @media screen and (prefers-contrast) {\\n outline-style: dotted;\\n }\\n }\\n\\n @if ($type == 'blurred') {\\n box-shadow: 0 0 0 3px theme.$focus;\\n outline: 1px solid transparent;\\n }\\n\\n @if ($type == 'outline') {\\n outline: 2px solid theme.$focus;\\n outline-offset: -2px;\\n\\n @media screen and (prefers-contrast) {\\n outline-style: dotted;\\n }\\n }\\n\\n @if ($type == 'outline-compat') {\\n box-sizing: border-box;\\n border: 2px solid theme.$focus;\\n\\n @media screen and (prefers-contrast) {\\n border-style: dotted;\\n }\\n }\\n\\n @if ($type == 'invalid') {\\n outline: 2px solid theme.$support-error;\\n outline-offset: -2px;\\n\\n @media screen and (prefers-contrast) {\\n outline-style: dotted;\\n }\\n }\\n\\n @if ($type == 'reset') {\\n outline: 2px solid transparent;\\n outline-offset: -2px;\\n }\\n}\\n\",\"// Code generated by @carbon/themes. DO NOT EDIT.\\n//\\n// Copyright IBM Corp. 2018, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use 'sass:map';\\n@use '../config';\\n@use '../theme';\\n\\n/// Internal helper for generating CSS Custom Properties\\n@function _get($token) {\\n @if config.$use-fallback-value == false {\\n @return var(--#{config.$prefix}-#{$token});\\n } @else {\\n @return var(--#{config.$prefix}-#{$token}, #{theme.get($token)});\\n }\\n}\\n\\n/// The CSS Custom Property for the `background` token\\n$background: _get('background') !default;\\n\\n/// The CSS Custom Property for the `background-active` token\\n$background-active: _get('background-active') !default;\\n\\n/// The CSS Custom Property for the `background-selected` token\\n$background-selected: _get('background-selected') !default;\\n\\n/// The CSS Custom Property for the `background-selected-hover` token\\n$background-selected-hover: _get('background-selected-hover') !default;\\n\\n/// The CSS Custom Property for the `background-hover` token\\n$background-hover: _get('background-hover') !default;\\n\\n/// The CSS Custom Property for the `background-brand` token\\n$background-brand: _get('background-brand') !default;\\n\\n/// The CSS Custom Property for the `background-inverse` token\\n$background-inverse: _get('background-inverse') !default;\\n\\n/// The CSS Custom Property for the `background-inverse-hover` token\\n$background-inverse-hover: _get('background-inverse-hover') !default;\\n\\n/// The CSS Custom Property for the `layer-01` token\\n$layer-01: _get('layer-01') !default;\\n\\n/// The CSS Custom Property for the `layer-active-01` token\\n$layer-active-01: _get('layer-active-01') !default;\\n\\n/// The CSS Custom Property for the `layer-background-01` token\\n$layer-background-01: _get('layer-background-01') !default;\\n\\n/// The CSS Custom Property for the `layer-hover-01` token\\n$layer-hover-01: _get('layer-hover-01') !default;\\n\\n/// The CSS Custom Property for the `layer-selected-01` token\\n$layer-selected-01: _get('layer-selected-01') !default;\\n\\n/// The CSS Custom Property for the `layer-selected-hover-01` token\\n$layer-selected-hover-01: _get('layer-selected-hover-01') !default;\\n\\n/// The CSS Custom Property for the `layer-02` token\\n$layer-02: _get('layer-02') !default;\\n\\n/// The CSS Custom Property for the `layer-active-02` token\\n$layer-active-02: _get('layer-active-02') !default;\\n\\n/// The CSS Custom Property for the `layer-background-02` token\\n$layer-background-02: _get('layer-background-02') !default;\\n\\n/// The CSS Custom Property for the `layer-hover-02` token\\n$layer-hover-02: _get('layer-hover-02') !default;\\n\\n/// The CSS Custom Property for the `layer-selected-02` token\\n$layer-selected-02: _get('layer-selected-02') !default;\\n\\n/// The CSS Custom Property for the `layer-selected-hover-02` token\\n$layer-selected-hover-02: _get('layer-selected-hover-02') !default;\\n\\n/// The CSS Custom Property for the `layer-03` token\\n$layer-03: _get('layer-03') !default;\\n\\n/// The CSS Custom Property for the `layer-active-03` token\\n$layer-active-03: _get('layer-active-03') !default;\\n\\n/// The CSS Custom Property for the `layer-background-03` token\\n$layer-background-03: _get('layer-background-03') !default;\\n\\n/// The CSS Custom Property for the `layer-hover-03` token\\n$layer-hover-03: _get('layer-hover-03') !default;\\n\\n/// The CSS Custom Property for the `layer-selected-03` token\\n$layer-selected-03: _get('layer-selected-03') !default;\\n\\n/// The CSS Custom Property for the `layer-selected-hover-03` token\\n$layer-selected-hover-03: _get('layer-selected-hover-03') !default;\\n\\n/// The CSS Custom Property for the `layer-selected-inverse` token\\n$layer-selected-inverse: _get('layer-selected-inverse') !default;\\n\\n/// The CSS Custom Property for the `layer-selected-disabled` token\\n$layer-selected-disabled: _get('layer-selected-disabled') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-01` token\\n$layer-accent-01: _get('layer-accent-01') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-active-01` token\\n$layer-accent-active-01: _get('layer-accent-active-01') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-hover-01` token\\n$layer-accent-hover-01: _get('layer-accent-hover-01') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-02` token\\n$layer-accent-02: _get('layer-accent-02') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-active-02` token\\n$layer-accent-active-02: _get('layer-accent-active-02') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-hover-02` token\\n$layer-accent-hover-02: _get('layer-accent-hover-02') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-03` token\\n$layer-accent-03: _get('layer-accent-03') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-active-03` token\\n$layer-accent-active-03: _get('layer-accent-active-03') !default;\\n\\n/// The CSS Custom Property for the `layer-accent-hover-03` token\\n$layer-accent-hover-03: _get('layer-accent-hover-03') !default;\\n\\n/// The CSS Custom Property for the `field-01` token\\n$field-01: _get('field-01') !default;\\n\\n/// The CSS Custom Property for the `field-hover-01` token\\n$field-hover-01: _get('field-hover-01') !default;\\n\\n/// The CSS Custom Property for the `field-02` token\\n$field-02: _get('field-02') !default;\\n\\n/// The CSS Custom Property for the `field-hover-02` token\\n$field-hover-02: _get('field-hover-02') !default;\\n\\n/// The CSS Custom Property for the `field-03` token\\n$field-03: _get('field-03') !default;\\n\\n/// The CSS Custom Property for the `field-hover-03` token\\n$field-hover-03: _get('field-hover-03') !default;\\n\\n/// The CSS Custom Property for the `interactive` token\\n$interactive: _get('interactive') !default;\\n\\n/// The CSS Custom Property for the `border-subtle-00` token\\n$border-subtle-00: _get('border-subtle-00') !default;\\n\\n/// The CSS Custom Property for the `border-subtle-01` token\\n$border-subtle-01: _get('border-subtle-01') !default;\\n\\n/// The CSS Custom Property for the `border-subtle-selected-01` token\\n$border-subtle-selected-01: _get('border-subtle-selected-01') !default;\\n\\n/// The CSS Custom Property for the `border-subtle-02` token\\n$border-subtle-02: _get('border-subtle-02') !default;\\n\\n/// The CSS Custom Property for the `border-subtle-selected-02` token\\n$border-subtle-selected-02: _get('border-subtle-selected-02') !default;\\n\\n/// The CSS Custom Property for the `border-subtle-03` token\\n$border-subtle-03: _get('border-subtle-03') !default;\\n\\n/// The CSS Custom Property for the `border-subtle-selected-03` token\\n$border-subtle-selected-03: _get('border-subtle-selected-03') !default;\\n\\n/// The CSS Custom Property for the `border-strong-01` token\\n$border-strong-01: _get('border-strong-01') !default;\\n\\n/// The CSS Custom Property for the `border-strong-02` token\\n$border-strong-02: _get('border-strong-02') !default;\\n\\n/// The CSS Custom Property for the `border-strong-03` token\\n$border-strong-03: _get('border-strong-03') !default;\\n\\n/// The CSS Custom Property for the `border-tile-01` token\\n$border-tile-01: _get('border-tile-01') !default;\\n\\n/// The CSS Custom Property for the `border-tile-02` token\\n$border-tile-02: _get('border-tile-02') !default;\\n\\n/// The CSS Custom Property for the `border-tile-03` token\\n$border-tile-03: _get('border-tile-03') !default;\\n\\n/// The CSS Custom Property for the `border-inverse` token\\n$border-inverse: _get('border-inverse') !default;\\n\\n/// The CSS Custom Property for the `border-interactive` token\\n$border-interactive: _get('border-interactive') !default;\\n\\n/// The CSS Custom Property for the `border-disabled` token\\n$border-disabled: _get('border-disabled') !default;\\n\\n/// The CSS Custom Property for the `text-primary` token\\n$text-primary: _get('text-primary') !default;\\n\\n/// The CSS Custom Property for the `text-secondary` token\\n$text-secondary: _get('text-secondary') !default;\\n\\n/// The CSS Custom Property for the `text-placeholder` token\\n$text-placeholder: _get('text-placeholder') !default;\\n\\n/// The CSS Custom Property for the `text-helper` token\\n$text-helper: _get('text-helper') !default;\\n\\n/// The CSS Custom Property for the `text-error` token\\n$text-error: _get('text-error') !default;\\n\\n/// The CSS Custom Property for the `text-inverse` token\\n$text-inverse: _get('text-inverse') !default;\\n\\n/// The CSS Custom Property for the `text-on-color` token\\n$text-on-color: _get('text-on-color') !default;\\n\\n/// The CSS Custom Property for the `text-on-color-disabled` token\\n$text-on-color-disabled: _get('text-on-color-disabled') !default;\\n\\n/// The CSS Custom Property for the `text-disabled` token\\n$text-disabled: _get('text-disabled') !default;\\n\\n/// The CSS Custom Property for the `link-primary` token\\n$link-primary: _get('link-primary') !default;\\n\\n/// The CSS Custom Property for the `link-primary-hover` token\\n$link-primary-hover: _get('link-primary-hover') !default;\\n\\n/// The CSS Custom Property for the `link-secondary` token\\n$link-secondary: _get('link-secondary') !default;\\n\\n/// The CSS Custom Property for the `link-inverse-visited` token\\n$link-inverse-visited: _get('link-inverse-visited') !default;\\n\\n/// The CSS Custom Property for the `link-visited` token\\n$link-visited: _get('link-visited') !default;\\n\\n/// The CSS Custom Property for the `link-inverse` token\\n$link-inverse: _get('link-inverse') !default;\\n\\n/// The CSS Custom Property for the `link-inverse-active` token\\n$link-inverse-active: _get('link-inverse-active') !default;\\n\\n/// The CSS Custom Property for the `link-inverse-hover` token\\n$link-inverse-hover: _get('link-inverse-hover') !default;\\n\\n/// The CSS Custom Property for the `icon-primary` token\\n$icon-primary: _get('icon-primary') !default;\\n\\n/// The CSS Custom Property for the `icon-secondary` token\\n$icon-secondary: _get('icon-secondary') !default;\\n\\n/// The CSS Custom Property for the `icon-inverse` token\\n$icon-inverse: _get('icon-inverse') !default;\\n\\n/// The CSS Custom Property for the `icon-on-color` token\\n$icon-on-color: _get('icon-on-color') !default;\\n\\n/// The CSS Custom Property for the `icon-on-color-disabled` token\\n$icon-on-color-disabled: _get('icon-on-color-disabled') !default;\\n\\n/// The CSS Custom Property for the `icon-disabled` token\\n$icon-disabled: _get('icon-disabled') !default;\\n\\n/// The CSS Custom Property for the `icon-interactive` token\\n$icon-interactive: _get('icon-interactive') !default;\\n\\n/// The CSS Custom Property for the `support-error` token\\n$support-error: _get('support-error') !default;\\n\\n/// The CSS Custom Property for the `support-success` token\\n$support-success: _get('support-success') !default;\\n\\n/// The CSS Custom Property for the `support-warning` token\\n$support-warning: _get('support-warning') !default;\\n\\n/// The CSS Custom Property for the `support-info` token\\n$support-info: _get('support-info') !default;\\n\\n/// The CSS Custom Property for the `support-error-inverse` token\\n$support-error-inverse: _get('support-error-inverse') !default;\\n\\n/// The CSS Custom Property for the `support-success-inverse` token\\n$support-success-inverse: _get('support-success-inverse') !default;\\n\\n/// The CSS Custom Property for the `support-warning-inverse` token\\n$support-warning-inverse: _get('support-warning-inverse') !default;\\n\\n/// The CSS Custom Property for the `support-info-inverse` token\\n$support-info-inverse: _get('support-info-inverse') !default;\\n\\n/// The CSS Custom Property for the `support-caution-major` token\\n$support-caution-major: _get('support-caution-major') !default;\\n\\n/// The CSS Custom Property for the `support-caution-minor` token\\n$support-caution-minor: _get('support-caution-minor') !default;\\n\\n/// The CSS Custom Property for the `support-caution-undefined` token\\n$support-caution-undefined: _get('support-caution-undefined') !default;\\n\\n/// The CSS Custom Property for the `ai-popover-background` token\\n$ai-popover-background: _get('ai-popover-background') !default;\\n\\n/// The CSS Custom Property for the `ai-popover-shadow-outer-01` token\\n$ai-popover-shadow-outer-01: _get('ai-popover-shadow-outer-01') !default;\\n\\n/// The CSS Custom Property for the `ai-popover-shadow-outer-02` token\\n$ai-popover-shadow-outer-02: _get('ai-popover-shadow-outer-02') !default;\\n\\n/// The CSS Custom Property for the `ai-inner-shadow` token\\n$ai-inner-shadow: _get('ai-inner-shadow') !default;\\n\\n/// The CSS Custom Property for the `ai-aura-start-sm` token\\n$ai-aura-start-sm: _get('ai-aura-start-sm') !default;\\n\\n/// The CSS Custom Property for the `ai-aura-start` token\\n$ai-aura-start: _get('ai-aura-start') !default;\\n\\n/// The CSS Custom Property for the `ai-aura-end` token\\n$ai-aura-end: _get('ai-aura-end') !default;\\n\\n/// The CSS Custom Property for the `ai-aura-hover-background` token\\n$ai-aura-hover-background: _get('ai-aura-hover-background') !default;\\n\\n/// The CSS Custom Property for the `ai-aura-hover-start` token\\n$ai-aura-hover-start: _get('ai-aura-hover-start') !default;\\n\\n/// The CSS Custom Property for the `ai-aura-hover-end` token\\n$ai-aura-hover-end: _get('ai-aura-hover-end') !default;\\n\\n/// The CSS Custom Property for the `ai-border-strong` token\\n$ai-border-strong: _get('ai-border-strong') !default;\\n\\n/// The CSS Custom Property for the `ai-border-start` token\\n$ai-border-start: _get('ai-border-start') !default;\\n\\n/// The CSS Custom Property for the `ai-border-end` token\\n$ai-border-end: _get('ai-border-end') !default;\\n\\n/// The CSS Custom Property for the `ai-drop-shadow` token\\n$ai-drop-shadow: _get('ai-drop-shadow') !default;\\n\\n/// The CSS Custom Property for the `ai-skeleton-background` token\\n$ai-skeleton-background: _get('ai-skeleton-background') !default;\\n\\n/// The CSS Custom Property for the `ai-skeleton-element-background` token\\n$ai-skeleton-element-background: _get(\\n 'ai-skeleton-element-background'\\n) !default;\\n\\n/// The CSS Custom Property for the `ai-overlay` token\\n$ai-overlay: _get('ai-overlay') !default;\\n\\n/// The CSS Custom Property for the `ai-popover-caret-center` token\\n$ai-popover-caret-center: _get('ai-popover-caret-center') !default;\\n\\n/// The CSS Custom Property for the `ai-popover-caret-bottom` token\\n$ai-popover-caret-bottom: _get('ai-popover-caret-bottom') !default;\\n\\n/// The CSS Custom Property for the `ai-popover-caret-bottom-background` token\\n$ai-popover-caret-bottom-background: _get(\\n 'ai-popover-caret-bottom-background'\\n) !default;\\n\\n/// The CSS Custom Property for the `ai-popover-caret-bottom-background-actions` token\\n$ai-popover-caret-bottom-background-actions: _get(\\n 'ai-popover-caret-bottom-background-actions'\\n) !default;\\n\\n/// The CSS Custom Property for the `chat-prompt-background` token\\n$chat-prompt-background: _get('chat-prompt-background') !default;\\n\\n/// The CSS Custom Property for the `chat-prompt-border-start` token\\n$chat-prompt-border-start: _get('chat-prompt-border-start') !default;\\n\\n/// The CSS Custom Property for the `chat-prompt-border-end` token\\n$chat-prompt-border-end: _get('chat-prompt-border-end') !default;\\n\\n/// The CSS Custom Property for the `chat-bubble-user` token\\n$chat-bubble-user: _get('chat-bubble-user') !default;\\n\\n/// The CSS Custom Property for the `chat-bubble-agent` token\\n$chat-bubble-agent: _get('chat-bubble-agent') !default;\\n\\n/// The CSS Custom Property for the `chat-bubble-border` token\\n$chat-bubble-border: _get('chat-bubble-border') !default;\\n\\n/// The CSS Custom Property for the `chat-avatar-bot` token\\n$chat-avatar-bot: _get('chat-avatar-bot') !default;\\n\\n/// The CSS Custom Property for the `chat-avatar-agent` token\\n$chat-avatar-agent: _get('chat-avatar-agent') !default;\\n\\n/// The CSS Custom Property for the `chat-avatar-user` token\\n$chat-avatar-user: _get('chat-avatar-user') !default;\\n\\n/// The CSS Custom Property for the `chat-shell-background` token\\n$chat-shell-background: _get('chat-shell-background') !default;\\n\\n/// The CSS Custom Property for the `chat-header-background` token\\n$chat-header-background: _get('chat-header-background') !default;\\n\\n/// The CSS Custom Property for the `chat-button` token\\n$chat-button: _get('chat-button') !default;\\n\\n/// The CSS Custom Property for the `chat-button-hover` token\\n$chat-button-hover: _get('chat-button-hover') !default;\\n\\n/// The CSS Custom Property for the `chat-button-text-hover` token\\n$chat-button-text-hover: _get('chat-button-text-hover') !default;\\n\\n/// The CSS Custom Property for the `chat-button-active` token\\n$chat-button-active: _get('chat-button-active') !default;\\n\\n/// The CSS Custom Property for the `chat-button-selected` token\\n$chat-button-selected: _get('chat-button-selected') !default;\\n\\n/// The CSS Custom Property for the `chat-button-text-selected` token\\n$chat-button-text-selected: _get('chat-button-text-selected') !default;\\n\\n/// The CSS Custom Property for the `highlight` token\\n$highlight: _get('highlight') !default;\\n\\n/// The CSS Custom Property for the `overlay` token\\n$overlay: _get('overlay') !default;\\n\\n/// The CSS Custom Property for the `toggle-off` token\\n$toggle-off: _get('toggle-off') !default;\\n\\n/// The CSS Custom Property for the `shadow` token\\n$shadow: _get('shadow') !default;\\n\\n/// The CSS Custom Property for the `focus` token\\n$focus: _get('focus') !default;\\n\\n/// The CSS Custom Property for the `focus-inset` token\\n$focus-inset: _get('focus-inset') !default;\\n\\n/// The CSS Custom Property for the `focus-inverse` token\\n$focus-inverse: _get('focus-inverse') !default;\\n\\n/// The CSS Custom Property for the `skeleton-background` token\\n$skeleton-background: _get('skeleton-background') !default;\\n\\n/// The CSS Custom Property for the `skeleton-element` token\\n$skeleton-element: _get('skeleton-element') !default;\\n\",\"//\\n// Copyright IBM Corp. 2018, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use '../config' as *;\\n@use '@carbon/themes/scss/config' with (\\n $prefix: $prefix\\n);\\n@use '../compat/themes' as compat;\\n@use '../themes';\\n\\n@forward '@carbon/themes/scss/theme' with (\\n $fallback: themes.$white !default,\\n $theme: compat.$white !default\\n);\\n@forward '@carbon/themes/scss/tokens';\\n\\n@use '@carbon/themes/scss/tokens';\\n@use '@carbon/themes/scss/theme';\\n@use '../utilities/custom-property';\\n\\n// Layer sets\\n$layer: custom-property.get-var('layer');\\n$layer-active: custom-property.get-var('layer-active');\\n$layer-background: custom-property.get-var('layer-background');\\n$layer-hover: custom-property.get-var('layer-hover');\\n$layer-selected: custom-property.get-var('layer-selected');\\n$layer-selected-hover: custom-property.get-var('layer-selected-hover');\\n$layer-accent: custom-property.get-var('layer-accent');\\n$layer-accent-hover: custom-property.get-var('layer-accent-hover');\\n$layer-accent-active: custom-property.get-var('layer-accent-active');\\n\\n$field: custom-property.get-var('field');\\n$field-hover: custom-property.get-var('field-hover');\\n\\n$border-subtle: custom-property.get-var('border-subtle');\\n$border-subtle-selected: custom-property.get-var('border-subtle-selected');\\n$border-strong: custom-property.get-var('border-strong');\\n$border-tile: custom-property.get-var('border-tile');\\n\",\"// Code generated by @carbon/layout. DO NOT EDIT.\\n//\\n// Copyright IBM Corp. 2018, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-01: 0.125rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-02: 0.25rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-03: 0.5rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-04: 0.75rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-05: 1rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-06: 1.5rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-07: 2rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-08: 2.5rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-09: 3rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-10: 4rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-11: 5rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-12: 6rem !default;\\n\\n/// @type Number\\n/// @access public\\n/// @group @carbon/layout\\n$spacing-13: 10rem !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/layout\\n$spacing: (\\n spacing-01: $spacing-01,\\n spacing-02: $spacing-02,\\n spacing-03: $spacing-03,\\n spacing-04: $spacing-04,\\n spacing-05: $spacing-05,\\n spacing-06: $spacing-06,\\n spacing-07: $spacing-07,\\n spacing-08: $spacing-08,\\n spacing-09: $spacing-09,\\n spacing-10: $spacing-10,\\n spacing-11: $spacing-11,\\n spacing-12: $spacing-12,\\n spacing-13: $spacing-13,\\n);\\n\",\"//\\n// Copyright IBM Corp. 2021\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use '../theme';\\n\\n/// Adds box shadow\\n/// @access public\\n/// @example @include box-shadow;\\n/// @group utilities\\n@mixin box-shadow {\\n box-shadow: 0 2px 6px theme.$shadow;\\n}\\n\\n@mixin box-shadow-top {\\n box-shadow: 0 -2px 6px theme.$shadow;\\n}\\n\",\"//\\n// Copyright IBM Corp. 2018, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n/// Resets default browser styling\\n/// @access public\\n/// @group utilities\\n@mixin reset {\\n box-sizing: border-box;\\n padding: 0;\\n border: 0;\\n margin: 0;\\n font-family: inherit;\\n font-size: 100%;\\n vertical-align: baseline;\\n\\n *,\\n *::before,\\n *::after {\\n box-sizing: inherit;\\n }\\n}\\n\",\"//\\n// Copyright IBM Corp. 2018, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n// stylelint-disable number-max-precision\\n\\n@use 'sass:map';\\n@use 'sass:math';\\n@use '@carbon/grid/scss/config' as gridconfig;\\n@use '@carbon/grid/scss/breakpoint' as grid;\\n@use 'prefix' as *;\\n@use 'font-family';\\n@use 'scale';\\n\\n/// @type Map\\n/// @access public\\n/// @deprecated\\n/// @group @carbon/type\\n$caption-01: (\\n font-size: scale.type-scale(1),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.33333,\\n letter-spacing: 0.32px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @deprecated\\n/// @group @carbon/type\\n$caption-02: (\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.28572,\\n letter-spacing: 0.32px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$label-01: (\\n font-size: scale.type-scale(1),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.33333,\\n letter-spacing: 0.32px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$label-02: (\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.28572,\\n letter-spacing: 0.16px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$legal-01: (\\n font-size: scale.type-scale(1),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.33333,\\n letter-spacing: 0.32px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$legal-02: (\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.28572,\\n letter-spacing: 0.16px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @deprecated\\n/// @group @carbon/type\\n$helper-text-01: (\\n font-size: scale.type-scale(1),\\n line-height: 1.33333,\\n letter-spacing: 0.32px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @deprecated\\n/// @group @carbon/type\\n$helper-text-02: (\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.28572,\\n letter-spacing: 0.16px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$body-short-01: (\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.28572,\\n letter-spacing: 0.16px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$body-compact-01: $body-short-01 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$body-long-01: (\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.42857,\\n letter-spacing: 0.16px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$body-01: $body-long-01 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$body-short-02: (\\n font-size: scale.type-scale(3),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.375,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$body-compact-02: $body-short-02 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$body-long-02: (\\n font-size: scale.type-scale(3),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.5,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$body-02: $body-long-02 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$code-01: (\\n font-family: font-family.font-family('mono'),\\n font-size: scale.type-scale(1),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.33333,\\n letter-spacing: 0.32px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$code-02: (\\n font-family: font-family.font-family('mono'),\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.42857,\\n letter-spacing: 0.32px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-01: (\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('semibold'),\\n line-height: 1.42857,\\n letter-spacing: 0.16px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$productive-heading-01: (\\n font-size: scale.type-scale(2),\\n font-weight: font-family.font-weight('semibold'),\\n line-height: 1.28572,\\n letter-spacing: 0.16px,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-compact-01: $productive-heading-01 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-02: (\\n font-size: scale.type-scale(3),\\n font-weight: font-family.font-weight('semibold'),\\n line-height: 1.5,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$productive-heading-02: (\\n font-size: scale.type-scale(3),\\n font-weight: font-family.font-weight('semibold'),\\n line-height: 1.375,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-compact-02: $productive-heading-02 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$productive-heading-03: (\\n font-size: scale.type-scale(5),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.4,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-03: $productive-heading-03 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$productive-heading-04: (\\n font-size: scale.type-scale(7),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.28572,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-04: $productive-heading-04 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$productive-heading-05: (\\n font-size: scale.type-scale(8),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.25,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-05: $productive-heading-05 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$productive-heading-06: (\\n font-size: scale.type-scale(10),\\n font-weight: font-family.font-weight('light'),\\n // Extra digit needed for precision in Chrome\\n line-height: 1.199,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-06: $productive-heading-06 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$productive-heading-07: (\\n font-size: scale.type-scale(12),\\n font-weight: font-family.font-weight('light'),\\n line-height: 1.19,\\n letter-spacing: 0,\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$heading-07: $productive-heading-07 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$expressive-heading-01: $heading-01 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$expressive-heading-02: $heading-02 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$expressive-heading-03: (\\n font-size: scale.type-scale(5),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.4,\\n letter-spacing: 0,\\n breakpoints: (\\n xlg: (\\n font-size: scale.type-scale(5),\\n line-height: 1.4,\\n ),\\n max: (\\n font-size: scale.type-scale(6),\\n line-height: 1.334,\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-heading-03: $expressive-heading-03 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$expressive-heading-04: (\\n font-size: scale.type-scale(7),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.28572,\\n letter-spacing: 0,\\n breakpoints: (\\n xlg: (\\n font-size: scale.type-scale(8),\\n line-height: 1.25,\\n font-weight: font-family.font-weight('regular'),\\n ),\\n max: (\\n font-size: scale.type-scale(8),\\n font-weight: font-family.font-weight('regular'),\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-heading-04: $expressive-heading-04 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$expressive-heading-05: (\\n font-size: scale.type-scale(8),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.25,\\n letter-spacing: 0,\\n breakpoints: (\\n md: (\\n font-size: scale.type-scale(9),\\n font-weight: font-family.font-weight('light'),\\n line-height: 1.22,\\n ),\\n lg: (\\n font-size: scale.type-scale(10),\\n line-height: 1.19,\\n ),\\n xlg: (\\n font-size: scale.type-scale(11),\\n line-height: 1.17,\\n ),\\n max: (\\n font-size: scale.type-scale(13),\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-heading-05: $expressive-heading-05 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$expressive-heading-06: (\\n font-size: scale.type-scale(8),\\n font-weight: font-family.font-weight('semibold'),\\n line-height: 1.25,\\n letter-spacing: 0,\\n breakpoints: (\\n md: (\\n font-size: scale.type-scale(9),\\n line-height: 1.22,\\n ),\\n lg: (\\n font-size: scale.type-scale(10),\\n line-height: 1.19,\\n ),\\n xlg: (\\n font-size: scale.type-scale(11),\\n line-height: 1.17,\\n ),\\n max: (\\n font-size: scale.type-scale(13),\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-heading-06: $expressive-heading-06 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$expressive-paragraph-01: (\\n font-size: scale.type-scale(6),\\n font-weight: font-family.font-weight('light'),\\n line-height: 1.334,\\n letter-spacing: 0,\\n breakpoints: (\\n lg: (\\n font-size: scale.type-scale(7),\\n line-height: 1.28572,\\n ),\\n max: (\\n font-size: scale.type-scale(8),\\n line-height: 1.25,\\n ),\\n ),\\n);\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-paragraph-01: $expressive-paragraph-01 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$quotation-01: (\\n font-family: font-family.font-family('serif'),\\n font-size: scale.type-scale(5),\\n font-weight: font-family.font-weight('regular'),\\n line-height: 1.3,\\n letter-spacing: 0,\\n breakpoints: (\\n md: (\\n font-size: scale.type-scale(5),\\n ),\\n lg: (\\n font-size: scale.type-scale(6),\\n line-height: 1.334,\\n ),\\n xlg: (\\n font-size: scale.type-scale(7),\\n line-height: 1.28572,\\n ),\\n max: (\\n font-size: scale.type-scale(8),\\n line-height: 1.25,\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-quotation-01: $quotation-01 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$quotation-02: (\\n font-family: font-family.font-family('serif'),\\n font-size: scale.type-scale(8),\\n font-weight: font-family.font-weight('light'),\\n line-height: 1.25,\\n letter-spacing: 0,\\n breakpoints: (\\n md: (\\n font-size: scale.type-scale(9),\\n line-height: 1.22,\\n ),\\n lg: (\\n font-size: scale.type-scale(10),\\n line-height: 1.19,\\n ),\\n xlg: (\\n font-size: scale.type-scale(11),\\n line-height: 1.17,\\n ),\\n max: (\\n font-size: scale.type-scale(13),\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-quotation-02: $quotation-02 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$display-01: (\\n font-size: scale.type-scale(10),\\n font-weight: font-family.font-weight('light'),\\n line-height: 1.19,\\n letter-spacing: 0,\\n breakpoints: (\\n md: (\\n font-size: scale.type-scale(10),\\n ),\\n lg: (\\n font-size: scale.type-scale(12),\\n ),\\n xlg: (\\n font-size: scale.type-scale(13),\\n line-height: 1.17,\\n ),\\n max: (\\n font-size: scale.type-scale(15),\\n line-height: 1.13,\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-display-01: $display-01 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$display-02: (\\n font-size: scale.type-scale(10),\\n font-weight: font-family.font-weight('semibold'),\\n line-height: 1.19,\\n letter-spacing: 0,\\n breakpoints: (\\n md: (\\n font-size: scale.type-scale(10),\\n ),\\n lg: (\\n font-size: scale.type-scale(12),\\n ),\\n xlg: (\\n font-size: scale.type-scale(13),\\n line-height: 1.16,\\n ),\\n max: (\\n font-size: scale.type-scale(15),\\n line-height: 1.13,\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-display-02: $display-02 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$display-03: (\\n font-size: scale.type-scale(10),\\n font-weight: font-family.font-weight('light'),\\n line-height: 1.19,\\n letter-spacing: 0,\\n breakpoints: (\\n md: (\\n font-size: scale.type-scale(12),\\n line-height: 1.18,\\n ),\\n lg: (\\n font-size: scale.type-scale(13),\\n line-height: 1.16,\\n letter-spacing: -0.64px,\\n ),\\n xlg: (\\n font-size: scale.type-scale(15),\\n line-height: 1.13,\\n letter-spacing: -0.64px,\\n ),\\n max: (\\n font-size: scale.type-scale(16),\\n line-height: 1.11,\\n letter-spacing: -0.96px,\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-display-03: $display-03 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$display-04: (\\n font-size: scale.type-scale(10),\\n font-weight: font-family.font-weight('light'),\\n line-height: 1.19,\\n letter-spacing: 0,\\n breakpoints: (\\n md: (\\n font-size: scale.type-scale(14),\\n line-height: 1.15,\\n ),\\n lg: (\\n font-size: scale.type-scale(17),\\n line-height: 1.11,\\n letter-spacing: -0.64px,\\n ),\\n xlg: (\\n font-size: scale.type-scale(20),\\n line-height: 1.07,\\n letter-spacing: -0.64px,\\n ),\\n max: (\\n font-size: scale.type-scale(23),\\n line-height: 1.05,\\n letter-spacing: -0.96px,\\n ),\\n ),\\n) !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$fluid-display-04: $display-04 !default;\\n\\n/// @type Map\\n/// @access public\\n/// @group @carbon/type\\n$tokens: (\\n caption-01: $caption-01,\\n caption-02: $caption-02,\\n label-01: $label-01,\\n label-02: $label-02,\\n helper-text-01: $helper-text-01,\\n helper-text-02: $helper-text-02,\\n body-short-01: $body-short-01,\\n body-short-02: $body-short-02,\\n body-long-01: $body-long-01,\\n body-long-02: $body-long-02,\\n code-01: $code-01,\\n code-02: $code-02,\\n heading-01: $heading-01,\\n heading-02: $heading-02,\\n productive-heading-01: $productive-heading-01,\\n productive-heading-02: $productive-heading-02,\\n productive-heading-03: $productive-heading-03,\\n productive-heading-04: $productive-heading-04,\\n productive-heading-05: $productive-heading-05,\\n productive-heading-06: $productive-heading-06,\\n productive-heading-07: $productive-heading-07,\\n expressive-paragraph-01: $expressive-paragraph-01,\\n expressive-heading-01: $expressive-heading-01,\\n expressive-heading-02: $expressive-heading-02,\\n expressive-heading-03: $expressive-heading-03,\\n expressive-heading-04: $expressive-heading-04,\\n expressive-heading-05: $expressive-heading-05,\\n expressive-heading-06: $expressive-heading-06,\\n quotation-01: $quotation-01,\\n quotation-02: $quotation-02,\\n display-01: $display-01,\\n display-02: $display-02,\\n display-03: $display-03,\\n display-04: $display-04,\\n // V11 Tokens\\n legal-01: $legal-01,\\n legal-02: $legal-02,\\n body-compact-01: $body-compact-01,\\n body-compact-02: $body-compact-02,\\n heading-compact-01: $heading-compact-01,\\n heading-compact-02: $heading-compact-02,\\n body-01: $body-01,\\n body-02: $body-02,\\n heading-03: $heading-03,\\n heading-04: $heading-04,\\n heading-05: $heading-05,\\n heading-06: $heading-06,\\n heading-07: $heading-07,\\n fluid-heading-03: $fluid-heading-03,\\n fluid-heading-04: $fluid-heading-04,\\n fluid-heading-05: $fluid-heading-05,\\n fluid-heading-06: $fluid-heading-06,\\n fluid-paragraph-01: $fluid-paragraph-01,\\n fluid-quotation-01: $fluid-quotation-01,\\n fluid-quotation-02: $fluid-quotation-02,\\n fluid-display-01: $fluid-display-01,\\n fluid-display-02: $fluid-display-02,\\n fluid-display-03: $fluid-display-03,\\n fluid-display-04: $fluid-display-04,\\n) !default;\\n\\n/// @param {Map} $map\\n/// @access public\\n/// @group @carbon/type\\n@mixin properties($map) {\\n @each $name, $value in $map {\\n #{$name}: $value;\\n }\\n}\\n\\n/// @param {Number} $value - Number with units\\n/// @return {Number} Without units\\n/// @access public\\n/// @group @carbon/type\\n@function strip-unit($value) {\\n @return math.div($value, $value * 0 + 1);\\n}\\n\\n/// This helper includes fluid type styles for the given token value. Fluid type\\n/// means that the `font-size` is computed using `calc()` in order to be\\n/// determined by the screen size instead of a breakpoint. As a result, fluid\\n/// styles should be used with caution in fixed width contexts.\\n///\\n/// In addition, we make use of %-based line-heights so that the line-height of\\n/// each type style is computed correctly due to the dynamic nature of the\\n/// `font-size`.\\n///\\n/// Most of the logic for this work comes from CSS Tricks:\\n/// https://css-tricks.com/snippets/css/fluid-typography/\\n///\\n/// @param {Map} $type-styles - The value of a given type token\\n/// @param {Map} $breakpoints [$grid-breakpoints] - Custom breakpoints to use\\n/// @access public\\n/// @group @carbon/type\\n@mixin fluid-type($type-styles, $breakpoints: gridconfig.$grid-breakpoints) {\\n // Include the initial styles for the given token by default without any\\n // media query guard. This includes `font-size` as a fallback in the case\\n // that a browser does not support `calc()`\\n @include properties(map.remove($type-styles, breakpoints));\\n // We also need to include the `sm` styles by default since they don't\\n // appear in the fluid styles for tokens\\n @include fluid-type-size($type-styles, sm, $breakpoints);\\n\\n // Finally, we need to go through all the breakpoints defined in the type\\n // token and apply the properties and fluid type size for that given\\n // breakpoint\\n @each $name, $values in map.get($type-styles, breakpoints) {\\n @include grid.breakpoint($name) {\\n @include properties($values);\\n @include fluid-type-size($type-styles, $name, $breakpoints);\\n }\\n }\\n}\\n\\n/// Computes the fluid `font-size` for a given type style and breakpoint\\n/// @param {Map} $type-styles - The styles for a given token\\n/// @param {String} $name - The name of the breakpoint to which we apply the fluid\\n/// @param {Map} $breakpoints [$grid-breakpoints] - The breakpoints for the grid system\\n/// @access public\\n/// @group @carbon/type\\n@mixin fluid-type-size(\\n $type-styles,\\n $name,\\n $breakpoints: gridconfig.$grid-breakpoints\\n) {\\n // Get the information about the breakpoint we're currently working in. Useful\\n // for getting initial width information\\n $breakpoint: map.get($breakpoints, $name);\\n\\n // Our fluid styles are captured under the 'breakpoints' property in our type\\n // styles map. These define what values to treat as `max-` variables below\\n $fluid-sizes: map.get($type-styles, breakpoints);\\n $fluid-breakpoint: ();\\n // Special case for `sm` because the styles for small are on the type style\\n // directly\\n @if $name == sm {\\n $fluid-breakpoint: map.remove($type-styles, breakpoints);\\n } @else {\\n $fluid-breakpoint: map.get($fluid-sizes, $name);\\n }\\n\\n // Initialize our font-sizes to the default size for the type style\\n $max-font-size: map.get($type-styles, font-size);\\n $min-font-size: map.get($type-styles, font-size);\\n @if map.has-key($fluid-breakpoint, font-size) {\\n $min-font-size: map.get($fluid-breakpoint, font-size);\\n }\\n\\n // Initialize our min and max width to the width of the current breakpoint\\n $max-vw: map.get($breakpoint, width);\\n $min-vw: map.get($breakpoint, width);\\n\\n // We can use `breakpoint-next` to see if there is another breakpoint we can\\n // use to update `max-font-size` and `max-vw` with larger values\\n $next-breakpoint-available: grid.breakpoint-next($name, $breakpoints);\\n $next-fluid-breakpoint-name: null;\\n\\n // We need to figure out what the next available fluid breakpoint is for our\\n // given $type-styles. In this loop we try and iterate through breakpoints\\n // until we either manually set $next-breakpoint-available to null or\\n // `breakpoint-next` returns null.\\n @while $next-breakpoint-available {\\n @if map.has-key($fluid-sizes, $next-breakpoint-available) {\\n $next-fluid-breakpoint-name: $next-breakpoint-available;\\n $next-breakpoint-available: null;\\n } @else {\\n $next-breakpoint-available: grid.breakpoint-next(\\n $next-breakpoint-available,\\n $breakpoints\\n );\\n }\\n }\\n\\n // If we have found the next available fluid breakpoint name, then we know\\n // that we have values that we can use to set max-font-size and max-vw as both\\n // values derive from the next breakpoint\\n @if $next-fluid-breakpoint-name {\\n $next-fluid-breakpoint: map.get($breakpoints, $next-fluid-breakpoint-name);\\n $max-font-size: map.get(\\n map.get($fluid-sizes, $next-fluid-breakpoint-name),\\n font-size\\n );\\n $max-vw: map.get($next-fluid-breakpoint, width);\\n\\n // prettier-ignore\\n font-size: calc(#{$min-font-size} +\\n #{strip-unit($max-font-size - $min-font-size)} *\\n ((100vw - #{$min-vw}) / #{strip-unit($max-vw - $min-vw)})\\n );\\n } @else {\\n // Otherwise, just default to setting the font size found from the type\\n // style or the given fluid breakpoint in the type style\\n font-size: $min-font-size;\\n }\\n}\\n\\n// TODO move following variable and `custom-property` mixin into shared file for\\n// both `@carbon/type` and `@carbon/themes`\\n\\n/// @access private\\n/// @group @carbon/type\\n@mixin custom-properties($name, $value) {\\n @each $property, $value in $value {\\n #{$property}: var(\\n --#{$custom-property-prefix}-#{$name}-#{$property},\\n #{$value}\\n );\\n }\\n}\\n\\n/// Helper mixin to include the styles for a given token in any selector in your\\n/// project. Also includes an optional fluid option that will enable fluid\\n/// styles for the token if they are defined. Fluid styles will cause the\\n/// token's font-size to be computed based on the viewport size. As a result, use\\n/// with caution in fixed contexts.\\n/// @param {String} $name - The name of the token to get the styles for\\n/// @param {Boolean} $fluid [false] - Specify whether to include fluid styles for the\\n/// @param {Map} $breakpoints [$grid-breakpoints] - Provide a custom breakpoint map to use\\n/// @access public\\n/// @group @carbon/type\\n@mixin type-style(\\n $name,\\n $fluid: false,\\n $breakpoints: gridconfig.$grid-breakpoints\\n) {\\n @if not map.has-key($tokens, $name) {\\n @error 'Unable to find a token with the name: `#{$name}`';\\n }\\n\\n $token: map.get($tokens, $name);\\n\\n // If $fluid is set to true and the token has breakpoints defined for fluid\\n // styles, delegate to the fluid-type helper for the given token\\n @if $fluid == true and map.has-key($token, 'breakpoints') {\\n @include fluid-type($token, $breakpoints);\\n } @else {\\n @include custom-properties($name, $token);\\n }\\n}\\n\",\"//\\n// Copyright IBM Corp. 2018, 2023\\n//\\n// This source code is licensed under the Apache-2.0 license found in the\\n// LICENSE file in the root directory of this source tree.\\n//\\n\\n@use 'sass:map';\\n@use '../../config';\\n@use '../../themes';\\n@use '../../utilities/component-tokens';\\n@use '@carbon/themes/scss/component-tokens' as button;\\n\\n$button-separator: (\\n fallback: map.get(button.$button-separator, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-separator, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-separator, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-separator, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-separator, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-primary: (\\n fallback: map.get(button.$button-primary, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-primary, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-primary, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-primary, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-primary, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-secondary: (\\n fallback: map.get(button.$button-secondary, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-secondary, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-secondary, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-secondary, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-secondary, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-tertiary: (\\n fallback: map.get(button.$button-tertiary, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-tertiary, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-tertiary, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-tertiary, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-tertiary, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-danger-primary: (\\n fallback: map.get(button.$button-danger-primary, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-danger-primary, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-danger-primary, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-danger-primary, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-danger-primary, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-danger-secondary: (\\n fallback: map.get(button.$button-danger-secondary, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-danger-secondary, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-danger-secondary, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-danger-secondary, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-danger-secondary, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-danger-active: (\\n fallback: map.get(button.$button-danger-active, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-danger-active, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-danger-active, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-danger-active, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-danger-active, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-primary-active: (\\n fallback: map.get(button.$button-primary-active, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-primary-active, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-primary-active, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-primary-active, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-primary-active, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-secondary-active: (\\n fallback: map.get(button.$button-secondary-active, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-secondary-active, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-secondary-active, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-secondary-active, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-secondary-active, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-tertiary-active: (\\n fallback: map.get(button.$button-tertiary-active, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-tertiary-active, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-tertiary-active, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-tertiary-active, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-tertiary-active, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-danger-hover: (\\n fallback: map.get(button.$button-danger-hover, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-danger-hover, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-danger-hover, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-danger-hover, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-danger-hover, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-primary-hover: (\\n fallback: map.get(button.$button-primary-hover, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-primary-hover, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-primary-hover, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-primary-hover, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-primary-hover, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-secondary-hover: (\\n fallback: map.get(button.$button-secondary-hover, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-secondary-hover, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-secondary-hover, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-secondary-hover, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-secondary-hover, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-tertiary-hover: (\\n fallback: map.get(button.$button-tertiary-hover, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-tertiary-hover, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-tertiary-hover, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-tertiary-hover, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-tertiary-hover, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-disabled: (\\n fallback: map.get(button.$button-disabled, white-theme),\\n values: (\\n (\\n theme: themes.$white,\\n value: map.get(button.$button-disabled, white-theme),\\n ),\\n (\\n theme: themes.$g10,\\n value: map.get(button.$button-disabled, g-10),\\n ),\\n (\\n theme: themes.$g90,\\n value: map.get(button.$button-disabled, g-90),\\n ),\\n (\\n theme: themes.$g100,\\n value: map.get(button.$button-disabled, g-100),\\n ),\\n ),\\n) !default;\\n\\n$button-tokens: (\\n button-separator: $button-separator,\\n button-primary: $button-primary,\\n button-secondary: $button-secondary,\\n button-tertiary: $button-tertiary,\\n button-danger-primary: $button-danger-primary,\\n button-danger-secondary: $button-danger-secondary,\\n button-danger-active: $button-danger-active,\\n button-primary-active: $button-primary-active,\\n button-secondary-active: $button-secondary-active,\\n button-tertiary-active: $button-tertiary-active,\\n button-danger-hover: $button-danger-hover,\\n button-primary-hover: $button-primary-hover,\\n button-secondary-hover: $button-secondary-hover,\\n button-tertiary-hover: $button-tertiary-hover,\\n button-disabled: $button-disabled,\\n);\\n\\n$button-separator: component-tokens.get-var(\\n $button-separator,\\n 'button-separator'\\n);\\n\\n$button-primary: component-tokens.get-var($button-primary, 'button-primary');\\n\\n$button-secondary: component-tokens.get-var(\\n $button-secondary,\\n 'button-secondary'\\n);\\n\\n$button-tertiary: component-tokens.get-var($button-tertiary, 'button-tertiary');\\n\\n$button-danger-primary: component-tokens.get-var(\\n $button-danger-primary,\\n 'button-danger-primary'\\n);\\n\\n$button-danger-secondary: component-tokens.get-var(\\n $button-danger-secondary,\\n 'button-danger-secondary'\\n);\\n\\n$button-danger-active: component-tokens.get-var(\\n $button-danger-active,\\n 'button-danger-active'\\n);\\n\\n$button-primary-active: component-tokens.get-var(\\n $button-primary-active,\\n 'button-primary-active'\\n);\\n\\n$button-secondary-active: component-tokens.get-var(\\n $button-secondary-active,\\n 'button-secondary-active'\\n);\\n\\n$button-tertiary-active: component-tokens.get-var(\\n $button-tertiary-active,\\n 'button-tertiary-active'\\n);\\n\\n$button-danger-hover: component-tokens.get-var(\\n $button-danger-hover,\\n 'button-danger-hover'\\n);\\n\\n$button-primary-hover: component-tokens.get-var(\\n $button-primary-hover,\\n 'button-primary-hover'\\n);\\n\\n$button-secondary-hover: component-tokens.get-var(\\n $button-secondary-hover,\\n 'button-secondary-hover'\\n);\\n\\n$button-tertiary-hover: component-tokens.get-var(\\n $button-tertiary-hover,\\n 'button-tertiary-hover'\\n);\\n\\n$button-disabled: component-tokens.get-var($button-disabled, 'button-disabled');\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"inputGroup\": \"_3ghL9VvEMEBGtxu4pMwlUQ==\",\n\t\"cds--focused\": \"wd02PMIuu0vdK1nU01M0vA==\",\n\t\"inputWrapper\": \"_8dD8Tb9JIvtXiK-H-m58+Q==\",\n\t\"inputSegment\": \"u9xpQLwv8879aSrtwgBjwA==\",\n\t\"dateInputWrapper\": \"miyGBksDDw6IAgDq8oEiMw==\",\n\t\"cursor-blink\": \"GvYCW4Ha+xGVXQCcY1qtwA==\",\n\t\"cursor-blink-rtl\": \"c0RMH1TuYT8d1jqJT+6XFA==\",\n\t\"inputWrapperMd\": \"GVaG38s0eIbutuabf4+uBQ==\",\n\t\"inputWrapperSm\": \"_01dtBgqWiwZk6SoBjALSjQ==\",\n\t\"inputWrapperLg\": \"_0hIZ9D1--CeU4ZSveSTQQg==\",\n\t\"inputsWrapper\": \"_7m9E2jl20P4i7p7Mp1-biA==\",\n\t\"inputsWrapperSm\": \"mx9jP+0JMdnAXdZTjRCJhw==\",\n\t\"inputsWrapperMd\": \"_6RdG0pycDtJJ2KTzHV4iIw==\",\n\t\"inputsWrapperLg\": \"IPnJdk8Xtzg1yfFCUoBc9A==\",\n\t\"startInput\": \"NyabfeLUZzUPXOIdWle5bw==\",\n\t\"endInput\": \"PAI4FVG2hj35xDhzIF-jaQ==\",\n\t\"separator\": \"S7-qCETjknn+AcA7c0xC3g==\",\n\t\"invalidText\": \"Hr9NJxCA4oSNVTBwsHmACQ==\",\n\t\"popover\": \"fJEQcItNrv2n55UaD-Nfgw==\",\n\t\"expand-in\": \"_13UImLxwUrLdL5zUTqyARg==\",\n\t\"dialog\": \"gj9nEvrB9Re-WX-HkzyQEQ==\",\n\t\"header\": \"qvzkMTSvzPFL42Qx1Rp7gQ==\",\n\t\"flatButton\": \"QEZ5dHMMHKxzY8OYNICm0w==\",\n\t\"flatButtonMd\": \"ohLjF+TIoU6I01Ed+UfWxg==\",\n\t\"flatButtonSm\": \"sD3fm4rOJvtpunJ3wocYtA==\",\n\t\"flatButtonLg\": \"_0fs7mgdVjmu0ElQLPZgc+Q==\",\n\t\"monthYear\": \"CyXMAICmKG6JIYk9V7yM9A==\",\n\t\"calendarGrid\": \"uoEjJIOS+CBqkco8jRUt6Q==\",\n\t\"today\": \"wcSTDuH+PjP9kxK+pj3CUw==\"\n};\n/* export default */ const __rspack_default_export = (___CSS_LOADER_EXPORT___);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvb3Blbm1ycy1lc20tY29yZS9vcGVubXJzLWVzbS1jb3JlL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS9ob21lL3J1bm5lci93b3JrL29wZW5tcnMtZXNtLWNvcmUvb3Blbm1ycy1lc20tY29yZS9wYWNrYWdlcy9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvZGlzdC9kYXRlcGlja2VyL2RhdGVwaWNrZXIubW9kdWxlLnNjc3MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9kaXN0L2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUuc2Nzcz8zNzA2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLyogNjAsNzAgYW5kIDgwIGFyZSBhbHJlYWR5IGRlY2xhcmVkIGFzIGJyYW5kLTAxLCAwMiBhbmQgMDMgcmVzcGVjdGl2ZWx5ICovXFxuOnJvb3Qge1xcbiAgLS1icmFuZC0wMTogIzAwNWQ1ZDtcXG4gIC0tYnJhbmQtMDI6ICMwMDQxNDQ7XFxuICAtLWJyYW5kLTAzOiAjMDA3ZDc5O1xcbiAgLS1ib3R0b20tbmF2LWhlaWdodDogNHJlbTtcXG4gIC0td29ya3NwYWNlLWhlYWRlci1oZWlnaHQ6IDNyZW07XFxuICAtLXRhYmxldC13b3Jrc3BhY2Utd2luZG93LWhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLW9tcnMtbmF2YmFyLWhlaWdodCkgLSB2YXIoLS1ib3R0b20tbmF2LWhlaWdodCkpO1xcbiAgLS1kZXNrdG9wLXdvcmtzcGFjZS13aW5kb3ctaGVpZ2h0OiBjYWxjKDEwMHZoIC0gdmFyKC0tb21ycy1uYXZiYXItaGVpZ2h0KSAtIHZhcigtLXdvcmtzcGFjZS1oZWFkZXItaGVpZ2h0KSk7XFxufVxcblxcbi8qIFRoZXNlIGNvbG9yIHZhcmlhYmxlcyB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZSAqL1xcbi5fM2doTDlWdkVNRUJHdHh1NHBNd2xVUVxcXFw9XFxcXD0ge1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNkcy1maWVsZCk7XFxuICBib3JkZXItYmxvY2stZW5kOiAxcHggc29saWQgdmFyKC0tY2RzLWJvcmRlci1zdHJvbmcpO1xcbiAgY29sb3I6IHZhcigtLWNkcy10ZXh0LXByaW1hcnkpO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLl8zZ2hMOVZ2RU1FQkd0eHU0cE13bFVRXFxcXD1cXFxcPTpmb2N1cy13aXRoaW4sIC5fM2doTDlWdkVNRUJHdHh1NHBNd2xVUVxcXFw9XFxcXD0ud2QwMlBNSXV1MHZkSzFuVTAxTTB2QVxcXFw9XFxcXD0ge1xcbiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNkcy1mb2N1cywgIzBmNjJmZSk7XFxuICBvdXRsaW5lLW9mZnNldDogLTJweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtY29udHJhc3QpIHtcXG4gIC5fM2doTDlWdkVNRUJHdHh1NHBNd2xVUVxcXFw9XFxcXD06Zm9jdXMtd2l0aGluLCAuXzNnaEw5VnZFTUVCR3R4dTRwTXdsVVFcXFxcPVxcXFw9LndkMDJQTUl1dTB2ZEsxblUwMU0wdkFcXFxcPVxcXFw9IHtcXG4gICAgb3V0bGluZS1zdHlsZTogZG90dGVkO1xcbiAgfVxcbn1cXG4uXzNnaEw5VnZFTUVCR3R4dTRwTXdsVVFcXFxcPVxcXFw9W2RhdGEtaW52YWxpZF0ge1xcbiAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNkcy1zdXBwb3J0LWVycm9yLCAjZGExZTI4KTtcXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1jb250cmFzdCkge1xcbiAgLl8zZ2hMOVZ2RU1FQkd0eHU0cE13bFVRXFxcXD1cXFxcPVtkYXRhLWludmFsaWRdIHtcXG4gICAgb3V0bGluZS1zdHlsZTogZG90dGVkO1xcbiAgfVxcbn1cXG4uXzNnaEw5VnZFTUVCR3R4dTRwTXdsVVFcXFxcPVxcXFw9W2RhdGEtaW52YWxpZF0ge1xcbiAgY29sb3I6IHZhcigtLWNkcy1zdXBwb3J0LWVycm9yLCAjZGExZTI4KTtcXG59XFxuLl8zZ2hMOVZ2RU1FQkd0eHU0cE13bFVRXFxcXD1cXFxcPVtkYXRhLWRpc2FibGVkXSB7XFxuICBib3JkZXItYmxvY2stZW5kOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwKTtcXG4gIGNvbG9yOiB2YXIoLS1jZHMtdGV4dC1kaXNhYmxlZCwgcmdiYSgyMiwgMjIsIDIyLCAwLjI1KSk7XFxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbn1cXG5cXG4uXzhkRDhUYjlKSXZ0WGlLLUgtbTU4XFxcXCtRXFxcXD1cXFxcPSAudTl4cFFMd3Y4ODc5YVNydHdnQmp3QVxcXFw9XFxcXD0sIC5taXlHQmtzRER3NklBZ0RxOG9FaU13XFxcXD1cXFxcPSAudTl4cFFMd3Y4ODc5YVNydHdnQmp3QVxcXFw9XFxcXD0ge1xcbiAgY2FyZXQtY29sb3I6IHZhcigtLWNkcy10ZXh0LXByaW1hcnkpO1xcbn1cXG4uXzhkRDhUYjlKSXZ0WGlLLUgtbTU4XFxcXCtRXFxcXD1cXFxcPSAudTl4cFFMd3Y4ODc5YVNydHdnQmp3QVxcXFw9XFxcXD06Zm9jdXMsIC5taXlHQmtzRER3NklBZ0RxOG9FaU13XFxcXD1cXFxcPSAudTl4cFFMd3Y4ODc5YVNydHdnQmp3QVxcXFw9XFxcXD06Zm9jdXMge1xcbiAgb3V0bGluZTogdW5zZXQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtbGF5ZXItc2VsZWN0ZWQtaG92ZXIpO1xcbn1cXG4uXzhkRDhUYjlKSXZ0WGlLLUgtbTU4XFxcXCtRXFxcXD1cXFxcPSBbZGF0YS1wbGFjZWhvbGRlcl0udTl4cFFMd3Y4ODc5YVNydHdnQmp3QVxcXFw9XFxcXD0sIC5taXlHQmtzRER3NklBZ0RxOG9FaU13XFxcXD1cXFxcPSBbZGF0YS1wbGFjZWhvbGRlcl0udTl4cFFMd3Y4ODc5YVNydHdnQmp3QVxcXFw9XFxcXD0ge1xcbiAgY29sb3I6IHZhcigtLWNkcy10ZXh0LWRpc2FibGVkLCByZ2JhKDIyLCAyMiwgMjIsIDAuMjUpKTtcXG59XFxuLl84ZEQ4VGI5Skl2dFhpSy1ILW01OFxcXFwrUVxcXFw9XFxcXD0gW2RhdGEtZm9jdXNlZD10cnVlXS51OXhwUUx3djg4NzlhU3J0d2dCandBXFxcXD1cXFxcPSwgLm1peUdCa3NERHc2SUFnRHE4b0VpTXdcXFxcPVxcXFw9IFtkYXRhLWZvY3VzZWQ9dHJ1ZV0udTl4cFFMd3Y4ODc5YVNydHdnQmp3QVxcXFw9XFxcXD0ge1xcbiAgYW5pbWF0aW9uOiBHdllDVzRIYVxcXFwreEdWWFFDY1kxcXR3QVxcXFw9XFxcXD0gMXMgc3RlcC1lbmQgaW5maW5pdGU7XFxufVxcbltkaXI9XFxcInJ0bFxcXCJdIC5fOGREOFRiOUpJdnRYaUstSC1tNThcXFxcK1FcXFxcPVxcXFw9IFtkYXRhLWZvY3VzZWQ9dHJ1ZV0udTl4cFFMd3Y4ODc5YVNydHdnQmp3QVxcXFw9XFxcXD0sIFtkaXI9XFxcInJ0bFxcXCJdIC5taXlHQmtzRER3NklBZ0RxOG9FaU13XFxcXD1cXFxcPSBbZGF0YS1mb2N1c2VkPXRydWVdLnU5eHBRTHd2ODg3OWFTcnR3Z0Jqd0FcXFxcPVxcXFw9LCAuXzhkRDhUYjlKSXZ0WGlLLUgtbTU4XFxcXCtRXFxcXD1cXFxcPSBbZGlyPVxcXCJydGxcXFwiXSBbZGF0YS1mb2N1c2VkPXRydWVdLnU5eHBRTHd2ODg3OWFTcnR3Z0Jqd0FcXFxcPVxcXFw9LCAubWl5R0Jrc0REdzZJQWdEcThvRWlNd1xcXFw9XFxcXD0gW2Rpcj1cXFwicnRsXFxcIl0gW2RhdGEtZm9jdXNlZD10cnVlXS51OXhwUUx3djg4NzlhU3J0d2dCandBXFxcXD1cXFxcPSB7XFxuICBhbmltYXRpb246IGMwUk1IMVR1WVQ4ZDFqcUpUXFxcXCs2WEZBXFxcXD1cXFxcPSAxcyBzdGVwLWVuZCBpbmZpbml0ZTtcXG59XFxuXFxuLl84ZEQ4VGI5Skl2dFhpSy1ILW01OFxcXFwrUVxcXFw9XFxcXD0gW2RhdGEtcmVhZG9ubHldOmhhcygrIFtkYXRhLXBsYWNlaG9sZGVyXSksIC5taXlHQmtzRER3NklBZ0RxOG9FaU13XFxcXD1cXFxcPSBbZGF0YS1yZWFkb25seV06aGFzKCsgW2RhdGEtcGxhY2Vob2xkZXJdKSB7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtZGlzYWJsZWQsIHJnYmEoMjIsIDIyLCAyMiwgMC4yNSkpO1xcbn1cXG4uXzhkRDhUYjlKSXZ0WGlLLUgtbTU4XFxcXCtRXFxcXD1cXFxcPSBbZGF0YS1wbGFjZWhvbGRlcl0gKyBbZGF0YS1yZWFkb25seV0sIC5taXlHQmtzRER3NklBZ0RxOG9FaU13XFxcXD1cXFxcPSBbZGF0YS1wbGFjZWhvbGRlcl0gKyBbZGF0YS1yZWFkb25seV0ge1xcbiAgY29sb3I6IHZhcigtLWNkcy10ZXh0LWRpc2FibGVkLCByZ2JhKDIyLCAyMiwgMjIsIDAuMjUpKTtcXG59XFxuXFxuQGtleWZyYW1lcyBHdllDVzRIYVxcXFwreEdWWFFDY1kxcXR3QVxcXFw9XFxcXD0ge1xcbiAgZnJvbSwgdG8ge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIH1cXG4gIDUwJSB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBjMFJNSDFUdVlUOGQxanFKVFxcXFwrNlhGQVxcXFw9XFxcXD0ge1xcbiAgZnJvbSwgdG8ge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgfVxcbiAgNTAlIHtcXG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCBjdXJyZW50Q29sb3I7XFxuICB9XFxufVxcbi5fOGREOFRiOUpJdnRYaUstSC1tNThcXFxcK1FcXFxcPVxcXFw9LCAubWl5R0Jrc0REdzZJQWdEcThvRWlNd1xcXFw9XFxcXD0ge1xcbiAgaW5saW5lLXNpemU6IDE1cmVtO1xcbiAgbWFyZ2luLWxlZnQ6IDFyZW07XFxuICBtaW4td2lkdGg6IDEwcmVtO1xcbiAgbWF4LXdpZHRoOiAxNXJlbTtcXG59XFxuLkdWYUczOHMwZUlidXR1YWJmNFxcXFwrdUJRXFxcXD1cXFxcPSB7XFxuICBibG9jay1zaXplOiAyLjVyZW07XFxufVxcblxcbi5fMDFkdEJncVdpd1prNlNvQmpBTFNqUVxcXFw9XFxcXD0ge1xcbiAgYmxvY2stc2l6ZTogMnJlbTtcXG59XFxuXFxuLl8waElaOUQxLS1DZVU0WlN2ZVNUUVFnXFxcXD1cXFxcPSB7XFxuICBibG9jay1zaXplOiAzcmVtO1xcbn1cXG5cXG4uXzdtOUUyamwyMFA0aTdwN01wMS1iaUFcXFxcPVxcXFw9IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBtaW4td2lkdGg6IDEwcmVtO1xcbiAgbWF4LXdpZHRoOiAxNXJlbTtcXG4gIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDFyZW07XFxuICBpbmxpbmUtc2l6ZTogMTVyZW07XFxufVxcblxcbi5teDlqUFxcXFwrMEpNZG5BWGRaVGpSQ0pod1xcXFw9XFxcXD0ge1xcbiAgYmxvY2stc2l6ZTogMnJlbTtcXG59XFxuXFxuLl82UmRHMHB5Y0R0SkoyS1R6SFY0aUl3XFxcXD1cXFxcPSB7XFxuICBibG9jay1zaXplOiAyLjVyZW07XFxufVxcblxcbi5JUG5KZGs4WHR6ZzF5ZkZDVW9CYzlBXFxcXD1cXFxcPSB7XFxuICBibG9jay1zaXplOiAzcmVtO1xcbn1cXG5cXG4ubWl5R0Jrc0REdzZJQWdEcThvRWlNd1xcXFw9XFxcXD0ge1xcbiAgbWluLXdpZHRoOiB1bnNldDtcXG4gIG1hcmdpbjogMHB4O1xcbn1cXG5cXG4uTnlhYmZlTFVaelVQWE9JZFdsZTVid1xcXFw9XFxcXD0ge1xcbiAgZmxleC1iYXNpczogZml0LWNvbnRlbnQ7XFxufVxcblxcbi5QQUk0RlZHMmhqMzV4RGh6SUYtamFRXFxcXD1cXFxcPSB7XFxuICBwYWRkaW5nLXJpZ2h0OiB1bnNldDtcXG59XFxuXFxuLlM3LXFDRVRqa25uXFxcXCtBY0E3YzB4QzNnXFxcXD1cXFxcPSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIG1hcmdpbi1pbmxpbmU6IDAuNXJlbTtcXG59XFxuXFxuLl8zZ2hMOVZ2RU1FQkd0eHU0cE13bFVRXFxcXD1cXFxcPTpoYXMoW2RhdGEtcGxhY2Vob2xkZXJdKSA+IC5fN205RTJqbDIwUDRpN3A3TXAxLWJpQVxcXFw9XFxcXD0gPiAuUzctcUNFVGprbm5cXFxcK0FjQTdjMHhDM2dcXFxcPVxcXFw9ID4gc3BhbiB7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtZGlzYWJsZWQsIHJnYmEoMjIsIDIyLCAyMiwgMC4yNSkpO1xcbn1cXG5cXG4uSHI5Tkp4Q0E0b1NOVlRCd3NIbUFDUVxcXFw9XFxcXD0ge1xcbiAgY29sb3I6IHZhcigtLWNkcy10ZXh0LWVycm9yLCAjZGExZTI4KSAhaW1wb3J0YW50O1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50O1xcbiAgbWFyZ2luOiAwLjI1cmVtIDAgMDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxufVxcblxcbkBrZXlmcmFtZXMgXzEzVUltTHh3VXJMZEw1elVUcXlBUmdcXFxcPVxcXFw9IHtcXG4gIGZyb20ge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTMpO1xcbiAgfVxcbiAgdG8ge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xcbiAgfVxcbn1cXG4uZkpFUWNJdE5ydjJuNTVVYUQtTmZnd1xcXFw9XFxcXD0ge1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGNlbnRlcjtcXG59XFxuXFxuLmZKRVFjSXROcnYybjU1VWFELU5mZ3dcXFxcPVxcXFw9W2RhdGEtcGxhY2VtZW50PXRvcF0sXFxuLmZKRVFjSXROcnYybjU1VWFELU5mZ3dcXFxcPVxcXFw9W2RhdGEtcGxhY2VtZW50PXRvcC1zdGFydF0sXFxuLmZKRVFjSXROcnYybjU1VWFELU5mZ3dcXFxcPVxcXFw9W2RhdGEtcGxhY2VtZW50PXRvcC1lbmRdIHtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSBjZW50ZXI7XFxufVxcblxcbi5mSkVRY0l0TnJ2Mm41NVVhRC1OZmd3XFxcXD1cXFxcPVtkYXRhLWVudGVyaW5nXSB7XFxuICBhbmltYXRpb246IF8xM1VJbUx4d1VyTGRMNXpVVHF5QVJnXFxcXD1cXFxcPSAxMTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4zOCwgMC45KTtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xcbiAgLmZKRVFjSXROcnYybjU1VWFELU5mZ3dcXFxcPVxcXFw9W2RhdGEtZW50ZXJpbmddIHtcXG4gICAgYW5pbWF0aW9uOiBub25lO1xcbiAgfVxcbn1cXG5cXG4uZ2o5bkV2ckI5UmUtV1gtSGt6eVFFUVxcXFw9XFxcXD0ge1xcbiAgYm94LXNoYWRvdzogMCAycHggNnB4IHZhcigtLWNkcy1zaGFkb3csIHJnYmEoMCwgMCwgMCwgMC4zKSk7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtbGF5ZXItMDEsICNmNGY0ZjQpO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBhZGRpbmc6IDAuMjVyZW0gMC4yNXJlbSAwLjVyZW0gMC4yNXJlbTtcXG59XFxuXFxuLnF2emtNVFN2elBGTDQyUXgxUnA3Z1FcXFxcPVxcXFw9IHtcXG4gIG1hcmdpbi10b3A6IDAuNXJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgZmxleC13cmFwOiBub3dyYXA7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxufVxcblxcbi5RRVo1ZEhNTUhLeHpZOE9ZTklDbTB3XFxcXD1cXFxcPSB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlcjogMDtcXG4gIG1hcmdpbjogMDtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgZm9udC1zaXplOiAxMDAlO1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xcbn1cXG4uUUVaNWRITU1IS3h6WThPWU5JQ20wd1xcXFw9XFxcXD0gKixcXG4uUUVaNWRITU1IS3h6WThPWU5JQ20wd1xcXFw9XFxcXD0gKjo6YmVmb3JlLFxcbi5RRVo1ZEhNTUhLeHpZOE9ZTklDbTB3XFxcXD1cXFxcPSAqOjphZnRlciB7XFxuICBib3gtc2l6aW5nOiBpbmhlcml0O1xcbn1cXG4uUUVaNWRITU1IS3h6WThPWU5JQ20wd1xcXFw9XFxcXD0ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbn1cXG4uUUVaNWRITU1IS3h6WThPWU5JQ20wd1xcXFw9XFxcXD06aG92ZXI6bm90KDpkaXNhYmxlZCkge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWxheWVyLWhvdmVyKTtcXG59XFxuLlFFWjVkSE1NSEt4elk4T1lOSUNtMHdcXFxcPVxcXFw9OmRpc2FibGVkID4gc3ZnIHtcXG4gIGZpbGw6IHZhcigtLWNkcy10ZXh0LWRpc2FibGVkLCByZ2JhKDIyLCAyMiwgMjIsIDAuMjUpKTtcXG59XFxuLlFFWjVkSE1NSEt4elk4T1lOSUNtMHdcXFxcPVxcXFw9ID4gc3ZnIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgbWFyZ2luOiBhdXRvO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbn1cXG5cXG5bZGF0YS1pbnZhbGlkXSA+IC5RRVo1ZEhNTUhLeHpZOE9ZTklDbTB3XFxcXD1cXFxcPSA+IHN2ZyB7XFxuICAtLW9tcnMtaWNvbi1maWxsOiB2YXIoLS1jZHMtc3VwcG9ydC1lcnJvciwgI2RhMWUyOCk7XFxufVxcblxcbi5vaExqRlxcXFwrVElvVTZJMDFFZFxcXFwrVWZXeGdcXFxcPVxcXFw9IHtcXG4gIGhlaWdodDogMi41cmVtO1xcbiAgd2lkdGg6IDIuNXJlbTtcXG59XFxuXFxuLnNEM2ZtNHJPSnZ0cHVuSjN3b2NZdEFcXFxcPVxcXFw9IHtcXG4gIGhlaWdodDogMnJlbTtcXG4gIHdpZHRoOiAycmVtO1xcbn1cXG5cXG4uXzBmczdtZ2RWam11MEVsUUxQWmdjXFxcXCtRXFxcXD1cXFxcPSB7XFxuICBoZWlnaHQ6IDNyZW07XFxuICB3aWR0aDogM3JlbTtcXG59XFxuXFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBwYWRkaW5nOiAwO1xcbiAgYm9yZGVyOiAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBmb250LXNpemU6IDEwMCU7XFxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XFxuICBmb250LXNpemU6IHZhcigtLWNkcy1oZWFkaW5nLWNvbXBhY3QtMDEtZm9udC1zaXplLCAwLjg3NXJlbSk7XFxuICBmb250LXdlaWdodDogdmFyKC0tY2RzLWhlYWRpbmctY29tcGFjdC0wMS1mb250LXdlaWdodCwgNjAwKTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1jZHMtaGVhZGluZy1jb21wYWN0LTAxLWxpbmUtaGVpZ2h0LCAxLjI4NTcyKTtcXG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1jZHMtaGVhZGluZy1jb21wYWN0LTAxLWxldHRlci1zcGFjaW5nLCAwLjE2cHgpO1xcbn1cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gKixcXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gKjo6YmVmb3JlLFxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSAqOjphZnRlciB7XFxuICBib3gtc2l6aW5nOiBpbmhlcml0O1xcbn1cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0ge1xcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xcbiAgbWFyZ2luLWJsb2NrLWVuZDogMC4xMjVyZW07XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSA+IHNwYW4ge1xcbiAgbWFyZ2luLWxlZnQ6IDAuMjVyZW07XFxuICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkge1xcbiAgZGlzcGxheTogaW5saW5lO1xcbn1cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pID4gaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdIHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBwYWRkaW5nOiAwO1xcbiAgYm9yZGVyOiAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBmb250LXNpemU6IDEwMCU7XFxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XFxuICBmb250LXNpemU6IHZhcigtLWNkcy1oZWFkaW5nLWNvbXBhY3QtMDEtZm9udC1zaXplLCAwLjg3NXJlbSk7XFxuICBmb250LXdlaWdodDogdmFyKC0tY2RzLWhlYWRpbmctY29tcGFjdC0wMS1mb250LXdlaWdodCwgNjAwKTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1jZHMtaGVhZGluZy1jb21wYWN0LTAxLWxpbmUtaGVpZ2h0LCAxLjI4NTcyKTtcXG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1jZHMtaGVhZGluZy1jb21wYWN0LTAxLWxldHRlci1zcGFjaW5nLCAwLjE2cHgpO1xcbn1cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pID4gaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdICosXFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSA+IGlucHV0W2lucHV0bW9kZT1udW1lcmljXSAqOjpiZWZvcmUsXFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSA+IGlucHV0W2lucHV0bW9kZT1udW1lcmljXSAqOjphZnRlciB7XFxuICBib3gtc2l6aW5nOiBpbmhlcml0O1xcbn1cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pID4gaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNkcy1maWVsZCk7XFxuICBpbmxpbmUtc2l6ZTogMi41cmVtO1xcbiAgcGFkZGluZzogMC4yNXJlbTtcXG4gIHBhZGRpbmctcmlnaHQ6IDA7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgPiBpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY106Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sIC5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgPiBpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY106Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ge1xcbiAgbWFyZ2luOiAwO1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbn1cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pID4gaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdOmZvY3VzIHtcXG4gIG91dGxpbmU6IDFweCBzb2xpZCB2YXIoLS1jZHMtZm9jdXMsICMwZjYyZmUpO1xcbn1cXG5AbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1jb250cmFzdCkge1xcbiAgLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSA+IGlucHV0W2lucHV0bW9kZT1udW1lcmljXTpmb2N1cyB7XFxuICAgIG91dGxpbmUtc3R5bGU6IGRvdHRlZDtcXG4gIH1cXG59XFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSA+IGlucHV0W2lucHV0bW9kZT1udW1lcmljXVtkYXRhLWludmFsaWRdIHtcXG4gIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1jZHMtc3VwcG9ydC1lcnJvciwgI2RhMWUyOCk7XFxuICBvdXRsaW5lLW9mZnNldDogLTJweDtcXG59XFxuQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtY29udHJhc3QpIHtcXG4gIC5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgPiBpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY11bZGF0YS1pbnZhbGlkXSB7XFxuICAgIG91dGxpbmUtc3R5bGU6IGRvdHRlZDtcXG4gIH1cXG59XFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSA+IGlucHV0W2lucHV0bW9kZT1udW1lcmljXVtkYXRhLWRpc2FibGVkXSwgLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSA+IGlucHV0W2lucHV0bW9kZT1udW1lcmljXVtkYXRhLWRpc2FibGVkXTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtbGF5ZXItMDEsICNmNGY0ZjQpO1xcbiAgY29sb3I6IHZhcigtLWNkcy10ZXh0LWRpc2FibGVkLCByZ2JhKDIyLCAyMiwgMjIsIDAuMjUpKTtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pID4gaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdW2RhdGEtZGlzYWJsZWRdICsgZGl2ID4gYnV0dG9uOjphZnRlciB7XFxuICBib3JkZXItYmxvY2stZW5kLWNvbG9yOiB2YXIoLS1jZHMtdGV4dC1kaXNhYmxlZCwgcmdiYSgyMiwgMjIsIDIyLCAwLjI1KSk7XFxuICBib3JkZXItYmxvY2stc3RhcnQtY29sb3I6IHZhcigtLWNkcy10ZXh0LWRpc2FibGVkLCByZ2JhKDIyLCAyMiwgMjIsIDAuMjUpKTtcXG59XFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSA+IGlucHV0W2lucHV0bW9kZT1udW1lcmljXVtkYXRhLWRpc2FibGVkXSArIGRpdiA+IGJ1dHRvbjpob3ZlciB7XFxuICBvcGFjaXR5OiAwO1xcbn1cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pIGRpdltyb2xlPWdyb3VwXSB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlcjogMDtcXG4gIG1hcmdpbjogMDtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgZm9udC1zaXplOiAxMDAlO1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xcbn1cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pIGRpdltyb2xlPWdyb3VwXSAqLFxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgZGl2W3JvbGU9Z3JvdXBdICo6OmJlZm9yZSxcXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pIGRpdltyb2xlPWdyb3VwXSAqOjphZnRlciB7XFxuICBib3gtc2l6aW5nOiBpbmhlcml0O1xcbn1cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pIGRpdltyb2xlPWdyb3VwXSB7XFxuICBkaXNwbGF5OiBpbmxpbmU7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSk6aG92ZXIgYnV0dG9uIHtcXG4gIG9wYWNpdHk6IDE7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgYnV0dG9uIHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBwYWRkaW5nOiAwO1xcbiAgYm9yZGVyOiAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBmb250LXNpemU6IDEwMCU7XFxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgYnV0dG9uICosXFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSBidXR0b24gKjo6YmVmb3JlLFxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgYnV0dG9uICo6OmFmdGVyIHtcXG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgYnV0dG9uIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHBhZGRpbmctYmxvY2s6IDA7XFxuICBwYWRkaW5nLWlubGluZS1zdGFydDogMC4xMjVyZW07XFxuICBwYWRkaW5nLWlubGluZS1lbmQ6IDAuMjVyZW07XFxuICBib3JkZXI6IG5vbmU7XFxuICBibG9jay1zaXplOiA1MCU7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBpbmxpbmUtc2l6ZTogMC43NXJlbTtcXG4gIGluc2V0LWlubGluZS1zdGFydDogMi41cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDUwJTtcXG4gIG9wYWNpdHk6IDA7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgYnV0dG9uOjphZnRlciB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGJvcmRlci1pbmxpbmUtZW5kOiAwLjI1cmVtIHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMC4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgaW5zZXQtYmxvY2stc3RhcnQ6IDMzJTtcXG59XFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSBidXR0b246aG92ZXI6OmFmdGVyIHtcXG4gIGJvcmRlci1ibG9jay1lbmQtY29sb3I6IHZhcigtLWNkcy1idXR0b24tcHJpbWFyeSwgIzBmNjJmZSk7XFxuICBib3JkZXItYmxvY2stc3RhcnQtY29sb3I6IHZhcigtLWNkcy1idXR0b24tcHJpbWFyeSwgIzBmNjJmZSk7XFxufVxcbi5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBkaXY6aGFzKGlucHV0W2lucHV0bW9kZT1udW1lcmljXSkgYnV0dG9uOmFjdGl2ZTo6YWZ0ZXIge1xcbiAgYm9yZGVyLWJsb2NrLWVuZC1jb2xvcjogdmFyKC0tY2RzLWJvcmRlci1pbnRlcmFjdGl2ZSwgIzBmNjJmZSk7XFxuICBib3JkZXItYmxvY2stc3RhcnQtY29sb3I6IHZhcigtLWNkcy1ib3JkZXItaW50ZXJhY3RpdmUsICMwZjYyZmUpO1xcbn1cXG4uQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pIGJ1dHRvbltzbG90PWluY3JlbWVudF0ge1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG59XFxuLkN5WE1BSUNtS0c2SklZazlWN3lNOUFcXFxcPVxcXFw9IGRpdjpoYXMoaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdKSBidXR0b25bc2xvdD1kZWNyZW1lbnRdIHtcXG4gIHRvcDogMC43NXJlbTtcXG4gIGxlZnQ6IDA7XFxufVxcblxcbi51b0VqSklPU1xcXFwrQ0Jxa2NvOGpSVXQ2UVxcXFw9XFxcXD0ge1xcbiAgd2lkdGg6IDE3cmVtO1xcbn1cXG4udW9FakpJT1NcXFxcK0NCcWtjbzhqUlV0NlFcXFxcPVxcXFw9IHRyLCAudW9FakpJT1NcXFxcK0NCcWtjbzhqUlV0NlFcXFxcPVxcXFw9IHRyID4gdGgsIC51b0VqSklPU1xcXFwrQ0Jxa2NvOGpSVXQ2UVxcXFw9XFxcXD0gdHIgPiB0ZCB7XFxuICBoZWlnaHQ6IDIuNDI4cmVtO1xcbiAgd2lkdGg6IDIuNDI4cmVtO1xcbn1cXG4udW9FakpJT1NcXFxcK0NCcWtjbzhqUlV0NlFcXFxcPVxcXFw9ID4gdGhlYWQgPiB0ciA+IHRoIHtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMS1mb250LXNpemUsIDAuODc1cmVtKTtcXG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1jZHMtYm9keS1jb21wYWN0LTAxLWZvbnQtd2VpZ2h0LCA0MDApO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWNkcy1ib2R5LWNvbXBhY3QtMDEtbGluZS1oZWlnaHQsIDEuMjg1NzIpO1xcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWNkcy1ib2R5LWNvbXBhY3QtMDEtbGV0dGVyLXNwYWNpbmcsIDAuMTZweCk7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbn1cXG4udW9FakpJT1NcXFxcK0NCcWtjbzhqUlV0NlFcXFxcPVxcXFw9ID4gdGJvZHkgPiB0ciA+IHRkIHtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMS1mb250LXNpemUsIDAuODc1cmVtKTtcXG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1jZHMtYm9keS1jb21wYWN0LTAxLWZvbnQtd2VpZ2h0LCA0MDApO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWNkcy1ib2R5LWNvbXBhY3QtMDEtbGluZS1oZWlnaHQsIDEuMjg1NzIpO1xcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWNkcy1ib2R5LWNvbXBhY3QtMDEtbGV0dGVyLXNwYWNpbmcsIDAuMTZweCk7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbn1cXG4udW9FakpJT1NcXFxcK0NCcWtjbzhqUlV0NlFcXFxcPVxcXFw9ID4gdGJvZHkgPiB0ciA+IHRkID4gZGl2IHtcXG4gIG91dGxpbmU6IHVuc2V0O1xcbn1cXG4udW9FakpJT1NcXFxcK0NCcWtjbzhqUlV0NlFcXFxcPVxcXFw9ID4gdGJvZHkgPiB0ciA+IHRkOmhvdmVyOm5vdCg6aGFzKFthcmlhLWRpc2FibGVkXSwgW2RhdGEtc2VsZWN0ZWRdKSkge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWxheWVyLWhvdmVyKTtcXG59XFxuLnVvRWpKSU9TXFxcXCtDQnFrY284alJVdDZRXFxcXD1cXFxcPSA+IHRib2R5ID4gdHIgPiB0ZDpoYXMoW2RhdGEtc2VsZWN0ZWRdKSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGY2MmZlO1xcbiAgY29sb3I6ICNmZmZmZmY7XFxufVxcbi51b0VqSklPU1xcXFwrQ0Jxa2NvOGpSVXQ2UVxcXFw9XFxcXD0gPiB0Ym9keSA+IHRyID4gdGRbYXJpYS1kaXNhYmxlZF0ge1xcbiAgY29sb3I6IHZhcigtLWNkcy10ZXh0LWRpc2FibGVkLCByZ2JhKDIyLCAyMiwgMjIsIDAuMjUpKTtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG59XFxuXFxuLndjU1REdUhcXFxcK1BqUDlreEtcXFxcK3BqM0NVd1xcXFw9XFxcXD06bm90KFtkYXRhLXNlbGVjdGVkXSkge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgY29sb3I6ICMwZjYyZmU7XFxuICBmb250LXdlaWdodDogNjAwO1xcbiAgZm9udC1zaXplOiB2YXIoLS1jZHMtYm9keS1jb21wYWN0LTAxLWZvbnQtc2l6ZSwgMC44NzVyZW0pO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWNkcy1ib2R5LWNvbXBhY3QtMDEtbGluZS1oZWlnaHQsIDEuMjg1NzIpO1xcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWNkcy1ib2R5LWNvbXBhY3QtMDEtbGV0dGVyLXNwYWNpbmcsIDAuMTZweCk7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgYmxvY2stc2l6ZTogMi41cmVtO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgaW5saW5lLXNpemU6IDIuNXJlbTtcXG59XFxuLndjU1REdUhcXFxcK1BqUDlreEtcXFxcK3BqM0NVd1xcXFw9XFxcXD06bm90KFtkYXRhLXNlbGVjdGVkXSk6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgYmxvY2stc2l6ZTogMC4yNXJlbTtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgaW5saW5lLXNpemU6IDAuMjVyZW07XFxuICBpbnNldC1ibG9jay1lbmQ6IDAuNDM3NXJlbTtcXG4gIGluc2V0LWlubGluZS1zdGFydDogNTAlO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XFxufVxcbi53Y1NURHVIXFxcXCtQalA5a3hLXFxcXCtwajNDVXdcXFxcPVxcXFw9Om5vdChbZGF0YS1zZWxlY3RlZF0pW2RhdGEtZGlzYWJsZWRdOjphZnRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtdGV4dC1kaXNhYmxlZCwgcmdiYSgyMiwgMjIsIDIyLCAwLjI1KSk7XFxufVxcbi53Y1NURHVIXFxcXCtQalA5a3hLXFxcXCtwajNDVXdcXFxcPVxcXFw9Om5vdChbZGF0YS1zZWxlY3RlZF0pOm5vdChbZGF0YS1kaXNhYmxlZF0pOjphZnRlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtbGluay1wcmltYXJ5LCB2YXIoLS1jZHMtbGluay1wcmltYXJ5LCAjMGY2MmZlKSk7XFxufVxcblxcbltkaXI9XFxcInJ0bFxcXCJdIC5fOGREOFRiOUpJdnRYaUstSC1tNThcXFxcK1FcXFxcPVxcXFw9LCBbZGlyPVxcXCJydGxcXFwiXSAubWl5R0Jrc0REdzZJQWdEcThvRWlNd1xcXFw9XFxcXD0ge1xcbiAgcGFkZGluZy1sZWZ0OiB1bnNldDtcXG4gIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XFxufVxcbltkaXI9XFxcInJ0bFxcXCJdIC5QQUk0RlZHMmhqMzV4RGh6SUYtamFRXFxcXD1cXFxcPSB7XFxuICBwYWRkaW5nLXJpZ2h0OiAwO1xcbn1cXG5bZGlyPVxcXCJydGxcXFwiXSAuQ3lYTUFJQ21LRzZKSVlrOVY3eU05QVxcXFw9XFxcXD0gZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9bnVtZXJpY10pID4gaW5wdXRbaW5wdXRtb2RlPW51bWVyaWNdIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW07XFxufVxcbltkaXI9XFxcInJ0bFxcXCJdIC5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBidXR0b25bc2xvdD1pbmNyZW1lbnRdIHtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IHVuc2V0O1xcbiAgcmlnaHQ6IDA7XFxufVxcbltkaXI9XFxcInJ0bFxcXCJdIC5DeVhNQUlDbUtHNkpJWWs5Vjd5TTlBXFxcXD1cXFxcPSBidXR0b25bc2xvdD1kZWNyZW1lbnRdIHtcXG4gIHRvcDogMC43NXJlbTtcXG4gIGxlZnQ6IHVuc2V0O1xcbiAgcmlnaHQ6IDA7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9kaXN0L192YXJzLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9kaXN0L2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vc3R5bGVzL3Njc3MvdXRpbGl0aWVzL19mb2N1cy1vdXRsaW5lLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3RoZW1lcy9zY3NzL2dlbmVyYXRlZC9fdG9rZW5zLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3N0eWxlcy9zY3NzL3RoZW1lL190aGVtZS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGNhcmJvbi9sYXlvdXQvc2Nzcy9nZW5lcmF0ZWQvX3NwYWNpbmcuc2Nzc1wiLFwid2VicGFjazovLy4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vc3R5bGVzL3Njc3MvdXRpbGl0aWVzL19ib3gtc2hhZG93LnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3N0eWxlcy9zY3NzL3V0aWxpdGllcy9fY29tcG9uZW50LXJlc2V0LnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3R5cGUvc2Nzcy9fc3R5bGVzLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AY2FyYm9uL3N0eWxlcy9zY3NzL2NvbXBvbmVudHMvYnV0dG9uL190b2tlbnMuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFrQ0EsMEVBQUE7QUFvQkE7RUFDRSxtQkFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSx5QkFBQTtFQUNBLCtCQUFBO0VBQ0Esb0dBQUE7RUFDQSwyR0FBQTtBQ3BERjs7QURnRUEsOERBQUE7QUM3REE7RUFDRSxtQkFBQTtFQUNBLGtDQUFBO0VBQ0Esb0RBQUE7RUFD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QTtFQUNBLG9CSXRiUztFSnViVCwwQkFBQTtFQUNBLHVCQUFBO0VBQ0EsbUNBQUE7RUFDQSwyQkFBQTtBQWVKO0FBWkU7RUFDRSxrRUU1T1k7QUYwUGhCO0FBWEU7RUFDRSwyRUFBQTtBQWFKOztBQVBFO0VBQ0UsbUJBQUE7RUFDQSxzQkloY1M7QUowY2I7QUFQRTtFQUNFLGdCQUFBO0FBU0o7QUFKTTtFQUNFLHNCSXBkSztBSjBkYjtBQURNO0VBQ0UsTUFBQTtFQUNBLFdBQUE7RUFDQSxRQUFBO0FBR1I7QUFBTTtFQUNFLFlJdGRLO0VKdWRMLFdBQUE7RUFDQSxRQUFBO0FBRVJcIixcInNvdXJjZXNDb250ZW50XCI6W1wiQHVzZSAnQGNhcmJvbi9sYXlvdXQnO1xcblxcbiR1aS0wMTogI2Y0ZjRmNDtcXG4kdWktMDI6ICNmZmZmZmY7XFxuJHVpLTAzOiAjZTBlMGUwO1xcbiR1aS0wNDogIzhkOGQ4ZDtcXG4kdWktMDU6ICMxNjE2MTY7XFxuJHRleHQtMDI6ICM1MjUyNTI7XFxuJHRleHQtMDM6ICNhOGE4YTg7XFxuJHVpLWJhY2tncm91bmQ6ICNmZmZmZmY7XFxuJGNvbG9yLWdyYXktMzA6ICNjNmM2YzY7XFxuJGNvbG9yLWdyYXktNzA6ICM1MjUyNTI7XFxuJGNvbG9yLWdyYXktMTAwOiAjMTYxNjE2O1xcbiRjb2xvci1ibHVlLTYwLTI6ICMwZjYyZmU7XFxuJGNvbG9yLWJsdWUtMTA6ICNlZGY1ZmY7XFxuJGNvbG9yLXllbGxvdy01MDogI2ZlZWNhZTtcXG4kY2FyYm9uLS1yZWQtNTA6ICNmYTRkNTY7XFxuJGludmVyc2UtbGluazogIzc4YTlmZjtcXG4kc3VwcG9ydC0wMjogIzI0YTE0ODtcXG4kaW52ZXJzZS1zdXBwb3J0LTAzOiAjZjFjMjFiO1xcbiR3YXJuaW5nLWJhY2tncm91bmQ6ICNmZmY4ZTE7XFxuJG9wZW5tcnMtYmFja2dyb3VuZC1ncmV5OiAjZjRmNGY0O1xcbiRkYW5nZXI6ICNkYTFlMjg7XFxuJGludGVyYWN0aXZlLTAxOiAjMGY2MmZlO1xcbiRmaWVsZC0wMTogI2Y0ZjRmNDtcXG4kZ3JleS0yOiAjZTBlMGUwO1xcbiRsYWJlbGRyb3Bkb3duOiAjYzZjNmM2O1xcblxcbiRicmFuZC1wcmltYXJ5LTEwOiAjZDlmYmZiO1xcbiRicmFuZC1wcmltYXJ5LTIwOiAjOWVmMGYwO1xcbiRicmFuZC1wcmltYXJ5LTMwOiAjM2RkYmQ5O1xcbiRicmFuZC1wcmltYXJ5LTQwOiAjMDhiZGJhO1xcbiRicmFuZC1wcmltYXJ5LTUwOiAjMDA5ZDlhO1xcblxcbi8qIDYwLDcwIGFuZCA4MCBhcmUgYWxyZWFkeSBkZWNsYXJlZCBhcyBicmFuZC0wMSwgMDIgYW5kIDAzIHJlc3BlY3RpdmVseSAqL1xcblxcbiRicmFuZC1wcmltYXJ5LTkwOiAjMDIyYjMwO1xcbiRicmFuZC1wcmltYXJ5LTEwMDogIzA4MWExYztcXG5cXG5AbWl4aW4gYnJhbmQtMDEoJHByb3BlcnR5KSB7XFxuICAjeyRwcm9wZXJ0eX06ICMwMDVkNWQ7XFxuICAjeyRwcm9wZXJ0eX06IHZhcigtLWJyYW5kLTAxKTtcXG59XFxuXFxuQG1peGluIGJyYW5kLTAyKCRwcm9wZXJ0eSkge1xcbiAgI3skcHJvcGVydHl9OiAjMDA0MTQ0O1xcbiAgI3skcHJvcGVydHl9OiB2YXIoLS1icmFuZC0wMik7XFxufVxcblxcbkBtaXhpbiBicmFuZC0wMygkcHJvcGVydHkpIHtcXG4gICN7JHByb3BlcnR5fTogIzAwN2Q3OTtcXG4gICN7JHByb3BlcnR5fTogdmFyKC0tYnJhbmQtMDMpO1xcbn1cXG5cXG46cm9vdCB7XFxuICAtLWJyYW5kLTAxOiAjMDA1ZDVkO1xcbiAgLS1icmFuZC0wMjogIzAwNDE0NDtcXG4gIC0tYnJhbmQtMDM6ICMwMDdkNzk7XFxuICAtLWJvdHRvbS1uYXYtaGVpZ2h0OiAje2xheW91dC4kc3BhY2luZy0xMH07XFxuICAtLXdvcmtzcGFjZS1oZWFkZXItaGVpZ2h0OiAje2xheW91dC4kc3BhY2luZy0wOX07XFxuICAtLXRhYmxldC13b3Jrc3BhY2Utd2luZG93LWhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLW9tcnMtbmF2YmFyLWhlaWdodCkgLSB2YXIoLS1ib3R0b20tbmF2LWhlaWdodCkpO1xcbiAgLS1kZXNrdG9wLXdvcmtzcGFjZS13aW5kb3ctaGVpZ2h0OiBjYWxjKDEwMHZoIC0gdmFyKC0tb21ycy1uYXZiYXItaGVpZ2h0KSAtIHZhcigtLXdvcmtzcGFjZS1oZWFkZXItaGVpZ2h0KSk7XFxufVxcblxcbiRicmVha3BvaW50LXBob25lLW1pbjogMHB4O1xcbiRicmVha3BvaW50LXBob25lLW1heDogNjAwcHg7XFxuJGJyZWFrcG9pbnQtdGFibGV0LW1pbjogNjAxcHg7XFxuJGJyZWFrcG9pbnQtdGFibGV0LW1heDogMTAyM3B4O1xcbiRicmVha3BvaW50LXNtYWxsLWRlc2t0b3AtbWluOiAxMDI0cHg7XFxuJGJyZWFrcG9pbnQtc21hbGwtZGVza3RvcC1tYXg6IDE0MzlweDtcXG4kYnJlYWtwb2ludC1sYXJnZS1kZXNrdG9wLW1pbjogMTQ0MHB4O1xcbiRicmVha3BvaW50LWxhcmdlLWRlc2t0b3AtbWF4OiA5OTk5OTk5OXB4O1xcblxcbi8qIFRoZXNlIGNvbG9yIHZhcmlhYmxlcyB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZSAqL1xcbiRicmFuZC10ZWFsLTAxOiAjMDA3ZDc5O1xcbiRicmFuZC0wMTogIzAwNWQ1ZDtcXG4kYnJhbmQtMDI6ICMwMDQxNDQ7XFxuXCIsXCJAdXNlICdAY2FyYm9uL3N0eWxlcy9zY3NzL21vdGlvbic7XFxuQHVzZSAnQGNhcmJvbi9sYXlvdXQnO1xcbkB1c2UgJ0BjYXJib24vc3R5bGVzL3Njc3MvdGhlbWUnO1xcbkB1c2UgJ0BjYXJib24vdHlwZSc7XFxuLy8gYC4uLi9jb21wb25lbnRzL2J1dHRvbmAgd291bGQgZW1pdCBDYXJib24ncyBlbnRpcmUgYnV0dG9uIHN0eWxlc2hlZXQ7IHRoZSB0b2tlbnMgbW9kdWxlIGVtaXRzIG5vbmUuXFxuQHVzZSAnQGNhcmJvbi9zdHlsZXMvc2Nzcy9jb21wb25lbnRzL2J1dHRvbi90b2tlbnMnIGFzIGJ1dHRvbjtcXG5AdXNlICdAY2FyYm9uL3N0eWxlcy9zY3NzL3V0aWxpdGllcy9ib3gtc2hhZG93JztcXG5AdXNlICdAY2FyYm9uL3N0eWxlcy9zY3NzL3V0aWxpdGllcy9jb21wb25lbnQtcmVzZXQnO1xcbkB1c2UgJ0BjYXJib24vc3R5bGVzL3Njc3MvdXRpbGl0aWVzL2ZvY3VzLW91dGxpbmUnIGFzIGZvY3VzO1xcbkB1c2UgJy4uL3ZhcnMnIGFzICo7XFxuXFxuLy8gVGV4dCBmaWVsZCBmb3IgZGF0ZXNcXG4uaW5wdXRHcm91cCB7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2RzLWZpZWxkKTtcXG4gIGJvcmRlci1ibG9jay1lbmQ6IDFweCBzb2xpZCB2YXIoLS1jZHMtYm9yZGVyLXN0cm9uZyk7XFxuICBjb2xvcjogdmFyKC0tY2RzLXRleHQtcHJpbWFyeSk7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcblxcbiAgJjpmb2N1cy13aXRoaW4sXFxuICAmLmNkcy0tZm9jdXNlZCB7XFxuICAgIEBpbmNsdWRlIGZvY3VzLmZvY3VzLW91dGxpbmUoJ291dGxpbmUnKTtcXG4gIH1cXG5cXG4gICZbZGF0YS1pbnZhbGlkXSB7XFxuICAgIEBpbmNsdWRlIGZvY3VzLmZvY3VzLW91dGxpbmUoJ2ludmFsaWQnKTtcXG5cXG4gICAgJiB7XFxuICAgICAgY29sb3I6IHRoZW1lLiRzdXBwb3J0LWVycm9yO1xcbiAgICB9XFxuICB9XFxuXFxuICAmW2RhdGEtZGlzYWJsZWRdIHtcXG4gICAgYm9yZGVyLWJsb2NrLWVuZDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMCk7XFxuICAgIGNvbG9yOiB0aGVtZS4kdGV4dC1kaXNhYmxlZDtcXG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG4gIH1cXG59XFxuXFxuLy8gU2hhcmVkIHNlZ21lbnQgc3R5bGVzIHVzZWQgYnkgYm90aCBzaW5nbGUgYW5kIHJhbmdlIGlucHV0c1xcbiVpbnB1dFNlZ21lbnRTdHlsZXMge1xcbiAgY2FyZXQtY29sb3I6IHZhcigtLWNkcy10ZXh0LXByaW1hcnkpO1xcblxcbiAgJjpmb2N1cyB7XFxuICAgIG91dGxpbmU6IHVuc2V0O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZS4kbGF5ZXItc2VsZWN0ZWQtaG92ZXI7XFxuICB9XFxuXFxuICAmW2RhdGEtcGxhY2Vob2xkZXJdIHtcXG4gICAgY29sb3I6IHRoZW1lLiR0ZXh0LWRpc2FibGVkO1xcbiAgfVxcblxcbiAgJltkYXRhLWZvY3VzZWQ9J3RydWUnXSB7XFxuICAgIGFuaW1hdGlvbjogY3Vyc29yLWJsaW5rIDFzIHN0ZXAtZW5kIGluZmluaXRlO1xcbiAgfVxcblxcbiAgOmdsb2JhbChbZGlyPSdydGwnXSkgJltkYXRhLWZvY3VzZWQ9J3RydWUnXSB7XFxuICAgIGFuaW1hdGlvbjogY3Vyc29yLWJsaW5rLXJ0bCAxcyBzdGVwLWVuZCBpbmZpbml0ZTtcXG4gIH1cXG59XFxuXFxuLy8gU2hhcmVkIHJ1bGVzIGZvciBkaW1taW5nIHJlYWQtb25seSBzZXBhcmF0b3JzICgvLCAtLCBldGMuKSBhZGphY2VudCB0b1xcbi8vIHVuZmlsbGVkIHBsYWNlaG9sZGVycyBzbyB0aGV5IGRvbid0IGxvb2sgXFxcImFjdGl2ZVxcXCIgYmVmb3JlIHRoZSB1c2VyIHN0YXJ0cyB0eXBpbmcuXFxuJXJlYWRvbmx5UGxhY2Vob2xkZXJEaW1taW5nIHtcXG4gIFtkYXRhLXJlYWRvbmx5XTpoYXMoKyBbZGF0YS1wbGFjZWhvbGRlcl0pIHtcXG4gICAgY29sb3I6IHRoZW1lLiR0ZXh0LWRpc2FibGVkO1xcbiAgfVxcblxcbiAgW2RhdGEtcGxhY2Vob2xkZXJdICsgW2RhdGEtcmVhZG9ubHldIHtcXG4gICAgY29sb3I6IHRoZW1lLiR0ZXh0LWRpc2FibGVkO1xcbiAgfVxcbn1cXG5cXG4vLyBVc2UgcGh5c2ljYWwgYGJvcmRlci1yaWdodGAvYGJvcmRlci1sZWZ0YCByYXRoZXIgdGhhbiBsb2dpY2FsIGBib3JkZXItaW5saW5lLWVuZGA6XFxuLy8gYSBQb3N0Q1NTIHBsdWdpbiBpbiB0aGUgYnVpbGQgcGlwZWxpbmUgaW5jb3JyZWN0bHkgaG9pc3RzIGBib3JkZXItaW5saW5lLWVuZGBcXG4vLyBvdXQgb2YgQGtleWZyYW1lcyBhbmQgcmUtZW1pdHMgaXQgYXMgYSBzdGF0aWMgYGJvcmRlci1yaWdodGAgb24gc2VsZWN0b3JzIHRoYXRcXG4vLyByZWZlcmVuY2UgdGhlIGFuaW1hdGlvbiwgd2hpY2ggcHJvZHVjZWQgYSBwZXJtYW5lbnQgdmVydGljYWwgbGluZSBvbiB0aGVcXG4vLyBkYXRlIGlucHV0IHdyYXBwZXJzIGluIExUUiBjb250ZXh0cy5cXG5Aa2V5ZnJhbWVzIGN1cnNvci1ibGluayB7XFxuICBmcm9tLFxcbiAgdG8ge1xcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIH1cXG4gIDUwJSB7XFxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcXG4gIH1cXG59XFxuXFxuQGtleWZyYW1lcyBjdXJzb3ItYmxpbmstcnRsIHtcXG4gIGZyb20sXFxuICB0byB7XFxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICB9XFxuICA1MCUge1xcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcXG4gIH1cXG59XFxuXFxuLy8gU2luZ2xlIGRhdGUgcGlja2VyIGlucHV0XFxuLmlucHV0V3JhcHBlciB7XFxuICBpbmxpbmUtc2l6ZTogMTVyZW07XFxuICBtYXJnaW4tbGVmdDogbGF5b3V0LiRzcGFjaW5nLTA1O1xcbiAgbWluLXdpZHRoOiBsYXlvdXQuJHNwYWNpbmctMTM7XFxuICBtYXgtd2lkdGg6IDE1cmVtO1xcblxcbiAgJiAuaW5wdXRTZWdtZW50IHtcXG4gICAgQGV4dGVuZCAlaW5wdXRTZWdtZW50U3R5bGVzO1xcbiAgfVxcblxcbiAgQGV4dGVuZCAlcmVhZG9ubHlQbGFjZWhvbGRlckRpbW1pbmc7XFxufVxcblxcbi5pbnB1dFdyYXBwZXJNZCB7XFxuICBibG9jay1zaXplOiBsYXlvdXQuJHNwYWNpbmctMDg7XFxufVxcblxcbi5pbnB1dFdyYXBwZXJTbSB7XFxuICBibG9jay1zaXplOiBsYXlvdXQuJHNwYWNpbmctMDc7XFxufVxcblxcbi5pbnB1dFdyYXBwZXJMZyB7XFxuICBibG9jay1zaXplOiBsYXlvdXQuJHNwYWNpbmctMDk7XFxufVxcblxcbi8vIFJhbmdlIGRhdGUgcGlja2VyIGlucHV0c1xcbi5pbnB1dHNXcmFwcGVyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBtaW4td2lkdGg6IDEwcmVtO1xcbiAgbWF4LXdpZHRoOiAxNXJlbTtcXG4gIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDFyZW07XFxuICBpbmxpbmUtc2l6ZTogMTVyZW07XFxufVxcblxcbi5pbnB1dHNXcmFwcGVyU20ge1xcbiAgYmxvY2stc2l6ZTogbGF5b3V0LiRzcGFjaW5nLTA3O1xcbn1cXG5cXG4uaW5wdXRzV3JhcHBlck1kIHtcXG4gIGJsb2NrLXNpemU6IGxheW91dC4kc3BhY2luZy0wODtcXG59XFxuXFxuLmlucHV0c1dyYXBwZXJMZyB7XFxuICBibG9jay1zaXplOiBsYXlvdXQuJHNwYWNpbmctMDk7XFxufVxcblxcbi5kYXRlSW5wdXRXcmFwcGVyIHtcXG4gIEBleHRlbmQgLmlucHV0V3JhcHBlcjtcXG4gIG1pbi13aWR0aDogdW5zZXQ7XFxuICBtYXJnaW46IDBweDtcXG59XFxuXFxuLnN0YXJ0SW5wdXQge1xcbiAgZmxleC1iYXNpczogZml0LWNvbnRlbnQ7XFxufVxcblxcbi5lbmRJbnB1dCB7XFxuICBwYWRkaW5nLXJpZ2h0OiB1bnNldDtcXG59XFxuXFxuLnNlcGFyYXRvciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIG1hcmdpbi1pbmxpbmU6IDAuNXJlbTtcXG59XFxuXFxuLmlucHV0R3JvdXA6aGFzKFtkYXRhLXBsYWNlaG9sZGVyXSkgPiAuaW5wdXRzV3JhcHBlciA+IC5zZXBhcmF0b3IgPiBzcGFuIHtcXG4gIGNvbG9yOiB0aGVtZS4kdGV4dC1kaXNhYmxlZDtcXG59XFxuXFxuLmludmFsaWRUZXh0IHtcXG4gIGNvbG9yOiB0aGVtZS4kdGV4dC1lcnJvciAhaW1wb3J0YW50O1xcbiAgZm9udC1zaXplOiBsYXlvdXQuJHNwYWNpbmctMDQ7XFxuICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7XFxuICBtYXJnaW46IGxheW91dC4kc3BhY2luZy0wMiAwIDA7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG5cXG4vLyBVc2VkIGZvciBjYWxlbmRhciBwb3Atb3ZlclxcbkBrZXlmcmFtZXMgZXhwYW5kLWluIHtcXG4gIGZyb20ge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTMpO1xcbiAgfVxcblxcbiAgdG8ge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xcbiAgfVxcbn1cXG5cXG4ucG9wb3ZlciB7XFxuICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgY2VudGVyO1xcbn1cXG5cXG4vLyBXaGVuIHRoZSBwb3BvdmVyIGZsaXBzIGFib3ZlIHRoZSB0cmlnZ2VyIChuZWFyIGJvdHRvbSBvZiB2aWV3cG9ydCksIGFuY2hvciBmcm9tIHRoZSBib3R0b21cXG4ucG9wb3ZlcltkYXRhLXBsYWNlbWVudD0ndG9wJ10sXFxuLnBvcG92ZXJbZGF0YS1wbGFjZW1lbnQ9J3RvcC1zdGFydCddLFxcbi5wb3BvdmVyW2RhdGEtcGxhY2VtZW50PSd0b3AtZW5kJ10ge1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIGNlbnRlcjtcXG59XFxuXFxuLnBvcG92ZXJbZGF0YS1lbnRlcmluZ10ge1xcbiAgYW5pbWF0aW9uOiBleHBhbmQtaW4gbW90aW9uLiRkdXJhdGlvbi1mYXN0LTAyIG1vdGlvbi5tb3Rpb24oZW50cmFuY2UsIHByb2R1Y3RpdmUpO1xcblxcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xcbiAgICBhbmltYXRpb246IG5vbmU7XFxuICB9XFxufVxcblxcbi5kaWFsb2cge1xcbiAgQGluY2x1ZGUgYm94LXNoYWRvdy5ib3gtc2hhZG93O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWUuJGxheWVyLTAxO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHBhZGRpbmc6IGxheW91dC4kc3BhY2luZy0wMiBsYXlvdXQuJHNwYWNpbmctMDIgbGF5b3V0LiRzcGFjaW5nLTAzIGxheW91dC4kc3BhY2luZy0wMjtcXG59XFxuXFxuLy8gTmF2aWdhdGlvbiBoZWFkZXIgKHByZXYvbmV4dCBidXR0b25zICsgbW9udGgveWVhciBkaXNwbGF5KVxcbi5oZWFkZXIge1xcbiAgbWFyZ2luLXRvcDogbGF5b3V0LiRzcGFjaW5nLTAzO1xcbiAgbWFyZ2luLWJvdHRvbTogbGF5b3V0LiRzcGFjaW5nLTAzO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuICBmbGV4LXdyYXA6IG5vd3JhcDtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG59XFxuXFxuLmZsYXRCdXR0b24ge1xcbiAgQGluY2x1ZGUgY29tcG9uZW50LXJlc2V0LnJlc2V0O1xcblxcbiAgJiB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgfVxcblxcbiAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lLiRsYXllci1ob3ZlcjtcXG4gIH1cXG5cXG4gICY6ZGlzYWJsZWQgPiBzdmcge1xcbiAgICBmaWxsOiB0aGVtZS4kdGV4dC1kaXNhYmxlZDtcXG4gIH1cXG5cXG4gICYgPiBzdmcge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgbWFyZ2luOiBhdXRvO1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB9XFxufVxcblxcbltkYXRhLWludmFsaWRdID4gLmZsYXRCdXR0b24gPiBzdmcge1xcbiAgLS1vbXJzLWljb24tZmlsbDogI3t0aGVtZS4kc3VwcG9ydC1lcnJvcn07XFxufVxcblxcbi5mbGF0QnV0dG9uTWQge1xcbiAgaGVpZ2h0OiBsYXlvdXQuJHNwYWNpbmctMDg7XFxuICB3aWR0aDogbGF5b3V0LiRzcGFjaW5nLTA4O1xcbn1cXG5cXG4uZmxhdEJ1dHRvblNtIHtcXG4gIGhlaWdodDogbGF5b3V0LiRzcGFjaW5nLTA3O1xcbiAgd2lkdGg6IGxheW91dC4kc3BhY2luZy0wNztcXG59XFxuXFxuLmZsYXRCdXR0b25MZyB7XFxuICBoZWlnaHQ6IGxheW91dC4kc3BhY2luZy0wOTtcXG4gIHdpZHRoOiBsYXlvdXQuJHNwYWNpbmctMDk7XFxufVxcblxcbi5tb250aFllYXIge1xcbiAgQGluY2x1ZGUgY29tcG9uZW50LXJlc2V0LnJlc2V0O1xcbiAgQGluY2x1ZGUgdHlwZS50eXBlLXN0eWxlKCdoZWFkaW5nLWNvbXBhY3QtMDEnKTtcXG5cXG4gICYge1xcbiAgICBtYXJnaW4tdG9wOiBsYXlvdXQuJHNwYWNpbmctMDM7XFxuICAgIG1hcmdpbi1ibG9jay1lbmQ6IGxheW91dC4kc3BhY2luZy0wMTtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgfVxcblxcbiAgJiA+IHNwYW4ge1xcbiAgICBtYXJnaW4tbGVmdDogbGF5b3V0LiRzcGFjaW5nLTAyO1xcbiAgICBtYXJnaW4tcmlnaHQ6IGxheW91dC4kc3BhY2luZy0wMjtcXG4gIH1cXG5cXG4gICYgZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9J251bWVyaWMnXSkge1xcbiAgICBkaXNwbGF5OiBpbmxpbmU7XFxuXFxuICAgICYgPiBpbnB1dFtpbnB1dG1vZGU9J251bWVyaWMnXSB7XFxuICAgICAgQGluY2x1ZGUgY29tcG9uZW50LXJlc2V0LnJlc2V0O1xcbiAgICAgIEBpbmNsdWRlIHR5cGUudHlwZS1zdHlsZSgnaGVhZGluZy1jb21wYWN0LTAxJyk7XFxuXFxuICAgICAgJiB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtZmllbGQpO1xcbiAgICAgICAgaW5saW5lLXNpemU6IGxheW91dC4kc3BhY2luZy0wODtcXG4gICAgICAgIHBhZGRpbmc6IGxheW91dC4kc3BhY2luZy0wMjtcXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XFxuICAgICAgfVxcblxcbiAgICAgICY6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sXFxuICAgICAgJjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7XFxuICAgICAgICBtYXJnaW46IDA7XFxuICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XFxuICAgICAgfVxcblxcbiAgICAgICY6Zm9jdXMge1xcbiAgICAgICAgQGluY2x1ZGUgZm9jdXMuZm9jdXMtb3V0bGluZSgnYm9yZGVyJyk7XFxuICAgICAgfVxcblxcbiAgICAgICZbZGF0YS1pbnZhbGlkXSB7XFxuICAgICAgICBAaW5jbHVkZSBmb2N1cy5mb2N1cy1vdXRsaW5lKCdpbnZhbGlkJyk7XFxuICAgICAgfVxcblxcbiAgICAgICZbZGF0YS1kaXNhYmxlZF0sXFxuICAgICAgJltkYXRhLWRpc2FibGVkXTpob3ZlciB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZS4kbGF5ZXItMDE7XFxuICAgICAgICBjb2xvcjogdGhlbWUuJHRleHQtZGlzYWJsZWQ7XFxuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gICAgICB9XFxuXFxuICAgICAgJltkYXRhLWRpc2FibGVkXSArIGRpdiA+IGJ1dHRvbjo6YWZ0ZXIge1xcbiAgICAgICAgYm9yZGVyLWJsb2NrLWVuZC1jb2xvcjogdGhlbWUuJHRleHQtZGlzYWJsZWQ7XFxuICAgICAgICBib3JkZXItYmxvY2stc3RhcnQtY29sb3I6IHRoZW1lLiR0ZXh0LWRpc2FibGVkO1xcbiAgICAgIH1cXG5cXG4gICAgICAmW2RhdGEtZGlzYWJsZWRdICsgZGl2ID4gYnV0dG9uOmhvdmVyIHtcXG4gICAgICAgIG9wYWNpdHk6IDA7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgICYgZGl2W3JvbGU9J2dyb3VwJ10ge1xcbiAgICAgIEBpbmNsdWRlIGNvbXBvbmVudC1yZXNldC5yZXNldDtcXG5cXG4gICAgICAmIHtcXG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgJjpob3ZlciBidXR0b24ge1xcbiAgICAgIG9wYWNpdHk6IDE7XFxuICAgIH1cXG5cXG4gICAgJiBidXR0b24ge1xcbiAgICAgIEBpbmNsdWRlIGNvbXBvbmVudC1yZXNldC5yZXNldDtcXG5cXG4gICAgICAmIHtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHBhZGRpbmctYmxvY2s6IDA7XFxuICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogbGF5b3V0LiRzcGFjaW5nLTAxO1xcbiAgICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiBsYXlvdXQuJHNwYWNpbmctMDI7XFxuICAgICAgICBib3JkZXI6IG5vbmU7XFxuICAgICAgICBibG9jay1zaXplOiA1MCU7XFxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgICAgICBpbmxpbmUtc2l6ZTogbGF5b3V0LiRzcGFjaW5nLTA0O1xcbiAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiBsYXlvdXQuJHNwYWNpbmctMDg7XFxuICAgICAgICBsaW5lLWhlaWdodDogNTAlO1xcbiAgICAgICAgb3BhY2l0eTogMDtcXG4gICAgICB9XFxuXFxuICAgICAgJjo6YWZ0ZXIge1xcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgICBib3JkZXItaW5saW5lLWVuZDogbGF5b3V0LiRzcGFjaW5nLTAyIHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgICAgICAgYm9yZGVyLWlubGluZS1zdGFydDogbGF5b3V0LiRzcGFjaW5nLTAyIHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICBpbnNldC1ibG9jay1zdGFydDogMzMlO1xcbiAgICAgIH1cXG5cXG4gICAgICAmOmhvdmVyOjphZnRlciB7XFxuICAgICAgICBib3JkZXItYmxvY2stZW5kLWNvbG9yOiBidXR0b24uJGJ1dHRvbi1wcmltYXJ5O1xcbiAgICAgICAgYm9yZGVyLWJsb2NrLXN0YXJ0LWNvbG9yOiBidXR0b24uJGJ1dHRvbi1wcmltYXJ5O1xcbiAgICAgIH1cXG5cXG4gICAgICAmOmFjdGl2ZTo6YWZ0ZXIge1xcbiAgICAgICAgYm9yZGVyLWJsb2NrLWVuZC1jb2xvcjogdGhlbWUuJGJvcmRlci1pbnRlcmFjdGl2ZTtcXG4gICAgICAgIGJvcmRlci1ibG9jay1zdGFydC1jb2xvcjogdGhlbWUuJGJvcmRlci1pbnRlcmFjdGl2ZTtcXG4gICAgICB9XFxuXFxuICAgICAgJltzbG90PSdpbmNyZW1lbnQnXSB7XFxuICAgICAgICB0b3A6IDA7XFxuICAgICAgICBsZWZ0OiAwO1xcbiAgICAgIH1cXG5cXG4gICAgICAmW3Nsb3Q9J2RlY3JlbWVudCddIHtcXG4gICAgICAgIHRvcDogbGF5b3V0LiRzcGFjaW5nLTA0O1xcbiAgICAgICAgbGVmdDogMDtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLy8gQ2FsZW5kYXIgZ3JpZCBhbmQgZGF5IGNlbGxzXFxuXFxuLmNhbGVuZGFyR3JpZCB7XFxuICB3aWR0aDogMTdyZW07XFxuXFxuICAmIHRyLFxcbiAgJiB0ciA+IHRoLFxcbiAgJiB0ciA+IHRkIHtcXG4gICAgaGVpZ2h0OiAyLjQyOHJlbTtcXG4gICAgd2lkdGg6IDIuNDI4cmVtO1xcbiAgfVxcblxcbiAgJiA+IHRoZWFkID4gdHIgPiB0aCB7XFxuICAgIEBpbmNsdWRlIHR5cGUudHlwZS1zdHlsZSgnYm9keS1jb21wYWN0LTAxJyk7XFxuICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgfVxcblxcbiAgJiA+IHRib2R5ID4gdHIgPiB0ZCB7XFxuICAgIEBpbmNsdWRlIHR5cGUudHlwZS1zdHlsZSgnYm9keS1jb21wYWN0LTAxJyk7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcblxcbiAgICAmID4gZGl2IHtcXG4gICAgICBvdXRsaW5lOiB1bnNldDtcXG4gICAgfVxcblxcbiAgICAmOmhvdmVyOm5vdCg6aGFzKFthcmlhLWRpc2FibGVkXSwgW2RhdGEtc2VsZWN0ZWRdKSkge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lLiRsYXllci1ob3ZlcjtcXG4gICAgfVxcblxcbiAgICAmOmhhcyhbZGF0YS1zZWxlY3RlZF0pIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmx1ZS02MC0yO1xcbiAgICAgIGNvbG9yOiAkdWktYmFja2dyb3VuZDtcXG4gICAgfVxcblxcbiAgICAmW2FyaWEtZGlzYWJsZWRdIHtcXG4gICAgICBjb2xvcjogdGhlbWUuJHRleHQtZGlzYWJsZWQ7XFxuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICB9XFxuICB9XFxufVxcblxcbi50b2RheTpub3QoW2RhdGEtc2VsZWN0ZWRdKSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBjb2xvcjogJGNvbG9yLWJsdWUtNjAtMjtcXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICBmb250LXNpemU6IHZhcigtLWNkcy1ib2R5LWNvbXBhY3QtMDEtZm9udC1zaXplLCAwLjg3NXJlbSk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMS1saW5lLWhlaWdodCwgMS4yODU3Mik7XFxuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tY2RzLWJvZHktY29tcGFjdC0wMS1sZXR0ZXItc3BhY2luZywgMC4xNnB4KTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBibG9jay1zaXplOiBsYXlvdXQuJHNwYWNpbmctMDg7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICBpbmxpbmUtc2l6ZTogbGF5b3V0LiRzcGFjaW5nLTA4O1xcblxcbiAgJjo6YWZ0ZXIge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBibG9jay1zaXplOiBsYXlvdXQuJHNwYWNpbmctMDI7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBpbmxpbmUtc2l6ZTogbGF5b3V0LiRzcGFjaW5nLTAyO1xcbiAgICBpbnNldC1ibG9jay1lbmQ6IDAuNDM3NXJlbTtcXG4gICAgaW5zZXQtaW5saW5lLXN0YXJ0OiA1MCU7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XFxuICB9XFxuXFxuICAmW2RhdGEtZGlzYWJsZWRdOjphZnRlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lLiR0ZXh0LWRpc2FibGVkO1xcbiAgfVxcblxcbiAgJjpub3QoW2RhdGEtZGlzYWJsZWRdKTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jZHMtbGluay1wcmltYXJ5LCB0aGVtZS4kbGluay1wcmltYXJ5KTtcXG4gIH1cXG59XFxuXFxuLy8gUlRMIG92ZXJyaWRlc1xcbjpnbG9iYWwoW2Rpcj0ncnRsJ10pIHtcXG4gIC5pbnB1dFdyYXBwZXIge1xcbiAgICBwYWRkaW5nLWxlZnQ6IHVuc2V0O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiBsYXlvdXQuJHNwYWNpbmctMDQ7XFxuICB9XFxuXFxuICAuZW5kSW5wdXQge1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xcbiAgfVxcblxcbiAgLm1vbnRoWWVhciB7XFxuICAgICYgZGl2OmhhcyhpbnB1dFtpbnB1dG1vZGU9J251bWVyaWMnXSkge1xcbiAgICAgID4gaW5wdXRbaW5wdXRtb2RlPSdudW1lcmljJ10ge1xcbiAgICAgICAgcGFkZGluZy1yaWdodDogbGF5b3V0LiRzcGFjaW5nLTAyO1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmIGJ1dHRvbiB7XFxuICAgICAgJltzbG90PSdpbmNyZW1lbnQnXSB7XFxuICAgICAgICB0b3A6IDA7XFxuICAgICAgICBsZWZ0OiB1bnNldDtcXG4gICAgICAgIHJpZ2h0OiAwO1xcbiAgICAgIH1cXG5cXG4gICAgICAmW3Nsb3Q9J2RlY3JlbWVudCddIHtcXG4gICAgICAgIHRvcDogbGF5b3V0LiRzcGFjaW5nLTA0O1xcbiAgICAgICAgbGVmdDogdW5zZXQ7XFxuICAgICAgICByaWdodDogMDtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXCIsXCIvL1xcbi8vIENvcHlyaWdodCBJQk0gQ29ycC4gMjAyMVxcbi8vXFxuLy8gVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbi8vIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4vL1xcblxcbkB1c2UgJy4uL3RoZW1lJztcXG5cXG4vLy8gQWRkcyBvdXRsaW5lIHN0eWxlcyBkZXBlbmRpbmcgb24gc3BlY2lmaWMgdHlwZVxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHR5cGUgWydib3JkZXInXSAtIFR5cGUgb2Ygb3V0bGluZSBmcm9tOiBgYm9yZGVyYCwgYGJsdXJyZWRgLCBgb3V0bGluZWAsIGBpbnZhbGlkYCwgYHJlc2V0YFxcbi8vLyBAZXhhbXBsZSBAaW5jbHVkZSBmb2N1cy1vdXRsaW5lKCdvdXRsaW5lJyk7XFxuLy8vIEBncm91cCB1dGlsaXRpZXNcXG5AbWl4aW4gZm9jdXMtb3V0bGluZSgkdHlwZTogJ2JvcmRlcicpIHtcXG4gIEBpZiAoJHR5cGUgPT0gJ2JvcmRlcicpIHtcXG4gICAgb3V0bGluZTogMXB4IHNvbGlkIHRoZW1lLiRmb2N1cztcXG5cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtY29udHJhc3QpIHtcXG4gICAgICBvdXRsaW5lLXN0eWxlOiBkb3R0ZWQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gIEBpZiAoJHR5cGUgPT0gJ2JsdXJyZWQnKSB7XFxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCB0aGVtZS4kZm9jdXM7XFxuICAgIG91dGxpbmU6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIH1cXG5cXG4gIEBpZiAoJHR5cGUgPT0gJ291dGxpbmUnKSB7XFxuICAgIG91dGxpbmU6IDJweCBzb2xpZCB0aGVtZS4kZm9jdXM7XFxuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xcblxcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1jb250cmFzdCkge1xcbiAgICAgIG91dGxpbmUtc3R5bGU6IGRvdHRlZDtcXG4gICAgfVxcbiAgfVxcblxcbiAgQGlmICgkdHlwZSA9PSAnb3V0bGluZS1jb21wYXQnKSB7XFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgIGJvcmRlcjogMnB4IHNvbGlkIHRoZW1lLiRmb2N1cztcXG5cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtY29udHJhc3QpIHtcXG4gICAgICBib3JkZXItc3R5bGU6IGRvdHRlZDtcXG4gICAgfVxcbiAgfVxcblxcbiAgQGlmICgkdHlwZSA9PSAnaW52YWxpZCcpIHtcXG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHRoZW1lLiRzdXBwb3J0LWVycm9yO1xcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcXG5cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtY29udHJhc3QpIHtcXG4gICAgICBvdXRsaW5lLXN0eWxlOiBkb3R0ZWQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gIEBpZiAoJHR5cGUgPT0gJ3Jlc2V0Jykge1xcbiAgICBvdXRsaW5lOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xcbiAgfVxcbn1cXG5cIixcIi8vIENvZGUgZ2VuZXJhdGVkIGJ5IEBjYXJib24vdGhlbWVzLiBETyBOT1QgRURJVC5cXG4vL1xcbi8vIENvcHlyaWdodCBJQk0gQ29ycC4gMjAxOCwgMjAyM1xcbi8vXFxuLy8gVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbi8vIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4vL1xcblxcbkB1c2UgJ3Nhc3M6bWFwJztcXG5AdXNlICcuLi9jb25maWcnO1xcbkB1c2UgJy4uL3RoZW1lJztcXG5cXG4vLy8gSW50ZXJuYWwgaGVscGVyIGZvciBnZW5lcmF0aW5nIENTUyBDdXN0b20gUHJvcGVydGllc1xcbkBmdW5jdGlvbiBfZ2V0KCR0b2tlbikge1xcbiAgQGlmIGNvbmZpZy4kdXNlLWZhbGxiYWNrLXZhbHVlID09IGZhbHNlIHtcXG4gICAgQHJldHVybiB2YXIoLS0je2NvbmZpZy4kcHJlZml4fS0jeyR0b2tlbn0pO1xcbiAgfSBAZWxzZSB7XFxuICAgIEByZXR1cm4gdmFyKC0tI3tjb25maWcuJHByZWZpeH0tI3skdG9rZW59LCAje3RoZW1lLmdldCgkdG9rZW4pfSk7XFxuICB9XFxufVxcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBiYWNrZ3JvdW5kYCB0b2tlblxcbiRiYWNrZ3JvdW5kOiBfZ2V0KCdiYWNrZ3JvdW5kJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGJhY2tncm91bmQtYWN0aXZlYCB0b2tlblxcbiRiYWNrZ3JvdW5kLWFjdGl2ZTogX2dldCgnYmFja2dyb3VuZC1hY3RpdmUnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYmFja2dyb3VuZC1zZWxlY3RlZGAgdG9rZW5cXG4kYmFja2dyb3VuZC1zZWxlY3RlZDogX2dldCgnYmFja2dyb3VuZC1zZWxlY3RlZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBiYWNrZ3JvdW5kLXNlbGVjdGVkLWhvdmVyYCB0b2tlblxcbiRiYWNrZ3JvdW5kLXNlbGVjdGVkLWhvdmVyOiBfZ2V0KCdiYWNrZ3JvdW5kLXNlbGVjdGVkLWhvdmVyJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGJhY2tncm91bmQtaG92ZXJgIHRva2VuXFxuJGJhY2tncm91bmQtaG92ZXI6IF9nZXQoJ2JhY2tncm91bmQtaG92ZXInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYmFja2dyb3VuZC1icmFuZGAgdG9rZW5cXG4kYmFja2dyb3VuZC1icmFuZDogX2dldCgnYmFja2dyb3VuZC1icmFuZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBiYWNrZ3JvdW5kLWludmVyc2VgIHRva2VuXFxuJGJhY2tncm91bmQtaW52ZXJzZTogX2dldCgnYmFja2dyb3VuZC1pbnZlcnNlJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGJhY2tncm91bmQtaW52ZXJzZS1ob3ZlcmAgdG9rZW5cXG4kYmFja2dyb3VuZC1pbnZlcnNlLWhvdmVyOiBfZ2V0KCdiYWNrZ3JvdW5kLWludmVyc2UtaG92ZXInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItMDFgIHRva2VuXFxuJGxheWVyLTAxOiBfZ2V0KCdsYXllci0wMScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1hY3RpdmUtMDFgIHRva2VuXFxuJGxheWVyLWFjdGl2ZS0wMTogX2dldCgnbGF5ZXItYWN0aXZlLTAxJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLWJhY2tncm91bmQtMDFgIHRva2VuXFxuJGxheWVyLWJhY2tncm91bmQtMDE6IF9nZXQoJ2xheWVyLWJhY2tncm91bmQtMDEnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItaG92ZXItMDFgIHRva2VuXFxuJGxheWVyLWhvdmVyLTAxOiBfZ2V0KCdsYXllci1ob3Zlci0wMScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1zZWxlY3RlZC0wMWAgdG9rZW5cXG4kbGF5ZXItc2VsZWN0ZWQtMDE6IF9nZXQoJ2xheWVyLXNlbGVjdGVkLTAxJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLXNlbGVjdGVkLWhvdmVyLTAxYCB0b2tlblxcbiRsYXllci1zZWxlY3RlZC1ob3Zlci0wMTogX2dldCgnbGF5ZXItc2VsZWN0ZWQtaG92ZXItMDEnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItMDJgIHRva2VuXFxuJGxheWVyLTAyOiBfZ2V0KCdsYXllci0wMicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1hY3RpdmUtMDJgIHRva2VuXFxuJGxheWVyLWFjdGl2ZS0wMjogX2dldCgnbGF5ZXItYWN0aXZlLTAyJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLWJhY2tncm91bmQtMDJgIHRva2VuXFxuJGxheWVyLWJhY2tncm91bmQtMDI6IF9nZXQoJ2xheWVyLWJhY2tncm91bmQtMDInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItaG92ZXItMDJgIHRva2VuXFxuJGxheWVyLWhvdmVyLTAyOiBfZ2V0KCdsYXllci1ob3Zlci0wMicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1zZWxlY3RlZC0wMmAgdG9rZW5cXG4kbGF5ZXItc2VsZWN0ZWQtMDI6IF9nZXQoJ2xheWVyLXNlbGVjdGVkLTAyJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLXNlbGVjdGVkLWhvdmVyLTAyYCB0b2tlblxcbiRsYXllci1zZWxlY3RlZC1ob3Zlci0wMjogX2dldCgnbGF5ZXItc2VsZWN0ZWQtaG92ZXItMDInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItMDNgIHRva2VuXFxuJGxheWVyLTAzOiBfZ2V0KCdsYXllci0wMycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1hY3RpdmUtMDNgIHRva2VuXFxuJGxheWVyLWFjdGl2ZS0wMzogX2dldCgnbGF5ZXItYWN0aXZlLTAzJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLWJhY2tncm91bmQtMDNgIHRva2VuXFxuJGxheWVyLWJhY2tncm91bmQtMDM6IF9nZXQoJ2xheWVyLWJhY2tncm91bmQtMDMnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItaG92ZXItMDNgIHRva2VuXFxuJGxheWVyLWhvdmVyLTAzOiBfZ2V0KCdsYXllci1ob3Zlci0wMycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1zZWxlY3RlZC0wM2AgdG9rZW5cXG4kbGF5ZXItc2VsZWN0ZWQtMDM6IF9nZXQoJ2xheWVyLXNlbGVjdGVkLTAzJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLXNlbGVjdGVkLWhvdmVyLTAzYCB0b2tlblxcbiRsYXllci1zZWxlY3RlZC1ob3Zlci0wMzogX2dldCgnbGF5ZXItc2VsZWN0ZWQtaG92ZXItMDMnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItc2VsZWN0ZWQtaW52ZXJzZWAgdG9rZW5cXG4kbGF5ZXItc2VsZWN0ZWQtaW52ZXJzZTogX2dldCgnbGF5ZXItc2VsZWN0ZWQtaW52ZXJzZScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1zZWxlY3RlZC1kaXNhYmxlZGAgdG9rZW5cXG4kbGF5ZXItc2VsZWN0ZWQtZGlzYWJsZWQ6IF9nZXQoJ2xheWVyLXNlbGVjdGVkLWRpc2FibGVkJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLWFjY2VudC0wMWAgdG9rZW5cXG4kbGF5ZXItYWNjZW50LTAxOiBfZ2V0KCdsYXllci1hY2NlbnQtMDEnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItYWNjZW50LWFjdGl2ZS0wMWAgdG9rZW5cXG4kbGF5ZXItYWNjZW50LWFjdGl2ZS0wMTogX2dldCgnbGF5ZXItYWNjZW50LWFjdGl2ZS0wMScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1hY2NlbnQtaG92ZXItMDFgIHRva2VuXFxuJGxheWVyLWFjY2VudC1ob3Zlci0wMTogX2dldCgnbGF5ZXItYWNjZW50LWhvdmVyLTAxJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLWFjY2VudC0wMmAgdG9rZW5cXG4kbGF5ZXItYWNjZW50LTAyOiBfZ2V0KCdsYXllci1hY2NlbnQtMDInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItYWNjZW50LWFjdGl2ZS0wMmAgdG9rZW5cXG4kbGF5ZXItYWNjZW50LWFjdGl2ZS0wMjogX2dldCgnbGF5ZXItYWNjZW50LWFjdGl2ZS0wMicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1hY2NlbnQtaG92ZXItMDJgIHRva2VuXFxuJGxheWVyLWFjY2VudC1ob3Zlci0wMjogX2dldCgnbGF5ZXItYWNjZW50LWhvdmVyLTAyJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxheWVyLWFjY2VudC0wM2AgdG9rZW5cXG4kbGF5ZXItYWNjZW50LTAzOiBfZ2V0KCdsYXllci1hY2NlbnQtMDMnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGF5ZXItYWNjZW50LWFjdGl2ZS0wM2AgdG9rZW5cXG4kbGF5ZXItYWNjZW50LWFjdGl2ZS0wMzogX2dldCgnbGF5ZXItYWNjZW50LWFjdGl2ZS0wMycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsYXllci1hY2NlbnQtaG92ZXItMDNgIHRva2VuXFxuJGxheWVyLWFjY2VudC1ob3Zlci0wMzogX2dldCgnbGF5ZXItYWNjZW50LWhvdmVyLTAzJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGZpZWxkLTAxYCB0b2tlblxcbiRmaWVsZC0wMTogX2dldCgnZmllbGQtMDEnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgZmllbGQtaG92ZXItMDFgIHRva2VuXFxuJGZpZWxkLWhvdmVyLTAxOiBfZ2V0KCdmaWVsZC1ob3Zlci0wMScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBmaWVsZC0wMmAgdG9rZW5cXG4kZmllbGQtMDI6IF9nZXQoJ2ZpZWxkLTAyJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGZpZWxkLWhvdmVyLTAyYCB0b2tlblxcbiRmaWVsZC1ob3Zlci0wMjogX2dldCgnZmllbGQtaG92ZXItMDInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgZmllbGQtMDNgIHRva2VuXFxuJGZpZWxkLTAzOiBfZ2V0KCdmaWVsZC0wMycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBmaWVsZC1ob3Zlci0wM2AgdG9rZW5cXG4kZmllbGQtaG92ZXItMDM6IF9nZXQoJ2ZpZWxkLWhvdmVyLTAzJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGludGVyYWN0aXZlYCB0b2tlblxcbiRpbnRlcmFjdGl2ZTogX2dldCgnaW50ZXJhY3RpdmUnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYm9yZGVyLXN1YnRsZS0wMGAgdG9rZW5cXG4kYm9yZGVyLXN1YnRsZS0wMDogX2dldCgnYm9yZGVyLXN1YnRsZS0wMCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBib3JkZXItc3VidGxlLTAxYCB0b2tlblxcbiRib3JkZXItc3VidGxlLTAxOiBfZ2V0KCdib3JkZXItc3VidGxlLTAxJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGJvcmRlci1zdWJ0bGUtc2VsZWN0ZWQtMDFgIHRva2VuXFxuJGJvcmRlci1zdWJ0bGUtc2VsZWN0ZWQtMDE6IF9nZXQoJ2JvcmRlci1zdWJ0bGUtc2VsZWN0ZWQtMDEnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYm9yZGVyLXN1YnRsZS0wMmAgdG9rZW5cXG4kYm9yZGVyLXN1YnRsZS0wMjogX2dldCgnYm9yZGVyLXN1YnRsZS0wMicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBib3JkZXItc3VidGxlLXNlbGVjdGVkLTAyYCB0b2tlblxcbiRib3JkZXItc3VidGxlLXNlbGVjdGVkLTAyOiBfZ2V0KCdib3JkZXItc3VidGxlLXNlbGVjdGVkLTAyJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGJvcmRlci1zdWJ0bGUtMDNgIHRva2VuXFxuJGJvcmRlci1zdWJ0bGUtMDM6IF9nZXQoJ2JvcmRlci1zdWJ0bGUtMDMnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYm9yZGVyLXN1YnRsZS1zZWxlY3RlZC0wM2AgdG9rZW5cXG4kYm9yZGVyLXN1YnRsZS1zZWxlY3RlZC0wMzogX2dldCgnYm9yZGVyLXN1YnRsZS1zZWxlY3RlZC0wMycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBib3JkZXItc3Ryb25nLTAxYCB0b2tlblxcbiRib3JkZXItc3Ryb25nLTAxOiBfZ2V0KCdib3JkZXItc3Ryb25nLTAxJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGJvcmRlci1zdHJvbmctMDJgIHRva2VuXFxuJGJvcmRlci1zdHJvbmctMDI6IF9nZXQoJ2JvcmRlci1zdHJvbmctMDInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYm9yZGVyLXN0cm9uZy0wM2AgdG9rZW5cXG4kYm9yZGVyLXN0cm9uZy0wMzogX2dldCgnYm9yZGVyLXN0cm9uZy0wMycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBib3JkZXItdGlsZS0wMWAgdG9rZW5cXG4kYm9yZGVyLXRpbGUtMDE6IF9nZXQoJ2JvcmRlci10aWxlLTAxJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGJvcmRlci10aWxlLTAyYCB0b2tlblxcbiRib3JkZXItdGlsZS0wMjogX2dldCgnYm9yZGVyLXRpbGUtMDInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYm9yZGVyLXRpbGUtMDNgIHRva2VuXFxuJGJvcmRlci10aWxlLTAzOiBfZ2V0KCdib3JkZXItdGlsZS0wMycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBib3JkZXItaW52ZXJzZWAgdG9rZW5cXG4kYm9yZGVyLWludmVyc2U6IF9nZXQoJ2JvcmRlci1pbnZlcnNlJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGJvcmRlci1pbnRlcmFjdGl2ZWAgdG9rZW5cXG4kYm9yZGVyLWludGVyYWN0aXZlOiBfZ2V0KCdib3JkZXItaW50ZXJhY3RpdmUnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYm9yZGVyLWRpc2FibGVkYCB0b2tlblxcbiRib3JkZXItZGlzYWJsZWQ6IF9nZXQoJ2JvcmRlci1kaXNhYmxlZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGB0ZXh0LXByaW1hcnlgIHRva2VuXFxuJHRleHQtcHJpbWFyeTogX2dldCgndGV4dC1wcmltYXJ5JykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYHRleHQtc2Vjb25kYXJ5YCB0b2tlblxcbiR0ZXh0LXNlY29uZGFyeTogX2dldCgndGV4dC1zZWNvbmRhcnknKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgdGV4dC1wbGFjZWhvbGRlcmAgdG9rZW5cXG4kdGV4dC1wbGFjZWhvbGRlcjogX2dldCgndGV4dC1wbGFjZWhvbGRlcicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGB0ZXh0LWhlbHBlcmAgdG9rZW5cXG4kdGV4dC1oZWxwZXI6IF9nZXQoJ3RleHQtaGVscGVyJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYHRleHQtZXJyb3JgIHRva2VuXFxuJHRleHQtZXJyb3I6IF9nZXQoJ3RleHQtZXJyb3InKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgdGV4dC1pbnZlcnNlYCB0b2tlblxcbiR0ZXh0LWludmVyc2U6IF9nZXQoJ3RleHQtaW52ZXJzZScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGB0ZXh0LW9uLWNvbG9yYCB0b2tlblxcbiR0ZXh0LW9uLWNvbG9yOiBfZ2V0KCd0ZXh0LW9uLWNvbG9yJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYHRleHQtb24tY29sb3ItZGlzYWJsZWRgIHRva2VuXFxuJHRleHQtb24tY29sb3ItZGlzYWJsZWQ6IF9nZXQoJ3RleHQtb24tY29sb3ItZGlzYWJsZWQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgdGV4dC1kaXNhYmxlZGAgdG9rZW5cXG4kdGV4dC1kaXNhYmxlZDogX2dldCgndGV4dC1kaXNhYmxlZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsaW5rLXByaW1hcnlgIHRva2VuXFxuJGxpbmstcHJpbWFyeTogX2dldCgnbGluay1wcmltYXJ5JykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxpbmstcHJpbWFyeS1ob3ZlcmAgdG9rZW5cXG4kbGluay1wcmltYXJ5LWhvdmVyOiBfZ2V0KCdsaW5rLXByaW1hcnktaG92ZXInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGluay1zZWNvbmRhcnlgIHRva2VuXFxuJGxpbmstc2Vjb25kYXJ5OiBfZ2V0KCdsaW5rLXNlY29uZGFyeScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsaW5rLWludmVyc2UtdmlzaXRlZGAgdG9rZW5cXG4kbGluay1pbnZlcnNlLXZpc2l0ZWQ6IF9nZXQoJ2xpbmstaW52ZXJzZS12aXNpdGVkJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxpbmstdmlzaXRlZGAgdG9rZW5cXG4kbGluay12aXNpdGVkOiBfZ2V0KCdsaW5rLXZpc2l0ZWQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgbGluay1pbnZlcnNlYCB0b2tlblxcbiRsaW5rLWludmVyc2U6IF9nZXQoJ2xpbmstaW52ZXJzZScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBsaW5rLWludmVyc2UtYWN0aXZlYCB0b2tlblxcbiRsaW5rLWludmVyc2UtYWN0aXZlOiBfZ2V0KCdsaW5rLWludmVyc2UtYWN0aXZlJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGxpbmstaW52ZXJzZS1ob3ZlcmAgdG9rZW5cXG4kbGluay1pbnZlcnNlLWhvdmVyOiBfZ2V0KCdsaW5rLWludmVyc2UtaG92ZXInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgaWNvbi1wcmltYXJ5YCB0b2tlblxcbiRpY29uLXByaW1hcnk6IF9nZXQoJ2ljb24tcHJpbWFyeScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBpY29uLXNlY29uZGFyeWAgdG9rZW5cXG4kaWNvbi1zZWNvbmRhcnk6IF9nZXQoJ2ljb24tc2Vjb25kYXJ5JykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGljb24taW52ZXJzZWAgdG9rZW5cXG4kaWNvbi1pbnZlcnNlOiBfZ2V0KCdpY29uLWludmVyc2UnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgaWNvbi1vbi1jb2xvcmAgdG9rZW5cXG4kaWNvbi1vbi1jb2xvcjogX2dldCgnaWNvbi1vbi1jb2xvcicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBpY29uLW9uLWNvbG9yLWRpc2FibGVkYCB0b2tlblxcbiRpY29uLW9uLWNvbG9yLWRpc2FibGVkOiBfZ2V0KCdpY29uLW9uLWNvbG9yLWRpc2FibGVkJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGljb24tZGlzYWJsZWRgIHRva2VuXFxuJGljb24tZGlzYWJsZWQ6IF9nZXQoJ2ljb24tZGlzYWJsZWQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgaWNvbi1pbnRlcmFjdGl2ZWAgdG9rZW5cXG4kaWNvbi1pbnRlcmFjdGl2ZTogX2dldCgnaWNvbi1pbnRlcmFjdGl2ZScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBzdXBwb3J0LWVycm9yYCB0b2tlblxcbiRzdXBwb3J0LWVycm9yOiBfZ2V0KCdzdXBwb3J0LWVycm9yJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYHN1cHBvcnQtc3VjY2Vzc2AgdG9rZW5cXG4kc3VwcG9ydC1zdWNjZXNzOiBfZ2V0KCdzdXBwb3J0LXN1Y2Nlc3MnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgc3VwcG9ydC13YXJuaW5nYCB0b2tlblxcbiRzdXBwb3J0LXdhcm5pbmc6IF9nZXQoJ3N1cHBvcnQtd2FybmluZycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBzdXBwb3J0LWluZm9gIHRva2VuXFxuJHN1cHBvcnQtaW5mbzogX2dldCgnc3VwcG9ydC1pbmZvJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYHN1cHBvcnQtZXJyb3ItaW52ZXJzZWAgdG9rZW5cXG4kc3VwcG9ydC1lcnJvci1pbnZlcnNlOiBfZ2V0KCdzdXBwb3J0LWVycm9yLWludmVyc2UnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgc3VwcG9ydC1zdWNjZXNzLWludmVyc2VgIHRva2VuXFxuJHN1cHBvcnQtc3VjY2Vzcy1pbnZlcnNlOiBfZ2V0KCdzdXBwb3J0LXN1Y2Nlc3MtaW52ZXJzZScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBzdXBwb3J0LXdhcm5pbmctaW52ZXJzZWAgdG9rZW5cXG4kc3VwcG9ydC13YXJuaW5nLWludmVyc2U6IF9nZXQoJ3N1cHBvcnQtd2FybmluZy1pbnZlcnNlJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYHN1cHBvcnQtaW5mby1pbnZlcnNlYCB0b2tlblxcbiRzdXBwb3J0LWluZm8taW52ZXJzZTogX2dldCgnc3VwcG9ydC1pbmZvLWludmVyc2UnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgc3VwcG9ydC1jYXV0aW9uLW1ham9yYCB0b2tlblxcbiRzdXBwb3J0LWNhdXRpb24tbWFqb3I6IF9nZXQoJ3N1cHBvcnQtY2F1dGlvbi1tYWpvcicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBzdXBwb3J0LWNhdXRpb24tbWlub3JgIHRva2VuXFxuJHN1cHBvcnQtY2F1dGlvbi1taW5vcjogX2dldCgnc3VwcG9ydC1jYXV0aW9uLW1pbm9yJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYHN1cHBvcnQtY2F1dGlvbi11bmRlZmluZWRgIHRva2VuXFxuJHN1cHBvcnQtY2F1dGlvbi11bmRlZmluZWQ6IF9nZXQoJ3N1cHBvcnQtY2F1dGlvbi11bmRlZmluZWQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYWktcG9wb3Zlci1iYWNrZ3JvdW5kYCB0b2tlblxcbiRhaS1wb3BvdmVyLWJhY2tncm91bmQ6IF9nZXQoJ2FpLXBvcG92ZXItYmFja2dyb3VuZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBhaS1wb3BvdmVyLXNoYWRvdy1vdXRlci0wMWAgdG9rZW5cXG4kYWktcG9wb3Zlci1zaGFkb3ctb3V0ZXItMDE6IF9nZXQoJ2FpLXBvcG92ZXItc2hhZG93LW91dGVyLTAxJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGFpLXBvcG92ZXItc2hhZG93LW91dGVyLTAyYCB0b2tlblxcbiRhaS1wb3BvdmVyLXNoYWRvdy1vdXRlci0wMjogX2dldCgnYWktcG9wb3Zlci1zaGFkb3ctb3V0ZXItMDInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYWktaW5uZXItc2hhZG93YCB0b2tlblxcbiRhaS1pbm5lci1zaGFkb3c6IF9nZXQoJ2FpLWlubmVyLXNoYWRvdycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBhaS1hdXJhLXN0YXJ0LXNtYCB0b2tlblxcbiRhaS1hdXJhLXN0YXJ0LXNtOiBfZ2V0KCdhaS1hdXJhLXN0YXJ0LXNtJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGFpLWF1cmEtc3RhcnRgIHRva2VuXFxuJGFpLWF1cmEtc3RhcnQ6IF9nZXQoJ2FpLWF1cmEtc3RhcnQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYWktYXVyYS1lbmRgIHRva2VuXFxuJGFpLWF1cmEtZW5kOiBfZ2V0KCdhaS1hdXJhLWVuZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBhaS1hdXJhLWhvdmVyLWJhY2tncm91bmRgIHRva2VuXFxuJGFpLWF1cmEtaG92ZXItYmFja2dyb3VuZDogX2dldCgnYWktYXVyYS1ob3Zlci1iYWNrZ3JvdW5kJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGFpLWF1cmEtaG92ZXItc3RhcnRgIHRva2VuXFxuJGFpLWF1cmEtaG92ZXItc3RhcnQ6IF9nZXQoJ2FpLWF1cmEtaG92ZXItc3RhcnQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYWktYXVyYS1ob3Zlci1lbmRgIHRva2VuXFxuJGFpLWF1cmEtaG92ZXItZW5kOiBfZ2V0KCdhaS1hdXJhLWhvdmVyLWVuZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBhaS1ib3JkZXItc3Ryb25nYCB0b2tlblxcbiRhaS1ib3JkZXItc3Ryb25nOiBfZ2V0KCdhaS1ib3JkZXItc3Ryb25nJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGFpLWJvcmRlci1zdGFydGAgdG9rZW5cXG4kYWktYm9yZGVyLXN0YXJ0OiBfZ2V0KCdhaS1ib3JkZXItc3RhcnQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYWktYm9yZGVyLWVuZGAgdG9rZW5cXG4kYWktYm9yZGVyLWVuZDogX2dldCgnYWktYm9yZGVyLWVuZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBhaS1kcm9wLXNoYWRvd2AgdG9rZW5cXG4kYWktZHJvcC1zaGFkb3c6IF9nZXQoJ2FpLWRyb3Atc2hhZG93JykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGFpLXNrZWxldG9uLWJhY2tncm91bmRgIHRva2VuXFxuJGFpLXNrZWxldG9uLWJhY2tncm91bmQ6IF9nZXQoJ2FpLXNrZWxldG9uLWJhY2tncm91bmQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYWktc2tlbGV0b24tZWxlbWVudC1iYWNrZ3JvdW5kYCB0b2tlblxcbiRhaS1za2VsZXRvbi1lbGVtZW50LWJhY2tncm91bmQ6IF9nZXQoXFxuICAnYWktc2tlbGV0b24tZWxlbWVudC1iYWNrZ3JvdW5kJ1xcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGFpLW92ZXJsYXlgIHRva2VuXFxuJGFpLW92ZXJsYXk6IF9nZXQoJ2FpLW92ZXJsYXknKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgYWktcG9wb3Zlci1jYXJldC1jZW50ZXJgIHRva2VuXFxuJGFpLXBvcG92ZXItY2FyZXQtY2VudGVyOiBfZ2V0KCdhaS1wb3BvdmVyLWNhcmV0LWNlbnRlcicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBhaS1wb3BvdmVyLWNhcmV0LWJvdHRvbWAgdG9rZW5cXG4kYWktcG9wb3Zlci1jYXJldC1ib3R0b206IF9nZXQoJ2FpLXBvcG92ZXItY2FyZXQtYm90dG9tJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGFpLXBvcG92ZXItY2FyZXQtYm90dG9tLWJhY2tncm91bmRgIHRva2VuXFxuJGFpLXBvcG92ZXItY2FyZXQtYm90dG9tLWJhY2tncm91bmQ6IF9nZXQoXFxuICAnYWktcG9wb3Zlci1jYXJldC1ib3R0b20tYmFja2dyb3VuZCdcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBhaS1wb3BvdmVyLWNhcmV0LWJvdHRvbS1iYWNrZ3JvdW5kLWFjdGlvbnNgIHRva2VuXFxuJGFpLXBvcG92ZXItY2FyZXQtYm90dG9tLWJhY2tncm91bmQtYWN0aW9uczogX2dldChcXG4gICdhaS1wb3BvdmVyLWNhcmV0LWJvdHRvbS1iYWNrZ3JvdW5kLWFjdGlvbnMnXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgY2hhdC1wcm9tcHQtYmFja2dyb3VuZGAgdG9rZW5cXG4kY2hhdC1wcm9tcHQtYmFja2dyb3VuZDogX2dldCgnY2hhdC1wcm9tcHQtYmFja2dyb3VuZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBjaGF0LXByb21wdC1ib3JkZXItc3RhcnRgIHRva2VuXFxuJGNoYXQtcHJvbXB0LWJvcmRlci1zdGFydDogX2dldCgnY2hhdC1wcm9tcHQtYm9yZGVyLXN0YXJ0JykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGNoYXQtcHJvbXB0LWJvcmRlci1lbmRgIHRva2VuXFxuJGNoYXQtcHJvbXB0LWJvcmRlci1lbmQ6IF9nZXQoJ2NoYXQtcHJvbXB0LWJvcmRlci1lbmQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgY2hhdC1idWJibGUtdXNlcmAgdG9rZW5cXG4kY2hhdC1idWJibGUtdXNlcjogX2dldCgnY2hhdC1idWJibGUtdXNlcicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBjaGF0LWJ1YmJsZS1hZ2VudGAgdG9rZW5cXG4kY2hhdC1idWJibGUtYWdlbnQ6IF9nZXQoJ2NoYXQtYnViYmxlLWFnZW50JykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGNoYXQtYnViYmxlLWJvcmRlcmAgdG9rZW5cXG4kY2hhdC1idWJibGUtYm9yZGVyOiBfZ2V0KCdjaGF0LWJ1YmJsZS1ib3JkZXInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgY2hhdC1hdmF0YXItYm90YCB0b2tlblxcbiRjaGF0LWF2YXRhci1ib3Q6IF9nZXQoJ2NoYXQtYXZhdGFyLWJvdCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBjaGF0LWF2YXRhci1hZ2VudGAgdG9rZW5cXG4kY2hhdC1hdmF0YXItYWdlbnQ6IF9nZXQoJ2NoYXQtYXZhdGFyLWFnZW50JykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGNoYXQtYXZhdGFyLXVzZXJgIHRva2VuXFxuJGNoYXQtYXZhdGFyLXVzZXI6IF9nZXQoJ2NoYXQtYXZhdGFyLXVzZXInKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgY2hhdC1zaGVsbC1iYWNrZ3JvdW5kYCB0b2tlblxcbiRjaGF0LXNoZWxsLWJhY2tncm91bmQ6IF9nZXQoJ2NoYXQtc2hlbGwtYmFja2dyb3VuZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBjaGF0LWhlYWRlci1iYWNrZ3JvdW5kYCB0b2tlblxcbiRjaGF0LWhlYWRlci1iYWNrZ3JvdW5kOiBfZ2V0KCdjaGF0LWhlYWRlci1iYWNrZ3JvdW5kJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGNoYXQtYnV0dG9uYCB0b2tlblxcbiRjaGF0LWJ1dHRvbjogX2dldCgnY2hhdC1idXR0b24nKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgY2hhdC1idXR0b24taG92ZXJgIHRva2VuXFxuJGNoYXQtYnV0dG9uLWhvdmVyOiBfZ2V0KCdjaGF0LWJ1dHRvbi1ob3ZlcicpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBjaGF0LWJ1dHRvbi10ZXh0LWhvdmVyYCB0b2tlblxcbiRjaGF0LWJ1dHRvbi10ZXh0LWhvdmVyOiBfZ2V0KCdjaGF0LWJ1dHRvbi10ZXh0LWhvdmVyJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGNoYXQtYnV0dG9uLWFjdGl2ZWAgdG9rZW5cXG4kY2hhdC1idXR0b24tYWN0aXZlOiBfZ2V0KCdjaGF0LWJ1dHRvbi1hY3RpdmUnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgY2hhdC1idXR0b24tc2VsZWN0ZWRgIHRva2VuXFxuJGNoYXQtYnV0dG9uLXNlbGVjdGVkOiBfZ2V0KCdjaGF0LWJ1dHRvbi1zZWxlY3RlZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBjaGF0LWJ1dHRvbi10ZXh0LXNlbGVjdGVkYCB0b2tlblxcbiRjaGF0LWJ1dHRvbi10ZXh0LXNlbGVjdGVkOiBfZ2V0KCdjaGF0LWJ1dHRvbi10ZXh0LXNlbGVjdGVkJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGhpZ2hsaWdodGAgdG9rZW5cXG4kaGlnaGxpZ2h0OiBfZ2V0KCdoaWdobGlnaHQnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgb3ZlcmxheWAgdG9rZW5cXG4kb3ZlcmxheTogX2dldCgnb3ZlcmxheScpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGB0b2dnbGUtb2ZmYCB0b2tlblxcbiR0b2dnbGUtb2ZmOiBfZ2V0KCd0b2dnbGUtb2ZmJykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYHNoYWRvd2AgdG9rZW5cXG4kc2hhZG93OiBfZ2V0KCdzaGFkb3cnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgZm9jdXNgIHRva2VuXFxuJGZvY3VzOiBfZ2V0KCdmb2N1cycpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBmb2N1cy1pbnNldGAgdG9rZW5cXG4kZm9jdXMtaW5zZXQ6IF9nZXQoJ2ZvY3VzLWluc2V0JykgIWRlZmF1bHQ7XFxuXFxuLy8vIFRoZSBDU1MgQ3VzdG9tIFByb3BlcnR5IGZvciB0aGUgYGZvY3VzLWludmVyc2VgIHRva2VuXFxuJGZvY3VzLWludmVyc2U6IF9nZXQoJ2ZvY3VzLWludmVyc2UnKSAhZGVmYXVsdDtcXG5cXG4vLy8gVGhlIENTUyBDdXN0b20gUHJvcGVydHkgZm9yIHRoZSBgc2tlbGV0b24tYmFja2dyb3VuZGAgdG9rZW5cXG4kc2tlbGV0b24tYmFja2dyb3VuZDogX2dldCgnc2tlbGV0b24tYmFja2dyb3VuZCcpICFkZWZhdWx0O1xcblxcbi8vLyBUaGUgQ1NTIEN1c3RvbSBQcm9wZXJ0eSBmb3IgdGhlIGBza2VsZXRvbi1lbGVtZW50YCB0b2tlblxcbiRza2VsZXRvbi1lbGVtZW50OiBfZ2V0KCdza2VsZXRvbi1lbGVtZW50JykgIWRlZmF1bHQ7XFxuXCIsXCIvL1xcbi8vIENvcHlyaWdodCBJQk0gQ29ycC4gMjAxOCwgMjAyM1xcbi8vXFxuLy8gVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbi8vIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4vL1xcblxcbkB1c2UgJy4uL2NvbmZpZycgYXMgKjtcXG5AdXNlICdAY2FyYm9uL3RoZW1lcy9zY3NzL2NvbmZpZycgd2l0aCAoXFxuICAkcHJlZml4OiAkcHJlZml4XFxuKTtcXG5AdXNlICcuLi9jb21wYXQvdGhlbWVzJyBhcyBjb21wYXQ7XFxuQHVzZSAnLi4vdGhlbWVzJztcXG5cXG5AZm9yd2FyZCAnQGNhcmJvbi90aGVtZXMvc2Nzcy90aGVtZScgd2l0aCAoXFxuICAkZmFsbGJhY2s6IHRoZW1lcy4kd2hpdGUgIWRlZmF1bHQsXFxuICAkdGhlbWU6IGNvbXBhdC4kd2hpdGUgIWRlZmF1bHRcXG4pO1xcbkBmb3J3YXJkICdAY2FyYm9uL3RoZW1lcy9zY3NzL3Rva2Vucyc7XFxuXFxuQHVzZSAnQGNhcmJvbi90aGVtZXMvc2Nzcy90b2tlbnMnO1xcbkB1c2UgJ0BjYXJib24vdGhlbWVzL3Njc3MvdGhlbWUnO1xcbkB1c2UgJy4uL3V0aWxpdGllcy9jdXN0b20tcHJvcGVydHknO1xcblxcbi8vIExheWVyIHNldHNcXG4kbGF5ZXI6IGN1c3RvbS1wcm9wZXJ0eS5nZXQtdmFyKCdsYXllcicpO1xcbiRsYXllci1hY3RpdmU6IGN1c3RvbS1wcm9wZXJ0eS5nZXQtdmFyKCdsYXllci1hY3RpdmUnKTtcXG4kbGF5ZXItYmFja2dyb3VuZDogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2xheWVyLWJhY2tncm91bmQnKTtcXG4kbGF5ZXItaG92ZXI6IGN1c3RvbS1wcm9wZXJ0eS5nZXQtdmFyKCdsYXllci1ob3ZlcicpO1xcbiRsYXllci1zZWxlY3RlZDogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2xheWVyLXNlbGVjdGVkJyk7XFxuJGxheWVyLXNlbGVjdGVkLWhvdmVyOiBjdXN0b20tcHJvcGVydHkuZ2V0LXZhcignbGF5ZXItc2VsZWN0ZWQtaG92ZXInKTtcXG4kbGF5ZXItYWNjZW50OiBjdXN0b20tcHJvcGVydHkuZ2V0LXZhcignbGF5ZXItYWNjZW50Jyk7XFxuJGxheWVyLWFjY2VudC1ob3ZlcjogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2xheWVyLWFjY2VudC1ob3ZlcicpO1xcbiRsYXllci1hY2NlbnQtYWN0aXZlOiBjdXN0b20tcHJvcGVydHkuZ2V0LXZhcignbGF5ZXItYWNjZW50LWFjdGl2ZScpO1xcblxcbiRmaWVsZDogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2ZpZWxkJyk7XFxuJGZpZWxkLWhvdmVyOiBjdXN0b20tcHJvcGVydHkuZ2V0LXZhcignZmllbGQtaG92ZXInKTtcXG5cXG4kYm9yZGVyLXN1YnRsZTogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2JvcmRlci1zdWJ0bGUnKTtcXG4kYm9yZGVyLXN1YnRsZS1zZWxlY3RlZDogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2JvcmRlci1zdWJ0bGUtc2VsZWN0ZWQnKTtcXG4kYm9yZGVyLXN0cm9uZzogY3VzdG9tLXByb3BlcnR5LmdldC12YXIoJ2JvcmRlci1zdHJvbmcnKTtcXG4kYm9yZGVyLXRpbGU6IGN1c3RvbS1wcm9wZXJ0eS5nZXQtdmFyKCdib3JkZXItdGlsZScpO1xcblwiLFwiLy8gQ29kZSBnZW5lcmF0ZWQgYnkgQGNhcmJvbi9sYXlvdXQuIERPIE5PVCBFRElULlxcbi8vXFxuLy8gQ29weXJpZ2h0IElCTSBDb3JwLiAyMDE4LCAyMDIzXFxuLy9cXG4vLyBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUtMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuLy8gTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbi8vXFxuXFxuLy8vIEB0eXBlIE51bWJlclxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi9sYXlvdXRcXG4kc3BhY2luZy0wMTogMC4xMjVyZW0gIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE51bWJlclxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi9sYXlvdXRcXG4kc3BhY2luZy0wMjogMC4yNXJlbSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTnVtYmVyXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL2xheW91dFxcbiRzcGFjaW5nLTAzOiAwLjVyZW0gIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE51bWJlclxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi9sYXlvdXRcXG4kc3BhY2luZy0wNDogMC43NXJlbSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTnVtYmVyXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL2xheW91dFxcbiRzcGFjaW5nLTA1OiAxcmVtICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBOdW1iZXJcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vbGF5b3V0XFxuJHNwYWNpbmctMDY6IDEuNXJlbSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTnVtYmVyXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL2xheW91dFxcbiRzcGFjaW5nLTA3OiAycmVtICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBOdW1iZXJcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vbGF5b3V0XFxuJHNwYWNpbmctMDg6IDIuNXJlbSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTnVtYmVyXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL2xheW91dFxcbiRzcGFjaW5nLTA5OiAzcmVtICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBOdW1iZXJcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vbGF5b3V0XFxuJHNwYWNpbmctMTA6IDRyZW0gIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE51bWJlclxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi9sYXlvdXRcXG4kc3BhY2luZy0xMTogNXJlbSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTnVtYmVyXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL2xheW91dFxcbiRzcGFjaW5nLTEyOiA2cmVtICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBOdW1iZXJcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vbGF5b3V0XFxuJHNwYWNpbmctMTM6IDEwcmVtICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vbGF5b3V0XFxuJHNwYWNpbmc6IChcXG4gIHNwYWNpbmctMDE6ICRzcGFjaW5nLTAxLFxcbiAgc3BhY2luZy0wMjogJHNwYWNpbmctMDIsXFxuICBzcGFjaW5nLTAzOiAkc3BhY2luZy0wMyxcXG4gIHNwYWNpbmctMDQ6ICRzcGFjaW5nLTA0LFxcbiAgc3BhY2luZy0wNTogJHNwYWNpbmctMDUsXFxuICBzcGFjaW5nLTA2OiAkc3BhY2luZy0wNixcXG4gIHNwYWNpbmctMDc6ICRzcGFjaW5nLTA3LFxcbiAgc3BhY2luZy0wODogJHNwYWNpbmctMDgsXFxuICBzcGFjaW5nLTA5OiAkc3BhY2luZy0wOSxcXG4gIHNwYWNpbmctMTA6ICRzcGFjaW5nLTEwLFxcbiAgc3BhY2luZy0xMTogJHNwYWNpbmctMTEsXFxuICBzcGFjaW5nLTEyOiAkc3BhY2luZy0xMixcXG4gIHNwYWNpbmctMTM6ICRzcGFjaW5nLTEzLFxcbik7XFxuXCIsXCIvL1xcbi8vIENvcHlyaWdodCBJQk0gQ29ycC4gMjAyMVxcbi8vXFxuLy8gVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbi8vIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4vL1xcblxcbkB1c2UgJy4uL3RoZW1lJztcXG5cXG4vLy8gQWRkcyBib3ggc2hhZG93XFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBleGFtcGxlIEBpbmNsdWRlIGJveC1zaGFkb3c7XFxuLy8vIEBncm91cCB1dGlsaXRpZXNcXG5AbWl4aW4gYm94LXNoYWRvdyB7XFxuICBib3gtc2hhZG93OiAwIDJweCA2cHggdGhlbWUuJHNoYWRvdztcXG59XFxuXFxuQG1peGluIGJveC1zaGFkb3ctdG9wIHtcXG4gIGJveC1zaGFkb3c6IDAgLTJweCA2cHggdGhlbWUuJHNoYWRvdztcXG59XFxuXCIsXCIvL1xcbi8vIENvcHlyaWdodCBJQk0gQ29ycC4gMjAxOCwgMjAyM1xcbi8vXFxuLy8gVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbi8vIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4vL1xcblxcbi8vLyBSZXNldHMgZGVmYXVsdCBicm93c2VyIHN0eWxpbmdcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIHV0aWxpdGllc1xcbkBtaXhpbiByZXNldCB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlcjogMDtcXG4gIG1hcmdpbjogMDtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgZm9udC1zaXplOiAxMDAlO1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xcblxcbiAgKixcXG4gICo6OmJlZm9yZSxcXG4gICo6OmFmdGVyIHtcXG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcXG4gIH1cXG59XFxuXCIsXCIvL1xcbi8vIENvcHlyaWdodCBJQk0gQ29ycC4gMjAxOCwgMjAyM1xcbi8vXFxuLy8gVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlLTIuMCBsaWNlbnNlIGZvdW5kIGluIHRoZVxcbi8vIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cXG4vL1xcblxcbi8vIHN0eWxlbGludC1kaXNhYmxlIG51bWJlci1tYXgtcHJlY2lzaW9uXFxuXFxuQHVzZSAnc2FzczptYXAnO1xcbkB1c2UgJ3Nhc3M6bWF0aCc7XFxuQHVzZSAnQGNhcmJvbi9ncmlkL3Njc3MvY29uZmlnJyBhcyBncmlkY29uZmlnO1xcbkB1c2UgJ0BjYXJib24vZ3JpZC9zY3NzL2JyZWFrcG9pbnQnIGFzIGdyaWQ7XFxuQHVzZSAncHJlZml4JyBhcyAqO1xcbkB1c2UgJ2ZvbnQtZmFtaWx5JztcXG5AdXNlICdzY2FsZSc7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZGVwcmVjYXRlZFxcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGNhcHRpb24tMDE6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxKSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgncmVndWxhcicpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMzMzMzMsXFxuICBsZXR0ZXItc3BhY2luZzogMC4zMnB4LFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZGVwcmVjYXRlZFxcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGNhcHRpb24tMDI6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgyKSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgncmVndWxhcicpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMjg1NzIsXFxuICBsZXR0ZXItc3BhY2luZzogMC4zMnB4LFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGxhYmVsLTAxOiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMSksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3JlZ3VsYXInKSxcXG4gIGxpbmUtaGVpZ2h0OiAxLjMzMzMzLFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMzJweCxcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRsYWJlbC0wMjogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDIpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICBsaW5lLWhlaWdodDogMS4yODU3MixcXG4gIGxldHRlci1zcGFjaW5nOiAwLjE2cHgsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kbGVnYWwtMDE6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxKSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgncmVndWxhcicpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMzMzMzMsXFxuICBsZXR0ZXItc3BhY2luZzogMC4zMnB4LFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGxlZ2FsLTAyOiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMiksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3JlZ3VsYXInKSxcXG4gIGxpbmUtaGVpZ2h0OiAxLjI4NTcyLFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMTZweCxcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGRlcHJlY2F0ZWRcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRoZWxwZXItdGV4dC0wMTogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMzMzMzMsXFxuICBsZXR0ZXItc3BhY2luZzogMC4zMnB4LFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZGVwcmVjYXRlZFxcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGhlbHBlci10ZXh0LTAyOiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMiksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3JlZ3VsYXInKSxcXG4gIGxpbmUtaGVpZ2h0OiAxLjI4NTcyLFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMTZweCxcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRib2R5LXNob3J0LTAxOiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMiksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3JlZ3VsYXInKSxcXG4gIGxpbmUtaGVpZ2h0OiAxLjI4NTcyLFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMTZweCxcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRib2R5LWNvbXBhY3QtMDE6ICRib2R5LXNob3J0LTAxICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRib2R5LWxvbmctMDE6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgyKSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgncmVndWxhcicpLFxcbiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcsXFxuICBsZXR0ZXItc3BhY2luZzogMC4xNnB4LFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGJvZHktMDE6ICRib2R5LWxvbmctMDEgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGJvZHktc2hvcnQtMDI6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgzKSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgncmVndWxhcicpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMzc1LFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kYm9keS1jb21wYWN0LTAyOiAkYm9keS1zaG9ydC0wMiAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kYm9keS1sb25nLTAyOiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMyksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ3JlZ3VsYXInKSxcXG4gIGxpbmUtaGVpZ2h0OiAxLjUsXFxuICBsZXR0ZXItc3BhY2luZzogMCxcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRib2R5LTAyOiAkYm9keS1sb25nLTAyICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRjb2RlLTAxOiAoXFxuICBmb250LWZhbWlseTogZm9udC1mYW1pbHkuZm9udC1mYW1pbHkoJ21vbm8nKSxcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxKSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgncmVndWxhcicpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMzMzMzMsXFxuICBsZXR0ZXItc3BhY2luZzogMC4zMnB4LFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGNvZGUtMDI6IChcXG4gIGZvbnQtZmFtaWx5OiBmb250LWZhbWlseS5mb250LWZhbWlseSgnbW9ubycpLFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDIpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICBsaW5lLWhlaWdodDogMS40Mjg1NyxcXG4gIGxldHRlci1zcGFjaW5nOiAwLjMycHgsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kaGVhZGluZy0wMTogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDIpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdzZW1pYm9sZCcpLFxcbiAgbGluZS1oZWlnaHQ6IDEuNDI4NTcsXFxuICBsZXR0ZXItc3BhY2luZzogMC4xNnB4LFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJHByb2R1Y3RpdmUtaGVhZGluZy0wMTogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDIpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdzZW1pYm9sZCcpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMjg1NzIsXFxuICBsZXR0ZXItc3BhY2luZzogMC4xNnB4LFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGhlYWRpbmctY29tcGFjdC0wMTogJHByb2R1Y3RpdmUtaGVhZGluZy0wMSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kaGVhZGluZy0wMjogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDMpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdzZW1pYm9sZCcpLFxcbiAgbGluZS1oZWlnaHQ6IDEuNSxcXG4gIGxldHRlci1zcGFjaW5nOiAwLFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJHByb2R1Y3RpdmUtaGVhZGluZy0wMjogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDMpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdzZW1pYm9sZCcpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMzc1LFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kaGVhZGluZy1jb21wYWN0LTAyOiAkcHJvZHVjdGl2ZS1oZWFkaW5nLTAyICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRwcm9kdWN0aXZlLWhlYWRpbmctMDM6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSg1KSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgncmVndWxhcicpLFxcbiAgbGluZS1oZWlnaHQ6IDEuNCxcXG4gIGxldHRlci1zcGFjaW5nOiAwLFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGhlYWRpbmctMDM6ICRwcm9kdWN0aXZlLWhlYWRpbmctMDMgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJHByb2R1Y3RpdmUtaGVhZGluZy0wNDogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDcpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICBsaW5lLWhlaWdodDogMS4yODU3MixcXG4gIGxldHRlci1zcGFjaW5nOiAwLFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGhlYWRpbmctMDQ6ICRwcm9kdWN0aXZlLWhlYWRpbmctMDQgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJHByb2R1Y3RpdmUtaGVhZGluZy0wNTogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDgpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICBsaW5lLWhlaWdodDogMS4yNSxcXG4gIGxldHRlci1zcGFjaW5nOiAwLFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGhlYWRpbmctMDU6ICRwcm9kdWN0aXZlLWhlYWRpbmctMDUgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJHByb2R1Y3RpdmUtaGVhZGluZy0wNjogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEwKSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgnbGlnaHQnKSxcXG4gIC8vIEV4dHJhIGRpZ2l0IG5lZWRlZCBmb3IgcHJlY2lzaW9uIGluIENocm9tZVxcbiAgbGluZS1oZWlnaHQ6IDEuMTk5LFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAsXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kaGVhZGluZy0wNjogJHByb2R1Y3RpdmUtaGVhZGluZy0wNiAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kcHJvZHVjdGl2ZS1oZWFkaW5nLTA3OiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTIpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdsaWdodCcpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMTksXFxuICBsZXR0ZXItc3BhY2luZzogMCxcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRoZWFkaW5nLTA3OiAkcHJvZHVjdGl2ZS1oZWFkaW5nLTA3ICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRleHByZXNzaXZlLWhlYWRpbmctMDE6ICRoZWFkaW5nLTAxICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRleHByZXNzaXZlLWhlYWRpbmctMDI6ICRoZWFkaW5nLTAyICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRleHByZXNzaXZlLWhlYWRpbmctMDM6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSg1KSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgncmVndWxhcicpLFxcbiAgbGluZS1oZWlnaHQ6IDEuNCxcXG4gIGxldHRlci1zcGFjaW5nOiAwLFxcbiAgYnJlYWtwb2ludHM6IChcXG4gICAgeGxnOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDUpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjQsXFxuICAgICksXFxuICAgIG1heDogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSg2KSxcXG4gICAgICBsaW5lLWhlaWdodDogMS4zMzQsXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGZsdWlkLWhlYWRpbmctMDM6ICRleHByZXNzaXZlLWhlYWRpbmctMDMgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGV4cHJlc3NpdmUtaGVhZGluZy0wNDogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDcpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICBsaW5lLWhlaWdodDogMS4yODU3MixcXG4gIGxldHRlci1zcGFjaW5nOiAwLFxcbiAgYnJlYWtwb2ludHM6IChcXG4gICAgeGxnOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDgpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1LFxcbiAgICAgIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgncmVndWxhcicpLFxcbiAgICApLFxcbiAgICBtYXg6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoOCksXFxuICAgICAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGZsdWlkLWhlYWRpbmctMDQ6ICRleHByZXNzaXZlLWhlYWRpbmctMDQgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGV4cHJlc3NpdmUtaGVhZGluZy0wNTogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDgpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdyZWd1bGFyJyksXFxuICBsaW5lLWhlaWdodDogMS4yNSxcXG4gIGxldHRlci1zcGFjaW5nOiAwLFxcbiAgYnJlYWtwb2ludHM6IChcXG4gICAgbWQ6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoOSksXFxuICAgICAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdsaWdodCcpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjIyLFxcbiAgICApLFxcbiAgICBsZzogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxMCksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMTksXFxuICAgICksXFxuICAgIHhsZzogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxMSksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMTcsXFxuICAgICksXFxuICAgIG1heDogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxMyksXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGZsdWlkLWhlYWRpbmctMDU6ICRleHByZXNzaXZlLWhlYWRpbmctMDUgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGV4cHJlc3NpdmUtaGVhZGluZy0wNjogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDgpLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdzZW1pYm9sZCcpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMjUsXFxuICBsZXR0ZXItc3BhY2luZzogMCxcXG4gIGJyZWFrcG9pbnRzOiAoXFxuICAgIG1kOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDkpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjIyLFxcbiAgICApLFxcbiAgICBsZzogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxMCksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMTksXFxuICAgICksXFxuICAgIHhsZzogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxMSksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMTcsXFxuICAgICksXFxuICAgIG1heDogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxMyksXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGZsdWlkLWhlYWRpbmctMDY6ICRleHByZXNzaXZlLWhlYWRpbmctMDYgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGV4cHJlc3NpdmUtcGFyYWdyYXBoLTAxOiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoNiksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ2xpZ2h0JyksXFxuICBsaW5lLWhlaWdodDogMS4zMzQsXFxuICBsZXR0ZXItc3BhY2luZzogMCxcXG4gIGJyZWFrcG9pbnRzOiAoXFxuICAgIGxnOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDcpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjI4NTcyLFxcbiAgICApLFxcbiAgICBtYXg6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoOCksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMjUsXFxuICAgICksXFxuICApLFxcbik7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGZsdWlkLXBhcmFncmFwaC0wMTogJGV4cHJlc3NpdmUtcGFyYWdyYXBoLTAxICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRxdW90YXRpb24tMDE6IChcXG4gIGZvbnQtZmFtaWx5OiBmb250LWZhbWlseS5mb250LWZhbWlseSgnc2VyaWYnKSxcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSg1KSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgncmVndWxhcicpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMyxcXG4gIGxldHRlci1zcGFjaW5nOiAwLFxcbiAgYnJlYWtwb2ludHM6IChcXG4gICAgbWQ6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoNSksXFxuICAgICksXFxuICAgIGxnOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDYpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjMzNCxcXG4gICAgKSxcXG4gICAgeGxnOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDcpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjI4NTcyLFxcbiAgICApLFxcbiAgICBtYXg6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoOCksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMjUsXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGZsdWlkLXF1b3RhdGlvbi0wMTogJHF1b3RhdGlvbi0wMSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kcXVvdGF0aW9uLTAyOiAoXFxuICBmb250LWZhbWlseTogZm9udC1mYW1pbHkuZm9udC1mYW1pbHkoJ3NlcmlmJyksXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoOCksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ2xpZ2h0JyksXFxuICBsaW5lLWhlaWdodDogMS4yNSxcXG4gIGxldHRlci1zcGFjaW5nOiAwLFxcbiAgYnJlYWtwb2ludHM6IChcXG4gICAgbWQ6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoOSksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMjIsXFxuICAgICksXFxuICAgIGxnOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEwKSxcXG4gICAgICBsaW5lLWhlaWdodDogMS4xOSxcXG4gICAgKSxcXG4gICAgeGxnOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDExKSxcXG4gICAgICBsaW5lLWhlaWdodDogMS4xNyxcXG4gICAgKSxcXG4gICAgbWF4OiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEzKSxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kZmx1aWQtcXVvdGF0aW9uLTAyOiAkcXVvdGF0aW9uLTAyICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRkaXNwbGF5LTAxOiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTApLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdsaWdodCcpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMTksXFxuICBsZXR0ZXItc3BhY2luZzogMCxcXG4gIGJyZWFrcG9pbnRzOiAoXFxuICAgIG1kOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEwKSxcXG4gICAgKSxcXG4gICAgbGc6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTIpLFxcbiAgICApLFxcbiAgICB4bGc6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTMpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjE3LFxcbiAgICApLFxcbiAgICBtYXg6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTUpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjEzLFxcbiAgICApLFxcbiAgKSxcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRmbHVpZC1kaXNwbGF5LTAxOiAkZGlzcGxheS0wMSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kZGlzcGxheS0wMjogKFxcbiAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEwKSxcXG4gIGZvbnQtd2VpZ2h0OiBmb250LWZhbWlseS5mb250LXdlaWdodCgnc2VtaWJvbGQnKSxcXG4gIGxpbmUtaGVpZ2h0OiAxLjE5LFxcbiAgbGV0dGVyLXNwYWNpbmc6IDAsXFxuICBicmVha3BvaW50czogKFxcbiAgICBtZDogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxMCksXFxuICAgICksXFxuICAgIGxnOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEyKSxcXG4gICAgKSxcXG4gICAgeGxnOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDEzKSxcXG4gICAgICBsaW5lLWhlaWdodDogMS4xNixcXG4gICAgKSxcXG4gICAgbWF4OiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDE1KSxcXG4gICAgICBsaW5lLWhlaWdodDogMS4xMyxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kZmx1aWQtZGlzcGxheS0wMjogJGRpc3BsYXktMDIgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGRpc3BsYXktMDM6IChcXG4gIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxMCksXFxuICBmb250LXdlaWdodDogZm9udC1mYW1pbHkuZm9udC13ZWlnaHQoJ2xpZ2h0JyksXFxuICBsaW5lLWhlaWdodDogMS4xOSxcXG4gIGxldHRlci1zcGFjaW5nOiAwLFxcbiAgYnJlYWtwb2ludHM6IChcXG4gICAgbWQ6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTIpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjE4LFxcbiAgICApLFxcbiAgICBsZzogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxMyksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMTYsXFxuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjY0cHgsXFxuICAgICksXFxuICAgIHhsZzogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxNSksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMTMsXFxuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjY0cHgsXFxuICAgICksXFxuICAgIG1heDogKFxcbiAgICAgIGZvbnQtc2l6ZTogc2NhbGUudHlwZS1zY2FsZSgxNiksXFxuICAgICAgbGluZS1oZWlnaHQ6IDEuMTEsXFxuICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjk2cHgsXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEB0eXBlIE1hcFxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuJGZsdWlkLWRpc3BsYXktMDM6ICRkaXNwbGF5LTAzICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRkaXNwbGF5LTA0OiAoXFxuICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTApLFxcbiAgZm9udC13ZWlnaHQ6IGZvbnQtZmFtaWx5LmZvbnQtd2VpZ2h0KCdsaWdodCcpLFxcbiAgbGluZS1oZWlnaHQ6IDEuMTksXFxuICBsZXR0ZXItc3BhY2luZzogMCxcXG4gIGJyZWFrcG9pbnRzOiAoXFxuICAgIG1kOiAoXFxuICAgICAgZm9udC1zaXplOiBzY2FsZS50eXBlLXNjYWxlKDE0KSxcXG4gICAgICBsaW5lLWhlaWdodDogMS4xNSxcXG4gICAgKSxcXG4gICAgbGc6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMTcpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjExLFxcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMC42NHB4LFxcbiAgICApLFxcbiAgICB4bGc6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMjApLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjA3LFxcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMC42NHB4LFxcbiAgICApLFxcbiAgICBtYXg6IChcXG4gICAgICBmb250LXNpemU6IHNjYWxlLnR5cGUtc2NhbGUoMjMpLFxcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjA1LFxcbiAgICAgIGxldHRlci1zcGFjaW5nOiAtMC45NnB4LFxcbiAgICApLFxcbiAgKSxcXG4pICFkZWZhdWx0O1xcblxcbi8vLyBAdHlwZSBNYXBcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbiRmbHVpZC1kaXNwbGF5LTA0OiAkZGlzcGxheS0wNCAhZGVmYXVsdDtcXG5cXG4vLy8gQHR5cGUgTWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG4kdG9rZW5zOiAoXFxuICBjYXB0aW9uLTAxOiAkY2FwdGlvbi0wMSxcXG4gIGNhcHRpb24tMDI6ICRjYXB0aW9uLTAyLFxcbiAgbGFiZWwtMDE6ICRsYWJlbC0wMSxcXG4gIGxhYmVsLTAyOiAkbGFiZWwtMDIsXFxuICBoZWxwZXItdGV4dC0wMTogJGhlbHBlci10ZXh0LTAxLFxcbiAgaGVscGVyLXRleHQtMDI6ICRoZWxwZXItdGV4dC0wMixcXG4gIGJvZHktc2hvcnQtMDE6ICRib2R5LXNob3J0LTAxLFxcbiAgYm9keS1zaG9ydC0wMjogJGJvZHktc2hvcnQtMDIsXFxuICBib2R5LWxvbmctMDE6ICRib2R5LWxvbmctMDEsXFxuICBib2R5LWxvbmctMDI6ICRib2R5LWxvbmctMDIsXFxuICBjb2RlLTAxOiAkY29kZS0wMSxcXG4gIGNvZGUtMDI6ICRjb2RlLTAyLFxcbiAgaGVhZGluZy0wMTogJGhlYWRpbmctMDEsXFxuICBoZWFkaW5nLTAyOiAkaGVhZGluZy0wMixcXG4gIHByb2R1Y3RpdmUtaGVhZGluZy0wMTogJHByb2R1Y3RpdmUtaGVhZGluZy0wMSxcXG4gIHByb2R1Y3RpdmUtaGVhZGluZy0wMjogJHByb2R1Y3RpdmUtaGVhZGluZy0wMixcXG4gIHByb2R1Y3RpdmUtaGVhZGluZy0wMzogJHByb2R1Y3RpdmUtaGVhZGluZy0wMyxcXG4gIHByb2R1Y3RpdmUtaGVhZGluZy0wNDogJHByb2R1Y3RpdmUtaGVhZGluZy0wNCxcXG4gIHByb2R1Y3RpdmUtaGVhZGluZy0wNTogJHByb2R1Y3RpdmUtaGVhZGluZy0wNSxcXG4gIHByb2R1Y3RpdmUtaGVhZGluZy0wNjogJHByb2R1Y3RpdmUtaGVhZGluZy0wNixcXG4gIHByb2R1Y3RpdmUtaGVhZGluZy0wNzogJHByb2R1Y3RpdmUtaGVhZGluZy0wNyxcXG4gIGV4cHJlc3NpdmUtcGFyYWdyYXBoLTAxOiAkZXhwcmVzc2l2ZS1wYXJhZ3JhcGgtMDEsXFxuICBleHByZXNzaXZlLWhlYWRpbmctMDE6ICRleHByZXNzaXZlLWhlYWRpbmctMDEsXFxuICBleHByZXNzaXZlLWhlYWRpbmctMDI6ICRleHByZXNzaXZlLWhlYWRpbmctMDIsXFxuICBleHByZXNzaXZlLWhlYWRpbmctMDM6ICRleHByZXNzaXZlLWhlYWRpbmctMDMsXFxuICBleHByZXNzaXZlLWhlYWRpbmctMDQ6ICRleHByZXNzaXZlLWhlYWRpbmctMDQsXFxuICBleHByZXNzaXZlLWhlYWRpbmctMDU6ICRleHByZXNzaXZlLWhlYWRpbmctMDUsXFxuICBleHByZXNzaXZlLWhlYWRpbmctMDY6ICRleHByZXNzaXZlLWhlYWRpbmctMDYsXFxuICBxdW90YXRpb24tMDE6ICRxdW90YXRpb24tMDEsXFxuICBxdW90YXRpb24tMDI6ICRxdW90YXRpb24tMDIsXFxuICBkaXNwbGF5LTAxOiAkZGlzcGxheS0wMSxcXG4gIGRpc3BsYXktMDI6ICRkaXNwbGF5LTAyLFxcbiAgZGlzcGxheS0wMzogJGRpc3BsYXktMDMsXFxuICBkaXNwbGF5LTA0OiAkZGlzcGxheS0wNCxcXG4gIC8vIFYxMSBUb2tlbnNcXG4gIGxlZ2FsLTAxOiAkbGVnYWwtMDEsXFxuICBsZWdhbC0wMjogJGxlZ2FsLTAyLFxcbiAgYm9keS1jb21wYWN0LTAxOiAkYm9keS1jb21wYWN0LTAxLFxcbiAgYm9keS1jb21wYWN0LTAyOiAkYm9keS1jb21wYWN0LTAyLFxcbiAgaGVhZGluZy1jb21wYWN0LTAxOiAkaGVhZGluZy1jb21wYWN0LTAxLFxcbiAgaGVhZGluZy1jb21wYWN0LTAyOiAkaGVhZGluZy1jb21wYWN0LTAyLFxcbiAgYm9keS0wMTogJGJvZHktMDEsXFxuICBib2R5LTAyOiAkYm9keS0wMixcXG4gIGhlYWRpbmctMDM6ICRoZWFkaW5nLTAzLFxcbiAgaGVhZGluZy0wNDogJGhlYWRpbmctMDQsXFxuICBoZWFkaW5nLTA1OiAkaGVhZGluZy0wNSxcXG4gIGhlYWRpbmctMDY6ICRoZWFkaW5nLTA2LFxcbiAgaGVhZGluZy0wNzogJGhlYWRpbmctMDcsXFxuICBmbHVpZC1oZWFkaW5nLTAzOiAkZmx1aWQtaGVhZGluZy0wMyxcXG4gIGZsdWlkLWhlYWRpbmctMDQ6ICRmbHVpZC1oZWFkaW5nLTA0LFxcbiAgZmx1aWQtaGVhZGluZy0wNTogJGZsdWlkLWhlYWRpbmctMDUsXFxuICBmbHVpZC1oZWFkaW5nLTA2OiAkZmx1aWQtaGVhZGluZy0wNixcXG4gIGZsdWlkLXBhcmFncmFwaC0wMTogJGZsdWlkLXBhcmFncmFwaC0wMSxcXG4gIGZsdWlkLXF1b3RhdGlvbi0wMTogJGZsdWlkLXF1b3RhdGlvbi0wMSxcXG4gIGZsdWlkLXF1b3RhdGlvbi0wMjogJGZsdWlkLXF1b3RhdGlvbi0wMixcXG4gIGZsdWlkLWRpc3BsYXktMDE6ICRmbHVpZC1kaXNwbGF5LTAxLFxcbiAgZmx1aWQtZGlzcGxheS0wMjogJGZsdWlkLWRpc3BsYXktMDIsXFxuICBmbHVpZC1kaXNwbGF5LTAzOiAkZmx1aWQtZGlzcGxheS0wMyxcXG4gIGZsdWlkLWRpc3BsYXktMDQ6ICRmbHVpZC1kaXNwbGF5LTA0LFxcbikgIWRlZmF1bHQ7XFxuXFxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwXFxuLy8vIEBhY2Nlc3MgcHVibGljXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG5AbWl4aW4gcHJvcGVydGllcygkbWFwKSB7XFxuICBAZWFjaCAkbmFtZSwgJHZhbHVlIGluICRtYXAge1xcbiAgICAjeyRuYW1lfTogJHZhbHVlO1xcbiAgfVxcbn1cXG5cXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIE51bWJlciB3aXRoIHVuaXRzXFxuLy8vIEByZXR1cm4ge051bWJlcn0gV2l0aG91dCB1bml0c1xcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJHZhbHVlKSB7XFxuICBAcmV0dXJuIG1hdGguZGl2KCR2YWx1ZSwgJHZhbHVlICogMCArIDEpO1xcbn1cXG5cXG4vLy8gVGhpcyBoZWxwZXIgaW5jbHVkZXMgZmx1aWQgdHlwZSBzdHlsZXMgZm9yIHRoZSBnaXZlbiB0b2tlbiB2YWx1ZS4gRmx1aWQgdHlwZVxcbi8vLyBtZWFucyB0aGF0IHRoZSBgZm9udC1zaXplYCBpcyBjb21wdXRlZCB1c2luZyBgY2FsYygpYCBpbiBvcmRlciB0byBiZVxcbi8vLyBkZXRlcm1pbmVkIGJ5IHRoZSBzY3JlZW4gc2l6ZSBpbnN0ZWFkIG9mIGEgYnJlYWtwb2ludC4gQXMgYSByZXN1bHQsIGZsdWlkXFxuLy8vIHN0eWxlcyBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24gaW4gZml4ZWQgd2lkdGggY29udGV4dHMuXFxuLy8vXFxuLy8vIEluIGFkZGl0aW9uLCB3ZSBtYWtlIHVzZSBvZiAlLWJhc2VkIGxpbmUtaGVpZ2h0cyBzbyB0aGF0IHRoZSBsaW5lLWhlaWdodCBvZlxcbi8vLyBlYWNoIHR5cGUgc3R5bGUgaXMgY29tcHV0ZWQgY29ycmVjdGx5IGR1ZSB0byB0aGUgZHluYW1pYyBuYXR1cmUgb2YgdGhlXFxuLy8vIGBmb250LXNpemVgLlxcbi8vL1xcbi8vLyBNb3N0IG9mIHRoZSBsb2dpYyBmb3IgdGhpcyB3b3JrIGNvbWVzIGZyb20gQ1NTIFRyaWNrczpcXG4vLy8gaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9zbmlwcGV0cy9jc3MvZmx1aWQtdHlwb2dyYXBoeS9cXG4vLy9cXG4vLy8gQHBhcmFtIHtNYXB9ICR0eXBlLXN0eWxlcyAtIFRoZSB2YWx1ZSBvZiBhIGdpdmVuIHR5cGUgdG9rZW5cXG4vLy8gQHBhcmFtIHtNYXB9ICRicmVha3BvaW50cyBbJGdyaWQtYnJlYWtwb2ludHNdIC0gQ3VzdG9tIGJyZWFrcG9pbnRzIHRvIHVzZVxcbi8vLyBAYWNjZXNzIHB1YmxpY1xcbi8vLyBAZ3JvdXAgQGNhcmJvbi90eXBlXFxuQG1peGluIGZsdWlkLXR5cGUoJHR5cGUtc3R5bGVzLCAkYnJlYWtwb2ludHM6IGdyaWRjb25maWcuJGdyaWQtYnJlYWtwb2ludHMpIHtcXG4gIC8vIEluY2x1ZGUgdGhlIGluaXRpYWwgc3R5bGVzIGZvciB0aGUgZ2l2ZW4gdG9rZW4gYnkgZGVmYXVsdCB3aXRob3V0IGFueVxcbiAgLy8gbWVkaWEgcXVlcnkgZ3VhcmQuIFRoaXMgaW5jbHVkZXMgYGZvbnQtc2l6ZWAgYXMgYSBmYWxsYmFjayBpbiB0aGUgY2FzZVxcbiAgLy8gdGhhdCBhIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBgY2FsYygpYFxcbiAgQGluY2x1ZGUgcHJvcGVydGllcyhtYXAucmVtb3ZlKCR0eXBlLXN0eWxlcywgYnJlYWtwb2ludHMpKTtcXG4gIC8vIFdlIGFsc28gbmVlZCB0byBpbmNsdWRlIHRoZSBgc21gIHN0eWxlcyBieSBkZWZhdWx0IHNpbmNlIHRoZXkgZG9uJ3RcXG4gIC8vIGFwcGVhciBpbiB0aGUgZmx1aWQgc3R5bGVzIGZvciB0b2tlbnNcXG4gIEBpbmNsdWRlIGZsdWlkLXR5cGUtc2l6ZSgkdHlwZS1zdHlsZXMsIHNtLCAkYnJlYWtwb2ludHMpO1xcblxcbiAgLy8gRmluYWxseSwgd2UgbmVlZCB0byBnbyB0aHJvdWdoIGFsbCB0aGUgYnJlYWtwb2ludHMgZGVmaW5lZCBpbiB0aGUgdHlwZVxcbiAgLy8gdG9rZW4gYW5kIGFwcGx5IHRoZSBwcm9wZXJ0aWVzIGFuZCBmbHVpZCB0eXBlIHNpemUgZm9yIHRoYXQgZ2l2ZW5cXG4gIC8vIGJyZWFrcG9pbnRcXG4gIEBlYWNoICRuYW1lLCAkdmFsdWVzIGluIG1hcC5nZXQoJHR5cGUtc3R5bGVzLCBicmVha3BvaW50cykge1xcbiAgICBAaW5jbHVkZSBncmlkLmJyZWFrcG9pbnQoJG5hbWUpIHtcXG4gICAgICBAaW5jbHVkZSBwcm9wZXJ0aWVzKCR2YWx1ZXMpO1xcbiAgICAgIEBpbmNsdWRlIGZsdWlkLXR5cGUtc2l6ZSgkdHlwZS1zdHlsZXMsICRuYW1lLCAkYnJlYWtwb2ludHMpO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi8vLyBDb21wdXRlcyB0aGUgZmx1aWQgYGZvbnQtc2l6ZWAgZm9yIGEgZ2l2ZW4gdHlwZSBzdHlsZSBhbmQgYnJlYWtwb2ludFxcbi8vLyBAcGFyYW0ge01hcH0gJHR5cGUtc3R5bGVzIC0gVGhlIHN0eWxlcyBmb3IgYSBnaXZlbiB0b2tlblxcbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgYnJlYWtwb2ludCB0byB3aGljaCB3ZSBhcHBseSB0aGUgZmx1aWRcXG4vLy8gQHBhcmFtIHtNYXB9ICRicmVha3BvaW50cyBbJGdyaWQtYnJlYWtwb2ludHNdIC0gVGhlIGJyZWFrcG9pbnRzIGZvciB0aGUgZ3JpZCBzeXN0ZW1cXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbkBtaXhpbiBmbHVpZC10eXBlLXNpemUoXFxuICAkdHlwZS1zdHlsZXMsXFxuICAkbmFtZSxcXG4gICRicmVha3BvaW50czogZ3JpZGNvbmZpZy4kZ3JpZC1icmVha3BvaW50c1xcbikge1xcbiAgLy8gR2V0IHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnJlYWtwb2ludCB3ZSdyZSBjdXJyZW50bHkgd29ya2luZyBpbi4gVXNlZnVsXFxuICAvLyBmb3IgZ2V0dGluZyBpbml0aWFsIHdpZHRoIGluZm9ybWF0aW9uXFxuICAkYnJlYWtwb2ludDogbWFwLmdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcXG5cXG4gIC8vIE91ciBmbHVpZCBzdHlsZXMgYXJlIGNhcHR1cmVkIHVuZGVyIHRoZSAnYnJlYWtwb2ludHMnIHByb3BlcnR5IGluIG91ciB0eXBlXFxuICAvLyBzdHlsZXMgbWFwLiBUaGVzZSBkZWZpbmUgd2hhdCB2YWx1ZXMgdG8gdHJlYXQgYXMgYG1heC1gIHZhcmlhYmxlcyBiZWxvd1xcbiAgJGZsdWlkLXNpemVzOiBtYXAuZ2V0KCR0eXBlLXN0eWxlcywgYnJlYWtwb2ludHMpO1xcbiAgJGZsdWlkLWJyZWFrcG9pbnQ6ICgpO1xcbiAgLy8gU3BlY2lhbCBjYXNlIGZvciBgc21gIGJlY2F1c2UgdGhlIHN0eWxlcyBmb3Igc21hbGwgYXJlIG9uIHRoZSB0eXBlIHN0eWxlXFxuICAvLyBkaXJlY3RseVxcbiAgQGlmICRuYW1lID09IHNtIHtcXG4gICAgJGZsdWlkLWJyZWFrcG9pbnQ6IG1hcC5yZW1vdmUoJHR5cGUtc3R5bGVzLCBicmVha3BvaW50cyk7XFxuICB9IEBlbHNlIHtcXG4gICAgJGZsdWlkLWJyZWFrcG9pbnQ6IG1hcC5nZXQoJGZsdWlkLXNpemVzLCAkbmFtZSk7XFxuICB9XFxuXFxuICAvLyBJbml0aWFsaXplIG91ciBmb250LXNpemVzIHRvIHRoZSBkZWZhdWx0IHNpemUgZm9yIHRoZSB0eXBlIHN0eWxlXFxuICAkbWF4LWZvbnQtc2l6ZTogbWFwLmdldCgkdHlwZS1zdHlsZXMsIGZvbnQtc2l6ZSk7XFxuICAkbWluLWZvbnQtc2l6ZTogbWFwLmdldCgkdHlwZS1zdHlsZXMsIGZvbnQtc2l6ZSk7XFxuICBAaWYgbWFwLmhhcy1rZXkoJGZsdWlkLWJyZWFrcG9pbnQsIGZvbnQtc2l6ZSkge1xcbiAgICAkbWluLWZvbnQtc2l6ZTogbWFwLmdldCgkZmx1aWQtYnJlYWtwb2ludCwgZm9udC1zaXplKTtcXG4gIH1cXG5cXG4gIC8vIEluaXRpYWxpemUgb3VyIG1pbiBhbmQgbWF4IHdpZHRoIHRvIHRoZSB3aWR0aCBvZiB0aGUgY3VycmVudCBicmVha3BvaW50XFxuICAkbWF4LXZ3OiBtYXAuZ2V0KCRicmVha3BvaW50LCB3aWR0aCk7XFxuICAkbWluLXZ3OiBtYXAuZ2V0KCRicmVha3BvaW50LCB3aWR0aCk7XFxuXFxuICAvLyBXZSBjYW4gdXNlIGBicmVha3BvaW50LW5leHRgIHRvIHNlZSBpZiB0aGVyZSBpcyBhbm90aGVyIGJyZWFrcG9pbnQgd2UgY2FuXFxuICAvLyB1c2UgdG8gdXBkYXRlIGBtYXgtZm9udC1zaXplYCBhbmQgYG1heC12d2Agd2l0aCBsYXJnZXIgdmFsdWVzXFxuICAkbmV4dC1icmVha3BvaW50LWF2YWlsYWJsZTogZ3JpZC5icmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50cyk7XFxuICAkbmV4dC1mbHVpZC1icmVha3BvaW50LW5hbWU6IG51bGw7XFxuXFxuICAvLyBXZSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGUgbmV4dCBhdmFpbGFibGUgZmx1aWQgYnJlYWtwb2ludCBpcyBmb3Igb3VyXFxuICAvLyBnaXZlbiAkdHlwZS1zdHlsZXMuIEluIHRoaXMgbG9vcCB3ZSB0cnkgYW5kIGl0ZXJhdGUgdGhyb3VnaCBicmVha3BvaW50c1xcbiAgLy8gdW50aWwgd2UgZWl0aGVyIG1hbnVhbGx5IHNldCAkbmV4dC1icmVha3BvaW50LWF2YWlsYWJsZSB0byBudWxsIG9yXFxuICAvLyBgYnJlYWtwb2ludC1uZXh0YCByZXR1cm5zIG51bGwuXFxuICBAd2hpbGUgJG5leHQtYnJlYWtwb2ludC1hdmFpbGFibGUge1xcbiAgICBAaWYgbWFwLmhhcy1rZXkoJGZsdWlkLXNpemVzLCAkbmV4dC1icmVha3BvaW50LWF2YWlsYWJsZSkge1xcbiAgICAgICRuZXh0LWZsdWlkLWJyZWFrcG9pbnQtbmFtZTogJG5leHQtYnJlYWtwb2ludC1hdmFpbGFibGU7XFxuICAgICAgJG5leHQtYnJlYWtwb2ludC1hdmFpbGFibGU6IG51bGw7XFxuICAgIH0gQGVsc2Uge1xcbiAgICAgICRuZXh0LWJyZWFrcG9pbnQtYXZhaWxhYmxlOiBncmlkLmJyZWFrcG9pbnQtbmV4dChcXG4gICAgICAgICRuZXh0LWJyZWFrcG9pbnQtYXZhaWxhYmxlLFxcbiAgICAgICAgJGJyZWFrcG9pbnRzXFxuICAgICAgKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLy8gSWYgd2UgaGF2ZSBmb3VuZCB0aGUgbmV4dCBhdmFpbGFibGUgZmx1aWQgYnJlYWtwb2ludCBuYW1lLCB0aGVuIHdlIGtub3dcXG4gIC8vIHRoYXQgd2UgaGF2ZSB2YWx1ZXMgdGhhdCB3ZSBjYW4gdXNlIHRvIHNldCBtYXgtZm9udC1zaXplIGFuZCBtYXgtdncgYXMgYm90aFxcbiAgLy8gdmFsdWVzIGRlcml2ZSBmcm9tIHRoZSBuZXh0IGJyZWFrcG9pbnRcXG4gIEBpZiAkbmV4dC1mbHVpZC1icmVha3BvaW50LW5hbWUge1xcbiAgICAkbmV4dC1mbHVpZC1icmVha3BvaW50OiBtYXAuZ2V0KCRicmVha3BvaW50cywgJG5leHQtZmx1aWQtYnJlYWtwb2ludC1uYW1lKTtcXG4gICAgJG1heC1mb250LXNpemU6IG1hcC5nZXQoXFxuICAgICAgbWFwLmdldCgkZmx1aWQtc2l6ZXMsICRuZXh0LWZsdWlkLWJyZWFrcG9pbnQtbmFtZSksXFxuICAgICAgZm9udC1zaXplXFxuICAgICk7XFxuICAgICRtYXgtdnc6IG1hcC5nZXQoJG5leHQtZmx1aWQtYnJlYWtwb2ludCwgd2lkdGgpO1xcblxcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcXG4gICAgZm9udC1zaXplOiBjYWxjKCN7JG1pbi1mb250LXNpemV9ICtcXG4gICAgICAje3N0cmlwLXVuaXQoJG1heC1mb250LXNpemUgLSAkbWluLWZvbnQtc2l6ZSl9ICpcXG4gICAgICAoKDEwMHZ3IC0gI3skbWluLXZ3fSkgLyAje3N0cmlwLXVuaXQoJG1heC12dyAtICRtaW4tdncpfSlcXG4gICAgKTtcXG4gIH0gQGVsc2Uge1xcbiAgICAvLyBPdGhlcndpc2UsIGp1c3QgZGVmYXVsdCB0byBzZXR0aW5nIHRoZSBmb250IHNpemUgZm91bmQgZnJvbSB0aGUgdHlwZVxcbiAgICAvLyBzdHlsZSBvciB0aGUgZ2l2ZW4gZmx1aWQgYnJlYWtwb2ludCBpbiB0aGUgdHlwZSBzdHlsZVxcbiAgICBmb250LXNpemU6ICRtaW4tZm9udC1zaXplO1xcbiAgfVxcbn1cXG5cXG4vLyBUT0RPIG1vdmUgZm9sbG93aW5nIHZhcmlhYmxlIGFuZCBgY3VzdG9tLXByb3BlcnR5YCBtaXhpbiBpbnRvIHNoYXJlZCBmaWxlIGZvclxcbi8vIGJvdGggYEBjYXJib24vdHlwZWAgYW5kIGBAY2FyYm9uL3RoZW1lc2BcXG5cXG4vLy8gQGFjY2VzcyBwcml2YXRlXFxuLy8vIEBncm91cCBAY2FyYm9uL3R5cGVcXG5AbWl4aW4gY3VzdG9tLXByb3BlcnRpZXMoJG5hbWUsICR2YWx1ZSkge1xcbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJHZhbHVlIHtcXG4gICAgI3skcHJvcGVydHl9OiB2YXIoXFxuICAgICAgLS0jeyRjdXN0b20tcHJvcGVydHktcHJlZml4fS0jeyRuYW1lfS0jeyRwcm9wZXJ0eX0sXFxuICAgICAgI3skdmFsdWV9XFxuICAgICk7XFxuICB9XFxufVxcblxcbi8vLyBIZWxwZXIgbWl4aW4gdG8gaW5jbHVkZSB0aGUgc3R5bGVzIGZvciBhIGdpdmVuIHRva2VuIGluIGFueSBzZWxlY3RvciBpbiB5b3VyXFxuLy8vIHByb2plY3QuIEFsc28gaW5jbHVkZXMgYW4gb3B0aW9uYWwgZmx1aWQgb3B0aW9uIHRoYXQgd2lsbCBlbmFibGUgZmx1aWRcXG4vLy8gc3R5bGVzIGZvciB0aGUgdG9rZW4gaWYgdGhleSBhcmUgZGVmaW5lZC4gRmx1aWQgc3R5bGVzIHdpbGwgY2F1c2UgdGhlXFxuLy8vIHRva2VuJ3MgZm9udC1zaXplIHRvIGJlIGNvbXB1dGVkIGJhc2VkIG9uIHRoZSB2aWV3cG9ydCBzaXplLiBBcyBhIHJlc3VsdCwgdXNlXFxuLy8vIHdpdGggY2F1dGlvbiBpbiBmaXhlZCBjb250ZXh0cy5cXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHRva2VuIHRvIGdldCB0aGUgc3R5bGVzIGZvclxcbi8vLyBAcGFyYW0ge0Jvb2xlYW59ICRmbHVpZCBbZmFsc2VdIC0gU3BlY2lmeSB3aGV0aGVyIHRvIGluY2x1ZGUgZmx1aWQgc3R5bGVzIGZvciB0aGVcXG4vLy8gQHBhcmFtIHtNYXB9ICRicmVha3BvaW50cyBbJGdyaWQtYnJlYWtwb2ludHNdIC0gUHJvdmlkZSBhIGN1c3RvbSBicmVha3BvaW50IG1hcCB0byB1c2VcXG4vLy8gQGFjY2VzcyBwdWJsaWNcXG4vLy8gQGdyb3VwIEBjYXJib24vdHlwZVxcbkBtaXhpbiB0eXBlLXN0eWxlKFxcbiAgJG5hbWUsXFxuICAkZmx1aWQ6IGZhbHNlLFxcbiAgJGJyZWFrcG9pbnRzOiBncmlkY29uZmlnLiRncmlkLWJyZWFrcG9pbnRzXFxuKSB7XFxuICBAaWYgbm90IG1hcC5oYXMta2V5KCR0b2tlbnMsICRuYW1lKSB7XFxuICAgIEBlcnJvciAnVW5hYmxlIHRvIGZpbmQgYSB0b2tlbiB3aXRoIHRoZSBuYW1lOiBgI3skbmFtZX1gJztcXG4gIH1cXG5cXG4gICR0b2tlbjogbWFwLmdldCgkdG9rZW5zLCAkbmFtZSk7XFxuXFxuICAvLyBJZiAkZmx1aWQgaXMgc2V0IHRvIHRydWUgYW5kIHRoZSB0b2tlbiBoYXMgYnJlYWtwb2ludHMgZGVmaW5lZCBmb3IgZmx1aWRcXG4gIC8vIHN0eWxlcywgZGVsZWdhdGUgdG8gdGhlIGZsdWlkLXR5cGUgaGVscGVyIGZvciB0aGUgZ2l2ZW4gdG9rZW5cXG4gIEBpZiAkZmx1aWQgPT0gdHJ1ZSBhbmQgbWFwLmhhcy1rZXkoJHRva2VuLCAnYnJlYWtwb2ludHMnKSB7XFxuICAgIEBpbmNsdWRlIGZsdWlkLXR5cGUoJHRva2VuLCAkYnJlYWtwb2ludHMpO1xcbiAgfSBAZWxzZSB7XFxuICAgIEBpbmNsdWRlIGN1c3RvbS1wcm9wZXJ0aWVzKCRuYW1lLCAkdG9rZW4pO1xcbiAgfVxcbn1cXG5cIixcIi8vXFxuLy8gQ29weXJpZ2h0IElCTSBDb3JwLiAyMDE4LCAyMDIzXFxuLy9cXG4vLyBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUtMi4wIGxpY2Vuc2UgZm91bmQgaW4gdGhlXFxuLy8gTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxcbi8vXFxuXFxuQHVzZSAnc2FzczptYXAnO1xcbkB1c2UgJy4uLy4uL2NvbmZpZyc7XFxuQHVzZSAnLi4vLi4vdGhlbWVzJztcXG5AdXNlICcuLi8uLi91dGlsaXRpZXMvY29tcG9uZW50LXRva2Vucyc7XFxuQHVzZSAnQGNhcmJvbi90aGVtZXMvc2Nzcy9jb21wb25lbnQtdG9rZW5zJyBhcyBidXR0b247XFxuXFxuJGJ1dHRvbi1zZXBhcmF0b3I6IChcXG4gIGZhbGxiYWNrOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXNlcGFyYXRvciwgd2hpdGUtdGhlbWUpLFxcbiAgdmFsdWVzOiAoXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiR3aGl0ZSxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1zZXBhcmF0b3IsIHdoaXRlLXRoZW1lKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1zZXBhcmF0b3IsIGctMTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzkwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXNlcGFyYXRvciwgZy05MCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXNlcGFyYXRvciwgZy0xMDApLFxcbiAgICApLFxcbiAgKSxcXG4pICFkZWZhdWx0O1xcblxcbiRidXR0b24tcHJpbWFyeTogKFxcbiAgZmFsbGJhY2s6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tcHJpbWFyeSwgd2hpdGUtdGhlbWUpLFxcbiAgdmFsdWVzOiAoXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiR3aGl0ZSxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1wcmltYXJ5LCB3aGl0ZS10aGVtZSksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tcHJpbWFyeSwgZy0xMCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnOTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tcHJpbWFyeSwgZy05MCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXByaW1hcnksIGctMTAwKSxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4kYnV0dG9uLXNlY29uZGFyeTogKFxcbiAgZmFsbGJhY2s6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tc2Vjb25kYXJ5LCB3aGl0ZS10aGVtZSksXFxuICB2YWx1ZXM6IChcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJHdoaXRlLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXNlY29uZGFyeSwgd2hpdGUtdGhlbWUpLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXNlY29uZGFyeSwgZy0xMCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnOTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tc2Vjb25kYXJ5LCBnLTkwKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMDAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tc2Vjb25kYXJ5LCBnLTEwMCksXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuJGJ1dHRvbi10ZXJ0aWFyeTogKFxcbiAgZmFsbGJhY2s6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tdGVydGlhcnksIHdoaXRlLXRoZW1lKSxcXG4gIHZhbHVlczogKFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kd2hpdGUsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tdGVydGlhcnksIHdoaXRlLXRoZW1lKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi10ZXJ0aWFyeSwgZy0xMCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnOTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tdGVydGlhcnksIGctOTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi10ZXJ0aWFyeSwgZy0xMDApLFxcbiAgICApLFxcbiAgKSxcXG4pICFkZWZhdWx0O1xcblxcbiRidXR0b24tZGFuZ2VyLXByaW1hcnk6IChcXG4gIGZhbGxiYWNrOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRhbmdlci1wcmltYXJ5LCB3aGl0ZS10aGVtZSksXFxuICB2YWx1ZXM6IChcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJHdoaXRlLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRhbmdlci1wcmltYXJ5LCB3aGl0ZS10aGVtZSksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tZGFuZ2VyLXByaW1hcnksIGctMTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzkwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRhbmdlci1wcmltYXJ5LCBnLTkwKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMDAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tZGFuZ2VyLXByaW1hcnksIGctMTAwKSxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4kYnV0dG9uLWRhbmdlci1zZWNvbmRhcnk6IChcXG4gIGZhbGxiYWNrOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRhbmdlci1zZWNvbmRhcnksIHdoaXRlLXRoZW1lKSxcXG4gIHZhbHVlczogKFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kd2hpdGUsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tZGFuZ2VyLXNlY29uZGFyeSwgd2hpdGUtdGhlbWUpLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRhbmdlci1zZWNvbmRhcnksIGctMTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzkwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRhbmdlci1zZWNvbmRhcnksIGctOTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1kYW5nZXItc2Vjb25kYXJ5LCBnLTEwMCksXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuJGJ1dHRvbi1kYW5nZXItYWN0aXZlOiAoXFxuICBmYWxsYmFjazogbWFwLmdldChidXR0b24uJGJ1dHRvbi1kYW5nZXItYWN0aXZlLCB3aGl0ZS10aGVtZSksXFxuICB2YWx1ZXM6IChcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJHdoaXRlLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRhbmdlci1hY3RpdmUsIHdoaXRlLXRoZW1lKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1kYW5nZXItYWN0aXZlLCBnLTEwKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGc5MCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1kYW5nZXItYWN0aXZlLCBnLTkwKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMDAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tZGFuZ2VyLWFjdGl2ZSwgZy0xMDApLFxcbiAgICApLFxcbiAgKSxcXG4pICFkZWZhdWx0O1xcblxcbiRidXR0b24tcHJpbWFyeS1hY3RpdmU6IChcXG4gIGZhbGxiYWNrOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXByaW1hcnktYWN0aXZlLCB3aGl0ZS10aGVtZSksXFxuICB2YWx1ZXM6IChcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJHdoaXRlLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXByaW1hcnktYWN0aXZlLCB3aGl0ZS10aGVtZSksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tcHJpbWFyeS1hY3RpdmUsIGctMTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzkwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXByaW1hcnktYWN0aXZlLCBnLTkwKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMDAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tcHJpbWFyeS1hY3RpdmUsIGctMTAwKSxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4kYnV0dG9uLXNlY29uZGFyeS1hY3RpdmU6IChcXG4gIGZhbGxiYWNrOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXNlY29uZGFyeS1hY3RpdmUsIHdoaXRlLXRoZW1lKSxcXG4gIHZhbHVlczogKFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kd2hpdGUsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tc2Vjb25kYXJ5LWFjdGl2ZSwgd2hpdGUtdGhlbWUpLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXNlY29uZGFyeS1hY3RpdmUsIGctMTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzkwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXNlY29uZGFyeS1hY3RpdmUsIGctOTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1zZWNvbmRhcnktYWN0aXZlLCBnLTEwMCksXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuJGJ1dHRvbi10ZXJ0aWFyeS1hY3RpdmU6IChcXG4gIGZhbGxiYWNrOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXRlcnRpYXJ5LWFjdGl2ZSwgd2hpdGUtdGhlbWUpLFxcbiAgdmFsdWVzOiAoXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiR3aGl0ZSxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi10ZXJ0aWFyeS1hY3RpdmUsIHdoaXRlLXRoZW1lKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi10ZXJ0aWFyeS1hY3RpdmUsIGctMTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzkwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXRlcnRpYXJ5LWFjdGl2ZSwgZy05MCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXRlcnRpYXJ5LWFjdGl2ZSwgZy0xMDApLFxcbiAgICApLFxcbiAgKSxcXG4pICFkZWZhdWx0O1xcblxcbiRidXR0b24tZGFuZ2VyLWhvdmVyOiAoXFxuICBmYWxsYmFjazogbWFwLmdldChidXR0b24uJGJ1dHRvbi1kYW5nZXItaG92ZXIsIHdoaXRlLXRoZW1lKSxcXG4gIHZhbHVlczogKFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kd2hpdGUsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tZGFuZ2VyLWhvdmVyLCB3aGl0ZS10aGVtZSksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tZGFuZ2VyLWhvdmVyLCBnLTEwKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGc5MCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1kYW5nZXItaG92ZXIsIGctOTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1kYW5nZXItaG92ZXIsIGctMTAwKSxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4kYnV0dG9uLXByaW1hcnktaG92ZXI6IChcXG4gIGZhbGxiYWNrOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXByaW1hcnktaG92ZXIsIHdoaXRlLXRoZW1lKSxcXG4gIHZhbHVlczogKFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kd2hpdGUsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tcHJpbWFyeS1ob3Zlciwgd2hpdGUtdGhlbWUpLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXByaW1hcnktaG92ZXIsIGctMTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzkwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXByaW1hcnktaG92ZXIsIGctOTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1wcmltYXJ5LWhvdmVyLCBnLTEwMCksXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuJGJ1dHRvbi1zZWNvbmRhcnktaG92ZXI6IChcXG4gIGZhbGxiYWNrOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXNlY29uZGFyeS1ob3Zlciwgd2hpdGUtdGhlbWUpLFxcbiAgdmFsdWVzOiAoXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiR3aGl0ZSxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1zZWNvbmRhcnktaG92ZXIsIHdoaXRlLXRoZW1lKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1zZWNvbmRhcnktaG92ZXIsIGctMTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzkwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXNlY29uZGFyeS1ob3ZlciwgZy05MCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXNlY29uZGFyeS1ob3ZlciwgZy0xMDApLFxcbiAgICApLFxcbiAgKSxcXG4pICFkZWZhdWx0O1xcblxcbiRidXR0b24tdGVydGlhcnktaG92ZXI6IChcXG4gIGZhbGxiYWNrOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXRlcnRpYXJ5LWhvdmVyLCB3aGl0ZS10aGVtZSksXFxuICB2YWx1ZXM6IChcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJHdoaXRlLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXRlcnRpYXJ5LWhvdmVyLCB3aGl0ZS10aGVtZSksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tdGVydGlhcnktaG92ZXIsIGctMTApLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzkwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLXRlcnRpYXJ5LWhvdmVyLCBnLTkwKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGcxMDAsXFxuICAgICAgdmFsdWU6IG1hcC5nZXQoYnV0dG9uLiRidXR0b24tdGVydGlhcnktaG92ZXIsIGctMTAwKSxcXG4gICAgKSxcXG4gICksXFxuKSAhZGVmYXVsdDtcXG5cXG4kYnV0dG9uLWRpc2FibGVkOiAoXFxuICBmYWxsYmFjazogbWFwLmdldChidXR0b24uJGJ1dHRvbi1kaXNhYmxlZCwgd2hpdGUtdGhlbWUpLFxcbiAgdmFsdWVzOiAoXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiR3aGl0ZSxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1kaXNhYmxlZCwgd2hpdGUtdGhlbWUpLFxcbiAgICApLFxcbiAgICAoXFxuICAgICAgdGhlbWU6IHRoZW1lcy4kZzEwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRpc2FibGVkLCBnLTEwKSxcXG4gICAgKSxcXG4gICAgKFxcbiAgICAgIHRoZW1lOiB0aGVtZXMuJGc5MCxcXG4gICAgICB2YWx1ZTogbWFwLmdldChidXR0b24uJGJ1dHRvbi1kaXNhYmxlZCwgZy05MCksXFxuICAgICksXFxuICAgIChcXG4gICAgICB0aGVtZTogdGhlbWVzLiRnMTAwLFxcbiAgICAgIHZhbHVlOiBtYXAuZ2V0KGJ1dHRvbi4kYnV0dG9uLWRpc2FibGVkLCBnLTEwMCksXFxuICAgICksXFxuICApLFxcbikgIWRlZmF1bHQ7XFxuXFxuJGJ1dHRvbi10b2tlbnM6IChcXG4gIGJ1dHRvbi1zZXBhcmF0b3I6ICRidXR0b24tc2VwYXJhdG9yLFxcbiAgYnV0dG9uLXByaW1hcnk6ICRidXR0b24tcHJpbWFyeSxcXG4gIGJ1dHRvbi1zZWNvbmRhcnk6ICRidXR0b24tc2Vjb25kYXJ5LFxcbiAgYnV0dG9uLXRlcnRpYXJ5OiAkYnV0dG9uLXRlcnRpYXJ5LFxcbiAgYnV0dG9uLWRhbmdlci1wcmltYXJ5OiAkYnV0dG9uLWRhbmdlci1wcmltYXJ5LFxcbiAgYnV0dG9uLWRhbmdlci1zZWNvbmRhcnk6ICRidXR0b24tZGFuZ2VyLXNlY29uZGFyeSxcXG4gIGJ1dHRvbi1kYW5nZXItYWN0aXZlOiAkYnV0dG9uLWRhbmdlci1hY3RpdmUsXFxuICBidXR0b24tcHJpbWFyeS1hY3RpdmU6ICRidXR0b24tcHJpbWFyeS1hY3RpdmUsXFxuICBidXR0b24tc2Vjb25kYXJ5LWFjdGl2ZTogJGJ1dHRvbi1zZWNvbmRhcnktYWN0aXZlLFxcbiAgYnV0dG9uLXRlcnRpYXJ5LWFjdGl2ZTogJGJ1dHRvbi10ZXJ0aWFyeS1hY3RpdmUsXFxuICBidXR0b24tZGFuZ2VyLWhvdmVyOiAkYnV0dG9uLWRhbmdlci1ob3ZlcixcXG4gIGJ1dHRvbi1wcmltYXJ5LWhvdmVyOiAkYnV0dG9uLXByaW1hcnktaG92ZXIsXFxuICBidXR0b24tc2Vjb25kYXJ5LWhvdmVyOiAkYnV0dG9uLXNlY29uZGFyeS1ob3ZlcixcXG4gIGJ1dHRvbi10ZXJ0aWFyeS1ob3ZlcjogJGJ1dHRvbi10ZXJ0aWFyeS1ob3ZlcixcXG4gIGJ1dHRvbi1kaXNhYmxlZDogJGJ1dHRvbi1kaXNhYmxlZCxcXG4pO1xcblxcbiRidXR0b24tc2VwYXJhdG9yOiBjb21wb25lbnQtdG9rZW5zLmdldC12YXIoXFxuICAkYnV0dG9uLXNlcGFyYXRvcixcXG4gICdidXR0b24tc2VwYXJhdG9yJ1xcbik7XFxuXFxuJGJ1dHRvbi1wcmltYXJ5OiBjb21wb25lbnQtdG9rZW5zLmdldC12YXIoJGJ1dHRvbi1wcmltYXJ5LCAnYnV0dG9uLXByaW1hcnknKTtcXG5cXG4kYnV0dG9uLXNlY29uZGFyeTogY29tcG9uZW50LXRva2Vucy5nZXQtdmFyKFxcbiAgJGJ1dHRvbi1zZWNvbmRhcnksXFxuICAnYnV0dG9uLXNlY29uZGFyeSdcXG4pO1xcblxcbiRidXR0b24tdGVydGlhcnk6IGNvbXBvbmVudC10b2tlbnMuZ2V0LXZhcigkYnV0dG9uLXRlcnRpYXJ5LCAnYnV0dG9uLXRlcnRpYXJ5Jyk7XFxuXFxuJGJ1dHRvbi1kYW5nZXItcHJpbWFyeTogY29tcG9uZW50LXRva2Vucy5nZXQtdmFyKFxcbiAgJGJ1dHRvbi1kYW5nZXItcHJpbWFyeSxcXG4gICdidXR0b24tZGFuZ2VyLXByaW1hcnknXFxuKTtcXG5cXG4kYnV0dG9uLWRhbmdlci1zZWNvbmRhcnk6IGNvbXBvbmVudC10b2tlbnMuZ2V0LXZhcihcXG4gICRidXR0b24tZGFuZ2VyLXNlY29uZGFyeSxcXG4gICdidXR0b24tZGFuZ2VyLXNlY29uZGFyeSdcXG4pO1xcblxcbiRidXR0b24tZGFuZ2VyLWFjdGl2ZTogY29tcG9uZW50LXRva2Vucy5nZXQtdmFyKFxcbiAgJGJ1dHRvbi1kYW5nZXItYWN0aXZlLFxcbiAgJ2J1dHRvbi1kYW5nZXItYWN0aXZlJ1xcbik7XFxuXFxuJGJ1dHRvbi1wcmltYXJ5LWFjdGl2ZTogY29tcG9uZW50LXRva2Vucy5nZXQtdmFyKFxcbiAgJGJ1dHRvbi1wcmltYXJ5LWFjdGl2ZSxcXG4gICdidXR0b24tcHJpbWFyeS1hY3RpdmUnXFxuKTtcXG5cXG4kYnV0dG9uLXNlY29uZGFyeS1hY3RpdmU6IGNvbXBvbmVudC10b2tlbnMuZ2V0LXZhcihcXG4gICRidXR0b24tc2Vjb25kYXJ5LWFjdGl2ZSxcXG4gICdidXR0b24tc2Vjb25kYXJ5LWFjdGl2ZSdcXG4pO1xcblxcbiRidXR0b24tdGVydGlhcnktYWN0aXZlOiBjb21wb25lbnQtdG9rZW5zLmdldC12YXIoXFxuICAkYnV0dG9uLXRlcnRpYXJ5LWFjdGl2ZSxcXG4gICdidXR0b24tdGVydGlhcnktYWN0aXZlJ1xcbik7XFxuXFxuJGJ1dHRvbi1kYW5nZXItaG92ZXI6IGNvbXBvbmVudC10b2tlbnMuZ2V0LXZhcihcXG4gICRidXR0b24tZGFuZ2VyLWhvdmVyLFxcbiAgJ2J1dHRvbi1kYW5nZXItaG92ZXInXFxuKTtcXG5cXG4kYnV0dG9uLXByaW1hcnktaG92ZXI6IGNvbXBvbmVudC10b2tlbnMuZ2V0LXZhcihcXG4gICRidXR0b24tcHJpbWFyeS1ob3ZlcixcXG4gICdidXR0b24tcHJpbWFyeS1ob3ZlcidcXG4pO1xcblxcbiRidXR0b24tc2Vjb25kYXJ5LWhvdmVyOiBjb21wb25lbnQtdG9rZW5zLmdldC12YXIoXFxuICAkYnV0dG9uLXNlY29uZGFyeS1ob3ZlcixcXG4gICdidXR0b24tc2Vjb25kYXJ5LWhvdmVyJ1xcbik7XFxuXFxuJGJ1dHRvbi10ZXJ0aWFyeS1ob3ZlcjogY29tcG9uZW50LXRva2Vucy5nZXQtdmFyKFxcbiAgJGJ1dHRvbi10ZXJ0aWFyeS1ob3ZlcixcXG4gICdidXR0b24tdGVydGlhcnktaG92ZXInXFxuKTtcXG5cXG4kYnV0dG9uLWRpc2FibGVkOiBjb21wb25lbnQtdG9rZW5zLmdldC12YXIoJGJ1dHRvbi1kaXNhYmxlZCwgJ2J1dHRvbi1kaXNhYmxlZCcpO1xcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ubG9jYWxzID0ge1xuXHRcImlucHV0R3JvdXBcIjogXCJfM2doTDlWdkVNRUJHdHh1NHBNd2xVUT09XCIsXG5cdFwiY2RzLS1mb2N1c2VkXCI6IFwid2QwMlBNSXV1MHZkSzFuVTAxTTB2QT09XCIsXG5cdFwiaW5wdXRXcmFwcGVyXCI6IFwiXzhkRDhUYjlKSXZ0WGlLLUgtbTU4K1E9PVwiLFxuXHRcImlucHV0U2VnbWVudFwiOiBcInU5eHBRTHd2ODg3OWFTcnR3Z0Jqd0E9PVwiLFxuXHRcImRhdGVJbnB1dFdyYXBwZXJcIjogXCJtaXlHQmtzRER3NklBZ0RxOG9FaU13PT1cIixcblx0XCJjdXJzb3ItYmxpbmtcIjogXCJHdllDVzRIYSt4R1ZYUUNjWTFxdHdBPT1cIixcblx0XCJjdXJzb3ItYmxpbmstcnRsXCI6IFwiYzBSTUgxVHVZVDhkMWpxSlQrNlhGQT09XCIsXG5cdFwiaW5wdXRXcmFwcGVyTWRcIjogXCJHVmFHMzhzMGVJYnV0dWFiZjQrdUJRPT1cIixcblx0XCJpbnB1dFdyYXBwZXJTbVwiOiBcIl8wMWR0QmdxV2l3Wms2U29CakFMU2pRPT1cIixcblx0XCJpbnB1dFdyYXBwZXJMZ1wiOiBcIl8waElaOUQxLS1DZVU0WlN2ZVNUUVFnPT1cIixcblx0XCJpbnB1dHNXcmFwcGVyXCI6IFwiXzdtOUUyamwyMFA0aTdwN01wMS1iaUE9PVwiLFxuXHRcImlucHV0c1dyYXBwZXJTbVwiOiBcIm14OWpQKzBKTWRuQVhkWlRqUkNKaHc9PVwiLFxuXHRcImlucHV0c1dyYXBwZXJNZFwiOiBcIl82UmRHMHB5Y0R0SkoyS1R6SFY0aUl3PT1cIixcblx0XCJpbnB1dHNXcmFwcGVyTGdcIjogXCJJUG5KZGs4WHR6ZzF5ZkZDVW9CYzlBPT1cIixcblx0XCJzdGFydElucHV0XCI6IFwiTnlhYmZlTFVaelVQWE9JZFdsZTVidz09XCIsXG5cdFwiZW5kSW5wdXRcIjogXCJQQUk0RlZHMmhqMzV4RGh6SUYtamFRPT1cIixcblx0XCJzZXBhcmF0b3JcIjogXCJTNy1xQ0VUamtubitBY0E3YzB4QzNnPT1cIixcblx0XCJpbnZhbGlkVGV4dFwiOiBcIkhyOU5KeENBNG9TTlZUQndzSG1BQ1E9PVwiLFxuXHRcInBvcG92ZXJcIjogXCJmSkVRY0l0TnJ2Mm41NVVhRC1OZmd3PT1cIixcblx0XCJleHBhbmQtaW5cIjogXCJfMTNVSW1MeHdVckxkTDV6VVRxeUFSZz09XCIsXG5cdFwiZGlhbG9nXCI6IFwiZ2o5bkV2ckI5UmUtV1gtSGt6eVFFUT09XCIsXG5cdFwiaGVhZGVyXCI6IFwicXZ6a01UU3Z6UEZMNDJReDFScDdnUT09XCIsXG5cdFwiZmxhdEJ1dHRvblwiOiBcIlFFWjVkSE1NSEt4elk4T1lOSUNtMHc9PVwiLFxuXHRcImZsYXRCdXR0b25NZFwiOiBcIm9oTGpGK1RJb1U2STAxRWQrVWZXeGc9PVwiLFxuXHRcImZsYXRCdXR0b25TbVwiOiBcInNEM2ZtNHJPSnZ0cHVuSjN3b2NZdEE9PVwiLFxuXHRcImZsYXRCdXR0b25MZ1wiOiBcIl8wZnM3bWdkVmptdTBFbFFMUFpnYytRPT1cIixcblx0XCJtb250aFllYXJcIjogXCJDeVhNQUlDbUtHNkpJWWs5Vjd5TTlBPT1cIixcblx0XCJjYWxlbmRhckdyaWRcIjogXCJ1b0VqSklPUytDQnFrY284alJVdDZRPT1cIixcblx0XCJ0b2RheVwiOiBcIndjU1REdUgrUGpQOWt4SytwajNDVXc9PVwiXG59O1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNrSTtBQUM3QjtBQUNyRyw4QkFBOEIsdUVBQTJCLENBQUMsNEZBQXFDO0FBQy9GO0FBQ0EsOEhBQThILHdCQUF3Qix3QkFBd0Isd0JBQXdCLDhCQUE4QixvQ0FBb0MseUdBQXlHLGdIQUFnSCxHQUFHLHFHQUFxRyx3QkFBd0IsdUNBQXVDLHlEQUF5RCxtQ0FBbUMsa0JBQWtCLHVCQUF1QixHQUFHLDRHQUE0RyxpREFBaUQseUJBQXlCLEdBQUcsd0NBQXdDLDhHQUE4Ryw0QkFBNEIsS0FBSyxHQUFHLGdEQUFnRCx5REFBeUQseUJBQXlCLEdBQUcsd0NBQXdDLGtEQUFrRCw0QkFBNEIsS0FBSyxHQUFHLGdEQUFnRCw2Q0FBNkMsR0FBRyxpREFBaUQsaURBQWlELDREQUE0RCx3QkFBd0IsR0FBRyxpSUFBaUkseUNBQXlDLEdBQUcsMklBQTJJLG1CQUFtQixzREFBc0QsR0FBRyxtS0FBbUssNERBQTRELEdBQUcscUtBQXFLLG1FQUFtRSxHQUFHLGdZQUFnWSxtRUFBbUUsR0FBRyx5SkFBeUosNERBQTRELEdBQUcsNklBQTZJLDREQUE0RCxHQUFHLCtDQUErQyxjQUFjLDBDQUEwQyxLQUFLLFNBQVMsMkNBQTJDLEtBQUssR0FBRyw2Q0FBNkMsY0FBYyx5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QUssVUFBVSxhQUFhLE9BQU8sS0FBSyxZQUFZLE9BQU8sS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLE1BQU0sS0FBSyxZQUFZLE9BQU8sS0FBSyxZQUFZLFFBQVEsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxLQUFLLFdBQVcsWUFBWSxhQUFhLFlBQVksS0FBSyxNQUFNLFlBQVksT0FBTyxNQUFNLFlBQVksT0FBTyxNQUFNLFlBQVksT0FBTyxNQUFNLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxPQUFPLE1BQU0sWUFBWSxPQUFPLE1BQU0sWUFBWSxPQUFPLE1BQU0sWUFBWSxPQUFPLE1BQU0sV0FBVyxVQUFVLE9BQU8sTUFBTSxXQUFXLE9BQU8sTUFBTSxXQUFXLE9BQU8sTUFBTSxVQUFVLFdBQVcsV0FBVyxPQUFPLE1BQU0sWUFBWSxRQUFRLE1BQU0sV0FBVyxZQUFZLFlBQVksV0FBVyxXQUFXLE9BQU8sTUFBTSxLQUFLLFVBQVUsV0FBVyxNQUFNLE1BQU0sVUFBVSxXQUFXLE1BQU0sS0FBSyxNQUFNLFdBQVcsT0FBTyxRQUFRLFdBQVcsT0FBTyxNQUFNLFdBQVcsTUFBTSxNQUFNLEtBQUssVUFBVSxNQUFNLE1BQU0sTUFBTSxZQUFZLGFBQWEsWUFBWSxXQUFXLE9BQU8sTUFBTSxZQUFZLGFBQWEsV0FBVyxXQUFXLFdBQVcsV0FBVyxPQUFPLE1BQU0sWUFBWSxVQUFVLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxNQUFNLFFBQVEsV0FBVyxNQUFNLE1BQU0sV0FBVyxXQUFXLEtBQUssTUFBTSxZQUFZLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxVQUFVLFVBQVUsV0FBVyxPQUFPLE1BQU0sV0FBVyxPQUFPLE1BQU0sV0FBVyxZQUFZLE9BQU8sTUFBTSxXQUFXLFlBQVksT0FBTyxNQUFNLFdBQVcsWUFBWSxPQUFPLE1BQU0sWUFBWSxVQUFVLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxhQUFhLFdBQVcsV0FBVyxXQUFXLE9BQU8sUUFBUSxXQUFXLE1BQU0sS0FBSyxZQUFZLGFBQWEsWUFBWSxLQUFLLEtBQUssWUFBWSxhQUFhLE1BQU0sS0FBSyxVQUFVLEtBQUssS0FBSyxZQUFZLFVBQVUsVUFBVSxVQUFVLFdBQVcsVUFBVSxXQUFXLGFBQWEsV0FBVyxXQUFXLFdBQVcsT0FBTyxRQUFRLFdBQVcsTUFBTSxLQUFLLFdBQVcsWUFBWSxhQUFhLFlBQVksS0FBSyxLQUFLLFVBQVUsV0FBVyxLQUFLLEtBQUssWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sS0FBSyxLQUFLLFlBQVksV0FBVyxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sS0FBSyxLQUFLLFlBQVksYUFBYSxZQUFZLEtBQUssS0FBSyxZQUFZLGFBQWEsT0FBTyxLQUFLLFVBQVUsS0FBSyxLQUFLLFlBQVksVUFBVSxVQUFVLFVBQVUsV0FBVyxVQUFVLFdBQVcsTUFBTSxRQUFRLFdBQVcsTUFBTSxNQUFNLFVBQVUsV0FBVyxNQUFNLE1BQU0sVUFBVSxNQUFNLEtBQUssWUFBWSxVQUFVLFVBQVUsVUFBVSxXQUFXLFVBQVUsV0FBVyxNQUFNLFFBQVEsV0FBVyxNQUFNLE1BQU0sV0FBVyxXQUFXLFlBQVksYUFBYSxXQUFXLFVBQVUsVUFBVSxZQUFZLGFBQWEsWUFBWSxVQUFVLE1BQU0sTUFBTSxVQUFVLFdBQVcsV0FBVyxVQUFVLFdBQVcsTUFBTSxNQUFNLFdBQVcsV0FBVyxPQUFPLE1BQU0sWUFBWSxhQUFhLE9BQU8sTUFBTSxVQUFVLFVBQVUsTUFBTSxNQUFNLFdBQVcsV0FBVyxPQUFPLEtBQUssVUFBVSxNQUFNLE1BQU0sV0FBVyxVQUFVLE1BQU0sS0FBSyxZQUFZLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLE1BQU0sS0FBSyxZQUFZLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLE1BQU0sTUFBTSxVQUFVLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxZQUFZLFlBQVksT0FBTyxLQUFLLFlBQVksV0FBVyxPQUFPLEtBQUssV0FBVyxZQUFZLGFBQWEsV0FBVyxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsWUFBWSxXQUFXLFlBQVksTUFBTSxLQUFLLFdBQVcsVUFBVSxZQUFZLFdBQVcsWUFBWSxZQUFZLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxZQUFZLE9BQU8sS0FBSyxXQUFXLE1BQU0sS0FBSyxXQUFXLFlBQVksTUFBTSxLQUFLLFdBQVcsS0FBSyxLQUFLLFlBQVksTUFBTSxLQUFLLFVBQVUsVUFBVSxVQUFVLEtBQUssS0FBSyxXQUFXLFdBQVcsVUFBVSwrQ0FBK0Msb0JBQW9CLGtCQUFrQixrQkFBa0Isa0JBQWtCLGtCQUFrQixvQkFBb0Isb0JBQW9CLDBCQUEwQiwwQkFBMEIsMEJBQTBCLDJCQUEyQiw0QkFBNEIsMEJBQTBCLDRCQUE0QiwyQkFBMkIseUJBQXlCLHVCQUF1QiwrQkFBK0IsK0JBQStCLG9DQUFvQyxtQkFBbUIsMkJBQTJCLHFCQUFxQixtQkFBbUIsMEJBQTBCLCtCQUErQiw2QkFBNkIsNkJBQTZCLDZCQUE2Qiw2QkFBNkIsOEdBQThHLDhCQUE4QixnQ0FBZ0MsTUFBTSxVQUFVLFVBQVUsTUFBTSxVQUFVLGtCQUFrQixHQUFHLGdDQUFnQyxNQUFNLFVBQVUsVUFBVSxNQUFNLFVBQVUsa0JBQWtCLEdBQUcsZ0NBQWdDLE1BQU0sVUFBVSxVQUFVLE1BQU0sVUFBVSxrQkFBa0IsR0FBRyxXQUFXLHdCQUF3Qix3QkFBd0Isd0JBQXdCLDJCQUEyQixvQkFBb0IsaUNBQWlDLG9CQUFvQix5R0FBeUcsZ0hBQWdILEdBQUcsK0JBQStCLCtCQUErQixnQ0FBZ0MsaUNBQWlDLHdDQUF3Qyx3Q0FBd0Msd0NBQXdDLDRDQUE0Qyw2RkFBNkYscUJBQXFCLHFCQUFxQix1Q0FBdUMsd0JBQXdCLG1DQUFtQyxzQkFBc0IsMkVBQTJFLDZGQUE2RixrREFBa0QsdURBQXVELDhEQUE4RCxzQkFBc0IsMENBQTBDLHdCQUF3Qix1Q0FBdUMseURBQXlELG1DQUFtQyxrQkFBa0IsdUJBQXVCLHlDQUF5Qyw4Q0FBOEMsS0FBSyx1QkFBdUIsOENBQThDLFdBQVcsb0NBQW9DLE9BQU8sS0FBSyx3QkFBd0IsbURBQW1ELGtDQUFrQywwQkFBMEIsS0FBSyxHQUFHLHdGQUF3Rix5Q0FBeUMsZUFBZSxxQkFBcUIsb0RBQW9ELEtBQUssMkJBQTJCLGtDQUFrQyxLQUFLLDhCQUE4QixtREFBbUQsS0FBSyxtREFBbUQsdURBQXVELEtBQUssR0FBRyxtTUFBbU0sK0NBQStDLGtDQUFrQyxLQUFLLDRDQUE0QyxrQ0FBa0MsS0FBSyxHQUFHLCtZQUErWSxpQkFBaUIsMENBQTBDLEtBQUssU0FBUywyQ0FBMkMsS0FBSyxHQUFHLGlDQUFpQyxpQkFBaUIseUNBQXlDLEtBQUssU0FBUywwQ0FBMEMsS0FBSyxHQUFHLGdEQUFnRCx1QkFBdUIsb0NBQW9DLGtDQUFrQyxxQkFBcUIsdUJBQXVCLGtDQUFrQyxLQUFLLDBDQUEwQyxHQUFHLHFCQUFxQixtQ0FBbUMsR0FBRyxxQkFBcUIsbUNBQW1DLEdBQUcscUJBQXFCLG1DQUFtQyxHQUFHLGlEQUFpRCxrQkFBa0IscUJBQXFCLHFCQUFxQiw4QkFBOEIsdUJBQXVCLEdBQUcsc0JBQXNCLG1DQUFtQyxHQUFHLHNCQUFzQixtQ0FBbUMsR0FBRyxzQkFBc0IsbUNBQW1DLEdBQUcsdUJBQXVCLDBCQUEwQixxQkFBcUIsZ0JBQWdCLEdBQUcsaUJBQWlCLDRCQUE0QixHQUFHLGVBQWUseUJBQXlCLEdBQUcsZ0JBQWdCLGtCQUFrQix3QkFBd0IsMEJBQTBCLEdBQUcsOEVBQThFLGdDQUFnQyxHQUFHLGtCQUFrQix3Q0FBd0Msa0NBQWtDLGdDQUFnQyxtQ0FBbUMscUJBQXFCLEdBQUcseURBQXlELFVBQVUsaUJBQWlCLDZCQUE2QixLQUFLLFVBQVUsaUJBQWlCLDBCQUEwQixLQUFLLEdBQUcsY0FBYyxpQ0FBaUMsR0FBRywrTUFBK00sb0NBQW9DLEdBQUcsNkJBQTZCLHNGQUFzRiwwREFBMEQsc0JBQXNCLEtBQUssR0FBRyxhQUFhLG1DQUFtQyxzQ0FBc0MscUJBQXFCLHlGQUF5RixHQUFHLDRFQUE0RSxtQ0FBbUMsc0NBQXNDLGtCQUFrQix3QkFBd0Isc0JBQXNCLG1DQUFtQyxHQUFHLGlCQUFpQixtQ0FBbUMsU0FBUyxnQ0FBZ0MsMkJBQTJCLEtBQUssOEJBQThCLDJDQUEyQyxLQUFLLHdCQUF3QixpQ0FBaUMsS0FBSyxlQUFlLHFCQUFxQixtQkFBbUIseUJBQXlCLEtBQUssR0FBRyx3Q0FBd0Msd0JBQXdCLHNCQUFzQixHQUFHLG1CQUFtQiwrQkFBK0IsOEJBQThCLEdBQUcsbUJBQW1CLCtCQUErQiw4QkFBOEIsR0FBRyxtQkFBbUIsK0JBQStCLDhCQUE4QixHQUFHLGdCQUFnQixtQ0FBbUMsbURBQW1ELFNBQVMscUNBQXFDLDJDQUEyQyx5QkFBeUIsS0FBSyxnQkFBZ0Isc0NBQXNDLHVDQUF1QyxLQUFLLDZDQUE2QyxzQkFBc0Isd0NBQXdDLHVDQUF1Qyx1REFBdUQsYUFBYSw2Q0FBNkMsMENBQTBDLHNDQUFzQywyQkFBMkIsU0FBUyw2RUFBNkUsb0JBQW9CLG1DQUFtQyxTQUFTLG1CQUFtQixpREFBaUQsU0FBUywyQkFBMkIsa0RBQWtELFNBQVMsMkRBQTJELDRDQUE0QyxzQ0FBc0MsK0JBQStCLFNBQVMsa0RBQWtELHVEQUF1RCx5REFBeUQsU0FBUyxpREFBaUQscUJBQXFCLFNBQVMsT0FBTyw2QkFBNkIsdUNBQXVDLGFBQWEsMEJBQTBCLDZCQUE2QixTQUFTLE9BQU8sd0JBQXdCLG1CQUFtQixPQUFPLGtCQUFrQix1Q0FBdUMsYUFBYSw2QkFBNkIsMkJBQTJCLG1EQUFtRCxpREFBaUQsdUJBQXVCLDBCQUEwQiwwQkFBMEIsMENBQTBDLGlEQUFpRCwyQkFBMkIscUJBQXFCLFNBQVMsb0JBQW9CLHlCQUF5QixrRUFBa0Usb0VBQW9FLHNCQUFzQixpQ0FBaUMsU0FBUywwQkFBMEIseURBQXlELDJEQUEyRCxTQUFTLDJCQUEyQiw0REFBNEQsOERBQThELFNBQVMsK0JBQStCLGlCQUFpQixrQkFBa0IsU0FBUywrQkFBK0Isa0NBQWtDLGtCQUFrQixTQUFTLE9BQU8sS0FBSyxHQUFHLHFEQUFxRCxpQkFBaUIsd0NBQXdDLHVCQUF1QixzQkFBc0IsS0FBSywyQkFBMkIsa0RBQWtELHNCQUFzQix5QkFBeUIsNkJBQTZCLEtBQUssMkJBQTJCLGtEQUFrRCxzQkFBc0IseUJBQXlCLDZCQUE2QixpQkFBaUIsdUJBQXVCLE9BQU8sNkRBQTZELDZDQUE2QyxPQUFPLGdDQUFnQywyQ0FBMkMsOEJBQThCLE9BQU8sMEJBQTBCLG9DQUFvQyx3QkFBd0IsT0FBTyxLQUFLLEdBQUcsaUNBQWlDLHVCQUF1Qiw0QkFBNEIscUJBQXFCLDhEQUE4RCxpRUFBaUUsc0VBQXNFLGtCQUFrQix3QkFBd0IsNEJBQTRCLG1DQUFtQyxvQkFBb0Isb0NBQW9DLGdCQUFnQix5QkFBeUIscUJBQXFCLHFDQUFxQyxrQkFBa0Isc0NBQXNDLGlDQUFpQyw4QkFBOEIsMENBQTBDLGtDQUFrQyxLQUFLLCtCQUErQiw2Q0FBNkMsS0FBSyxxQ0FBcUMscUVBQXFFLEtBQUssR0FBRyw0Q0FBNEMsbUJBQW1CLDBCQUEwQix3Q0FBd0MsS0FBSyxpQkFBaUIsdUJBQXVCLEtBQUssa0JBQWtCLDZDQUE2QyxzQ0FBc0MsNENBQTRDLFNBQVMsT0FBTyxrQkFBa0IsNkJBQTZCLGlCQUFpQixzQkFBc0IsbUJBQW1CLFNBQVMsK0JBQStCLGtDQUFrQyxzQkFBc0IsbUJBQW1CLFNBQVMsT0FBTyxLQUFLLEdBQUcsdU1BQXVNLHdGQUF3RixRQUFRLDRJQUE0SSwrREFBK0QsNkJBQTZCLHNDQUFzQyw4Q0FBOEMsOEJBQThCLE9BQU8sS0FBSyxnQ0FBZ0MseUNBQXlDLHFDQUFxQyxLQUFLLGdDQUFnQyxzQ0FBc0MsMkJBQTJCLDhDQUE4Qyw4QkFBOEIsT0FBTyxLQUFLLHVDQUF1Qyw2QkFBNkIscUNBQXFDLDhDQUE4Qyw2QkFBNkIsT0FBTyxLQUFLLGdDQUFnQyw4Q0FBOEMsMkJBQTJCLDhDQUE4Qyw4QkFBOEIsT0FBTyxLQUFLLDhCQUE4QixxQ0FBcUMsMkJBQTJCLEtBQUssR0FBRyxnUUFBZ1EsbUJBQW1CLGtCQUFrQixzRkFBc0YsNkNBQTZDLHNCQUFzQixlQUFlLEdBQUcsT0FBTyxFQUFFLE1BQU0sT0FBTyxzQkFBc0IsZUFBZSxHQUFHLE9BQU8sSUFBSSxrQkFBa0IsRUFBRSxLQUFLLEdBQUcscUdBQXFHLDBIQUEwSCxnSUFBZ0ksa0pBQWtKLHVIQUF1SCx1SEFBdUgsNkhBQTZILCtJQUErSSwrRkFBK0Ysb0hBQW9ILGdJQUFnSSxpSEFBaUgsMEhBQTBILDRJQUE0SSwrRkFBK0Ysb0hBQW9ILGdJQUFnSSxpSEFBaUgsMEhBQTBILDRJQUE0SSwrRkFBK0Ysb0hBQW9ILGdJQUFnSSxpSEFBaUgsMEhBQTBILDRJQUE0SSx5SUFBeUksNElBQTRJLG9IQUFvSCx5SUFBeUksc0lBQXNJLG9IQUFvSCx5SUFBeUksc0lBQXNJLG9IQUFvSCx5SUFBeUksc0lBQXNJLCtGQUErRixpSEFBaUgsK0ZBQStGLGlIQUFpSCwrRkFBK0YsaUhBQWlILHdHQUF3Ryx1SEFBdUgsdUhBQXVILGtKQUFrSix1SEFBdUgsa0pBQWtKLHVIQUF1SCxrSkFBa0osdUhBQXVILHVIQUF1SCx1SEFBdUgsaUhBQWlILGlIQUFpSCxpSEFBaUgsaUhBQWlILDZIQUE2SCxvSEFBb0gsMkdBQTJHLGlIQUFpSCx1SEFBdUgsd0dBQXdHLHFHQUFxRywyR0FBMkcsOEdBQThHLHlJQUF5SSw4R0FBOEcsMkdBQTJHLDZIQUE2SCxpSEFBaUgsbUlBQW1JLDJHQUEyRywyR0FBMkcsZ0lBQWdJLDZIQUE2SCwyR0FBMkcsaUhBQWlILDJHQUEyRyw4R0FBOEcseUlBQXlJLDhHQUE4Ryx1SEFBdUgsOEdBQThHLG9IQUFvSCxvSEFBb0gsMkdBQTJHLHNJQUFzSSw0SUFBNEksNElBQTRJLG1JQUFtSSxzSUFBc0ksc0lBQXNJLGtKQUFrSixzSUFBc0kscUpBQXFKLHFKQUFxSixvSEFBb0gsdUhBQXVILDhHQUE4Ryx3R0FBd0csK0lBQStJLGdJQUFnSSwwSEFBMEgsdUhBQXVILG9IQUFvSCw4R0FBOEcsaUhBQWlILHlJQUF5SSx1S0FBdUsscUdBQXFHLDRJQUE0SSw0SUFBNEksbUxBQW1MLDJNQUEyTSx5SUFBeUksK0lBQStJLHlJQUF5SSx1SEFBdUgsMEhBQTBILDZIQUE2SCxvSEFBb0gsMEhBQTBILHVIQUF1SCxzSUFBc0kseUlBQXlJLHdHQUF3RywwSEFBMEgseUlBQXlJLDZIQUE2SCxtSUFBbUksa0pBQWtKLGtHQUFrRyw0RkFBNEYscUdBQXFHLHlGQUF5RixzRkFBc0Ysd0dBQXdHLDhHQUE4RyxnSUFBZ0ksdUhBQXVILG1OQUFtTixrRUFBa0Usb0NBQW9DLG1CQUFtQiwySEFBMkgsd0NBQXdDLHNDQUFzQyxtQ0FBbUMsc0NBQXNDLDREQUE0RCx5REFBeUQsaUVBQWlFLHVEQUF1RCw2REFBNkQseUVBQXlFLHlEQUF5RCxxRUFBcUUsdUVBQXVFLDZDQUE2Qyx1REFBdUQsNkRBQTZELDZFQUE2RSwyREFBMkQsdURBQXVELGdWQUFnVixtR0FBbUcsa0dBQWtHLG1HQUFtRyxnR0FBZ0csa0dBQWtHLGdHQUFnRyxrR0FBa0csZ0dBQWdHLGdHQUFnRyxnR0FBZ0csZ0dBQWdHLGlHQUFpRyw2YkFBNmIsdU1BQXVNLDhFQUE4RSwyQ0FBMkMsd0NBQXdDLEdBQUcsMkJBQTJCLHlDQUF5QyxHQUFHLHlSQUF5UiwyQkFBMkIsZUFBZSxjQUFjLGNBQWMseUJBQXlCLG9CQUFvQiw2QkFBNkIsb0NBQW9DLDBCQUEwQixLQUFLLEdBQUcsMFBBQTBQLG1CQUFtQixnREFBZ0QsOENBQThDLHFCQUFxQixxQkFBcUIsZUFBZSx1UEFBdVAsdVBBQXVQLG9PQUFvTyxvT0FBb08sb09BQW9PLG9PQUFvTyx1TUFBdU0sMlBBQTJQLHlPQUF5TywwR0FBMEcsd09BQXdPLGlHQUFpRyxrT0FBa08sMEdBQTBHLCtOQUErTixpR0FBaUcsb1JBQW9SLG9SQUFvUix1T0FBdU8sa1BBQWtQLHFIQUFxSCw4TkFBOE4sMk9BQTJPLHFIQUFxSCx3T0FBd08sNkdBQTZHLDRPQUE0Tyw2R0FBNkcseU9BQXlPLDZHQUE2RywwUkFBMFIsNkdBQTZHLHdPQUF3Tyw2R0FBNkcsNkdBQTZHLDZHQUE2RywwYUFBMGEsbUhBQW1ILG9nQkFBb2dCLG1IQUFtSCxrbkJBQWtuQixtSEFBbUgsNmpCQUE2akIsbUhBQW1ILHFhQUFxYSx1SEFBdUgscW1CQUFxbUIsNEdBQTRHLG1tQkFBbW1CLDRHQUE0Ryx1aEJBQXVoQix3R0FBd0csMGhCQUEwaEIsd0dBQXdHLDJxQkFBMnFCLHdHQUF3RywycUJBQTJxQix3R0FBd0csZ3NFQUFnc0UsZ0JBQWdCLEtBQUssNEVBQTRFLGlDQUFpQyxRQUFRLE1BQU0sU0FBUyxLQUFLLEdBQUcsZ0JBQWdCLFFBQVEseUNBQXlDLFFBQVEsMEZBQTBGLDZDQUE2QyxHQUFHLGluQkFBaW5CLEtBQUssNERBQTRELEtBQUssd0xBQXdMLHVRQUF1USxtTEFBbUwsd09BQXdPLHVDQUF1QyxxQ0FBcUMsb0VBQW9FLE9BQU8sS0FBSyxHQUFHLDBGQUEwRixLQUFLLHlEQUF5RCxRQUFRLDRFQUE0RSxLQUFLLDBOQUEwTiw0S0FBNEssc05BQXNOLDBCQUEwQixtSEFBbUgsK0RBQStELE1BQU0sT0FBTyxzREFBc0QsS0FBSyw4SEFBOEgscURBQXFELG1EQUFtRCw0REFBNEQsS0FBSyx5SEFBeUgseUNBQXlDLGdPQUFnTyxzQ0FBc0Msc1RBQXNULGlFQUFpRSxnRUFBZ0UseUNBQXlDLFFBQVEsT0FBTyw4SEFBOEgsT0FBTyxLQUFLLG9QQUFvUCxpRkFBaUYsa0hBQWtILHNEQUFzRCxrREFBa0QsZ0JBQWdCLFdBQVcsNkNBQTZDLHFCQUFxQixRQUFRLE1BQU0sOEJBQThCLFNBQVMsTUFBTSxPQUFPLDJLQUEySyxLQUFLLEdBQUcsNE5BQTROLHVDQUF1QyxRQUFRLFVBQVUsa0JBQWtCLHdCQUF3QixHQUFHLE1BQU0sR0FBRyxVQUFVLFdBQVcsT0FBTyxRQUFRLEtBQUssR0FBRyxpWEFBaVgsUUFBUSxpRUFBaUUsU0FBUyw4RUFBOEUsS0FBSyx5TkFBeU4seUNBQXlDLHVEQUF1RCxNQUFNLEdBQUcsS0FBSyxzQ0FBc0Msb05BQW9OLGdEQUFnRCxNQUFNLE9BQU8sZ0RBQWdELEtBQUssR0FBRyw2TUFBNk0sc0JBQXNCLHNCQUFzQiwwQ0FBMEMsd0RBQXdELG9nQkFBb2dCLHdmQUF3ZixvZ0JBQW9nQiw4ZkFBOGYsa2lCQUFraUIsOGlCQUE4aUIsNGhCQUE0aEIsa2lCQUFraUIsOGlCQUE4aUIsd2lCQUF3aUIsc2hCQUFzaEIsNGhCQUE0aEIsd2lCQUF3aUIsa2lCQUFraUIsOGZBQThmLGl0QkFBaXRCLGdHQUFnRyxpRkFBaUYsZ0dBQWdHLG9GQUFvRiwrR0FBK0cscUhBQXFILDRHQUE0RywrR0FBK0cscUhBQXFILGtIQUFrSCx5R0FBeUcsNEdBQTRHLGtIQUFrSCwrR0FBK0csb0ZBQW9GLHFCQUFxQjtBQUNwNDFGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBZSx1QkFBdUIsRUFBQyJ9\n//# sourceURL=webpack-internal:///../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../framework/esm-styleguide/dist/datepicker/datepicker.module.scss\n\n}");
|
|
20
20
|
|
|
21
21
|
},
|
|
22
22
|
"../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../framework/esm-styleguide/dist/diagnosis-tags/diagnosis-tags.module.scss"(module, __webpack_exports__, __webpack_require__) {
|
|
@@ -5580,7 +5580,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webp
|
|
|
5580
5580
|
},
|
|
5581
5581
|
"../../framework/esm-config/dist/module-config/module-config.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
5582
5582
|
"use strict";
|
|
5583
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n clearConfigErrors: () => (clearConfigErrors),\n defineConfigSchema: () => (defineConfigSchema),\n defineExtensionConfigSchema: () => (defineExtensionConfigSchema),\n getConfig: () => (getConfig),\n getTranslationOverrides: () => (getTranslationOverrides),\n processConfig: () => (processConfig),\n provide: () => (provide),\n registerModuleLoad: () => (registerModuleLoad),\n registerModuleWithConfigSystem: () => (registerModuleWithConfigSystem),\n registerTranslationNamespace: () => (registerTranslationNamespace),\n resetConfigSystem: () => (resetConfigSystem)\n});\n/* import */ var lodash_es__rspack_import_4 = __webpack_require__(\"../../../node_modules/lodash-es/mergeWith.js\");\n/* import */ var lodash_es__rspack_import_5 = __webpack_require__(\"../../../node_modules/lodash-es/isEqual.js\");\n/* import */ var lodash_es__rspack_import_6 = __webpack_require__(\"../../../node_modules/lodash-es/omit.js\");\n/* import */ var lodash_es__rspack_import_7 = __webpack_require__(\"../../../node_modules/lodash-es/cloneDeep.js\");\n/* import */ var _types_js__rspack_import_0 = __webpack_require__(\"../../framework/esm-config/dist/types.js\");\n/* import */ var _validators_type_validators_js__rspack_import_1 = __webpack_require__(\"../../framework/esm-config/dist/validators/type-validators.js\");\n/* import */ var _validators_validator_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-config/dist/validators/validator.js\");\n/* import */ var _state_js__rspack_import_3 = __webpack_require__(\"../../framework/esm-config/dist/module-config/state.js\");\n/** @module @category Config */ \n\n\n\n\n/**\n * Deep merge two objects, with right-side values taking precedence.\n * Arrays are replaced entirely (not merged by index), matching the\n * behavior of ramda's mergeDeepRight.\n */ function mergeDeepReplace(left, right) {\n return (0,lodash_es__rspack_import_4[\"default\"])({}, left, right, (_objValue, srcValue)=>{\n if (Array.isArray(srcValue)) {\n return srcValue;\n }\n });\n}\n/**\n * Store setup\n *\n *\n * Set up stores and subscriptions so that inputs get processed appropriately.\n *\n * There are *input* stores and *output* stores. The *input* stores\n * are configInternalStore, temporaryConfigStore, and configExtensionStore. The\n * output stores are set in the `compute...` functions. They are the module\n * config stores, the extension slot config stores (by module), the extension\n * config stores, and the implementer tools config store.\n *\n * This code sets up the subscriptions so that when an input store changes,\n * the correct set of output stores are updated.\n *\n * All `compute...` functions except `computeExtensionConfigs` are pure\n * (or are supposed to be), other than the fact that they all `setState`\n * store values at the end. `computeExtensionConfigs` calls `getGlobalStore`,\n * which creates stores.\n */ // Store unsubscribe functions to allow cleanup (e.g., in tests or hot module reloading)\nconst configSubscriptions = [];\n/**\n * Recomputes all configuration derived stores based on current state of input stores.\n * Called whenever any input store (configInternalStore, temporaryConfigStore, configExtensionStore) changes.\n */ function recomputeAllConfigs() {\n const configState = _state_js__rspack_import_3.configInternalStore.getState();\n const tempConfigState = _state_js__rspack_import_3.temporaryConfigStore.getState();\n const extensionState = _state_js__rspack_import_3.configExtensionStore.getState();\n computeModuleConfig(configState, tempConfigState);\n computeExtensionSlotConfigs(configState, tempConfigState);\n computeExtensionConfigs(configState, extensionState, tempConfigState);\n // Last, because a failure here must not skip the outputs above. Only kept current while the\n // implementer tools are watching it; otherwise derived on read.\n (0,_state_js__rspack_import_3.invalidateImplementerToolsConfig)();\n}\nfunction setupConfigSubscriptions() {\n // Registered here rather than at module load so that `resetConfigSystem` restores it.\n (0,_state_js__rspack_import_3.setImplementerToolsConfigRecomputer)(()=>computeImplementerToolsConfig(_state_js__rspack_import_3.configInternalStore.getState(), _state_js__rspack_import_3.temporaryConfigStore.getState()));\n // Initial computation\n recomputeAllConfigs();\n // Subscribe to all input stores with a single handler\n // This ensures we only recompute once even if multiple stores change simultaneously\n configSubscriptions.push(_state_js__rspack_import_3.configInternalStore.subscribe(recomputeAllConfigsSafely), _state_js__rspack_import_3.temporaryConfigStore.subscribe(recomputeAllConfigsSafely), _state_js__rspack_import_3.configExtensionStore.subscribe(recomputeAllConfigsSafely));\n}\n/** Ensure that we do not throw during a store subscription */ function recomputeAllConfigsSafely() {\n (0,_state_js__rspack_import_3.clearConfigDerivationError)();\n try {\n recomputeAllConfigs();\n } catch (e) {\n (0,_state_js__rspack_import_3.recordConfigDerivationError)(e);\n console.error('Failed to recompute the configuration', e);\n }\n}\n// Set up subscriptions at module load time\nsetupConfigSubscriptions();\nconst moduleConfigCache = new Map();\nfunction computeModuleConfig(state, tempState) {\n for (let moduleName of Object.keys(state.schemas)){\n // At this point the schema could be either just the implicit schema or the actually\n // defined schema. We run with just the implicit schema because we want to populate\n // the config store with the translation overrides as soon as possible. In fact, the\n // translation system will throw for Suspense until the translation overrides are\n // available, which as of this writing blocks the schema definition from occurring\n // for modules loaded based on their extensions.\n const moduleStore = (0,_state_js__rspack_import_3.getConfigStore)(moduleName);\n const schema = state.schemas[moduleName];\n const moduleLoaded = Boolean(state.moduleLoaded[moduleName]);\n const cached = moduleConfigCache.get(moduleName);\n let newState;\n if (cached && cached.schema === schema && cached.moduleLoaded === moduleLoaded && cached.providedConfigs === state.providedConfigs && cached.temporaryConfig === tempState.config) {\n newState = cached.state;\n } else {\n const config = moduleLoaded ? getConfigForModule(moduleName, state, tempState) : getConfigForModuleImplicitSchema(moduleName, state, tempState);\n newState = {\n translationOverridesLoaded: true,\n loaded: moduleLoaded,\n config\n };\n moduleConfigCache.set(moduleName, {\n schema,\n moduleLoaded,\n providedConfigs: state.providedConfigs,\n temporaryConfig: tempState.config,\n state: newState\n });\n }\n // Writing unconditionally would hand every `useConfig` consumer in the application a new\n // object — and a re-render — whenever any module or extension anywhere is loaded.\n const oldState = moduleStore.getState();\n if (oldState.loaded !== newState.loaded || oldState.translationOverridesLoaded !== newState.translationOverridesLoaded || !(0,lodash_es__rspack_import_5[\"default\"])(oldState.config, newState.config)) {\n moduleStore.setState(newState);\n }\n }\n}\nfunction computeExtensionSlotConfigs(state, tempState) {\n const slotConfigs = getExtensionSlotConfigs(state, tempState);\n const slotStore = (0,_state_js__rspack_import_3.getExtensionSlotsConfigStore)();\n const oldSlots = slotStore.getState().slots;\n const slots = {};\n let changed = false;\n for (const [slotName, config] of Object.entries(slotConfigs)){\n const previous = oldSlots[slotName];\n // Entries keep their identity when the configuration behind them hasn't changed, so that\n // changing one slot's configuration doesn't invalidate every other configured slot.\n if (previous?.loaded && (0,lodash_es__rspack_import_5[\"default\"])(previous.config, config)) {\n slots[slotName] = previous;\n } else {\n slots[slotName] = {\n loaded: true,\n config\n };\n changed = true;\n }\n }\n // Built from scratch rather than merged over the previous state: a slot whose configuration\n // has been removed — clearing the temporary config, say — has to lose its entry, or the old\n // configuration stays in force until the page is reloaded.\n if (changed || Object.keys(oldSlots).length !== Object.keys(slots).length) {\n slotStore.setState({\n slots\n });\n }\n}\nfunction computeImplementerToolsConfig(state, tempConfigState) {\n const oldState = _state_js__rspack_import_3.implementerToolsConfigStore.getState();\n const config = getImplementerToolsConfig(state, tempConfigState);\n const newState = {\n config\n };\n // Use deep equality on the actual config content, not the wrapper object\n if (!(0,lodash_es__rspack_import_5[\"default\"])(oldState.config, newState.config)) {\n _state_js__rspack_import_3.implementerToolsConfigStore.setState(newState);\n }\n}\nfunction computeExtensionConfigs(configState, extensionState, tempConfigState) {\n const extensionsConfigStore = (0,_state_js__rspack_import_3.getExtensionsConfigStore)();\n const oldConfigs = extensionsConfigStore.getState().configs;\n const configs = {};\n let changed = false;\n let entryCount = 0;\n // We assume that the module schema has already been defined, since the extension\n // it contains is mounted.\n for (let extension of extensionState.mountedExtensions){\n const config = computeExtensionConfig(extension.slotModuleName, extension.extensionModuleName, extension.slotName, extension.extensionId, configState, tempConfigState);\n const previous = oldConfigs[extension.slotName]?.[extension.extensionId];\n // Entries keep their identity when the configuration behind them hasn't changed, so that\n // mounting one extension doesn't hand every other mounted extension a new config object.\n const entry = previous?.loaded && (0,lodash_es__rspack_import_5[\"default\"])(previous.config, config) ? previous : {\n config,\n loaded: true\n };\n if (entry !== previous) {\n changed = true;\n }\n if (!configs[extension.slotName]) {\n configs[extension.slotName] = {};\n }\n configs[extension.slotName][extension.extensionId] = entry;\n entryCount++;\n }\n // Slots keep their identity too when none of their entries changed. Subscribers compare these\n // per-slot objects to work out which slots to re-derive, so handing out a fresh one for every\n // slot on every write would mark every slot with a mounted extension dirty.\n for (const [slotName, slotConfigs] of Object.entries(configs)){\n const previousSlot = oldConfigs[slotName];\n if (previousSlot && Object.keys(previousSlot).length === Object.keys(slotConfigs).length && Object.entries(slotConfigs).every(([extensionId, entry])=>previousSlot[extensionId] === entry)) {\n configs[slotName] = previousSlot;\n }\n }\n if (!changed) {\n // Nothing was added or altered, but an extension may have unmounted, which only shows up as a\n // missing entry.\n changed = Object.keys(oldConfigs).length !== Object.keys(configs).length || Object.values(oldConfigs).reduce((total, slot)=>total + Object.keys(slot).length, 0) !== entryCount;\n }\n if (changed) {\n extensionsConfigStore.setState({\n configs\n });\n }\n}\n/*\n * API\n *\n */ /**\n * This defines a configuration schema for a module. The schema tells the\n * configuration system how the module can be configured. It specifies\n * what makes configuration valid or invalid.\n *\n * See [Configuration System](https://o3-docs.openmrs.org/en-US/docs/configuration-system)\n * for more information about defining a config schema.\n *\n * @param moduleName Name of the module the schema is being defined for. Generally\n * should be the one in which the `defineConfigSchema` call takes place.\n * @param schema The config schema for the module\n */ function defineConfigSchema(moduleName, schema) {\n validateConfigSchema(moduleName, schema);\n const enhancedSchema = mergeDeepReplace(schema, implicitConfigSchema);\n _state_js__rspack_import_3.configInternalStore.setState((state)=>({\n ...state,\n schemas: {\n ...state.schemas,\n [moduleName]: enhancedSchema\n },\n moduleLoaded: {\n ...state.moduleLoaded,\n [moduleName]: true\n }\n }));\n}\n/**\n * This alerts the configuration system that a module exists. This allows config to be\n * processed, while still allowing the extension system to know whether the module has\n * actually had its front bundle executed yet.\n *\n * This should only be used in esm-app-shell.\n *\n * @internal\n * @param moduleName\n */ function registerModuleWithConfigSystem(moduleName) {\n _state_js__rspack_import_3.configInternalStore.setState((state)=>({\n ...state,\n schemas: {\n ...state.schemas,\n [moduleName]: implicitConfigSchema\n }\n }));\n}\n/**\n * This alerts the configuration system that a module has been loaded.\n *\n * This should only be used in esm-app-shell.\n *\n * @internal\n * @param moduleName\n */ function registerModuleLoad(moduleName) {\n _state_js__rspack_import_3.configInternalStore.setState((state)=>({\n ...state,\n moduleLoaded: {\n ...state.moduleLoaded,\n [moduleName]: true\n }\n }));\n}\n/**\n * This allows the config system to support translation overrides for namespaces that\n * do not correspond to modules.\n *\n * This should only be used in esm-app-shell.\n *\n * @internal\n * @param namespace\n */ function registerTranslationNamespace(namespace) {\n _state_js__rspack_import_3.configInternalStore.setState((state)=>({\n ...state,\n schemas: {\n ...state.schemas,\n [namespace]: translationOverridesSchema\n }\n }));\n}\n/**\n * This defines a configuration schema for an extension. When a schema is defined\n * for an extension, that extension will receive the configuration corresponding\n * to that schema, rather than the configuration corresponding to the module\n * in which it is defined.\n *\n * The schema tells the configuration system how the module can be configured.\n * It specifies what makes configuration valid or invalid.\n *\n * See [Configuration System](https://o3-docs.openmrs.org/en-US/docs/configuration-system)\n * for more information about defining a config schema.\n *\n * @param extensionName Name of the extension the schema is being defined for.\n * Should match the `name` of one of the `extensions` entries defined in\n * the app's `routes.json` file.\n * @param schema The config schema for the extension\n */ function defineExtensionConfigSchema(extensionName, schema) {\n validateConfigSchema(extensionName, schema);\n const enhancedSchema = mergeDeepReplace(schema, implicitConfigSchema);\n const state = _state_js__rspack_import_3.configInternalStore.getState();\n if (state.schemas[extensionName]) {\n console.error(`Config schema for extension ${extensionName} already exists. If there are multiple extensions with this same name, one will probably crash.`);\n }\n _state_js__rspack_import_3.configInternalStore.setState((state)=>({\n ...state,\n schemas: {\n ...state.schemas,\n [extensionName]: enhancedSchema\n }\n }));\n}\n/**\n * Provides configuration values programmatically. This is an alternative to\n * providing configuration through the config-file. Configuration provided this\n * way will be merged with configuration from other sources.\n *\n * @param config A configuration object to merge into the existing configuration.\n * @param sourceName An optional name to identify the source of this configuration,\n * used for debugging purposes. Defaults to 'provided'.\n */ function provide(config, sourceName = 'provided') {\n _state_js__rspack_import_3.configInternalStore.setState((state)=>({\n ...state,\n providedConfigs: [\n ...state.providedConfigs,\n {\n source: sourceName,\n config\n }\n ]\n }));\n}\n/**\n * Resolves with `select(state)` as soon as the store's state satisfies `ready`, leaving no\n * subscription behind: nothing subscribes at all when the store is already ready. That matters\n * because `getConfig` runs on every HTTP request, and a subscription that outlives its promise\n * both retains its closure forever and slows down every later write to that store.\n */ function whenStoreReady(store, ready, select) {\n return new Promise((resolve)=>{\n let unsubscribe;\n let resolved = false;\n function update(state) {\n if (!resolved && ready(state)) {\n resolved = true;\n resolve(select(state));\n unsubscribe?.();\n }\n }\n update(store.getState());\n if (!resolved) {\n unsubscribe = store.subscribe(update);\n }\n });\n}\n/**\n * A promise-based way to access the config as soon as it is fully loaded.\n * If it is already loaded, resolves the config in its present state.\n *\n * This is a useful function if you need to get the config in the course\n * of the execution of a function.\n *\n * @param moduleName The name of the module for which to look up the config\n */ function getConfig(moduleName) {\n return whenStoreReady((0,_state_js__rspack_import_3.getConfigStore)(moduleName), (state)=>Boolean(state.loaded && state.config), (state)=>(0,lodash_es__rspack_import_6[\"default\"])(state.config, [\n 'Display conditions',\n 'Translation overrides'\n ]));\n}\n/**\n * Retrieves translation overrides for an extension, optionally scoped to a specific\n * extension slot. When called with only a module name, retrieves module-level overrides.\n * Translation overrides allow customizing translated strings without modifying the\n * original translation files.\n *\n * @param moduleName The name of the module providing the translation context.\n * @param slotName Optional extension slot name to include slot-specific overrides.\n * @param extensionId Optional extension ID to include extension-specific overrides.\n * @returns A Promise resolving to an array of translation override objects.\n *\n * @internal\n */ function getTranslationOverrides(moduleName, slotName, extensionId) {\n const promises = [\n whenStoreReady((0,_state_js__rspack_import_3.getConfigStore)(moduleName), (state)=>Boolean(state.translationOverridesLoaded && state.config), (state)=>state.config['Translation overrides'] ?? {})\n ];\n if (slotName && extensionId) {\n promises.push(whenStoreReady((0,_state_js__rspack_import_3.getExtensionConfig)(slotName, extensionId), (state)=>Boolean(state.loaded && state.config), (state)=>state.config['Translation overrides'] ?? {}));\n }\n return Promise.all(promises);\n}\n/**\n * Validate and interpolate defaults for `providedConfig` according to `schema`\n *\n * @param schema a configuration schema\n * @param providedConfig an object of config values (without the top-level module name)\n * @param keyPathContext a dot-separated string which helps the user figure out where\n * the provided config came from\n * @returns The validated and processed configuration object with defaults applied.\n * @internal\n */ function processConfig(schema, providedConfig, keyPathContext) {\n validateStructure(schema, providedConfig, keyPathContext);\n const config = setDefaults(schema, providedConfig);\n runAllValidatorsInConfigTree(schema, config, keyPathContext);\n return config;\n}\nconst extensionConfigCache = new Map();\n/**\n * Returns the configuration for an extension. This configuration is specific\n * to the slot in which it is mounted, and its ID within that slot.\n *\n * The schema for that configuration is the extension schema. If no extension\n * schema has been provided, the schema used is the schema of the module in\n * which the extension is defined.\n *\n * @param slotModuleName The name of the module which defines the extension slot\n * @param extensionModuleName The name of the module which defines the extension (and therefore the config schema)\n * @param slotName The name of the extension slot where the extension is mounted\n * @param extensionId The ID of the extension in its slot\n */ function computeExtensionConfig(slotModuleName, extensionModuleName, slotName, extensionId, configState, tempConfigState) {\n const extensionName = getExtensionNameFromId(extensionId);\n const extensionConfigSchema = configState.schemas[extensionName];\n // JSON string of these elements should be unique-per-extension\n const cacheKey = JSON.stringify([\n slotName,\n extensionId,\n slotModuleName,\n extensionModuleName\n ]);\n const cached = extensionConfigCache.get(cacheKey);\n if (cached && cached.extensionSchema === extensionConfigSchema && cached.extensionModuleSchema === configState.schemas[extensionModuleName] && cached.providedConfigs === configState.providedConfigs && cached.temporaryConfig === tempConfigState.config) {\n return cached.config;\n }\n const nameOfSchemaSource = extensionConfigSchema ? extensionName : extensionModuleName;\n const providedConfigs = getProvidedConfigs(configState, tempConfigState);\n const slotModuleConfig = mergeConfigsFor(slotModuleName, providedConfigs);\n const configOverride = slotModuleConfig?.extensionSlots?.[slotName]?.configure?.[extensionId] ?? {};\n const extensionConfig = mergeConfigsFor(nameOfSchemaSource, providedConfigs);\n const combinedConfig = mergeConfigs([\n extensionConfig,\n configOverride\n ]);\n const schema = extensionConfigSchema ?? configState.schemas[extensionModuleName];\n validateStructure(schema, combinedConfig, nameOfSchemaSource);\n const config = setDefaults(schema, combinedConfig);\n runAllValidatorsInConfigTree(schema, config, nameOfSchemaSource);\n delete config.extensionSlots;\n extensionConfigCache.set(cacheKey, {\n extensionSchema: extensionConfigSchema,\n extensionModuleSchema: configState.schemas[extensionModuleName],\n providedConfigs: configState.providedConfigs,\n temporaryConfig: tempConfigState.config,\n config\n });\n return config;\n}\nconst implementerToolsModuleCache = new Map();\nfunction getImplementerToolsConfig(configState, tempConfigState) {\n const annotatedSchemas = getAllSchemasWithValuesAndSources(configState.schemas);\n const configsAndSources = [\n ...configState.providedConfigs.map((c)=>[\n c.config,\n c.source\n ]),\n [\n tempConfigState.config,\n 'temporary config'\n ]\n ];\n // A module can be configured without having declared a schema, so the module list is the union\n // of both rather than just the schemas.\n const moduleNames = new Set(Object.keys(annotatedSchemas));\n for (const [config] of configsAndSources){\n for (const moduleName of Object.keys(config)){\n moduleNames.add(moduleName);\n }\n }\n const result = {};\n for (const moduleName of moduleNames){\n const annotatedSchema = annotatedSchemas[moduleName];\n const configSlices = configsAndSources.map(([config])=>config[moduleName]);\n const sources = configsAndSources.map(([, source])=>source);\n const cached = implementerToolsModuleCache.get(moduleName);\n if (cached && cached.annotatedSchema === annotatedSchema && cached.configSlices.length === configSlices.length && cached.configSlices.every((slice, i)=>slice === configSlices[i]) && cached.sources.every((source, i)=>source === sources[i])) {\n result[moduleName] = cached.result;\n continue;\n }\n let merged = annotatedSchema ?? {};\n configsAndSources.forEach(([, source], i)=>{\n const slice = configSlices[i];\n if (slice !== undefined) {\n merged = mergeDeepReplace(merged, createValuesAndSourcesTree(slice, source));\n }\n });\n implementerToolsModuleCache.set(moduleName, {\n annotatedSchema,\n configSlices,\n sources,\n result: merged\n });\n result[moduleName] = merged;\n }\n return result;\n}\n/**\n * Caching per module is what stops the walk being quadratic: defining one module's schema\n * recomputes every module.\n *\n * A module with no configuration of its own is published straight from this cache, so nothing may\n * mutate a tree it reads out of the implementer tools config — it is the cache entry.\n */ const schemaValuesAndSourcesCache = new Map();\nfunction getAllSchemasWithValuesAndSources(schemas) {\n const result = {};\n for (const [moduleName, schema] of Object.entries(schemas)){\n const cached = schemaValuesAndSourcesCache.get(moduleName);\n if (cached && cached.schema === schema) {\n result[moduleName] = cached.annotated;\n } else {\n const annotated = getSchemaWithValuesAndSources((0,lodash_es__rspack_import_7[\"default\"])(schema));\n schemaValuesAndSourcesCache.set(moduleName, {\n schema,\n annotated\n });\n result[moduleName] = annotated;\n }\n }\n return result;\n}\nfunction getSchemaWithValuesAndSources(schema) {\n if (schema.hasOwnProperty('_default')) {\n return {\n ...schema,\n _value: schema._default,\n _source: 'default'\n };\n } else if (isOrdinaryObject(schema)) {\n return Object.keys(schema).reduce((obj, key)=>{\n obj[key] = getSchemaWithValuesAndSources(schema[key]);\n return obj;\n }, {});\n } else {\n // at this point, the schema is bad and an error will have been logged during schema validation\n return {};\n }\n}\nfunction createValuesAndSourcesTree(config, source) {\n if (isOrdinaryObject(config)) {\n return Object.keys(config).reduce((obj, key)=>{\n obj[key] = createValuesAndSourcesTree(config[key], source);\n return obj;\n }, {});\n } else {\n return {\n _value: config,\n _source: source\n };\n }\n}\nfunction getExtensionSlotConfigs(configState, tempConfigState) {\n const allConfigs = mergeConfigs(getProvidedConfigs(configState, tempConfigState));\n const slotConfigPerModule = Object.keys(allConfigs).reduce((obj, key)=>{\n if (allConfigs[key]?.extensionSlots) {\n obj[key] = allConfigs[key]?.extensionSlots;\n }\n return obj;\n }, {});\n validateAllExtensionSlotConfigs(slotConfigPerModule);\n const slotConfigs = Object.keys(slotConfigPerModule).reduce((obj, key)=>{\n obj = {\n ...obj,\n ...slotConfigPerModule[key]\n };\n return obj;\n }, {});\n return slotConfigs;\n}\nfunction validateAllExtensionSlotConfigs(slotConfigPerModule) {\n for (let [moduleName, configBySlotName] of Object.entries(slotConfigPerModule)){\n for (let [slotName, config] of Object.entries(configBySlotName)){\n validateExtensionSlotConfig(config, moduleName, slotName);\n }\n }\n}\nfunction validateExtensionSlotConfig(config, moduleName, slotName) {\n const keyPath = `${moduleName}.extensionSlots.${slotName}`;\n const errorPrefix = `Extension slot config '${keyPath}'`;\n const invalidKeys = Object.keys(config).filter((k)=>![\n 'add',\n 'remove',\n 'order',\n 'configure'\n ].includes(k));\n if (invalidKeys.length) {\n logError(keyPath, errorPrefix + `' contains invalid keys '${invalidKeys.join(\"', '\")}'`);\n }\n if (config.add) {\n if (!Array.isArray(config.add) || !config.add.every((n)=>typeof n === 'string')) {\n logError(keyPath, errorPrefix + `.add' is invalid. Must be an array of strings (extension IDs)`);\n }\n }\n if (config.remove) {\n if (!Array.isArray(config.remove) || !config.remove.every((n)=>typeof n === 'string')) {\n logError(keyPath, errorPrefix + `.remove' is invalid. Must be an array of strings (extension IDs)`);\n }\n }\n if (config.order) {\n if (!Array.isArray(config.order) || !config.order.every((n)=>typeof n === 'string')) {\n logError(keyPath, errorPrefix + `.order' is invalid. Must be an array of strings (extension IDs)`);\n }\n }\n if (config.configure) {\n if (!isOrdinaryObject(config.configure)) {\n logError(keyPath, errorPrefix + `.configure' is invalid. Must be an object with extension IDs for keys`);\n }\n }\n}\nfunction getProvidedConfigs(configState, tempConfigState) {\n return [\n ...configState.providedConfigs.map((c)=>c.config),\n tempConfigState.config\n ];\n}\n/**\n * Validates the config schema for a module. Since problems identified here are programming errors\n * that hopefully will be caught during development, this function logs errors to the console directly;\n * it's fine if we spam the user with these errors.\n */ function validateConfigSchema(moduleName, schema, keyPath = '') {\n const updateMessage = `Please verify that you are running the latest version and, if so, alert the maintainer.`;\n for (const key of Object.keys(schema).filter((k)=>!k.startsWith('_'))){\n const thisKeyPath = keyPath + (keyPath && '.') + key;\n const schemaPart = schema[key];\n if (thisKeyPath === 'Display conditions') {\n console.error(`${moduleName} declares a configuration option called \"Display conditions\"; the \"Display conditions\" option is a reserved name. ${updateMessage}`);\n }\n if (thisKeyPath === 'Translation overrides') {\n console.error(`${moduleName} declares a configuration option called \"Translation overrides\"; the \"Translation overrides\" option is a reserved name. ${updateMessage}`);\n }\n if (!isOrdinaryObject(schemaPart)) {\n console.error(`${moduleName} has bad config schema definition for key '${thisKeyPath}'. ${updateMessage}`);\n continue;\n }\n if (!schemaPart.hasOwnProperty('_default')) {\n // recurse for nested config keys\n validateConfigSchema(moduleName, schemaPart, thisKeyPath);\n }\n const elements = schemaPart._elements;\n if (hasObjectSchema(elements)) {\n validateConfigSchema(moduleName, elements, thisKeyPath + '._elements');\n }\n if (schemaPart._validators) {\n for (let validator of schemaPart._validators){\n if (typeof validator !== 'function') {\n console.error(`${moduleName} has invalid validator for key '${thisKeyPath}' ${updateMessage}.` + `\\n\\nIf you're the maintainer: validators must be functions that return either ` + `undefined or an error string. Received ${validator}.`);\n }\n }\n }\n const valueType = schemaPart._type;\n if (valueType && !Object.values(_types_js__rspack_import_0.Type).includes(valueType)) {\n console.error(`${moduleName} has invalid type for key '${thisKeyPath}' ${updateMessage}.` + `\\n\\nIf you're the maintainer: the allowed types are ${Object.values(_types_js__rspack_import_0.Type).join(', ')}. ` + `Received '${valueType}'`);\n }\n if (Object.keys(schemaPart).every((k)=>[\n '_description',\n '_validators',\n '_elements',\n '_type'\n ].includes(k)) && !keyPath.includes('._elements')) {\n console.error(`${moduleName} has bad config schema definition for key '${thisKeyPath}'. ${updateMessage}.` + `\\n\\nIf you're the maintainer: all config elements must have a default. ` + `Received ${JSON.stringify(schemaPart)}`);\n }\n if (elements && valueType && ![\n _types_js__rspack_import_0.Type.Array,\n _types_js__rspack_import_0.Type.Object\n ].includes(valueType)) {\n console.error(`${moduleName} has bad config schema definition for key '${thisKeyPath}'. ${updateMessage}.` + `\\n\\nIf you're the maintainer: the 'elements' key only works with '_type' equal to 'Array' or 'Object'. ` + `Received ${JSON.stringify(valueType)}`);\n }\n }\n}\nfunction getConfigForModule(moduleName, configState, tempConfigState) {\n const schema = configState.schemas[moduleName];\n const inputConfig = mergeConfigsFor(moduleName, getProvidedConfigs(configState, tempConfigState));\n validateStructure(schema, inputConfig, moduleName);\n const config = setDefaults(schema, inputConfig);\n runAllValidatorsInConfigTree(schema, config, moduleName);\n delete config.extensionSlots;\n return config;\n}\nfunction getConfigForModuleImplicitSchema(moduleName, configState, tempConfigState) {\n const inputConfig = mergeConfigsFor(moduleName, getProvidedConfigs(configState, tempConfigState));\n const config = setDefaults(implicitConfigSchema, inputConfig);\n runAllValidatorsInConfigTree(implicitConfigSchema, config, moduleName);\n delete config.extensionSlots;\n return config;\n}\nfunction mergeConfigsFor(moduleName, allConfigs) {\n const allConfigsForModule = allConfigs.map(({ [moduleName]: c })=>c).filter((c)=>!!c);\n return mergeConfigs(allConfigsForModule);\n}\nfunction mergeConfigs(configs) {\n return configs.reduce((acc, config)=>mergeDeepReplace(acc, config), {});\n}\n/**\n * Recursively check the provided config tree to make sure that all\n * of the provided properties exist in the schema, and that types are\n * correct. Does not run validators yet, since those will be run on\n * the config with the defaults filled in.\n */ function validateStructure(schema, config, keyPath = '') {\n // validate each constituent element\n for (const key of Object.keys(config)){\n const value = config[key];\n const thisKeyPath = keyPath + '.' + key;\n const schemaPart = schema[key];\n if (!schema.hasOwnProperty(key)) {\n if (!(key === 'extensionSlots' && keyPath !== '')) {\n logError(thisKeyPath, `Unknown config key '${thisKeyPath}' provided. Ignoring.`);\n }\n continue;\n }\n validateBranchStructure(schemaPart, value, thisKeyPath);\n }\n}\nfunction validateBranchStructure(schemaPart, value, keyPath) {\n checkType(keyPath, schemaPart._type, value);\n if (isOrdinaryObject(value)) {\n if (schemaPart._type === _types_js__rspack_import_0.Type.Object) {\n // validate as freeform object\n validateFreeformObjectStructure(schemaPart, value, keyPath);\n } else if (!(schemaPart.hasOwnProperty('_default') || schemaPart.hasOwnProperty('_type'))) {\n // validate as normal nested config\n validateStructure(schemaPart, value, keyPath);\n }\n } else {\n if (schemaPart._type === _types_js__rspack_import_0.Type.Array) {\n validateArrayStructure(schemaPart, value, keyPath);\n }\n }\n}\nfunction validateFreeformObjectStructure(freeformObjectSchema, config, keyPath) {\n if (freeformObjectSchema._elements) {\n for (const key of Object.keys(config)){\n const value = config[key];\n validateBranchStructure(freeformObjectSchema._elements, value, `${keyPath}.${key}`);\n }\n }\n}\nfunction validateArrayStructure(arraySchema, value, keyPath) {\n const validatedAsArray = checkType(keyPath, _types_js__rspack_import_0.Type.Array, value);\n if (!validatedAsArray) {\n return;\n }\n // if there is an array element object schema, verify that elements match it\n if (hasObjectSchema(arraySchema._elements)) {\n for(let i = 0; i < value.length; i++){\n validateBranchStructure(arraySchema._elements, value[i], `${keyPath}[${i}]`);\n }\n }\n for(let i = 0; i < value.length; i++){\n checkType(`${keyPath}[${i}]`, arraySchema._elements?._type, value[i]);\n }\n}\n/**\n * Run all the validators in the config tree. This should be run\n * on the config object after it has been filled in with all the defaults, since\n * higher-level validators may refer to default values.\n */ function runAllValidatorsInConfigTree(schema, config, keyPath = '') {\n // If `!schema`, there should have been a structural validation error printed already.\n if (schema) {\n if (config !== schema._default) {\n runValidators(keyPath, schema._validators, config);\n }\n if (isOrdinaryObject(config)) {\n for (const key of Object.keys(config)){\n const value = config[key];\n const thisKeyPath = keyPath + '.' + key;\n const schemaPart = schema[key];\n if (schema._type === _types_js__rspack_import_0.Type.Object && schema._elements) {\n runAllValidatorsInConfigTree(schema._elements, value, thisKeyPath);\n } else {\n runAllValidatorsInConfigTree(schemaPart, value, thisKeyPath);\n }\n }\n } else if (Array.isArray(config) && schema._elements) {\n for(let i = 0; i < config.length; i++){\n runAllValidatorsInConfigTree(schema._elements, config[i], `${keyPath}[${i}]`);\n }\n }\n }\n}\n/**\n * Run type validation for the value, logging any errors.\n * @returns true if validation passes, false otherwise\n */ function checkType(keyPath, _type, value) {\n if (_type) {\n const validator = {\n Array: _validators_type_validators_js__rspack_import_1.isArray,\n Boolean: _validators_type_validators_js__rspack_import_1.isBoolean,\n ConceptUuid: _validators_type_validators_js__rspack_import_1.isUuid,\n Number: _validators_type_validators_js__rspack_import_1.isNumber,\n Object: _validators_type_validators_js__rspack_import_1.isObject,\n String: _validators_type_validators_js__rspack_import_1.isString,\n UUID: _validators_type_validators_js__rspack_import_1.isUuid,\n PersonAttributeTypeUuid: _validators_type_validators_js__rspack_import_1.isUuid,\n PatientIdentifierTypeUuid: _validators_type_validators_js__rspack_import_1.isUuid\n };\n return runValidators(keyPath, [\n validator[_type]\n ], value);\n }\n return true;\n}\n/**\n * Runs validators, logging errors.\n * @returns true if all pass, false otherwise.\n */ function runValidators(keyPath, validators, value) {\n let returnValue = true;\n if (validators) {\n try {\n for (let validator of validators){\n const validatorResult = validator(value);\n if (typeof validatorResult === 'string') {\n const message = typeof value === 'object' ? `Invalid configuration for ${keyPath}: ${validatorResult}` : `Invalid configuration value ${value} for ${keyPath}: ${validatorResult}`;\n logError(keyPath, message);\n returnValue = false;\n }\n }\n } catch (e) {\n console.error(`Skipping invalid validator at \"${keyPath}\". Encountered error\\n\\t${e}`);\n }\n }\n return returnValue;\n}\n// Recursively fill in the config with values from the schema.\nconst setDefaults = (schema, inputConfig)=>{\n const config = structuredClone(inputConfig);\n if (!schema) {\n return config;\n }\n for (const key of Object.keys(schema)){\n const configPart = config[key];\n const schemaPart = schema[key];\n // The `schemaPart &&` clause of this `if` statement will only fail\n // if the schema is very invalid. It is there to prevent the app from\n // crashing completely, though it will produce unexpected behavior.\n // If this happens, there should be legible errors in the console from\n // the schema validator.\n if (schemaPart && (schemaPart.hasOwnProperty('_type') || schemaPart.hasOwnProperty('_default'))) {\n // We assume that schemaPart defines a config value, since it has\n // a property `_type` or `_default`.\n if (!config.hasOwnProperty(key)) {\n config[key] = schemaPart['_default'];\n }\n // We also check if it is an object or array with object elements, in which case we recurse\n const elements = schemaPart._elements;\n if (configPart && hasObjectSchema(elements)) {\n if (schemaPart._type === _types_js__rspack_import_0.Type.Array && Array.isArray(configPart)) {\n const configWithDefaults = configPart.map((conf)=>setDefaults(elements, conf));\n config[key] = configWithDefaults;\n } else if (schemaPart._type === _types_js__rspack_import_0.Type.Object) {\n for (let objectKey of Object.keys(configPart)){\n configPart[objectKey] = setDefaults(elements, configPart[objectKey]);\n }\n }\n }\n } else if (isOrdinaryObject(schemaPart)) {\n // Since schemaPart has no property \"_type\", if it's an ordinary object\n // (unlike, importantly, the validators array), we assume it is a parent config property.\n // We recurse to config[key] and schema[key]. Default config[key] to {}.\n const selectedConfigPart = configPart ?? {};\n // There will have been a validation error already if configPart is not a plain object.\n if (isOrdinaryObject(selectedConfigPart)) {\n config[key] = setDefaults(schemaPart, selectedConfigPart);\n }\n }\n }\n return config;\n};\nfunction hasObjectSchema(elementsSchema) {\n return !!elementsSchema && Object.keys(elementsSchema).filter((e)=>![\n '_default',\n '_validators'\n ].includes(e)).length > 0;\n}\nfunction isOrdinaryObject(value) {\n return typeof value === 'object' && !Array.isArray(value) && value !== null;\n}\n/** Keep track of which validation errors we have displayed. Each one should only be displayed once. */ let displayedValidationMessages = new Set();\nfunction logError(keyPath, message) {\n const key = `${keyPath}:::${message}`;\n // technically, this should not be possible, but because of how things wind-up transpiled, this isn't impossible\n if (!displayedValidationMessages) {\n displayedValidationMessages = new Set();\n }\n if (!displayedValidationMessages.has(key)) {\n console.error(message);\n displayedValidationMessages.add(key);\n }\n}\n/**\n * Normally, configuration errors are only displayed once. This function clears the list of\n * displayed errors, so that they will be displayed again.\n *\n * @internal\n */ function clearConfigErrors(keyPath) {\n if (keyPath) {\n displayedValidationMessages.forEach((key)=>{\n if (key.startsWith(keyPath)) {\n displayedValidationMessages.delete(key);\n }\n });\n } else {\n displayedValidationMessages.clear();\n }\n}\n/**\n * Cleans up all config store subscriptions and re-establishes them. This is primarily\n * useful for testing, where subscriptions set up at module load time need to be cleared\n * between tests to prevent infinite update loops. After clearing, subscriptions are\n * re-established so the config system continues to work normally.\n *\n * @internal\n */ function resetConfigSystem() {\n configSubscriptions.forEach((unsubscribe)=>unsubscribe());\n configSubscriptions.length = 0;\n // Cached configs are keyed on input identity, so a test that reuses the same schema or config\n // objects across cases would otherwise be served the previous case's result.\n moduleConfigCache.clear();\n extensionConfigCache.clear();\n schemaValuesAndSourcesCache.clear();\n implementerToolsModuleCache.clear();\n setupConfigSubscriptions();\n}\n/**\n * Copied over from esm-extensions. It rightly belongs to that module, but esm-config\n * cannot depend on esm-extensions.\n */ function getExtensionNameFromId(extensionId) {\n const [extensionName] = extensionId.split('#');\n return extensionName;\n}\n/**\n * The translation overrides schema is used in the implicit schema given to every module;\n * plus any additional translation namespaces (at time of writing, this is just 'core').\n */ const translationOverridesSchema = {\n 'Translation overrides': {\n _description: 'Per-language overrides for frontend translations should be keyed by language code and each language dictionary contains the translation key and the display value',\n _type: _types_js__rspack_import_0.Type.Object,\n _default: {},\n _validators: [\n (0,_validators_validator_js__rspack_import_2.validator)((o)=>Object.keys(o).every((k)=>/^[a-z]{2,3}(-[A-Z]{2,3})?$/.test(k)), (o)=>{\n const badKeys = Object.keys(o).filter((k)=>!/^[a-z]{2,3}(-[A-Z]{2,3})?$/.test(k));\n return `The 'Translation overrides' object should have language codes for keys. Language codes must be in the form of a two-to-three letter language code optionally followed by a hyphen and a two-to-three letter country code. The following keys do not conform: ${badKeys.join(', ')}.`;\n })\n ]\n }\n};\n/**\n * The implicitConfigSchema is implicitly included in every configuration schema\n */ const implicitConfigSchema = {\n 'Display conditions': {\n privileges: {\n _description: 'The privilege(s) the user must have to use this extension',\n _type: _types_js__rspack_import_0.Type.Array,\n _default: []\n },\n expression: {\n _description: 'The expression that determines whether the extension is displayed',\n _type: _types_js__rspack_import_0.Type.String,\n _default: undefined\n }\n },\n ...translationOverridesSchema\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyPz9ydWxlU2V0WzFdLnJ1bGVzWzVdLnVzZVswXSEvaG9tZS9ydW5uZXIvd29yay9vcGVubXJzLWVzbS1jb3JlL29wZW5tcnMtZXNtLWNvcmUvcGFja2FnZXMvZnJhbWV3b3JrL2VzbS1jb25maWcvZGlzdC9tb2R1bGUtY29uZmlnL21vZHVsZS1jb25maWcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tY29uZmlnL2Rpc3QvbW9kdWxlLWNvbmZpZy9tb2R1bGUtY29uZmlnLmpzP2MzYTUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IENvbmZpZyAqLyBpbXBvcnQgeyBjbG9uZURlZXAsIGlzRXF1YWwsIG1lcmdlV2l0aCwgb21pdCBhcyBsb2Rhc2hPbWl0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgVHlwZSB9IGZyb20gXCIuLi90eXBlcy5qc1wiO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNCb29sZWFuLCBpc1V1aWQsIGlzTnVtYmVyLCBpc09iamVjdCwgaXNTdHJpbmcgfSBmcm9tIFwiLi4vdmFsaWRhdG9ycy90eXBlLXZhbGlkYXRvcnMuanNcIjtcbmltcG9ydCB7IHZhbGlkYXRvciB9IGZyb20gXCIuLi92YWxpZGF0b3JzL3ZhbGlkYXRvci5qc1wiO1xuaW1wb3J0IHsgY29uZmlnRXh0ZW5zaW9uU3RvcmUsIGNvbmZpZ0ludGVybmFsU3RvcmUsIGdldENvbmZpZ1N0b3JlLCBnZXRFeHRlbnNpb25Db25maWcsIGdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUsIGdldEV4dGVuc2lvbnNDb25maWdTdG9yZSwgY2xlYXJDb25maWdEZXJpdmF0aW9uRXJyb3IsIGltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZSwgaW52YWxpZGF0ZUltcGxlbWVudGVyVG9vbHNDb25maWcsIHJlY29yZENvbmZpZ0Rlcml2YXRpb25FcnJvciwgc2V0SW1wbGVtZW50ZXJUb29sc0NvbmZpZ1JlY29tcHV0ZXIsIHRlbXBvcmFyeUNvbmZpZ1N0b3JlIH0gZnJvbSBcIi4vc3RhdGUuanNcIjtcbi8qKlxuICogRGVlcCBtZXJnZSB0d28gb2JqZWN0cywgd2l0aCByaWdodC1zaWRlIHZhbHVlcyB0YWtpbmcgcHJlY2VkZW5jZS5cbiAqIEFycmF5cyBhcmUgcmVwbGFjZWQgZW50aXJlbHkgKG5vdCBtZXJnZWQgYnkgaW5kZXgpLCBtYXRjaGluZyB0aGVcbiAqIGJlaGF2aW9yIG9mIHJhbWRhJ3MgbWVyZ2VEZWVwUmlnaHQuXG4gKi8gZnVuY3Rpb24gbWVyZ2VEZWVwUmVwbGFjZShsZWZ0LCByaWdodCkge1xuICAgIHJldHVybiBtZXJnZVdpdGgoe30sIGxlZnQsIHJpZ2h0LCAoX29ialZhbHVlLCBzcmNWYWx1ZSk9PntcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3JjVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3JjVmFsdWU7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8qKlxuICogU3RvcmUgc2V0dXBcbiAqXG4gKlxuICogU2V0IHVwIHN0b3JlcyBhbmQgc3Vic2NyaXB0aW9ucyBzbyB0aGF0IGlucHV0cyBnZXQgcHJvY2Vzc2VkIGFwcHJvcHJpYXRlbHkuXG4gKlxuICogVGhlcmUgYXJlICppbnB1dCogc3RvcmVzIGFuZCAqb3V0cHV0KiBzdG9yZXMuIFRoZSAqaW5wdXQqIHN0b3Jlc1xuICogYXJlIGNvbmZpZ0ludGVybmFsU3RvcmUsIHRlbXBvcmFyeUNvbmZpZ1N0b3JlLCBhbmQgY29uZmlnRXh0ZW5zaW9uU3RvcmUuIFRoZVxuICogb3V0cHV0IHN0b3JlcyBhcmUgc2V0IGluIHRoZSBgY29tcHV0ZS4uLmAgZnVuY3Rpb25zLiBUaGV5IGFyZSB0aGUgbW9kdWxlXG4gKiBjb25maWcgc3RvcmVzLCB0aGUgZXh0ZW5zaW9uIHNsb3QgY29uZmlnIHN0b3JlcyAoYnkgbW9kdWxlKSwgdGhlIGV4dGVuc2lvblxuICogY29uZmlnIHN0b3JlcywgYW5kIHRoZSBpbXBsZW1lbnRlciB0b29scyBjb25maWcgc3RvcmUuXG4gKlxuICogVGhpcyBjb2RlIHNldHMgdXAgdGhlIHN1YnNjcmlwdGlvbnMgc28gdGhhdCB3aGVuIGFuIGlucHV0IHN0b3JlIGNoYW5nZXMsXG4gKiB0aGUgY29ycmVjdCBzZXQgb2Ygb3V0cHV0IHN0b3JlcyBhcmUgdXBkYXRlZC5cbiAqXG4gKiBBbGwgYGNvbXB1dGUuLi5gIGZ1bmN0aW9ucyBleGNlcHQgYGNvbXB1dGVFeHRlbnNpb25Db25maWdzYCBhcmUgcHVyZVxuICogKG9yIGFyZSBzdXBwb3NlZCB0byBiZSksIG90aGVyIHRoYW4gdGhlIGZhY3QgdGhhdCB0aGV5IGFsbCBgc2V0U3RhdGVgXG4gKiBzdG9yZSB2YWx1ZXMgYXQgdGhlIGVuZC4gYGNvbXB1dGVFeHRlbnNpb25Db25maWdzYCBjYWxscyBgZ2V0R2xvYmFsU3RvcmVgLFxuICogd2hpY2ggY3JlYXRlcyBzdG9yZXMuXG4gKi8gLy8gU3RvcmUgdW5zdWJzY3JpYmUgZnVuY3Rpb25zIHRvIGFsbG93IGNsZWFudXAgKGUuZy4sIGluIHRlc3RzIG9yIGhvdCBtb2R1bGUgcmVsb2FkaW5nKVxuY29uc3QgY29uZmlnU3Vic2NyaXB0aW9ucyA9IFtdO1xuLyoqXG4gKiBSZWNvbXB1dGVzIGFsbCBjb25maWd1cmF0aW9uIGRlcml2ZWQgc3RvcmVzIGJhc2VkIG9uIGN1cnJlbnQgc3RhdGUgb2YgaW5wdXQgc3RvcmVzLlxuICogQ2FsbGVkIHdoZW5ldmVyIGFueSBpbnB1dCBzdG9yZSAoY29uZmlnSW50ZXJuYWxTdG9yZSwgdGVtcG9yYXJ5Q29uZmlnU3RvcmUsIGNvbmZpZ0V4dGVuc2lvblN0b3JlKSBjaGFuZ2VzLlxuICovIGZ1bmN0aW9uIHJlY29tcHV0ZUFsbENvbmZpZ3MoKSB7XG4gICAgY29uc3QgY29uZmlnU3RhdGUgPSBjb25maWdJbnRlcm5hbFN0b3JlLmdldFN0YXRlKCk7XG4gICAgY29uc3QgdGVtcENvbmZpZ1N0YXRlID0gdGVtcG9yYXJ5Q29uZmlnU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBleHRlbnNpb25TdGF0ZSA9IGNvbmZpZ0V4dGVuc2lvblN0b3JlLmdldFN0YXRlKCk7XG4gICAgY29tcHV0ZU1vZHVsZUNvbmZpZyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKTtcbiAgICBjb21wdXRlRXh0ZW5zaW9uU2xvdENvbmZpZ3MoY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSk7XG4gICAgY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3MoY29uZmlnU3RhdGUsIGV4dGVuc2lvblN0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpO1xuICAgIC8vIExhc3QsIGJlY2F1c2UgYSBmYWlsdXJlIGhlcmUgbXVzdCBub3Qgc2tpcCB0aGUgb3V0cHV0cyBhYm92ZS4gT25seSBrZXB0IGN1cnJlbnQgd2hpbGUgdGhlXG4gICAgLy8gaW1wbGVtZW50ZXIgdG9vbHMgYXJlIHdhdGNoaW5nIGl0OyBvdGhlcndpc2UgZGVyaXZlZCBvbiByZWFkLlxuICAgIGludmFsaWRhdGVJbXBsZW1lbnRlclRvb2xzQ29uZmlnKCk7XG59XG5mdW5jdGlvbiBzZXR1cENvbmZpZ1N1YnNjcmlwdGlvbnMoKSB7XG4gICAgLy8gUmVnaXN0ZXJlZCBoZXJlIHJhdGhlciB0aGFuIGF0IG1vZHVsZSBsb2FkIHNvIHRoYXQgYHJlc2V0Q29uZmlnU3lzdGVtYCByZXN0b3JlcyBpdC5cbiAgICBzZXRJbXBsZW1lbnRlclRvb2xzQ29uZmlnUmVjb21wdXRlcigoKT0+Y29tcHV0ZUltcGxlbWVudGVyVG9vbHNDb25maWcoY29uZmlnSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpLCB0ZW1wb3JhcnlDb25maWdTdG9yZS5nZXRTdGF0ZSgpKSk7XG4gICAgLy8gSW5pdGlhbCBjb21wdXRhdGlvblxuICAgIHJlY29tcHV0ZUFsbENvbmZpZ3MoKTtcbiAgICAvLyBTdWJzY3JpYmUgdG8gYWxsIGlucHV0IHN0b3JlcyB3aXRoIGEgc2luZ2xlIGhhbmRsZXJcbiAgICAvLyBUaGlzIGVuc3VyZXMgd2Ugb25seSByZWNvbXB1dGUgb25jZSBldmVuIGlmIG11bHRpcGxlIHN0b3JlcyBjaGFuZ2Ugc2ltdWx0YW5lb3VzbHlcbiAgICBjb25maWdTdWJzY3JpcHRpb25zLnB1c2goY29uZmlnSW50ZXJuYWxTdG9yZS5zdWJzY3JpYmUocmVjb21wdXRlQWxsQ29uZmlnc1NhZmVseSksIHRlbXBvcmFyeUNvbmZpZ1N0b3JlLnN1YnNjcmliZShyZWNvbXB1dGVBbGxDb25maWdzU2FmZWx5KSwgY29uZmlnRXh0ZW5zaW9uU3RvcmUuc3Vic2NyaWJlKHJlY29tcHV0ZUFsbENvbmZpZ3NTYWZlbHkpKTtcbn1cbi8qKiBFbnN1cmUgdGhhdCB3ZSBkbyBub3QgdGhyb3cgZHVyaW5nIGEgc3RvcmUgc3Vic2NyaXB0aW9uICovIGZ1bmN0aW9uIHJlY29tcHV0ZUFsbENvbmZpZ3NTYWZlbHkoKSB7XG4gICAgY2xlYXJDb25maWdEZXJpdmF0aW9uRXJyb3IoKTtcbiAgICB0cnkge1xuICAgICAgICByZWNvbXB1dGVBbGxDb25maWdzKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWNvcmRDb25maWdEZXJpdmF0aW9uRXJyb3IoZSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byByZWNvbXB1dGUgdGhlIGNvbmZpZ3VyYXRpb24nLCBlKTtcbiAgICB9XG59XG4vLyBTZXQgdXAgc3Vic2NyaXB0aW9ucyBhdCBtb2R1bGUgbG9hZCB0aW1lXG5zZXR1cENvbmZpZ1N1YnNjcmlwdGlvbnMoKTtcbmNvbnN0IG1vZHVsZUNvbmZpZ0NhY2hlID0gbmV3IE1hcCgpO1xuZnVuY3Rpb24gY29tcHV0ZU1vZHVsZUNvbmZpZyhzdGF0ZSwgdGVtcFN0YXRlKSB7XG4gICAgZm9yIChsZXQgbW9kdWxlTmFtZSBvZiBPYmplY3Qua2V5cyhzdGF0ZS5zY2hlbWFzKSl7XG4gICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHNjaGVtYSBjb3VsZCBiZSBlaXRoZXIganVzdCB0aGUgaW1wbGljaXQgc2NoZW1hIG9yIHRoZSBhY3R1YWxseVxuICAgICAgICAvLyBkZWZpbmVkIHNjaGVtYS4gV2UgcnVuIHdpdGgganVzdCB0aGUgaW1wbGljaXQgc2NoZW1hIGJlY2F1c2Ugd2Ugd2FudCB0byBwb3B1bGF0ZVxuICAgICAgICAvLyB0aGUgY29uZmlnIHN0b3JlIHdpdGggdGhlIHRyYW5zbGF0aW9uIG92ZXJyaWRlcyBhcyBzb29uIGFzIHBvc3NpYmxlLiBJbiBmYWN0LCB0aGVcbiAgICAgICAgLy8gdHJhbnNsYXRpb24gc3lzdGVtIHdpbGwgdGhyb3cgZm9yIFN1c3BlbnNlIHVudGlsIHRoZSB0cmFuc2xhdGlvbiBvdmVycmlkZXMgYXJlXG4gICAgICAgIC8vIGF2YWlsYWJsZSwgd2hpY2ggYXMgb2YgdGhpcyB3cml0aW5nIGJsb2NrcyB0aGUgc2NoZW1hIGRlZmluaXRpb24gZnJvbSBvY2N1cnJpbmdcbiAgICAgICAgLy8gZm9yIG1vZHVsZXMgbG9hZGVkIGJhc2VkIG9uIHRoZWlyIGV4dGVuc2lvbnMuXG4gICAgICAgIGNvbnN0IG1vZHVsZVN0b3JlID0gZ2V0Q29uZmlnU3RvcmUobW9kdWxlTmFtZSk7XG4gICAgICAgIGNvbnN0IHNjaGVtYSA9IHN0YXRlLnNjaGVtYXNbbW9kdWxlTmFtZV07XG4gICAgICAgIGNvbnN0IG1vZHVsZUxvYWRlZCA9IEJvb2xlYW4oc3RhdGUubW9kdWxlTG9hZGVkW21vZHVsZU5hbWVdKTtcbiAgICAgICAgY29uc3QgY2FjaGVkID0gbW9kdWxlQ29uZmlnQ2FjaGUuZ2V0KG1vZHVsZU5hbWUpO1xuICAgICAgICBsZXQgbmV3U3RhdGU7XG4gICAgICAgIGlmIChjYWNoZWQgJiYgY2FjaGVkLnNjaGVtYSA9PT0gc2NoZW1hICYmIGNhY2hlZC5tb2R1bGVMb2FkZWQgPT09IG1vZHVsZUxvYWRlZCAmJiBjYWNoZWQucHJvdmlkZWRDb25maWdzID09PSBzdGF0ZS5wcm92aWRlZENvbmZpZ3MgJiYgY2FjaGVkLnRlbXBvcmFyeUNvbmZpZyA9PT0gdGVtcFN0YXRlLmNvbmZpZykge1xuICAgICAgICAgICAgbmV3U3RhdGUgPSBjYWNoZWQuc3RhdGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSBtb2R1bGVMb2FkZWQgPyBnZXRDb25maWdGb3JNb2R1bGUobW9kdWxlTmFtZSwgc3RhdGUsIHRlbXBTdGF0ZSkgOiBnZXRDb25maWdGb3JNb2R1bGVJbXBsaWNpdFNjaGVtYShtb2R1bGVOYW1lLCBzdGF0ZSwgdGVtcFN0YXRlKTtcbiAgICAgICAgICAgIG5ld1N0YXRlID0ge1xuICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT3ZlcnJpZGVzTG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGxvYWRlZDogbW9kdWxlTG9hZGVkLFxuICAgICAgICAgICAgICAgIGNvbmZpZ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIG1vZHVsZUNvbmZpZ0NhY2hlLnNldChtb2R1bGVOYW1lLCB7XG4gICAgICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlZCxcbiAgICAgICAgICAgICAgICBwcm92aWRlZENvbmZpZ3M6IHN0YXRlLnByb3ZpZGVkQ29uZmlncyxcbiAgICAgICAgICAgICAgICB0ZW1wb3JhcnlDb25maWc6IHRlbXBTdGF0ZS5jb25maWcsXG4gICAgICAgICAgICAgICAgc3RhdGU6IG5ld1N0YXRlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXcml0aW5nIHVuY29uZGl0aW9uYWxseSB3b3VsZCBoYW5kIGV2ZXJ5IGB1c2VDb25maWdgIGNvbnN1bWVyIGluIHRoZSBhcHBsaWNhdGlvbiBhIG5ld1xuICAgICAgICAvLyBvYmplY3Qg4oCUIGFuZCBhIHJlLXJlbmRlciDigJQgd2hlbmV2ZXIgYW55IG1vZHVsZSBvciBleHRlbnNpb24gYW55d2hlcmUgaXMgbG9hZGVkLlxuICAgICAgICBjb25zdCBvbGRTdGF0ZSA9IG1vZHVsZVN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIGlmIChvbGRTdGF0ZS5sb2FkZWQgIT09IG5ld1N0YXRlLmxvYWRlZCB8fCBvbGRTdGF0ZS50cmFuc2xhdGlvbk92ZXJyaWRlc0xvYWRlZCAhPT0gbmV3U3RhdGUudHJhbnNsYXRpb25PdmVycmlkZXNMb2FkZWQgfHwgIWlzRXF1YWwob2xkU3RhdGUuY29uZmlnLCBuZXdTdGF0ZS5jb25maWcpKSB7XG4gICAgICAgICAgICBtb2R1bGVTdG9yZS5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBjb21wdXRlRXh0ZW5zaW9uU2xvdENvbmZpZ3Moc3RhdGUsIHRlbXBTdGF0ZSkge1xuICAgIGNvbnN0IHNsb3RDb25maWdzID0gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ3Moc3RhdGUsIHRlbXBTdGF0ZSk7XG4gICAgY29uc3Qgc2xvdFN0b3JlID0gZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSgpO1xuICAgIGNvbnN0IG9sZFNsb3RzID0gc2xvdFN0b3JlLmdldFN0YXRlKCkuc2xvdHM7XG4gICAgY29uc3Qgc2xvdHMgPSB7fTtcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgW3Nsb3ROYW1lLCBjb25maWddIG9mIE9iamVjdC5lbnRyaWVzKHNsb3RDb25maWdzKSl7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzID0gb2xkU2xvdHNbc2xvdE5hbWVdO1xuICAgICAgICAvLyBFbnRyaWVzIGtlZXAgdGhlaXIgaWRlbnRpdHkgd2hlbiB0aGUgY29uZmlndXJhdGlvbiBiZWhpbmQgdGhlbSBoYXNuJ3QgY2hhbmdlZCwgc28gdGhhdFxuICAgICAgICAvLyBjaGFuZ2luZyBvbmUgc2xvdCdzIGNvbmZpZ3VyYXRpb24gZG9lc24ndCBpbnZhbGlkYXRlIGV2ZXJ5IG90aGVyIGNvbmZpZ3VyZWQgc2xvdC5cbiAgICAgICAgaWYgKHByZXZpb3VzPy5sb2FkZWQgJiYgaXNFcXVhbChwcmV2aW91cy5jb25maWcsIGNvbmZpZykpIHtcbiAgICAgICAgICAgIHNsb3RzW3Nsb3ROYW1lXSA9IHByZXZpb3VzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2xvdHNbc2xvdE5hbWVdID0ge1xuICAgICAgICAgICAgICAgIGxvYWRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb25maWdcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBCdWlsdCBmcm9tIHNjcmF0Y2ggcmF0aGVyIHRoYW4gbWVyZ2VkIG92ZXIgdGhlIHByZXZpb3VzIHN0YXRlOiBhIHNsb3Qgd2hvc2UgY29uZmlndXJhdGlvblxuICAgIC8vIGhhcyBiZWVuIHJlbW92ZWQg4oCUIGNsZWFyaW5nIHRoZSB0ZW1wb3JhcnkgY29uZmlnLCBzYXkg4oCUIGhhcyB0byBsb3NlIGl0cyBlbnRyeSwgb3IgdGhlIG9sZFxuICAgIC8vIGNvbmZpZ3VyYXRpb24gc3RheXMgaW4gZm9yY2UgdW50aWwgdGhlIHBhZ2UgaXMgcmVsb2FkZWQuXG4gICAgaWYgKGNoYW5nZWQgfHwgT2JqZWN0LmtleXMob2xkU2xvdHMpLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMoc2xvdHMpLmxlbmd0aCkge1xuICAgICAgICBzbG90U3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICAgICAgc2xvdHNcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gY29tcHV0ZUltcGxlbWVudGVyVG9vbHNDb25maWcoc3RhdGUsIHRlbXBDb25maWdTdGF0ZSkge1xuICAgIGNvbnN0IG9sZFN0YXRlID0gaW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0b3JlLmdldFN0YXRlKCk7XG4gICAgY29uc3QgY29uZmlnID0gZ2V0SW1wbGVtZW50ZXJUb29sc0NvbmZpZyhzdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKTtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgY29uZmlnXG4gICAgfTtcbiAgICAvLyBVc2UgZGVlcCBlcXVhbGl0eSBvbiB0aGUgYWN0dWFsIGNvbmZpZyBjb250ZW50LCBub3QgdGhlIHdyYXBwZXIgb2JqZWN0XG4gICAgaWYgKCFpc0VxdWFsKG9sZFN0YXRlLmNvbmZpZywgbmV3U3RhdGUuY29uZmlnKSkge1xuICAgICAgICBpbXBsZW1lbnRlclRvb2xzQ29uZmlnU3RvcmUuc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNvbXB1dGVFeHRlbnNpb25Db25maWdzKGNvbmZpZ1N0YXRlLCBleHRlbnNpb25TdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSB7XG4gICAgY29uc3QgZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlID0gZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlKCk7XG4gICAgY29uc3Qgb2xkQ29uZmlncyA9IGV4dGVuc2lvbnNDb25maWdTdG9yZS5nZXRTdGF0ZSgpLmNvbmZpZ3M7XG4gICAgY29uc3QgY29uZmlncyA9IHt9O1xuICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgbGV0IGVudHJ5Q291bnQgPSAwO1xuICAgIC8vIFdlIGFzc3VtZSB0aGF0IHRoZSBtb2R1bGUgc2NoZW1hIGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZCwgc2luY2UgdGhlIGV4dGVuc2lvblxuICAgIC8vIGl0IGNvbnRhaW5zIGlzIG1vdW50ZWQuXG4gICAgZm9yIChsZXQgZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblN0YXRlLm1vdW50ZWRFeHRlbnNpb25zKXtcbiAgICAgICAgY29uc3QgY29uZmlnID0gY29tcHV0ZUV4dGVuc2lvbkNvbmZpZyhleHRlbnNpb24uc2xvdE1vZHVsZU5hbWUsIGV4dGVuc2lvbi5leHRlbnNpb25Nb2R1bGVOYW1lLCBleHRlbnNpb24uc2xvdE5hbWUsIGV4dGVuc2lvbi5leHRlbnNpb25JZCwgY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSk7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzID0gb2xkQ29uZmlnc1tleHRlbnNpb24uc2xvdE5hbWVdPy5bZXh0ZW5zaW9uLmV4dGVuc2lvbklkXTtcbiAgICAgICAgLy8gRW50cmllcyBrZWVwIHRoZWlyIGlkZW50aXR5IHdoZW4gdGhlIGNvbmZpZ3VyYXRpb24gYmVoaW5kIHRoZW0gaGFzbid0IGNoYW5nZWQsIHNvIHRoYXRcbiAgICAgICAgLy8gbW91bnRpbmcgb25lIGV4dGVuc2lvbiBkb2Vzbid0IGhhbmQgZXZlcnkgb3RoZXIgbW91bnRlZCBleHRlbnNpb24gYSBuZXcgY29uZmlnIG9iamVjdC5cbiAgICAgICAgY29uc3QgZW50cnkgPSBwcmV2aW91cz8ubG9hZGVkICYmIGlzRXF1YWwocHJldmlvdXMuY29uZmlnLCBjb25maWcpID8gcHJldmlvdXMgOiB7XG4gICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICBsb2FkZWQ6IHRydWVcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGVudHJ5ICE9PSBwcmV2aW91cykge1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjb25maWdzW2V4dGVuc2lvbi5zbG90TmFtZV0pIHtcbiAgICAgICAgICAgIGNvbmZpZ3NbZXh0ZW5zaW9uLnNsb3ROYW1lXSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGNvbmZpZ3NbZXh0ZW5zaW9uLnNsb3ROYW1lXVtleHRlbnNpb24uZXh0ZW5zaW9uSWRdID0gZW50cnk7XG4gICAgICAgIGVudHJ5Q291bnQrKztcbiAgICB9XG4gICAgLy8gU2xvdHMga2VlcCB0aGVpciBpZGVudGl0eSB0b28gd2hlbiBub25lIG9mIHRoZWlyIGVudHJpZXMgY2hhbmdlZC4gU3Vic2NyaWJlcnMgY29tcGFyZSB0aGVzZVxuICAgIC8vIHBlci1zbG90IG9iamVjdHMgdG8gd29yayBvdXQgd2hpY2ggc2xvdHMgdG8gcmUtZGVyaXZlLCBzbyBoYW5kaW5nIG91dCBhIGZyZXNoIG9uZSBmb3IgZXZlcnlcbiAgICAvLyBzbG90IG9uIGV2ZXJ5IHdyaXRlIHdvdWxkIG1hcmsgZXZlcnkgc2xvdCB3aXRoIGEgbW91bnRlZCBleHRlbnNpb24gZGlydHkuXG4gICAgZm9yIChjb25zdCBbc2xvdE5hbWUsIHNsb3RDb25maWdzXSBvZiBPYmplY3QuZW50cmllcyhjb25maWdzKSl7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzU2xvdCA9IG9sZENvbmZpZ3Nbc2xvdE5hbWVdO1xuICAgICAgICBpZiAocHJldmlvdXNTbG90ICYmIE9iamVjdC5rZXlzKHByZXZpb3VzU2xvdCkubGVuZ3RoID09PSBPYmplY3Qua2V5cyhzbG90Q29uZmlncykubGVuZ3RoICYmIE9iamVjdC5lbnRyaWVzKHNsb3RDb25maWdzKS5ldmVyeSgoW2V4dGVuc2lvbklkLCBlbnRyeV0pPT5wcmV2aW91c1Nsb3RbZXh0ZW5zaW9uSWRdID09PSBlbnRyeSkpIHtcbiAgICAgICAgICAgIGNvbmZpZ3Nbc2xvdE5hbWVdID0gcHJldmlvdXNTbG90O1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICghY2hhbmdlZCkge1xuICAgICAgICAvLyBOb3RoaW5nIHdhcyBhZGRlZCBvciBhbHRlcmVkLCBidXQgYW4gZXh0ZW5zaW9uIG1heSBoYXZlIHVubW91bnRlZCwgd2hpY2ggb25seSBzaG93cyB1cCBhcyBhXG4gICAgICAgIC8vIG1pc3NpbmcgZW50cnkuXG4gICAgICAgIGNoYW5nZWQgPSBPYmplY3Qua2V5cyhvbGRDb25maWdzKS5sZW5ndGggIT09IE9iamVjdC5rZXlzKGNvbmZpZ3MpLmxlbmd0aCB8fCBPYmplY3QudmFsdWVzKG9sZENvbmZpZ3MpLnJlZHVjZSgodG90YWwsIHNsb3QpPT50b3RhbCArIE9iamVjdC5rZXlzKHNsb3QpLmxlbmd0aCwgMCkgIT09IGVudHJ5Q291bnQ7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgIGV4dGVuc2lvbnNDb25maWdTdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBjb25maWdzXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbi8qXG4gKiBBUElcbiAqXG4gKi8gLyoqXG4gKiBUaGlzIGRlZmluZXMgYSBjb25maWd1cmF0aW9uIHNjaGVtYSBmb3IgYSBtb2R1bGUuIFRoZSBzY2hlbWEgdGVsbHMgdGhlXG4gKiBjb25maWd1cmF0aW9uIHN5c3RlbSBob3cgdGhlIG1vZHVsZSBjYW4gYmUgY29uZmlndXJlZC4gSXQgc3BlY2lmaWVzXG4gKiB3aGF0IG1ha2VzIGNvbmZpZ3VyYXRpb24gdmFsaWQgb3IgaW52YWxpZC5cbiAqXG4gKiBTZWUgW0NvbmZpZ3VyYXRpb24gU3lzdGVtXShodHRwczovL28zLWRvY3Mub3Blbm1ycy5vcmcvZW4tVVMvZG9jcy9jb25maWd1cmF0aW9uLXN5c3RlbSlcbiAqIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGRlZmluaW5nIGEgY29uZmlnIHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlTmFtZSBOYW1lIG9mIHRoZSBtb2R1bGUgdGhlIHNjaGVtYSBpcyBiZWluZyBkZWZpbmVkIGZvci4gR2VuZXJhbGx5XG4gKiAgIHNob3VsZCBiZSB0aGUgb25lIGluIHdoaWNoIHRoZSBgZGVmaW5lQ29uZmlnU2NoZW1hYCBjYWxsIHRha2VzIHBsYWNlLlxuICogQHBhcmFtIHNjaGVtYSBUaGUgY29uZmlnIHNjaGVtYSBmb3IgdGhlIG1vZHVsZVxuICovIGV4cG9ydCBmdW5jdGlvbiBkZWZpbmVDb25maWdTY2hlbWEobW9kdWxlTmFtZSwgc2NoZW1hKSB7XG4gICAgdmFsaWRhdGVDb25maWdTY2hlbWEobW9kdWxlTmFtZSwgc2NoZW1hKTtcbiAgICBjb25zdCBlbmhhbmNlZFNjaGVtYSA9IG1lcmdlRGVlcFJlcGxhY2Uoc2NoZW1hLCBpbXBsaWNpdENvbmZpZ1NjaGVtYSk7XG4gICAgY29uZmlnSW50ZXJuYWxTdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBzY2hlbWFzOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUuc2NoZW1hcyxcbiAgICAgICAgICAgICAgICBbbW9kdWxlTmFtZV06IGVuaGFuY2VkU2NoZW1hXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbW9kdWxlTG9hZGVkOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUubW9kdWxlTG9hZGVkLFxuICAgICAgICAgICAgICAgIFttb2R1bGVOYW1lXTogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG59XG4vKipcbiAqIFRoaXMgYWxlcnRzIHRoZSBjb25maWd1cmF0aW9uIHN5c3RlbSB0aGF0IGEgbW9kdWxlIGV4aXN0cy4gVGhpcyBhbGxvd3MgY29uZmlnIHRvIGJlXG4gKiBwcm9jZXNzZWQsIHdoaWxlIHN0aWxsIGFsbG93aW5nIHRoZSBleHRlbnNpb24gc3lzdGVtIHRvIGtub3cgd2hldGhlciB0aGUgbW9kdWxlIGhhc1xuICogYWN0dWFsbHkgaGFkIGl0cyBmcm9udCBidW5kbGUgZXhlY3V0ZWQgeWV0LlxuICpcbiAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBlc20tYXBwLXNoZWxsLlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIG1vZHVsZU5hbWVcbiAqLyBleHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJNb2R1bGVXaXRoQ29uZmlnU3lzdGVtKG1vZHVsZU5hbWUpIHtcbiAgICBjb25maWdJbnRlcm5hbFN0b3JlLnNldFN0YXRlKChzdGF0ZSk9Pih7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIHNjaGVtYXM6IHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZS5zY2hlbWFzLFxuICAgICAgICAgICAgICAgIFttb2R1bGVOYW1lXTogaW1wbGljaXRDb25maWdTY2hlbWFcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xufVxuLyoqXG4gKiBUaGlzIGFsZXJ0cyB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0gdGhhdCBhIG1vZHVsZSBoYXMgYmVlbiBsb2FkZWQuXG4gKlxuICogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGluIGVzbS1hcHAtc2hlbGwuXG4gKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0gbW9kdWxlTmFtZVxuICovIGV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlck1vZHVsZUxvYWQobW9kdWxlTmFtZSkge1xuICAgIGNvbmZpZ0ludGVybmFsU3RvcmUuc2V0U3RhdGUoKHN0YXRlKT0+KHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgbW9kdWxlTG9hZGVkOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUubW9kdWxlTG9hZGVkLFxuICAgICAgICAgICAgICAgIFttb2R1bGVOYW1lXTogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG59XG4vKipcbiAqIFRoaXMgYWxsb3dzIHRoZSBjb25maWcgc3lzdGVtIHRvIHN1cHBvcnQgdHJhbnNsYXRpb24gb3ZlcnJpZGVzIGZvciBuYW1lc3BhY2VzIHRoYXRcbiAqIGRvIG5vdCBjb3JyZXNwb25kIHRvIG1vZHVsZXMuXG4gKlxuICogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGluIGVzbS1hcHAtc2hlbGwuXG4gKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0gbmFtZXNwYWNlXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyVHJhbnNsYXRpb25OYW1lc3BhY2UobmFtZXNwYWNlKSB7XG4gICAgY29uZmlnSW50ZXJuYWxTdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBzY2hlbWFzOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUuc2NoZW1hcyxcbiAgICAgICAgICAgICAgICBbbmFtZXNwYWNlXTogdHJhbnNsYXRpb25PdmVycmlkZXNTY2hlbWFcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xufVxuLyoqXG4gKiBUaGlzIGRlZmluZXMgYSBjb25maWd1cmF0aW9uIHNjaGVtYSBmb3IgYW4gZXh0ZW5zaW9uLiBXaGVuIGEgc2NoZW1hIGlzIGRlZmluZWRcbiAqIGZvciBhbiBleHRlbnNpb24sIHRoYXQgZXh0ZW5zaW9uIHdpbGwgcmVjZWl2ZSB0aGUgY29uZmlndXJhdGlvbiBjb3JyZXNwb25kaW5nXG4gKiB0byB0aGF0IHNjaGVtYSwgcmF0aGVyIHRoYW4gdGhlIGNvbmZpZ3VyYXRpb24gY29ycmVzcG9uZGluZyB0byB0aGUgbW9kdWxlXG4gKiBpbiB3aGljaCBpdCBpcyBkZWZpbmVkLlxuICpcbiAqIFRoZSBzY2hlbWEgdGVsbHMgdGhlIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGhvdyB0aGUgbW9kdWxlIGNhbiBiZSBjb25maWd1cmVkLlxuICogSXQgc3BlY2lmaWVzIHdoYXQgbWFrZXMgY29uZmlndXJhdGlvbiB2YWxpZCBvciBpbnZhbGlkLlxuICpcbiAqIFNlZSBbQ29uZmlndXJhdGlvbiBTeXN0ZW1dKGh0dHBzOi8vbzMtZG9jcy5vcGVubXJzLm9yZy9lbi1VUy9kb2NzL2NvbmZpZ3VyYXRpb24tc3lzdGVtKVxuICogZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgZGVmaW5pbmcgYSBjb25maWcgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBleHRlbnNpb25OYW1lIE5hbWUgb2YgdGhlIGV4dGVuc2lvbiB0aGUgc2NoZW1hIGlzIGJlaW5nIGRlZmluZWQgZm9yLlxuICogICBTaG91bGQgbWF0Y2ggdGhlIGBuYW1lYCBvZiBvbmUgb2YgdGhlIGBleHRlbnNpb25zYCBlbnRyaWVzIGRlZmluZWQgaW5cbiAqICAgdGhlIGFwcCdzIGByb3V0ZXMuanNvbmAgZmlsZS5cbiAqIEBwYXJhbSBzY2hlbWEgVGhlIGNvbmZpZyBzY2hlbWEgZm9yIHRoZSBleHRlbnNpb25cbiAqLyBleHBvcnQgZnVuY3Rpb24gZGVmaW5lRXh0ZW5zaW9uQ29uZmlnU2NoZW1hKGV4dGVuc2lvbk5hbWUsIHNjaGVtYSkge1xuICAgIHZhbGlkYXRlQ29uZmlnU2NoZW1hKGV4dGVuc2lvbk5hbWUsIHNjaGVtYSk7XG4gICAgY29uc3QgZW5oYW5jZWRTY2hlbWEgPSBtZXJnZURlZXBSZXBsYWNlKHNjaGVtYSwgaW1wbGljaXRDb25maWdTY2hlbWEpO1xuICAgIGNvbnN0IHN0YXRlID0gY29uZmlnSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGlmIChzdGF0ZS5zY2hlbWFzW2V4dGVuc2lvbk5hbWVdKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYENvbmZpZyBzY2hlbWEgZm9yIGV4dGVuc2lvbiAke2V4dGVuc2lvbk5hbWV9IGFscmVhZHkgZXhpc3RzLiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgZXh0ZW5zaW9ucyB3aXRoIHRoaXMgc2FtZSBuYW1lLCBvbmUgd2lsbCBwcm9iYWJseSBjcmFzaC5gKTtcbiAgICB9XG4gICAgY29uZmlnSW50ZXJuYWxTdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBzY2hlbWFzOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUuc2NoZW1hcyxcbiAgICAgICAgICAgICAgICBbZXh0ZW5zaW9uTmFtZV06IGVuaGFuY2VkU2NoZW1hXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgY29uZmlndXJhdGlvbiB2YWx1ZXMgcHJvZ3JhbW1hdGljYWxseS4gVGhpcyBpcyBhbiBhbHRlcm5hdGl2ZSB0b1xuICogcHJvdmlkaW5nIGNvbmZpZ3VyYXRpb24gdGhyb3VnaCB0aGUgY29uZmlnLWZpbGUuIENvbmZpZ3VyYXRpb24gcHJvdmlkZWQgdGhpc1xuICogd2F5IHdpbGwgYmUgbWVyZ2VkIHdpdGggY29uZmlndXJhdGlvbiBmcm9tIG90aGVyIHNvdXJjZXMuXG4gKlxuICogQHBhcmFtIGNvbmZpZyBBIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRvIG1lcmdlIGludG8gdGhlIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0gc291cmNlTmFtZSBBbiBvcHRpb25hbCBuYW1lIHRvIGlkZW50aWZ5IHRoZSBzb3VyY2Ugb2YgdGhpcyBjb25maWd1cmF0aW9uLFxuICogICB1c2VkIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuIERlZmF1bHRzIHRvICdwcm92aWRlZCcuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGUoY29uZmlnLCBzb3VyY2VOYW1lID0gJ3Byb3ZpZGVkJykge1xuICAgIGNvbmZpZ0ludGVybmFsU3RvcmUuc2V0U3RhdGUoKHN0YXRlKT0+KHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgcHJvdmlkZWRDb25maWdzOiBbXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUucHJvdmlkZWRDb25maWdzLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc291cmNlOiBzb3VyY2VOYW1lLFxuICAgICAgICAgICAgICAgICAgICBjb25maWdcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0pKTtcbn1cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBgc2VsZWN0KHN0YXRlKWAgYXMgc29vbiBhcyB0aGUgc3RvcmUncyBzdGF0ZSBzYXRpc2ZpZXMgYHJlYWR5YCwgbGVhdmluZyBub1xuICogc3Vic2NyaXB0aW9uIGJlaGluZDogbm90aGluZyBzdWJzY3JpYmVzIGF0IGFsbCB3aGVuIHRoZSBzdG9yZSBpcyBhbHJlYWR5IHJlYWR5LiBUaGF0IG1hdHRlcnNcbiAqIGJlY2F1c2UgYGdldENvbmZpZ2AgcnVucyBvbiBldmVyeSBIVFRQIHJlcXVlc3QsIGFuZCBhIHN1YnNjcmlwdGlvbiB0aGF0IG91dGxpdmVzIGl0cyBwcm9taXNlXG4gKiBib3RoIHJldGFpbnMgaXRzIGNsb3N1cmUgZm9yZXZlciBhbmQgc2xvd3MgZG93biBldmVyeSBsYXRlciB3cml0ZSB0byB0aGF0IHN0b3JlLlxuICovIGZ1bmN0aW9uIHdoZW5TdG9yZVJlYWR5KHN0b3JlLCByZWFkeSwgc2VsZWN0KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xuICAgICAgICBsZXQgdW5zdWJzY3JpYmU7XG4gICAgICAgIGxldCByZXNvbHZlZCA9IGZhbHNlO1xuICAgICAgICBmdW5jdGlvbiB1cGRhdGUoc3RhdGUpIHtcbiAgICAgICAgICAgIGlmICghcmVzb2x2ZWQgJiYgcmVhZHkoc3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoc2VsZWN0KHN0YXRlKSk7XG4gICAgICAgICAgICAgICAgdW5zdWJzY3JpYmU/LigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZShzdG9yZS5nZXRTdGF0ZSgpKTtcbiAgICAgICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgICAgICAgdW5zdWJzY3JpYmUgPSBzdG9yZS5zdWJzY3JpYmUodXBkYXRlKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuLyoqXG4gKiBBIHByb21pc2UtYmFzZWQgd2F5IHRvIGFjY2VzcyB0aGUgY29uZmlnIGFzIHNvb24gYXMgaXQgaXMgZnVsbHkgbG9hZGVkLlxuICogSWYgaXQgaXMgYWxyZWFkeSBsb2FkZWQsIHJlc29sdmVzIHRoZSBjb25maWcgaW4gaXRzIHByZXNlbnQgc3RhdGUuXG4gKlxuICogVGhpcyBpcyBhIHVzZWZ1bCBmdW5jdGlvbiBpZiB5b3UgbmVlZCB0byBnZXQgdGhlIGNvbmZpZyBpbiB0aGUgY291cnNlXG4gKiBvZiB0aGUgZXhlY3V0aW9uIG9mIGEgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIG1vZHVsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBmb3Igd2hpY2ggdG8gbG9vayB1cCB0aGUgY29uZmlnXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZyhtb2R1bGVOYW1lKSB7XG4gICAgcmV0dXJuIHdoZW5TdG9yZVJlYWR5KGdldENvbmZpZ1N0b3JlKG1vZHVsZU5hbWUpLCAoc3RhdGUpPT5Cb29sZWFuKHN0YXRlLmxvYWRlZCAmJiBzdGF0ZS5jb25maWcpLCAoc3RhdGUpPT5sb2Rhc2hPbWl0KHN0YXRlLmNvbmZpZywgW1xuICAgICAgICAgICAgJ0Rpc3BsYXkgY29uZGl0aW9ucycsXG4gICAgICAgICAgICAnVHJhbnNsYXRpb24gb3ZlcnJpZGVzJ1xuICAgICAgICBdKSk7XG59XG4vKipcbiAqIFJldHJpZXZlcyB0cmFuc2xhdGlvbiBvdmVycmlkZXMgZm9yIGFuIGV4dGVuc2lvbiwgb3B0aW9uYWxseSBzY29wZWQgdG8gYSBzcGVjaWZpY1xuICogZXh0ZW5zaW9uIHNsb3QuIFdoZW4gY2FsbGVkIHdpdGggb25seSBhIG1vZHVsZSBuYW1lLCByZXRyaWV2ZXMgbW9kdWxlLWxldmVsIG92ZXJyaWRlcy5cbiAqIFRyYW5zbGF0aW9uIG92ZXJyaWRlcyBhbGxvdyBjdXN0b21pemluZyB0cmFuc2xhdGVkIHN0cmluZ3Mgd2l0aG91dCBtb2RpZnlpbmcgdGhlXG4gKiBvcmlnaW5hbCB0cmFuc2xhdGlvbiBmaWxlcy5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHByb3ZpZGluZyB0aGUgdHJhbnNsYXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSBzbG90TmFtZSBPcHRpb25hbCBleHRlbnNpb24gc2xvdCBuYW1lIHRvIGluY2x1ZGUgc2xvdC1zcGVjaWZpYyBvdmVycmlkZXMuXG4gKiBAcGFyYW0gZXh0ZW5zaW9uSWQgT3B0aW9uYWwgZXh0ZW5zaW9uIElEIHRvIGluY2x1ZGUgZXh0ZW5zaW9uLXNwZWNpZmljIG92ZXJyaWRlcy5cbiAqIEByZXR1cm5zIEEgUHJvbWlzZSByZXNvbHZpbmcgdG8gYW4gYXJyYXkgb2YgdHJhbnNsYXRpb24gb3ZlcnJpZGUgb2JqZWN0cy5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNsYXRpb25PdmVycmlkZXMobW9kdWxlTmFtZSwgc2xvdE5hbWUsIGV4dGVuc2lvbklkKSB7XG4gICAgY29uc3QgcHJvbWlzZXMgPSBbXG4gICAgICAgIHdoZW5TdG9yZVJlYWR5KGdldENvbmZpZ1N0b3JlKG1vZHVsZU5hbWUpLCAoc3RhdGUpPT5Cb29sZWFuKHN0YXRlLnRyYW5zbGF0aW9uT3ZlcnJpZGVzTG9hZGVkICYmIHN0YXRlLmNvbmZpZyksIChzdGF0ZSk9PnN0YXRlLmNvbmZpZ1snVHJhbnNsYXRpb24gb3ZlcnJpZGVzJ10gPz8ge30pXG4gICAgXTtcbiAgICBpZiAoc2xvdE5hbWUgJiYgZXh0ZW5zaW9uSWQpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaCh3aGVuU3RvcmVSZWFkeShnZXRFeHRlbnNpb25Db25maWcoc2xvdE5hbWUsIGV4dGVuc2lvbklkKSwgKHN0YXRlKT0+Qm9vbGVhbihzdGF0ZS5sb2FkZWQgJiYgc3RhdGUuY29uZmlnKSwgKHN0YXRlKT0+c3RhdGUuY29uZmlnWydUcmFuc2xhdGlvbiBvdmVycmlkZXMnXSA/PyB7fSkpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufVxuLyoqXG4gKiBWYWxpZGF0ZSBhbmQgaW50ZXJwb2xhdGUgZGVmYXVsdHMgZm9yIGBwcm92aWRlZENvbmZpZ2AgYWNjb3JkaW5nIHRvIGBzY2hlbWFgXG4gKlxuICogQHBhcmFtIHNjaGVtYSAgYSBjb25maWd1cmF0aW9uIHNjaGVtYVxuICogQHBhcmFtIHByb3ZpZGVkQ29uZmlnICBhbiBvYmplY3Qgb2YgY29uZmlnIHZhbHVlcyAod2l0aG91dCB0aGUgdG9wLWxldmVsIG1vZHVsZSBuYW1lKVxuICogQHBhcmFtIGtleVBhdGhDb250ZXh0ICBhIGRvdC1zZXBhcmF0ZWQgc3RyaW5nIHdoaWNoIGhlbHBzIHRoZSB1c2VyIGZpZ3VyZSBvdXQgd2hlcmVcbiAqICAgICB0aGUgcHJvdmlkZWQgY29uZmlnIGNhbWUgZnJvbVxuICogQHJldHVybnMgVGhlIHZhbGlkYXRlZCBhbmQgcHJvY2Vzc2VkIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHdpdGggZGVmYXVsdHMgYXBwbGllZC5cbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzQ29uZmlnKHNjaGVtYSwgcHJvdmlkZWRDb25maWcsIGtleVBhdGhDb250ZXh0KSB7XG4gICAgdmFsaWRhdGVTdHJ1Y3R1cmUoc2NoZW1hLCBwcm92aWRlZENvbmZpZywga2V5UGF0aENvbnRleHQpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHNldERlZmF1bHRzKHNjaGVtYSwgcHJvdmlkZWRDb25maWcpO1xuICAgIHJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUoc2NoZW1hLCBjb25maWcsIGtleVBhdGhDb250ZXh0KTtcbiAgICByZXR1cm4gY29uZmlnO1xufVxuY29uc3QgZXh0ZW5zaW9uQ29uZmlnQ2FjaGUgPSBuZXcgTWFwKCk7XG4vKipcbiAqIFJldHVybnMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIGFuIGV4dGVuc2lvbi4gVGhpcyBjb25maWd1cmF0aW9uIGlzIHNwZWNpZmljXG4gKiB0byB0aGUgc2xvdCBpbiB3aGljaCBpdCBpcyBtb3VudGVkLCBhbmQgaXRzIElEIHdpdGhpbiB0aGF0IHNsb3QuXG4gKlxuICogVGhlIHNjaGVtYSBmb3IgdGhhdCBjb25maWd1cmF0aW9uIGlzIHRoZSBleHRlbnNpb24gc2NoZW1hLiBJZiBubyBleHRlbnNpb25cbiAqIHNjaGVtYSBoYXMgYmVlbiBwcm92aWRlZCwgdGhlIHNjaGVtYSB1c2VkIGlzIHRoZSBzY2hlbWEgb2YgdGhlIG1vZHVsZSBpblxuICogd2hpY2ggdGhlIGV4dGVuc2lvbiBpcyBkZWZpbmVkLlxuICpcbiAqIEBwYXJhbSBzbG90TW9kdWxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHdoaWNoIGRlZmluZXMgdGhlIGV4dGVuc2lvbiBzbG90XG4gKiBAcGFyYW0gZXh0ZW5zaW9uTW9kdWxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHdoaWNoIGRlZmluZXMgdGhlIGV4dGVuc2lvbiAoYW5kIHRoZXJlZm9yZSB0aGUgY29uZmlnIHNjaGVtYSlcbiAqIEBwYXJhbSBzbG90TmFtZSBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHNsb3Qgd2hlcmUgdGhlIGV4dGVuc2lvbiBpcyBtb3VudGVkXG4gKiBAcGFyYW0gZXh0ZW5zaW9uSWQgVGhlIElEIG9mIHRoZSBleHRlbnNpb24gaW4gaXRzIHNsb3RcbiAqLyBmdW5jdGlvbiBjb21wdXRlRXh0ZW5zaW9uQ29uZmlnKHNsb3RNb2R1bGVOYW1lLCBleHRlbnNpb25Nb2R1bGVOYW1lLCBzbG90TmFtZSwgZXh0ZW5zaW9uSWQsIGNvbmZpZ1N0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpIHtcbiAgICBjb25zdCBleHRlbnNpb25OYW1lID0gZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChleHRlbnNpb25JZCk7XG4gICAgY29uc3QgZXh0ZW5zaW9uQ29uZmlnU2NoZW1hID0gY29uZmlnU3RhdGUuc2NoZW1hc1tleHRlbnNpb25OYW1lXTtcbiAgICAvLyBKU09OIHN0cmluZyBvZiB0aGVzZSBlbGVtZW50cyBzaG91bGQgYmUgdW5pcXVlLXBlci1leHRlbnNpb25cbiAgICBjb25zdCBjYWNoZUtleSA9IEpTT04uc3RyaW5naWZ5KFtcbiAgICAgICAgc2xvdE5hbWUsXG4gICAgICAgIGV4dGVuc2lvbklkLFxuICAgICAgICBzbG90TW9kdWxlTmFtZSxcbiAgICAgICAgZXh0ZW5zaW9uTW9kdWxlTmFtZVxuICAgIF0pO1xuICAgIGNvbnN0IGNhY2hlZCA9IGV4dGVuc2lvbkNvbmZpZ0NhY2hlLmdldChjYWNoZUtleSk7XG4gICAgaWYgKGNhY2hlZCAmJiBjYWNoZWQuZXh0ZW5zaW9uU2NoZW1hID09PSBleHRlbnNpb25Db25maWdTY2hlbWEgJiYgY2FjaGVkLmV4dGVuc2lvbk1vZHVsZVNjaGVtYSA9PT0gY29uZmlnU3RhdGUuc2NoZW1hc1tleHRlbnNpb25Nb2R1bGVOYW1lXSAmJiBjYWNoZWQucHJvdmlkZWRDb25maWdzID09PSBjb25maWdTdGF0ZS5wcm92aWRlZENvbmZpZ3MgJiYgY2FjaGVkLnRlbXBvcmFyeUNvbmZpZyA9PT0gdGVtcENvbmZpZ1N0YXRlLmNvbmZpZykge1xuICAgICAgICByZXR1cm4gY2FjaGVkLmNvbmZpZztcbiAgICB9XG4gICAgY29uc3QgbmFtZU9mU2NoZW1hU291cmNlID0gZXh0ZW5zaW9uQ29uZmlnU2NoZW1hID8gZXh0ZW5zaW9uTmFtZSA6IGV4dGVuc2lvbk1vZHVsZU5hbWU7XG4gICAgY29uc3QgcHJvdmlkZWRDb25maWdzID0gZ2V0UHJvdmlkZWRDb25maWdzKGNvbmZpZ1N0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpO1xuICAgIGNvbnN0IHNsb3RNb2R1bGVDb25maWcgPSBtZXJnZUNvbmZpZ3NGb3Ioc2xvdE1vZHVsZU5hbWUsIHByb3ZpZGVkQ29uZmlncyk7XG4gICAgY29uc3QgY29uZmlnT3ZlcnJpZGUgPSBzbG90TW9kdWxlQ29uZmlnPy5leHRlbnNpb25TbG90cz8uW3Nsb3ROYW1lXT8uY29uZmlndXJlPy5bZXh0ZW5zaW9uSWRdID8/IHt9O1xuICAgIGNvbnN0IGV4dGVuc2lvbkNvbmZpZyA9IG1lcmdlQ29uZmlnc0ZvcihuYW1lT2ZTY2hlbWFTb3VyY2UsIHByb3ZpZGVkQ29uZmlncyk7XG4gICAgY29uc3QgY29tYmluZWRDb25maWcgPSBtZXJnZUNvbmZpZ3MoW1xuICAgICAgICBleHRlbnNpb25Db25maWcsXG4gICAgICAgIGNvbmZpZ092ZXJyaWRlXG4gICAgXSk7XG4gICAgY29uc3Qgc2NoZW1hID0gZXh0ZW5zaW9uQ29uZmlnU2NoZW1hID8/IGNvbmZpZ1N0YXRlLnNjaGVtYXNbZXh0ZW5zaW9uTW9kdWxlTmFtZV07XG4gICAgdmFsaWRhdGVTdHJ1Y3R1cmUoc2NoZW1hLCBjb21iaW5lZENvbmZpZywgbmFtZU9mU2NoZW1hU291cmNlKTtcbiAgICBjb25zdCBjb25maWcgPSBzZXREZWZhdWx0cyhzY2hlbWEsIGNvbWJpbmVkQ29uZmlnKTtcbiAgICBydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlKHNjaGVtYSwgY29uZmlnLCBuYW1lT2ZTY2hlbWFTb3VyY2UpO1xuICAgIGRlbGV0ZSBjb25maWcuZXh0ZW5zaW9uU2xvdHM7XG4gICAgZXh0ZW5zaW9uQ29uZmlnQ2FjaGUuc2V0KGNhY2hlS2V5LCB7XG4gICAgICAgIGV4dGVuc2lvblNjaGVtYTogZXh0ZW5zaW9uQ29uZmlnU2NoZW1hLFxuICAgICAgICBleHRlbnNpb25Nb2R1bGVTY2hlbWE6IGNvbmZpZ1N0YXRlLnNjaGVtYXNbZXh0ZW5zaW9uTW9kdWxlTmFtZV0sXG4gICAgICAgIHByb3ZpZGVkQ29uZmlnczogY29uZmlnU3RhdGUucHJvdmlkZWRDb25maWdzLFxuICAgICAgICB0ZW1wb3JhcnlDb25maWc6IHRlbXBDb25maWdTdGF0ZS5jb25maWcsXG4gICAgICAgIGNvbmZpZ1xuICAgIH0pO1xuICAgIHJldHVybiBjb25maWc7XG59XG5jb25zdCBpbXBsZW1lbnRlclRvb2xzTW9kdWxlQ2FjaGUgPSBuZXcgTWFwKCk7XG5mdW5jdGlvbiBnZXRJbXBsZW1lbnRlclRvb2xzQ29uZmlnKGNvbmZpZ1N0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpIHtcbiAgICBjb25zdCBhbm5vdGF0ZWRTY2hlbWFzID0gZ2V0QWxsU2NoZW1hc1dpdGhWYWx1ZXNBbmRTb3VyY2VzKGNvbmZpZ1N0YXRlLnNjaGVtYXMpO1xuICAgIGNvbnN0IGNvbmZpZ3NBbmRTb3VyY2VzID0gW1xuICAgICAgICAuLi5jb25maWdTdGF0ZS5wcm92aWRlZENvbmZpZ3MubWFwKChjKT0+W1xuICAgICAgICAgICAgICAgIGMuY29uZmlnLFxuICAgICAgICAgICAgICAgIGMuc291cmNlXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgW1xuICAgICAgICAgICAgdGVtcENvbmZpZ1N0YXRlLmNvbmZpZyxcbiAgICAgICAgICAgICd0ZW1wb3JhcnkgY29uZmlnJ1xuICAgICAgICBdXG4gICAgXTtcbiAgICAvLyBBIG1vZHVsZSBjYW4gYmUgY29uZmlndXJlZCB3aXRob3V0IGhhdmluZyBkZWNsYXJlZCBhIHNjaGVtYSwgc28gdGhlIG1vZHVsZSBsaXN0IGlzIHRoZSB1bmlvblxuICAgIC8vIG9mIGJvdGggcmF0aGVyIHRoYW4ganVzdCB0aGUgc2NoZW1hcy5cbiAgICBjb25zdCBtb2R1bGVOYW1lcyA9IG5ldyBTZXQoT2JqZWN0LmtleXMoYW5ub3RhdGVkU2NoZW1hcykpO1xuICAgIGZvciAoY29uc3QgW2NvbmZpZ10gb2YgY29uZmlnc0FuZFNvdXJjZXMpe1xuICAgICAgICBmb3IgKGNvbnN0IG1vZHVsZU5hbWUgb2YgT2JqZWN0LmtleXMoY29uZmlnKSl7XG4gICAgICAgICAgICBtb2R1bGVOYW1lcy5hZGQobW9kdWxlTmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBtb2R1bGVOYW1lIG9mIG1vZHVsZU5hbWVzKXtcbiAgICAgICAgY29uc3QgYW5ub3RhdGVkU2NoZW1hID0gYW5ub3RhdGVkU2NoZW1hc1ttb2R1bGVOYW1lXTtcbiAgICAgICAgY29uc3QgY29uZmlnU2xpY2VzID0gY29uZmlnc0FuZFNvdXJjZXMubWFwKChbY29uZmlnXSk9PmNvbmZpZ1ttb2R1bGVOYW1lXSk7XG4gICAgICAgIGNvbnN0IHNvdXJjZXMgPSBjb25maWdzQW5kU291cmNlcy5tYXAoKFssIHNvdXJjZV0pPT5zb3VyY2UpO1xuICAgICAgICBjb25zdCBjYWNoZWQgPSBpbXBsZW1lbnRlclRvb2xzTW9kdWxlQ2FjaGUuZ2V0KG1vZHVsZU5hbWUpO1xuICAgICAgICBpZiAoY2FjaGVkICYmIGNhY2hlZC5hbm5vdGF0ZWRTY2hlbWEgPT09IGFubm90YXRlZFNjaGVtYSAmJiBjYWNoZWQuY29uZmlnU2xpY2VzLmxlbmd0aCA9PT0gY29uZmlnU2xpY2VzLmxlbmd0aCAmJiBjYWNoZWQuY29uZmlnU2xpY2VzLmV2ZXJ5KChzbGljZSwgaSk9PnNsaWNlID09PSBjb25maWdTbGljZXNbaV0pICYmIGNhY2hlZC5zb3VyY2VzLmV2ZXJ5KChzb3VyY2UsIGkpPT5zb3VyY2UgPT09IHNvdXJjZXNbaV0pKSB7XG4gICAgICAgICAgICByZXN1bHRbbW9kdWxlTmFtZV0gPSBjYWNoZWQucmVzdWx0O1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG1lcmdlZCA9IGFubm90YXRlZFNjaGVtYSA/PyB7fTtcbiAgICAgICAgY29uZmlnc0FuZFNvdXJjZXMuZm9yRWFjaCgoWywgc291cmNlXSwgaSk9PntcbiAgICAgICAgICAgIGNvbnN0IHNsaWNlID0gY29uZmlnU2xpY2VzW2ldO1xuICAgICAgICAgICAgaWYgKHNsaWNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBtZXJnZWQgPSBtZXJnZURlZXBSZXBsYWNlKG1lcmdlZCwgY3JlYXRlVmFsdWVzQW5kU291cmNlc1RyZWUoc2xpY2UsIHNvdXJjZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaW1wbGVtZW50ZXJUb29sc01vZHVsZUNhY2hlLnNldChtb2R1bGVOYW1lLCB7XG4gICAgICAgICAgICBhbm5vdGF0ZWRTY2hlbWEsXG4gICAgICAgICAgICBjb25maWdTbGljZXMsXG4gICAgICAgICAgICBzb3VyY2VzLFxuICAgICAgICAgICAgcmVzdWx0OiBtZXJnZWRcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3VsdFttb2R1bGVOYW1lXSA9IG1lcmdlZDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogQ2FjaGluZyBwZXIgbW9kdWxlIGlzIHdoYXQgc3RvcHMgdGhlIHdhbGsgYmVpbmcgcXVhZHJhdGljOiBkZWZpbmluZyBvbmUgbW9kdWxlJ3Mgc2NoZW1hXG4gKiByZWNvbXB1dGVzIGV2ZXJ5IG1vZHVsZS5cbiAqXG4gKiBBIG1vZHVsZSB3aXRoIG5vIGNvbmZpZ3VyYXRpb24gb2YgaXRzIG93biBpcyBwdWJsaXNoZWQgc3RyYWlnaHQgZnJvbSB0aGlzIGNhY2hlLCBzbyBub3RoaW5nIG1heVxuICogbXV0YXRlIGEgdHJlZSBpdCByZWFkcyBvdXQgb2YgdGhlIGltcGxlbWVudGVyIHRvb2xzIGNvbmZpZyDigJQgaXQgaXMgdGhlIGNhY2hlIGVudHJ5LlxuICovIGNvbnN0IHNjaGVtYVZhbHVlc0FuZFNvdXJjZXNDYWNoZSA9IG5ldyBNYXAoKTtcbmZ1bmN0aW9uIGdldEFsbFNjaGVtYXNXaXRoVmFsdWVzQW5kU291cmNlcyhzY2hlbWFzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBbbW9kdWxlTmFtZSwgc2NoZW1hXSBvZiBPYmplY3QuZW50cmllcyhzY2hlbWFzKSl7XG4gICAgICAgIGNvbnN0IGNhY2hlZCA9IHNjaGVtYVZhbHVlc0FuZFNvdXJjZXNDYWNoZS5nZXQobW9kdWxlTmFtZSk7XG4gICAgICAgIGlmIChjYWNoZWQgJiYgY2FjaGVkLnNjaGVtYSA9PT0gc2NoZW1hKSB7XG4gICAgICAgICAgICByZXN1bHRbbW9kdWxlTmFtZV0gPSBjYWNoZWQuYW5ub3RhdGVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYW5ub3RhdGVkID0gZ2V0U2NoZW1hV2l0aFZhbHVlc0FuZFNvdXJjZXMoY2xvbmVEZWVwKHNjaGVtYSkpO1xuICAgICAgICAgICAgc2NoZW1hVmFsdWVzQW5kU291cmNlc0NhY2hlLnNldChtb2R1bGVOYW1lLCB7XG4gICAgICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgICAgIGFubm90YXRlZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXN1bHRbbW9kdWxlTmFtZV0gPSBhbm5vdGF0ZWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldFNjaGVtYVdpdGhWYWx1ZXNBbmRTb3VyY2VzKHNjaGVtYSkge1xuICAgIGlmIChzY2hlbWEuaGFzT3duUHJvcGVydHkoJ19kZWZhdWx0JykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnNjaGVtYSxcbiAgICAgICAgICAgIF92YWx1ZTogc2NoZW1hLl9kZWZhdWx0LFxuICAgICAgICAgICAgX3NvdXJjZTogJ2RlZmF1bHQnXG4gICAgICAgIH07XG4gICAgfSBlbHNlIGlmIChpc09yZGluYXJ5T2JqZWN0KHNjaGVtYSkpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHNjaGVtYSkucmVkdWNlKChvYmosIGtleSk9PntcbiAgICAgICAgICAgIG9ialtrZXldID0gZ2V0U2NoZW1hV2l0aFZhbHVlc0FuZFNvdXJjZXMoc2NoZW1hW2tleV0pO1xuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfSwge30pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGF0IHRoaXMgcG9pbnQsIHRoZSBzY2hlbWEgaXMgYmFkIGFuZCBhbiBlcnJvciB3aWxsIGhhdmUgYmVlbiBsb2dnZWQgZHVyaW5nIHNjaGVtYSB2YWxpZGF0aW9uXG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG59XG5mdW5jdGlvbiBjcmVhdGVWYWx1ZXNBbmRTb3VyY2VzVHJlZShjb25maWcsIHNvdXJjZSkge1xuICAgIGlmIChpc09yZGluYXJ5T2JqZWN0KGNvbmZpZykpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGNvbmZpZykucmVkdWNlKChvYmosIGtleSk9PntcbiAgICAgICAgICAgIG9ialtrZXldID0gY3JlYXRlVmFsdWVzQW5kU291cmNlc1RyZWUoY29uZmlnW2tleV0sIHNvdXJjZSk7XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9LCB7fSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIF92YWx1ZTogY29uZmlnLFxuICAgICAgICAgICAgX3NvdXJjZTogc291cmNlXG4gICAgICAgIH07XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ3MoY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSkge1xuICAgIGNvbnN0IGFsbENvbmZpZ3MgPSBtZXJnZUNvbmZpZ3MoZ2V0UHJvdmlkZWRDb25maWdzKGNvbmZpZ1N0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpKTtcbiAgICBjb25zdCBzbG90Q29uZmlnUGVyTW9kdWxlID0gT2JqZWN0LmtleXMoYWxsQ29uZmlncykucmVkdWNlKChvYmosIGtleSk9PntcbiAgICAgICAgaWYgKGFsbENvbmZpZ3Nba2V5XT8uZXh0ZW5zaW9uU2xvdHMpIHtcbiAgICAgICAgICAgIG9ialtrZXldID0gYWxsQ29uZmlnc1trZXldPy5leHRlbnNpb25TbG90cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH0sIHt9KTtcbiAgICB2YWxpZGF0ZUFsbEV4dGVuc2lvblNsb3RDb25maWdzKHNsb3RDb25maWdQZXJNb2R1bGUpO1xuICAgIGNvbnN0IHNsb3RDb25maWdzID0gT2JqZWN0LmtleXMoc2xvdENvbmZpZ1Blck1vZHVsZSkucmVkdWNlKChvYmosIGtleSk9PntcbiAgICAgICAgb2JqID0ge1xuICAgICAgICAgICAgLi4ub2JqLFxuICAgICAgICAgICAgLi4uc2xvdENvbmZpZ1Blck1vZHVsZVtrZXldXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfSwge30pO1xuICAgIHJldHVybiBzbG90Q29uZmlncztcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlQWxsRXh0ZW5zaW9uU2xvdENvbmZpZ3Moc2xvdENvbmZpZ1Blck1vZHVsZSkge1xuICAgIGZvciAobGV0IFttb2R1bGVOYW1lLCBjb25maWdCeVNsb3ROYW1lXSBvZiBPYmplY3QuZW50cmllcyhzbG90Q29uZmlnUGVyTW9kdWxlKSl7XG4gICAgICAgIGZvciAobGV0IFtzbG90TmFtZSwgY29uZmlnXSBvZiBPYmplY3QuZW50cmllcyhjb25maWdCeVNsb3ROYW1lKSl7XG4gICAgICAgICAgICB2YWxpZGF0ZUV4dGVuc2lvblNsb3RDb25maWcoY29uZmlnLCBtb2R1bGVOYW1lLCBzbG90TmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiB2YWxpZGF0ZUV4dGVuc2lvblNsb3RDb25maWcoY29uZmlnLCBtb2R1bGVOYW1lLCBzbG90TmFtZSkge1xuICAgIGNvbnN0IGtleVBhdGggPSBgJHttb2R1bGVOYW1lfS5leHRlbnNpb25TbG90cy4ke3Nsb3ROYW1lfWA7XG4gICAgY29uc3QgZXJyb3JQcmVmaXggPSBgRXh0ZW5zaW9uIHNsb3QgY29uZmlnICcke2tleVBhdGh9J2A7XG4gICAgY29uc3QgaW52YWxpZEtleXMgPSBPYmplY3Qua2V5cyhjb25maWcpLmZpbHRlcigoayk9PiFbXG4gICAgICAgICAgICAnYWRkJyxcbiAgICAgICAgICAgICdyZW1vdmUnLFxuICAgICAgICAgICAgJ29yZGVyJyxcbiAgICAgICAgICAgICdjb25maWd1cmUnXG4gICAgICAgIF0uaW5jbHVkZXMoaykpO1xuICAgIGlmIChpbnZhbGlkS2V5cy5sZW5ndGgpIHtcbiAgICAgICAgbG9nRXJyb3Ioa2V5UGF0aCwgZXJyb3JQcmVmaXggKyBgJyBjb250YWlucyBpbnZhbGlkIGtleXMgJyR7aW52YWxpZEtleXMuam9pbihcIicsICdcIil9J2ApO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmFkZCkge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29uZmlnLmFkZCkgfHwgIWNvbmZpZy5hZGQuZXZlcnkoKG4pPT50eXBlb2YgbiA9PT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgICBsb2dFcnJvcihrZXlQYXRoLCBlcnJvclByZWZpeCArIGAuYWRkJyBpcyBpbnZhbGlkLiBNdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3MgKGV4dGVuc2lvbiBJRHMpYCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvbmZpZy5yZW1vdmUpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbmZpZy5yZW1vdmUpIHx8ICFjb25maWcucmVtb3ZlLmV2ZXJ5KChuKT0+dHlwZW9mIG4gPT09ICdzdHJpbmcnKSkge1xuICAgICAgICAgICAgbG9nRXJyb3Ioa2V5UGF0aCwgZXJyb3JQcmVmaXggKyBgLnJlbW92ZScgaXMgaW52YWxpZC4gTXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzIChleHRlbnNpb24gSURzKWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjb25maWcub3JkZXIpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbmZpZy5vcmRlcikgfHwgIWNvbmZpZy5vcmRlci5ldmVyeSgobik9PnR5cGVvZiBuID09PSAnc3RyaW5nJykpIHtcbiAgICAgICAgICAgIGxvZ0Vycm9yKGtleVBhdGgsIGVycm9yUHJlZml4ICsgYC5vcmRlcicgaXMgaW52YWxpZC4gTXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzIChleHRlbnNpb24gSURzKWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjb25maWcuY29uZmlndXJlKSB7XG4gICAgICAgIGlmICghaXNPcmRpbmFyeU9iamVjdChjb25maWcuY29uZmlndXJlKSkge1xuICAgICAgICAgICAgbG9nRXJyb3Ioa2V5UGF0aCwgZXJyb3JQcmVmaXggKyBgLmNvbmZpZ3VyZScgaXMgaW52YWxpZC4gTXVzdCBiZSBhbiBvYmplY3Qgd2l0aCBleHRlbnNpb24gSURzIGZvciBrZXlzYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBnZXRQcm92aWRlZENvbmZpZ3MoY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSkge1xuICAgIHJldHVybiBbXG4gICAgICAgIC4uLmNvbmZpZ1N0YXRlLnByb3ZpZGVkQ29uZmlncy5tYXAoKGMpPT5jLmNvbmZpZyksXG4gICAgICAgIHRlbXBDb25maWdTdGF0ZS5jb25maWdcbiAgICBdO1xufVxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIGNvbmZpZyBzY2hlbWEgZm9yIGEgbW9kdWxlLiBTaW5jZSBwcm9ibGVtcyBpZGVudGlmaWVkIGhlcmUgYXJlIHByb2dyYW1taW5nIGVycm9yc1xuICogdGhhdCBob3BlZnVsbHkgd2lsbCBiZSBjYXVnaHQgZHVyaW5nIGRldmVsb3BtZW50LCB0aGlzIGZ1bmN0aW9uIGxvZ3MgZXJyb3JzIHRvIHRoZSBjb25zb2xlIGRpcmVjdGx5O1xuICogaXQncyBmaW5lIGlmIHdlIHNwYW0gdGhlIHVzZXIgd2l0aCB0aGVzZSBlcnJvcnMuXG4gKi8gZnVuY3Rpb24gdmFsaWRhdGVDb25maWdTY2hlbWEobW9kdWxlTmFtZSwgc2NoZW1hLCBrZXlQYXRoID0gJycpIHtcbiAgICBjb25zdCB1cGRhdGVNZXNzYWdlID0gYFBsZWFzZSB2ZXJpZnkgdGhhdCB5b3UgYXJlIHJ1bm5pbmcgdGhlIGxhdGVzdCB2ZXJzaW9uIGFuZCwgaWYgc28sIGFsZXJ0IHRoZSBtYWludGFpbmVyLmA7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoc2NoZW1hKS5maWx0ZXIoKGspPT4hay5zdGFydHNXaXRoKCdfJykpKXtcbiAgICAgICAgY29uc3QgdGhpc0tleVBhdGggPSBrZXlQYXRoICsgKGtleVBhdGggJiYgJy4nKSArIGtleTtcbiAgICAgICAgY29uc3Qgc2NoZW1hUGFydCA9IHNjaGVtYVtrZXldO1xuICAgICAgICBpZiAodGhpc0tleVBhdGggPT09ICdEaXNwbGF5IGNvbmRpdGlvbnMnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke21vZHVsZU5hbWV9IGRlY2xhcmVzIGEgY29uZmlndXJhdGlvbiBvcHRpb24gY2FsbGVkIFwiRGlzcGxheSBjb25kaXRpb25zXCI7IHRoZSBcIkRpc3BsYXkgY29uZGl0aW9uc1wiIG9wdGlvbiBpcyBhIHJlc2VydmVkIG5hbWUuICR7dXBkYXRlTWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpc0tleVBhdGggPT09ICdUcmFuc2xhdGlvbiBvdmVycmlkZXMnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke21vZHVsZU5hbWV9IGRlY2xhcmVzIGEgY29uZmlndXJhdGlvbiBvcHRpb24gY2FsbGVkIFwiVHJhbnNsYXRpb24gb3ZlcnJpZGVzXCI7IHRoZSBcIlRyYW5zbGF0aW9uIG92ZXJyaWRlc1wiIG9wdGlvbiBpcyBhIHJlc2VydmVkIG5hbWUuICR7dXBkYXRlTWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzT3JkaW5hcnlPYmplY3Qoc2NoZW1hUGFydCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7bW9kdWxlTmFtZX0gaGFzIGJhZCBjb25maWcgc2NoZW1hIGRlZmluaXRpb24gZm9yIGtleSAnJHt0aGlzS2V5UGF0aH0nLiAke3VwZGF0ZU1lc3NhZ2V9YCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNjaGVtYVBhcnQuaGFzT3duUHJvcGVydHkoJ19kZWZhdWx0JykpIHtcbiAgICAgICAgICAgIC8vIHJlY3Vyc2UgZm9yIG5lc3RlZCBjb25maWcga2V5c1xuICAgICAgICAgICAgdmFsaWRhdGVDb25maWdTY2hlbWEobW9kdWxlTmFtZSwgc2NoZW1hUGFydCwgdGhpc0tleVBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gc2NoZW1hUGFydC5fZWxlbWVudHM7XG4gICAgICAgIGlmIChoYXNPYmplY3RTY2hlbWEoZWxlbWVudHMpKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZUNvbmZpZ1NjaGVtYShtb2R1bGVOYW1lLCBlbGVtZW50cywgdGhpc0tleVBhdGggKyAnLl9lbGVtZW50cycpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzY2hlbWFQYXJ0Ll92YWxpZGF0b3JzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCB2YWxpZGF0b3Igb2Ygc2NoZW1hUGFydC5fdmFsaWRhdG9ycyl7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgJHttb2R1bGVOYW1lfSBoYXMgaW52YWxpZCB2YWxpZGF0b3IgZm9yIGtleSAnJHt0aGlzS2V5UGF0aH0nICR7dXBkYXRlTWVzc2FnZX0uYCArIGBcXG5cXG5JZiB5b3UncmUgdGhlIG1haW50YWluZXI6IHZhbGlkYXRvcnMgbXVzdCBiZSBmdW5jdGlvbnMgdGhhdCByZXR1cm4gZWl0aGVyIGAgKyBgdW5kZWZpbmVkIG9yIGFuIGVycm9yIHN0cmluZy4gUmVjZWl2ZWQgJHt2YWxpZGF0b3J9LmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZVR5cGUgPSBzY2hlbWFQYXJ0Ll90eXBlO1xuICAgICAgICBpZiAodmFsdWVUeXBlICYmICFPYmplY3QudmFsdWVzKFR5cGUpLmluY2x1ZGVzKHZhbHVlVHlwZSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7bW9kdWxlTmFtZX0gaGFzIGludmFsaWQgdHlwZSBmb3Iga2V5ICcke3RoaXNLZXlQYXRofScgJHt1cGRhdGVNZXNzYWdlfS5gICsgYFxcblxcbklmIHlvdSdyZSB0aGUgbWFpbnRhaW5lcjogdGhlIGFsbG93ZWQgdHlwZXMgYXJlICR7T2JqZWN0LnZhbHVlcyhUeXBlKS5qb2luKCcsICcpfS4gYCArIGBSZWNlaXZlZCAnJHt2YWx1ZVR5cGV9J2ApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhzY2hlbWFQYXJ0KS5ldmVyeSgoayk9PltcbiAgICAgICAgICAgICAgICAnX2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgICAnX3ZhbGlkYXRvcnMnLFxuICAgICAgICAgICAgICAgICdfZWxlbWVudHMnLFxuICAgICAgICAgICAgICAgICdfdHlwZSdcbiAgICAgICAgICAgIF0uaW5jbHVkZXMoaykpICYmICFrZXlQYXRoLmluY2x1ZGVzKCcuX2VsZW1lbnRzJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7bW9kdWxlTmFtZX0gaGFzIGJhZCBjb25maWcgc2NoZW1hIGRlZmluaXRpb24gZm9yIGtleSAnJHt0aGlzS2V5UGF0aH0nLiAke3VwZGF0ZU1lc3NhZ2V9LmAgKyBgXFxuXFxuSWYgeW91J3JlIHRoZSBtYWludGFpbmVyOiBhbGwgY29uZmlnIGVsZW1lbnRzIG11c3QgaGF2ZSBhIGRlZmF1bHQuIGAgKyBgUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShzY2hlbWFQYXJ0KX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudHMgJiYgdmFsdWVUeXBlICYmICFbXG4gICAgICAgICAgICBUeXBlLkFycmF5LFxuICAgICAgICAgICAgVHlwZS5PYmplY3RcbiAgICAgICAgXS5pbmNsdWRlcyh2YWx1ZVR5cGUpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke21vZHVsZU5hbWV9IGhhcyBiYWQgY29uZmlnIHNjaGVtYSBkZWZpbml0aW9uIGZvciBrZXkgJyR7dGhpc0tleVBhdGh9Jy4gJHt1cGRhdGVNZXNzYWdlfS5gICsgYFxcblxcbklmIHlvdSdyZSB0aGUgbWFpbnRhaW5lcjogdGhlICdlbGVtZW50cycga2V5IG9ubHkgd29ya3Mgd2l0aCAnX3R5cGUnIGVxdWFsIHRvICdBcnJheScgb3IgJ09iamVjdCcuIGAgKyBgUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeSh2YWx1ZVR5cGUpfWApO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0Q29uZmlnRm9yTW9kdWxlKG1vZHVsZU5hbWUsIGNvbmZpZ1N0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpIHtcbiAgICBjb25zdCBzY2hlbWEgPSBjb25maWdTdGF0ZS5zY2hlbWFzW21vZHVsZU5hbWVdO1xuICAgIGNvbnN0IGlucHV0Q29uZmlnID0gbWVyZ2VDb25maWdzRm9yKG1vZHVsZU5hbWUsIGdldFByb3ZpZGVkQ29uZmlncyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSk7XG4gICAgdmFsaWRhdGVTdHJ1Y3R1cmUoc2NoZW1hLCBpbnB1dENvbmZpZywgbW9kdWxlTmFtZSk7XG4gICAgY29uc3QgY29uZmlnID0gc2V0RGVmYXVsdHMoc2NoZW1hLCBpbnB1dENvbmZpZyk7XG4gICAgcnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZShzY2hlbWEsIGNvbmZpZywgbW9kdWxlTmFtZSk7XG4gICAgZGVsZXRlIGNvbmZpZy5leHRlbnNpb25TbG90cztcbiAgICByZXR1cm4gY29uZmlnO1xufVxuZnVuY3Rpb24gZ2V0Q29uZmlnRm9yTW9kdWxlSW1wbGljaXRTY2hlbWEobW9kdWxlTmFtZSwgY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSkge1xuICAgIGNvbnN0IGlucHV0Q29uZmlnID0gbWVyZ2VDb25maWdzRm9yKG1vZHVsZU5hbWUsIGdldFByb3ZpZGVkQ29uZmlncyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSk7XG4gICAgY29uc3QgY29uZmlnID0gc2V0RGVmYXVsdHMoaW1wbGljaXRDb25maWdTY2hlbWEsIGlucHV0Q29uZmlnKTtcbiAgICBydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlKGltcGxpY2l0Q29uZmlnU2NoZW1hLCBjb25maWcsIG1vZHVsZU5hbWUpO1xuICAgIGRlbGV0ZSBjb25maWcuZXh0ZW5zaW9uU2xvdHM7XG4gICAgcmV0dXJuIGNvbmZpZztcbn1cbmZ1bmN0aW9uIG1lcmdlQ29uZmlnc0Zvcihtb2R1bGVOYW1lLCBhbGxDb25maWdzKSB7XG4gICAgY29uc3QgYWxsQ29uZmlnc0Zvck1vZHVsZSA9IGFsbENvbmZpZ3MubWFwKCh7IFttb2R1bGVOYW1lXTogYyB9KT0+YykuZmlsdGVyKChjKT0+ISFjKTtcbiAgICByZXR1cm4gbWVyZ2VDb25maWdzKGFsbENvbmZpZ3NGb3JNb2R1bGUpO1xufVxuZnVuY3Rpb24gbWVyZ2VDb25maWdzKGNvbmZpZ3MpIHtcbiAgICByZXR1cm4gY29uZmlncy5yZWR1Y2UoKGFjYywgY29uZmlnKT0+bWVyZ2VEZWVwUmVwbGFjZShhY2MsIGNvbmZpZyksIHt9KTtcbn1cbi8qKlxuICogUmVjdXJzaXZlbHkgY2hlY2sgdGhlIHByb3ZpZGVkIGNvbmZpZyB0cmVlIHRvIG1ha2Ugc3VyZSB0aGF0IGFsbFxuICogb2YgdGhlIHByb3ZpZGVkIHByb3BlcnRpZXMgZXhpc3QgaW4gdGhlIHNjaGVtYSwgYW5kIHRoYXQgdHlwZXMgYXJlXG4gKiBjb3JyZWN0LiBEb2VzIG5vdCBydW4gdmFsaWRhdG9ycyB5ZXQsIHNpbmNlIHRob3NlIHdpbGwgYmUgcnVuIG9uXG4gKiB0aGUgY29uZmlnIHdpdGggdGhlIGRlZmF1bHRzIGZpbGxlZCBpbi5cbiAqLyBmdW5jdGlvbiB2YWxpZGF0ZVN0cnVjdHVyZShzY2hlbWEsIGNvbmZpZywga2V5UGF0aCA9ICcnKSB7XG4gICAgLy8gdmFsaWRhdGUgZWFjaCBjb25zdGl0dWVudCBlbGVtZW50XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY29uZmlnKSl7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gY29uZmlnW2tleV07XG4gICAgICAgIGNvbnN0IHRoaXNLZXlQYXRoID0ga2V5UGF0aCArICcuJyArIGtleTtcbiAgICAgICAgY29uc3Qgc2NoZW1hUGFydCA9IHNjaGVtYVtrZXldO1xuICAgICAgICBpZiAoIXNjaGVtYS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICBpZiAoIShrZXkgPT09ICdleHRlbnNpb25TbG90cycgJiYga2V5UGF0aCAhPT0gJycpKSB7XG4gICAgICAgICAgICAgICAgbG9nRXJyb3IodGhpc0tleVBhdGgsIGBVbmtub3duIGNvbmZpZyBrZXkgJyR7dGhpc0tleVBhdGh9JyBwcm92aWRlZC4gSWdub3JpbmcuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YWxpZGF0ZUJyYW5jaFN0cnVjdHVyZShzY2hlbWFQYXJ0LCB2YWx1ZSwgdGhpc0tleVBhdGgpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHZhbGlkYXRlQnJhbmNoU3RydWN0dXJlKHNjaGVtYVBhcnQsIHZhbHVlLCBrZXlQYXRoKSB7XG4gICAgY2hlY2tUeXBlKGtleVBhdGgsIHNjaGVtYVBhcnQuX3R5cGUsIHZhbHVlKTtcbiAgICBpZiAoaXNPcmRpbmFyeU9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgaWYgKHNjaGVtYVBhcnQuX3R5cGUgPT09IFR5cGUuT2JqZWN0KSB7XG4gICAgICAgICAgICAvLyB2YWxpZGF0ZSBhcyBmcmVlZm9ybSBvYmplY3RcbiAgICAgICAgICAgIHZhbGlkYXRlRnJlZWZvcm1PYmplY3RTdHJ1Y3R1cmUoc2NoZW1hUGFydCwgdmFsdWUsIGtleVBhdGgpO1xuICAgICAgICB9IGVsc2UgaWYgKCEoc2NoZW1hUGFydC5oYXNPd25Qcm9wZXJ0eSgnX2RlZmF1bHQnKSB8fCBzY2hlbWFQYXJ0Lmhhc093blByb3BlcnR5KCdfdHlwZScpKSkge1xuICAgICAgICAgICAgLy8gdmFsaWRhdGUgYXMgbm9ybWFsIG5lc3RlZCBjb25maWdcbiAgICAgICAgICAgIHZhbGlkYXRlU3RydWN0dXJlKHNjaGVtYVBhcnQsIHZhbHVlLCBrZXlQYXRoKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzY2hlbWFQYXJ0Ll90eXBlID09PSBUeXBlLkFycmF5KSB7XG4gICAgICAgICAgICB2YWxpZGF0ZUFycmF5U3RydWN0dXJlKHNjaGVtYVBhcnQsIHZhbHVlLCBrZXlQYXRoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHZhbGlkYXRlRnJlZWZvcm1PYmplY3RTdHJ1Y3R1cmUoZnJlZWZvcm1PYmplY3RTY2hlbWEsIGNvbmZpZywga2V5UGF0aCkge1xuICAgIGlmIChmcmVlZm9ybU9iamVjdFNjaGVtYS5fZWxlbWVudHMpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY29uZmlnKSl7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbmZpZ1trZXldO1xuICAgICAgICAgICAgdmFsaWRhdGVCcmFuY2hTdHJ1Y3R1cmUoZnJlZWZvcm1PYmplY3RTY2hlbWEuX2VsZW1lbnRzLCB2YWx1ZSwgYCR7a2V5UGF0aH0uJHtrZXl9YCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiB2YWxpZGF0ZUFycmF5U3RydWN0dXJlKGFycmF5U2NoZW1hLCB2YWx1ZSwga2V5UGF0aCkge1xuICAgIGNvbnN0IHZhbGlkYXRlZEFzQXJyYXkgPSBjaGVja1R5cGUoa2V5UGF0aCwgVHlwZS5BcnJheSwgdmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGVkQXNBcnJheSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGlmIHRoZXJlIGlzIGFuIGFycmF5IGVsZW1lbnQgb2JqZWN0IHNjaGVtYSwgdmVyaWZ5IHRoYXQgZWxlbWVudHMgbWF0Y2ggaXRcbiAgICBpZiAoaGFzT2JqZWN0U2NoZW1hKGFycmF5U2NoZW1hLl9lbGVtZW50cykpIHtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIHZhbGlkYXRlQnJhbmNoU3RydWN0dXJlKGFycmF5U2NoZW1hLl9lbGVtZW50cywgdmFsdWVbaV0sIGAke2tleVBhdGh9WyR7aX1dYCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgY2hlY2tUeXBlKGAke2tleVBhdGh9WyR7aX1dYCwgYXJyYXlTY2hlbWEuX2VsZW1lbnRzPy5fdHlwZSwgdmFsdWVbaV0pO1xuICAgIH1cbn1cbi8qKlxuICogUnVuIGFsbCB0aGUgdmFsaWRhdG9ycyBpbiB0aGUgY29uZmlnIHRyZWUuIFRoaXMgc2hvdWxkIGJlIHJ1blxuICogb24gdGhlIGNvbmZpZyBvYmplY3QgYWZ0ZXIgaXQgaGFzIGJlZW4gZmlsbGVkIGluIHdpdGggYWxsIHRoZSBkZWZhdWx0cywgc2luY2VcbiAqIGhpZ2hlci1sZXZlbCB2YWxpZGF0b3JzIG1heSByZWZlciB0byBkZWZhdWx0IHZhbHVlcy5cbiAqLyBmdW5jdGlvbiBydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlKHNjaGVtYSwgY29uZmlnLCBrZXlQYXRoID0gJycpIHtcbiAgICAvLyBJZiBgIXNjaGVtYWAsIHRoZXJlIHNob3VsZCBoYXZlIGJlZW4gYSBzdHJ1Y3R1cmFsIHZhbGlkYXRpb24gZXJyb3IgcHJpbnRlZCBhbHJlYWR5LlxuICAgIGlmIChzY2hlbWEpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPT0gc2NoZW1hLl9kZWZhdWx0KSB7XG4gICAgICAgICAgICBydW5WYWxpZGF0b3JzKGtleVBhdGgsIHNjaGVtYS5fdmFsaWRhdG9ycywgY29uZmlnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNPcmRpbmFyeU9iamVjdChjb25maWcpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb25maWcpKXtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbmZpZ1trZXldO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoaXNLZXlQYXRoID0ga2V5UGF0aCArICcuJyArIGtleTtcbiAgICAgICAgICAgICAgICBjb25zdCBzY2hlbWFQYXJ0ID0gc2NoZW1hW2tleV07XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYS5fdHlwZSA9PT0gVHlwZS5PYmplY3QgJiYgc2NoZW1hLl9lbGVtZW50cykge1xuICAgICAgICAgICAgICAgICAgICBydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlKHNjaGVtYS5fZWxlbWVudHMsIHZhbHVlLCB0aGlzS2V5UGF0aCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZShzY2hlbWFQYXJ0LCB2YWx1ZSwgdGhpc0tleVBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZykgJiYgc2NoZW1hLl9lbGVtZW50cykge1xuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGNvbmZpZy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICAgICAgcnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZShzY2hlbWEuX2VsZW1lbnRzLCBjb25maWdbaV0sIGAke2tleVBhdGh9WyR7aX1dYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIFJ1biB0eXBlIHZhbGlkYXRpb24gZm9yIHRoZSB2YWx1ZSwgbG9nZ2luZyBhbnkgZXJyb3JzLlxuICogQHJldHVybnMgdHJ1ZSBpZiB2YWxpZGF0aW9uIHBhc3NlcywgZmFsc2Ugb3RoZXJ3aXNlXG4gKi8gZnVuY3Rpb24gY2hlY2tUeXBlKGtleVBhdGgsIF90eXBlLCB2YWx1ZSkge1xuICAgIGlmIChfdHlwZSkge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3IgPSB7XG4gICAgICAgICAgICBBcnJheTogaXNBcnJheSxcbiAgICAgICAgICAgIEJvb2xlYW46IGlzQm9vbGVhbixcbiAgICAgICAgICAgIENvbmNlcHRVdWlkOiBpc1V1aWQsXG4gICAgICAgICAgICBOdW1iZXI6IGlzTnVtYmVyLFxuICAgICAgICAgICAgT2JqZWN0OiBpc09iamVjdCxcbiAgICAgICAgICAgIFN0cmluZzogaXNTdHJpbmcsXG4gICAgICAgICAgICBVVUlEOiBpc1V1aWQsXG4gICAgICAgICAgICBQZXJzb25BdHRyaWJ1dGVUeXBlVXVpZDogaXNVdWlkLFxuICAgICAgICAgICAgUGF0aWVudElkZW50aWZpZXJUeXBlVXVpZDogaXNVdWlkXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBydW5WYWxpZGF0b3JzKGtleVBhdGgsIFtcbiAgICAgICAgICAgIHZhbGlkYXRvcltfdHlwZV1cbiAgICAgICAgXSwgdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbi8qKlxuICogUnVucyB2YWxpZGF0b3JzLCBsb2dnaW5nIGVycm9ycy5cbiAqIEByZXR1cm5zIHRydWUgaWYgYWxsIHBhc3MsIGZhbHNlIG90aGVyd2lzZS5cbiAqLyBmdW5jdGlvbiBydW5WYWxpZGF0b3JzKGtleVBhdGgsIHZhbGlkYXRvcnMsIHZhbHVlKSB7XG4gICAgbGV0IHJldHVyblZhbHVlID0gdHJ1ZTtcbiAgICBpZiAodmFsaWRhdG9ycykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yIChsZXQgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpe1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvclJlc3VsdCA9IHZhbGlkYXRvcih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0b3JSZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gYEludmFsaWQgY29uZmlndXJhdGlvbiBmb3IgJHtrZXlQYXRofTogJHt2YWxpZGF0b3JSZXN1bHR9YCA6IGBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gdmFsdWUgJHt2YWx1ZX0gZm9yICR7a2V5UGF0aH06ICR7dmFsaWRhdG9yUmVzdWx0fWA7XG4gICAgICAgICAgICAgICAgICAgIGxvZ0Vycm9yKGtleVBhdGgsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgU2tpcHBpbmcgaW52YWxpZCB2YWxpZGF0b3IgYXQgXCIke2tleVBhdGh9XCIuIEVuY291bnRlcmVkIGVycm9yXFxuXFx0JHtlfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcbn1cbi8vIFJlY3Vyc2l2ZWx5IGZpbGwgaW4gdGhlIGNvbmZpZyB3aXRoIHZhbHVlcyBmcm9tIHRoZSBzY2hlbWEuXG5jb25zdCBzZXREZWZhdWx0cyA9IChzY2hlbWEsIGlucHV0Q29uZmlnKT0+e1xuICAgIGNvbnN0IGNvbmZpZyA9IHN0cnVjdHVyZWRDbG9uZShpbnB1dENvbmZpZyk7XG4gICAgaWYgKCFzY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoc2NoZW1hKSl7XG4gICAgICAgIGNvbnN0IGNvbmZpZ1BhcnQgPSBjb25maWdba2V5XTtcbiAgICAgICAgY29uc3Qgc2NoZW1hUGFydCA9IHNjaGVtYVtrZXldO1xuICAgICAgICAvLyBUaGUgYHNjaGVtYVBhcnQgJiZgIGNsYXVzZSBvZiB0aGlzIGBpZmAgc3RhdGVtZW50IHdpbGwgb25seSBmYWlsXG4gICAgICAgIC8vIGlmIHRoZSBzY2hlbWEgaXMgdmVyeSBpbnZhbGlkLiBJdCBpcyB0aGVyZSB0byBwcmV2ZW50IHRoZSBhcHAgZnJvbVxuICAgICAgICAvLyBjcmFzaGluZyBjb21wbGV0ZWx5LCB0aG91Z2ggaXQgd2lsbCBwcm9kdWNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG4gICAgICAgIC8vIElmIHRoaXMgaGFwcGVucywgdGhlcmUgc2hvdWxkIGJlIGxlZ2libGUgZXJyb3JzIGluIHRoZSBjb25zb2xlIGZyb21cbiAgICAgICAgLy8gdGhlIHNjaGVtYSB2YWxpZGF0b3IuXG4gICAgICAgIGlmIChzY2hlbWFQYXJ0ICYmIChzY2hlbWFQYXJ0Lmhhc093blByb3BlcnR5KCdfdHlwZScpIHx8IHNjaGVtYVBhcnQuaGFzT3duUHJvcGVydHkoJ19kZWZhdWx0JykpKSB7XG4gICAgICAgICAgICAvLyBXZSBhc3N1bWUgdGhhdCBzY2hlbWFQYXJ0IGRlZmluZXMgYSBjb25maWcgdmFsdWUsIHNpbmNlIGl0IGhhc1xuICAgICAgICAgICAgLy8gYSBwcm9wZXJ0eSBgX3R5cGVgIG9yIGBfZGVmYXVsdGAuXG4gICAgICAgICAgICBpZiAoIWNvbmZpZy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnW2tleV0gPSBzY2hlbWFQYXJ0WydfZGVmYXVsdCddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gV2UgYWxzbyBjaGVjayBpZiBpdCBpcyBhbiBvYmplY3Qgb3IgYXJyYXkgd2l0aCBvYmplY3QgZWxlbWVudHMsIGluIHdoaWNoIGNhc2Ugd2UgcmVjdXJzZVxuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBzY2hlbWFQYXJ0Ll9lbGVtZW50cztcbiAgICAgICAgICAgIGlmIChjb25maWdQYXJ0ICYmIGhhc09iamVjdFNjaGVtYShlbGVtZW50cykpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hUGFydC5fdHlwZSA9PT0gVHlwZS5BcnJheSAmJiBBcnJheS5pc0FycmF5KGNvbmZpZ1BhcnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZ1dpdGhEZWZhdWx0cyA9IGNvbmZpZ1BhcnQubWFwKChjb25mKT0+c2V0RGVmYXVsdHMoZWxlbWVudHMsIGNvbmYpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnW2tleV0gPSBjb25maWdXaXRoRGVmYXVsdHM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzY2hlbWFQYXJ0Ll90eXBlID09PSBUeXBlLk9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBvYmplY3RLZXkgb2YgT2JqZWN0LmtleXMoY29uZmlnUGFydCkpe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnUGFydFtvYmplY3RLZXldID0gc2V0RGVmYXVsdHMoZWxlbWVudHMsIGNvbmZpZ1BhcnRbb2JqZWN0S2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXNPcmRpbmFyeU9iamVjdChzY2hlbWFQYXJ0KSkge1xuICAgICAgICAgICAgLy8gU2luY2Ugc2NoZW1hUGFydCBoYXMgbm8gcHJvcGVydHkgXCJfdHlwZVwiLCBpZiBpdCdzIGFuIG9yZGluYXJ5IG9iamVjdFxuICAgICAgICAgICAgLy8gKHVubGlrZSwgaW1wb3J0YW50bHksIHRoZSB2YWxpZGF0b3JzIGFycmF5KSwgd2UgYXNzdW1lIGl0IGlzIGEgcGFyZW50IGNvbmZpZyBwcm9wZXJ0eS5cbiAgICAgICAgICAgIC8vIFdlIHJlY3Vyc2UgdG8gY29uZmlnW2tleV0gYW5kIHNjaGVtYVtrZXldLiBEZWZhdWx0IGNvbmZpZ1trZXldIHRvIHt9LlxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDb25maWdQYXJ0ID0gY29uZmlnUGFydCA/PyB7fTtcbiAgICAgICAgICAgIC8vIFRoZXJlIHdpbGwgaGF2ZSBiZWVuIGEgdmFsaWRhdGlvbiBlcnJvciBhbHJlYWR5IGlmIGNvbmZpZ1BhcnQgaXMgbm90IGEgcGxhaW4gb2JqZWN0LlxuICAgICAgICAgICAgaWYgKGlzT3JkaW5hcnlPYmplY3Qoc2VsZWN0ZWRDb25maWdQYXJ0KSkge1xuICAgICAgICAgICAgICAgIGNvbmZpZ1trZXldID0gc2V0RGVmYXVsdHMoc2NoZW1hUGFydCwgc2VsZWN0ZWRDb25maWdQYXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29uZmlnO1xufTtcbmZ1bmN0aW9uIGhhc09iamVjdFNjaGVtYShlbGVtZW50c1NjaGVtYSkge1xuICAgIHJldHVybiAhIWVsZW1lbnRzU2NoZW1hICYmIE9iamVjdC5rZXlzKGVsZW1lbnRzU2NoZW1hKS5maWx0ZXIoKGUpPT4hW1xuICAgICAgICAgICAgJ19kZWZhdWx0JyxcbiAgICAgICAgICAgICdfdmFsaWRhdG9ycydcbiAgICAgICAgXS5pbmNsdWRlcyhlKSkubGVuZ3RoID4gMDtcbn1cbmZ1bmN0aW9uIGlzT3JkaW5hcnlPYmplY3QodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUgIT09IG51bGw7XG59XG4vKiogS2VlcCB0cmFjayBvZiB3aGljaCB2YWxpZGF0aW9uIGVycm9ycyB3ZSBoYXZlIGRpc3BsYXllZC4gRWFjaCBvbmUgc2hvdWxkIG9ubHkgYmUgZGlzcGxheWVkIG9uY2UuICovIGxldCBkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMgPSBuZXcgU2V0KCk7XG5mdW5jdGlvbiBsb2dFcnJvcihrZXlQYXRoLCBtZXNzYWdlKSB7XG4gICAgY29uc3Qga2V5ID0gYCR7a2V5UGF0aH06Ojoke21lc3NhZ2V9YDtcbiAgICAvLyB0ZWNobmljYWxseSwgdGhpcyBzaG91bGQgbm90IGJlIHBvc3NpYmxlLCBidXQgYmVjYXVzZSBvZiBob3cgdGhpbmdzIHdpbmQtdXAgdHJhbnNwaWxlZCwgdGhpcyBpc24ndCBpbXBvc3NpYmxlXG4gICAgaWYgKCFkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMpIHtcbiAgICAgICAgZGlzcGxheWVkVmFsaWRhdGlvbk1lc3NhZ2VzID0gbmV3IFNldCgpO1xuICAgIH1cbiAgICBpZiAoIWRpc3BsYXllZFZhbGlkYXRpb25NZXNzYWdlcy5oYXMoa2V5KSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgICBkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMuYWRkKGtleSk7XG4gICAgfVxufVxuLyoqXG4gKiBOb3JtYWxseSwgY29uZmlndXJhdGlvbiBlcnJvcnMgYXJlIG9ubHkgZGlzcGxheWVkIG9uY2UuIFRoaXMgZnVuY3Rpb24gY2xlYXJzIHRoZSBsaXN0IG9mXG4gKiBkaXNwbGF5ZWQgZXJyb3JzLCBzbyB0aGF0IHRoZXkgd2lsbCBiZSBkaXNwbGF5ZWQgYWdhaW4uXG4gKlxuICogQGludGVybmFsXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQ29uZmlnRXJyb3JzKGtleVBhdGgpIHtcbiAgICBpZiAoa2V5UGF0aCkge1xuICAgICAgICBkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMuZm9yRWFjaCgoa2V5KT0+e1xuICAgICAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKGtleVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheWVkVmFsaWRhdGlvbk1lc3NhZ2VzLmRlbGV0ZShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMuY2xlYXIoKTtcbiAgICB9XG59XG4vKipcbiAqIENsZWFucyB1cCBhbGwgY29uZmlnIHN0b3JlIHN1YnNjcmlwdGlvbnMgYW5kIHJlLWVzdGFibGlzaGVzIHRoZW0uIFRoaXMgaXMgcHJpbWFyaWx5XG4gKiB1c2VmdWwgZm9yIHRlc3RpbmcsIHdoZXJlIHN1YnNjcmlwdGlvbnMgc2V0IHVwIGF0IG1vZHVsZSBsb2FkIHRpbWUgbmVlZCB0byBiZSBjbGVhcmVkXG4gKiBiZXR3ZWVuIHRlc3RzIHRvIHByZXZlbnQgaW5maW5pdGUgdXBkYXRlIGxvb3BzLiBBZnRlciBjbGVhcmluZywgc3Vic2NyaXB0aW9ucyBhcmVcbiAqIHJlLWVzdGFibGlzaGVkIHNvIHRoZSBjb25maWcgc3lzdGVtIGNvbnRpbnVlcyB0byB3b3JrIG5vcm1hbGx5LlxuICpcbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBmdW5jdGlvbiByZXNldENvbmZpZ1N5c3RlbSgpIHtcbiAgICBjb25maWdTdWJzY3JpcHRpb25zLmZvckVhY2goKHVuc3Vic2NyaWJlKT0+dW5zdWJzY3JpYmUoKSk7XG4gICAgY29uZmlnU3Vic2NyaXB0aW9ucy5sZW5ndGggPSAwO1xuICAgIC8vIENhY2hlZCBjb25maWdzIGFyZSBrZXllZCBvbiBpbnB1dCBpZGVudGl0eSwgc28gYSB0ZXN0IHRoYXQgcmV1c2VzIHRoZSBzYW1lIHNjaGVtYSBvciBjb25maWdcbiAgICAvLyBvYmplY3RzIGFjcm9zcyBjYXNlcyB3b3VsZCBvdGhlcndpc2UgYmUgc2VydmVkIHRoZSBwcmV2aW91cyBjYXNlJ3MgcmVzdWx0LlxuICAgIG1vZHVsZUNvbmZpZ0NhY2hlLmNsZWFyKCk7XG4gICAgZXh0ZW5zaW9uQ29uZmlnQ2FjaGUuY2xlYXIoKTtcbiAgICBzY2hlbWFWYWx1ZXNBbmRTb3VyY2VzQ2FjaGUuY2xlYXIoKTtcbiAgICBpbXBsZW1lbnRlclRvb2xzTW9kdWxlQ2FjaGUuY2xlYXIoKTtcbiAgICBzZXR1cENvbmZpZ1N1YnNjcmlwdGlvbnMoKTtcbn1cbi8qKlxuICogQ29waWVkIG92ZXIgZnJvbSBlc20tZXh0ZW5zaW9ucy4gSXQgcmlnaHRseSBiZWxvbmdzIHRvIHRoYXQgbW9kdWxlLCBidXQgZXNtLWNvbmZpZ1xuICogY2Fubm90IGRlcGVuZCBvbiBlc20tZXh0ZW5zaW9ucy5cbiAqLyBmdW5jdGlvbiBnZXRFeHRlbnNpb25OYW1lRnJvbUlkKGV4dGVuc2lvbklkKSB7XG4gICAgY29uc3QgW2V4dGVuc2lvbk5hbWVdID0gZXh0ZW5zaW9uSWQuc3BsaXQoJyMnKTtcbiAgICByZXR1cm4gZXh0ZW5zaW9uTmFtZTtcbn1cbi8qKlxuICogVGhlIHRyYW5zbGF0aW9uIG92ZXJyaWRlcyBzY2hlbWEgaXMgdXNlZCBpbiB0aGUgaW1wbGljaXQgc2NoZW1hIGdpdmVuIHRvIGV2ZXJ5IG1vZHVsZTtcbiAqIHBsdXMgYW55IGFkZGl0aW9uYWwgdHJhbnNsYXRpb24gbmFtZXNwYWNlcyAoYXQgdGltZSBvZiB3cml0aW5nLCB0aGlzIGlzIGp1c3QgJ2NvcmUnKS5cbiAqLyBjb25zdCB0cmFuc2xhdGlvbk92ZXJyaWRlc1NjaGVtYSA9IHtcbiAgICAnVHJhbnNsYXRpb24gb3ZlcnJpZGVzJzoge1xuICAgICAgICBfZGVzY3JpcHRpb246ICdQZXItbGFuZ3VhZ2Ugb3ZlcnJpZGVzIGZvciBmcm9udGVuZCB0cmFuc2xhdGlvbnMgc2hvdWxkIGJlIGtleWVkIGJ5IGxhbmd1YWdlIGNvZGUgYW5kIGVhY2ggbGFuZ3VhZ2UgZGljdGlvbmFyeSBjb250YWlucyB0aGUgdHJhbnNsYXRpb24ga2V5IGFuZCB0aGUgZGlzcGxheSB2YWx1ZScsXG4gICAgICAgIF90eXBlOiBUeXBlLk9iamVjdCxcbiAgICAgICAgX2RlZmF1bHQ6IHt9LFxuICAgICAgICBfdmFsaWRhdG9yczogW1xuICAgICAgICAgICAgdmFsaWRhdG9yKChvKT0+T2JqZWN0LmtleXMobykuZXZlcnkoKGspPT4vXlthLXpdezIsM30oLVtBLVpdezIsM30pPyQvLnRlc3QoaykpLCAobyk9PntcbiAgICAgICAgICAgICAgICBjb25zdCBiYWRLZXlzID0gT2JqZWN0LmtleXMobykuZmlsdGVyKChrKT0+IS9eW2Etel17MiwzfSgtW0EtWl17MiwzfSk/JC8udGVzdChrKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBUaGUgJ1RyYW5zbGF0aW9uIG92ZXJyaWRlcycgb2JqZWN0IHNob3VsZCBoYXZlIGxhbmd1YWdlIGNvZGVzIGZvciBrZXlzLiBMYW5ndWFnZSBjb2RlcyBtdXN0IGJlIGluIHRoZSBmb3JtIG9mIGEgdHdvLXRvLXRocmVlIGxldHRlciBsYW5ndWFnZSBjb2RlIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSBoeXBoZW4gYW5kIGEgdHdvLXRvLXRocmVlIGxldHRlciBjb3VudHJ5IGNvZGUuIFRoZSBmb2xsb3dpbmcga2V5cyBkbyBub3QgY29uZm9ybTogJHtiYWRLZXlzLmpvaW4oJywgJyl9LmA7XG4gICAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgfVxufTtcbi8qKlxuICogVGhlIGltcGxpY2l0Q29uZmlnU2NoZW1hIGlzIGltcGxpY2l0bHkgaW5jbHVkZWQgaW4gZXZlcnkgY29uZmlndXJhdGlvbiBzY2hlbWFcbiAqLyBjb25zdCBpbXBsaWNpdENvbmZpZ1NjaGVtYSA9IHtcbiAgICAnRGlzcGxheSBjb25kaXRpb25zJzoge1xuICAgICAgICBwcml2aWxlZ2VzOiB7XG4gICAgICAgICAgICBfZGVzY3JpcHRpb246ICdUaGUgcHJpdmlsZWdlKHMpIHRoZSB1c2VyIG11c3QgaGF2ZSB0byB1c2UgdGhpcyBleHRlbnNpb24nLFxuICAgICAgICAgICAgX3R5cGU6IFR5cGUuQXJyYXksXG4gICAgICAgICAgICBfZGVmYXVsdDogW11cbiAgICAgICAgfSxcbiAgICAgICAgZXhwcmVzc2lvbjoge1xuICAgICAgICAgICAgX2Rlc2NyaXB0aW9uOiAnVGhlIGV4cHJlc3Npb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGV4dGVuc2lvbiBpcyBkaXNwbGF5ZWQnLFxuICAgICAgICAgICAgX3R5cGU6IFR5cGUuU3RyaW5nLFxuICAgICAgICAgICAgX2RlZmF1bHQ6IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgfSxcbiAgICAuLi50cmFuc2xhdGlvbk92ZXJyaWRlc1NjaGVtYVxufTtcbiJdLCJuYW1lcyI6WyJjbG9uZURlZXAiLCJpc0VxdWFsIiwibWVyZ2VXaXRoIiwib21pdCIsImxvZGFzaE9taXQiLCJUeXBlIiwiaXNBcnJheSIsImlzQm9vbGVhbiIsImlzVXVpZCIsImlzTnVtYmVyIiwiaXNPYmplY3QiLCJpc1N0cmluZyIsInZhbGlkYXRvciIsImNvbmZpZ0V4dGVuc2lvblN0b3JlIiwiY29uZmlnSW50ZXJuYWxTdG9yZSIsImdldENvbmZpZ1N0b3JlIiwiZ2V0RXh0ZW5zaW9uQ29uZmlnIiwiZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSIsImdldEV4dGVuc2lvbnNDb25maWdTdG9yZSIsImNsZWFyQ29uZmlnRGVyaXZhdGlvbkVycm9yIiwiaW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0b3JlIiwiaW52YWxpZGF0ZUltcGxlbWVudGVyVG9vbHNDb25maWciLCJyZWNvcmRDb25maWdEZXJpdmF0aW9uRXJyb3IiLCJzZXRJbXBsZW1lbnRlclRvb2xzQ29uZmlnUmVjb21wdXRlciIsInRlbXBvcmFyeUNvbmZpZ1N0b3JlIiwibWVyZ2VEZWVwUmVwbGFjZSIsImxlZnQiLCJyaWdodCIsIl9vYmpWYWx1ZSIsInNyY1ZhbHVlIiwiQXJyYXkiLCJjb25maWdTdWJzY3JpcHRpb25zIiwicmVjb21wdXRlQWxsQ29uZmlncyIsImNvbmZpZ1N0YXRlIiwidGVtcENvbmZpZ1N0YXRlIiwiZXh0ZW5zaW9uU3RhdGUiLCJjb21wdXRlTW9kdWxlQ29uZmlnIiwiY29tcHV0ZUV4dGVuc2lvblNsb3RDb25maWdzIiwiY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3MiLCJzZXR1cENvbmZpZ1N1YnNjcmlwdGlvbnMiLCJjb21wdXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZyIsInJlY29tcHV0ZUFsbENvbmZpZ3NTYWZlbHkiLCJlIiwiY29uc29sZSIsIm1vZHVsZUNvbmZpZ0NhY2hlIiwiTWFwIiwic3RhdGUiLCJ0ZW1wU3RhdGUiLCJtb2R1bGVOYW1lIiwiT2JqZWN0IiwibW9kdWxlU3RvcmUiLCJzY2hlbWEiLCJtb2R1bGVMb2FkZWQiLCJCb29sZWFuIiwiY2FjaGVkIiwibmV3U3RhdGUiLCJjb25maWciLCJnZXRDb25maWdGb3JNb2R1bGUiLCJnZXRDb25maWdGb3JNb2R1bGVJbXBsaWNpdFNjaGVtYSIsIm9sZFN0YXRlIiwic2xvdENvbmZpZ3MiLCJnZXRFeHRlbnNpb25TbG90Q29uZmlncyIsInNsb3RTdG9yZSIsIm9sZFNsb3RzIiwic2xvdHMiLCJjaGFuZ2VkIiwic2xvdE5hbWUiLCJwcmV2aW91cyIsImdldEltcGxlbWVudGVyVG9vbHNDb25maWciLCJleHRlbnNpb25zQ29uZmlnU3RvcmUiLCJvbGRDb25maWdzIiwiY29uZmlncyIsImVudHJ5Q291bnQiLCJleHRlbnNpb24iLCJjb21wdXRlRXh0ZW5zaW9uQ29uZmlnIiwiZW50cnkiLCJwcmV2aW91c1Nsb3QiLCJleHRlbnNpb25JZCIsInRvdGFsIiwic2xvdCIsImRlZmluZUNvbmZpZ1NjaGVtYSIsInZhbGlkYXRlQ29uZmlnU2NoZW1hIiwiZW5oYW5jZWRTY2hlbWEiLCJpbXBsaWNpdENvbmZpZ1NjaGVtYSIsInJlZ2lzdGVyTW9kdWxlV2l0aENvbmZpZ1N5c3RlbSIsInJlZ2lzdGVyTW9kdWxlTG9hZCIsInJlZ2lzdGVyVHJhbnNsYXRpb25OYW1lc3BhY2UiLCJuYW1lc3BhY2UiLCJ0cmFuc2xhdGlvbk92ZXJyaWRlc1NjaGVtYSIsImRlZmluZUV4dGVuc2lvbkNvbmZpZ1NjaGVtYSIsImV4dGVuc2lvbk5hbWUiLCJwcm92aWRlIiwic291cmNlTmFtZSIsIndoZW5TdG9yZVJlYWR5Iiwic3RvcmUiLCJyZWFkeSIsInNlbGVjdCIsIlByb21pc2UiLCJyZXNvbHZlIiwidW5zdWJzY3JpYmUiLCJyZXNvbHZlZCIsInVwZGF0ZSIsImdldENvbmZpZyIsImdldFRyYW5zbGF0aW9uT3ZlcnJpZGVzIiwicHJvbWlzZXMiLCJwcm9jZXNzQ29uZmlnIiwicHJvdmlkZWRDb25maWciLCJrZXlQYXRoQ29udGV4dCIsInZhbGlkYXRlU3RydWN0dXJlIiwic2V0RGVmYXVsdHMiLCJydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlIiwiZXh0ZW5zaW9uQ29uZmlnQ2FjaGUiLCJzbG90TW9kdWxlTmFtZSIsImV4dGVuc2lvbk1vZHVsZU5hbWUiLCJnZXRFeHRlbnNpb25OYW1lRnJvbUlkIiwiZXh0ZW5zaW9uQ29uZmlnU2NoZW1hIiwiY2FjaGVLZXkiLCJKU09OIiwibmFtZU9mU2NoZW1hU291cmNlIiwicHJvdmlkZWRDb25maWdzIiwiZ2V0UHJvdmlkZWRDb25maWdzIiwic2xvdE1vZHVsZUNvbmZpZyIsIm1lcmdlQ29uZmlnc0ZvciIsImNvbmZpZ092ZXJyaWRlIiwiZXh0ZW5zaW9uQ29uZmlnIiwiY29tYmluZWRDb25maWciLCJtZXJnZUNvbmZpZ3MiLCJpbXBsZW1lbnRlclRvb2xzTW9kdWxlQ2FjaGUiLCJhbm5vdGF0ZWRTY2hlbWFzIiwiZ2V0QWxsU2NoZW1hc1dpdGhWYWx1ZXNBbmRTb3VyY2VzIiwiY29uZmlnc0FuZFNvdXJjZXMiLCJjIiwibW9kdWxlTmFtZXMiLCJTZXQiLCJyZXN1bHQiLCJhbm5vdGF0ZWRTY2hlbWEiLCJjb25maWdTbGljZXMiLCJzb3VyY2VzIiwic291cmNlIiwic2xpY2UiLCJpIiwibWVyZ2VkIiwidW5kZWZpbmVkIiwiY3JlYXRlVmFsdWVzQW5kU291cmNlc1RyZWUiLCJzY2hlbWFWYWx1ZXNBbmRTb3VyY2VzQ2FjaGUiLCJzY2hlbWFzIiwiYW5ub3RhdGVkIiwiZ2V0U2NoZW1hV2l0aFZhbHVlc0FuZFNvdXJjZXMiLCJpc09yZGluYXJ5T2JqZWN0Iiwib2JqIiwia2V5IiwiYWxsQ29uZmlncyIsInNsb3RDb25maWdQZXJNb2R1bGUiLCJ2YWxpZGF0ZUFsbEV4dGVuc2lvblNsb3RDb25maWdzIiwiY29uZmlnQnlTbG90TmFtZSIsInZhbGlkYXRlRXh0ZW5zaW9uU2xvdENvbmZpZyIsImtleVBhdGgiLCJlcnJvclByZWZpeCIsImludmFsaWRLZXlzIiwiayIsImxvZ0Vycm9yIiwibiIsInVwZGF0ZU1lc3NhZ2UiLCJ0aGlzS2V5UGF0aCIsInNjaGVtYVBhcnQiLCJlbGVtZW50cyIsImhhc09iamVjdFNjaGVtYSIsInZhbHVlVHlwZSIsImlucHV0Q29uZmlnIiwiYWxsQ29uZmlnc0Zvck1vZHVsZSIsImFjYyIsInZhbHVlIiwidmFsaWRhdGVCcmFuY2hTdHJ1Y3R1cmUiLCJjaGVja1R5cGUiLCJ2YWxpZGF0ZUZyZWVmb3JtT2JqZWN0U3RydWN0dXJlIiwidmFsaWRhdGVBcnJheVN0cnVjdHVyZSIsImZyZWVmb3JtT2JqZWN0U2NoZW1hIiwiYXJyYXlTY2hlbWEiLCJ2YWxpZGF0ZWRBc0FycmF5IiwicnVuVmFsaWRhdG9ycyIsIl90eXBlIiwidmFsaWRhdG9ycyIsInJldHVyblZhbHVlIiwidmFsaWRhdG9yUmVzdWx0IiwibWVzc2FnZSIsInN0cnVjdHVyZWRDbG9uZSIsImNvbmZpZ1BhcnQiLCJjb25maWdXaXRoRGVmYXVsdHMiLCJjb25mIiwib2JqZWN0S2V5Iiwic2VsZWN0ZWRDb25maWdQYXJ0IiwiZWxlbWVudHNTY2hlbWEiLCJkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMiLCJjbGVhckNvbmZpZ0Vycm9ycyIsInJlc2V0Q29uZmlnU3lzdGVtIiwibyIsImJhZEtleXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2QkFBNkIsR0FBaUY7QUFDM0U7QUFDeUU7QUFDckQ7QUFDK1I7QUFDdFY7Ozs7Q0FJQyxHQUFHLFNBQVN5QixpQkFBaUJDLElBQUksRUFBRUMsS0FBSztJQUNyQyxPQUFPekIseUNBQVNBLENBQUMsQ0FBQyxHQUFHd0IsTUFBTUMsT0FBTyxDQUFDQyxXQUFXQztRQUMxQyxJQUFJQyxNQUFNLE9BQU8sQ0FBQ0QsV0FBVztZQUN6QixPQUFPQTtR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\n//# sourceURL=webpack-internal:///../../framework/esm-config/dist/module-config/module-config.js\n\n}");
|
|
5583
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n clearConfigErrors: () => (clearConfigErrors),\n defineConfigSchema: () => (defineConfigSchema),\n defineExtensionConfigSchema: () => (defineExtensionConfigSchema),\n getConfig: () => (getConfig),\n getTranslationOverrides: () => (getTranslationOverrides),\n processConfig: () => (processConfig),\n provide: () => (provide),\n registerModuleLoad: () => (registerModuleLoad),\n registerModuleWithConfigSystem: () => (registerModuleWithConfigSystem),\n registerTranslationNamespace: () => (registerTranslationNamespace),\n resetConfigSystem: () => (resetConfigSystem)\n});\n/* import */ var lodash_es__rspack_import_4 = __webpack_require__(\"../../../node_modules/lodash-es/mergeWith.js\");\n/* import */ var lodash_es__rspack_import_5 = __webpack_require__(\"../../../node_modules/lodash-es/isEqual.js\");\n/* import */ var lodash_es__rspack_import_6 = __webpack_require__(\"../../../node_modules/lodash-es/omit.js\");\n/* import */ var lodash_es__rspack_import_7 = __webpack_require__(\"../../../node_modules/lodash-es/cloneDeep.js\");\n/* import */ var _types_js__rspack_import_0 = __webpack_require__(\"../../framework/esm-config/dist/types.js\");\n/* import */ var _validators_type_validators_js__rspack_import_1 = __webpack_require__(\"../../framework/esm-config/dist/validators/type-validators.js\");\n/* import */ var _validators_validator_js__rspack_import_2 = __webpack_require__(\"../../framework/esm-config/dist/validators/validator.js\");\n/* import */ var _state_js__rspack_import_3 = __webpack_require__(\"../../framework/esm-config/dist/module-config/state.js\");\n/** @module @category Config */ \n\n\n\n\n/**\n * Deep merge two objects, with right-side values taking precedence.\n * Arrays are replaced entirely (not merged by index), matching the\n * behavior of ramda's mergeDeepRight.\n */ function replaceArrays(_objValue, srcValue) {\n if (Array.isArray(srcValue)) {\n return srcValue;\n }\n}\nfunction mergeDeepReplace(left, right) {\n return (0,lodash_es__rspack_import_4[\"default\"])({}, left, right, replaceArrays);\n}\n/**\n * Store setup\n *\n *\n * Set up stores and subscriptions so that inputs get processed appropriately.\n *\n * There are *input* stores and *output* stores. The *input* stores\n * are configInternalStore, temporaryConfigStore, and configExtensionStore. The\n * output stores are set in the `compute...` functions. They are the module\n * config stores, the extension slot config stores (by module), the extension\n * config stores, and the implementer tools config store.\n *\n * This code sets up the subscriptions so that when an input store changes,\n * the correct set of output stores are updated.\n *\n * All `compute...` functions except `computeExtensionConfigs` are pure\n * (or are supposed to be), other than the fact that they all `setState`\n * store values at the end. `computeExtensionConfigs` calls `getGlobalStore`,\n * which creates stores.\n */ // Store unsubscribe functions to allow cleanup (e.g., in tests or hot module reloading)\nconst configSubscriptions = [];\n/**\n * Recomputes all configuration derived stores based on current state of input stores.\n * Called whenever any input store (configInternalStore, temporaryConfigStore, configExtensionStore) changes.\n */ function recomputeAllConfigs() {\n const configState = _state_js__rspack_import_3.configInternalStore.getState();\n const tempConfigState = _state_js__rspack_import_3.temporaryConfigStore.getState();\n const extensionState = _state_js__rspack_import_3.configExtensionStore.getState();\n computeModuleConfig(configState, tempConfigState);\n const slotConfigs = getExtensionSlotConfigs(configState, tempConfigState);\n computeExtensionSlotConfigs(slotConfigs);\n computeExtensionConfigs(configState, extensionState, tempConfigState, slotConfigs);\n // Last, because a failure here must not skip the outputs above. Only kept current while the\n // implementer tools are watching it; otherwise derived on read.\n (0,_state_js__rspack_import_3.invalidateImplementerToolsConfig)();\n}\nfunction setupConfigSubscriptions() {\n // Registered here rather than at module load so that `resetConfigSystem` restores it.\n (0,_state_js__rspack_import_3.setImplementerToolsConfigRecomputer)(()=>computeImplementerToolsConfig(_state_js__rspack_import_3.configInternalStore.getState(), _state_js__rspack_import_3.temporaryConfigStore.getState()));\n // Initial computation\n recomputeAllConfigs();\n // Subscribe to all input stores with a single handler\n // This ensures we only recompute once even if multiple stores change simultaneously\n configSubscriptions.push(_state_js__rspack_import_3.configInternalStore.subscribe(recomputeAllConfigsSafely), _state_js__rspack_import_3.temporaryConfigStore.subscribe(recomputeAllConfigsSafely), _state_js__rspack_import_3.configExtensionStore.subscribe(recomputeAllConfigsSafely));\n}\n/** Ensure that we do not throw during a store subscription */ function recomputeAllConfigsSafely() {\n (0,_state_js__rspack_import_3.clearConfigDerivationError)();\n try {\n recomputeAllConfigs();\n } catch (e) {\n (0,_state_js__rspack_import_3.recordConfigDerivationError)(e);\n console.error('Failed to recompute the configuration', e);\n }\n}\n// Set up subscriptions at module load time\nsetupConfigSubscriptions();\nconst moduleConfigCache = new Map();\nfunction computeModuleConfig(state, tempState) {\n for (let moduleName of Object.keys(state.schemas)){\n // At this point the schema could be either just the implicit schema or the actually\n // defined schema. We run with just the implicit schema because we want to populate\n // the config store with the translation overrides as soon as possible. In fact, the\n // translation system will throw for Suspense until the translation overrides are\n // available, which as of this writing blocks the schema definition from occurring\n // for modules loaded based on their extensions.\n const moduleStore = (0,_state_js__rspack_import_3.getConfigStore)(moduleName);\n const schema = state.schemas[moduleName];\n const moduleLoaded = Boolean(state.moduleLoaded[moduleName]);\n const cached = moduleConfigCache.get(moduleName);\n let newState;\n if (cached && cached.schema === schema && cached.moduleLoaded === moduleLoaded && cached.providedConfigs === state.providedConfigs && cached.temporaryConfig === tempState.config) {\n newState = cached.state;\n } else {\n const config = moduleLoaded ? getConfigForModule(moduleName, state, tempState) : getConfigForModuleImplicitSchema(moduleName, state, tempState);\n newState = {\n translationOverridesLoaded: true,\n loaded: moduleLoaded,\n config\n };\n moduleConfigCache.set(moduleName, {\n schema,\n moduleLoaded,\n providedConfigs: state.providedConfigs,\n temporaryConfig: tempState.config,\n state: newState\n });\n }\n // Writing unconditionally would hand every `useConfig` consumer in the application a new\n // object — and a re-render — whenever any module or extension anywhere is loaded.\n const oldState = moduleStore.getState();\n if (oldState.loaded !== newState.loaded || oldState.translationOverridesLoaded !== newState.translationOverridesLoaded || !(0,lodash_es__rspack_import_5[\"default\"])(oldState.config, newState.config)) {\n moduleStore.setState(newState);\n }\n }\n}\nfunction computeExtensionSlotConfigs(slotConfigs) {\n const slotStore = (0,_state_js__rspack_import_3.getExtensionSlotsConfigStore)();\n const oldSlots = slotStore.getState().slots;\n const slots = {};\n let changed = false;\n for (const [slotName, config] of Object.entries(slotConfigs)){\n const previous = oldSlots[slotName];\n // Entries keep their identity when the configuration behind them hasn't changed, so that\n // changing one slot's configuration doesn't invalidate every other configured slot.\n if (previous?.loaded && (0,lodash_es__rspack_import_5[\"default\"])(previous.config, config)) {\n slots[slotName] = previous;\n } else {\n slots[slotName] = {\n loaded: true,\n config\n };\n changed = true;\n }\n }\n // Built from scratch rather than merged over the previous state: a slot whose configuration\n // has been removed — clearing the temporary config, say — has to lose its entry, or the old\n // configuration stays in force until the page is reloaded.\n if (changed || Object.keys(oldSlots).length !== Object.keys(slots).length) {\n slotStore.setState({\n slots\n });\n }\n}\nfunction computeImplementerToolsConfig(state, tempConfigState) {\n const oldState = _state_js__rspack_import_3.implementerToolsConfigStore.getState();\n const config = getImplementerToolsConfig(state, tempConfigState);\n const newState = {\n config\n };\n // Use deep equality on the actual config content, not the wrapper object\n if (!(0,lodash_es__rspack_import_5[\"default\"])(oldState.config, newState.config)) {\n _state_js__rspack_import_3.implementerToolsConfigStore.setState(newState);\n }\n}\nfunction computeExtensionConfigs(configState, extensionState, tempConfigState, slotConfigs) {\n const extensionsConfigStore = (0,_state_js__rspack_import_3.getExtensionsConfigStore)();\n const oldConfigs = extensionsConfigStore.getState().configs;\n const configs = {};\n let changed = false;\n let entryCount = 0;\n // We assume that the module schema has already been defined, since the extension\n // it contains is mounted.\n for (let extension of extensionState.mountedExtensions){\n const config = computeExtensionConfig(extension.slotModuleName, extension.extensionModuleName, extension.slotName, extension.extensionId, configState, tempConfigState, slotConfigs[extension.slotName]);\n const previous = oldConfigs[extension.slotName]?.[extension.extensionId];\n // Entries keep their identity when the configuration behind them hasn't changed, so that\n // mounting one extension doesn't hand every other mounted extension a new config object.\n const entry = previous?.loaded && (0,lodash_es__rspack_import_5[\"default\"])(previous.config, config) ? previous : {\n config,\n loaded: true\n };\n if (entry !== previous) {\n changed = true;\n }\n if (!configs[extension.slotName]) {\n configs[extension.slotName] = {};\n }\n configs[extension.slotName][extension.extensionId] = entry;\n entryCount++;\n }\n // Slots keep their identity too when none of their entries changed. Subscribers compare these\n // per-slot objects to work out which slots to re-derive, so handing out a fresh one for every\n // slot on every write would mark every slot with a mounted extension dirty.\n for (const [slotName, slotConfigs] of Object.entries(configs)){\n const previousSlot = oldConfigs[slotName];\n if (previousSlot && Object.keys(previousSlot).length === Object.keys(slotConfigs).length && Object.entries(slotConfigs).every(([extensionId, entry])=>previousSlot[extensionId] === entry)) {\n configs[slotName] = previousSlot;\n }\n }\n if (!changed) {\n // Nothing was added or altered, but an extension may have unmounted, which only shows up as a\n // missing entry.\n changed = Object.keys(oldConfigs).length !== Object.keys(configs).length || Object.values(oldConfigs).reduce((total, slot)=>total + Object.keys(slot).length, 0) !== entryCount;\n }\n if (changed) {\n extensionsConfigStore.setState({\n configs\n });\n }\n}\n/*\n * API\n *\n */ /**\n * This defines a configuration schema for a module. The schema tells the\n * configuration system how the module can be configured. It specifies\n * what makes configuration valid or invalid.\n *\n * See [Configuration System](https://o3-docs.openmrs.org/en-US/docs/configuration-system)\n * for more information about defining a config schema.\n *\n * @param moduleName Name of the module the schema is being defined for. Generally\n * should be the one in which the `defineConfigSchema` call takes place.\n * @param schema The config schema for the module\n */ function defineConfigSchema(moduleName, schema) {\n validateConfigSchema(moduleName, schema);\n const enhancedSchema = mergeDeepReplace(schema, implicitConfigSchema);\n _state_js__rspack_import_3.configInternalStore.setState((state)=>({\n ...state,\n schemas: {\n ...state.schemas,\n [moduleName]: enhancedSchema\n },\n moduleLoaded: {\n ...state.moduleLoaded,\n [moduleName]: true\n }\n }));\n}\n/**\n * This alerts the configuration system that a module exists. This allows config to be\n * processed, while still allowing the extension system to know whether the module has\n * actually had its front bundle executed yet.\n *\n * This should only be used in esm-app-shell.\n *\n * @internal\n * @param moduleName\n */ function registerModuleWithConfigSystem(moduleName) {\n _state_js__rspack_import_3.configInternalStore.setState((state)=>({\n ...state,\n schemas: {\n ...state.schemas,\n [moduleName]: implicitConfigSchema\n }\n }));\n}\n/**\n * This alerts the configuration system that a module has been loaded.\n *\n * This should only be used in esm-app-shell.\n *\n * @internal\n * @param moduleName\n */ function registerModuleLoad(moduleName) {\n _state_js__rspack_import_3.configInternalStore.setState((state)=>({\n ...state,\n moduleLoaded: {\n ...state.moduleLoaded,\n [moduleName]: true\n }\n }));\n}\n/**\n * This allows the config system to support translation overrides for namespaces that\n * do not correspond to modules.\n *\n * This should only be used in esm-app-shell.\n *\n * @internal\n * @param namespace\n */ function registerTranslationNamespace(namespace) {\n _state_js__rspack_import_3.configInternalStore.setState((state)=>({\n ...state,\n schemas: {\n ...state.schemas,\n [namespace]: translationOverridesSchema\n }\n }));\n}\n/**\n * This defines a configuration schema for an extension. When a schema is defined\n * for an extension, that extension will receive the configuration corresponding\n * to that schema, rather than the configuration corresponding to the module\n * in which it is defined.\n *\n * The schema tells the configuration system how the module can be configured.\n * It specifies what makes configuration valid or invalid.\n *\n * See [Configuration System](https://o3-docs.openmrs.org/en-US/docs/configuration-system)\n * for more information about defining a config schema.\n *\n * @param extensionName Name of the extension the schema is being defined for.\n * Should match the `name` of one of the `extensions` entries defined in\n * the app's `routes.json` file.\n * @param schema The config schema for the extension\n */ function defineExtensionConfigSchema(extensionName, schema) {\n validateConfigSchema(extensionName, schema);\n const enhancedSchema = mergeDeepReplace(schema, implicitConfigSchema);\n const state = _state_js__rspack_import_3.configInternalStore.getState();\n if (state.schemas[extensionName]) {\n console.error(`Config schema for extension ${extensionName} already exists. If there are multiple extensions with this same name, one will probably crash.`);\n }\n _state_js__rspack_import_3.configInternalStore.setState((state)=>({\n ...state,\n schemas: {\n ...state.schemas,\n [extensionName]: enhancedSchema\n }\n }));\n}\n/**\n * Provides configuration values programmatically. This is an alternative to\n * providing configuration through the config-file. Configuration provided this\n * way will be merged with configuration from other sources.\n *\n * @param config A configuration object to merge into the existing configuration.\n * @param sourceName An optional name to identify the source of this configuration,\n * used for debugging purposes. Defaults to 'provided'.\n */ function provide(config, sourceName = 'provided') {\n _state_js__rspack_import_3.configInternalStore.setState((state)=>({\n ...state,\n providedConfigs: [\n ...state.providedConfigs,\n {\n source: sourceName,\n config\n }\n ]\n }));\n}\n/**\n * Resolves with `select(state)` as soon as the store's state satisfies `ready`, leaving no\n * subscription behind: nothing subscribes at all when the store is already ready. That matters\n * because `getConfig` runs on every HTTP request, and a subscription that outlives its promise\n * both retains its closure forever and slows down every later write to that store.\n */ function whenStoreReady(store, ready, select) {\n return new Promise((resolve)=>{\n let unsubscribe;\n let resolved = false;\n function update(state) {\n if (!resolved && ready(state)) {\n resolved = true;\n resolve(select(state));\n unsubscribe?.();\n }\n }\n update(store.getState());\n if (!resolved) {\n unsubscribe = store.subscribe(update);\n }\n });\n}\n/**\n * A promise-based way to access the config as soon as it is fully loaded.\n * If it is already loaded, resolves the config in its present state.\n *\n * This is a useful function if you need to get the config in the course\n * of the execution of a function.\n *\n * @param moduleName The name of the module for which to look up the config\n */ function getConfig(moduleName) {\n return whenStoreReady((0,_state_js__rspack_import_3.getConfigStore)(moduleName), (state)=>Boolean(state.loaded && state.config), (state)=>(0,lodash_es__rspack_import_6[\"default\"])(state.config, [\n 'Display conditions',\n 'Translation overrides'\n ]));\n}\n/**\n * Retrieves translation overrides for an extension, optionally scoped to a specific\n * extension slot. When called with only a module name, retrieves module-level overrides.\n * Translation overrides allow customizing translated strings without modifying the\n * original translation files.\n *\n * @param moduleName The name of the module providing the translation context.\n * @param slotName Optional extension slot name to include slot-specific overrides.\n * @param extensionId Optional extension ID to include extension-specific overrides.\n * @returns A Promise resolving to an array of translation override objects.\n *\n * @internal\n */ function getTranslationOverrides(moduleName, slotName, extensionId) {\n const promises = [\n whenStoreReady((0,_state_js__rspack_import_3.getConfigStore)(moduleName), (state)=>Boolean(state.translationOverridesLoaded && state.config), (state)=>state.config['Translation overrides'] ?? {})\n ];\n if (slotName && extensionId) {\n promises.push(whenStoreReady((0,_state_js__rspack_import_3.getExtensionConfig)(slotName, extensionId), (state)=>Boolean(state.loaded && state.config), (state)=>state.config['Translation overrides'] ?? {}));\n }\n return Promise.all(promises);\n}\n/**\n * Validate and interpolate defaults for `providedConfig` according to `schema`\n *\n * @param schema a configuration schema\n * @param providedConfig an object of config values (without the top-level module name)\n * @param keyPathContext a dot-separated string which helps the user figure out where\n * the provided config came from\n * @returns The validated and processed configuration object with defaults applied.\n * @internal\n */ function processConfig(schema, providedConfig, keyPathContext) {\n validateStructure(schema, providedConfig, keyPathContext);\n const config = setDefaults(schema, providedConfig);\n runAllValidatorsInConfigTree(schema, config, keyPathContext);\n return config;\n}\nconst extensionConfigCache = new Map();\n/**\n * Returns the configuration for an extension. This configuration is specific\n * to the slot in which it is mounted, and its ID within that slot.\n *\n * The schema for that configuration is the extension schema. If no extension\n * schema has been provided, the schema used is the schema of the module in\n * which the extension is defined.\n *\n * @param slotModuleName The name of the module which defines the extension slot\n * @param extensionModuleName The name of the module which defines the extension (and therefore the config schema)\n * @param slotName The name of the extension slot where the extension is mounted\n * @param extensionId The ID of the extension in its slot\n * @param slotConfig The slot's configuration, gathered from every module that configures it\n */ function computeExtensionConfig(slotModuleName, extensionModuleName, slotName, extensionId, configState, tempConfigState, slotConfig) {\n const extensionName = getExtensionNameFromId(extensionId);\n const extensionConfigSchema = configState.schemas[extensionName];\n // JSON string of these elements should be unique-per-extension\n const cacheKey = JSON.stringify([\n slotName,\n extensionId,\n slotModuleName,\n extensionModuleName\n ]);\n const cached = extensionConfigCache.get(cacheKey);\n if (cached && cached.extensionSchema === extensionConfigSchema && cached.extensionModuleSchema === configState.schemas[extensionModuleName] && cached.providedConfigs === configState.providedConfigs && cached.temporaryConfig === tempConfigState.config) {\n return cached.config;\n }\n const nameOfSchemaSource = extensionConfigSchema ? extensionName : extensionModuleName;\n const providedConfigs = getProvidedConfigs(configState, tempConfigState);\n const sharedOverride = slotConfig?.configure?.[extensionId] ?? {};\n const slotModuleConfig = mergeConfigsFor(slotModuleName, providedConfigs);\n const configOverride = slotModuleConfig?.extensionSlots?.[slotName]?.configure?.[extensionId] ?? {};\n const extensionConfig = mergeConfigsFor(nameOfSchemaSource, providedConfigs);\n const combinedConfig = mergeConfigs([\n extensionConfig,\n sharedOverride,\n configOverride\n ]);\n const schema = extensionConfigSchema ?? configState.schemas[extensionModuleName];\n validateStructure(schema, combinedConfig, nameOfSchemaSource);\n const config = setDefaults(schema, combinedConfig);\n runAllValidatorsInConfigTree(schema, config, nameOfSchemaSource);\n delete config.extensionSlots;\n extensionConfigCache.set(cacheKey, {\n extensionSchema: extensionConfigSchema,\n extensionModuleSchema: configState.schemas[extensionModuleName],\n providedConfigs: configState.providedConfigs,\n temporaryConfig: tempConfigState.config,\n config\n });\n return config;\n}\nconst implementerToolsModuleCache = new Map();\nfunction getImplementerToolsConfig(configState, tempConfigState) {\n const annotatedSchemas = getAllSchemasWithValuesAndSources(configState.schemas);\n const configsAndSources = [\n ...configState.providedConfigs.map((c)=>[\n c.config,\n c.source\n ]),\n [\n tempConfigState.config,\n 'temporary config'\n ]\n ];\n // A module can be configured without having declared a schema, so the module list is the union\n // of both rather than just the schemas.\n const moduleNames = new Set(Object.keys(annotatedSchemas));\n for (const [config] of configsAndSources){\n for (const moduleName of Object.keys(config)){\n moduleNames.add(moduleName);\n }\n }\n const result = {};\n for (const moduleName of moduleNames){\n const annotatedSchema = annotatedSchemas[moduleName];\n const configSlices = configsAndSources.map(([config])=>config[moduleName]);\n const sources = configsAndSources.map(([, source])=>source);\n const cached = implementerToolsModuleCache.get(moduleName);\n if (cached && cached.annotatedSchema === annotatedSchema && cached.configSlices.length === configSlices.length && cached.configSlices.every((slice, i)=>slice === configSlices[i]) && cached.sources.every((source, i)=>source === sources[i])) {\n result[moduleName] = cached.result;\n continue;\n }\n let merged = annotatedSchema ?? {};\n configsAndSources.forEach(([, source], i)=>{\n const slice = configSlices[i];\n if (slice !== undefined) {\n merged = mergeDeepReplace(merged, createValuesAndSourcesTree(slice, source));\n }\n });\n implementerToolsModuleCache.set(moduleName, {\n annotatedSchema,\n configSlices,\n sources,\n result: merged\n });\n result[moduleName] = merged;\n }\n return result;\n}\n/**\n * Caching per module is what stops the walk being quadratic: defining one module's schema\n * recomputes every module.\n *\n * A module with no configuration of its own is published straight from this cache, so nothing may\n * mutate a tree it reads out of the implementer tools config — it is the cache entry.\n */ const schemaValuesAndSourcesCache = new Map();\nfunction getAllSchemasWithValuesAndSources(schemas) {\n const result = {};\n for (const [moduleName, schema] of Object.entries(schemas)){\n const cached = schemaValuesAndSourcesCache.get(moduleName);\n if (cached && cached.schema === schema) {\n result[moduleName] = cached.annotated;\n } else {\n const annotated = getSchemaWithValuesAndSources((0,lodash_es__rspack_import_7[\"default\"])(schema));\n schemaValuesAndSourcesCache.set(moduleName, {\n schema,\n annotated\n });\n result[moduleName] = annotated;\n }\n }\n return result;\n}\nfunction getSchemaWithValuesAndSources(schema) {\n if (schema.hasOwnProperty('_default')) {\n return {\n ...schema,\n _value: schema._default,\n _source: 'default'\n };\n } else if (isOrdinaryObject(schema)) {\n return Object.keys(schema).reduce((obj, key)=>{\n obj[key] = getSchemaWithValuesAndSources(schema[key]);\n return obj;\n }, {});\n } else {\n // at this point, the schema is bad and an error will have been logged during schema validation\n return {};\n }\n}\nfunction createValuesAndSourcesTree(config, source) {\n if (isOrdinaryObject(config)) {\n return Object.keys(config).reduce((obj, key)=>{\n obj[key] = createValuesAndSourcesTree(config[key], source);\n return obj;\n }, {});\n } else {\n return {\n _value: config,\n _source: source\n };\n }\n}\nfunction getExtensionSlotConfigs(configState, tempConfigState) {\n const allConfigs = mergeConfigs(getProvidedConfigs(configState, tempConfigState));\n const slotConfigPerModule = Object.keys(allConfigs).reduce((obj, key)=>{\n if (allConfigs[key]?.extensionSlots) {\n obj[key] = allConfigs[key]?.extensionSlots;\n }\n return obj;\n }, {});\n validateAllExtensionSlotConfigs(slotConfigPerModule);\n const slotConfigs = {};\n const configureBlocks = {};\n for (const configBySlotName of Object.values(slotConfigPerModule)){\n for (const [slotName, config] of Object.entries(configBySlotName)){\n slotConfigs[slotName] = config;\n if (config.configure) {\n var _configureBlocks, _slotName;\n ((_configureBlocks = configureBlocks)[_slotName = slotName] ?? (_configureBlocks[_slotName] = [])).push(config.configure);\n }\n }\n }\n for (const [slotName, blocks] of Object.entries(configureBlocks)){\n const configure = blocks.length === 1 ? blocks[0] : mergeConfigs(blocks);\n if (slotConfigs[slotName].configure !== configure) {\n slotConfigs[slotName] = {\n ...slotConfigs[slotName],\n configure\n };\n }\n }\n return slotConfigs;\n}\nfunction validateAllExtensionSlotConfigs(slotConfigPerModule) {\n for (let [moduleName, configBySlotName] of Object.entries(slotConfigPerModule)){\n for (let [slotName, config] of Object.entries(configBySlotName)){\n validateExtensionSlotConfig(config, moduleName, slotName);\n }\n }\n}\nfunction validateExtensionSlotConfig(config, moduleName, slotName) {\n const keyPath = `${moduleName}.extensionSlots.${slotName}`;\n const errorPrefix = `Extension slot config '${keyPath}'`;\n const invalidKeys = Object.keys(config).filter((k)=>![\n 'add',\n 'remove',\n 'order',\n 'configure'\n ].includes(k));\n if (invalidKeys.length) {\n logError(keyPath, errorPrefix + `' contains invalid keys '${invalidKeys.join(\"', '\")}'`);\n }\n if (config.add) {\n if (!Array.isArray(config.add) || !config.add.every((n)=>typeof n === 'string')) {\n logError(keyPath, errorPrefix + `.add' is invalid. Must be an array of strings (extension IDs)`);\n }\n }\n if (config.remove) {\n if (!Array.isArray(config.remove) || !config.remove.every((n)=>typeof n === 'string')) {\n logError(keyPath, errorPrefix + `.remove' is invalid. Must be an array of strings (extension IDs)`);\n }\n }\n if (config.order) {\n if (!Array.isArray(config.order) || !config.order.every((n)=>typeof n === 'string')) {\n logError(keyPath, errorPrefix + `.order' is invalid. Must be an array of strings (extension IDs)`);\n }\n }\n if (config.configure) {\n if (!isOrdinaryObject(config.configure)) {\n logError(keyPath, errorPrefix + `.configure' is invalid. Must be an object with extension IDs for keys`);\n }\n }\n}\nfunction getProvidedConfigs(configState, tempConfigState) {\n return [\n ...configState.providedConfigs.map((c)=>c.config),\n tempConfigState.config\n ];\n}\n/**\n * Validates the config schema for a module. Since problems identified here are programming errors\n * that hopefully will be caught during development, this function logs errors to the console directly;\n * it's fine if we spam the user with these errors.\n */ function validateConfigSchema(moduleName, schema, keyPath = '') {\n const updateMessage = `Please verify that you are running the latest version and, if so, alert the maintainer.`;\n for (const key of Object.keys(schema).filter((k)=>!k.startsWith('_'))){\n const thisKeyPath = keyPath + (keyPath && '.') + key;\n const schemaPart = schema[key];\n if (thisKeyPath === 'Display conditions') {\n console.error(`${moduleName} declares a configuration option called \"Display conditions\"; the \"Display conditions\" option is a reserved name. ${updateMessage}`);\n }\n if (thisKeyPath === 'Translation overrides') {\n console.error(`${moduleName} declares a configuration option called \"Translation overrides\"; the \"Translation overrides\" option is a reserved name. ${updateMessage}`);\n }\n if (!isOrdinaryObject(schemaPart)) {\n console.error(`${moduleName} has bad config schema definition for key '${thisKeyPath}'. ${updateMessage}`);\n continue;\n }\n if (!schemaPart.hasOwnProperty('_default')) {\n // recurse for nested config keys\n validateConfigSchema(moduleName, schemaPart, thisKeyPath);\n }\n const elements = schemaPart._elements;\n if (hasObjectSchema(elements)) {\n validateConfigSchema(moduleName, elements, thisKeyPath + '._elements');\n }\n if (schemaPart._validators) {\n for (let validator of schemaPart._validators){\n if (typeof validator !== 'function') {\n console.error(`${moduleName} has invalid validator for key '${thisKeyPath}' ${updateMessage}.` + `\\n\\nIf you're the maintainer: validators must be functions that return either ` + `undefined or an error string. Received ${validator}.`);\n }\n }\n }\n const valueType = schemaPart._type;\n if (valueType && !Object.values(_types_js__rspack_import_0.Type).includes(valueType)) {\n console.error(`${moduleName} has invalid type for key '${thisKeyPath}' ${updateMessage}.` + `\\n\\nIf you're the maintainer: the allowed types are ${Object.values(_types_js__rspack_import_0.Type).join(', ')}. ` + `Received '${valueType}'`);\n }\n if (Object.keys(schemaPart).every((k)=>[\n '_description',\n '_validators',\n '_elements',\n '_type'\n ].includes(k)) && !keyPath.includes('._elements')) {\n console.error(`${moduleName} has bad config schema definition for key '${thisKeyPath}'. ${updateMessage}.` + `\\n\\nIf you're the maintainer: all config elements must have a default. ` + `Received ${JSON.stringify(schemaPart)}`);\n }\n if (elements && valueType && ![\n _types_js__rspack_import_0.Type.Array,\n _types_js__rspack_import_0.Type.Object\n ].includes(valueType)) {\n console.error(`${moduleName} has bad config schema definition for key '${thisKeyPath}'. ${updateMessage}.` + `\\n\\nIf you're the maintainer: the 'elements' key only works with '_type' equal to 'Array' or 'Object'. ` + `Received ${JSON.stringify(valueType)}`);\n }\n }\n}\nfunction getConfigForModule(moduleName, configState, tempConfigState) {\n const schema = configState.schemas[moduleName];\n const inputConfig = mergeConfigsFor(moduleName, getProvidedConfigs(configState, tempConfigState));\n validateStructure(schema, inputConfig, moduleName);\n const config = setDefaults(schema, inputConfig);\n runAllValidatorsInConfigTree(schema, config, moduleName);\n delete config.extensionSlots;\n return config;\n}\nfunction getConfigForModuleImplicitSchema(moduleName, configState, tempConfigState) {\n const inputConfig = mergeConfigsFor(moduleName, getProvidedConfigs(configState, tempConfigState));\n const config = setDefaults(implicitConfigSchema, inputConfig);\n runAllValidatorsInConfigTree(implicitConfigSchema, config, moduleName);\n delete config.extensionSlots;\n return config;\n}\nfunction mergeConfigsFor(moduleName, allConfigs) {\n const allConfigsForModule = allConfigs.map(({ [moduleName]: c })=>c).filter((c)=>!!c);\n return mergeConfigs(allConfigsForModule);\n}\n/**\n * Merges a whole list at once, accumulating into one destination.\n */ function mergeConfigs(configs) {\n return configs.reduce((acc, config)=>(0,lodash_es__rspack_import_4[\"default\"])(acc, config, replaceArrays), {});\n}\n/**\n * Recursively check the provided config tree to make sure that all\n * of the provided properties exist in the schema, and that types are\n * correct. Does not run validators yet, since those will be run on\n * the config with the defaults filled in.\n */ function validateStructure(schema, config, keyPath = '') {\n // validate each constituent element\n for (const key of Object.keys(config)){\n const value = config[key];\n const thisKeyPath = keyPath + '.' + key;\n const schemaPart = schema[key];\n if (!schema.hasOwnProperty(key)) {\n if (!(key === 'extensionSlots' && keyPath !== '')) {\n logError(thisKeyPath, `Unknown config key '${thisKeyPath}' provided. Ignoring.`);\n }\n continue;\n }\n validateBranchStructure(schemaPart, value, thisKeyPath);\n }\n}\nfunction validateBranchStructure(schemaPart, value, keyPath) {\n checkType(keyPath, schemaPart._type, value);\n if (isOrdinaryObject(value)) {\n if (schemaPart._type === _types_js__rspack_import_0.Type.Object) {\n // validate as freeform object\n validateFreeformObjectStructure(schemaPart, value, keyPath);\n } else if (!(schemaPart.hasOwnProperty('_default') || schemaPart.hasOwnProperty('_type'))) {\n // validate as normal nested config\n validateStructure(schemaPart, value, keyPath);\n }\n } else {\n if (schemaPart._type === _types_js__rspack_import_0.Type.Array) {\n validateArrayStructure(schemaPart, value, keyPath);\n }\n }\n}\nfunction validateFreeformObjectStructure(freeformObjectSchema, config, keyPath) {\n if (freeformObjectSchema._elements) {\n for (const key of Object.keys(config)){\n const value = config[key];\n validateBranchStructure(freeformObjectSchema._elements, value, `${keyPath}.${key}`);\n }\n }\n}\nfunction validateArrayStructure(arraySchema, value, keyPath) {\n const validatedAsArray = checkType(keyPath, _types_js__rspack_import_0.Type.Array, value);\n if (!validatedAsArray) {\n return;\n }\n // if there is an array element object schema, verify that elements match it\n if (hasObjectSchema(arraySchema._elements)) {\n for(let i = 0; i < value.length; i++){\n validateBranchStructure(arraySchema._elements, value[i], `${keyPath}[${i}]`);\n }\n }\n for(let i = 0; i < value.length; i++){\n checkType(`${keyPath}[${i}]`, arraySchema._elements?._type, value[i]);\n }\n}\n/**\n * Run all the validators in the config tree. This should be run\n * on the config object after it has been filled in with all the defaults, since\n * higher-level validators may refer to default values.\n */ function runAllValidatorsInConfigTree(schema, config, keyPath = '') {\n // If `!schema`, there should have been a structural validation error printed already.\n if (schema) {\n if (config !== schema._default) {\n runValidators(keyPath, schema._validators, config);\n }\n if (isOrdinaryObject(config)) {\n for (const key of Object.keys(config)){\n const value = config[key];\n const thisKeyPath = keyPath + '.' + key;\n const schemaPart = schema[key];\n if (schema._type === _types_js__rspack_import_0.Type.Object && schema._elements) {\n runAllValidatorsInConfigTree(schema._elements, value, thisKeyPath);\n } else {\n runAllValidatorsInConfigTree(schemaPart, value, thisKeyPath);\n }\n }\n } else if (Array.isArray(config) && schema._elements) {\n for(let i = 0; i < config.length; i++){\n runAllValidatorsInConfigTree(schema._elements, config[i], `${keyPath}[${i}]`);\n }\n }\n }\n}\n/**\n * Run type validation for the value, logging any errors.\n * @returns true if validation passes, false otherwise\n */ function checkType(keyPath, _type, value) {\n if (_type) {\n const validator = {\n Array: _validators_type_validators_js__rspack_import_1.isArray,\n Boolean: _validators_type_validators_js__rspack_import_1.isBoolean,\n ConceptUuid: _validators_type_validators_js__rspack_import_1.isUuid,\n Number: _validators_type_validators_js__rspack_import_1.isNumber,\n Object: _validators_type_validators_js__rspack_import_1.isObject,\n String: _validators_type_validators_js__rspack_import_1.isString,\n UUID: _validators_type_validators_js__rspack_import_1.isUuid,\n PersonAttributeTypeUuid: _validators_type_validators_js__rspack_import_1.isUuid,\n PatientIdentifierTypeUuid: _validators_type_validators_js__rspack_import_1.isUuid\n };\n return runValidators(keyPath, [\n validator[_type]\n ], value);\n }\n return true;\n}\n/**\n * Runs validators, logging errors.\n * @returns true if all pass, false otherwise.\n */ function runValidators(keyPath, validators, value) {\n let returnValue = true;\n if (validators) {\n try {\n for (let validator of validators){\n const validatorResult = validator(value);\n if (typeof validatorResult === 'string') {\n const message = typeof value === 'object' ? `Invalid configuration for ${keyPath}: ${validatorResult}` : `Invalid configuration value ${value} for ${keyPath}: ${validatorResult}`;\n logError(keyPath, message);\n returnValue = false;\n }\n }\n } catch (e) {\n console.error(`Skipping invalid validator at \"${keyPath}\". Encountered error\\n\\t${e}`);\n }\n }\n return returnValue;\n}\n// Recursively fill in the config with values from the schema.\nconst setDefaults = (schema, inputConfig)=>{\n const config = structuredClone(inputConfig);\n if (!schema) {\n return config;\n }\n for (const key of Object.keys(schema)){\n const configPart = config[key];\n const schemaPart = schema[key];\n // The `schemaPart &&` clause of this `if` statement will only fail\n // if the schema is very invalid. It is there to prevent the app from\n // crashing completely, though it will produce unexpected behavior.\n // If this happens, there should be legible errors in the console from\n // the schema validator.\n if (schemaPart && (schemaPart.hasOwnProperty('_type') || schemaPart.hasOwnProperty('_default'))) {\n // We assume that schemaPart defines a config value, since it has\n // a property `_type` or `_default`.\n if (!config.hasOwnProperty(key)) {\n config[key] = schemaPart['_default'];\n }\n // We also check if it is an object or array with object elements, in which case we recurse\n const elements = schemaPart._elements;\n if (configPart && hasObjectSchema(elements)) {\n if (schemaPart._type === _types_js__rspack_import_0.Type.Array && Array.isArray(configPart)) {\n const configWithDefaults = configPart.map((conf)=>setDefaults(elements, conf));\n config[key] = configWithDefaults;\n } else if (schemaPart._type === _types_js__rspack_import_0.Type.Object) {\n for (let objectKey of Object.keys(configPart)){\n configPart[objectKey] = setDefaults(elements, configPart[objectKey]);\n }\n }\n }\n } else if (isOrdinaryObject(schemaPart)) {\n // Since schemaPart has no property \"_type\", if it's an ordinary object\n // (unlike, importantly, the validators array), we assume it is a parent config property.\n // We recurse to config[key] and schema[key]. Default config[key] to {}.\n const selectedConfigPart = configPart ?? {};\n // There will have been a validation error already if configPart is not a plain object.\n if (isOrdinaryObject(selectedConfigPart)) {\n config[key] = setDefaults(schemaPart, selectedConfigPart);\n }\n }\n }\n return config;\n};\nfunction hasObjectSchema(elementsSchema) {\n return !!elementsSchema && Object.keys(elementsSchema).filter((e)=>![\n '_default',\n '_validators'\n ].includes(e)).length > 0;\n}\nfunction isOrdinaryObject(value) {\n return typeof value === 'object' && !Array.isArray(value) && value !== null;\n}\n/** Keep track of which validation errors we have displayed. Each one should only be displayed once. */ let displayedValidationMessages = new Set();\nfunction logError(keyPath, message) {\n const key = `${keyPath}:::${message}`;\n // technically, this should not be possible, but because of how things wind-up transpiled, this isn't impossible\n if (!displayedValidationMessages) {\n displayedValidationMessages = new Set();\n }\n if (!displayedValidationMessages.has(key)) {\n console.error(message);\n displayedValidationMessages.add(key);\n }\n}\n/**\n * Normally, configuration errors are only displayed once. This function clears the list of\n * displayed errors, so that they will be displayed again.\n *\n * @internal\n */ function clearConfigErrors(keyPath) {\n if (keyPath) {\n displayedValidationMessages.forEach((key)=>{\n if (key.startsWith(keyPath)) {\n displayedValidationMessages.delete(key);\n }\n });\n } else {\n displayedValidationMessages.clear();\n }\n}\n/**\n * Cleans up all config store subscriptions and re-establishes them. This is primarily\n * useful for testing, where subscriptions set up at module load time need to be cleared\n * between tests to prevent infinite update loops. After clearing, subscriptions are\n * re-established so the config system continues to work normally.\n *\n * @internal\n */ function resetConfigSystem() {\n configSubscriptions.forEach((unsubscribe)=>unsubscribe());\n configSubscriptions.length = 0;\n // Cached configs are keyed on input identity, so a test that reuses the same schema or config\n // objects across cases would otherwise be served the previous case's result.\n moduleConfigCache.clear();\n extensionConfigCache.clear();\n schemaValuesAndSourcesCache.clear();\n implementerToolsModuleCache.clear();\n setupConfigSubscriptions();\n}\n/**\n * Copied over from esm-extensions. It rightly belongs to that module, but esm-config\n * cannot depend on esm-extensions.\n */ function getExtensionNameFromId(extensionId) {\n const [extensionName] = extensionId.split('#');\n return extensionName;\n}\n/**\n * The translation overrides schema is used in the implicit schema given to every module;\n * plus any additional translation namespaces (at time of writing, this is just 'core').\n */ const translationOverridesSchema = {\n 'Translation overrides': {\n _description: 'Per-language overrides for frontend translations should be keyed by language code and each language dictionary contains the translation key and the display value',\n _type: _types_js__rspack_import_0.Type.Object,\n _default: {},\n _validators: [\n (0,_validators_validator_js__rspack_import_2.validator)((o)=>Object.keys(o).every((k)=>/^[a-z]{2,3}(-[A-Z]{2,3})?$/.test(k)), (o)=>{\n const badKeys = Object.keys(o).filter((k)=>!/^[a-z]{2,3}(-[A-Z]{2,3})?$/.test(k));\n return `The 'Translation overrides' object should have language codes for keys. Language codes must be in the form of a two-to-three letter language code optionally followed by a hyphen and a two-to-three letter country code. The following keys do not conform: ${badKeys.join(', ')}.`;\n })\n ]\n }\n};\n/**\n * The implicitConfigSchema is implicitly included in every configuration schema\n */ const implicitConfigSchema = {\n 'Display conditions': {\n privileges: {\n _description: 'The privilege(s) the user must have to use this extension',\n _type: _types_js__rspack_import_0.Type.Array,\n _default: []\n },\n expression: {\n _description: 'The expression that determines whether the extension is displayed',\n _type: _types_js__rspack_import_0.Type.String,\n _default: undefined\n }\n },\n ...translationOverridesSchema\n};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218YnVpbHRpbjpzd2MtbG9hZGVyPz9ydWxlU2V0WzFdLnJ1bGVzWzVdLnVzZVswXSEvaG9tZS9ydW5uZXIvd29yay9vcGVubXJzLWVzbS1jb3JlL29wZW5tcnMtZXNtLWNvcmUvcGFja2FnZXMvZnJhbWV3b3JrL2VzbS1jb25maWcvZGlzdC9tb2R1bGUtY29uZmlnL21vZHVsZS1jb25maWcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tY29uZmlnL2Rpc3QvbW9kdWxlLWNvbmZpZy9tb2R1bGUtY29uZmlnLmpzP2MzYTUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IENvbmZpZyAqLyBpbXBvcnQgeyBjbG9uZURlZXAsIGlzRXF1YWwsIG1lcmdlV2l0aCwgb21pdCBhcyBsb2Rhc2hPbWl0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgVHlwZSB9IGZyb20gXCIuLi90eXBlcy5qc1wiO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNCb29sZWFuLCBpc1V1aWQsIGlzTnVtYmVyLCBpc09iamVjdCwgaXNTdHJpbmcgfSBmcm9tIFwiLi4vdmFsaWRhdG9ycy90eXBlLXZhbGlkYXRvcnMuanNcIjtcbmltcG9ydCB7IHZhbGlkYXRvciB9IGZyb20gXCIuLi92YWxpZGF0b3JzL3ZhbGlkYXRvci5qc1wiO1xuaW1wb3J0IHsgY29uZmlnRXh0ZW5zaW9uU3RvcmUsIGNvbmZpZ0ludGVybmFsU3RvcmUsIGdldENvbmZpZ1N0b3JlLCBnZXRFeHRlbnNpb25Db25maWcsIGdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUsIGdldEV4dGVuc2lvbnNDb25maWdTdG9yZSwgY2xlYXJDb25maWdEZXJpdmF0aW9uRXJyb3IsIGltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZSwgaW52YWxpZGF0ZUltcGxlbWVudGVyVG9vbHNDb25maWcsIHJlY29yZENvbmZpZ0Rlcml2YXRpb25FcnJvciwgc2V0SW1wbGVtZW50ZXJUb29sc0NvbmZpZ1JlY29tcHV0ZXIsIHRlbXBvcmFyeUNvbmZpZ1N0b3JlIH0gZnJvbSBcIi4vc3RhdGUuanNcIjtcbi8qKlxuICogRGVlcCBtZXJnZSB0d28gb2JqZWN0cywgd2l0aCByaWdodC1zaWRlIHZhbHVlcyB0YWtpbmcgcHJlY2VkZW5jZS5cbiAqIEFycmF5cyBhcmUgcmVwbGFjZWQgZW50aXJlbHkgKG5vdCBtZXJnZWQgYnkgaW5kZXgpLCBtYXRjaGluZyB0aGVcbiAqIGJlaGF2aW9yIG9mIHJhbWRhJ3MgbWVyZ2VEZWVwUmlnaHQuXG4gKi8gZnVuY3Rpb24gcmVwbGFjZUFycmF5cyhfb2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc3JjVmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBzcmNWYWx1ZTtcbiAgICB9XG59XG5mdW5jdGlvbiBtZXJnZURlZXBSZXBsYWNlKGxlZnQsIHJpZ2h0KSB7XG4gICAgcmV0dXJuIG1lcmdlV2l0aCh7fSwgbGVmdCwgcmlnaHQsIHJlcGxhY2VBcnJheXMpO1xufVxuLyoqXG4gKiBTdG9yZSBzZXR1cFxuICpcbiAqXG4gKiBTZXQgdXAgc3RvcmVzIGFuZCBzdWJzY3JpcHRpb25zIHNvIHRoYXQgaW5wdXRzIGdldCBwcm9jZXNzZWQgYXBwcm9wcmlhdGVseS5cbiAqXG4gKiBUaGVyZSBhcmUgKmlucHV0KiBzdG9yZXMgYW5kICpvdXRwdXQqIHN0b3Jlcy4gVGhlICppbnB1dCogc3RvcmVzXG4gKiBhcmUgY29uZmlnSW50ZXJuYWxTdG9yZSwgdGVtcG9yYXJ5Q29uZmlnU3RvcmUsIGFuZCBjb25maWdFeHRlbnNpb25TdG9yZS4gVGhlXG4gKiBvdXRwdXQgc3RvcmVzIGFyZSBzZXQgaW4gdGhlIGBjb21wdXRlLi4uYCBmdW5jdGlvbnMuIFRoZXkgYXJlIHRoZSBtb2R1bGVcbiAqIGNvbmZpZyBzdG9yZXMsIHRoZSBleHRlbnNpb24gc2xvdCBjb25maWcgc3RvcmVzIChieSBtb2R1bGUpLCB0aGUgZXh0ZW5zaW9uXG4gKiBjb25maWcgc3RvcmVzLCBhbmQgdGhlIGltcGxlbWVudGVyIHRvb2xzIGNvbmZpZyBzdG9yZS5cbiAqXG4gKiBUaGlzIGNvZGUgc2V0cyB1cCB0aGUgc3Vic2NyaXB0aW9ucyBzbyB0aGF0IHdoZW4gYW4gaW5wdXQgc3RvcmUgY2hhbmdlcyxcbiAqIHRoZSBjb3JyZWN0IHNldCBvZiBvdXRwdXQgc3RvcmVzIGFyZSB1cGRhdGVkLlxuICpcbiAqIEFsbCBgY29tcHV0ZS4uLmAgZnVuY3Rpb25zIGV4Y2VwdCBgY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3NgIGFyZSBwdXJlXG4gKiAob3IgYXJlIHN1cHBvc2VkIHRvIGJlKSwgb3RoZXIgdGhhbiB0aGUgZmFjdCB0aGF0IHRoZXkgYWxsIGBzZXRTdGF0ZWBcbiAqIHN0b3JlIHZhbHVlcyBhdCB0aGUgZW5kLiBgY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3NgIGNhbGxzIGBnZXRHbG9iYWxTdG9yZWAsXG4gKiB3aGljaCBjcmVhdGVzIHN0b3Jlcy5cbiAqLyAvLyBTdG9yZSB1bnN1YnNjcmliZSBmdW5jdGlvbnMgdG8gYWxsb3cgY2xlYW51cCAoZS5nLiwgaW4gdGVzdHMgb3IgaG90IG1vZHVsZSByZWxvYWRpbmcpXG5jb25zdCBjb25maWdTdWJzY3JpcHRpb25zID0gW107XG4vKipcbiAqIFJlY29tcHV0ZXMgYWxsIGNvbmZpZ3VyYXRpb24gZGVyaXZlZCBzdG9yZXMgYmFzZWQgb24gY3VycmVudCBzdGF0ZSBvZiBpbnB1dCBzdG9yZXMuXG4gKiBDYWxsZWQgd2hlbmV2ZXIgYW55IGlucHV0IHN0b3JlIChjb25maWdJbnRlcm5hbFN0b3JlLCB0ZW1wb3JhcnlDb25maWdTdG9yZSwgY29uZmlnRXh0ZW5zaW9uU3RvcmUpIGNoYW5nZXMuXG4gKi8gZnVuY3Rpb24gcmVjb21wdXRlQWxsQ29uZmlncygpIHtcbiAgICBjb25zdCBjb25maWdTdGF0ZSA9IGNvbmZpZ0ludGVybmFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB0ZW1wQ29uZmlnU3RhdGUgPSB0ZW1wb3JhcnlDb25maWdTdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IGV4dGVuc2lvblN0YXRlID0gY29uZmlnRXh0ZW5zaW9uU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBjb21wdXRlTW9kdWxlQ29uZmlnKGNvbmZpZ1N0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpO1xuICAgIGNvbnN0IHNsb3RDb25maWdzID0gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ3MoY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSk7XG4gICAgY29tcHV0ZUV4dGVuc2lvblNsb3RDb25maWdzKHNsb3RDb25maWdzKTtcbiAgICBjb21wdXRlRXh0ZW5zaW9uQ29uZmlncyhjb25maWdTdGF0ZSwgZXh0ZW5zaW9uU3RhdGUsIHRlbXBDb25maWdTdGF0ZSwgc2xvdENvbmZpZ3MpO1xuICAgIC8vIExhc3QsIGJlY2F1c2UgYSBmYWlsdXJlIGhlcmUgbXVzdCBub3Qgc2tpcCB0aGUgb3V0cHV0cyBhYm92ZS4gT25seSBrZXB0IGN1cnJlbnQgd2hpbGUgdGhlXG4gICAgLy8gaW1wbGVtZW50ZXIgdG9vbHMgYXJlIHdhdGNoaW5nIGl0OyBvdGhlcndpc2UgZGVyaXZlZCBvbiByZWFkLlxuICAgIGludmFsaWRhdGVJbXBsZW1lbnRlclRvb2xzQ29uZmlnKCk7XG59XG5mdW5jdGlvbiBzZXR1cENvbmZpZ1N1YnNjcmlwdGlvbnMoKSB7XG4gICAgLy8gUmVnaXN0ZXJlZCBoZXJlIHJhdGhlciB0aGFuIGF0IG1vZHVsZSBsb2FkIHNvIHRoYXQgYHJlc2V0Q29uZmlnU3lzdGVtYCByZXN0b3JlcyBpdC5cbiAgICBzZXRJbXBsZW1lbnRlclRvb2xzQ29uZmlnUmVjb21wdXRlcigoKT0+Y29tcHV0ZUltcGxlbWVudGVyVG9vbHNDb25maWcoY29uZmlnSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpLCB0ZW1wb3JhcnlDb25maWdTdG9yZS5nZXRTdGF0ZSgpKSk7XG4gICAgLy8gSW5pdGlhbCBjb21wdXRhdGlvblxuICAgIHJlY29tcHV0ZUFsbENvbmZpZ3MoKTtcbiAgICAvLyBTdWJzY3JpYmUgdG8gYWxsIGlucHV0IHN0b3JlcyB3aXRoIGEgc2luZ2xlIGhhbmRsZXJcbiAgICAvLyBUaGlzIGVuc3VyZXMgd2Ugb25seSByZWNvbXB1dGUgb25jZSBldmVuIGlmIG11bHRpcGxlIHN0b3JlcyBjaGFuZ2Ugc2ltdWx0YW5lb3VzbHlcbiAgICBjb25maWdTdWJzY3JpcHRpb25zLnB1c2goY29uZmlnSW50ZXJuYWxTdG9yZS5zdWJzY3JpYmUocmVjb21wdXRlQWxsQ29uZmlnc1NhZmVseSksIHRlbXBvcmFyeUNvbmZpZ1N0b3JlLnN1YnNjcmliZShyZWNvbXB1dGVBbGxDb25maWdzU2FmZWx5KSwgY29uZmlnRXh0ZW5zaW9uU3RvcmUuc3Vic2NyaWJlKHJlY29tcHV0ZUFsbENvbmZpZ3NTYWZlbHkpKTtcbn1cbi8qKiBFbnN1cmUgdGhhdCB3ZSBkbyBub3QgdGhyb3cgZHVyaW5nIGEgc3RvcmUgc3Vic2NyaXB0aW9uICovIGZ1bmN0aW9uIHJlY29tcHV0ZUFsbENvbmZpZ3NTYWZlbHkoKSB7XG4gICAgY2xlYXJDb25maWdEZXJpdmF0aW9uRXJyb3IoKTtcbiAgICB0cnkge1xuICAgICAgICByZWNvbXB1dGVBbGxDb25maWdzKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWNvcmRDb25maWdEZXJpdmF0aW9uRXJyb3IoZSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byByZWNvbXB1dGUgdGhlIGNvbmZpZ3VyYXRpb24nLCBlKTtcbiAgICB9XG59XG4vLyBTZXQgdXAgc3Vic2NyaXB0aW9ucyBhdCBtb2R1bGUgbG9hZCB0aW1lXG5zZXR1cENvbmZpZ1N1YnNjcmlwdGlvbnMoKTtcbmNvbnN0IG1vZHVsZUNvbmZpZ0NhY2hlID0gbmV3IE1hcCgpO1xuZnVuY3Rpb24gY29tcHV0ZU1vZHVsZUNvbmZpZyhzdGF0ZSwgdGVtcFN0YXRlKSB7XG4gICAgZm9yIChsZXQgbW9kdWxlTmFtZSBvZiBPYmplY3Qua2V5cyhzdGF0ZS5zY2hlbWFzKSl7XG4gICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHNjaGVtYSBjb3VsZCBiZSBlaXRoZXIganVzdCB0aGUgaW1wbGljaXQgc2NoZW1hIG9yIHRoZSBhY3R1YWxseVxuICAgICAgICAvLyBkZWZpbmVkIHNjaGVtYS4gV2UgcnVuIHdpdGgganVzdCB0aGUgaW1wbGljaXQgc2NoZW1hIGJlY2F1c2Ugd2Ugd2FudCB0byBwb3B1bGF0ZVxuICAgICAgICAvLyB0aGUgY29uZmlnIHN0b3JlIHdpdGggdGhlIHRyYW5zbGF0aW9uIG92ZXJyaWRlcyBhcyBzb29uIGFzIHBvc3NpYmxlLiBJbiBmYWN0LCB0aGVcbiAgICAgICAgLy8gdHJhbnNsYXRpb24gc3lzdGVtIHdpbGwgdGhyb3cgZm9yIFN1c3BlbnNlIHVudGlsIHRoZSB0cmFuc2xhdGlvbiBvdmVycmlkZXMgYXJlXG4gICAgICAgIC8vIGF2YWlsYWJsZSwgd2hpY2ggYXMgb2YgdGhpcyB3cml0aW5nIGJsb2NrcyB0aGUgc2NoZW1hIGRlZmluaXRpb24gZnJvbSBvY2N1cnJpbmdcbiAgICAgICAgLy8gZm9yIG1vZHVsZXMgbG9hZGVkIGJhc2VkIG9uIHRoZWlyIGV4dGVuc2lvbnMuXG4gICAgICAgIGNvbnN0IG1vZHVsZVN0b3JlID0gZ2V0Q29uZmlnU3RvcmUobW9kdWxlTmFtZSk7XG4gICAgICAgIGNvbnN0IHNjaGVtYSA9IHN0YXRlLnNjaGVtYXNbbW9kdWxlTmFtZV07XG4gICAgICAgIGNvbnN0IG1vZHVsZUxvYWRlZCA9IEJvb2xlYW4oc3RhdGUubW9kdWxlTG9hZGVkW21vZHVsZU5hbWVdKTtcbiAgICAgICAgY29uc3QgY2FjaGVkID0gbW9kdWxlQ29uZmlnQ2FjaGUuZ2V0KG1vZHVsZU5hbWUpO1xuICAgICAgICBsZXQgbmV3U3RhdGU7XG4gICAgICAgIGlmIChjYWNoZWQgJiYgY2FjaGVkLnNjaGVtYSA9PT0gc2NoZW1hICYmIGNhY2hlZC5tb2R1bGVMb2FkZWQgPT09IG1vZHVsZUxvYWRlZCAmJiBjYWNoZWQucHJvdmlkZWRDb25maWdzID09PSBzdGF0ZS5wcm92aWRlZENvbmZpZ3MgJiYgY2FjaGVkLnRlbXBvcmFyeUNvbmZpZyA9PT0gdGVtcFN0YXRlLmNvbmZpZykge1xuICAgICAgICAgICAgbmV3U3RhdGUgPSBjYWNoZWQuc3RhdGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSBtb2R1bGVMb2FkZWQgPyBnZXRDb25maWdGb3JNb2R1bGUobW9kdWxlTmFtZSwgc3RhdGUsIHRlbXBTdGF0ZSkgOiBnZXRDb25maWdGb3JNb2R1bGVJbXBsaWNpdFNjaGVtYShtb2R1bGVOYW1lLCBzdGF0ZSwgdGVtcFN0YXRlKTtcbiAgICAgICAgICAgIG5ld1N0YXRlID0ge1xuICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uT3ZlcnJpZGVzTG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGxvYWRlZDogbW9kdWxlTG9hZGVkLFxuICAgICAgICAgICAgICAgIGNvbmZpZ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIG1vZHVsZUNvbmZpZ0NhY2hlLnNldChtb2R1bGVOYW1lLCB7XG4gICAgICAgICAgICAgICAgc2NoZW1hLFxuICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlZCxcbiAgICAgICAgICAgICAgICBwcm92aWRlZENvbmZpZ3M6IHN0YXRlLnByb3ZpZGVkQ29uZmlncyxcbiAgICAgICAgICAgICAgICB0ZW1wb3JhcnlDb25maWc6IHRlbXBTdGF0ZS5jb25maWcsXG4gICAgICAgICAgICAgICAgc3RhdGU6IG5ld1N0YXRlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXcml0aW5nIHVuY29uZGl0aW9uYWxseSB3b3VsZCBoYW5kIGV2ZXJ5IGB1c2VDb25maWdgIGNvbnN1bWVyIGluIHRoZSBhcHBsaWNhdGlvbiBhIG5ld1xuICAgICAgICAvLyBvYmplY3Qg4oCUIGFuZCBhIHJlLXJlbmRlciDigJQgd2hlbmV2ZXIgYW55IG1vZHVsZSBvciBleHRlbnNpb24gYW55d2hlcmUgaXMgbG9hZGVkLlxuICAgICAgICBjb25zdCBvbGRTdGF0ZSA9IG1vZHVsZVN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIGlmIChvbGRTdGF0ZS5sb2FkZWQgIT09IG5ld1N0YXRlLmxvYWRlZCB8fCBvbGRTdGF0ZS50cmFuc2xhdGlvbk92ZXJyaWRlc0xvYWRlZCAhPT0gbmV3U3RhdGUudHJhbnNsYXRpb25PdmVycmlkZXNMb2FkZWQgfHwgIWlzRXF1YWwob2xkU3RhdGUuY29uZmlnLCBuZXdTdGF0ZS5jb25maWcpKSB7XG4gICAgICAgICAgICBtb2R1bGVTdG9yZS5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBjb21wdXRlRXh0ZW5zaW9uU2xvdENvbmZpZ3Moc2xvdENvbmZpZ3MpIHtcbiAgICBjb25zdCBzbG90U3RvcmUgPSBnZXRFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlKCk7XG4gICAgY29uc3Qgb2xkU2xvdHMgPSBzbG90U3RvcmUuZ2V0U3RhdGUoKS5zbG90cztcbiAgICBjb25zdCBzbG90cyA9IHt9O1xuICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBbc2xvdE5hbWUsIGNvbmZpZ10gb2YgT2JqZWN0LmVudHJpZXMoc2xvdENvbmZpZ3MpKXtcbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSBvbGRTbG90c1tzbG90TmFtZV07XG4gICAgICAgIC8vIEVudHJpZXMga2VlcCB0aGVpciBpZGVudGl0eSB3aGVuIHRoZSBjb25maWd1cmF0aW9uIGJlaGluZCB0aGVtIGhhc24ndCBjaGFuZ2VkLCBzbyB0aGF0XG4gICAgICAgIC8vIGNoYW5naW5nIG9uZSBzbG90J3MgY29uZmlndXJhdGlvbiBkb2Vzbid0IGludmFsaWRhdGUgZXZlcnkgb3RoZXIgY29uZmlndXJlZCBzbG90LlxuICAgICAgICBpZiAocHJldmlvdXM/LmxvYWRlZCAmJiBpc0VxdWFsKHByZXZpb3VzLmNvbmZpZywgY29uZmlnKSkge1xuICAgICAgICAgICAgc2xvdHNbc2xvdE5hbWVdID0gcHJldmlvdXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzbG90c1tzbG90TmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEJ1aWx0IGZyb20gc2NyYXRjaCByYXRoZXIgdGhhbiBtZXJnZWQgb3ZlciB0aGUgcHJldmlvdXMgc3RhdGU6IGEgc2xvdCB3aG9zZSBjb25maWd1cmF0aW9uXG4gICAgLy8gaGFzIGJlZW4gcmVtb3ZlZCDigJQgY2xlYXJpbmcgdGhlIHRlbXBvcmFyeSBjb25maWcsIHNheSDigJQgaGFzIHRvIGxvc2UgaXRzIGVudHJ5LCBvciB0aGUgb2xkXG4gICAgLy8gY29uZmlndXJhdGlvbiBzdGF5cyBpbiBmb3JjZSB1bnRpbCB0aGUgcGFnZSBpcyByZWxvYWRlZC5cbiAgICBpZiAoY2hhbmdlZCB8fCBPYmplY3Qua2V5cyhvbGRTbG90cykubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhzbG90cykubGVuZ3RoKSB7XG4gICAgICAgIHNsb3RTdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBzbG90c1xuICAgICAgICB9KTtcbiAgICB9XG59XG5mdW5jdGlvbiBjb21wdXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZyhzdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSB7XG4gICAgY29uc3Qgb2xkU3RhdGUgPSBpbXBsZW1lbnRlclRvb2xzQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBjb25maWcgPSBnZXRJbXBsZW1lbnRlclRvb2xzQ29uZmlnKHN0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpO1xuICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICBjb25maWdcbiAgICB9O1xuICAgIC8vIFVzZSBkZWVwIGVxdWFsaXR5IG9uIHRoZSBhY3R1YWwgY29uZmlnIGNvbnRlbnQsIG5vdCB0aGUgd3JhcHBlciBvYmplY3RcbiAgICBpZiAoIWlzRXF1YWwob2xkU3RhdGUuY29uZmlnLCBuZXdTdGF0ZS5jb25maWcpKSB7XG4gICAgICAgIGltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZS5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgfVxufVxuZnVuY3Rpb24gY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3MoY29uZmlnU3RhdGUsIGV4dGVuc2lvblN0YXRlLCB0ZW1wQ29uZmlnU3RhdGUsIHNsb3RDb25maWdzKSB7XG4gICAgY29uc3QgZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlID0gZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlKCk7XG4gICAgY29uc3Qgb2xkQ29uZmlncyA9IGV4dGVuc2lvbnNDb25maWdTdG9yZS5nZXRTdGF0ZSgpLmNvbmZpZ3M7XG4gICAgY29uc3QgY29uZmlncyA9IHt9O1xuICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgbGV0IGVudHJ5Q291bnQgPSAwO1xuICAgIC8vIFdlIGFzc3VtZSB0aGF0IHRoZSBtb2R1bGUgc2NoZW1hIGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZCwgc2luY2UgdGhlIGV4dGVuc2lvblxuICAgIC8vIGl0IGNvbnRhaW5zIGlzIG1vdW50ZWQuXG4gICAgZm9yIChsZXQgZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblN0YXRlLm1vdW50ZWRFeHRlbnNpb25zKXtcbiAgICAgICAgY29uc3QgY29uZmlnID0gY29tcHV0ZUV4dGVuc2lvbkNvbmZpZyhleHRlbnNpb24uc2xvdE1vZHVsZU5hbWUsIGV4dGVuc2lvbi5leHRlbnNpb25Nb2R1bGVOYW1lLCBleHRlbnNpb24uc2xvdE5hbWUsIGV4dGVuc2lvbi5leHRlbnNpb25JZCwgY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSwgc2xvdENvbmZpZ3NbZXh0ZW5zaW9uLnNsb3ROYW1lXSk7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzID0gb2xkQ29uZmlnc1tleHRlbnNpb24uc2xvdE5hbWVdPy5bZXh0ZW5zaW9uLmV4dGVuc2lvbklkXTtcbiAgICAgICAgLy8gRW50cmllcyBrZWVwIHRoZWlyIGlkZW50aXR5IHdoZW4gdGhlIGNvbmZpZ3VyYXRpb24gYmVoaW5kIHRoZW0gaGFzbid0IGNoYW5nZWQsIHNvIHRoYXRcbiAgICAgICAgLy8gbW91bnRpbmcgb25lIGV4dGVuc2lvbiBkb2Vzbid0IGhhbmQgZXZlcnkgb3RoZXIgbW91bnRlZCBleHRlbnNpb24gYSBuZXcgY29uZmlnIG9iamVjdC5cbiAgICAgICAgY29uc3QgZW50cnkgPSBwcmV2aW91cz8ubG9hZGVkICYmIGlzRXF1YWwocHJldmlvdXMuY29uZmlnLCBjb25maWcpID8gcHJldmlvdXMgOiB7XG4gICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICBsb2FkZWQ6IHRydWVcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGVudHJ5ICE9PSBwcmV2aW91cykge1xuICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjb25maWdzW2V4dGVuc2lvbi5zbG90TmFtZV0pIHtcbiAgICAgICAgICAgIGNvbmZpZ3NbZXh0ZW5zaW9uLnNsb3ROYW1lXSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGNvbmZpZ3NbZXh0ZW5zaW9uLnNsb3ROYW1lXVtleHRlbnNpb24uZXh0ZW5zaW9uSWRdID0gZW50cnk7XG4gICAgICAgIGVudHJ5Q291bnQrKztcbiAgICB9XG4gICAgLy8gU2xvdHMga2VlcCB0aGVpciBpZGVudGl0eSB0b28gd2hlbiBub25lIG9mIHRoZWlyIGVudHJpZXMgY2hhbmdlZC4gU3Vic2NyaWJlcnMgY29tcGFyZSB0aGVzZVxuICAgIC8vIHBlci1zbG90IG9iamVjdHMgdG8gd29yayBvdXQgd2hpY2ggc2xvdHMgdG8gcmUtZGVyaXZlLCBzbyBoYW5kaW5nIG91dCBhIGZyZXNoIG9uZSBmb3IgZXZlcnlcbiAgICAvLyBzbG90IG9uIGV2ZXJ5IHdyaXRlIHdvdWxkIG1hcmsgZXZlcnkgc2xvdCB3aXRoIGEgbW91bnRlZCBleHRlbnNpb24gZGlydHkuXG4gICAgZm9yIChjb25zdCBbc2xvdE5hbWUsIHNsb3RDb25maWdzXSBvZiBPYmplY3QuZW50cmllcyhjb25maWdzKSl7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzU2xvdCA9IG9sZENvbmZpZ3Nbc2xvdE5hbWVdO1xuICAgICAgICBpZiAocHJldmlvdXNTbG90ICYmIE9iamVjdC5rZXlzKHByZXZpb3VzU2xvdCkubGVuZ3RoID09PSBPYmplY3Qua2V5cyhzbG90Q29uZmlncykubGVuZ3RoICYmIE9iamVjdC5lbnRyaWVzKHNsb3RDb25maWdzKS5ldmVyeSgoW2V4dGVuc2lvbklkLCBlbnRyeV0pPT5wcmV2aW91c1Nsb3RbZXh0ZW5zaW9uSWRdID09PSBlbnRyeSkpIHtcbiAgICAgICAgICAgIGNvbmZpZ3Nbc2xvdE5hbWVdID0gcHJldmlvdXNTbG90O1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICghY2hhbmdlZCkge1xuICAgICAgICAvLyBOb3RoaW5nIHdhcyBhZGRlZCBvciBhbHRlcmVkLCBidXQgYW4gZXh0ZW5zaW9uIG1heSBoYXZlIHVubW91bnRlZCwgd2hpY2ggb25seSBzaG93cyB1cCBhcyBhXG4gICAgICAgIC8vIG1pc3NpbmcgZW50cnkuXG4gICAgICAgIGNoYW5nZWQgPSBPYmplY3Qua2V5cyhvbGRDb25maWdzKS5sZW5ndGggIT09IE9iamVjdC5rZXlzKGNvbmZpZ3MpLmxlbmd0aCB8fCBPYmplY3QudmFsdWVzKG9sZENvbmZpZ3MpLnJlZHVjZSgodG90YWwsIHNsb3QpPT50b3RhbCArIE9iamVjdC5rZXlzKHNsb3QpLmxlbmd0aCwgMCkgIT09IGVudHJ5Q291bnQ7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgIGV4dGVuc2lvbnNDb25maWdTdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBjb25maWdzXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbi8qXG4gKiBBUElcbiAqXG4gKi8gLyoqXG4gKiBUaGlzIGRlZmluZXMgYSBjb25maWd1cmF0aW9uIHNjaGVtYSBmb3IgYSBtb2R1bGUuIFRoZSBzY2hlbWEgdGVsbHMgdGhlXG4gKiBjb25maWd1cmF0aW9uIHN5c3RlbSBob3cgdGhlIG1vZHVsZSBjYW4gYmUgY29uZmlndXJlZC4gSXQgc3BlY2lmaWVzXG4gKiB3aGF0IG1ha2VzIGNvbmZpZ3VyYXRpb24gdmFsaWQgb3IgaW52YWxpZC5cbiAqXG4gKiBTZWUgW0NvbmZpZ3VyYXRpb24gU3lzdGVtXShodHRwczovL28zLWRvY3Mub3Blbm1ycy5vcmcvZW4tVVMvZG9jcy9jb25maWd1cmF0aW9uLXN5c3RlbSlcbiAqIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGRlZmluaW5nIGEgY29uZmlnIHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlTmFtZSBOYW1lIG9mIHRoZSBtb2R1bGUgdGhlIHNjaGVtYSBpcyBiZWluZyBkZWZpbmVkIGZvci4gR2VuZXJhbGx5XG4gKiAgIHNob3VsZCBiZSB0aGUgb25lIGluIHdoaWNoIHRoZSBgZGVmaW5lQ29uZmlnU2NoZW1hYCBjYWxsIHRha2VzIHBsYWNlLlxuICogQHBhcmFtIHNjaGVtYSBUaGUgY29uZmlnIHNjaGVtYSBmb3IgdGhlIG1vZHVsZVxuICovIGV4cG9ydCBmdW5jdGlvbiBkZWZpbmVDb25maWdTY2hlbWEobW9kdWxlTmFtZSwgc2NoZW1hKSB7XG4gICAgdmFsaWRhdGVDb25maWdTY2hlbWEobW9kdWxlTmFtZSwgc2NoZW1hKTtcbiAgICBjb25zdCBlbmhhbmNlZFNjaGVtYSA9IG1lcmdlRGVlcFJlcGxhY2Uoc2NoZW1hLCBpbXBsaWNpdENvbmZpZ1NjaGVtYSk7XG4gICAgY29uZmlnSW50ZXJuYWxTdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBzY2hlbWFzOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUuc2NoZW1hcyxcbiAgICAgICAgICAgICAgICBbbW9kdWxlTmFtZV06IGVuaGFuY2VkU2NoZW1hXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbW9kdWxlTG9hZGVkOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUubW9kdWxlTG9hZGVkLFxuICAgICAgICAgICAgICAgIFttb2R1bGVOYW1lXTogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG59XG4vKipcbiAqIFRoaXMgYWxlcnRzIHRoZSBjb25maWd1cmF0aW9uIHN5c3RlbSB0aGF0IGEgbW9kdWxlIGV4aXN0cy4gVGhpcyBhbGxvd3MgY29uZmlnIHRvIGJlXG4gKiBwcm9jZXNzZWQsIHdoaWxlIHN0aWxsIGFsbG93aW5nIHRoZSBleHRlbnNpb24gc3lzdGVtIHRvIGtub3cgd2hldGhlciB0aGUgbW9kdWxlIGhhc1xuICogYWN0dWFsbHkgaGFkIGl0cyBmcm9udCBidW5kbGUgZXhlY3V0ZWQgeWV0LlxuICpcbiAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBlc20tYXBwLXNoZWxsLlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIG1vZHVsZU5hbWVcbiAqLyBleHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJNb2R1bGVXaXRoQ29uZmlnU3lzdGVtKG1vZHVsZU5hbWUpIHtcbiAgICBjb25maWdJbnRlcm5hbFN0b3JlLnNldFN0YXRlKChzdGF0ZSk9Pih7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIHNjaGVtYXM6IHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZS5zY2hlbWFzLFxuICAgICAgICAgICAgICAgIFttb2R1bGVOYW1lXTogaW1wbGljaXRDb25maWdTY2hlbWFcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xufVxuLyoqXG4gKiBUaGlzIGFsZXJ0cyB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0gdGhhdCBhIG1vZHVsZSBoYXMgYmVlbiBsb2FkZWQuXG4gKlxuICogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGluIGVzbS1hcHAtc2hlbGwuXG4gKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0gbW9kdWxlTmFtZVxuICovIGV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlck1vZHVsZUxvYWQobW9kdWxlTmFtZSkge1xuICAgIGNvbmZpZ0ludGVybmFsU3RvcmUuc2V0U3RhdGUoKHN0YXRlKT0+KHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgbW9kdWxlTG9hZGVkOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUubW9kdWxlTG9hZGVkLFxuICAgICAgICAgICAgICAgIFttb2R1bGVOYW1lXTogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG59XG4vKipcbiAqIFRoaXMgYWxsb3dzIHRoZSBjb25maWcgc3lzdGVtIHRvIHN1cHBvcnQgdHJhbnNsYXRpb24gb3ZlcnJpZGVzIGZvciBuYW1lc3BhY2VzIHRoYXRcbiAqIGRvIG5vdCBjb3JyZXNwb25kIHRvIG1vZHVsZXMuXG4gKlxuICogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGluIGVzbS1hcHAtc2hlbGwuXG4gKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0gbmFtZXNwYWNlXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyVHJhbnNsYXRpb25OYW1lc3BhY2UobmFtZXNwYWNlKSB7XG4gICAgY29uZmlnSW50ZXJuYWxTdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBzY2hlbWFzOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUuc2NoZW1hcyxcbiAgICAgICAgICAgICAgICBbbmFtZXNwYWNlXTogdHJhbnNsYXRpb25PdmVycmlkZXNTY2hlbWFcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xufVxuLyoqXG4gKiBUaGlzIGRlZmluZXMgYSBjb25maWd1cmF0aW9uIHNjaGVtYSBmb3IgYW4gZXh0ZW5zaW9uLiBXaGVuIGEgc2NoZW1hIGlzIGRlZmluZWRcbiAqIGZvciBhbiBleHRlbnNpb24sIHRoYXQgZXh0ZW5zaW9uIHdpbGwgcmVjZWl2ZSB0aGUgY29uZmlndXJhdGlvbiBjb3JyZXNwb25kaW5nXG4gKiB0byB0aGF0IHNjaGVtYSwgcmF0aGVyIHRoYW4gdGhlIGNvbmZpZ3VyYXRpb24gY29ycmVzcG9uZGluZyB0byB0aGUgbW9kdWxlXG4gKiBpbiB3aGljaCBpdCBpcyBkZWZpbmVkLlxuICpcbiAqIFRoZSBzY2hlbWEgdGVsbHMgdGhlIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGhvdyB0aGUgbW9kdWxlIGNhbiBiZSBjb25maWd1cmVkLlxuICogSXQgc3BlY2lmaWVzIHdoYXQgbWFrZXMgY29uZmlndXJhdGlvbiB2YWxpZCBvciBpbnZhbGlkLlxuICpcbiAqIFNlZSBbQ29uZmlndXJhdGlvbiBTeXN0ZW1dKGh0dHBzOi8vbzMtZG9jcy5vcGVubXJzLm9yZy9lbi1VUy9kb2NzL2NvbmZpZ3VyYXRpb24tc3lzdGVtKVxuICogZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgZGVmaW5pbmcgYSBjb25maWcgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBleHRlbnNpb25OYW1lIE5hbWUgb2YgdGhlIGV4dGVuc2lvbiB0aGUgc2NoZW1hIGlzIGJlaW5nIGRlZmluZWQgZm9yLlxuICogICBTaG91bGQgbWF0Y2ggdGhlIGBuYW1lYCBvZiBvbmUgb2YgdGhlIGBleHRlbnNpb25zYCBlbnRyaWVzIGRlZmluZWQgaW5cbiAqICAgdGhlIGFwcCdzIGByb3V0ZXMuanNvbmAgZmlsZS5cbiAqIEBwYXJhbSBzY2hlbWEgVGhlIGNvbmZpZyBzY2hlbWEgZm9yIHRoZSBleHRlbnNpb25cbiAqLyBleHBvcnQgZnVuY3Rpb24gZGVmaW5lRXh0ZW5zaW9uQ29uZmlnU2NoZW1hKGV4dGVuc2lvbk5hbWUsIHNjaGVtYSkge1xuICAgIHZhbGlkYXRlQ29uZmlnU2NoZW1hKGV4dGVuc2lvbk5hbWUsIHNjaGVtYSk7XG4gICAgY29uc3QgZW5oYW5jZWRTY2hlbWEgPSBtZXJnZURlZXBSZXBsYWNlKHNjaGVtYSwgaW1wbGljaXRDb25maWdTY2hlbWEpO1xuICAgIGNvbnN0IHN0YXRlID0gY29uZmlnSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGlmIChzdGF0ZS5zY2hlbWFzW2V4dGVuc2lvbk5hbWVdKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYENvbmZpZyBzY2hlbWEgZm9yIGV4dGVuc2lvbiAke2V4dGVuc2lvbk5hbWV9IGFscmVhZHkgZXhpc3RzLiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgZXh0ZW5zaW9ucyB3aXRoIHRoaXMgc2FtZSBuYW1lLCBvbmUgd2lsbCBwcm9iYWJseSBjcmFzaC5gKTtcbiAgICB9XG4gICAgY29uZmlnSW50ZXJuYWxTdG9yZS5zZXRTdGF0ZSgoc3RhdGUpPT4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBzY2hlbWFzOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUuc2NoZW1hcyxcbiAgICAgICAgICAgICAgICBbZXh0ZW5zaW9uTmFtZV06IGVuaGFuY2VkU2NoZW1hXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgY29uZmlndXJhdGlvbiB2YWx1ZXMgcHJvZ3JhbW1hdGljYWxseS4gVGhpcyBpcyBhbiBhbHRlcm5hdGl2ZSB0b1xuICogcHJvdmlkaW5nIGNvbmZpZ3VyYXRpb24gdGhyb3VnaCB0aGUgY29uZmlnLWZpbGUuIENvbmZpZ3VyYXRpb24gcHJvdmlkZWQgdGhpc1xuICogd2F5IHdpbGwgYmUgbWVyZ2VkIHdpdGggY29uZmlndXJhdGlvbiBmcm9tIG90aGVyIHNvdXJjZXMuXG4gKlxuICogQHBhcmFtIGNvbmZpZyBBIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRvIG1lcmdlIGludG8gdGhlIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0gc291cmNlTmFtZSBBbiBvcHRpb25hbCBuYW1lIHRvIGlkZW50aWZ5IHRoZSBzb3VyY2Ugb2YgdGhpcyBjb25maWd1cmF0aW9uLFxuICogICB1c2VkIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuIERlZmF1bHRzIHRvICdwcm92aWRlZCcuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGUoY29uZmlnLCBzb3VyY2VOYW1lID0gJ3Byb3ZpZGVkJykge1xuICAgIGNvbmZpZ0ludGVybmFsU3RvcmUuc2V0U3RhdGUoKHN0YXRlKT0+KHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgcHJvdmlkZWRDb25maWdzOiBbXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUucHJvdmlkZWRDb25maWdzLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc291cmNlOiBzb3VyY2VOYW1lLFxuICAgICAgICAgICAgICAgICAgICBjb25maWdcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0pKTtcbn1cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBgc2VsZWN0KHN0YXRlKWAgYXMgc29vbiBhcyB0aGUgc3RvcmUncyBzdGF0ZSBzYXRpc2ZpZXMgYHJlYWR5YCwgbGVhdmluZyBub1xuICogc3Vic2NyaXB0aW9uIGJlaGluZDogbm90aGluZyBzdWJzY3JpYmVzIGF0IGFsbCB3aGVuIHRoZSBzdG9yZSBpcyBhbHJlYWR5IHJlYWR5LiBUaGF0IG1hdHRlcnNcbiAqIGJlY2F1c2UgYGdldENvbmZpZ2AgcnVucyBvbiBldmVyeSBIVFRQIHJlcXVlc3QsIGFuZCBhIHN1YnNjcmlwdGlvbiB0aGF0IG91dGxpdmVzIGl0cyBwcm9taXNlXG4gKiBib3RoIHJldGFpbnMgaXRzIGNsb3N1cmUgZm9yZXZlciBhbmQgc2xvd3MgZG93biBldmVyeSBsYXRlciB3cml0ZSB0byB0aGF0IHN0b3JlLlxuICovIGZ1bmN0aW9uIHdoZW5TdG9yZVJlYWR5KHN0b3JlLCByZWFkeSwgc2VsZWN0KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xuICAgICAgICBsZXQgdW5zdWJzY3JpYmU7XG4gICAgICAgIGxldCByZXNvbHZlZCA9IGZhbHNlO1xuICAgICAgICBmdW5jdGlvbiB1cGRhdGUoc3RhdGUpIHtcbiAgICAgICAgICAgIGlmICghcmVzb2x2ZWQgJiYgcmVhZHkoc3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoc2VsZWN0KHN0YXRlKSk7XG4gICAgICAgICAgICAgICAgdW5zdWJzY3JpYmU/LigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZShzdG9yZS5nZXRTdGF0ZSgpKTtcbiAgICAgICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgICAgICAgdW5zdWJzY3JpYmUgPSBzdG9yZS5zdWJzY3JpYmUodXBkYXRlKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuLyoqXG4gKiBBIHByb21pc2UtYmFzZWQgd2F5IHRvIGFjY2VzcyB0aGUgY29uZmlnIGFzIHNvb24gYXMgaXQgaXMgZnVsbHkgbG9hZGVkLlxuICogSWYgaXQgaXMgYWxyZWFkeSBsb2FkZWQsIHJlc29sdmVzIHRoZSBjb25maWcgaW4gaXRzIHByZXNlbnQgc3RhdGUuXG4gKlxuICogVGhpcyBpcyBhIHVzZWZ1bCBmdW5jdGlvbiBpZiB5b3UgbmVlZCB0byBnZXQgdGhlIGNvbmZpZyBpbiB0aGUgY291cnNlXG4gKiBvZiB0aGUgZXhlY3V0aW9uIG9mIGEgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIG1vZHVsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBmb3Igd2hpY2ggdG8gbG9vayB1cCB0aGUgY29uZmlnXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZyhtb2R1bGVOYW1lKSB7XG4gICAgcmV0dXJuIHdoZW5TdG9yZVJlYWR5KGdldENvbmZpZ1N0b3JlKG1vZHVsZU5hbWUpLCAoc3RhdGUpPT5Cb29sZWFuKHN0YXRlLmxvYWRlZCAmJiBzdGF0ZS5jb25maWcpLCAoc3RhdGUpPT5sb2Rhc2hPbWl0KHN0YXRlLmNvbmZpZywgW1xuICAgICAgICAgICAgJ0Rpc3BsYXkgY29uZGl0aW9ucycsXG4gICAgICAgICAgICAnVHJhbnNsYXRpb24gb3ZlcnJpZGVzJ1xuICAgICAgICBdKSk7XG59XG4vKipcbiAqIFJldHJpZXZlcyB0cmFuc2xhdGlvbiBvdmVycmlkZXMgZm9yIGFuIGV4dGVuc2lvbiwgb3B0aW9uYWxseSBzY29wZWQgdG8gYSBzcGVjaWZpY1xuICogZXh0ZW5zaW9uIHNsb3QuIFdoZW4gY2FsbGVkIHdpdGggb25seSBhIG1vZHVsZSBuYW1lLCByZXRyaWV2ZXMgbW9kdWxlLWxldmVsIG92ZXJyaWRlcy5cbiAqIFRyYW5zbGF0aW9uIG92ZXJyaWRlcyBhbGxvdyBjdXN0b21pemluZyB0cmFuc2xhdGVkIHN0cmluZ3Mgd2l0aG91dCBtb2RpZnlpbmcgdGhlXG4gKiBvcmlnaW5hbCB0cmFuc2xhdGlvbiBmaWxlcy5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHByb3ZpZGluZyB0aGUgdHJhbnNsYXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSBzbG90TmFtZSBPcHRpb25hbCBleHRlbnNpb24gc2xvdCBuYW1lIHRvIGluY2x1ZGUgc2xvdC1zcGVjaWZpYyBvdmVycmlkZXMuXG4gKiBAcGFyYW0gZXh0ZW5zaW9uSWQgT3B0aW9uYWwgZXh0ZW5zaW9uIElEIHRvIGluY2x1ZGUgZXh0ZW5zaW9uLXNwZWNpZmljIG92ZXJyaWRlcy5cbiAqIEByZXR1cm5zIEEgUHJvbWlzZSByZXNvbHZpbmcgdG8gYW4gYXJyYXkgb2YgdHJhbnNsYXRpb24gb3ZlcnJpZGUgb2JqZWN0cy5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNsYXRpb25PdmVycmlkZXMobW9kdWxlTmFtZSwgc2xvdE5hbWUsIGV4dGVuc2lvbklkKSB7XG4gICAgY29uc3QgcHJvbWlzZXMgPSBbXG4gICAgICAgIHdoZW5TdG9yZVJlYWR5KGdldENvbmZpZ1N0b3JlKG1vZHVsZU5hbWUpLCAoc3RhdGUpPT5Cb29sZWFuKHN0YXRlLnRyYW5zbGF0aW9uT3ZlcnJpZGVzTG9hZGVkICYmIHN0YXRlLmNvbmZpZyksIChzdGF0ZSk9PnN0YXRlLmNvbmZpZ1snVHJhbnNsYXRpb24gb3ZlcnJpZGVzJ10gPz8ge30pXG4gICAgXTtcbiAgICBpZiAoc2xvdE5hbWUgJiYgZXh0ZW5zaW9uSWQpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaCh3aGVuU3RvcmVSZWFkeShnZXRFeHRlbnNpb25Db25maWcoc2xvdE5hbWUsIGV4dGVuc2lvbklkKSwgKHN0YXRlKT0+Qm9vbGVhbihzdGF0ZS5sb2FkZWQgJiYgc3RhdGUuY29uZmlnKSwgKHN0YXRlKT0+c3RhdGUuY29uZmlnWydUcmFuc2xhdGlvbiBvdmVycmlkZXMnXSA/PyB7fSkpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufVxuLyoqXG4gKiBWYWxpZGF0ZSBhbmQgaW50ZXJwb2xhdGUgZGVmYXVsdHMgZm9yIGBwcm92aWRlZENvbmZpZ2AgYWNjb3JkaW5nIHRvIGBzY2hlbWFgXG4gKlxuICogQHBhcmFtIHNjaGVtYSAgYSBjb25maWd1cmF0aW9uIHNjaGVtYVxuICogQHBhcmFtIHByb3ZpZGVkQ29uZmlnICBhbiBvYmplY3Qgb2YgY29uZmlnIHZhbHVlcyAod2l0aG91dCB0aGUgdG9wLWxldmVsIG1vZHVsZSBuYW1lKVxuICogQHBhcmFtIGtleVBhdGhDb250ZXh0ICBhIGRvdC1zZXBhcmF0ZWQgc3RyaW5nIHdoaWNoIGhlbHBzIHRoZSB1c2VyIGZpZ3VyZSBvdXQgd2hlcmVcbiAqICAgICB0aGUgcHJvdmlkZWQgY29uZmlnIGNhbWUgZnJvbVxuICogQHJldHVybnMgVGhlIHZhbGlkYXRlZCBhbmQgcHJvY2Vzc2VkIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHdpdGggZGVmYXVsdHMgYXBwbGllZC5cbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzQ29uZmlnKHNjaGVtYSwgcHJvdmlkZWRDb25maWcsIGtleVBhdGhDb250ZXh0KSB7XG4gICAgdmFsaWRhdGVTdHJ1Y3R1cmUoc2NoZW1hLCBwcm92aWRlZENvbmZpZywga2V5UGF0aENvbnRleHQpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHNldERlZmF1bHRzKHNjaGVtYSwgcHJvdmlkZWRDb25maWcpO1xuICAgIHJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUoc2NoZW1hLCBjb25maWcsIGtleVBhdGhDb250ZXh0KTtcbiAgICByZXR1cm4gY29uZmlnO1xufVxuY29uc3QgZXh0ZW5zaW9uQ29uZmlnQ2FjaGUgPSBuZXcgTWFwKCk7XG4vKipcbiAqIFJldHVybnMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIGFuIGV4dGVuc2lvbi4gVGhpcyBjb25maWd1cmF0aW9uIGlzIHNwZWNpZmljXG4gKiB0byB0aGUgc2xvdCBpbiB3aGljaCBpdCBpcyBtb3VudGVkLCBhbmQgaXRzIElEIHdpdGhpbiB0aGF0IHNsb3QuXG4gKlxuICogVGhlIHNjaGVtYSBmb3IgdGhhdCBjb25maWd1cmF0aW9uIGlzIHRoZSBleHRlbnNpb24gc2NoZW1hLiBJZiBubyBleHRlbnNpb25cbiAqIHNjaGVtYSBoYXMgYmVlbiBwcm92aWRlZCwgdGhlIHNjaGVtYSB1c2VkIGlzIHRoZSBzY2hlbWEgb2YgdGhlIG1vZHVsZSBpblxuICogd2hpY2ggdGhlIGV4dGVuc2lvbiBpcyBkZWZpbmVkLlxuICpcbiAqIEBwYXJhbSBzbG90TW9kdWxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHdoaWNoIGRlZmluZXMgdGhlIGV4dGVuc2lvbiBzbG90XG4gKiBAcGFyYW0gZXh0ZW5zaW9uTW9kdWxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHdoaWNoIGRlZmluZXMgdGhlIGV4dGVuc2lvbiAoYW5kIHRoZXJlZm9yZSB0aGUgY29uZmlnIHNjaGVtYSlcbiAqIEBwYXJhbSBzbG90TmFtZSBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHNsb3Qgd2hlcmUgdGhlIGV4dGVuc2lvbiBpcyBtb3VudGVkXG4gKiBAcGFyYW0gZXh0ZW5zaW9uSWQgVGhlIElEIG9mIHRoZSBleHRlbnNpb24gaW4gaXRzIHNsb3RcbiAqIEBwYXJhbSBzbG90Q29uZmlnIFRoZSBzbG90J3MgY29uZmlndXJhdGlvbiwgZ2F0aGVyZWQgZnJvbSBldmVyeSBtb2R1bGUgdGhhdCBjb25maWd1cmVzIGl0XG4gKi8gZnVuY3Rpb24gY29tcHV0ZUV4dGVuc2lvbkNvbmZpZyhzbG90TW9kdWxlTmFtZSwgZXh0ZW5zaW9uTW9kdWxlTmFtZSwgc2xvdE5hbWUsIGV4dGVuc2lvbklkLCBjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlLCBzbG90Q29uZmlnKSB7XG4gICAgY29uc3QgZXh0ZW5zaW9uTmFtZSA9IGdldEV4dGVuc2lvbk5hbWVGcm9tSWQoZXh0ZW5zaW9uSWQpO1xuICAgIGNvbnN0IGV4dGVuc2lvbkNvbmZpZ1NjaGVtYSA9IGNvbmZpZ1N0YXRlLnNjaGVtYXNbZXh0ZW5zaW9uTmFtZV07XG4gICAgLy8gSlNPTiBzdHJpbmcgb2YgdGhlc2UgZWxlbWVudHMgc2hvdWxkIGJlIHVuaXF1ZS1wZXItZXh0ZW5zaW9uXG4gICAgY29uc3QgY2FjaGVLZXkgPSBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgIHNsb3ROYW1lLFxuICAgICAgICBleHRlbnNpb25JZCxcbiAgICAgICAgc2xvdE1vZHVsZU5hbWUsXG4gICAgICAgIGV4dGVuc2lvbk1vZHVsZU5hbWVcbiAgICBdKTtcbiAgICBjb25zdCBjYWNoZWQgPSBleHRlbnNpb25Db25maWdDYWNoZS5nZXQoY2FjaGVLZXkpO1xuICAgIGlmIChjYWNoZWQgJiYgY2FjaGVkLmV4dGVuc2lvblNjaGVtYSA9PT0gZXh0ZW5zaW9uQ29uZmlnU2NoZW1hICYmIGNhY2hlZC5leHRlbnNpb25Nb2R1bGVTY2hlbWEgPT09IGNvbmZpZ1N0YXRlLnNjaGVtYXNbZXh0ZW5zaW9uTW9kdWxlTmFtZV0gJiYgY2FjaGVkLnByb3ZpZGVkQ29uZmlncyA9PT0gY29uZmlnU3RhdGUucHJvdmlkZWRDb25maWdzICYmIGNhY2hlZC50ZW1wb3JhcnlDb25maWcgPT09IHRlbXBDb25maWdTdGF0ZS5jb25maWcpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZC5jb25maWc7XG4gICAgfVxuICAgIGNvbnN0IG5hbWVPZlNjaGVtYVNvdXJjZSA9IGV4dGVuc2lvbkNvbmZpZ1NjaGVtYSA/IGV4dGVuc2lvbk5hbWUgOiBleHRlbnNpb25Nb2R1bGVOYW1lO1xuICAgIGNvbnN0IHByb3ZpZGVkQ29uZmlncyA9IGdldFByb3ZpZGVkQ29uZmlncyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKTtcbiAgICBjb25zdCBzaGFyZWRPdmVycmlkZSA9IHNsb3RDb25maWc/LmNvbmZpZ3VyZT8uW2V4dGVuc2lvbklkXSA/PyB7fTtcbiAgICBjb25zdCBzbG90TW9kdWxlQ29uZmlnID0gbWVyZ2VDb25maWdzRm9yKHNsb3RNb2R1bGVOYW1lLCBwcm92aWRlZENvbmZpZ3MpO1xuICAgIGNvbnN0IGNvbmZpZ092ZXJyaWRlID0gc2xvdE1vZHVsZUNvbmZpZz8uZXh0ZW5zaW9uU2xvdHM/LltzbG90TmFtZV0/LmNvbmZpZ3VyZT8uW2V4dGVuc2lvbklkXSA/PyB7fTtcbiAgICBjb25zdCBleHRlbnNpb25Db25maWcgPSBtZXJnZUNvbmZpZ3NGb3IobmFtZU9mU2NoZW1hU291cmNlLCBwcm92aWRlZENvbmZpZ3MpO1xuICAgIGNvbnN0IGNvbWJpbmVkQ29uZmlnID0gbWVyZ2VDb25maWdzKFtcbiAgICAgICAgZXh0ZW5zaW9uQ29uZmlnLFxuICAgICAgICBzaGFyZWRPdmVycmlkZSxcbiAgICAgICAgY29uZmlnT3ZlcnJpZGVcbiAgICBdKTtcbiAgICBjb25zdCBzY2hlbWEgPSBleHRlbnNpb25Db25maWdTY2hlbWEgPz8gY29uZmlnU3RhdGUuc2NoZW1hc1tleHRlbnNpb25Nb2R1bGVOYW1lXTtcbiAgICB2YWxpZGF0ZVN0cnVjdHVyZShzY2hlbWEsIGNvbWJpbmVkQ29uZmlnLCBuYW1lT2ZTY2hlbWFTb3VyY2UpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHNldERlZmF1bHRzKHNjaGVtYSwgY29tYmluZWRDb25maWcpO1xuICAgIHJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUoc2NoZW1hLCBjb25maWcsIG5hbWVPZlNjaGVtYVNvdXJjZSk7XG4gICAgZGVsZXRlIGNvbmZpZy5leHRlbnNpb25TbG90cztcbiAgICBleHRlbnNpb25Db25maWdDYWNoZS5zZXQoY2FjaGVLZXksIHtcbiAgICAgICAgZXh0ZW5zaW9uU2NoZW1hOiBleHRlbnNpb25Db25maWdTY2hlbWEsXG4gICAgICAgIGV4dGVuc2lvbk1vZHVsZVNjaGVtYTogY29uZmlnU3RhdGUuc2NoZW1hc1tleHRlbnNpb25Nb2R1bGVOYW1lXSxcbiAgICAgICAgcHJvdmlkZWRDb25maWdzOiBjb25maWdTdGF0ZS5wcm92aWRlZENvbmZpZ3MsXG4gICAgICAgIHRlbXBvcmFyeUNvbmZpZzogdGVtcENvbmZpZ1N0YXRlLmNvbmZpZyxcbiAgICAgICAgY29uZmlnXG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbmZpZztcbn1cbmNvbnN0IGltcGxlbWVudGVyVG9vbHNNb2R1bGVDYWNoZSA9IG5ldyBNYXAoKTtcbmZ1bmN0aW9uIGdldEltcGxlbWVudGVyVG9vbHNDb25maWcoY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSkge1xuICAgIGNvbnN0IGFubm90YXRlZFNjaGVtYXMgPSBnZXRBbGxTY2hlbWFzV2l0aFZhbHVlc0FuZFNvdXJjZXMoY29uZmlnU3RhdGUuc2NoZW1hcyk7XG4gICAgY29uc3QgY29uZmlnc0FuZFNvdXJjZXMgPSBbXG4gICAgICAgIC4uLmNvbmZpZ1N0YXRlLnByb3ZpZGVkQ29uZmlncy5tYXAoKGMpPT5bXG4gICAgICAgICAgICAgICAgYy5jb25maWcsXG4gICAgICAgICAgICAgICAgYy5zb3VyY2VcbiAgICAgICAgICAgIF0pLFxuICAgICAgICBbXG4gICAgICAgICAgICB0ZW1wQ29uZmlnU3RhdGUuY29uZmlnLFxuICAgICAgICAgICAgJ3RlbXBvcmFyeSBjb25maWcnXG4gICAgICAgIF1cbiAgICBdO1xuICAgIC8vIEEgbW9kdWxlIGNhbiBiZSBjb25maWd1cmVkIHdpdGhvdXQgaGF2aW5nIGRlY2xhcmVkIGEgc2NoZW1hLCBzbyB0aGUgbW9kdWxlIGxpc3QgaXMgdGhlIHVuaW9uXG4gICAgLy8gb2YgYm90aCByYXRoZXIgdGhhbiBqdXN0IHRoZSBzY2hlbWFzLlxuICAgIGNvbnN0IG1vZHVsZU5hbWVzID0gbmV3IFNldChPYmplY3Qua2V5cyhhbm5vdGF0ZWRTY2hlbWFzKSk7XG4gICAgZm9yIChjb25zdCBbY29uZmlnXSBvZiBjb25maWdzQW5kU291cmNlcyl7XG4gICAgICAgIGZvciAoY29uc3QgbW9kdWxlTmFtZSBvZiBPYmplY3Qua2V5cyhjb25maWcpKXtcbiAgICAgICAgICAgIG1vZHVsZU5hbWVzLmFkZChtb2R1bGVOYW1lKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IG1vZHVsZU5hbWUgb2YgbW9kdWxlTmFtZXMpe1xuICAgICAgICBjb25zdCBhbm5vdGF0ZWRTY2hlbWEgPSBhbm5vdGF0ZWRTY2hlbWFzW21vZHVsZU5hbWVdO1xuICAgICAgICBjb25zdCBjb25maWdTbGljZXMgPSBjb25maWdzQW5kU291cmNlcy5tYXAoKFtjb25maWddKT0+Y29uZmlnW21vZHVsZU5hbWVdKTtcbiAgICAgICAgY29uc3Qgc291cmNlcyA9IGNvbmZpZ3NBbmRTb3VyY2VzLm1hcCgoWywgc291cmNlXSk9PnNvdXJjZSk7XG4gICAgICAgIGNvbnN0IGNhY2hlZCA9IGltcGxlbWVudGVyVG9vbHNNb2R1bGVDYWNoZS5nZXQobW9kdWxlTmFtZSk7XG4gICAgICAgIGlmIChjYWNoZWQgJiYgY2FjaGVkLmFubm90YXRlZFNjaGVtYSA9PT0gYW5ub3RhdGVkU2NoZW1hICYmIGNhY2hlZC5jb25maWdTbGljZXMubGVuZ3RoID09PSBjb25maWdTbGljZXMubGVuZ3RoICYmIGNhY2hlZC5jb25maWdTbGljZXMuZXZlcnkoKHNsaWNlLCBpKT0+c2xpY2UgPT09IGNvbmZpZ1NsaWNlc1tpXSkgJiYgY2FjaGVkLnNvdXJjZXMuZXZlcnkoKHNvdXJjZSwgaSk9PnNvdXJjZSA9PT0gc291cmNlc1tpXSkpIHtcbiAgICAgICAgICAgIHJlc3VsdFttb2R1bGVOYW1lXSA9IGNhY2hlZC5yZXN1bHQ7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbWVyZ2VkID0gYW5ub3RhdGVkU2NoZW1hID8/IHt9O1xuICAgICAgICBjb25maWdzQW5kU291cmNlcy5mb3JFYWNoKChbLCBzb3VyY2VdLCBpKT0+e1xuICAgICAgICAgICAgY29uc3Qgc2xpY2UgPSBjb25maWdTbGljZXNbaV07XG4gICAgICAgICAgICBpZiAoc2xpY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG1lcmdlZCA9IG1lcmdlRGVlcFJlcGxhY2UobWVyZ2VkLCBjcmVhdGVWYWx1ZXNBbmRTb3VyY2VzVHJlZShzbGljZSwgc291cmNlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpbXBsZW1lbnRlclRvb2xzTW9kdWxlQ2FjaGUuc2V0KG1vZHVsZU5hbWUsIHtcbiAgICAgICAgICAgIGFubm90YXRlZFNjaGVtYSxcbiAgICAgICAgICAgIGNvbmZpZ1NsaWNlcyxcbiAgICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgICByZXN1bHQ6IG1lcmdlZFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0W21vZHVsZU5hbWVdID0gbWVyZ2VkO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBDYWNoaW5nIHBlciBtb2R1bGUgaXMgd2hhdCBzdG9wcyB0aGUgd2FsayBiZWluZyBxdWFkcmF0aWM6IGRlZmluaW5nIG9uZSBtb2R1bGUncyBzY2hlbWFcbiAqIHJlY29tcHV0ZXMgZXZlcnkgbW9kdWxlLlxuICpcbiAqIEEgbW9kdWxlIHdpdGggbm8gY29uZmlndXJhdGlvbiBvZiBpdHMgb3duIGlzIHB1Ymxpc2hlZCBzdHJhaWdodCBmcm9tIHRoaXMgY2FjaGUsIHNvIG5vdGhpbmcgbWF5XG4gKiBtdXRhdGUgYSB0cmVlIGl0IHJlYWRzIG91dCBvZiB0aGUgaW1wbGVtZW50ZXIgdG9vbHMgY29uZmlnIOKAlCBpdCBpcyB0aGUgY2FjaGUgZW50cnkuXG4gKi8gY29uc3Qgc2NoZW1hVmFsdWVzQW5kU291cmNlc0NhY2hlID0gbmV3IE1hcCgpO1xuZnVuY3Rpb24gZ2V0QWxsU2NoZW1hc1dpdGhWYWx1ZXNBbmRTb3VyY2VzKHNjaGVtYXMpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFttb2R1bGVOYW1lLCBzY2hlbWFdIG9mIE9iamVjdC5lbnRyaWVzKHNjaGVtYXMpKXtcbiAgICAgICAgY29uc3QgY2FjaGVkID0gc2NoZW1hVmFsdWVzQW5kU291cmNlc0NhY2hlLmdldChtb2R1bGVOYW1lKTtcbiAgICAgICAgaWYgKGNhY2hlZCAmJiBjYWNoZWQuc2NoZW1hID09PSBzY2hlbWEpIHtcbiAgICAgICAgICAgIHJlc3VsdFttb2R1bGVOYW1lXSA9IGNhY2hlZC5hbm5vdGF0ZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBhbm5vdGF0ZWQgPSBnZXRTY2hlbWFXaXRoVmFsdWVzQW5kU291cmNlcyhjbG9uZURlZXAoc2NoZW1hKSk7XG4gICAgICAgICAgICBzY2hlbWFWYWx1ZXNBbmRTb3VyY2VzQ2FjaGUuc2V0KG1vZHVsZU5hbWUsIHtcbiAgICAgICAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgICAgICAgYW5ub3RhdGVkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc3VsdFttb2R1bGVOYW1lXSA9IGFubm90YXRlZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0U2NoZW1hV2l0aFZhbHVlc0FuZFNvdXJjZXMoc2NoZW1hKSB7XG4gICAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnX2RlZmF1bHQnKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uc2NoZW1hLFxuICAgICAgICAgICAgX3ZhbHVlOiBzY2hlbWEuX2RlZmF1bHQsXG4gICAgICAgICAgICBfc291cmNlOiAnZGVmYXVsdCdcbiAgICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGlzT3JkaW5hcnlPYmplY3Qoc2NoZW1hKSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoc2NoZW1hKS5yZWR1Y2UoKG9iaiwga2V5KT0+e1xuICAgICAgICAgICAgb2JqW2tleV0gPSBnZXRTY2hlbWFXaXRoVmFsdWVzQW5kU291cmNlcyhzY2hlbWFba2V5XSk7XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9LCB7fSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gYXQgdGhpcyBwb2ludCwgdGhlIHNjaGVtYSBpcyBiYWQgYW5kIGFuIGVycm9yIHdpbGwgaGF2ZSBiZWVuIGxvZ2dlZCBkdXJpbmcgc2NoZW1hIHZhbGlkYXRpb25cbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZVZhbHVlc0FuZFNvdXJjZXNUcmVlKGNvbmZpZywgc291cmNlKSB7XG4gICAgaWYgKGlzT3JkaW5hcnlPYmplY3QoY29uZmlnKSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoY29uZmlnKS5yZWR1Y2UoKG9iaiwga2V5KT0+e1xuICAgICAgICAgICAgb2JqW2tleV0gPSBjcmVhdGVWYWx1ZXNBbmRTb3VyY2VzVHJlZShjb25maWdba2V5XSwgc291cmNlKTtcbiAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgIH0sIHt9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgX3ZhbHVlOiBjb25maWcsXG4gICAgICAgICAgICBfc291cmNlOiBzb3VyY2VcbiAgICAgICAgfTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRFeHRlbnNpb25TbG90Q29uZmlncyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSB7XG4gICAgY29uc3QgYWxsQ29uZmlncyA9IG1lcmdlQ29uZmlncyhnZXRQcm92aWRlZENvbmZpZ3MoY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSkpO1xuICAgIGNvbnN0IHNsb3RDb25maWdQZXJNb2R1bGUgPSBPYmplY3Qua2V5cyhhbGxDb25maWdzKS5yZWR1Y2UoKG9iaiwga2V5KT0+e1xuICAgICAgICBpZiAoYWxsQ29uZmlnc1trZXldPy5leHRlbnNpb25TbG90cykge1xuICAgICAgICAgICAgb2JqW2tleV0gPSBhbGxDb25maWdzW2tleV0/LmV4dGVuc2lvblNsb3RzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfSwge30pO1xuICAgIHZhbGlkYXRlQWxsRXh0ZW5zaW9uU2xvdENvbmZpZ3Moc2xvdENvbmZpZ1Blck1vZHVsZSk7XG4gICAgY29uc3Qgc2xvdENvbmZpZ3MgPSB7fTtcbiAgICBjb25zdCBjb25maWd1cmVCbG9ja3MgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGNvbmZpZ0J5U2xvdE5hbWUgb2YgT2JqZWN0LnZhbHVlcyhzbG90Q29uZmlnUGVyTW9kdWxlKSl7XG4gICAgICAgIGZvciAoY29uc3QgW3Nsb3ROYW1lLCBjb25maWddIG9mIE9iamVjdC5lbnRyaWVzKGNvbmZpZ0J5U2xvdE5hbWUpKXtcbiAgICAgICAgICAgIHNsb3RDb25maWdzW3Nsb3ROYW1lXSA9IGNvbmZpZztcbiAgICAgICAgICAgIGlmIChjb25maWcuY29uZmlndXJlKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9jb25maWd1cmVCbG9ja3MsIF9zbG90TmFtZTtcbiAgICAgICAgICAgICAgICAoKF9jb25maWd1cmVCbG9ja3MgPSBjb25maWd1cmVCbG9ja3MpW19zbG90TmFtZSA9IHNsb3ROYW1lXSA/PyAoX2NvbmZpZ3VyZUJsb2Nrc1tfc2xvdE5hbWVdID0gW10pKS5wdXNoKGNvbmZpZy5jb25maWd1cmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgW3Nsb3ROYW1lLCBibG9ja3NdIG9mIE9iamVjdC5lbnRyaWVzKGNvbmZpZ3VyZUJsb2Nrcykpe1xuICAgICAgICBjb25zdCBjb25maWd1cmUgPSBibG9ja3MubGVuZ3RoID09PSAxID8gYmxvY2tzWzBdIDogbWVyZ2VDb25maWdzKGJsb2Nrcyk7XG4gICAgICAgIGlmIChzbG90Q29uZmlnc1tzbG90TmFtZV0uY29uZmlndXJlICE9PSBjb25maWd1cmUpIHtcbiAgICAgICAgICAgIHNsb3RDb25maWdzW3Nsb3ROYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAuLi5zbG90Q29uZmlnc1tzbG90TmFtZV0sXG4gICAgICAgICAgICAgICAgY29uZmlndXJlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzbG90Q29uZmlncztcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlQWxsRXh0ZW5zaW9uU2xvdENvbmZpZ3Moc2xvdENvbmZpZ1Blck1vZHVsZSkge1xuICAgIGZvciAobGV0IFttb2R1bGVOYW1lLCBjb25maWdCeVNsb3ROYW1lXSBvZiBPYmplY3QuZW50cmllcyhzbG90Q29uZmlnUGVyTW9kdWxlKSl7XG4gICAgICAgIGZvciAobGV0IFtzbG90TmFtZSwgY29uZmlnXSBvZiBPYmplY3QuZW50cmllcyhjb25maWdCeVNsb3ROYW1lKSl7XG4gICAgICAgICAgICB2YWxpZGF0ZUV4dGVuc2lvblNsb3RDb25maWcoY29uZmlnLCBtb2R1bGVOYW1lLCBzbG90TmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiB2YWxpZGF0ZUV4dGVuc2lvblNsb3RDb25maWcoY29uZmlnLCBtb2R1bGVOYW1lLCBzbG90TmFtZSkge1xuICAgIGNvbnN0IGtleVBhdGggPSBgJHttb2R1bGVOYW1lfS5leHRlbnNpb25TbG90cy4ke3Nsb3ROYW1lfWA7XG4gICAgY29uc3QgZXJyb3JQcmVmaXggPSBgRXh0ZW5zaW9uIHNsb3QgY29uZmlnICcke2tleVBhdGh9J2A7XG4gICAgY29uc3QgaW52YWxpZEtleXMgPSBPYmplY3Qua2V5cyhjb25maWcpLmZpbHRlcigoayk9PiFbXG4gICAgICAgICAgICAnYWRkJyxcbiAgICAgICAgICAgICdyZW1vdmUnLFxuICAgICAgICAgICAgJ29yZGVyJyxcbiAgICAgICAgICAgICdjb25maWd1cmUnXG4gICAgICAgIF0uaW5jbHVkZXMoaykpO1xuICAgIGlmIChpbnZhbGlkS2V5cy5sZW5ndGgpIHtcbiAgICAgICAgbG9nRXJyb3Ioa2V5UGF0aCwgZXJyb3JQcmVmaXggKyBgJyBjb250YWlucyBpbnZhbGlkIGtleXMgJyR7aW52YWxpZEtleXMuam9pbihcIicsICdcIil9J2ApO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmFkZCkge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29uZmlnLmFkZCkgfHwgIWNvbmZpZy5hZGQuZXZlcnkoKG4pPT50eXBlb2YgbiA9PT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgICBsb2dFcnJvcihrZXlQYXRoLCBlcnJvclByZWZpeCArIGAuYWRkJyBpcyBpbnZhbGlkLiBNdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3MgKGV4dGVuc2lvbiBJRHMpYCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvbmZpZy5yZW1vdmUpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbmZpZy5yZW1vdmUpIHx8ICFjb25maWcucmVtb3ZlLmV2ZXJ5KChuKT0+dHlwZW9mIG4gPT09ICdzdHJpbmcnKSkge1xuICAgICAgICAgICAgbG9nRXJyb3Ioa2V5UGF0aCwgZXJyb3JQcmVmaXggKyBgLnJlbW92ZScgaXMgaW52YWxpZC4gTXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzIChleHRlbnNpb24gSURzKWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjb25maWcub3JkZXIpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbmZpZy5vcmRlcikgfHwgIWNvbmZpZy5vcmRlci5ldmVyeSgobik9PnR5cGVvZiBuID09PSAnc3RyaW5nJykpIHtcbiAgICAgICAgICAgIGxvZ0Vycm9yKGtleVBhdGgsIGVycm9yUHJlZml4ICsgYC5vcmRlcicgaXMgaW52YWxpZC4gTXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzIChleHRlbnNpb24gSURzKWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjb25maWcuY29uZmlndXJlKSB7XG4gICAgICAgIGlmICghaXNPcmRpbmFyeU9iamVjdChjb25maWcuY29uZmlndXJlKSkge1xuICAgICAgICAgICAgbG9nRXJyb3Ioa2V5UGF0aCwgZXJyb3JQcmVmaXggKyBgLmNvbmZpZ3VyZScgaXMgaW52YWxpZC4gTXVzdCBiZSBhbiBvYmplY3Qgd2l0aCBleHRlbnNpb24gSURzIGZvciBrZXlzYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBnZXRQcm92aWRlZENvbmZpZ3MoY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSkge1xuICAgIHJldHVybiBbXG4gICAgICAgIC4uLmNvbmZpZ1N0YXRlLnByb3ZpZGVkQ29uZmlncy5tYXAoKGMpPT5jLmNvbmZpZyksXG4gICAgICAgIHRlbXBDb25maWdTdGF0ZS5jb25maWdcbiAgICBdO1xufVxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIGNvbmZpZyBzY2hlbWEgZm9yIGEgbW9kdWxlLiBTaW5jZSBwcm9ibGVtcyBpZGVudGlmaWVkIGhlcmUgYXJlIHByb2dyYW1taW5nIGVycm9yc1xuICogdGhhdCBob3BlZnVsbHkgd2lsbCBiZSBjYXVnaHQgZHVyaW5nIGRldmVsb3BtZW50LCB0aGlzIGZ1bmN0aW9uIGxvZ3MgZXJyb3JzIHRvIHRoZSBjb25zb2xlIGRpcmVjdGx5O1xuICogaXQncyBmaW5lIGlmIHdlIHNwYW0gdGhlIHVzZXIgd2l0aCB0aGVzZSBlcnJvcnMuXG4gKi8gZnVuY3Rpb24gdmFsaWRhdGVDb25maWdTY2hlbWEobW9kdWxlTmFtZSwgc2NoZW1hLCBrZXlQYXRoID0gJycpIHtcbiAgICBjb25zdCB1cGRhdGVNZXNzYWdlID0gYFBsZWFzZSB2ZXJpZnkgdGhhdCB5b3UgYXJlIHJ1bm5pbmcgdGhlIGxhdGVzdCB2ZXJzaW9uIGFuZCwgaWYgc28sIGFsZXJ0IHRoZSBtYWludGFpbmVyLmA7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoc2NoZW1hKS5maWx0ZXIoKGspPT4hay5zdGFydHNXaXRoKCdfJykpKXtcbiAgICAgICAgY29uc3QgdGhpc0tleVBhdGggPSBrZXlQYXRoICsgKGtleVBhdGggJiYgJy4nKSArIGtleTtcbiAgICAgICAgY29uc3Qgc2NoZW1hUGFydCA9IHNjaGVtYVtrZXldO1xuICAgICAgICBpZiAodGhpc0tleVBhdGggPT09ICdEaXNwbGF5IGNvbmRpdGlvbnMnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke21vZHVsZU5hbWV9IGRlY2xhcmVzIGEgY29uZmlndXJhdGlvbiBvcHRpb24gY2FsbGVkIFwiRGlzcGxheSBjb25kaXRpb25zXCI7IHRoZSBcIkRpc3BsYXkgY29uZGl0aW9uc1wiIG9wdGlvbiBpcyBhIHJlc2VydmVkIG5hbWUuICR7dXBkYXRlTWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpc0tleVBhdGggPT09ICdUcmFuc2xhdGlvbiBvdmVycmlkZXMnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke21vZHVsZU5hbWV9IGRlY2xhcmVzIGEgY29uZmlndXJhdGlvbiBvcHRpb24gY2FsbGVkIFwiVHJhbnNsYXRpb24gb3ZlcnJpZGVzXCI7IHRoZSBcIlRyYW5zbGF0aW9uIG92ZXJyaWRlc1wiIG9wdGlvbiBpcyBhIHJlc2VydmVkIG5hbWUuICR7dXBkYXRlTWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzT3JkaW5hcnlPYmplY3Qoc2NoZW1hUGFydCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7bW9kdWxlTmFtZX0gaGFzIGJhZCBjb25maWcgc2NoZW1hIGRlZmluaXRpb24gZm9yIGtleSAnJHt0aGlzS2V5UGF0aH0nLiAke3VwZGF0ZU1lc3NhZ2V9YCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNjaGVtYVBhcnQuaGFzT3duUHJvcGVydHkoJ19kZWZhdWx0JykpIHtcbiAgICAgICAgICAgIC8vIHJlY3Vyc2UgZm9yIG5lc3RlZCBjb25maWcga2V5c1xuICAgICAgICAgICAgdmFsaWRhdGVDb25maWdTY2hlbWEobW9kdWxlTmFtZSwgc2NoZW1hUGFydCwgdGhpc0tleVBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gc2NoZW1hUGFydC5fZWxlbWVudHM7XG4gICAgICAgIGlmIChoYXNPYmplY3RTY2hlbWEoZWxlbWVudHMpKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZUNvbmZpZ1NjaGVtYShtb2R1bGVOYW1lLCBlbGVtZW50cywgdGhpc0tleVBhdGggKyAnLl9lbGVtZW50cycpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzY2hlbWFQYXJ0Ll92YWxpZGF0b3JzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCB2YWxpZGF0b3Igb2Ygc2NoZW1hUGFydC5fdmFsaWRhdG9ycyl7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgJHttb2R1bGVOYW1lfSBoYXMgaW52YWxpZCB2YWxpZGF0b3IgZm9yIGtleSAnJHt0aGlzS2V5UGF0aH0nICR7dXBkYXRlTWVzc2FnZX0uYCArIGBcXG5cXG5JZiB5b3UncmUgdGhlIG1haW50YWluZXI6IHZhbGlkYXRvcnMgbXVzdCBiZSBmdW5jdGlvbnMgdGhhdCByZXR1cm4gZWl0aGVyIGAgKyBgdW5kZWZpbmVkIG9yIGFuIGVycm9yIHN0cmluZy4gUmVjZWl2ZWQgJHt2YWxpZGF0b3J9LmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZVR5cGUgPSBzY2hlbWFQYXJ0Ll90eXBlO1xuICAgICAgICBpZiAodmFsdWVUeXBlICYmICFPYmplY3QudmFsdWVzKFR5cGUpLmluY2x1ZGVzKHZhbHVlVHlwZSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7bW9kdWxlTmFtZX0gaGFzIGludmFsaWQgdHlwZSBmb3Iga2V5ICcke3RoaXNLZXlQYXRofScgJHt1cGRhdGVNZXNzYWdlfS5gICsgYFxcblxcbklmIHlvdSdyZSB0aGUgbWFpbnRhaW5lcjogdGhlIGFsbG93ZWQgdHlwZXMgYXJlICR7T2JqZWN0LnZhbHVlcyhUeXBlKS5qb2luKCcsICcpfS4gYCArIGBSZWNlaXZlZCAnJHt2YWx1ZVR5cGV9J2ApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhzY2hlbWFQYXJ0KS5ldmVyeSgoayk9PltcbiAgICAgICAgICAgICAgICAnX2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgICAnX3ZhbGlkYXRvcnMnLFxuICAgICAgICAgICAgICAgICdfZWxlbWVudHMnLFxuICAgICAgICAgICAgICAgICdfdHlwZSdcbiAgICAgICAgICAgIF0uaW5jbHVkZXMoaykpICYmICFrZXlQYXRoLmluY2x1ZGVzKCcuX2VsZW1lbnRzJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7bW9kdWxlTmFtZX0gaGFzIGJhZCBjb25maWcgc2NoZW1hIGRlZmluaXRpb24gZm9yIGtleSAnJHt0aGlzS2V5UGF0aH0nLiAke3VwZGF0ZU1lc3NhZ2V9LmAgKyBgXFxuXFxuSWYgeW91J3JlIHRoZSBtYWludGFpbmVyOiBhbGwgY29uZmlnIGVsZW1lbnRzIG11c3QgaGF2ZSBhIGRlZmF1bHQuIGAgKyBgUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShzY2hlbWFQYXJ0KX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudHMgJiYgdmFsdWVUeXBlICYmICFbXG4gICAgICAgICAgICBUeXBlLkFycmF5LFxuICAgICAgICAgICAgVHlwZS5PYmplY3RcbiAgICAgICAgXS5pbmNsdWRlcyh2YWx1ZVR5cGUpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke21vZHVsZU5hbWV9IGhhcyBiYWQgY29uZmlnIHNjaGVtYSBkZWZpbml0aW9uIGZvciBrZXkgJyR7dGhpc0tleVBhdGh9Jy4gJHt1cGRhdGVNZXNzYWdlfS5gICsgYFxcblxcbklmIHlvdSdyZSB0aGUgbWFpbnRhaW5lcjogdGhlICdlbGVtZW50cycga2V5IG9ubHkgd29ya3Mgd2l0aCAnX3R5cGUnIGVxdWFsIHRvICdBcnJheScgb3IgJ09iamVjdCcuIGAgKyBgUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeSh2YWx1ZVR5cGUpfWApO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0Q29uZmlnRm9yTW9kdWxlKG1vZHVsZU5hbWUsIGNvbmZpZ1N0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpIHtcbiAgICBjb25zdCBzY2hlbWEgPSBjb25maWdTdGF0ZS5zY2hlbWFzW21vZHVsZU5hbWVdO1xuICAgIGNvbnN0IGlucHV0Q29uZmlnID0gbWVyZ2VDb25maWdzRm9yKG1vZHVsZU5hbWUsIGdldFByb3ZpZGVkQ29uZmlncyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSk7XG4gICAgdmFsaWRhdGVTdHJ1Y3R1cmUoc2NoZW1hLCBpbnB1dENvbmZpZywgbW9kdWxlTmFtZSk7XG4gICAgY29uc3QgY29uZmlnID0gc2V0RGVmYXVsdHMoc2NoZW1hLCBpbnB1dENvbmZpZyk7XG4gICAgcnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZShzY2hlbWEsIGNvbmZpZywgbW9kdWxlTmFtZSk7XG4gICAgZGVsZXRlIGNvbmZpZy5leHRlbnNpb25TbG90cztcbiAgICByZXR1cm4gY29uZmlnO1xufVxuZnVuY3Rpb24gZ2V0Q29uZmlnRm9yTW9kdWxlSW1wbGljaXRTY2hlbWEobW9kdWxlTmFtZSwgY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSkge1xuICAgIGNvbnN0IGlucHV0Q29uZmlnID0gbWVyZ2VDb25maWdzRm9yKG1vZHVsZU5hbWUsIGdldFByb3ZpZGVkQ29uZmlncyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSk7XG4gICAgY29uc3QgY29uZmlnID0gc2V0RGVmYXVsdHMoaW1wbGljaXRDb25maWdTY2hlbWEsIGlucHV0Q29uZmlnKTtcbiAgICBydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlKGltcGxpY2l0Q29uZmlnU2NoZW1hLCBjb25maWcsIG1vZHVsZU5hbWUpO1xuICAgIGRlbGV0ZSBjb25maWcuZXh0ZW5zaW9uU2xvdHM7XG4gICAgcmV0dXJuIGNvbmZpZztcbn1cbmZ1bmN0aW9uIG1lcmdlQ29uZmlnc0Zvcihtb2R1bGVOYW1lLCBhbGxDb25maWdzKSB7XG4gICAgY29uc3QgYWxsQ29uZmlnc0Zvck1vZHVsZSA9IGFsbENvbmZpZ3MubWFwKCh7IFttb2R1bGVOYW1lXTogYyB9KT0+YykuZmlsdGVyKChjKT0+ISFjKTtcbiAgICByZXR1cm4gbWVyZ2VDb25maWdzKGFsbENvbmZpZ3NGb3JNb2R1bGUpO1xufVxuLyoqXG4gKiBNZXJnZXMgYSB3aG9sZSBsaXN0IGF0IG9uY2UsIGFjY3VtdWxhdGluZyBpbnRvIG9uZSBkZXN0aW5hdGlvbi5cbiAqLyBmdW5jdGlvbiBtZXJnZUNvbmZpZ3MoY29uZmlncykge1xuICAgIHJldHVybiBjb25maWdzLnJlZHVjZSgoYWNjLCBjb25maWcpPT5tZXJnZVdpdGgoYWNjLCBjb25maWcsIHJlcGxhY2VBcnJheXMpLCB7fSk7XG59XG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGNoZWNrIHRoZSBwcm92aWRlZCBjb25maWcgdHJlZSB0byBtYWtlIHN1cmUgdGhhdCBhbGxcbiAqIG9mIHRoZSBwcm92aWRlZCBwcm9wZXJ0aWVzIGV4aXN0IGluIHRoZSBzY2hlbWEsIGFuZCB0aGF0IHR5cGVzIGFyZVxuICogY29ycmVjdC4gRG9lcyBub3QgcnVuIHZhbGlkYXRvcnMgeWV0LCBzaW5jZSB0aG9zZSB3aWxsIGJlIHJ1biBvblxuICogdGhlIGNvbmZpZyB3aXRoIHRoZSBkZWZhdWx0cyBmaWxsZWQgaW4uXG4gKi8gZnVuY3Rpb24gdmFsaWRhdGVTdHJ1Y3R1cmUoc2NoZW1hLCBjb25maWcsIGtleVBhdGggPSAnJykge1xuICAgIC8vIHZhbGlkYXRlIGVhY2ggY29uc3RpdHVlbnQgZWxlbWVudFxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNvbmZpZykpe1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbmZpZ1trZXldO1xuICAgICAgICBjb25zdCB0aGlzS2V5UGF0aCA9IGtleVBhdGggKyAnLicgKyBrZXk7XG4gICAgICAgIGNvbnN0IHNjaGVtYVBhcnQgPSBzY2hlbWFba2V5XTtcbiAgICAgICAgaWYgKCFzY2hlbWEuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgaWYgKCEoa2V5ID09PSAnZXh0ZW5zaW9uU2xvdHMnICYmIGtleVBhdGggIT09ICcnKSkge1xuICAgICAgICAgICAgICAgIGxvZ0Vycm9yKHRoaXNLZXlQYXRoLCBgVW5rbm93biBjb25maWcga2V5ICcke3RoaXNLZXlQYXRofScgcHJvdmlkZWQuIElnbm9yaW5nLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFsaWRhdGVCcmFuY2hTdHJ1Y3R1cmUoc2NoZW1hUGFydCwgdmFsdWUsIHRoaXNLZXlQYXRoKTtcbiAgICB9XG59XG5mdW5jdGlvbiB2YWxpZGF0ZUJyYW5jaFN0cnVjdHVyZShzY2hlbWFQYXJ0LCB2YWx1ZSwga2V5UGF0aCkge1xuICAgIGNoZWNrVHlwZShrZXlQYXRoLCBzY2hlbWFQYXJ0Ll90eXBlLCB2YWx1ZSk7XG4gICAgaWYgKGlzT3JkaW5hcnlPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIGlmIChzY2hlbWFQYXJ0Ll90eXBlID09PSBUeXBlLk9iamVjdCkge1xuICAgICAgICAgICAgLy8gdmFsaWRhdGUgYXMgZnJlZWZvcm0gb2JqZWN0XG4gICAgICAgICAgICB2YWxpZGF0ZUZyZWVmb3JtT2JqZWN0U3RydWN0dXJlKHNjaGVtYVBhcnQsIHZhbHVlLCBrZXlQYXRoKTtcbiAgICAgICAgfSBlbHNlIGlmICghKHNjaGVtYVBhcnQuaGFzT3duUHJvcGVydHkoJ19kZWZhdWx0JykgfHwgc2NoZW1hUGFydC5oYXNPd25Qcm9wZXJ0eSgnX3R5cGUnKSkpIHtcbiAgICAgICAgICAgIC8vIHZhbGlkYXRlIGFzIG5vcm1hbCBuZXN0ZWQgY29uZmlnXG4gICAgICAgICAgICB2YWxpZGF0ZVN0cnVjdHVyZShzY2hlbWFQYXJ0LCB2YWx1ZSwga2V5UGF0aCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc2NoZW1hUGFydC5fdHlwZSA9PT0gVHlwZS5BcnJheSkge1xuICAgICAgICAgICAgdmFsaWRhdGVBcnJheVN0cnVjdHVyZShzY2hlbWFQYXJ0LCB2YWx1ZSwga2V5UGF0aCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiB2YWxpZGF0ZUZyZWVmb3JtT2JqZWN0U3RydWN0dXJlKGZyZWVmb3JtT2JqZWN0U2NoZW1hLCBjb25maWcsIGtleVBhdGgpIHtcbiAgICBpZiAoZnJlZWZvcm1PYmplY3RTY2hlbWEuX2VsZW1lbnRzKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNvbmZpZykpe1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjb25maWdba2V5XTtcbiAgICAgICAgICAgIHZhbGlkYXRlQnJhbmNoU3RydWN0dXJlKGZyZWVmb3JtT2JqZWN0U2NoZW1hLl9lbGVtZW50cywgdmFsdWUsIGAke2tleVBhdGh9LiR7a2V5fWApO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gdmFsaWRhdGVBcnJheVN0cnVjdHVyZShhcnJheVNjaGVtYSwgdmFsdWUsIGtleVBhdGgpIHtcbiAgICBjb25zdCB2YWxpZGF0ZWRBc0FycmF5ID0gY2hlY2tUeXBlKGtleVBhdGgsIFR5cGUuQXJyYXksIHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRlZEFzQXJyYXkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBpZiB0aGVyZSBpcyBhbiBhcnJheSBlbGVtZW50IG9iamVjdCBzY2hlbWEsIHZlcmlmeSB0aGF0IGVsZW1lbnRzIG1hdGNoIGl0XG4gICAgaWYgKGhhc09iamVjdFNjaGVtYShhcnJheVNjaGVtYS5fZWxlbWVudHMpKSB7XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICB2YWxpZGF0ZUJyYW5jaFN0cnVjdHVyZShhcnJheVNjaGVtYS5fZWxlbWVudHMsIHZhbHVlW2ldLCBgJHtrZXlQYXRofVske2l9XWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZvcihsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGNoZWNrVHlwZShgJHtrZXlQYXRofVske2l9XWAsIGFycmF5U2NoZW1hLl9lbGVtZW50cz8uX3R5cGUsIHZhbHVlW2ldKTtcbiAgICB9XG59XG4vKipcbiAqIFJ1biBhbGwgdGhlIHZhbGlkYXRvcnMgaW4gdGhlIGNvbmZpZyB0cmVlLiBUaGlzIHNob3VsZCBiZSBydW5cbiAqIG9uIHRoZSBjb25maWcgb2JqZWN0IGFmdGVyIGl0IGhhcyBiZWVuIGZpbGxlZCBpbiB3aXRoIGFsbCB0aGUgZGVmYXVsdHMsIHNpbmNlXG4gKiBoaWdoZXItbGV2ZWwgdmFsaWRhdG9ycyBtYXkgcmVmZXIgdG8gZGVmYXVsdCB2YWx1ZXMuXG4gKi8gZnVuY3Rpb24gcnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZShzY2hlbWEsIGNvbmZpZywga2V5UGF0aCA9ICcnKSB7XG4gICAgLy8gSWYgYCFzY2hlbWFgLCB0aGVyZSBzaG91bGQgaGF2ZSBiZWVuIGEgc3RydWN0dXJhbCB2YWxpZGF0aW9uIGVycm9yIHByaW50ZWQgYWxyZWFkeS5cbiAgICBpZiAoc2NoZW1hKSB7XG4gICAgICAgIGlmIChjb25maWcgIT09IHNjaGVtYS5fZGVmYXVsdCkge1xuICAgICAgICAgICAgcnVuVmFsaWRhdG9ycyhrZXlQYXRoLCBzY2hlbWEuX3ZhbGlkYXRvcnMsIGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzT3JkaW5hcnlPYmplY3QoY29uZmlnKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY29uZmlnKSl7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjb25maWdba2V5XTtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGlzS2V5UGF0aCA9IGtleVBhdGggKyAnLicgKyBrZXk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2NoZW1hUGFydCA9IHNjaGVtYVtrZXldO1xuICAgICAgICAgICAgICAgIGlmIChzY2hlbWEuX3R5cGUgPT09IFR5cGUuT2JqZWN0ICYmIHNjaGVtYS5fZWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZShzY2hlbWEuX2VsZW1lbnRzLCB2YWx1ZSwgdGhpc0tleVBhdGgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUoc2NoZW1hUGFydCwgdmFsdWUsIHRoaXNLZXlQYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjb25maWcpICYmIHNjaGVtYS5fZWxlbWVudHMpIHtcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBjb25maWcubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgICAgIHJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUoc2NoZW1hLl9lbGVtZW50cywgY29uZmlnW2ldLCBgJHtrZXlQYXRofVske2l9XWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiBSdW4gdHlwZSB2YWxpZGF0aW9uIGZvciB0aGUgdmFsdWUsIGxvZ2dpbmcgYW55IGVycm9ycy5cbiAqIEByZXR1cm5zIHRydWUgaWYgdmFsaWRhdGlvbiBwYXNzZXMsIGZhbHNlIG90aGVyd2lzZVxuICovIGZ1bmN0aW9uIGNoZWNrVHlwZShrZXlQYXRoLCBfdHlwZSwgdmFsdWUpIHtcbiAgICBpZiAoX3R5cGUpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9yID0ge1xuICAgICAgICAgICAgQXJyYXk6IGlzQXJyYXksXG4gICAgICAgICAgICBCb29sZWFuOiBpc0Jvb2xlYW4sXG4gICAgICAgICAgICBDb25jZXB0VXVpZDogaXNVdWlkLFxuICAgICAgICAgICAgTnVtYmVyOiBpc051bWJlcixcbiAgICAgICAgICAgIE9iamVjdDogaXNPYmplY3QsXG4gICAgICAgICAgICBTdHJpbmc6IGlzU3RyaW5nLFxuICAgICAgICAgICAgVVVJRDogaXNVdWlkLFxuICAgICAgICAgICAgUGVyc29uQXR0cmlidXRlVHlwZVV1aWQ6IGlzVXVpZCxcbiAgICAgICAgICAgIFBhdGllbnRJZGVudGlmaWVyVHlwZVV1aWQ6IGlzVXVpZFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcnVuVmFsaWRhdG9ycyhrZXlQYXRoLCBbXG4gICAgICAgICAgICB2YWxpZGF0b3JbX3R5cGVdXG4gICAgICAgIF0sIHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vKipcbiAqIFJ1bnMgdmFsaWRhdG9ycywgbG9nZ2luZyBlcnJvcnMuXG4gKiBAcmV0dXJucyB0cnVlIGlmIGFsbCBwYXNzLCBmYWxzZSBvdGhlcndpc2UuXG4gKi8gZnVuY3Rpb24gcnVuVmFsaWRhdG9ycyhrZXlQYXRoLCB2YWxpZGF0b3JzLCB2YWx1ZSkge1xuICAgIGxldCByZXR1cm5WYWx1ZSA9IHRydWU7XG4gICAgaWYgKHZhbGlkYXRvcnMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAobGV0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKXtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JSZXN1bHQgPSB2YWxpZGF0b3IodmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsaWRhdG9yUmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IGBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gZm9yICR7a2V5UGF0aH06ICR7dmFsaWRhdG9yUmVzdWx0fWAgOiBgSW52YWxpZCBjb25maWd1cmF0aW9uIHZhbHVlICR7dmFsdWV9IGZvciAke2tleVBhdGh9OiAke3ZhbGlkYXRvclJlc3VsdH1gO1xuICAgICAgICAgICAgICAgICAgICBsb2dFcnJvcihrZXlQYXRoLCBtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFNraXBwaW5nIGludmFsaWQgdmFsaWRhdG9yIGF0IFwiJHtrZXlQYXRofVwiLiBFbmNvdW50ZXJlZCBlcnJvclxcblxcdCR7ZX1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XG59XG4vLyBSZWN1cnNpdmVseSBmaWxsIGluIHRoZSBjb25maWcgd2l0aCB2YWx1ZXMgZnJvbSB0aGUgc2NoZW1hLlxuY29uc3Qgc2V0RGVmYXVsdHMgPSAoc2NoZW1hLCBpbnB1dENvbmZpZyk9PntcbiAgICBjb25zdCBjb25maWcgPSBzdHJ1Y3R1cmVkQ2xvbmUoaW5wdXRDb25maWcpO1xuICAgIGlmICghc2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHNjaGVtYSkpe1xuICAgICAgICBjb25zdCBjb25maWdQYXJ0ID0gY29uZmlnW2tleV07XG4gICAgICAgIGNvbnN0IHNjaGVtYVBhcnQgPSBzY2hlbWFba2V5XTtcbiAgICAgICAgLy8gVGhlIGBzY2hlbWFQYXJ0ICYmYCBjbGF1c2Ugb2YgdGhpcyBgaWZgIHN0YXRlbWVudCB3aWxsIG9ubHkgZmFpbFxuICAgICAgICAvLyBpZiB0aGUgc2NoZW1hIGlzIHZlcnkgaW52YWxpZC4gSXQgaXMgdGhlcmUgdG8gcHJldmVudCB0aGUgYXBwIGZyb21cbiAgICAgICAgLy8gY3Jhc2hpbmcgY29tcGxldGVseSwgdGhvdWdoIGl0IHdpbGwgcHJvZHVjZSB1bmV4cGVjdGVkIGJlaGF2aW9yLlxuICAgICAgICAvLyBJZiB0aGlzIGhhcHBlbnMsIHRoZXJlIHNob3VsZCBiZSBsZWdpYmxlIGVycm9ycyBpbiB0aGUgY29uc29sZSBmcm9tXG4gICAgICAgIC8vIHRoZSBzY2hlbWEgdmFsaWRhdG9yLlxuICAgICAgICBpZiAoc2NoZW1hUGFydCAmJiAoc2NoZW1hUGFydC5oYXNPd25Qcm9wZXJ0eSgnX3R5cGUnKSB8fCBzY2hlbWFQYXJ0Lmhhc093blByb3BlcnR5KCdfZGVmYXVsdCcpKSkge1xuICAgICAgICAgICAgLy8gV2UgYXNzdW1lIHRoYXQgc2NoZW1hUGFydCBkZWZpbmVzIGEgY29uZmlnIHZhbHVlLCBzaW5jZSBpdCBoYXNcbiAgICAgICAgICAgIC8vIGEgcHJvcGVydHkgYF90eXBlYCBvciBgX2RlZmF1bHRgLlxuICAgICAgICAgICAgaWYgKCFjb25maWcuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbmZpZ1trZXldID0gc2NoZW1hUGFydFsnX2RlZmF1bHQnXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFdlIGFsc28gY2hlY2sgaWYgaXQgaXMgYW4gb2JqZWN0IG9yIGFycmF5IHdpdGggb2JqZWN0IGVsZW1lbnRzLCBpbiB3aGljaCBjYXNlIHdlIHJlY3Vyc2VcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gc2NoZW1hUGFydC5fZWxlbWVudHM7XG4gICAgICAgICAgICBpZiAoY29uZmlnUGFydCAmJiBoYXNPYmplY3RTY2hlbWEoZWxlbWVudHMpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNjaGVtYVBhcnQuX3R5cGUgPT09IFR5cGUuQXJyYXkgJiYgQXJyYXkuaXNBcnJheShjb25maWdQYXJ0KSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb25maWdXaXRoRGVmYXVsdHMgPSBjb25maWdQYXJ0Lm1hcCgoY29uZik9PnNldERlZmF1bHRzKGVsZW1lbnRzLCBjb25mKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ1trZXldID0gY29uZmlnV2l0aERlZmF1bHRzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2NoZW1hUGFydC5fdHlwZSA9PT0gVHlwZS5PYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgb2JqZWN0S2V5IG9mIE9iamVjdC5rZXlzKGNvbmZpZ1BhcnQpKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ1BhcnRbb2JqZWN0S2V5XSA9IHNldERlZmF1bHRzKGVsZW1lbnRzLCBjb25maWdQYXJ0W29iamVjdEtleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGlzT3JkaW5hcnlPYmplY3Qoc2NoZW1hUGFydCkpIHtcbiAgICAgICAgICAgIC8vIFNpbmNlIHNjaGVtYVBhcnQgaGFzIG5vIHByb3BlcnR5IFwiX3R5cGVcIiwgaWYgaXQncyBhbiBvcmRpbmFyeSBvYmplY3RcbiAgICAgICAgICAgIC8vICh1bmxpa2UsIGltcG9ydGFudGx5LCB0aGUgdmFsaWRhdG9ycyBhcnJheSksIHdlIGFzc3VtZSBpdCBpcyBhIHBhcmVudCBjb25maWcgcHJvcGVydHkuXG4gICAgICAgICAgICAvLyBXZSByZWN1cnNlIHRvIGNvbmZpZ1trZXldIGFuZCBzY2hlbWFba2V5XS4gRGVmYXVsdCBjb25maWdba2V5XSB0byB7fS5cbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQ29uZmlnUGFydCA9IGNvbmZpZ1BhcnQgPz8ge307XG4gICAgICAgICAgICAvLyBUaGVyZSB3aWxsIGhhdmUgYmVlbiBhIHZhbGlkYXRpb24gZXJyb3IgYWxyZWFkeSBpZiBjb25maWdQYXJ0IGlzIG5vdCBhIHBsYWluIG9iamVjdC5cbiAgICAgICAgICAgIGlmIChpc09yZGluYXJ5T2JqZWN0KHNlbGVjdGVkQ29uZmlnUGFydCkpIHtcbiAgICAgICAgICAgICAgICBjb25maWdba2V5XSA9IHNldERlZmF1bHRzKHNjaGVtYVBhcnQsIHNlbGVjdGVkQ29uZmlnUGFydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbmZpZztcbn07XG5mdW5jdGlvbiBoYXNPYmplY3RTY2hlbWEoZWxlbWVudHNTY2hlbWEpIHtcbiAgICByZXR1cm4gISFlbGVtZW50c1NjaGVtYSAmJiBPYmplY3Qua2V5cyhlbGVtZW50c1NjaGVtYSkuZmlsdGVyKChlKT0+IVtcbiAgICAgICAgICAgICdfZGVmYXVsdCcsXG4gICAgICAgICAgICAnX3ZhbGlkYXRvcnMnXG4gICAgICAgIF0uaW5jbHVkZXMoZSkpLmxlbmd0aCA+IDA7XG59XG5mdW5jdGlvbiBpc09yZGluYXJ5T2JqZWN0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlICE9PSBudWxsO1xufVxuLyoqIEtlZXAgdHJhY2sgb2Ygd2hpY2ggdmFsaWRhdGlvbiBlcnJvcnMgd2UgaGF2ZSBkaXNwbGF5ZWQuIEVhY2ggb25lIHNob3VsZCBvbmx5IGJlIGRpc3BsYXllZCBvbmNlLiAqLyBsZXQgZGlzcGxheWVkVmFsaWRhdGlvbk1lc3NhZ2VzID0gbmV3IFNldCgpO1xuZnVuY3Rpb24gbG9nRXJyb3Ioa2V5UGF0aCwgbWVzc2FnZSkge1xuICAgIGNvbnN0IGtleSA9IGAke2tleVBhdGh9Ojo6JHttZXNzYWdlfWA7XG4gICAgLy8gdGVjaG5pY2FsbHksIHRoaXMgc2hvdWxkIG5vdCBiZSBwb3NzaWJsZSwgYnV0IGJlY2F1c2Ugb2YgaG93IHRoaW5ncyB3aW5kLXVwIHRyYW5zcGlsZWQsIHRoaXMgaXNuJ3QgaW1wb3NzaWJsZVxuICAgIGlmICghZGlzcGxheWVkVmFsaWRhdGlvbk1lc3NhZ2VzKSB7XG4gICAgICAgIGRpc3BsYXllZFZhbGlkYXRpb25NZXNzYWdlcyA9IG5ldyBTZXQoKTtcbiAgICB9XG4gICAgaWYgKCFkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMuaGFzKGtleSkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICAgICAgZGlzcGxheWVkVmFsaWRhdGlvbk1lc3NhZ2VzLmFkZChrZXkpO1xuICAgIH1cbn1cbi8qKlxuICogTm9ybWFsbHksIGNvbmZpZ3VyYXRpb24gZXJyb3JzIGFyZSBvbmx5IGRpc3BsYXllZCBvbmNlLiBUaGlzIGZ1bmN0aW9uIGNsZWFycyB0aGUgbGlzdCBvZlxuICogZGlzcGxheWVkIGVycm9ycywgc28gdGhhdCB0aGV5IHdpbGwgYmUgZGlzcGxheWVkIGFnYWluLlxuICpcbiAqIEBpbnRlcm5hbFxuICovIGV4cG9ydCBmdW5jdGlvbiBjbGVhckNvbmZpZ0Vycm9ycyhrZXlQYXRoKSB7XG4gICAgaWYgKGtleVBhdGgpIHtcbiAgICAgICAgZGlzcGxheWVkVmFsaWRhdGlvbk1lc3NhZ2VzLmZvckVhY2goKGtleSk9PntcbiAgICAgICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChrZXlQYXRoKSkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXllZFZhbGlkYXRpb25NZXNzYWdlcy5kZWxldGUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZGlzcGxheWVkVmFsaWRhdGlvbk1lc3NhZ2VzLmNsZWFyKCk7XG4gICAgfVxufVxuLyoqXG4gKiBDbGVhbnMgdXAgYWxsIGNvbmZpZyBzdG9yZSBzdWJzY3JpcHRpb25zIGFuZCByZS1lc3RhYmxpc2hlcyB0aGVtLiBUaGlzIGlzIHByaW1hcmlseVxuICogdXNlZnVsIGZvciB0ZXN0aW5nLCB3aGVyZSBzdWJzY3JpcHRpb25zIHNldCB1cCBhdCBtb2R1bGUgbG9hZCB0aW1lIG5lZWQgdG8gYmUgY2xlYXJlZFxuICogYmV0d2VlbiB0ZXN0cyB0byBwcmV2ZW50IGluZmluaXRlIHVwZGF0ZSBsb29wcy4gQWZ0ZXIgY2xlYXJpbmcsIHN1YnNjcmlwdGlvbnMgYXJlXG4gKiByZS1lc3RhYmxpc2hlZCBzbyB0aGUgY29uZmlnIHN5c3RlbSBjb250aW51ZXMgdG8gd29yayBub3JtYWxseS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqLyBleHBvcnQgZnVuY3Rpb24gcmVzZXRDb25maWdTeXN0ZW0oKSB7XG4gICAgY29uZmlnU3Vic2NyaXB0aW9ucy5mb3JFYWNoKCh1bnN1YnNjcmliZSk9PnVuc3Vic2NyaWJlKCkpO1xuICAgIGNvbmZpZ1N1YnNjcmlwdGlvbnMubGVuZ3RoID0gMDtcbiAgICAvLyBDYWNoZWQgY29uZmlncyBhcmUga2V5ZWQgb24gaW5wdXQgaWRlbnRpdHksIHNvIGEgdGVzdCB0aGF0IHJldXNlcyB0aGUgc2FtZSBzY2hlbWEgb3IgY29uZmlnXG4gICAgLy8gb2JqZWN0cyBhY3Jvc3MgY2FzZXMgd291bGQgb3RoZXJ3aXNlIGJlIHNlcnZlZCB0aGUgcHJldmlvdXMgY2FzZSdzIHJlc3VsdC5cbiAgICBtb2R1bGVDb25maWdDYWNoZS5jbGVhcigpO1xuICAgIGV4dGVuc2lvbkNvbmZpZ0NhY2hlLmNsZWFyKCk7XG4gICAgc2NoZW1hVmFsdWVzQW5kU291cmNlc0NhY2hlLmNsZWFyKCk7XG4gICAgaW1wbGVtZW50ZXJUb29sc01vZHVsZUNhY2hlLmNsZWFyKCk7XG4gICAgc2V0dXBDb25maWdTdWJzY3JpcHRpb25zKCk7XG59XG4vKipcbiAqIENvcGllZCBvdmVyIGZyb20gZXNtLWV4dGVuc2lvbnMuIEl0IHJpZ2h0bHkgYmVsb25ncyB0byB0aGF0IG1vZHVsZSwgYnV0IGVzbS1jb25maWdcbiAqIGNhbm5vdCBkZXBlbmQgb24gZXNtLWV4dGVuc2lvbnMuXG4gKi8gZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChleHRlbnNpb25JZCkge1xuICAgIGNvbnN0IFtleHRlbnNpb25OYW1lXSA9IGV4dGVuc2lvbklkLnNwbGl0KCcjJyk7XG4gICAgcmV0dXJuIGV4dGVuc2lvbk5hbWU7XG59XG4vKipcbiAqIFRoZSB0cmFuc2xhdGlvbiBvdmVycmlkZXMgc2NoZW1hIGlzIHVzZWQgaW4gdGhlIGltcGxpY2l0IHNjaGVtYSBnaXZlbiB0byBldmVyeSBtb2R1bGU7XG4gKiBwbHVzIGFueSBhZGRpdGlvbmFsIHRyYW5zbGF0aW9uIG5hbWVzcGFjZXMgKGF0IHRpbWUgb2Ygd3JpdGluZywgdGhpcyBpcyBqdXN0ICdjb3JlJykuXG4gKi8gY29uc3QgdHJhbnNsYXRpb25PdmVycmlkZXNTY2hlbWEgPSB7XG4gICAgJ1RyYW5zbGF0aW9uIG92ZXJyaWRlcyc6IHtcbiAgICAgICAgX2Rlc2NyaXB0aW9uOiAnUGVyLWxhbmd1YWdlIG92ZXJyaWRlcyBmb3IgZnJvbnRlbmQgdHJhbnNsYXRpb25zIHNob3VsZCBiZSBrZXllZCBieSBsYW5ndWFnZSBjb2RlIGFuZCBlYWNoIGxhbmd1YWdlIGRpY3Rpb25hcnkgY29udGFpbnMgdGhlIHRyYW5zbGF0aW9uIGtleSBhbmQgdGhlIGRpc3BsYXkgdmFsdWUnLFxuICAgICAgICBfdHlwZTogVHlwZS5PYmplY3QsXG4gICAgICAgIF9kZWZhdWx0OiB7fSxcbiAgICAgICAgX3ZhbGlkYXRvcnM6IFtcbiAgICAgICAgICAgIHZhbGlkYXRvcigobyk9Pk9iamVjdC5rZXlzKG8pLmV2ZXJ5KChrKT0+L15bYS16XXsyLDN9KC1bQS1aXXsyLDN9KT8kLy50ZXN0KGspKSwgKG8pPT57XG4gICAgICAgICAgICAgICAgY29uc3QgYmFkS2V5cyA9IE9iamVjdC5rZXlzKG8pLmZpbHRlcigoayk9PiEvXlthLXpdezIsM30oLVtBLVpdezIsM30pPyQvLnRlc3QoaykpO1xuICAgICAgICAgICAgICAgIHJldHVybiBgVGhlICdUcmFuc2xhdGlvbiBvdmVycmlkZXMnIG9iamVjdCBzaG91bGQgaGF2ZSBsYW5ndWFnZSBjb2RlcyBmb3Iga2V5cy4gTGFuZ3VhZ2UgY29kZXMgbXVzdCBiZSBpbiB0aGUgZm9ybSBvZiBhIHR3by10by10aHJlZSBsZXR0ZXIgbGFuZ3VhZ2UgY29kZSBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgaHlwaGVuIGFuZCBhIHR3by10by10aHJlZSBsZXR0ZXIgY291bnRyeSBjb2RlLiBUaGUgZm9sbG93aW5nIGtleXMgZG8gbm90IGNvbmZvcm06ICR7YmFkS2V5cy5qb2luKCcsICcpfS5gO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgXVxuICAgIH1cbn07XG4vKipcbiAqIFRoZSBpbXBsaWNpdENvbmZpZ1NjaGVtYSBpcyBpbXBsaWNpdGx5IGluY2x1ZGVkIGluIGV2ZXJ5IGNvbmZpZ3VyYXRpb24gc2NoZW1hXG4gKi8gY29uc3QgaW1wbGljaXRDb25maWdTY2hlbWEgPSB7XG4gICAgJ0Rpc3BsYXkgY29uZGl0aW9ucyc6IHtcbiAgICAgICAgcHJpdmlsZWdlczoge1xuICAgICAgICAgICAgX2Rlc2NyaXB0aW9uOiAnVGhlIHByaXZpbGVnZShzKSB0aGUgdXNlciBtdXN0IGhhdmUgdG8gdXNlIHRoaXMgZXh0ZW5zaW9uJyxcbiAgICAgICAgICAgIF90eXBlOiBUeXBlLkFycmF5LFxuICAgICAgICAgICAgX2RlZmF1bHQ6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIGV4cHJlc3Npb246IHtcbiAgICAgICAgICAgIF9kZXNjcmlwdGlvbjogJ1RoZSBleHByZXNzaW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBleHRlbnNpb24gaXMgZGlzcGxheWVkJyxcbiAgICAgICAgICAgIF90eXBlOiBUeXBlLlN0cmluZyxcbiAgICAgICAgICAgIF9kZWZhdWx0OiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgIH0sXG4gICAgLi4udHJhbnNsYXRpb25PdmVycmlkZXNTY2hlbWFcbn07XG4iXSwibmFtZXMiOlsiY2xvbmVEZWVwIiwiaXNFcXVhbCIsIm1lcmdlV2l0aCIsIm9taXQiLCJsb2Rhc2hPbWl0IiwiVHlwZSIsImlzQXJyYXkiLCJpc0Jvb2xlYW4iLCJpc1V1aWQiLCJpc051bWJlciIsImlzT2JqZWN0IiwiaXNTdHJpbmciLCJ2YWxpZGF0b3IiLCJjb25maWdFeHRlbnNpb25TdG9yZSIsImNvbmZpZ0ludGVybmFsU3RvcmUiLCJnZXRDb25maWdTdG9yZSIsImdldEV4dGVuc2lvbkNvbmZpZyIsImdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUiLCJnZXRFeHRlbnNpb25zQ29uZmlnU3RvcmUiLCJjbGVhckNvbmZpZ0Rlcml2YXRpb25FcnJvciIsImltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZSIsImludmFsaWRhdGVJbXBsZW1lbnRlclRvb2xzQ29uZmlnIiwicmVjb3JkQ29uZmlnRGVyaXZhdGlvbkVycm9yIiwic2V0SW1wbGVtZW50ZXJUb29sc0NvbmZpZ1JlY29tcHV0ZXIiLCJ0ZW1wb3JhcnlDb25maWdTdG9yZSIsInJlcGxhY2VBcnJheXMiLCJfb2JqVmFsdWUiLCJzcmNWYWx1ZSIsIkFycmF5IiwibWVyZ2VEZWVwUmVwbGFjZSIsImxlZnQiLCJyaWdodCIsImNvbmZpZ1N1YnNjcmlwdGlvbnMiLCJyZWNvbXB1dGVBbGxDb25maWdzIiwiY29uZmlnU3RhdGUiLCJ0ZW1wQ29uZmlnU3RhdGUiLCJleHRlbnNpb25TdGF0ZSIsImNvbXB1dGVNb2R1bGVDb25maWciLCJzbG90Q29uZmlncyIsImdldEV4dGVuc2lvblNsb3RDb25maWdzIiwiY29tcHV0ZUV4dGVuc2lvblNsb3RDb25maWdzIiwiY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3MiLCJzZXR1cENvbmZpZ1N1YnNjcmlwdGlvbnMiLCJjb21wdXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZyIsInJlY29tcHV0ZUFsbENvbmZpZ3NTYWZlbHkiLCJlIiwiY29uc29sZSIsIm1vZHVsZUNvbmZpZ0NhY2hlIiwiTWFwIiwic3RhdGUiLCJ0ZW1wU3RhdGUiLCJtb2R1bGVOYW1lIiwiT2JqZWN0IiwibW9kdWxlU3RvcmUiLCJzY2hlbWEiLCJtb2R1bGVMb2FkZWQiLCJCb29sZWFuIiwiY2FjaGVkIiwibmV3U3RhdGUiLCJjb25maWciLCJnZXRDb25maWdGb3JNb2R1bGUiLCJnZXRDb25maWdGb3JNb2R1bGVJbXBsaWNpdFNjaGVtYSIsIm9sZFN0YXRlIiwic2xvdFN0b3JlIiwib2xkU2xvdHMiLCJzbG90cyIsImNoYW5nZWQiLCJzbG90TmFtZSIsInByZXZpb3VzIiwiZ2V0SW1wbGVtZW50ZXJUb29sc0NvbmZpZyIsImV4dGVuc2lvbnNDb25maWdTdG9yZSIsIm9sZENvbmZpZ3MiLCJjb25maWdzIiwiZW50cnlDb3VudCIsImV4dGVuc2lvbiIsImNvbXB1dGVFeHRlbnNpb25Db25maWciLCJlbnRyeSIsInByZXZpb3VzU2xvdCIsImV4dGVuc2lvbklkIiwidG90YWwiLCJzbG90IiwiZGVmaW5lQ29uZmlnU2NoZW1hIiwidmFsaWRhdGVDb25maWdTY2hlbWEiLCJlbmhhbmNlZFNjaGVtYSIsImltcGxpY2l0Q29uZmlnU2NoZW1hIiwicmVnaXN0ZXJNb2R1bGVXaXRoQ29uZmlnU3lzdGVtIiwicmVnaXN0ZXJNb2R1bGVMb2FkIiwicmVnaXN0ZXJUcmFuc2xhdGlvbk5hbWVzcGFjZSIsIm5hbWVzcGFjZSIsInRyYW5zbGF0aW9uT3ZlcnJpZGVzU2NoZW1hIiwiZGVmaW5lRXh0ZW5zaW9uQ29uZmlnU2NoZW1hIiwiZXh0ZW5zaW9uTmFtZSIsInByb3ZpZGUiLCJzb3VyY2VOYW1lIiwid2hlblN0b3JlUmVhZHkiLCJzdG9yZSIsInJlYWR5Iiwic2VsZWN0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJ1bnN1YnNjcmliZSIsInJlc29sdmVkIiwidXBkYXRlIiwiZ2V0Q29uZmlnIiwiZ2V0VHJhbnNsYXRpb25PdmVycmlkZXMiLCJwcm9taXNlcyIsInByb2Nlc3NDb25maWciLCJwcm92aWRlZENvbmZpZyIsImtleVBhdGhDb250ZXh0IiwidmFsaWRhdGVTdHJ1Y3R1cmUiLCJzZXREZWZhdWx0cyIsInJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUiLCJleHRlbnNpb25Db25maWdDYWNoZSIsInNsb3RNb2R1bGVOYW1lIiwiZXh0ZW5zaW9uTW9kdWxlTmFtZSIsInNsb3RDb25maWciLCJnZXRFeHRlbnNpb25OYW1lRnJvbUlkIiwiZXh0ZW5zaW9uQ29uZmlnU2NoZW1hIiwiY2FjaGVLZXkiLCJKU09OIiwibmFtZU9mU2NoZW1hU291cmNlIiwicHJvdmlkZWRDb25maWdzIiwiZ2V0UHJvdmlkZWRDb25maWdzIiwic2hhcmVkT3ZlcnJpZGUiLCJzbG90TW9kdWxlQ29uZmlnIiwibWVyZ2VDb25maWdzRm9yIiwiY29uZmlnT3ZlcnJpZGUiLCJleHRlbnNpb25Db25maWciLCJjb21iaW5lZENvbmZpZyIsIm1lcmdlQ29uZmlncyIsImltcGxlbWVudGVyVG9vbHNNb2R1bGVDYWNoZSIsImFubm90YXRlZFNjaGVtYXMiLCJnZXRBbGxTY2hlbWFzV2l0aFZhbHVlc0FuZFNvdXJjZXMiLCJjb25maWdzQW5kU291cmNlcyIsImMiLCJtb2R1bGVOYW1lcyIsIlNldCIsInJlc3VsdCIsImFubm90YXRlZFNjaGVtYSIsImNvbmZpZ1NsaWNlcyIsInNvdXJjZXMiLCJzb3VyY2UiLCJzbGljZSIsImkiLCJtZXJnZWQiLCJ1bmRlZmluZWQiLCJjcmVhdGVWYWx1ZXNBbmRTb3VyY2VzVHJlZSIsInNjaGVtYVZhbHVlc0FuZFNvdXJjZXNDYWNoZSIsInNjaGVtYXMiLCJhbm5vdGF0ZWQiLCJnZXRTY2hlbWFXaXRoVmFsdWVzQW5kU291cmNlcyIsImlzT3JkaW5hcnlPYmplY3QiLCJvYmoiLCJrZXkiLCJhbGxDb25maWdzIiwic2xvdENvbmZpZ1Blck1vZHVsZSIsInZhbGlkYXRlQWxsRXh0ZW5zaW9uU2xvdENvbmZpZ3MiLCJjb25maWd1cmVCbG9ja3MiLCJjb25maWdCeVNsb3ROYW1lIiwiX2NvbmZpZ3VyZUJsb2NrcyIsIl9zbG90TmFtZSIsImJsb2NrcyIsImNvbmZpZ3VyZSIsInZhbGlkYXRlRXh0ZW5zaW9uU2xvdENvbmZpZyIsImtleVBhdGgiLCJlcnJvclByZWZpeCIsImludmFsaWRLZXlzIiwiayIsImxvZ0Vycm9yIiwibiIsInVwZGF0ZU1lc3NhZ2UiLCJ0aGlzS2V5UGF0aCIsInNjaGVtYVBhcnQiLCJlbGVtZW50cyIsImhhc09iamVjdFNjaGVtYSIsInZhbHVlVHlwZSIsImlucHV0Q29uZmlnIiwiYWxsQ29uZmlnc0Zvck1vZHVsZSIsImFjYyIsInZhbHVlIiwidmFsaWRhdGVCcmFuY2hTdHJ1Y3R1cmUiLCJjaGVja1R5cGUiLCJ2YWxpZGF0ZUZyZWVmb3JtT2JqZWN0U3RydWN0dXJlIiwidmFsaWRhdGVBcnJheVN0cnVjdHVyZSIsImZyZWVmb3JtT2JqZWN0U2NoZW1hIiwiYXJyYXlTY2hlbWEiLCJ2YWxpZGF0ZWRBc0FycmF5IiwicnVuVmFsaWRhdG9ycyIsIl90eXBlIiwidmFsaWRhdG9ycyIsInJldHVyblZhbHVlIiwidmFsaWRhdG9yUmVzdWx0IiwibWVzc2FnZSIsInN0cnVjdHVyZWRDbG9uZSIsImNvbmZpZ1BhcnQiLCJjb25maWdXaXRoRGVmYXVsdHMiLCJjb25mIiwib2JqZWN0S2V5Iiwic2VsZWN0ZWRDb25maWdQYXJ0IiwiZWxlbWVudHNTY2hlbWEiLCJkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMiLCJjbGVhckNvbmZpZ0Vycm9ycyIsInJlc2V0Q29uZmlnU3lzdGVtIiwi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\n//# sourceURL=webpack-internal:///../../framework/esm-config/dist/module-config/module-config.js\n\n}");
|
|
5584
5584
|
|
|
5585
5585
|
},
|
|
5586
5586
|
"../../framework/esm-config/dist/module-config/state.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
|