ids-enterprise-wc 1.15.9-patch.5 → 1.15.9-patch.7
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/chunks/ids-chunk-4MSGTAOV-full.js +12 -0
- package/chunks/ids-chunk-4MSGTAOV-full.js.map +7 -0
- package/chunks/{ids-chunk-7URDZKCS-full.js → ids-chunk-7IP7SLQZ-full.js} +28 -2
- package/chunks/ids-chunk-7IP7SLQZ-full.js.map +7 -0
- package/chunks/{ids-chunk-LZU34NYE-full.js → ids-chunk-CSOF2USI-full.js} +12 -2
- package/chunks/{ids-chunk-LZU34NYE-full.js.map → ids-chunk-CSOF2USI-full.js.map} +2 -2
- package/chunks/{ids-chunk-FW4DOBQU-full.js → ids-chunk-FPEINRXY-full.js} +6 -10
- package/chunks/ids-chunk-FPEINRXY-full.js.map +7 -0
- package/chunks/{ids-chunk-UEVOEMEM-full.js → ids-chunk-HZO4QUAW-full.js} +358 -34
- package/chunks/ids-chunk-HZO4QUAW-full.js.map +7 -0
- package/chunks/{ids-chunk-HGKIZXDQ-full.js → ids-chunk-RLOOHWYV-full.js} +2 -2
- package/components/ids-button/ids-button.css +392 -43
- package/components/ids-checkbox/ids-checkbox.css +7 -580
- package/components/ids-data-grid/ids-data-grid-cell.js +1 -1
- package/components/ids-data-grid/ids-data-grid-column.d.ts +1 -0
- package/components/ids-data-grid/ids-data-grid-column.js +7 -0
- package/components/ids-data-grid/ids-data-grid-filters.js +2 -2
- package/components/ids-data-grid/ids-data-grid-header.d.ts +6 -2
- package/components/ids-data-grid/ids-data-grid-header.js +1 -1
- package/components/ids-data-grid/ids-data-grid-row.d.ts +6 -0
- package/components/ids-data-grid/ids-data-grid-row.js +2 -2
- package/components/ids-data-grid/ids-data-grid.d.ts +18 -1
- package/components/ids-data-grid/ids-data-grid.js +6 -5
- package/components/ids-date-picker/ids-date-picker.css +31 -389
- package/components/ids-layout-grid/ids-layout-grid.css +10 -21300
- package/components/ids-list-box/ids-list-box.css +66 -98
- package/components/ids-menu/ids-menu.css +335 -11
- package/components/ids-module-nav/ids-module-nav.css +24 -2465
- package/components/ids-tag/ids-tag.css +8 -152
- package/components/ids-toolbar/ids-toolbar.css +12 -122
- package/components/ids-trigger-field/ids-trigger-field.css +1681 -1165
- package/custom-elements.json +2090 -1869
- package/enterprise-wc.all.iife.js +395 -39
- package/enterprise-wc.all.iife.js.map +3 -3
- package/enterprise-wc.js +6 -5
- package/package.json +1 -1
- package/vscode.html-custom-data.json +1 -1
- package/chunks/ids-chunk-7URDZKCS-full.js.map +0 -7
- package/chunks/ids-chunk-FW4DOBQU-full.js.map +0 -7
- package/chunks/ids-chunk-UEVOEMEM-full.js.map +0 -7
- /package/chunks/{ids-chunk-HGKIZXDQ-full.js.map → ids-chunk-RLOOHWYV-full.js.map} +0 -0
|
@@ -78111,32 +78111,28 @@ ids-trigger-button[slot=trigger-end] {
|
|
|
78111
78111
|
* @returns {IdsDataGridCell | null} the cell above this cell
|
|
78112
78112
|
*/
|
|
78113
78113
|
get cellAbove() {
|
|
78114
|
-
return this.
|
|
78114
|
+
return this.dataGrid?.findNextNavigableCell(this, "up" /* Up */) ?? null;
|
|
78115
78115
|
}
|
|
78116
78116
|
/**
|
|
78117
78117
|
* Get the cell below this cell
|
|
78118
78118
|
* @returns {IdsDataGridCell | null} the cell below this cell
|
|
78119
78119
|
*/
|
|
78120
78120
|
get cellBelow() {
|
|
78121
|
-
return this.
|
|
78121
|
+
return this.dataGrid?.findNextNavigableCell(this, "down" /* Down */) ?? null;
|
|
78122
78122
|
}
|
|
78123
78123
|
/**
|
|
78124
78124
|
* Get the cell to the left of this cell
|
|
78125
78125
|
* @returns {IdsDataGridCell | null} the cell to the left of this cell
|
|
78126
78126
|
*/
|
|
78127
78127
|
get cellLeft() {
|
|
78128
|
-
|
|
78129
|
-
if (cellLeft && cellLeft !== this) return cellLeft;
|
|
78130
|
-
return this.rowAbove?.cellByIndex(this.dataGrid?.columns.length ?? 0) ?? null;
|
|
78128
|
+
return this.dataGrid?.findNextNavigableCell(this, "left" /* Left */) ?? null;
|
|
78131
78129
|
}
|
|
78132
78130
|
/**
|
|
78133
78131
|
* Get the cell to the right of this cell
|
|
78134
78132
|
* @returns {IdsDataGridCell | null} the cell to the right of this cell
|
|
78135
78133
|
*/
|
|
78136
78134
|
get cellRight() {
|
|
78137
|
-
|
|
78138
|
-
if (cellRight && cellRight !== this) return cellRight;
|
|
78139
|
-
return this.rowBelow?.cellByIndex(0) ?? null;
|
|
78135
|
+
return this.dataGrid?.findNextNavigableCell(this, "right" /* Right */) ?? null;
|
|
78140
78136
|
}
|
|
78141
78137
|
/**
|
|
78142
78138
|
* Get the next editable cell to the left of this cell
|
|
@@ -78750,7 +78746,7 @@ ids-trigger-button[slot=trigger-end] {
|
|
|
78750
78746
|
});
|
|
78751
78747
|
}
|
|
78752
78748
|
this.onEvent("keyup", this.editor?.input, () => {
|
|
78753
|
-
this.dataGrid.updateActiveCellCache(this.row, this.columnIndex, this.editor?.input?.value || "");
|
|
78749
|
+
this.dataGrid.updateActiveCellCache(this.row, this.columnIndex, this.editor?.input?.value || "", true);
|
|
78754
78750
|
});
|
|
78755
78751
|
this.onEvent("keydown", this.editor?.input, (e) => {
|
|
78756
78752
|
if (e.key === "Enter") {
|
|
@@ -80516,6 +80512,9 @@ ids-trigger-button[slot=trigger-end] {
|
|
|
80516
80512
|
}
|
|
80517
80513
|
}
|
|
80518
80514
|
|
|
80515
|
+
// src/components/ids-data-grid/ids-data-grid-column.ts
|
|
80516
|
+
var DEFAULT_COLUMN_MIN_WIDTH = 12;
|
|
80517
|
+
|
|
80519
80518
|
// src/components/ids-data-grid/ids-data-grid-empty-message.ts
|
|
80520
80519
|
function emptyMessageDefaults() {
|
|
80521
80520
|
return {
|
|
@@ -83207,7 +83206,7 @@ ids-loading-indicator[stopped] {
|
|
|
83207
83206
|
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2J1aWxkcy9pbmZvci1kZXNpZ24vZW50ZXJwcmlzZS13Yy9zcmMvY29tcG9uZW50cy9pZHMtZGF0YS1ncmlkIiwic291cmNlcyI6WyJpZHMtZGF0YS1ncmlkLWZpbHRlcnMuc2NzcyIsImlkcy1kYXRhLWdyaWQtaGVhZGVyLnNjc3MiLCJpZHMtZGF0YS1ncmlkLXJvdy5zY3NzIiwiaWRzLWRhdGEtZ3JpZC1jZWxsLnNjc3MiLCIuLi8uLi90aGVtZXMvbWl4aW5zL2lkcy1oaWRlLW1peGluLnNjc3MiLCIuLi9pZHMtcG9wdXAtbWVudS9pZHMtcG9wdXAtbWVudS5zY3NzIiwiLi4vLi4vdGhlbWVzL21peGlucy9pZHMtY2hlY2tib3gtbWl4aW4uc2NzcyIsIi4uLy4uL3RoZW1lcy9taXhpbnMvaWRzLXJhZGlvLW1peGluLnNjc3MiLCJpZHMtZGF0YS1ncmlkLnNjc3MiLCIuLi8uLi90aGVtZXMvbWl4aW5zL2lkcy1jb3JlLW1peGlucy5zY3NzIiwiaWRzLWRhdGEtZ3JpZC1jb21tb24uc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBRUE7O0FBR0Y7RUFJRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBOztBQU1BO0FBQUE7QUFBQTtFQUdFOztBQUtOO0VBQ0U7RUFDQTtFQUVBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBOztBQUdGO0VBQ0U7OztBQ3hFTjtBQUNBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFXQTs7QUFUQTtFQUNFOztBQUdGO0VBQ0U7OztBQVFKO0VBQ0U7O0FBRUE7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7O0FBSUY7RUFDRTtFQUNBOzs7QUFLSjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUVBO0VBQ0U7O0FBR0Y7RUFDRTs7QUFFQTtFQUNFOztBQUVBO0VBQ0U7O0FBSUo7QUFBQTtBQUFBO0VBR0U7O0FBTU47RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBRUU7O0FBR0Y7RUFFRTs7QUFHRjtFQUNFO0VBQ0E7O0FBSUE7RUFDRTs7QUFLSjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBSUY7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFJSjtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBRUE7RUFDRTs7QUFJSjtFQUNFOztBQUlGO0VBQ0U7RUFDQTtFQUNBOztBQUlGO0VBQ0U7O0FBRUE7RUFDRTs7QUFJSjtFQUNFO0VBQ0E7RUFDQTs7QUFJRTtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFLTjtFQUNFO0VBQ0E7O0FBR0E7RUFDRTs7O0FBS047RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTtFQUNBOzs7QUFLQTtBQUFBO0VBRUU7RUFDQTtFQUNBOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFJRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFLQTtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBSUo7RUFDRTs7QUFFQTtFQUNFOzs7QUFLTjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7O0FBSUo7RUFDRTs7O0FBR0Y7QUFBQTtFQUVFOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUtBO0FBQUE7RUFDRTs7O0FBTUY7RUFDRTtFQUNBOztBQUdGO0VBQ0U7OztBQU1GO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBOzs7QUFLSjtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOzs7QUFLSjtFQUNFOzs7QUFHRjtFQUNFOzs7QUFNQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTs7QUFLQTtFQUNFOztBQUlKO0FBQUE7RUFFRTs7QUFLQTtFQUNFOzs7QUFNTjtFQUNFOzs7QUFNRTtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBS0Y7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBSUE7RUFDRTs7QUFHRjtFQUNFOztBQU1KO0VBQ0U7O0FBRUE7RUFDRTs7QUFJSjtFQUNFOztBQUdGO0VBQ0U7O0FBRUE7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7O0FBSUo7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBOztBQUtGO0VBQ0U7O0FBRUE7RUFDRTs7QUFJSjtFQUNFOztBQUdGO0VBQ0U7O0FBRUE7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFJSjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFOztBQUlKO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7O0FBSUY7QUFBQTtBQUFBO0FBQUE7RUFJRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUFPSjtFQUNFOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBS0E7RUFDRTs7QUFLRjtFQUNFOztBQUtOO0VBQ0U7OztBQVFBO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7O0FBSUU7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7OztBQzlvQlY7QUFDQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQU1BO0VBRUU7RUFDQTs7QUFHRjtFQUVFOztBQUdGO0VBQ0U7O0FBS0U7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFLTjtFQUNFOztBQUdFO0VBS0U7RUFDQTs7QUFMQTtFQUNJOztBQVNWO0VBQ0U7O0FBR0U7RUFLRTtFQUNBOztBQUxBO0VBQ0U7O0FBU1I7RUFDRTs7QUFHRTtFQUtFO0VBQ0E7O0FBTEE7RUFDRTs7O0FBV1Y7RUFDRTtFQUNBOztBQUdBO0VBQ0U7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUVBOzs7QUFRQTtFQUNFOztBQUVBO0FBQUE7RUFFRTtFQUNBOztBQUlKO0VBQ0U7RUFDQTs7QUFHRjtFQUNFOztBQUtGO0VBQ0U7O0FBRUE7QUFBQTtFQUVFO0VBQ0E7O0FBSUo7RUFDRTtFQUNBOztBQUdGO0VBQ0U7O0FBS0Y7RUFDRTtFQUNBOztBQUVBO0FBQUE7RUFFRTtFQUNBOztBQUlKO0VBQ0U7RUFDQTs7QUFHRjtFQUNFOztBQUtGO0VBQ0U7RUFDQTs7QUFFQTtBQUFBO0VBRUU7RUFDQTs7QUFNQTtFQUNFO0VBQ0E7O0FBS047RUFDRTtFQUNBOztBQUdGO0VBQ0U7OztBQU1OO0VBQ0U7OztBQUlGO0VBQ0U7RUFDQTtFQUNBOzs7QUFJRjtFQUNFO0VBQ0E7OztBQUtBO0VBQ0U7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBSUo7RUFDRTtFQUNBOztBQUlGO0FBQUE7RUFFRTs7O0FBU007RUFDSTs7QUFTSjtFQUNJOztBQVNKO0VBQ0k7OztBQ3BSZDtBQUdBO0FBYUE7RUFDRTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTs7O0FBS0U7RUFDRTs7QUFHRjtFQUNFOzs7QUFLTjtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0E7RUFDRTs7QUFJRjtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUlGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBSUY7RUFDRTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTs7QUFNRjtFQUNFO0VBQ0E7O0FBS0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7O0FBS0o7RUFDRTs7QUFFQTtFQUNFOztBQUlKO0VBQ0U7O0FBRUE7RUFDRTs7QUFJSjtFQUNFOztBQU9BO0VBQ0U7RUFDQTtFQUNBOztBQUtGO0VBQ0U7O0FBRUE7RUFDRTs7QUFJSjtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUVBO0VBQ0U7O0FBT0o7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBT0Y7RUFDRTs7QUFNQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFOztBQUlKO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBS047RUFHRTs7QUFFQTtFQUNFOztBQU1GO0VBQ0U7RUFDQTs7QUFLRjtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtBQUFBO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUlKO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBRUE7RUFDRTs7QUFLTjtFQUNFOztBQU1BO0VBQ0U7O0FBR0Y7RUFDRTs7QUFJSjtFQUNFOztBQUVBO0VBQ0U7O0FBS047RUFDRTtFQUNBO0VBQ0E7RUFNQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBVEE7RUFDRTs7QUFZSjtFQUlFOztBQUdGO0VBQ0U7O0FBS0E7RUFDRTs7QUFHRjtFQUNFOztBQUtKO0VBQ0U7O0FBRUE7RUFDRTs7QUFLSjtFQUNFOztBQUdGO0VBQ0U7O0FBSUY7RUFDRTs7QUFFQTtBQUFBO0FBQUE7RUFHRTs7QUFLSjtFQUNFO0VBQ0E7O0FBSUY7RUFDRTs7QUFFQTtFQUNFOztBQUlKO0VBQ0U7RUFDQTs7QUFJRTtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFLTjtFQUNFO0VBQ0E7O0FBR0Y7RUEvWkE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQTZaSTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTs7QUFFQTtFQTdhTjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBMmFFO0VBQ0U7RUFDQTs7QUFJQTtFQUNFO0VBQ0E7O0FBS047RUFDRTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFpQk07RUFDRTtFQUNBOztBQUZGO0VBQ0U7RUFDQTs7QUFGRjtFQUNFO0VBQ0E7O0FBRkY7RUFDRTtFQUNBOzs7QUFhUjtFQUNFOztBQUlKO0VBQ0U7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtBQUFBO0VBRUU7RUFDQTs7QUFJQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTs7QUFLRjtFQUNFOztBQUtKO0VBQ0U7O0FBSUY7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7RUFFQTs7QUFJQTtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7O0FBV0Y7RUFDRTs7QUFJSjtFQUNFOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQUVBO0VBQ0U7RUFDQTs7QUFLSjtFQUNFOztBQUlGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7O0FBSUE7RUFDRTs7QUFHRjtFQUNFOzs7QUFXRjtFQUNFOztBQUlKO0VBQ0U7O0FBSUY7RUFDRTs7QUFJRjtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTs7QUFJQTtFQUNFOztBQUdGO0VBQ0U7OztBQVdGO0VBQ0U7O0FBS0o7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBRUE7RUFDRTtFQUNBOztBQUtGO0VBQ0U7OztBQVdGO0VBQ0U7OztBQVFKO0VBQ0U7RUFDQTs7QUFFQTtFQUNFOztBQUdGO0VBQ0U7O0FBSUo7RUFDRTs7O0FBS0o7RUFDRTtFQUNBO0VBQ0E7OztBQU1FO0VBQ0U7O0FBTUY7RUFDRTtFQUNBOztBQUlFO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQURGO0VBQ0U7O0FBREY7RUFDRTs7QUFERjtFQUNFOztBQUtOO0VBQ0U7O0FBSUE7RUFFRTs7QUFLRjtFQUNFOzs7QUFPUjtFQUNFOzs7QUNyekJGO0VBQ0U7OztBQUlBO0VBREY7SUFFSTs7OztBQVdGO0VBREY7SUFFSTs7OztBQVdGO0VBREY7SUFFSTs7OztBQVdGO0VBREY7SUFFSTs7OztBQVdGO0VBREY7SUFFSTs7OztBQVdGO0VBREY7SUFFSTs7OztBQVdGO0VBREY7SUFFSTs7OztBQVdGO0VBREY7SUFFSTs7OztBQVdGO0VBREY7SUFFSTs7OztBQVdGO0VBREY7SUFFSTs7OztBQVdGO0VBREY7SUFFSTs7OztBQVdGO0VBREY7SUFFSTs7OztBQS9CRjtFQzVHRjtJRDZHSTs7OztBQ3hHRjtFQUNFO0VBQ0E7OztBQ1RKO0FBQUE7QUFBQTtBQW9JQTtFQUNFO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBO0lBQ0E7SUFDQTs7RUFHRjtJQUNFO0lBQ0E7SUFDQTtJQUNBOzs7QUFJSjtFQUNFO0lBQ0U7O0VBR0Y7SUFDRTs7O0FDaktKO0FBQUE7QUFBQTtBQ1dBO0VBQ0U7RUFFQTtFQUNBOzs7QUFHRjtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VDckJBO0VBQ0E7RUR5QkE7RUFDQTs7QUFHQTtFQUNFO0VBQ0E7RUFDQTs7QUFLQTtBQUFBO0VBRUU7O0FBS0Y7RUFDRTs7QUFLRjtFQUNFOztBQUlKO0VGMURBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VFMkRFO0VBQ0E7RUFDQTtFQUNBOztBQVBBO0VBQ0U7O0FBUUY7RUZmRjtFQUNBO0VBQ0E7RUVnQkk7O0FBR0Y7RUY3REY7RUFDQTs7QUUrREk7RUYzREo7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFRW9ETTs7QUFHRjtFRnBCSjtFQUNBOztBRXdCRTtFRnZERjtFQUNBOztBRXlESTtFRnJESjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VFOENNOztBQU1OO0VBQ0U7RUFDQTtFQUNBOztBQUdGO0VENUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUN3R0U7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUR6R0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FDb0dFO0VEdkVGO0VBQ0E7RUFDQTtFQUNBOztBQ3dFRTtFRDNGRjtFQUNBOztBQzZGSTtFRHpGSjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUN1Rkk7RURuRUo7RUFDQTtFQUNBOztBQ3dFQTtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUlBO0VBQ0U7O0FBS047RUFDRTtFQUNBOztBQStFVTtFQUNFO0VBQ0E7O0FBT0Y7RUFDRTtFQUNBOztBQVFOO0VFOVFSOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBRndRUTtFRW5SVjtFRnNSWTs7QUVwUlo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FGNlFVO0VBQ0U7O0FBUVY7RUFDRTs7QUFRSTtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFvQkE7RUFDRTtFQUNBOztBQW5CSjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFRQTtFQUNFO0VBQ0E7O0FBbkJKO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQVFBO0VBQ0U7RUFDQTs7QUFuQko7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBUUE7RUFDRTtFQUNBOztBQW5CSjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFRQTtFQUNFO0VBQ0E7O0FBbkJKO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQVFBO0VBQ0U7RUFDQTs7QUFuQko7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBUUE7RUFDRTtFQUNBOztBQW5CSjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFRQTtFQUNFO0VBQ0E7O0FBOUVGO0VBQ0U7RUFDQTs7QUFPRjtFQUNFO0VBQ0E7O0FBUU47RUU5UVI7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FGd1FRO0VFblJWO0VGc1JZOztBRXBSWjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUY2UVU7RUFDRTs7QUFRVjtFQUNFOztBQVFJO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQW9CQTtFQUNFO0VBQ0E7O0FBbkJKO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQVFBO0VBQ0U7RUFDQTs7QUFuQko7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBUUE7RUFDRTtFQUNBOztBQW5CSjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFRQTtFQUNFO0VBQ0E7O0FBbkJKO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQVFBO0VBQ0U7RUFDQTs7QUFuQko7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBUUE7RUFDRTtFQUNBOztBQW5CSjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFRQTtFQUNFO0VBQ0E7O0FBbkJKO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQVFBO0VBQ0U7RUFDQTs7QUE5RUY7RUFDRTtFQUNBOztBQU9GO0VBQ0U7RUFDQTs7QUFRTjtFRTlRUjs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUZ3UVE7RUVuUlY7RUZzUlk7O0FFcFJaO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBRjZRVTtFQUNFOztBQVFWO0VBQ0U7O0FBUUk7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBb0JBO0VBQ0U7RUFDQTs7QUFuQko7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBUUE7RUFDRTtFQUNBOztBQW5CSjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFRQTtFQUNFO0VBQ0E7O0FBbkJKO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQVFBO0VBQ0U7RUFDQTs7QUFuQko7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBUUE7RUFDRTtFQUNBOztBQW5CSjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFRQTtFQUNFO0VBQ0E7O0FBbkJKO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQVFBO0VBQ0U7RUFDQTs7QUFuQko7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBUUE7RUFDRTtFQUNBOztBQTlFRjtFQUNFO0VBQ0E7O0FBT0Y7RUFDRTtFQUNBOztBQVFOO0VFOVFSOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBRndRUTtFRW5SVjtFRnNSWTs7QUVwUlo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FGNlFVO0VBQ0U7O0FBUVY7RUFDRTs7QUFRSTtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFvQkE7RUFDRTtFQUNBOztBQW5CSjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFRQTtFQUNFO0VBQ0E7O0FBbkJKO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQVFBO0VBQ0U7RUFDQTs7QUFuQko7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBUUE7RUFDRTtFQUNBOztBQW5CSjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFRQTtFQUNFO0VBQ0E7O0FBbkJKO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQVFBO0VBQ0U7RUFDQTs7QUFuQko7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBUUE7RUFDRTtFQUNBOztBQW5CSjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFRQTtFQUNFO0VBQ0E7O0FBOUVGO0VBQ0U7RUFDQTs7QUFPRjtFQUNFO0VBQ0E7O0FBUU47RUU5UVI7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FGd1FRO0VFblJWO0VGc1JZOztBRXBSWjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUY2UVU7RUFDRTs7QUFRVjtFQUNFOztBQVFJO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQW9CQTtFQUNFO0VBQ0E7O0FBbkJKO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQVFBO0VBQ0U7RUFDQTs7QUFuQko7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBUUE7RUFDRTtFQUNBOztBQW5CSjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFRQTtFQUNFO0VBQ0E7O0FBbkJKO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQVFBO0VBQ0U7RUFDQTs7QUFuQko7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBUUE7RUFDRTtFQUNBOztBQW5CSjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFRQTtFQUNFO0VBQ0E7O0FBbkJKO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQVFBO0VBQ0U7RUFDQTs7QUFZVjtFQUNFOztBQU1OO0VBQ0U7O0FBSUY7RUFDRTtFQUNBOztBQUVBO0VBQ0U7OztBQU1OO0VBQ0U7OztBQUlGO0VBQ0U7RUFDQTtFQUNBOzs7QUFJRjtFQUNFOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBSUo7QUFBQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBS0E7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7OztBQUlKO0VBQ0U7OztBQUdGO0VBQ0U7OztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7O0FBS0Y7QUFBQTtFQUVFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBRUE7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUVBO0VBQ0E7OztBQUtKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLyogSWRzIERhdGEgR3JpZCBDb21wb25lbnQgLSBGaWx0ZXIgKi9cbi5pZHMtZGF0YS1ncmlkIHtcbiAgLS1pZHMtYnV0dG9uLWZvcm1hdHRlci1jb2xvci10ZXh0LWRlZmF1bHQ6IHZhcigtLWlkcy1kYXRhLWdyaWQtZmlsdGVyLWljb24tY29sb3IpO1xuICAtLWlkcy1idXR0b24tZm9ybWF0dGVyLWNvbG9yLWJhY2tncm91bmQtaG92ZXI6IHZhcigtLWlkcy1kYXRhLWdyaWQtZmlsdGVyLWljb24tY29sb3ItYmFja2dyb3VuZC1ob3Zlcik7XG4gIC0taWRzLWJ1dHRvbi1mb3JtYXR0ZXItY29sb3ItdGV4dC1ob3ZlcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1maWx0ZXItaWNvbi1jb2xvci1ob3Zlcik7XG4gIC0taWRzLW1lbnUtaXRlbS13aWR0aC1taW46IDE5MHB4O1xuICAtLWlkcy10cmlnZ2VyLWZpZWxkLWJ1dHRvbi1pbnNldC1pbmxpbmUtc3RhcnQ6IDA7XG5cbiAgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLWNlbGwtZmlsdGVyLXdyYXBwZXIgaWRzLWRyb3Bkb3duIHtcbiAgICAtLWlkcy10cmlnZ2VyLWZpZWxkLWJ1dHRvbi1pbnNldC1pbmxpbmUtc3RhcnQ6IC0xcHg7XG5cbiAgICBwYWRkaW5nLXRvcDogM3B4O1xuICB9XG5cbiAgJltkYXRhLXJvdy1oZWlnaHQ9J21kJ10gaWRzLWRyb3Bkb3duLFxuICAmW2RhdGEtcm93LWhlaWdodD0nc20nXSBpZHMtZHJvcGRvd24sXG4gICZbZGF0YS1yb3ctaGVpZ2h0PSd4cyddIGlkcy1kcm9wZG93bixcbiAgJltkYXRhLXJvdy1oZWlnaHQ9J3h4cyddIGlkcy1kcm9wZG93biB7XG4gICAgcGFkZGluZy10b3A6IDA7XG4gIH1cblxuICA6OnNsb3R0ZWQoW3Nsb3RePSdmaWx0ZXItJ10pIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLWNlbGwtY29udGVudC52ZXJ0aWNhbC1hbGlnbi1jZW50ZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0b3A6IGNhbGMoNTAlIC0gdmFyKC0taWRzLXNwYWNlLXNtKSk7XG4gIH1cblxuICAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbC1maWx0ZXItd3JhcHBlciB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nLWlubGluZTogY2FsYyh2YXIoLS1pZHMtc3BhY2UteHMpICsgNHB4KTtcbiAgICBwYWRkaW5nLWJsb2NrLWVuZDogdmFyKC0taWRzLXNwYWNlLXhzKTtcblxuICAgICYuaGlkZGVuIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgaWRzLWRyb3Bkb3duW2NvbXBhY3RdIGlkcy1saXN0LWJveC1vcHRpb24ge1xuICAgICAgZm9udC1zaXplOiB1bnNldDtcbiAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLWlkcy1zaXplLTIwKTtcbiAgICB9XG4gIH1cblxuICAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbC5pcy11cHBlcmNhc2Uge1xuICAgIC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsLWZpbHRlci13cmFwcGVyIHtcbiAgICAgIGlkcy1saXN0LWJveC1vcHRpb24sXG4gICAgICBpZHMtZHJvcGRvd246OnBhcnQodHJpZ2dlcmZpZWxkLWlucHV0KSxcbiAgICAgIGlkcy1pbnB1dDo6cGFydChpbnB1dCkge1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIFtkYXRhLWZpbHRlci1jb25kaXRpb25zLWJ1dHRvbl0ge1xuICAgIC0taWRzLWJ1dHRvbi1pY29uLWNvbXBhY3QtaGVpZ2h0OiAyMHB4O1xuICAgIC0taWRzLWJ1dHRvbi1pY29uLWNvbXBhY3Qtd2lkdGg6IDM2cHg7XG5cbiAgICBtYXJnaW4taW5saW5lLWVuZDogMnB4O1xuICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDA7XG5cbiAgICBpZHMtaWNvbiB7XG4gICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAzcHg7XG4gICAgICBtYXJnaW4taW5saW5lLWVuZDogLTNweDtcbiAgICB9XG5cbiAgICBpZHMtaWNvbi1idXR0b24ge1xuICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvKiBJZHMgRGF0YSBHcmlkIENvbXBvbmVudCAtIEhlYWRlciAqL1xuLmlkcy1kYXRhLWdyaWQtaGVhZGVyIHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG4gIHotaW5kZXg6IDE7IC8vIEhpZ2hlciB0aGFuIGJvZHkgY29sdW1uczsgei1pbmRleCBoaWdoZXIgdGhhbiAyIHdpbGwgYnJlYWsgaWRzLWxvYWRpbmctaW5kaWNhdG9yJ3Mgb3ZlcmxheVxuICBoZWlnaHQ6IDM0cHg7XG5cbiAgJi5pcy1mcm96ZW4ge1xuICAgIHotaW5kZXg6IDI7XG4gIH1cblxuICAmOmhhcyguaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbC1maWx0ZXItd3JhcHBlcikge1xuICAgIGhlaWdodDogNjJweDtcbiAgfVxuXG4gIC8vIEZpbHRlciBidXR0b24gaGVpZ2h0XG4gIC0taWRzLWJ1dHRvbi1mb3JtYXR0ZXItc2l6ZTogMjhweDtcbn1cblxuLy8gSGVhZGVyIENoZWNrYm94XG4uaWRzLWRhdGEtZ3JpZC1oZWFkZXItdGV4dCAuaWRzLWRhdGEtZ3JpZC1jaGVja2JveC1jb250YWluZXIge1xuICB3aWR0aDogMjBweDtcblxuICAmW2Rpc2FibGVkPSd0cnVlJ10ge1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgfVxuXG4gIC5pZHMtZGF0YS1ncmlkLWNoZWNrYm94W2Rpc2FibGVkPSd0cnVlJ10ge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIG9wYWNpdHk6IHZhcigtLWlkcy1kYXRhLWdyaWQtaGVhZGVyLWNoZWNrYm94LW9wYWNpdHktZGlzYWJsZWQpO1xuICB9XG5cblxuICAuaWRzLWRhdGEtZ3JpZC1jaGVja2JveDpub3QoLmNoZWNrZWQpOm5vdCguaW5kZXRlcm1pbmF0ZSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtaGVhZGVyLWNoZWNrYm94LWNvbG9yLWJhY2tncm91bmQpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1oZWFkZXItY2hlY2tib3gtY29sb3ItYm9yZGVyKTtcbiAgfVxufVxuXG4vLyBIZWFkZXIgQ2VsbCBBcmVhXG4uaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJvcmRlci1pbmxpbmUtc3RhcnQ6IDFweCBzb2xpZCB2YXIoLS1pZHMtZGF0YS1ncmlkLWhlYWRlci1jb2xvci1ib3JkZXIpO1xuICBib3JkZXItYmxvY2stZW5kOiAxcHggc29saWQgdmFyKC0taWRzLWRhdGEtZ3JpZC1oZWFkZXItY29sb3ItYm9yZGVyKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1oZWFkZXItY29sb3ItYmFja2dyb3VuZC1kZWZhdWx0KTtcbiAgbWluLWhlaWdodDogMjhweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICY6aGFzKC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsLWZpbHRlci13cmFwcGVyKSB7XG4gICAgaGVpZ2h0OiA2MnB4O1xuXG4gICAgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLXRleHQge1xuICAgICAgcGFkZGluZy1ibG9jay1lbmQ6IHZhcigtLWlkcy1zcGFjZS0yeHMpO1xuICAgIH1cblxuICAgIC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsLWZpbHRlci13cmFwcGVyIHtcbiAgICAgIGhlaWdodDogdmFyKC0taWRzLWRhdGEtZ3JpZC1maWx0ZXItaGVpZ2h0KTtcblxuICAgICAgaWRzLW1lbnUtYnV0dG9uIHtcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS1pZHMtZGF0YS1ncmlkLWZpbHRlci1oZWlnaHQpO1xuXG4gICAgICAgICY6OnBhcnQoYnV0dG9uKSB7XG4gICAgICAgICAgaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlkcy1kcm9wZG93bjo6cGFydCh0cmlnZ2VyZmllbGQtZmllbGQtY29udGFpbmVyKSxcbiAgICAgIGlkcy1pbnB1dDo6cGFydChmaWVsZC1jb250YWluZXIpLFxuICAgICAgaWRzLXRyaWdnZXItZmllbGQ6OnBhcnQoZmllbGQtY29udGFpbmVyKSB7XG4gICAgICAgIGhlaWdodDogdmFyKC0taWRzLWRhdGEtZ3JpZC1maWx0ZXItaGVpZ2h0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBIaWRlIGZpcnN0IGJvcmRlclxuICAmOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOiB2YXIoLS1pZHMtYm9yZGVyLXdpZHRoLW5vbmUpO1xuICB9XG5cbiAgJjpob3Zlci5pcy1hY3Rpb25hYmxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pZHMtZGF0YS1ncmlkLWhlYWRlci1jb2xvci1iYWNrZ3JvdW5kLWhvdmVyKTtcbiAgfVxuXG4gICYuYWxpZ24tY2VudGVyIC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsLWNvbnRlbnQsXG4gICYuYWxpZ24tY2VudGVyIC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsLWZpbHRlci13cmFwcGVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuXG4gICYuYWxpZ24tcmlnaHQgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLWNlbGwtY29udGVudCxcbiAgJi5hbGlnbi1yaWdodCAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbC1maWx0ZXItd3JhcHBlciB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgfVxuXG4gICYuYWxpZ24tcmlnaHQgLmlzLXNvcnRhYmxlIC5pZHMtZGF0YS1ncmlkLWhlYWRlci10ZXh0IHtcbiAgICBwYWRkaW5nLWlubGluZS1lbmQ6IHZhcigtLWlkcy1kYXRhLWdyaWQtcGFkZGluZy1sZyk7XG4gICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDVweDtcbiAgfVxuXG4gICYuYWxpZ24tcmlnaHQgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLWNlbGwtZmlsdGVyLXdyYXBwZXIge1xuICAgIGlkcy1tZW51LWJ1dHRvbiB7XG4gICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1pZHMtc3BhY2UtM3hzKTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXNpemluZyBDZWxsc1xuICAucmVzaXplciB7XG4gICAgY3Vyc29yOiB2YXIoLS1pZHMtY3Vyc29yLXJlc2l6ZSk7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbWFyZ2luLWlubGluZS1zdGFydDogY2FsYygxMDAlIC0gNHB4KTtcbiAgICB0b3A6IHZhcigtLWlkcy1zcGFjZS1ub25lKTtcbiAgICB3aWR0aDogNnB4O1xuICAgIHotaW5kZXg6IDI7XG4gIH1cblxuICAvLyBSZW9yZGVyYWJsZSBDZWxsc1xuICAucmVvcmRlcmVyIHtcbiAgICBjdXJzb3I6IHZhcigtLWlkcy1jdXJzb3ItbW92ZSk7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICAgIGhlaWdodDogMzRweDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IHZhcigtLWlkcy1zcGFjZS14cyk7XG4gICAgdG9wOiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG4gICAgd2lkdGg6IHZhcigtLWlkcy1zcGFjZS0yeHMpO1xuXG4gICAgaWRzLWljb24ge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtaGVhZGVyLWNvbG9yLWljb24pO1xuICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiBjYWxjKC0xICogdmFyKC0taWRzLXNwYWNlLXhzKSk7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB0b3A6IGNhbGMoNTAlIC0gOXB4KTtcbiAgICB9XG4gIH1cblxuICAmLmFsaWduLXJpZ2h0IC5yZW9yZGVyZXIge1xuICAgIGluc2V0LWlubGluZS1lbmQ6IDVweDtcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IGluaXRpYWw7XG4gIH1cblxuICAmOmxhc3QtY2hpbGQgLnJlc2l6ZXIge1xuICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IGNhbGMoMTAwJSAtIDZweCk7IC8vIFByZXZlbnRzIHVubmVlZGVkIHNjcm9sbGJhclxuICB9XG5cbiAgJi5kcmFnZ2luZyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1oZWFkZXItZHJhZy1iYWNrZ3JvdW5kLWNvbG9yKSAhaW1wb3J0YW50OyAvLyB0aGlzIGltcG9ydGFudCBpcyBuZWVkZWQgZm9yIGRyYWcgc3R5bGVzIHRvIHdvcmtcbiAgICBib3JkZXItaW5saW5lLXN0YXJ0OiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbGVmdDogLTEwMDBweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG4gICAgd2lkdGg6IDExMHB4O1xuICB9XG5cbiAgJi5hY3RpdmUtZHJhZy1jb2x1bW4ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtaGVhZGVyLWNvbG9yLWJhY2tncm91bmQtZGVmYXVsdC1wbGFjZWhvbGRlci1kcmFnZ2luZyk7XG5cbiAgICAuc29ydC1pbmRpY2F0b3Ige1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cblxuICAmOmhvdmVyIC5yZW9yZGVyZXIge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAvLyBSZW9yZGVyYWJsZSBDZWxsc1xuICAmLmZyb3plbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1oZWFkZXItY29sb3ItYmFja2dyb3VuZC1kZWZhdWx0KTtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIHotaW5kZXg6IDM7XG4gIH1cblxuICAvLyBDaGFuZ2UgYm9yZGVycyBmb3IgZnJvemVuIGNvbHVtbiBzY3JvbGxpbmdcbiAgJi5mcm96ZW4tbGFzdCB7XG4gICAgYm9yZGVyLWlubGluZS1lbmQ6IDFweCBzb2xpZCB2YXIoLS1pZHMtZGF0YS1ncmlkLWhlYWRlci1jb2xvci1ib3JkZXIpO1xuXG4gICAgKyAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbCB7XG4gICAgICBib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOiB2YXIoLS1pZHMtYm9yZGVyLXdpZHRoLW5vbmUpO1xuICAgIH1cbiAgfVxuXG4gICYuZnJvemVuLWxlZnQge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgbGVmdDogdmFyKC0taWRzLXNwYWNlLW5vbmUpO1xuICAgIHotaW5kZXg6IDI7XG5cbiAgICAvLyBEeW5hbWljYWxseSBhZGRlZCB3aWR0aHNcbiAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIDEwIHtcbiAgICAgICY6bnRoLW9mLXR5cGUoI3skaX0pIHtcbiAgICAgICAgbGVmdDogdmFyKC0taWRzLWRhdGEtZ3JpZC1mcm96ZW4tY29sdW1uLWxlZnQtd2lkdGgtI3skaX0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYuZnJvemVuLXJpZ2h0IHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIHJpZ2h0OiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG5cbiAgICAvLyBXaWVyZCBjZW50ZXJpbmcgYnVnIChmcm96ZW4gcmlnaHQpXG4gICAgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLWNlbGwtY29udGVudCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICB9XG4gIH1cbn1cblxuLmlkcy1kYXRhLWdyaWQtaGVhZGVyLWNlbGwtY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi5pZHMtZGF0YS1ncmlkLWhlYWRlci10ZXh0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IHZhcigtLWlkcy1kYXRhLWdyaWQtaGVhZGVyLWxnLXBhZGRpbmcpO1xuICBmb250LXdlaWdodDogdmFyKC0taWRzLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgZm9udC1zaXplOiB2YXIoLS1pZHMtZGF0YS1ncmlkLWZvbnQtc2l6ZS1zbSk7XG4gIGNvbG9yOiB2YXIoLS1pZHMtZGF0YS1ncmlkLWhlYWRlci1jb2xvci10ZXh0KTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gIHNtYWxsIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0taWRzLWZvbnQtd2VpZ2h0LW5vcm1hbCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1pZHMtZGF0YS1ncmlkLWZvbnQtc2l6ZS1zbSk7XG4gIH1cbn1cblxuLmhlYWRlci10ZXh0LWNvbnRlbnQge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLy8gUmVxdWlyZWQgaW5kaWNhdG9yIHVzaW5nIENTUyBwc2V1ZG8tZWxlbWVudFxuLmlkcy1kYXRhLWdyaWQtaGVhZGVyLWNlbGwuaXMtcmVxdWlyZWQge1xuICAuaGVhZGVyLXRleHQtY29udGVudDo6YWZ0ZXIsXG4gIC5pZHMtY2hlY2tib3ggLmxhYmVsLXRleHQ6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnKic7XG4gICAgY29sb3I6IHZhcigtLWlkcy1pbnB1dC1yZXF1aXJlZC1pbmRpY2F0b3ItY29sb3ItdGV4dC1kZWZhdWx0KTtcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1pZHMtc3BhY2UtM3hzKTtcbiAgfVxufVxuXG4uaWRzLWRhdGEtZ3JpZC1oZWFkZXItaWNvbiB7XG4gIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtaGVhZGVyLWNvbG9yLXRleHQpO1xuICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1pZHMtc3BhY2UtMnhzKTtcbiAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1pZHMtc3BhY2UtMnhzKTtcbn1cblxuLy8gSGVhZGVyIHNvcnQgc3R5bGVzXG4uc29ydC1pbmRpY2F0b3Ige1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDRweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBoZWlnaHQ6IGNhbGModmFyKC0taWRzLXNwYWNlLWxnKSAtIDJweCk7XG4gIHdpZHRoOiAxOHB4O1xufVxuXG4vLyBTb3J0IEhvdmVyIHN0YXRlc1xuLmlzLXNvcnRhYmxlIHtcbiAgLnNvcnQtaW5kaWNhdG9yIGlkcy1pY29uIHtcbiAgICBjb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1oZWFkZXItY29sb3ItaWNvbi11bnNvcnRlZCk7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgdmFyKC0taWRzLW1vdGlvbi1lYXNlKSAwcztcblxuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgdG9wOiB2YXIoLS1pZHMtc3BhY2UtMnhzKTtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRvcDogLTEwcHg7XG4gICAgfVxuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgLnNvcnQtaW5kaWNhdG9yIGlkcy1pY29uIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG59XG5cbi5oZWFkZXItZXhwYW5kZXIge1xuICBkaXNwbGF5OiBub25lO1xuICBtYXgtaGVpZ2h0OiAxOHB4O1xuICBjdXJzb3I6IHZhcigtLWlkcy1jdXJzb3ItcG9pbnRlcik7XG4gIGNvbG9yOiB2YXIoLS1pZHMtZGF0YS1ncmlkLWhlYWRlci1leHBhbmRlci1jb2xvcik7XG4gIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHZhcigtLWlkcy1zcGFjZS0xMik7XG5cbiAgJjpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtaGVhZGVyLWV4cGFuZGVyLWNvbG9yLWFjdGl2ZSk7XG4gIH1cbn1cblxuW2RhdGEtcm93LWhlaWdodD0neHhzJ10gLmhlYWRlci1leHBhbmRlciB7XG4gIHRvcDogdmFyKC0taWRzLXNwYWNlLTN4cyk7XG59XG5cbjpob3N0KFtzaG93LWhlYWRlci1leHBhbmRlcl0pIC5oZWFkZXItZXhwYW5kZXIsXG4uY29sdW1uLWhlYWRlci1leHBhbmRlciAuaGVhZGVyLWV4cGFuZGVyIHtcbiAgZGlzcGxheTogdW5zZXQ7XG59XG5cbi5oYXMtc2VsZWN0aW9uY2hlY2tib3ggLmlkcy1kYXRhLWdyaWQtaGVhZGVyLXRleHQge1xuICBwYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0taWRzLXNwYWNlLW5vbmUpO1xuICBwYWRkaW5nLWlubGluZS1lbmQ6IHZhcigtLWlkcy1zcGFjZS1ub25lKTtcbn1cblxuLmlzLXNvcnRhYmxlLFxuLmhhcy1oZWFkZXJpY29uIHtcbiAgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLXRleHQge1xuICAgIHBhZGRpbmctaW5saW5lLWVuZDogdmFyKC0taWRzLXNwYWNlLW5vbmUpO1xuICB9XG59XG5cbi8vIEFzY2VuZGluZyBzb3J0XG5bYXJpYS1zb3J0PSdhc2NlbmRpbmcnXSAuaXMtc29ydGFibGUgLnNvcnQtaW5kaWNhdG9yIGlkcy1pY29uIHtcbiAgJjpmaXJzdC1jaGlsZCB7XG4gICAgY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtaGVhZGVyLWNvbG9yLWljb24tc29ydGVkKTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbi8vIERlc2NlbmRpbmcgc29ydFxuW2FyaWEtc29ydD0nZGVzY2VuZGluZyddIC5pcy1zb3J0YWJsZSAuc29ydC1pbmRpY2F0b3IgaWRzLWljb24ge1xuICAmOmZpcnN0LWNoaWxkIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkIHtcbiAgICBjb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1oZWFkZXItY29sb3ItaWNvbi1zb3J0ZWQpO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuLy8gRHJhZyBhcnJvd3MgZm9yIHNvcnRpbmdcbi5pZHMtZGF0YS1ncmlkLXNvcnQtYXJyb3dzIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAzNHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDE7XG5cbiAgJjo6YmVmb3JlLFxuICAmOjphZnRlciB7XG4gICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmlnaHQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGxlZnQ6IC01cHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAwO1xuICB9XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBib3JkZXItdG9wOiA1cHggc29saWQgdmFyKC0taWRzLWRhdGEtZ3JpZC1oZWFkZXItZHJhZy1hcnJvdy1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICB0b3A6IC02cHg7XG4gIH1cblxuICAmOjphZnRlciB7XG4gICAgYm9yZGVyLWJvdHRvbTogNXB4IHNvbGlkIHZhcigtLWlkcy1kYXRhLWdyaWQtaGVhZGVyLWRyYWctYXJyb3ctY29sb3ItYmFja2dyb3VuZCk7XG4gICAgYm90dG9tOiAtOXB4O1xuICB9XG59XG5cbi8vIFN0YW5kYWxvbmUgQ3NzXG50ci5pZHMtZGF0YS1ncmlkLWhlYWRlciB7XG4gIHBvc2l0aW9uOiBpbml0aWFsO1xufVxuXG50aC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsIHtcbiAgZGlzcGxheTogdGFibGUtY2VsbDtcbn1cblxuLy8gTGlzdCBTdHlsZSBGZWF0dXJlXG4uaWRzLWRhdGEtZ3JpZC5pcy1saXN0LXN0eWxlIHtcbiAgLy8gQ2hhbmdlIEhlYWRlciBDb2xvclxuICAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1saXN0LWhlYWRlci1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtbGlzdC1oZWFkZXItY29sb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC5pZHMtZGF0YS1ncmlkLWhlYWRlci10ZXh0IHtcbiAgICBjb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1saXN0LWhlYWRlci1jb2xvci10ZXh0KTtcbiAgfVxuXG4gIC8vIENoYW5nZSBTb3J0IEljb24gQ29sb3JzXG4gIC5pcy1zb3J0YWJsZSB7XG4gICAgaWRzLWljb24ge1xuICAgICAgY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtaGVhZGVyLWNvbG9yLWljb24tdW5zb3J0ZWQpO1xuICAgIH1cbiAgfVxuXG4gIFthcmlhLXNvcnQ9J2Rlc2NlbmRpbmcnXSAuaXMtc29ydGFibGUgaWRzLWljb246bGFzdC1jaGlsZCxcbiAgW2FyaWEtc29ydD0nYXNjZW5kaW5nJ10gLmlzLXNvcnRhYmxlIGlkcy1pY29uOmZpcnN0LWNoaWxkICB7XG4gICAgY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtbGlzdC1oZWFkZXItY29sb3ItaWNvbi11bnNvcnRlZClcbiAgfVxuXG4gIC8vIENoYW5nZSBIZWFkZXIgQ2hlY2tib3hcbiAgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLXRleHQgLmlkcy1kYXRhLWdyaWQtY2hlY2tib3gtY29udGFpbmVyIHtcbiAgICAuaWRzLWRhdGEtZ3JpZC1jaGVja2JveDpub3QoLmNoZWNrZWQpOm5vdCguaW5kZXRlcm1pbmF0ZSkge1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pZHMtZGF0YS1ncmlkLWxpc3QtaGVhZGVyLWNoZWNrYm94LWNvbG9yLWJhY2tncm91bmQpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBVc2VkIGZvciBGcm96ZW4gQ29sdW1uc1xuLmlkcy1kYXRhLWdyaWQtYm9keSB7XG4gIG1pbi13aWR0aDogZml0LWNvbnRlbnQ7XG59XG5cbi8vIEFkanVzdCBmb3IgUm93IEhlaWdodHMgKGxhcmdlIGlzIGRlZmF1bHQpXG4uaWRzLWRhdGEtZ3JpZCB7XG4gICZbZGF0YS1yb3ctaGVpZ2h0PSdtZCddIHtcbiAgICAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItdGV4dCB7XG4gICAgICBwYWRkaW5nOiB2YXIoLS1pZHMtZGF0YS1ncmlkLWhlYWRlci1tZC1wYWRkaW5nKTtcbiAgICB9XG5cbiAgICAucmVvcmRlcmVyIGlkcy1pY29uIHtcbiAgICAgIGluc2V0LWlubGluZS1zdGFydDogLTExcHg7XG4gICAgfVxuXG4gICAgLnNvcnQtaW5kaWNhdG9yIHtcbiAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IC04cHg7XG4gICAgfVxuXG4gICAgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLWNlbGwuYWxpZ24tcmlnaHQgLnJlb3JkZXJlciB7XG4gICAgICBpbnNldC1pbmxpbmUtZW5kOiAzcHg7XG4gICAgfVxuXG4gICAgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLWNlbGw6aGFzKC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsLWZpbHRlci13cmFwcGVyKSAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItdGV4dCB7XG4gICAgICBwYWRkaW5nLWJsb2NrLWVuZDogdmFyKC0taWRzLXNwYWNlLTJ4cyk7XG4gICAgfVxuICB9XG5cbiAgJltkYXRhLXJvdy1oZWlnaHQ9J3NtJ10ge1xuICAgIC5pZHMtZGF0YS1ncmlkLWhlYWRlci10ZXh0IHtcbiAgICAgIHBhZGRpbmc6IHZhcigtLWlkcy1kYXRhLWdyaWQtaGVhZGVyLXNtLXBhZGRpbmcpO1xuICAgIH1cblxuICAgIC5yZW9yZGVyZXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAuc29ydC1pbmRpY2F0b3Ige1xuICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogLTRweDtcbiAgICB9XG5cbiAgICAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbDpoYXMoLmlkcy1kYXRhLWdyaWQtaGVhZGVyLWNlbGwtZmlsdGVyLXdyYXBwZXIpIHtcbiAgICAgIC5pZHMtZGF0YS1ncmlkLWhlYWRlci10ZXh0IHtcbiAgICAgICAgcGFkZGluZy1ibG9jay1lbmQ6IHZhcigtLWlkcy1zcGFjZS0yeHMpO1xuICAgICAgfVxuXG4gICAgICAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbC1maWx0ZXItd3JhcHBlciB7XG4gICAgICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS1pZHMtc3BhY2UteHMpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJltkYXRhLXJvdy1oZWlnaHQ9J3hzJ10ge1xuICAgIC5pZHMtZGF0YS1ncmlkLWhlYWRlciB7XG4gICAgICBoZWlnaHQ6IDMwcHg7XG5cbiAgICAgICY6aGFzKC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsLWZpbHRlci13cmFwcGVyKSB7XG4gICAgICAgIGhlaWdodDogNThweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbCB7XG4gICAgICBtaW4taGVpZ2h0OiAzMHB4O1xuICAgIH1cblxuICAgIC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsOmhhcyguaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbC1maWx0ZXItd3JhcHBlcikge1xuICAgICAgaGVpZ2h0OiA1OHB4O1xuXG4gICAgICAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItdGV4dCB7XG4gICAgICAgIHBhZGRpbmctYmxvY2stZW5kOiB2YXIoLS1pZHMtc3BhY2UtMnhzKTtcbiAgICAgIH1cblxuICAgICAgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLWNlbGwtZmlsdGVyLXdyYXBwZXIge1xuICAgICAgICBwYWRkaW5nLWlubGluZTogdmFyKC0taWRzLXNwYWNlLTJ4cyk7XG4gICAgICAgIHBhZGRpbmctYmxvY2stZW5kOiA2cHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLXRleHQge1xuICAgICAgcGFkZGluZzogdmFyKC0taWRzLWRhdGEtZ3JpZC1oZWFkZXIteHMtcGFkZGluZyk7XG4gICAgfVxuXG4gICAgLnJlb3JkZXJlciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5zb3J0LWluZGljYXRvciB7XG4gICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAtMnB4O1xuICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IC0ycHg7XG4gICAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IC0zcHg7XG4gICAgfVxuXG4gICAgLmlkcy1kYXRhLWdyaWQtY2hlY2tib3gtY29udGFpbmVyIHtcbiAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1pZHMtc3BhY2UtM3hzKTtcbiAgICB9XG5cbiAgICAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbC5hbGlnbi1yaWdodCAuaXMtc29ydGFibGUgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLXRleHQge1xuICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiB2YXIoLS1pZHMtZGF0YS1ncmlkLXBhZGRpbmcteHMpO1xuICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDVweDtcbiAgICB9XG4gIH1cblxuICAmW2RhdGEtcm93LWhlaWdodD0neHhzJ10ge1xuICAgIC5pZHMtZGF0YS1ncmlkLWhlYWRlciB7XG4gICAgICBoZWlnaHQ6IDMwcHg7XG5cbiAgICAgICY6aGFzKC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsLWZpbHRlci13cmFwcGVyKSB7XG4gICAgICAgIGhlaWdodDogNThweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbCB7XG4gICAgICBtaW4taGVpZ2h0OiAzMHB4O1xuICAgIH1cblxuICAgIC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsOmhhcyguaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbC1maWx0ZXItd3JhcHBlcikge1xuICAgICAgaGVpZ2h0OiA1OHB4O1xuXG4gICAgICAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItdGV4dCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLWlkcy1zcGFjZS0yeHMpO1xuICAgICAgICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiA2cHg7XG4gICAgICB9XG5cbiAgICAgIC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsLWZpbHRlci13cmFwcGVyIHtcbiAgICAgICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLWlkcy1zcGFjZS0yeHMpO1xuICAgICAgICBwYWRkaW5nLWJsb2NrLWVuZDogNnB4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC5pZHMtZGF0YS1ncmlkLWhlYWRlci10ZXh0IHtcbiAgICAgIHBhZGRpbmc6IHZhcigtLWlkcy1kYXRhLWdyaWQtaGVhZGVyLXh4cy1wYWRkaW5nKTtcbiAgICB9XG5cbiAgICAucmVvcmRlcmVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLnNvcnQtaW5kaWNhdG9yIHtcbiAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHZhcigtLWlkcy1zcGFjZS1ub25lKTtcbiAgICAgIG1hcmdpbi1ibG9jay1zdGFydDogLTFweDtcbiAgICAgIGhlaWdodDogMjJweDtcblxuICAgICAgPiBpZHMtaWNvbjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIHRvcDogM3B4O1xuICAgICAgfVxuXG4gICAgICBpZHMtaWNvbjpsYXN0LWNoaWxkIHtcbiAgICAgICAgdG9wOiAtMTFweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuYWxpZ24tcmlnaHQgLnNvcnQtaW5kaWNhdG9yIHtcbiAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHZhcigtLWlkcy1zcGFjZS1ub25lKTtcbiAgICB9XG5cbiAgICAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItdGV4dCAuaWRzLWRhdGEtZ3JpZC1jaGVja2JveC1jb250YWluZXIge1xuICAgICAgcGFkZGluZy10b3A6IDNweDtcbiAgICB9XG5cbiAgICAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbC5hbGlnbi1yaWdodCAuaXMtc29ydGFibGUgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLXRleHQge1xuICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiAzcHg7XG4gICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogM3B4O1xuICAgIH1cblxuICAgIC8vIEZpbHRlciBBZGp1c3RtZW50c1xuICAgIGlkcy1pbnB1dCxcbiAgICBpZHMtbWVudS1idXR0b24sXG4gICAgaWRzLXRyaWdnZXItZmllbGQsXG4gICAgaWRzLWRyb3Bkb3duIHtcbiAgICAgIC0taWRzLWlucHV0LWhlaWdodC0xMDogMjRweDtcbiAgICB9XG5cbiAgICBpZHMtZHJvcGRvd24ge1xuICAgICAgLS1pZHMtaW5wdXQtZm9udC1zaXplLXNtOiB2YXIoLS1pZHMtaW5wdXQtZm9udC1zaXplLXhzKTtcbiAgICB9XG5cbiAgICAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbC1maWx0ZXItd3JhcHBlciB7XG4gICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogY2FsYyh2YXIoLS1pZHMtZGF0YS1ncmlkLXBhZGRpbmcteHhzKSArIDJweCk7XG4gICAgICBwYWRkaW5nLWlubGluZS1lbmQ6IGNhbGModmFyKC0taWRzLWRhdGEtZ3JpZC1wYWRkaW5nLXh4cykgKyAycHgpO1xuICAgICAgcGFkZGluZy1ibG9jay1lbmQ6IGNhbGModmFyKC0taWRzLWRhdGEtZ3JpZC1wYWRkaW5nLXh4cykgLSAxcHgpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBDb2x1bW4gc2VsZWN0aW9uIGhlYWRlclxuLmlkcy1kYXRhLWdyaWQgLmhhcy1jb2wtc2VsZWN0aW9uIHtcbiAgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLWNlbGw6bm90KFtjb2x1bW4taWQ9J3NlbGVjdGlvbkNoZWNrYm94J10pIC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsLWNvbnRlbnQge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcblxuICAgIC5pZHMtZGF0YS1ncmlkLWhlYWRlci10ZXh0IC5pZHMtY2hlY2tib3ggLmxhYmVsLXRleHQge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgd2lkdGg6IDgwJTtcbiAgICB9XG5cbiAgICAmLmlzLXNvcnRhYmxlLFxuICAgICYuaXMtcmVvcmRlcmFibGUge1xuICAgICAgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLXRleHQgLmlkcy1jaGVja2JveCAubGFiZWwtdGV4dCB7XG4gICAgICAgIHdpZHRoOiA3MCU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5pcy1zb3J0YWJsZS5pcy1yZW9yZGVyYWJsZSB7XG4gICAgICAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItdGV4dCAuaWRzLWNoZWNrYm94IC5sYWJlbC10ZXh0IHtcbiAgICAgICAgd2lkdGg6IDYwJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuc29ydC1pbmRpY2F0b3Ige1xuICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IGF1dG87XG4gIH1cbn1cblxuLy8gSGFuZGxlIFJUTFxuOmhvc3QoW2Rpcj0ncnRsJ10pIHtcbiAgLy8gTmVnYXRlIHJpZ2h0IGFsaWdubWVudFxuICAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbCB7XG4gICAgJi5hbGlnbi1yaWdodCAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbC1jb250ZW50IHtcbiAgICAgIGRpcmVjdGlvbjogbHRyO1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItaW5saW5lLWVuZC13aWR0aDogdmFyKC0taWRzLWJvcmRlci13aWR0aC1ub25lKTtcbiAgICB9XG5cbiAgICAmLmZyb3plbi1sZWZ0IHtcbiAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICByaWdodDogdmFyKC0taWRzLXNwYWNlLW5vbmUpO1xuXG4gICAgICAvLyBEeW5hbWljYWxseSBhZGRlZCB3aWR0aHNcbiAgICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggMTAge1xuICAgICAgICAmOm50aC1vZi10eXBlKCN7JGl9KSB7XG4gICAgICAgICAgcmlnaHQ6IHZhcigtLWlkcy1kYXRhLWdyaWQtZnJvemVuLWNvbHVtbi1sZWZ0LXdpZHRoLSN7JGl9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLyogSWRzIERhdGEgR3JpZCBDb21wb25lbnQgLSBSb3dzICovXG4uaWRzLWRhdGEtZ3JpZC1yb3cge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLWlkcy1kYXRhLWdyaWQtY29sdW1uLXdpZHRocyk7IC8vIEZpbGxlZCBpbiBkeW5hbWljYWxseVxuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBpbmhlcml0O1xuXG4gICYuaXMtZHJhZy1zdGFydCB7XG4gICAgLy8gdmlzaWJpbGl0eTogaGlkZGVuO1xuICB9XG5cbiAgJi5pcy1kcmFnLXRhcmdldCB7XG4gICAgLy8gdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIG1hcmdpbi10b3A6IDUwcHg7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWlkcy1kYXRhLWdyaWQtY2VsbC1jb2xvci1ib3JkZXIpO1xuICB9XG5cbiAgJi5zZWxlY3RlZDpub3QoLm1peGVkKSAuaWRzLWRhdGEtZ3JpZC1jZWxsLFxuICAmLmFjdGl2YXRlZCAuaWRzLWRhdGEtZ3JpZC1jZWxsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pZHMtZGF0YS1ncmlkLXJvdy1jb2xvci1iYWNrZ3JvdW5kLXNlbGVjdGVkKTtcbiAgfVxuXG4gICZbaGlkZGVuXSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gICZbcGFydCo9J3Jvdy0nXSB7XG4gICAgJjpub3QoLnNlbGVjdGVkKSB7XG4gICAgICAuaWRzLWRhdGEtZ3JpZC1jZWxsOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgICBib3JkZXItd2lkdGg6IDVweDtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBtYXJnaW46IDJweDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZbcGFydD0ncm93LW5ldyddIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pZHMtZGF0YS1ncmlkLXJvdy1jb2xvci1iYWNrZ3JvdW5kLW5ldyk7XG5cbiAgICAmOm5vdCguc2VsZWN0ZWQpIHtcbiAgICAgIC5pZHMtZGF0YS1ncmlkLWNlbGwge1xuICAgICAgICAmOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pZHMtZGF0YS1ncmlkLXJvdy1jb2xvci1ib3JkZXItbmV3KSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB2YXIoLS1pZHMtZGF0YS1ncmlkLXJvdy1jb2xvci1ib3JkZXItbmV3KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtcm93LWNvbG9yLWJhY2tncm91bmQtbmV3KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtY2VsbC1jb2xvci10ZXh0LXN0YXRlcy1kZWZhdWx0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmW3BhcnQ9J3Jvdy1yZW1vdmVkJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtcm93LWNvbG9yLWJhY2tncm91bmQtcmVtb3ZlZCk7XG5cbiAgICAmOm5vdCguc2VsZWN0ZWQpIHtcbiAgICAgIC5pZHMtZGF0YS1ncmlkLWNlbGwge1xuICAgICAgICAmOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1yb3ctY29sb3ItYm9yZGVyLXJlbW92ZWQpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHZhcigtLWlkcy1kYXRhLWdyaWQtcm93LWNvbG9yLWJvcmRlci1yZW1vdmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtcm93LWNvbG9yLWJhY2tncm91bmQtcmVtb3ZlZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pZHMtZGF0YS1ncmlkLWNlbGwtY29sb3ItdGV4dC1zdGF0ZXMtZGVmYXVsdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJltwYXJ0PSdyb3ctZXJyb3InXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1yb3ctY29sb3ItYmFja2dyb3VuZC1lcnJvcik7XG5cbiAgICAmOm5vdCguc2VsZWN0ZWQpIHtcbiAgICAgIC5pZHMtZGF0YS1ncmlkLWNlbGwge1xuICAgICAgICAmOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1yb3ctY29sb3ItYm9yZGVyLWVycm9yKSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB2YXIoLS1pZHMtZGF0YS1ncmlkLXJvdy1jb2xvci1ib3JkZXItZXJyb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1yb3ctY29sb3ItYmFja2dyb3VuZC1lcnJvcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pZHMtZGF0YS1ncmlkLWNlbGwtY29sb3ItdGV4dC1zdGF0ZXMtZGVmYXVsdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEdyb3VwZWQgUm93c1xuLmlkcy1kYXRhLWdyaWQtcm93LmlzLWdyb3VwLXJvdyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtcm93LWdyb3VwZWQtY29sb3ItYmFja2dyb3VuZCk7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMTAwJTtcblxuXG4gIC5pZHMtZGF0YS1ncmlkLWNlbGwge1xuICAgIGNvbG9yOiB2YXIoLS1pZHMtZGF0YS1ncmlkLXJvdy1ncm91cGVkLWNvbG9yLXRleHQsIHJlZCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWlkcy1kYXRhLWdyaWQtcm93LWdyb3VwZWQtZm9udC13ZWlnaHQsIDYwMCk7XG4gICAgYm9yZGVyLWlubGluZS1zdGFydDogMDtcbiAgfVxuXG4gIGlkcy1idXR0b24ge1xuICAgIC0taWRzLWJ1dHRvbi10ZXJ0aWFyeS1jb2xvci1iYWNrZ3JvdW5kLWhvdmVyOiB0cmFuc3BhcmVudDtcbiAgICAtLWlkcy1idXR0b24tdGVydGlhcnktY29sb3ItYm9yZGVyLWhvdmVyOiB0cmFuc3BhcmVudDtcblxuICAgIHBhZGRpbmc6IDAgMnB4O1xuICB9XG59XG5cbi8vIFJvdyBIZWlnaHQgRmVhdHVyZSB3aXRoIEZvcm1hdHRlcnMgc3BhY2luZ1xuLmlkcy1kYXRhLWdyaWQge1xuICAvLyBMYXJnZSBieSBkZWZhdWx0XG4gICZbZGF0YS1yb3ctaGVpZ2h0PSdtZCddIHtcbiAgICAuaWRzLWRhdGEtZ3JpZC1jZWxsIHtcbiAgICAgIGhlaWdodDogdmFyKC0taWRzLWRhdGEtZ3JpZC1yb3ctaGVpZ2h0LW1kKTtcblxuICAgICAgLnRleHQtZWxsaXBzaXMsXG4gICAgICBpZHMtYmFkZ2Uge1xuICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0taWRzLWRhdGEtZ3JpZC1wYWRkaW5nLW1kKTtcbiAgICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiB2YXIoLS1pZHMtZGF0YS1ncmlkLXBhZGRpbmctbWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5pZHMtZGF0YS1ncmlkLWNlbGw6bm90KC5hbGlnbi1jZW50ZXIpIC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsLWNvbnRlbnQ6bm90KC52ZXJ0aWNhbC1hbGlnbi1jZW50ZXIpIC5pZHMtZGF0YS1ncmlkLWhlYWRlci10ZXh0IHtcbiAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1pZHMtZGF0YS1ncmlkLXBhZGRpbmctbWQpO1xuICAgICAgdHJhbnNpdGlvbjogcGFkZGluZyB2YXIoLS1pZHMtbW90aW9uLWR1cmF0aW9uKSB2YXIoLS1pZHMtbW90aW9uLWVhc2UpO1xuICAgIH1cblxuICAgIC5pZHMtZGF0YS1ncmlkLWNlbGw6bm90KC5hbGlnbi1jZW50ZXIpIC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsOmhvdmVyIC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsLWNvbnRlbnQ6bm90KC52ZXJ0aWNhbC1hbGlnbi1jZW50ZXIpLmlzLXJlb3JkZXJhYmxlIC5pZHMtZGF0YS1ncmlkLWhlYWRlci10ZXh0IHtcbiAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1pZHMtZGF0YS1ncmlkLXBhZGRpbmctbWQpO1xuICAgIH1cbiAgfVxuXG4gICZbZGF0YS1yb3ctaGVpZ2h0PSdzbSddIHtcbiAgICAuaWRzLWRhdGEtZ3JpZC1jZWxsIHtcbiAgICAgIGhlaWdodDogdmFyKC0taWRzLWRhdGEtZ3JpZC1yb3ctaGVpZ2h0LXNtKTtcblxuICAgICAgLnRleHQtZWxsaXBzaXMsXG4gICAgICBpZHMtYmFkZ2Uge1xuICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0taWRzLWRhdGEtZ3JpZC1wYWRkaW5nLXNtKTtcbiAgICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiB2YXIoLS1pZHMtZGF0YS1ncmlkLXBhZGRpbmctc20pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5pZHMtZGF0YS1ncmlkLWNlbGw6bm90KC5hbGlnbi1jZW50ZXIpIC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsLWNvbnRlbnQ6bm90KC52ZXJ0aWNhbC1hbGlnbi1jZW50ZXIpIC5pZHMtZGF0YS1ncmlkLWhlYWRlci10ZXh0IHtcbiAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1pZHMtZGF0YS1ncmlkLXBhZGRpbmctc20pO1xuICAgICAgdHJhbnNpdGlvbjogcGFkZGluZyB2YXIoLS1pZHMtbW90aW9uLWR1cmF0aW9uKSB2YXIoLS1pZHMtbW90aW9uLWVhc2UpO1xuICAgIH1cblxuICAgIC5pZHMtZGF0YS1ncmlkLWNlbGw6bm90KC5hbGlnbi1jZW50ZXIpIC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsOmhvdmVyIC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsLWNvbnRlbnQ6bm90KC52ZXJ0aWNhbC1hbGlnbi1jZW50ZXIpLmlzLXJlb3JkZXJhYmxlIC5pZHMtZGF0YS1ncmlkLWhlYWRlci10ZXh0IHtcbiAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1pZHMtZGF0YS1ncmlkLXBhZGRpbmctc20pO1xuICAgIH1cbiAgfVxuXG4gICZbZGF0YS1yb3ctaGVpZ2h0PSd4cyddIHtcbiAgICAuaWRzLWRhdGEtZ3JpZC1jZWxsIHtcbiAgICAgIGhlaWdodDogdmFyKC0taWRzLWRhdGEtZ3JpZC1yb3ctaGVpZ2h0LXhzKTtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0taWRzLWRhdGEtZ3JpZC1mb250LXNpemUtc20pO1xuXG4gICAgICAudGV4dC1lbGxpcHNpcyxcbiAgICAgIGlkcy1iYWRnZSB7XG4gICAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1pZHMtZGF0YS1ncmlkLXBhZGRpbmcteHMpO1xuICAgICAgICBwYWRkaW5nLWlubGluZS1lbmQ6IHZhcigtLWlkcy1kYXRhLWdyaWQtcGFkZGluZy14cyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmlkcy1kYXRhLWdyaWQtY2VsbDpub3QoLmFsaWduLWNlbnRlcikgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLWNlbGwtY29udGVudDpub3QoLnZlcnRpY2FsLWFsaWduLWNlbnRlcikgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLXRleHQge1xuICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IHZhcigtLWlkcy1kYXRhLWdyaWQtcGFkZGluZy14cyk7XG4gICAgICB0cmFuc2l0aW9uOiBwYWRkaW5nIHZhcigtLWlkcy1tb3Rpb24tZHVyYXRpb24pIHZhcigtLWlkcy1tb3Rpb24tZWFzZSk7XG4gICAgfVxuXG4gICAgLmlkcy1kYXRhLWdyaWQtY2VsbDpub3QoLmFsaWduLWNlbnRlcikgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLWNlbGw6aG92ZXIgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLWNlbGwtY29udGVudDpub3QoLnZlcnRpY2FsLWFsaWduLWNlbnRlcikuaXMtcmVvcmRlcmFibGUgLmlkcy1kYXRhLWdyaWQtaGVhZGVyLXRleHQge1xuICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IHZhcigtLWlkcy1kYXRhLWdyaWQtcGFkZGluZy14cyk7XG4gICAgfVxuICB9XG5cbiAgJltkYXRhLXJvdy1oZWlnaHQ9J3h4cyddIHtcbiAgICAuaWRzLWRhdGEtZ3JpZC1jZWxsIHtcbiAgICAgIGhlaWdodDogdmFyKC0taWRzLWRhdGEtZ3JpZC1yb3ctaGVpZ2h0LXh4cyk7XG4gICAgICBmb250LXNpemU6IHZhcigtLWlkcy1kYXRhLWdyaWQtZm9udC1zaXplLXNtKTtcblxuICAgICAgLnRleHQtZWxsaXBzaXMsXG4gICAgICBpZHMtYmFkZ2Uge1xuICAgICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0taWRzLWRhdGEtZ3JpZC1wYWRkaW5nLXh4cyk7XG4gICAgICAgIHBhZGRpbmctaW5saW5lLWVuZDogdmFyKC0taWRzLWRhdGEtZ3JpZC1wYWRkaW5nLXh4cyk7XG4gICAgICB9XG5cbiAgICAgIC8vIE9uICd4eHMnIHJvdyBoZWlnaHQsIGlubGluZS1lZGl0YWJsZSBjZWxscyBoYXZlIGEgc2xpZ2h0bHkgd2lkZXJcbiAgICAgIC8vIHBhZGRpbmcgYXBwZWFyYW5jZSB0byBhY2NvbW1vZGF0ZSB0aGUgaW5saW5lIGRpc3BsYXlcbiAgICAgICYuaXMtaW5saW5lIHtcbiAgICAgICAgLnRleHQtZWxsaXBzaXMge1xuICAgICAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1pZHMtZGF0YS1ncmlkLXBhZGRpbmcteHMpO1xuICAgICAgICAgIHBhZGRpbmctaW5saW5lLWVuZDogdmFyKC0taWRzLWRhdGEtZ3JpZC1wYWRkaW5nLXhzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5pZHMtZGF0YS1ncmlkLWNlbGw6bm90KC5hbGlnbi1jZW50ZXIpIC5pZHMtZGF0YS1ncmlkLWhlYWRlci1jZWxsLWNvbnRlbnQ6bm90KC52ZXJ0aWNhbC1hbGlnbi1jZW50ZXIpIC5pZHMtZGF0YS1ncmlkLWhlYWRlci10ZXh0IHtcbiAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1pZHMtZGF0YS1ncmlkLXBhZGRpbmcteHhzKTtcbiAgICAgIHRyYW5zaXRpb246IHBhZGRpbmcgdmFyKC0taWRzLW1vdGlvbi1kdXJhdGlvbikgdmFyKC0taWRzLW1vdGlvbi1lYXNlKTtcbiAgICB9XG5cbiAgICAuaWRzLWRhdGEtZ3JpZC1jZWxsOm5vdCguYWxpZ24tY2VudGVyKSAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbDpob3ZlciAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItY2VsbC1jb250ZW50Om5vdCgudmVydGljYWwtYWxpZ24tY2VudGVyKS5pcy1yZW9yZGVyYWJsZSAuaWRzLWRhdGEtZ3JpZC1oZWFkZXItdGV4dCB7XG4gICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0taWRzLWRhdGEtZ3JpZC1wYWRkaW5nLXh4cyk7XG4gICAgfVxuICB9XG59XG5cbi8vIFJvdyBBbHRlcm5hdGUgUm93IFNldHRpbmcgRmVhdHVyZVxuLmlkcy1kYXRhLWdyaWQuYWx0LXJvdy1zaGFkaW5nIGlkcy1kYXRhLWdyaWQtcm93Om50aC1jaGlsZChldmVuKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtcm93LWFsdGVybmF0aW5nLWNvbG9yLWJhY2tncm91bmQpO1xufVxuXG4vLyBFeHBhbmRhYmxlIFJvd1xuLmlkcy1kYXRhLWdyaWQtZXhwYW5kYWJsZS1yb3cge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0taWRzLWRhdGEtZ3JpZC1jZWxsLWNvbG9yLWJvcmRlcik7XG4gIGdyaWQtY29sdW1uOiAxIC8gLTE7XG4gIHBhZGRpbmc6IHZhcigtLWlkcy1zcGFjZS14cyk7XG59XG5cbi8vIFN0YW5kYWxvbmUgQ3NzXG50ci5pZHMtZGF0YS1ncmlkLXJvdyB7XG4gIGRpc3BsYXk6IHRhYmxlLXJvdztcbiAgaGVpZ2h0OiB2YXIoLS1pZHMtZGF0YS1ncmlkLXJvdy1oZWlnaHQtbGcpO1xufVxuXG4vLyBSb3cgTmF2aWdhdGlvbiBTdHlsZXNcbi5pZHMtZGF0YS1ncmlkLnJvdy1uYXZpZ2F0aW9uIC5pZHMtZGF0YS1ncmlkLWJvZHkgLmlkcy1kYXRhLWdyaWQtcm93IHtcbiAgJjpmb2N1cy13aXRoaW4ge1xuICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBib3gtc2hhZG93OiB2YXIoLS1pZHMtZGF0YS1ncmlkLXJvdy1zaGFkb3ctZm9jdXMpO1xuICAgICAgY29udGVudDogJyAnO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDFweCk7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICAuaWRzLWRhdGEtZ3JpZC1jZWxsOmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAvLyBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBoeXBlcmxpbmtzIGluIHJvdy1uYXZpZ2F0aW9uIG1vZGUgY2Fubm90IGJlIGRpcmVjdGx5IGNsaWNrZWRcbiAgaWRzLWh5cGVybGluayxcbiAgLmlkcy1oeXBlcmxpbmsge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigxcHgpO1xuICB9XG59XG5cbjpob3N0KFtkaXI9J3J0bCddKSB7XG4gIC5pZHMtZGF0YS1ncmlkLXJvdyB7XG4gICAgJltwYXJ0PSdyb3ctbmV3J10ge1xuICAgICAgJjpub3QoLnNlbGVjdGVkKSB7XG4gICAgICAgIC5pZHMtZGF0YS1ncmlkLWNlbGwge1xuICAgICAgICAgICY6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1yb3ctY29sb3ItYm9yZGVyLW5ldykgdmFyKC0taWRzLWRhdGEtZ3JpZC1yb3ctY29sb3ItYm9yZGVyLW5ldykgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJltwYXJ0PSdyb3ctcmVtb3ZlZCddIHtcbiAgICAgICY6bm90KC5zZWxlY3RlZCkge1xuICAgICAgICAuaWRzLWRhdGEtZ3JpZC1jZWxsIHtcbiAgICAgICAgICAmOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtcm93LWNvbG9yLWJvcmRlci1yZW1vdmVkKSB2YXIoLS1pZHMtZGF0YS1ncmlkLXJvdy1jb2xvci1ib3JkZXItcmVtb3ZlZCkgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJltwYXJ0PSdyb3ctZXJyb3InXSB7XG4gICAgICAmOm5vdCguc2VsZWN0ZWQpIHtcbiAgICAgICAgLmlkcy1kYXRhLWdyaWQtY2VsbCB7XG4gICAgICAgICAgJjpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pZHMtZGF0YS1ncmlkLXJvdy1jb2xvci1ib3JkZXItZXJyb3IpIHZhcigtLWlkcy1kYXRhLWdyaWQtcm93LWNvbG9yLWJvcmRlci1lcnJvcikgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvKiBJZHMgRGF0YSBHcmlkIENvbXBvbmVudCAtIENlbGxzICovXG5AdXNlICdzYXNzOmxpc3QnO1xuXG4vKiBHZW5lcmF0ZXMgYSBwc2V1ZG8tZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGRpcnR5IHRyYWNrZXIgKi9cbkBtaXhpbiBpZHMtZGF0YS1ncmlkLWNlbGwtZGlydHktdHJhY2tlci1pY29uIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pZHMtaW5wdXQtZGlydHktaW5kaWNhdG9yLWNvbG9yLWJhY2tncm91bmQtZGlydHkpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHZhcigtLWlkcy1pbnB1dC1kaXJ0eS1pbmRpY2F0b3ItY29sb3ItYmFja2dyb3VuZC1kaXJ0eSk7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogNXB4O1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4taW5saW5lOiB2YXIoLS1pZHMtc3BhY2UtM3hzKTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldC1ibG9jay1zdGFydDogdmFyKC0taWRzLXNwYWNlLTN4cyk7XG4gIHotaW5kZXg6IDE7XG59XG5cbmlkcy1kYXRhLWdyaWQtY2VsbFtjb2x1bW4tb25zY3JlZW5dIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbn1cblxuaWRzLWRhdGEtZ3JpZC1jZWxsW2NvbHVtbi1vZmZzY3JlZW5dIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbn1cblxuaWRzLWRhdGEtZ3JpZC1jZWxsW2NvbHVtbi1vZmZzY3JlZW4tbGVmdF0ge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG5pZHMtZGF0YS1ncmlkLWNlbGxbY29sdW1uLW9mZnNjcmVlbi1yaWdodF0ge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG4uaWRzLWRhdGEtZ3JpZC1yb3c6bm90KC5zZWxlY3RlZCk6bm90KFtwYXJ0Kj0ncm93LSddKSB7XG4gIC5pZHMtZGF0YS1ncmlkLWNlbGw6bm90KC5pcy1yZWFkb25seSkge1xuICAgICYuZnJvemVuLWxlZnQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICB9XG5cbiAgICAmLmZyb3plbi1yaWdodCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pZHMtZGF0YS1ncmlkLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIH1cbiAgfVxufVxuXG4uaWRzLWRhdGEtZ3JpZC1jZWxsIHtcbiAgLy8gQm9yZGVyIGFuZCBCYWNrZ3JvdW5kIGFuZCBTaXppbmdcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyLWlubGluZS1zdGFydDogMXB4IHNvbGlkO1xuICBib3JkZXItYmxvY2stZW5kOiAxcHggc29saWQ7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1jZWxsLWNvbG9yLWJvcmRlcik7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBjb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1jZWxsLWNvbG9yLXRleHQtZGVmYXVsdCk7XG4gIGhlaWdodDogNTBweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gIC8vIEhpZGUgZmlyc3QvbGFzdCBib3JkZXJcbiAgJjpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWlubGluZS1zdGFydC13aWR0aDogdmFyKC0taWRzLWJvcmRlci13aWR0aC1ub25lKTtcbiAgfVxuXG4gIC8vIFJlc2V0IGJhZGdlIG1hcmdpbiB0byBjZW50ZXIgaXQgdmVydGljYWxseVxuICBpZHMtYmFkZ2U6OnBhcnQoYmFkZ2UpIHtcbiAgICBtYXJnaW4tYmxvY2stZW5kOiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG4gICAgbWFyZ2luLWlubGluZS1lbmQ6IHZhcigtLWlkcy1zcGFjZS1ub25lKTtcbiAgfVxuXG4gIGlkcy1iYWRnZSB7XG4gICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IHZhcigtLWlkcy1zcGFjZS1zbSk7XG4gICAgcGFkZGluZy1pbmxpbmUtZW5kOiB2YXIoLS1pZHMtc3BhY2Utc20pO1xuICB9XG5cbiAgLy8gU28gdGhlIGNvbG9yIGlzIHRoZSBzYW1lIGFzIHRoZSBlZGl0b3JcbiAgaWRzLWljb25baWNvbj0nZHJvcGRvd24nXSB7XG4gICAgY29sb3I6IHZhcigtLWlkcy10cmlnZ2VyLWZpZWxkLWljb24tY29sb3IpXG4gIH1cblxuICBpZHMtaHlwZXJsaW5rIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZy1pbmxpbmU6IDEycHg7XG4gICAgd2lkdGg6IC1tb3otYXZhaWxhYmxlO1xuICAgIHdpZHRoOiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlO1xuICAgIHdpZHRoOiBmaWxsLWF2YWlsYWJsZTtcbiAgfVxuXG4gIC50ZXh0LWVsbGlwc2lzIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwYWRkaW5nLWlubGluZS1zdGFydDogY2FsYyh2YXIoLS1pZHMtc3BhY2UteHMpICsgNHB4KTtcbiAgICBwYWRkaW5nLWlubGluZS1lbmQ6IGNhbGModmFyKC0taWRzLXNwYWNlLXhzKSArIDRweCk7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIH1cblxuICAvLyBUZXh0IEFsaWdubWVudFxuICBpZHMtaWNvbiB7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAgICsgc3BhbiB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgbGluZS1oZWlnaHQ6IDI1cHg7XG4gICAgICBwYWRkaW5nLWlubGluZTogdmFyKC0taWRzLXNwYWNlLTJ4cyk7XG4gICAgfVxuICB9XG5cbiAgLy8gVGV4dCBBbGlnbm1lbnRcbiAgJi5hbGlnbi1jZW50ZXIge1xuICAgICYgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgbWFyZ2luOiB2YXIoLS1pZHMtc3BhY2Utbm9uZSkgYXV0bztcbiAgICB9XG4gIH1cblxuICAmLmFsaWduLXJpZ2h0IHtcbiAgICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiBhdXRvO1xuICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IHZhcigtLWlkcy1zcGFjZS1ub25lKTtcbiAgICB9XG5cbiAgICBpZHMtaW5wdXQge1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVhZG9ubHkgYW5kIGRpc2FibGVkIENlbGxzXG4gICYuaXMtcmVhZG9ubHk6bm90KC5leGNsdWRlLXJlYWRvbmx5LXN0eWxlKTpub3QoLnNlbGVjdGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1jZWxsLWNvbG9yLWJhY2tncm91bmQtZnJvemVuLXJlYWRvbmx5KTtcblxuICAgIC5lZGl0b3ItY2VsbC1pY29uIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJi5pcy1kaXNhYmxlZCB7XG4gICAgY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtY2VsbC1jb2xvci10ZXh0LWRpc2FibGVkKTtcblxuICAgIC5lZGl0b3ItY2VsbC1pY29uIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgJi5pcy11cHBlcmNhc2Uge1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIH1cblxuICAvLyBGb2N1cyBTdGF0ZVxuICAmOmZvY3VzLFxuICAmLmlzLWVkaXRpbmc6bm90KC5pcy1pbmxpbmUpOmZvY3VzLXdpdGhpbixcbiAgJi5pcy1mb2N1c2VkIHtcbiAgICAmOm5vdCguc2VsZWN0ZWQpOm5vdChbdGFiaW5kZXg9Jy0xJ10pIHtcbiAgICAgIGJveC1zaGFkb3c6IHZhcigtLWlkcy1zaGFkb3ctMjApO1xuICAgICAgb3V0bGluZTogMXB4IHNvbGlkIHZhcigtLWlkcy1jb2xvci1ib3JkZXItZm9jdXMpO1xuICAgICAgb3V0bGluZS1vZmZzZXQ6IC0xcHg7XG4gICAgfVxuICB9XG5cbiAgJi5mb3JtYXR0ZXItdGV4dG1hc2sge1xuICAgICYuaXMtaG92ZXJhYmxlIHtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAgICAgLnRleHQtZWxsaXBzaXMge1xuICAgICAgICBwYWRkaW5nLWlubGluZS1lbmQ6IHZhcigtLWlkcy1zcGFjZS1zbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmVkaXRvci1jZWxsLWljb24ge1xuICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IDEwcHg7XG4gICAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLWlkcy1zcGFjZS0zeHMpO1xuICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgJi5zaG93LWNlbGwtaWNvbi1hbHdheXMge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCguaXMtaW5saW5lKTpub3QoLmlzLWludmFsaWQpOmhvdmVyLFxuICAgICYuaXMtZWRpdGluZyB7XG4gICAgICAuZWRpdG9yLWNlbGwtaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB9XG5cbiAgICAgIC50ZXh0LWVsbGlwc2lzIHtcbiAgICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiB2YXIoLS1pZHMtc3BhY2UtMDgpO1xuICAgICAgfVxuXG4gICAgICBpZHMtYWxlcnQge1xuICAgICAgICBtYXJnaW4taW5saW5lOiBjYWxjKDEwMCUgLSA0OHB4KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLmlzLWVkaXRhYmxlIHtcbiAgICAmLmlzLXJlYWRvbmx5Om5vdCguZXhjbHVkZS1yZWFkb25seS1zdHlsZSkge1xuICAgICAgLnRleHQtZWxsaXBzaXM6OmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1jZWxsLWNvbG9yLWJhY2tncm91bmQtcmVhZG9ubHkpO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuaXMtaW5saW5lIHtcbiAgICAgICYuZm9ybWF0dGVyLXRyZWUge1xuICAgICAgICAuaWRzLWRhdGEtZ3JpZC10cmVlLWNvbnRhaW5lciB7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmlkcy1kYXRhLWdyaWQtdHJlZS1maWVsZC1jb250YWluZXIge1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC50ZXh0LWVsbGlwc2lzIHtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogZW5kO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRleHQtZWxsaXBzaXM6OmFmdGVyIHtcbiAgICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogLThweDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZHMtaWNvbi5lZGl0b3ItY2VsbC1pY29uIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAxNXB4O1xuXG4gICAgICAgICZbaWNvbj0nZHJvcGRvd24nXSB7XG4gICAgICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IDEycHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmlzLWxvb2t1cCxcbiAgICAmLmlzLWRhdGVwaWNrZXIsXG4gICAgJi5pcy10aW1lcGlja2VyIHtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuICAgICAgLnRleHQtZWxsaXBzaXMge1xuICAgICAgICBwYWRkaW5nLWlubGluZS1lbmQ6IHZhcigtLWlkcy1zcGFjZS1ub25lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmlzLWRhdGVwaWNrZXIsXG4gICAgJi5pcy10aW1lcGlja2VyIHtcbiAgICAgIGlkcy10cmlnZ2VyLWZpZWxkIHtcbiAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogLTFweDtcbiAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAxcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5pcy1sb29rdXAge1xuICAgICAgaWRzLWxvb2t1cCB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIGlkcy1sb29rdXA6OnBhcnQoY29udGFpbmVyKSxcbiAgICAgIGlkcy1sb29rdXA6OnBhcnQoZmllbGQtY29udGFpbmVyKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlkcy1jb2xvci10cmFuc3BhcmVudCk7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5lZGl0b3ItY2VsbC1pY29uIHtcbiAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiAxMHB4O1xuICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1pZHMtc3BhY2UtM3hzKTtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICYuc2hvdy1jZWxsLWljb24tYWx3YXlzIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWRzLXRyaWdnZXItYnV0dG9uOjpwYXJ0KGJ1dHRvbikge1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgfVxuXG4gICAgLy8gaXMtYm9yZGVybGVzczpob3ZlclxuICAgICY6bm90KC5pcy1pbmxpbmUpOm5vdCguaXMtaW52YWxpZCk6bm90KC5pcy1yZWFkb25seSk6Zm9jdXMsXG4gICAgJjpub3QoLmlzLWlubGluZSk6bm90KC5pcy1pbnZhbGlkKTpub3QoLmlzLXJlYWRvbmx5KTpob3ZlciB7XG4gICAgICAuZWRpdG9yLWNlbGwtaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB9XG5cbiAgICAgIGlkcy1hbGVydCB7XG4gICAgICAgIG1hcmdpbi1pbmxpbmU6IGNhbGMoMTAwJSAtIDQ4cHgpO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuaXMtZWRpdGFibGUuaXMtaW52YWxpZCB7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgICAgIGlkcy1hbGVydCB7XG4gICAgICAgIG1hcmdpbi1pbmxpbmUtZW5kOiB2YXIoLS1pZHMtc3BhY2UteHMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYuaXMtZWRpdGluZyBpZHMtY2hlY2tib3gge1xuICAgIC0taWRzLWNoZWNrYm94LW1hcmdpbi1pbmxpbmUtZW5kOiAwO1xuICAgIC0taWRzLWNoZWNrYm94LXNoYWRvdy1mb2N1czogMCAwIDAgMnB4IHRyYW5zcGFyZW50LCAwIDAgMCAzcHggdHJhbnNwYXJlbnQ7XG4gICAgLS1pZHMtY2hlY2tib3gtY29sb3ItYm9yZGVyLWZvY3VzOiB2YXIoLS1pZHMtY2hlY2tib3gtYm9yZGVyKTtcblxuICAgICZbY2hlY2tlZF0ge1xuICAgICAgLS1pZHMtY2hlY2tib3gtY29sb3ItYm9yZGVyLWZvY3VzOiB2YXIoLS1pZHMtY2hlY2tib3gtY29sb3ItYmFja2dyb3VuZC1zZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogNnB4O1xuICAgIHRvcDogM3B4O1xuICB9XG5cbiAgLy8gRWRpdGluZyB3aXRoIHBvcHVwc1xuICAmLmlzLWVkaXRpbmcuaXMtbG9va3VwLFxuICAmLmlzLWVkaXRpbmcuaXMtZGF0ZXBpY2tlcixcbiAgJi5pcy1lZGl0aW5nLmlzLXRpbWVwaWNrZXIsXG4gICYuaXMtZWRpdGluZy5pcy1wYXNzd29yZCB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIH1cblxuICAmLmlzLWVkaXRpbmcuaXMtaW5saW5lIGlkcy1pbnB1dCB7XG4gICAgei1pbmRleDogOTk7XG4gIH1cblxuICAvLyBEcm9wZG93biBFZGl0YWJsZSBDZWxsXG4gICYuaXMtZWRpdGFibGUuaXMtZHJvcGRvd24ge1xuICAgIC5kcm9wZG93bi1jZWxsLXZhbHVlIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgICYuaXMtZWRpdGluZzpub3QoLmlzLWlubGluZSkge1xuICAgICAgYm9yZGVyLWlubGluZS1zdGFydC13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuICAvLyBEcm9wZG93biBFZGl0aW5nIElubGluZVxuICAmLmlzLWVkaXRpbmcuaXMtZHJvcGRvd24uaXMtaW5saW5lIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuXG4gICAgaWRzLWRyb3Bkb3duIHtcbiAgICAgIHBhZGRpbmc6IDAgdmFyKC0taWRzLXNwYWNlLTJ4cyk7XG4gICAgfVxuICB9XG5cbiAgLy8gVGV4dCBFZGl0YWJsZSBDZWxsXG4gICYuZm9ybWF0dGVyLXRleHQge1xuICAgIHdoaXRlLXNwYWNlOiBwcmU7XG4gIH1cblxuICAmLmZvcm1hdHRlci1yb3ctcmVvcmRlciB7XG4gICAgY3Vyc29yOiBtb3ZlO1xuICB9XG5cbiAgLy8gRWRpdGluZyBVcHBlcmNhc2VcbiAgJi5pcy1lZGl0aW5nLmlzLXVwcGVyY2FzZSB7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgIGlkcy1saXN0LWJveC1vcHRpb24sXG4gICAgaWRzLWRyb3Bkb3duOjpwYXJ0KHRyaWdnZXJmaWVsZC1pbnB1dCksXG4gICAgaWRzLWlucHV0OjpwYXJ0KGlucHV0KSB7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZyb3plbiBDZWxsc1xuICAmLmZyb3plbiB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB6LWluZGV4OiAxOyAvLyB6LWluZGV4IGhpZ2hlciB0aGFuIDIgd2lsbCBicmVhayBpZHMtbG9hZGluZy1pbmRpY2F0b3IncyBvdmVybGF5XG4gIH1cblxuICAvLyBDaGFuZ2UgYm9yZGVycyBmb3Igc2Nyb2xsaW5nXG4gICYuZnJvemVuLWxhc3Qge1xuICAgIGJvcmRlci1pbmxpbmUtZW5kOiAxcHggc29saWQgdmFyKC0taWRzLWRhdGEtZ3JpZC1jZWxsLWNvbG9yLWJvcmRlcik7XG5cbiAgICArIC5pZHMtZGF0YS1ncmlkLWNlbGwge1xuICAgICAgYm9yZGVyLWlubGluZS1zdGFydC13aWR0aDogdmFyKC0taWRzLWJvcmRlci13aWR0aC1ub25lKTtcbiAgICB9XG4gIH1cblxuICAmLmZyb3plbi1sZWZ0IHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIGxlZnQ6IHZhcigtLWlkcy1zcGFjZS1ub25lKTtcblxuICAgIC8vIER5bmFtaWNhbGx5IGFkZGVkIHdpZHRoc1xuICAgIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggMTAge1xuICAgICAgJjpudGgtb2YtdHlwZSgjeyRpfSkge1xuICAgICAgICBsZWZ0OiB2YXIoLS1pZHMtZGF0YS1ncmlkLWZyb3plbi1jb2x1bW4tbGVmdC13aWR0aC0jeyRpfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5mcm96ZW4tcmlnaHQge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgcmlnaHQ6IHZhcigtLWlkcy1zcGFjZS1ub25lKTtcbiAgfVxuXG4gICYuaXMtZGlydHk6OmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgaWRzLWRhdGEtZ3JpZC1jZWxsLWRpcnR5LXRyYWNrZXItaWNvbjtcbiAgfVxuXG4gICYuaXMtZGlydHkuaXMtaW5saW5lIHtcbiAgICAmLmZvcm1hdHRlci10cmVlIHtcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIGNvbnRlbnQ6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5pZHMtZGF0YS1ncmlkLXRyZWUtZmllbGQtY29udGFpbmVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgQGluY2x1ZGUgaWRzLWRhdGEtZ3JpZC1jZWxsLWRpcnR5LXRyYWNrZXItaWNvbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYuaXMtZHJvcGRvd246OmJlZm9yZSB7XG4gICAgICBtYXJnaW4taW5saW5lOiA2cHg7XG4gICAgICBpbnNldC1ibG9jay1zdGFydDogNnB4O1xuICAgIH1cblxuICAgIGlkcy1pbnB1dCB7XG4gICAgICAmOjpwYXJ0KGRpcnR5LXRyYWNrZXItaWNvbikge1xuICAgICAgICAtLWlkcy1pY29uLWhlaWdodC1kZWZhdWx0OiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIC0taWRzLWljb24td2lkdGgtZGVmYXVsdDogMTJweCAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYuaXMtZGlydHkuaXMtZHJvcGRvd24uaXMtZWRpdGluZzpub3QoLmlzLWlubGluZSk6OmJlZm9yZSB7XG4gICAgaW5zZXQtYmxvY2stc3RhcnQ6IDNweDtcbiAgICBtYXJnaW4taW5saW5lOiAzcHg7XG4gIH1cblxuICAmLmlzLWludmFsaWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtY2VsbC1jb2xvci1iYWNrZ3JvdW5kLWVycm9yKTtcbiAgfVxuXG4gICYuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtcm93LWNvbG9yLWJhY2tncm91bmQtc2VsZWN0ZWQpO1xuICB9XG5cbiAgaWRzLWFsZXJ0IHtcbiAgICBtYXJnaW4tdG9wOiAzcHg7XG4gIH1cblxuICBpZHMtdGFnIHtcbiAgICAtLWlkcy10YWctbWFyZ2luLWlubGluZS1lbmQ6IDA7XG4gIH1cblxuICBpZHMtcHJvZ3Jlc3MtYmFyIHtcbiAgICBtYXJnaW46IHZhcigtLWlkcy1wcm9ncmVzcy1iYXItZ3JpZC1jZWxsLW1hcmdpbik7XG4gIH1cblxuICAmLmlzLWVkaXRpbmcge1xuICAgICRpY29uLXN0eWxlczogKFxuICAgICAgJ3RpbWVwaWNrZXInOiAnY2xvY2snLFxuICAgICAgJ2RhdGVwaWNrZXInOiAnY2FsZW5kYXInXG4gICAgKTtcblxuICAgICRmaWVsZC1oZWlnaHRzOiAoXG4gICAgICAneHMnOiAoLTVweCwgMXB4KSxcbiAgICAgICdzbSc6ICh2YXIoLS1pZHMtc3BhY2UtM3hzKSwgMXB4KVxuICAgICk7XG5cbiAgICBAZWFjaCAkY2xhc3MsICRpY29uIGluICRpY29uLXN0eWxlcyB7XG4gICAgICAmLmlzLSN7JGNsYXNzfSB7XG4gICAgICAgIEBlYWNoICRoZWlnaHQsICR2YWx1ZXMgaW4gJGZpZWxkLWhlaWdodHMge1xuICAgICAgICAgIC5pZHMtdHJpZ2dlci1maWVsZC1zbG90LXRyaWdnZXItZW5kW2ljb249JyN7JGljb259J11bZmllbGQtaGVpZ2h0PScjeyRoZWlnaHR9J10ge1xuICAgICAgICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IGxpc3QubnRoKCR2YWx1ZXMsIDEpO1xuICAgICAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiBsaXN0Lm50aCgkdmFsdWVzLCAyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSb3cgaGVpZ2h0OiAneHhzJ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5bZGF0YS1yb3ctaGVpZ2h0PSd4eHMnXSB7XG4gIC5mb3JtYXR0ZXItcHJvZ3Jlc3Mge1xuICAgIGlkcy1wcm9ncmVzcy1iYXIge1xuICAgICAgbWFyZ2luOiB2YXIoLS1pZHMtZGF0YS1ncmlkLXBhZGRpbmcteHhzKTtcbiAgICB9XG4gIH1cblxuICAuaWRzLWRhdGEtZ3JpZC1jZWxsLmlzLWRpcnR5OjpiZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogNHB4O1xuICAgIGluc2V0LWJsb2NrLXN0YXJ0OiAxcHg7XG4gICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAtMXB4O1xuICB9XG5cbiAgLmlkcy1kYXRhLWdyaWQtY2VsbC5pcy1kaXJ0eS5pcy1pbmxpbmU6OmJlZm9yZSB7XG4gICAgbWFyZ2luLWlubGluZTogM3B4O1xuICAgIHRvcDogM3B4O1xuICB9XG5cbiAgaWRzLWJ1dHRvbiB7XG4gICAgLS1pZHMtYnV0dG9uLWljb24tcGFkZGluZzogdmFyKC0taWRzLXNwYWNlLTN4cyk7XG4gIH1cblxuICBpZHMtYmFkZ2Uge1xuICAgIC0taWRzLWJhZGdlLWZvbnQtbGluZS1oZWlnaHQ6IGNhbGModmFyKC0taWRzLWRhdGEtZ3JpZC1yb3ctaGVpZ2h0LXh4cykgLSA4cHgpO1xuICB9XG5cbiAgaWRzLXRhZyB7XG4gICAgLS1pZHMtdGFnLWhlaWdodDogY2FsYyh2YXIoLS1pZHMtZGF0YS1ncmlkLXJvdy1oZWlnaHQteHhzKSAtIDZweCk7XG4gIH1cblxuICBpZHMtaW5wdXQsXG4gIGlkcy10cmlnZ2VyLWZpZWxkIHtcbiAgICAtLWlkcy1zcGFjZS0zeHM6IDA7XG4gICAgLS1pZHMtaW5wdXQtZm9udC1zaXplLXNtOiB2YXIoLS1pZHMtZGF0YS1ncmlkLWZvbnQtc2l6ZS1zbSk7XG4gIH1cblxuICBpZHMtaW5wdXQge1xuICAgICY6OnBhcnQoZGlydHktdHJhY2tlci1pY29uKSB7XG4gICAgICAtLWlkcy1pY29uLWhlaWdodC1kZWZhdWx0OiAxMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAtLWlkcy1pY29uLXdpZHRoLWRlZmF1bHQ6IDEwcHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAmOjpwYXJ0KGlucHV0KSB7XG4gICAgICBoZWlnaHQ6IGNhbGModmFyKC0taWRzLWlucHV0LWhlaWdodC0xMCkpO1xuICAgIH1cbiAgfVxuXG4gIC5pZHMtZGF0YS1ncmlkLWNlbGwuaXMtZWRpdGluZyB7XG4gICAgaWRzLWlucHV0OjpwYXJ0KGlucHV0KSB7XG4gICAgICBoZWlnaHQ6IGNhbGModmFyKC0taWRzLWlucHV0LWhlaWdodC0xMCkgLSA0cHgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFkanVzdCBub24gaW5saW5lIGVkaXRvclxuICAuaWRzLWRhdGEtZ3JpZC1jZWxsLmlzLWVkaXRhYmxlIC5lZGl0b3ItY2VsbC1pY29uIHtcbiAgICBtYXJnaW4taW5saW5lLWVuZDogdmFyKC0taWRzLXNwYWNlLTN4cyk7XG4gIH1cblxuICAvLyBBZGp1c3QgZHJvcGRvd24gZWRpdG9yXG4gIC5pZHMtZGF0YS1ncmlkLWNlbGwuaXMtZWRpdGFibGUuaXMtaW5saW5lIGlkcy1pY29uLmVkaXRvci1jZWxsLWljb24ge1xuICAgIG1hcmdpbi1pbmxpbmUtZW5kOiB2YXIoLS1pZHMtc3BhY2UtMnhzKTtcbiAgfVxuXG4gIC5pZHMtZGF0YS1ncmlkLWNlbGwuaXMtZWRpdGFibGUuaXMtaW5saW5lIHtcbiAgICAtLWlkcy1idXR0b24tdGVydGlhcnktY29sb3ItYmFja2dyb3VuZC1ob3ZlcjogdmFyKC0taWRzLWNvbG9yLXRyYW5zcGFyZW50KTtcbiAgfVxuXG4gIC5pZHMtZGF0YS1ncmlkLWNlbGwuaXMtZWRpdGluZy5pcy1kcm9wZG93bi5pcy1pbmxpbmUgaWRzLWRyb3Bkb3duIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1pZHMtc3BhY2Utbm9uZSkgdmFyKC0taWRzLXNwYWNlLTR4cyk7XG5cbiAgICAtLWlkcy1pbnB1dC1mb250LXNpemUtc206IHZhcigtLWlkcy1kYXRhLWdyaWQtZm9udC1zaXplLXNtKTtcbiAgfVxuXG4gIC5pZHMtZGF0YS1ncmlkLWNlbGwge1xuICAgIC5pZHMtZGF0YS1ncmlkLWNoZWNrYm94LWNvbnRhaW5lcjpub3QoLmlzLXNlbGVjdGlvbi1jaGVja2JveCkge1xuICAgICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLWlkcy1kYXRhLWdyaWQtcGFkZGluZy14eHMpO1xuICAgIH1cblxuICAgICYuaXMtZWRpdGFibGUuaXMtZWRpdGFibGUuaXMtaW52YWxpZCBpZHMtYWxlcnQge1xuICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IHZhcigtLWlkcy1zcGFjZS00eHMpO1xuICAgIH1cblxuICAgIGlkcy1oeXBlcmxpbmsge1xuICAgICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLWlkcy1zcGFjZS0yeHMpO1xuICAgIH1cbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJvdyBoZWlnaHQ6ICd4cydcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5bZGF0YS1yb3ctaGVpZ2h0PSd4cyddIHtcbiAgLmZvcm1hdHRlci1wcm9ncmVzcyB7XG4gICAgaWRzLXByb2dyZXNzLWJhciB7XG4gICAgICBtYXJnaW46IHZhcigtLWlkcy1kYXRhLWdyaWQtcGFkZGluZy14cyk7XG4gICAgfVxuICB9XG5cbiAgLmlkcy1kYXRhLWdyaWQtY2VsbC5pcy1kaXJ0eTo6YmVmb3JlIHtcbiAgICBib3JkZXItd2lkdGg6IDRweDtcbiAgfVxuXG4gIC5pZHMtZGF0YS1ncmlkLWNlbGwuaXMtZGlydHkuaXMtaW5saW5lOjpiZWZvcmUge1xuICAgIG1hcmdpbi1pbmxpbmU6IDNweDtcbiAgICB0b3A6IDNweDtcbiAgfVxuXG4gIGlkcy1idXR0b24ge1xuICAgIC0taWRzLWJ1dHRvbi1pY29uLXBhZGRpbmc6IDNweDtcbiAgfVxuXG4gIGlkcy1iYWRnZSB7XG4gICAgLS1pZHMtYmFkZ2UtZm9udC1saW5lLWhlaWdodDogY2FsYyh2YXIoLS1pZHMtZGF0YS1ncmlkLXJvdy1oZWlnaHQteHMpIC0gMTJweCk7XG4gIH1cblxuICBpZHMtdGFnIHtcbiAgICAtLWlkcy10YWctaGVpZ2h0OiBjYWxjKHZhcigtLWlkcy1kYXRhLWdyaWQtcm93LWhlaWdodC14eHMpIC0gNHB4KTtcbiAgfVxuXG4gIGlkcy1pbnB1dCB7XG4gICAgLS1pZHMtaW5wdXQtZm9udC1zaXplLXNtOiB2YXIoLS1pZHMtZGF0YS1ncmlkLWZvbnQtc2l6ZS1zbSk7XG5cbiAgICAmOjpwYXJ0KGRpcnR5LXRyYWNrZXItaWNvbikge1xuICAgICAgLS1pZHMtaWNvbi1oZWlnaHQtZGVmYXVsdDogMTJweCAhaW1wb3J0YW50O1xuICAgICAgLS1pZHMtaWNvbi13aWR0aC1kZWZhdWx0OiAxMnB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRqdXN0IG5vbiBpbmxpbmUgZWRpdG9yXG4gIC5pZHMtZGF0YS1ncmlkLWNlbGwuaXMtZWRpdGFibGUgLmVkaXRvci1jZWxsLWljb24ge1xuICAgIG1hcmdpbi1pbmxpbmUtZW5kOiB2YXIoLS1pZHMtc3BhY2UtM3hzKTtcbiAgfVxuXG4gIC8vIEFkanVzdCBkcm9wZG93biBlZGl0b3JcbiAgLmlkcy1kYXRhLWdyaWQtY2VsbC5pcy1lZGl0YWJsZS5pcy1pbmxpbmUgaWRzLWljb24uZWRpdG9yLWNlbGwtaWNvbiB7XG4gICAgbWFyZ2luLWlubGluZS1lbmQ6IHZhcigtLWlkcy1zcGFjZS0yeHMpO1xuICB9XG5cbiAgLmlkcy1kYXRhLWdyaWQtY2VsbC5pcy1lZGl0YWJsZS5pcy1pbmxpbmUge1xuICAgIC0taWRzLWJ1dHRvbi10ZXJ0aWFyeS1jb2xvci1iYWNrZ3JvdW5kLWhvdmVyOiB2YXIoLS1pZHMtY29sb3ItdHJhbnNwYXJlbnQpO1xuICAgIC0taWRzLWlucHV0LWZvbnQtc2l6ZS1zbTogdmFyKC0taWRzLWRhdGEtZ3JpZC1mb250LXNpemUtc20pO1xuICB9XG5cbiAgLmlkcy1kYXRhLWdyaWQtY2VsbC5pcy1lZGl0aW5nLmlzLWRyb3Bkb3duLmlzLWlubGluZSBpZHMtZHJvcGRvd24ge1xuICAgIHBhZGRpbmc6IHZhcigtLWlkcy1zcGFjZS1ub25lKSB2YXIoLS1pZHMtc3BhY2UtM3hzKTtcbiAgfVxuXG4gIC5pZHMtZGF0YS1ncmlkLWNlbGwge1xuICAgIC5pZHMtZGF0YS1ncmlkLWNoZWNrYm94LWNvbnRhaW5lcjpub3QoLmlzLXNlbGVjdGlvbi1jaGVja2JveCkge1xuICAgICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLWlkcy1kYXRhLWdyaWQtcGFkZGluZy14cyk7XG4gICAgfVxuXG4gICAgaWRzLWh5cGVybGluayB7XG4gICAgICBwYWRkaW5nLWlubGluZTogdmFyKC0taWRzLXNwYWNlLTJ4cyk7XG4gICAgfVxuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUm93IGhlaWdodDogJ3NtJ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbltkYXRhLXJvdy1oZWlnaHQ9J3NtJ10ge1xuICAuZm9ybWF0dGVyLXByb2dyZXNzIHtcbiAgICBpZHMtcHJvZ3Jlc3MtYmFyIHtcbiAgICAgIG1hcmdpbjogdmFyKC0taWRzLWRhdGEtZ3JpZC1wYWRkaW5nLXNtKTtcbiAgICB9XG4gIH1cblxuICBpZHMtYnV0dG9uIHtcbiAgICAtLWlkcy1idXR0b24taWNvbi1wYWRkaW5nOiB2YXIoLS1pZHMtc3BhY2UtMnhzKTtcbiAgfVxuXG4gIC8vIEFkanVzdCBub24gaW5saW5lIGVkaXRvclxuICAuaWRzLWRhdGEtZ3JpZC1jZWxsLmlzLWVkaXRhYmxlIC5lZGl0b3ItY2VsbC1pY29uIHtcbiAgICBtYXJnaW4taW5saW5lLWVuZDogNnB4O1xuICB9XG5cbiAgLy8gQWRqdXN0IGRyb3Bkb3duIGVkaXRvclxuICAuaWRzLWRhdGEtZ3JpZC1jZWxsLmlzLWVkaXRhYmxlLmlzLWlubGluZSBpZHMtaWNvbi5lZGl0b3ItY2VsbC1pY29uIHtcbiAgICBtYXJnaW4taW5saW5lLWVuZDogNXB4O1xuICAgIG1hcmdpbi1ibG9jay1zdGFydDogMDtcbiAgfVxuXG4gIC5pZHMtZGF0YS1ncmlkLWNlbGwuaXMtZWRpdGFibGUuaXMtaW5saW5lIHtcbiAgICAtLWlkcy1idXR0b24tdGVydGlhcnktY29sb3ItYmFja2dyb3VuZC1ob3ZlcjogdmFyKC0taWRzLWNvbG9yLXRyYW5zcGFyZW50KTtcbiAgfVxuXG4gIC5pZHMtZGF0YS1ncmlkLWNlbGwge1xuICAgIC5pZHMtZGF0YS1ncmlkLWNoZWNrYm94LWNvbnRhaW5lcjpub3QoLmlzLXNlbGVjdGlvbi1jaGVja2JveCkge1xuICAgICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLWlkcy1kYXRhLWdyaWQtcGFkZGluZy1zbSk7XG4gICAgfVxuXG4gICAgaWRzLWh5cGVybGluayB7XG4gICAgICBwYWRkaW5nLWlubGluZTogdmFyKC0taWRzLXNwYWNlLXhzKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSb3cgaGVpZ2h0OiAnbWQnXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuW2RhdGEtcm93LWhlaWdodD0nbWQnXSB7XG4gIC5mb3JtYXR0ZXItcHJvZ3Jlc3Mge1xuICAgIGlkcy1wcm9ncmVzcy1iYXIge1xuICAgICAgbWFyZ2luOiB2YXIoLS1pZHMtZGF0YS1ncmlkLXBhZGRpbmctbWQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFkanVzdCBkcm9wZG93biBlZGl0b3JcbiAgLmlkcy1kYXRhLWdyaWQtY2VsbC5pcy1lZGl0YWJsZSAuZWRpdG9yLWNlbGwtaWNvbiB7XG4gICAgbWFyZ2luLWlubGluZS1lbmQ6IDdweDtcbiAgfVxuXG4gIC5pZHMtZGF0YS1ncmlkLWNlbGwuaXMtZWRpdGFibGUuaXMtaW5saW5lIGlkcy1pY29uLmVkaXRvci1jZWxsLWljb24ge1xuICAgIG1hcmdpbi1pbmxpbmUtZW5kOiB2YXIoLS1pZHMtZGF0YS1ncmlkLXBhZGRpbmctc20pO1xuICB9XG5cbiAgLmlkcy1kYXRhLWdyaWQtY2VsbC5pcy1lZGl0YWJsZS5pcy1pbmxpbmUge1xuICAgIC0taWRzLWJ1dHRvbi10ZXJ0aWFyeS1jb2xvci1iYWNrZ3JvdW5kLWhvdmVyOiB2YXIoLS1pZHMtY29sb3ItdHJhbnNwYXJlbnQpO1xuXG4gICAgOjpzbG90dGVkKGlkcy10cmlnZ2VyLWJ1dHRvbikge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgdG9wOiAxMDBweDtcbiAgICB9XG4gIH1cblxuICAuaWRzLWRhdGEtZ3JpZC1jZWxsIHtcbiAgICAuaWRzLWRhdGEtZ3JpZC1jaGVja2JveC1jb250YWluZXI6bm90KC5pcy1zZWxlY3Rpb24tY2hlY2tib3gpIHtcbiAgICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS1pZHMtZGF0YS1ncmlkLXBhZGRpbmctbWQpO1xuICAgIH1cbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJvdyBoZWlnaHQ6ICdsZydcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5bZGF0YS1yb3ctaGVpZ2h0PSdsZyddIHtcbiAgLmlkcy1kYXRhLWdyaWQtY2VsbCB7XG4gICAgLmlkcy1kYXRhLWdyaWQtY2hlY2tib3gtY29udGFpbmVyOm5vdCguaXMtc2VsZWN0aW9uLWNoZWNrYm94KSB7XG4gICAgICBwYWRkaW5nLWlubGluZTogdmFyKC0taWRzLWRhdGEtZ3JpZC1wYWRkaW5nLWxnKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gTGlzdCBTdHlsZSBGZWF0dXJlXG4uaWRzLWRhdGEtZ3JpZC5pcy1saXN0LXN0eWxlIHtcbiAgLy8gQ2hhbmdlIENlbGwgQm9yZGVycy9CR1xuICAuaWRzLWRhdGEtZ3JpZC1jZWxsIHtcbiAgICBib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoOiB2YXIoLS1pZHMtYm9yZGVyLXdpZHRoLW5vbmUpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1pZHMtZGF0YS1ncmlkLWxpc3QtY2VsbC1jb2xvci1ib3JkZXIpO1xuXG4gICAgJi5pcy1yZWFkb25seTpub3QoLmV4Y2x1ZGUtcmVhZG9ubHktc3R5bGUpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtY2VsbC1jb2xvci1iYWNrZ3JvdW5kLXJlYWRvbmx5KVxuICAgIH1cblxuICAgICYuaXMtZGlzYWJsZWQge1xuICAgICAgY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtY2VsbC1jb2xvci10ZXh0LWRpc2FibGVkKTtcbiAgICB9XG4gIH1cblxuICAuaWRzLWRhdGEtZ3JpZC1ib2R5IC5pZHMtZGF0YS1ncmlkLXJvdzpmaXJzdC1jaGlsZCAuaWRzLWRhdGEtZ3JpZC1jZWxsIHtcbiAgICBib3JkZXItdG9wOiAwO1xuICB9XG59XG5cbi8vIFN0YW5kYWxvbmUgQ3NzXG50ZC5pZHMtZGF0YS1ncmlkLWNlbGwge1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICBwYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0taWRzLXNwYWNlLXNtKTtcbiAgcGFkZGluZy1pbmxpbmUtZW5kOiB2YXIoLS1pZHMtc3BhY2Utc20pO1xufVxuXG4vLyBIYW5kbGUgUlRMXG46aG9zdChbZGlyPSdydGwnXSkge1xuICAuaWRzLWRhdGEtZ3JpZC5pcy1saXN0LXN0eWxlIHtcbiAgICAuaWRzLWRhdGEtZ3JpZC1jZWxsIHtcbiAgICAgIGJvcmRlci1pbmxpbmUtZW5kLXdpZHRoOiB2YXIoLS1pZHMtYm9yZGVyLXdpZHRoLW5vbmUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIE5lZ2F0ZSBCb3JkZXJzXG4gIC5pZHMtZGF0YS1ncmlkLWNlbGwge1xuICAgICYuZnJvemVuLWxlZnQge1xuICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgIHJpZ2h0OiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG5cbiAgICAgIC8vIER5bmFtaWNhbGx5IGFkZGVkIHdpZHRoc1xuICAgICAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAxMCB7XG4gICAgICAgICY6bnRoLW9mLXR5cGUoI3skaX0pIHtcbiAgICAgICAgICByaWdodDogdmFyKC0taWRzLWRhdGEtZ3JpZC1mcm96ZW4tY29sdW1uLWxlZnQtd2lkdGgtI3skaX0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci1pbmxpbmUtZW5kLXdpZHRoOiB2YXIoLS1pZHMtYm9yZGVyLXdpZHRoLW5vbmUpO1xuICAgIH1cblxuICAgICYuaXMtZGlydHkge1xuICAgICAgLmlkcy1kYXRhLWdyaWQtdHJlZS1maWVsZC1jb250YWluZXI6OmJlZm9yZSxcbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taWRzLWlucHV0LWRpcnR5LWluZGljYXRvci1jb2xvci1iYWNrZ3JvdW5kLWRpcnR5KSAgdmFyKC0taWRzLWlucHV0LWRpcnR5LWluZGljYXRvci1jb2xvci1iYWNrZ3JvdW5kLWRpcnR5KSB0cmFuc3BhcmVudCAgdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5mb3JtYXR0ZXItdGV4dG1hc2sge1xuICAgICAgLmlzLXRleHRtYXNrIHtcbiAgICAgICAgdW5pY29kZS1iaWRpOiBwbGFpbnRleHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEZpeCBzbG90dGVkIHRyaWdnZXIgYnV0dG9uIG1hcmdpbnMgd2hlbiBuZXN0ZWQgd2l0aGluIGNlbGxzXG4uaWRzLXRyaWdnZXItZmllbGQtc2xvdC10cmlnZ2VyLWVuZCB7XG4gIG1hcmdpbi1pbmxpbmUtZW5kOiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG59XG4iLCJAdXNlICcuLi8uLi90aGVtZXMvbWl4aW5zL2lkcy1jb3JlLW1peGlucycgYXMgKjtcblxuLy8gSW5jbHVkZXMgSGlkZGVuIENsYXNzZXMgYW5kIE1peGlucyBmb3IgaGlkaW5nIGVsZW1lbnRzIGF0IGJyZWFrcG9pbnRzXG4uaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5oaWRlLXh4bC1kb3duIHtcbiAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJGJyZWFrcG9pbnQteHhsKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gaGlkZS14eGwtZG93biB7XG4gIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6ICRicmVha3BvaW50LXh4bCkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLmhpZGUteHhsLXVwIHtcbiAgQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJyZWFrcG9pbnQteHhsKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gaGlkZS14eGwtdXAge1xuICBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnJlYWtwb2ludC14eGwpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5oaWRlLXhsLWRvd24ge1xuICBAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAkYnJlYWtwb2ludC14bCkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIGhpZGUteGwtZG93biB7XG4gIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6ICRicmVha3BvaW50LXhsKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4uaGlkZS14bC11cCB7XG4gIEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6ICRicmVha3BvaW50LXhsKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gaGlkZS14bC11cCB7XG4gIEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6ICRicmVha3BvaW50LXhsKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4uaGlkZS1sZy1kb3duIHtcbiAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJGJyZWFrcG9pbnQtbGcpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBoaWRlLWxnLWRvd24ge1xuICBAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAkYnJlYWtwb2ludC1sZykge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLmhpZGUtbGctdXAge1xuICBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnJlYWtwb2ludC1sZykge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIGhpZGUtbGctdXAge1xuICBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnJlYWtwb2ludC1sZykge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLmhpZGUtbWQtZG93biB7XG4gIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6ICRicmVha3BvaW50LW1kKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gaGlkZS1tZC1kb3duIHtcbiAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJGJyZWFrcG9pbnQtbWQpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5oaWRlLW1kLXVwIHtcbiAgQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJyZWFrcG9pbnQtbWQpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBoaWRlLW1kLXVwIHtcbiAgQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJyZWFrcG9pbnQtbWQpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5oaWRlLXNtLWRvd24ge1xuICBAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAkYnJlYWtwb2ludC1zbSkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIGhpZGUtc20tZG93biB7XG4gIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6ICRicmVha3BvaW50LXNtKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4uaGlkZS1zbS11cCB7XG4gIEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6ICRicmVha3BvaW50LXNtKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gaGlkZS1zbS11cCB7XG4gIEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6ICRicmVha3BvaW50LXNtKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4uaGlkZS14cy1kb3duIHtcbiAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogJGJyZWFrcG9pbnQteHMpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBoaWRlLXhzLWRvd24ge1xuICBAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAkYnJlYWtwb2ludC14cykge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLmhpZGUteHMtdXAge1xuICBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnJlYWtwb2ludC14cykge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIGhpZGUteHMtdXAge1xuICBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnJlYWtwb2ludC14cykge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIGJyZWFrcG9pbnQteHMtZG93biB7XG4gIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6ICRicmVha3BvaW50LXhzKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIkB1c2UgJy4uLy4uL3RoZW1lcy9taXhpbnMvaWRzLWhpZGUtbWl4aW4uc2NzcycgYXMgaGlkZTtcblxuOmhvc3QoLmhpZGUtc20tZG93bikge1xuICBAaW5jbHVkZSBoaWRlLmhpZGUtc20tZG93bigpO1xufVxuXG4uaWRzLXBvcHVwLW1lbnUge1xuICAmOm5vdChbaGlkZGVuXSkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHotaW5kZXg6IHZhcigtLWlkcy16LWluZGV4LTE2MCk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ2hlY2tib3ggTWl4aW5zLlxuICovXG5AdXNlICdzYXNzOmxpc3QnO1xuQHVzZSAnLi4vLi4vdGhlbWVzL21peGlucy9pZHMtY29yZS1taXhpbnMnIGFzIG1peGlucztcblxuLy8gVW5jaGVja2VkXG5AbWl4aW4gY2hlY2tib3gtdW5jaGVja2VkKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvcmRlcjogdmFyKC0taWRzLWNoZWNrYm94LWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWlkcy1jaGVja2JveC1ib3JkZXItcmFkaXVzKTtcbiAgaGVpZ2h0OiAxNHB4O1xuICB3aWR0aDogMTRweDtcbiAgbGVmdDogMDtcbiAgdG9wOiAzcHg7XG59XG5cbkBtaXhpbiBjaGVja2JveC11bmNoZWNrZWQtZXJyb3Ige1xuICBib3JkZXItY29sb3I6IHZhcigtLWlkcy1jaGVja2JveC1jb2xvci1ib3JkZXItZXJyb3IpO1xufVxuXG4vLyBDaGVja2VkXG5AbWl4aW4gY2hlY2tib3gtY2hlY2tlZCgpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taWRzLWNoZWNrYm94LWNvbG9yLWJhY2tncm91bmQtc2VsZWN0ZWQpO1xuICBib3JkZXItY29sb3I6IHZhcigtLWlkcy1jaGVja2JveC1jb2xvci1ib3JkZXItc2VsZWN0ZWQpO1xufVxuXG5AbWl4aW4gY2hlY2tib3gtY2hlY2tlZC1hZnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGJvcmRlcjogdmFyKC0taWRzLWZvbnQtc2l6ZS0yeHMpIHNvbGlkIHZhcigtLWlkcy1jaGVja2JveC1jb2xvci1ib3JkZXItc2VsZWN0ZWQtYWZ0ZXIpO1xuICBib3JkZXItd2lkdGg6IHZhcigtLWlkcy1jaGVja2JveC1ib3JkZXItd2lkdGgtc2VsZWN0ZWQtYWZ0ZXIpO1xuICBhbmltYXRpb246IGNoZWNrIDAuMTVzO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gIGNvbnRlbnQ6ICcnO1xuICBoZWlnaHQ6IDEwcHg7XG4gIGxlZnQ6IDRweDtcbiAgdG9wOiAwO1xuICB3aWR0aDogNHB4O1xufVxuXG4vLyBJbmRldGVybWluYXRlXG5AbWl4aW4gY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSgpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taWRzLWNoZWNrYm94LWNvbG9yLWJhY2tncm91bmQtaW5kZXRlcm1pbmF0ZSk7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0taWRzLWNoZWNrYm94LWNvbG9yLWJvcmRlci1pbmRldGVybWluYXRlKTtcbn1cblxuQG1peGluIGNoZWNrYm94LWluZGV0ZXJtaW5hdGUtYWZ0ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGFuaW1hdGlvbjogY2hlY2tpbmRldGVybWluYXRlIDAuMTVzO1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taWRzLWNoZWNrYm94LWNvbG9yLWJvcmRlci1pbmRldGVybWluYXRlLWFmdGVyKTtcbiAgYm9yZGVyLXdpZHRoOiB2YXIoLS1pZHMtY2hlY2tib3gtYm9yZGVyLXdpZHRoLWluZGV0ZXJtaW5hdGUpO1xuICBjb250ZW50OiAnJztcbiAgaGVpZ2h0OiA2cHg7XG4gIGxlZnQ6IDJweDtcbiAgdG9wOiAwO1xuICB0cmFuc2Zvcm06IG5vbmU7XG4gIHdpZHRoOiAxMHB4O1xufVxuXG4vLyBEaXNhYmxlZFxuQG1peGluIGNoZWNrYm94LWRpc2FibGVkLXVuY2hlY2tlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlkcy1jaGVja2JveC1jb2xvci1iYWNrZ3JvdW5kLWRpc2FibGVkKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pZHMtY2hlY2tib3gtY29sb3ItYm9yZGVyLWRpc2FibGVkKTtcbiAgY3Vyc29yOiB2YXIoLS1pZHMtY3Vyc29yLWRlZmF1bHQpO1xufVxuXG5AbWl4aW4gY2hlY2tib3gtZGlzYWJsZWQtdW5jaGVja2VkLWVycm9yIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pZHMtY2hlY2tib3gtY29sb3ItYm9yZGVyLWZvY3VzLWVycm9yKTtcbn1cblxuQG1peGluIGNoZWNrYm94LWRpc2FibGVkLWNoZWNrZWQoKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlkcy1jaGVja2JveC1jb2xvci1iYWNrZ3JvdW5kLXNlbGVjdGVkLWRpc2FibGVkKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pZHMtY2hlY2tib3gtY29sb3ItYm9yZGVyLXNlbGVjdGVkLWRpc2FibGVkKTtcbn1cblxuQG1peGluIGNoZWNrYm94LWRpc2FibGVkLXRleHQge1xuICBjdXJzb3I6IHZhcigtLWlkcy1jdXJzb3ItZGVmYXVsdCk7XG4gIGNvbG9yOiB2YXIoLS1pZHMtY2hlY2tib3gtY29sb3ItdGV4dC1kaXNhYmxlZCk7XG59XG5cbi8vIEZvY3VzXG5AbWl4aW4gY2hlY2tib3gtZm9jdXMge1xuICBib3JkZXItY29sb3I6IHZhcigtLWlkcy1jaGVja2JveC1jb2xvci1ib3JkZXItZm9jdXMpO1xuICBib3gtc2hhZG93OiB2YXIoLS1pZHMtY2hlY2tib3gtc2hhZG93LWZvY3VzKTtcbn1cblxuQG1peGluIGNoZWNrYm94LWZvY3VzLWVycm9yIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pZHMtY2hlY2tib3gtY29sb3ItYm9yZGVyLWZvY3VzLWVycm9yKTtcbiAgYm94LXNoYWRvdzogdmFyKC0taWRzLWNoZWNrYm94LXNoYWRvdy1mb2N1cy1lcnJvcik7XG59XG5cbi8vIENvbG9yZWRcbiRjb2xvci1uYW1lczogJ2dyZWVuJyAncHVycGxlJyAnYmx1ZScgJ29yYW5nZScgJ3JlZCc7XG4kY29sb3ItdmFyczogLS1pZHMtY29sb3ItZ3JlZW4tNzAgLS1pZHMtY29sb3ItcHVycGxlLTcwIC0taWRzLWNvbG9yLWJsdWUtNzAgLS1pZHMtY29sb3Itb3JhbmdlLTcwIC0taWRzLWNvbG9yLXJlZC03MDtcblxuQG1peGluIGNoZWNrYm94LWNvbG9yZWQoKSB7XG4gIEBlYWNoICRuYW1lIGluICRjb2xvci1uYW1lcyB7XG4gICAgJGk6IGxpc3QuaW5kZXgoJGNvbG9yLW5hbWVzLCAkbmFtZSk7XG4gICAgJGNvbG9yOiB2YXIoI3tsaXN0Lm50aCgkY29sb3ItdmFycywgJGkpfSk7XG5cbiAgICAmW2NvbG9yPScjeyRuYW1lfSddIGlucHV0W3R5cGU9J2NoZWNrYm94J10ge1xuICAgICAgfiAuY2hlY2ttYXJrIHtcbiAgICAgICAgQGluY2x1ZGUgY2hlY2tib3gtY29sb3JlZC1ib3goJGNvbG9yKTtcbiAgICAgIH1cblxuICAgICAgJjpkaXNhYmxlZCB+IC5jaGVja21hcmsge1xuICAgICAgICBAaW5jbHVkZSBjaGVja2JveC1kaXNhYmxlZC11bmNoZWNrZWQoKTtcbiAgICAgIH1cblxuICAgICAgJjpkaXNhYmxlZDpjaGVja2VkIH4gLmNoZWNrbWFyayB7XG4gICAgICAgIEBpbmNsdWRlIGNoZWNrYm94LWRpc2FibGVkLWNoZWNrZWQoKTtcbiAgICAgIH1cblxuICAgICAgJjpmb2N1cyB+IC5jaGVja21hcmsge1xuICAgICAgICBAaW5jbHVkZSBjaGVja2JveC1jb2xvcmVkLWJveC1mb2N1cygkY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gY2hlY2tib3gtY29sb3JlZC1ib3goJGNvbG9yKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG59XG5cbkBtaXhpbiBjaGVja2JveC1jb2xvcmVkLWJveC1mb2N1cygkY29sb3IpIHtcbiAgYm9yZGVyLWNvbG9yOiAkY29sb3I7XG59XG5cbi8vIEFuaW1hdGlvbnNcbkBrZXlmcmFtZXMgY2hlY2sge1xuICAwJSB7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiA4cHg7XG4gICAgd2lkdGg6IDA7XG4gIH1cblxuICA1MCUge1xuICAgIGhlaWdodDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogOHB4O1xuICAgIHdpZHRoOiA0cHg7XG4gIH1cblxuICAxMDAlIHtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgbGVmdDogNHB4O1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogNHB4O1xuICB9XG59XG5cbkBrZXlmcmFtZXMgY2hlY2tpbmRldGVybWluYXRlIHtcbiAgMCUge1xuICAgIHdpZHRoOiAwO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgd2lkdGg6IDEwcHg7XG4gIH1cbn1cbiIsIi8qKlxuICogUmFkaW8gTWl4aW5zLlxuICovXG5AdXNlICdzYXNzOmxpc3QnO1xuQHVzZSAnLi4vLi4vdGhlbWVzL21peGlucy9pZHMtY29yZS1taXhpbnMnIGFzIG1peGlucztcblxuLy8gVW5jaGVja2VkXG5AbWl4aW4gcmFkaW8tdW5jaGVja2VkIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pZHMtcmFkaW8tY29sb3ItYm9yZGVyLWRlZmF1bHQpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1pZHMtcmFkaW8tYm9yZGVyLXJhZGl1cyk7XG4gIGhlaWdodDogMTRweDtcbiAgbGVmdDogMDtcbiAgdG9wOiAzcHg7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1pZHMtbW90aW9uLWR1cmF0aW9uKSB2YXIoLS1pZHMtbW90aW9uLWVhc2UpO1xuICB3aWR0aDogMTRweDtcbn1cblxuQG1peGluIHJhZGlvLXVuY2hlY2tlZC1hZnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taWRzLXJhZGlvLWNvbG9yLWJhY2tncm91bmQpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pZHMtcmFkaW8tY29sb3ItYmFja2dyb3VuZCk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWlkcy1yYWRpby1ib3JkZXItcmFkaXVzKTtcbiAgY29udGVudDogJyc7XG4gIGhlaWdodDogMDtcbiAgbGVmdDogNnB4O1xuICB0b3A6IDZweDtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLWlkcy1tb3Rpb24tZHVyYXRpb24pIHZhcigtLWlkcy1tb3Rpb24tZWFzZSk7XG4gIHdpZHRoOiAwO1xufVxuXG5AbWl4aW4gcmFkaW8tdW5jaGVja2VkLWVycm9yLWNpcmNsZSB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0taWRzLWNvbG9yLWVycm9yLWRlZmF1bHQpO1xufVxuXG5AbWl4aW4gcmFkaW8tdW5jaGVja2VkLWVycm9yLWxhYmVsLXRleHQge1xuICBjb2xvcjogdmFyKC0taWRzLWNvbG9yLWVycm9yLWRlZmF1bHQpO1xufVxuXG4vLyBDaGVja2VkXG5AbWl4aW4gcmFkaW8tY2hlY2tlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlkcy1yYWRpby1jb2xvci1iYWNrZ3JvdW5kLXNlbGVjdGVkKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pZHMtcmFkaW8tY29sb3ItYm9yZGVyLXNlbGVjdGVkKTtcbn1cblxuQG1peGluIHJhZGlvLWNoZWNrZWQtYWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pZHMtcmFkaW8taW5uZXItY29sb3ItYmFja2dyb3VuZC1zZWxlY3RlZCk7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0taWRzLXJhZGlvLWlubmVyLWNvbG9yLWJhY2tncm91bmQtc2VsZWN0ZWQpO1xuICBib3JkZXItd2lkdGg6IDJweDtcbiAgaGVpZ2h0OiA0cHg7XG4gIGxlZnQ6IDNweDtcbiAgdG9wOiAzcHg7XG4gIHdpZHRoOiA0cHg7XG59XG5cbi8vIERpc2FibGVkXG5AbWl4aW4gcmFkaW8tZGlzYWJsZWQtdW5jaGVja2VkIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pZHMtcmFkaW8tY29sb3ItYm9yZGVyLWRpc2FibGVkKTtcbiAgY3Vyc29yOiB2YXIoLS1pZHMtY3Vyc29yLWRlZmF1bHQpO1xuICBib3gtc2hhZG93OiBub25lO1xuICBvcGFjaXR5OiB2YXIoLS1pZHMtcmFkaW8tZGlzYWJsZWQtb3BhY2l0eSk7XG59XG5cbkBtaXhpbiByYWRpby1kaXNhYmxlZC11bmNoZWNrZWQtZXJyb3ItY2lyY2xlIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pZHMtcmFkaW8tY29sb3ItYm9yZGVyLWRpc2FibGVkKTtcbn1cblxuQG1peGluIHJhZGlvLWRpc2FibGVkLXVuY2hlY2tlZC1lcnJvci1sYWJlbC10ZXh0IHtcbiAgY29sb3I6IHZhcigtLWlkcy1yYWRpby1jb2xvci1ib3JkZXItZGlzYWJsZWQpO1xufVxuXG5AbWl4aW4gcmFkaW8tZGlzYWJsZWQtY2hlY2tlZCgpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taWRzLXJhZGlvLWNvbG9yLWJhY2tncm91bmQtc2VsZWN0ZWQtZGlzYWJsZWQpO1xuICBib3JkZXItY29sb3I6IHZhcigtLWlkcy1yYWRpby1jb2xvci1ib3JkZXItc2VsZWN0ZWQtZGlzYWJsZWQpO1xuICBvcGFjaXR5OiB2YXIoLS1pZHMtcmFkaW8tZGlzYWJsZWQtb3BhY2l0eSk7XG59XG5cbkBtaXhpbiByYWRpby1kaXNhYmxlZC10ZXh0IHtcbiAgY3Vyc29yOiB2YXIoLS1pZHMtY3Vyc29yLWRlZmF1bHQpO1xuICBjb2xvcjogdmFyKC0taWRzLXJhZGlvLWNvbG9yLXRleHQtZGlzYWJsZWQpO1xuICBvcGFjaXR5OiB2YXIoLS1pZHMtcmFkaW8tZGlzYWJsZWQtb3BhY2l0eSk7XG59XG5cbi8vIEZvY3VzXG5AbWl4aW4gcmFkaW8tZm9jdXMge1xuICBib3gtc2hhZG93OiB2YXIoLS1pZHMtcmFkaW8tc2hhZG93KTtcbn1cblxuQG1peGluIHJhZGlvLWZvY3VzLW5vdC1oaWRlLWZvY3VzIHtcbiAgYm94LXNoYWRvdzogdmFyKC0taWRzLXJhZGlvLXNoYWRvdy1mb2N1cyk7XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi8uLi90aGVtZXMvbWl4aW5zL2lkcy1jb3JlLW1peGlucycgYXMgbWl4aW5zO1xuQHVzZSAnLi9pZHMtZGF0YS1ncmlkLWNvbW1vbicgYXMgKjtcbkB1c2UgJy4vaWRzLWRhdGEtZ3JpZC1maWx0ZXJzJyBhcyAqO1xuQHVzZSAnLi9pZHMtZGF0YS1ncmlkLWhlYWRlcicgYXMgKjtcbkB1c2UgJy4vaWRzLWRhdGEtZ3JpZC1yb3cnIGFzICo7XG5AdXNlICcuL2lkcy1kYXRhLWdyaWQtY2VsbCcgYXMgKjtcbkB1c2UgJy4uLy4uL2NvbXBvbmVudHMvaWRzLXBvcHVwLW1lbnUvaWRzLXBvcHVwLW1lbnUnIGFzICo7XG5AdXNlICcuLi8uLi90aGVtZXMvbWl4aW5zL2lkcy1jaGVja2JveC1taXhpbicgYXMgKjtcbkB1c2UgJy4uLy4uL3RoZW1lcy9taXhpbnMvaWRzLXJhZGlvLW1peGluJyBhcyAqO1xuXG46aG9zdCB7XG4gIC0taWRzLWRhdGEtZ3JpZC1jb2x1bW4td2lkdGhzOiByZXBlYXQoMSwgbWlubWF4KDExMHB4LCAxZnIpKTtcblxuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5pZHMtZGF0YS1ncmlkIHtcbiAgLy8gT3V0c2lkZSBib3JkZXIgYW5kIEJhY2tncm91bmQgYW5kIHNpemluZ1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pZHMtZGF0YS1ncmlkLWNvbG9yLWJhY2tncm91bmQpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pZHMtZGF0YS1ncmlkLWNlbGwtY29sb3ItYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0taWRzLWJvcmRlci1yYWRpdXMtMnhzKTtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICBvdXRsaW5lOiBub25lO1xuXG4gIC8vIE5lZWRlZCBzbyBzdGlja3kgaGVhZGVyIHdvcmtzIGluIHNhZmFyaVxuICBkaXNwbGF5OiBpbmxpbmUtZ3JpZDtcbiAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDtcblxuICAvLyBGb250IEluZm9cbiAgQGluY2x1ZGUgbWl4aW5zLmFudGlhbGlhc2VkKCk7XG5cbiAgZm9udC1mYW1pbHk6IHZhcigtLWlkcy1mb250LWZhbWlseS1kZWZhdWx0KSwgdmFyKC0taWRzLWZvbnQtZmFtaWx5LXN5c3RlbS1zYW5zKTtcbiAgZm9udC1zaXplOiB2YXIoLS1pZHMtZm9udC1zaXplLXNtKTtcblxuICAvLyBTZWxlY3Rpb24gQ2hlY2tib3hcbiAgLmlkcy1kYXRhLWdyaWQtY2hlY2tib3gtY29udGFpbmVyIHtcbiAgICBjdXJzb3I6IHZhcigtLWlkcy1jdXJzb3ItcG9pbnRlcik7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC8vIENoZWNrYm94IGFsaWdubWVudHNcbiAgLmlkcy1kYXRhLWdyaWQtY2VsbC5hbGlnbi1sZWZ0IHtcbiAgICAuaWRzLWRhdGEtZ3JpZC10cmVlLWNvbnRhaW5lcixcbiAgICAuaWRzLWRhdGEtZ3JpZC1jaGVja2JveC1jb250YWluZXIge1xuICAgICAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgICB9XG4gIH1cblxuICAuaWRzLWRhdGEtZ3JpZC1jZWxsLmFsaWduLWNlbnRlciB7XG4gICAgLmlkcy1kYXRhLWdyaWQtY2hlY2tib3gtY29udGFpbmVyIHtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cbiAgfVxuXG4gIC5pZHMtZGF0YS1ncmlkLWNlbGwuYWxpZ24tcmlnaHQge1xuICAgIC5pZHMtZGF0YS1ncmlkLWNoZWNrYm94LWNvbnRhaW5lciB7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGVuZDtcbiAgICB9XG4gIH1cblxuICAuaWRzLWRhdGEtZ3JpZC1jaGVja2JveCB7XG4gICAgQGluY2x1ZGUgY2hlY2tib3gtdW5jaGVja2VkKCk7XG5cbiAgICAmLmVkaXRhYmxlIHtcbiAgICAgIGN1cnNvcjogdmFyKC0taWRzLWN1cnNvci1wb2ludGVyKTtcbiAgICB9XG5cbiAgICBib3JkZXItY29sb3I6IHZhcigtLWlkcy1kYXRhLWdyaWQtY2VsbC1jaGVja2JveC1jb2xvci1ib3JkZXIpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG4gICAgdG9wOiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG5cbiAgICAmLmRpc2FibGVkIHtcbiAgICAgIEBpbmNsdWRlIGNoZWNrYm94LWRpc2FibGVkLXVuY2hlY2tlZCgpO1xuXG4gICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgfVxuXG4gICAgJi5jaGVja2VkIHtcbiAgICAgIEBpbmNsdWRlIGNoZWNrYm94LWNoZWNrZWQoKTtcblxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBAaW5jbHVkZSBjaGVja2JveC1jaGVja2VkLWFmdGVyKCk7XG5cbiAgICAgICAgYW5pbWF0aW9uOiBub25lO1xuICAgICAgfVxuXG4gICAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgQGluY2x1ZGUgY2hlY2tib3gtZGlzYWJsZWQtY2hlY2tlZCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgICYuaW5kZXRlcm1pbmF0ZSB7XG4gICAgICBAaW5jbHVkZSBjaGVja2JveC1pbmRldGVybWluYXRlKCk7XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1hZnRlcigpO1xuXG4gICAgICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTZWxlY3Rpb24gUmFkaW9cbiAgLmlkcy1kYXRhLWdyaWQtcmFkaW8tY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLmlkcy1kYXRhLWdyaWQtcmFkaW8ge1xuICAgIEBpbmNsdWRlIHJhZGlvLXVuY2hlY2tlZCgpO1xuXG4gICAgY3Vyc29yOiB2YXIoLS1pZHMtY3Vyc29yLXBvaW50ZXIpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG4gICAgdG9wOiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBAaW5jbHVkZSByYWRpby11bmNoZWNrZWQtYWZ0ZXIoKTtcbiAgICB9XG5cbiAgICAmLmRpc2FibGVkIHtcbiAgICAgIEBpbmNsdWRlIHJhZGlvLWRpc2FibGVkLXVuY2hlY2tlZCgpO1xuICAgIH1cblxuICAgICYuY2hlY2tlZCB7XG4gICAgICBAaW5jbHVkZSByYWRpby1jaGVja2VkKCk7XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgcmFkaW8tY2hlY2tlZC1hZnRlcigpO1xuICAgICAgfVxuXG4gICAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgQGluY2x1ZGUgcmFkaW8tZGlzYWJsZWQtY2hlY2tlZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFRyZWUgR3JpZFxuICAuaWRzLWRhdGEtZ3JpZC1jZWxsIC5pZHMtZGF0YS1ncmlkLXRyZWUtY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIGlkcy1idXR0b24gKyAuaWRzLWRhdGEtZ3JpZC10cmVlLWZpZWxkLWNvbnRhaW5lciAudGV4dC1lbGxpcHNpcyB7XG4gICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG4gICAgfVxuXG4gICAgaWRzLWJ1dHRvbiB7XG4gICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogdmFyKC0taWRzLXNwYWNlLTJ4cyk7XG4gICAgICBwYWRkaW5nLWlubGluZS1lbmQ6IHZhcigtLWlkcy1zcGFjZS1ub25lKTtcbiAgICB9XG5cbiAgICBpZHMtYnV0dG9uLmV4cGFuZC1idXR0b24ge1xuICAgICAgLS1pZHMtYnV0dG9uLXRlcnRpYXJ5LWNvbG9yLWJhY2tncm91bmQtaG92ZXI6IHZhcigtLWlkcy1jb2xvci10cmFuc3BhcmVudCk7XG4gICAgICAtLWlkcy1idXR0b24tdGVydGlhcnktY29sb3ItYm9yZGVyLWhvdmVyOiB2YXIoLS1pZHMtY29sb3ItdHJhbnNwYXJlbnQpO1xuICAgICAgLS1pZHMtYnV0dG9uLXRlcnRpYXJ5LWNvbG9yLWJhY2tncm91bmQtcHJlc3NlZDogdmFyKC0taWRzLWNvbG9yLXRyYW5zcGFyZW50KTtcbiAgICAgIC0taWRzLWJ1dHRvbi10ZXJ0aWFyeS1jb2xvci1ib3JkZXItcHJlc3NlZDogdmFyKC0taWRzLWNvbG9yLXRyYW5zcGFyZW50KTtcbiAgICB9XG5cbiAgICAudGV4dC1lbGxpcHNpcyB7XG4gICAgICBpZHMtaHlwZXJsaW5rIHtcbiAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0taWRzLXNwYWNlLW5vbmUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5pZHMtZGF0YS1ncmlkLWNlbGwgLmlkcy1kYXRhLWdyaWQtdHJlZS1maWVsZC1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1ncmlkO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIE1hcHMgdXNlZCBmb3IgYWx0ZXJpbmcgYWxpZ25tZW50cyBvZiBlZGl0YWJsZSBncmlkIGNlbGxzIGluIGRpZmZlcmVudCBzY2VuYXJpb3MuXG4gIC8vIFRoZXNlIHJ1bGVzIGFyZSBiYXNlZCBvbiByb3ctaGVpZ2h0LCB3aGljaCBpcyBkZWZpbmVkIGF0IHRoZSBgLmlkcy1kYXRhLWdyaWRgIGVsZW1lbnQgbGV2ZWwuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgJHJvdy1oZWlnaHQtaW5saW5lLXRyZWUtZ3JpZC1idXR0b24td2lkdGhzOiAoXG4gICAgJ3h4cyc6IDMwLFxuICAgICd4cyc6IDMyLFxuICAgICdzbSc6IDM0LFxuICAgICdtZCc6IDQwLFxuICAgICdsZyc6IDQwXG4gICk7XG5cbiAgJHJvdy1oZWlnaHQtcGFkZGluZy1vZmZzZXRzOiAoXG4gICAgJ3h4cyc6IDEyLFxuICAgICd4cyc6IDEwLFxuICAgICdzbSc6IDgsXG4gICAgJ21kJzogMyxcbiAgICAnbGcnOiAzXG4gICk7XG5cbiAgJHJvdy1oZWlnaHQtZGlydHktaW5kaWNhdG9yLW9mZnNldHM6IChcbiAgICAneHhzJzogMSxcbiAgICAneHMnOiAxLFxuICAgICdzbSc6IDEsXG4gICAgJ21kJzogMixcbiAgICAnbGcnOiAyXG4gICk7XG5cbiAgJHJvdy1oZWlnaHQtaW5saW5lLWRpcnR5LWluZGljYXRvci1vZmZzZXRzOiAoXG4gICAgJ3h4cyc6IDMsXG4gICAgJ3hzJzogNCxcbiAgICAnc20nOiA1LFxuICAgICdtZCc6IDYsXG4gICAgJ2xnJzogNlxuICApO1xuXG4gICRyb3ctaGVpZ2h0LWluZGVudHM6IChcbiAgICAneHhzJzogMTIsXG4gICAgJ3hzJzogMTMsXG4gICAgJ3NtJzogMTUsXG4gICAgJ21kJzogMTcsXG4gICAgJ2xnJzogMTdcbiAgKTtcblxuICAkcm93LWhlaWdodC1vdXRsaW5lLXBhZGRpbmc6IChcbiAgICAneHhzJzogMSxcbiAgICAneHMnOiAyLFxuICAgICdzbSc6IDMsXG4gICAgJ21kJzogNCxcbiAgICAnbGcnOiA0XG4gICk7XG5cbiAgJHJvdy1oZWlnaHQtb3V0bGluZS1vZmZzZXRzOiAoXG4gICAgJ3h4cyc6IDEsXG4gICAgJ3hzJzogMixcbiAgICAnc20nOiA1LFxuICAgICdtZCc6IDgsXG4gICAgJ2xnJzogMTJcbiAgKTtcblxuICBAZWFjaCAkcm93SGVpZ2h0LCAkb2Zmc2V0IGluICRyb3ctaGVpZ2h0LXBhZGRpbmctb2Zmc2V0cyB7XG4gICAgLy8gVGhlc2UgdmFsdWVzIGFyZSBkaWZmZXJlbnQgZm9yIGVhY2ggUm93IEhlaWdodFxuICAgICRidXR0b24td2lkdGg6IG1hcC5nZXQoJHJvdy1oZWlnaHQtaW5saW5lLXRyZWUtZ3JpZC1idXR0b24td2lkdGhzLCAkcm93SGVpZ2h0KTtcbiAgICAkaW5kZW50OiBtYXAuZ2V0KCRyb3ctaGVpZ2h0LWluZGVudHMsICRyb3dIZWlnaHQpO1xuICAgICRkaXJ0eS1pbmRpY2F0b3Itb2Zmc2V0OiBtYXAuZ2V0KCRyb3ctaGVpZ2h0LWRpcnR5LWluZGljYXRvci1vZmZzZXRzLCAkcm93SGVpZ2h0KTtcbiAgICAkaW5saW5lLWRpcnR5LWluZGljYXRvci1vZmZzZXQ6IG1hcC5nZXQoJHJvdy1oZWlnaHQtaW5saW5lLWRpcnR5LWluZGljYXRvci1vZmZzZXRzLCAkcm93SGVpZ2h0KTtcbiAgICAkb3V0bGluZS1vZmZzZXQ6IG1hcC5nZXQoJHJvdy1oZWlnaHQtb3V0bGluZS1vZmZzZXRzLCAkcm93SGVpZ2h0KTtcbiAgICAkb3V0bGluZS1wYWRkaW5nOiBtYXAuZ2V0KCRyb3ctaGVpZ2h0LW91dGxpbmUtcGFkZGluZywgJHJvd0hlaWdodCk7XG5cbiAgICAmW2RhdGEtcm93LWhlaWdodD0nI3skcm93SGVpZ2h0fSddIHtcbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgLy8gVG9wLWxldmVsIGdyaWQgYWxpZ25tZW50cyB0aGF0IGRlcGVuZCBzb2xlbHkgb24gcm93IGhlaWdodFxuICAgICAgLmlkcy1kYXRhLWdyaWQtY2VsbCB7XG4gICAgICAgICYuaXMtZGlydHkge1xuICAgICAgICAgICY6bm90KC5pcy1pbmxpbmUpIHtcbiAgICAgICAgICAgICYuZm9ybWF0dGVyLXRleHQge1xuICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0OiAjeyRkaXJ0eS1pbmRpY2F0b3Itb2Zmc2V0fXB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6ICN7JGRpcnR5LWluZGljYXRvci1vZmZzZXR9cHg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmLmlzLWlubGluZSB7XG4gICAgICAgICAgICAmLmZvcm1hdHRlci10ZXh0IHtcbiAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBpbnNldC1ibG9jay1zdGFydDogI3skaW5saW5lLWRpcnR5LWluZGljYXRvci1vZmZzZXR9cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogI3skaW5saW5lLWRpcnR5LWluZGljYXRvci1vZmZzZXR9cHg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZWZpbmVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgXCJpbmxpbmUtZWRpdFwiIHN0eWxlJ3Mgb3V0bGluZVxuICAgICAgICAmLmlzLWVkaXRhYmxlLmlzLWlubGluZSB7XG4gICAgICAgICAgJjpub3QoLmZvcm1hdHRlci10cmVlKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBpZHMtZGF0YS1ncmlkLWlubGluZS1lZGl0YWJsZS1vdXRsaW5lKCRvdXRsaW5lLXBhZGRpbmcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgICYuZm9ybWF0dGVyLXRyZWUge1xuICAgICAgICAgICAgLnRleHQtZWxsaXBzaXMge1xuICAgICAgICAgICAgICBAaW5jbHVkZSBpZHMtZGF0YS1ncmlkLWlubGluZS1lZGl0YWJsZS1vdXRsaW5lKCRvdXRsaW5lLXBhZGRpbmcpO1xuXG4gICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAjeyRvdXRsaW5lLW9mZnNldCArIDR9cHgpO1xuXG4gICAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogLSN7JG91dGxpbmUtb2Zmc2V0fXB4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbW92ZSBzdGFydCBwYWRkaW5nIGZyb20gdHJlZS1ncmlkLWNvbnRhaW5lZCBgLnRleHQtZWxsaXBzaXNgIGVsZW1lbnRzXG4gICAgICAuaWRzLWRhdGEtZ3JpZC10cmVlLWZpZWxkLWNvbnRhaW5lciAudGV4dC1lbGxpcHNpcyB7XG4gICAgICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG4gICAgICB9XG5cbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgLy8gRXhwYW5kYWJsZSBncmlkL3RyZWUgZ3JpZCBuZXN0ZWQgYWxpZ25tZW50IHJ1bGVzXG4gICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIDgge1xuICAgICAgICBbYXJpYS1sZXZlbD0nI3skaX0nXSAuaWRzLWRhdGEtZ3JpZC1jZWxsIHtcbiAgICAgICAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAgICAgICAuaWRzLWRhdGEtZ3JpZC10cmVlLWZpZWxkLWNvbnRhaW5lciB7XG4gICAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6ICN7JGJ1dHRvbi13aWR0aH1weDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWRzLWJ1dHRvbiB7XG4gICAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHZhcigtLWlkcy1zcGFjZS1ub25lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWRzLWJ1dHRvbiArIC5pZHMtZGF0YS1ncmlkLXRyZWUtZmllbGQtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0taWRzLXNwYWNlLW5vbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgLmlkcy1kYXRhLWdyaWQtdHJlZS1maWVsZC1jb250YWluZXIge1xuICAgICAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAjeyRidXR0b24td2lkdGggKyAoJGluZGVudCAqICgkaSAtIDEpKSArICgkb2Zmc2V0KX1weDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWRzLWJ1dHRvbiB7XG4gICAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6ICN7KCRpbmRlbnQgKiAoJGkgLSAxKSkgKyAkb2Zmc2V0fXB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZHMtYnV0dG9uICsgLmlkcy1kYXRhLWdyaWQtdHJlZS1maWVsZC1jb250YWluZXIge1xuICAgICAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgICAgLy8gRGlydHktdHJhY2tlciBydWxlcyBkZXBlbmRlbnQgb24gYGFyaWEtbGV2ZWxgIG5lc3RpbmdcbiAgICAgICAgICAmLmlzLWRpcnR5IHtcbiAgICAgICAgICAgICYuaXMtaW5saW5lIHtcbiAgICAgICAgICAgICAgLmlkcy1kYXRhLWdyaWQtdHJlZS1maWVsZC1jb250YWluZXI6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6ICN7JGlubGluZS1kaXJ0eS1pbmRpY2F0b3Itb2Zmc2V0fXB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6ICN7JGlubGluZS1kaXJ0eS1pbmRpY2F0b3Itb2Zmc2V0fXB4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRml4IGZvciB4eHMgcm93IGhlaWdodCB0cmVlIGZvcm1hdHRlciBjZWxscyB3aXRoIGV4cGFuZCBpY29uc1xuICAmW2RhdGEtcm93LWhlaWdodD0neHhzJ10ge1xuICAgIC5pZHMtZGF0YS1ncmlkLWNlbGwuaXMtZWRpdGFibGUuaXMtaW5saW5lLmZvcm1hdHRlci10cmVlIHtcbiAgICAgIC50ZXh0LWVsbGlwc2lzOjphZnRlciB7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAzcHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIExpc3QgU3R5bGUgRmVhdHVyZVxuICAmLmlzLWxpc3Qtc3R5bGUge1xuICAgIGJvcmRlci13aWR0aDogdmFyKC0taWRzLWJvcmRlci13aWR0aC1ub25lKTtcbiAgfVxuXG4gIC8vIFVzZWQgZm9yIHJvdyBzdGFydFxuICAmLndhaXRpbmctbG9hZCB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAuaWRzLWRhdGEtZ3JpZC1ib2R5IHtcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB9XG4gIH1cbn1cblxuLy8gVXNlZCBmb3IgRnJvemVuIENvbHVtbnNcbi5pZHMtZGF0YS1ncmlkLWJvZHkge1xuICBtaW4td2lkdGg6IGZpdC1jb250ZW50O1xufVxuXG4vLyBTdGFuZGFsb25lIENzcyBCb3JkZXJzXG50YWJsZS5pZHMtZGF0YS1ncmlkIHtcbiAgZGlzcGxheTogdGFibGU7XG4gIG91dGxpbmU6IDFweCBzb2xpZCB2YXIoLS1pZHMtZGF0YS1ncmlkLWNlbGwtY29sb3ItYm9yZGVyKTtcbiAgb3V0bGluZS1vZmZzZXQ6IC0xcHg7XG59XG5cbi8vIEVtcHR5IE1lc3NhZ2Vcbi5pZHMtZGF0YS1ncmlkLXdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLmlkcy1kYXRhLWdyaWQtdG9vbGJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW46IDZweCB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGVuZDtcbiAgfVxufVxuXG5pZHMtZW1wdHktbWVzc2FnZTpub3QoW2hpZGRlbl0pLFxuOjpzbG90dGVkKGlkcy1lbXB0eS1tZXNzYWdlOm5vdChbaGlkZGVuXSkpIHtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdG9wOiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBtYXJnaW4tdG9wOiB2YXIoLS1pZHMtc3BhY2Utc20pO1xufVxuXG4vLyBBZGp1c3QgZm9yIGZpbHRlciByb3dcbmlkcy1lbXB0eS1tZXNzYWdlLmhhcy1maWx0ZXItcm93Om5vdChbaGlkZGVuXSkge1xuICAmLmZpbHRlci1yb3ctc2l6ZS14eHMge1xuICAgIG1hcmdpbi1ibG9jay1zdGFydDogMjRweDtcbiAgfVxuXG4gICYuZmlsdGVyLXJvdy1zaXplLXhzIHtcbiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IDM0cHg7XG4gIH1cblxuICAmLmZpbHRlci1yb3ctc2l6ZS1zbSB7XG4gICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAzNHB4O1xuICB9XG5cbiAgJi5maWx0ZXItcm93LXNpemUtbWQge1xuICAgIG1hcmdpbi1ibG9jay1zdGFydDogMzRweDtcbiAgfVxuXG4gICYuZmlsdGVyLXJvdy1zaXplLWxnIHtcbiAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IDI2cHg7XG4gIH1cblxuICAmLmhhcy1wYWdlciB7XG4gICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAxNHB4O1xuICB9XG59XG5cbjo6c2xvdHRlZChpZHMtZW1wdHktbWVzc2FnZS5oYXMtZmlsdGVyLXJvdzpub3QoW2hpZGRlbl0pKSB7XG4gIG1hcmdpbi1ibG9jay1zdGFydDogMTRweDtcbn1cblxuLmhhcy1lbXB0eS1tZXNzYWdlIC5pZHMtZGF0YS1ncmlkIHtcbiAgbWluLWhlaWdodDogdmFyKC0taWRzLWRhdGEtZ3JpZC1oZWlnaHQtbWluKTtcbn1cblxuLy8gTG9hZGluZyBJbmRpY2F0b3Jcbmlkcy1sb2FkaW5nLWluZGljYXRvciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRvcDogdmFyKC0taWRzLXNwYWNlLW5vbmUpO1xuXG4gICZbc3RvcHBlZF0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuOmhvc3QoOm5vdChbZGlzYWJsZS1yb3ctaGlnaGxpZ2h0XSkpIGlkcy1kYXRhLWdyaWQtcm93OmhvdmVyOm5vdChbcGFydCo9J3Jvdy0nXSk6bm90KC5zZWxlY3RlZCkge1xuICBpZHMtZGF0YS1ncmlkLWNlbGwsXG4gIGlkcy1kYXRhLWdyaWQtY2VsbC5pcy1yZWFkb25seTpub3QoLmV4Y2x1ZGUtcmVhZG9ubHktc3R5bGUpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pZHMtZGF0YS1ncmlkLXJvdy1jb2xvci1iYWNrZ3JvdW5kLWhvdmVyKTtcbiAgfVxuXG4gIGlkcy1kYXRhLWdyaWQtY2VsbC5pcy1pbnZhbGlkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pZHMtZGF0YS1ncmlkLWNlbGwtY29sb3ItYmFja2dyb3VuZC1lcnJvci1ob3Zlcik7XG4gIH1cblxuICAuaWRzLWRhdGEtZ3JpZC1jZWxsLmZyb3plbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taWRzLWRhdGEtZ3JpZC1yb3ctY29sb3ItYmFja2dyb3VuZC1ob3Zlcik7XG4gIH1cbn1cblxuI2RhdGFncmlkLW1vZGFsIHtcbiAgLS1pZHMtbW9kYWwtY29udGVudC1wYWRkaW5nOiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG4gIC0taWRzLW1vZGFsLWhlYWRlci1wYWRkaW5nOiB2YXIoLS1pZHMtc3BhY2Utc20pIHZhcigtLWlkcy1zcGFjZS1zbSkgdmFyKC0taWRzLXNwYWNlLXhzKSB2YXIoLS1pZHMtc3BhY2Utc20pO1xuICAtLWlkcy1wb3B1cC1maXQtaGVpZ2h0OiA0MDBweDtcblxuICBpZHMtc3dhcHBhYmxlLWl0ZW0ge1xuICAgIC0taWRzLXN3YXBwYWJsZS1pdGVtLWNvbG9yLWJhY2tncm91bmQtc2VsZWN0ZWQ6IHZhcigtLWlkcy1jb2xvci1hY2NlbnQtYmx1ZS13ZWFrZXN0KTtcbiAgICAtLWlkcy1zd2FwcGFibGUtaXRlbS1jb2xvci10ZXh0LXNlbGVjdGVkOiB2YXIoLS1pZHMtY29sb3ItZm9yZWdyb3VuZC1kZWZhdWx0LWRlZmF1bHQpO1xuXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBoZWlnaHQ6IHZhcigtLWlkcy1kYXRhLWdyaWQtbW9kYWwtcm93LWhlaWdodCk7XG4gIH1cblxuICAjZGF0YWdyaWQtbW9kYWwtdGl0bGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0b3A6IGNhbGModmFyKC0taWRzLXNwYWNlLTA0KSAqIC0xKTtcbiAgfVxuXG4gIGlkcy1zZWFyY2gtZmllbGQge1xuICAgIC0taWRzLWlucHV0LWNvbG9yLWJhY2tncm91bmQtZGVmYXVsdDogdmFyKC0taWRzLWNvbG9yLWFjY2VudC1uZXV0cmFsLXdlYWtlc3QpO1xuICAgIC0taWRzLXNlYXJjaC1maWVsZC1jb2xvci1iYWNrZ3JvdW5kLWRlZmF1bHQ6IHZhcigtLWlkcy1jb2xvci1hY2NlbnQtbmV1dHJhbC13ZWFrZXN0KTtcbiAgICAtLWlkcy1pbnB1dC1jb2xvci1ib3JkZXItZGVmYXVsdDogdmFyKC0taWRzLWNvbG9yLWFjY2VudC1uZXV0cmFsLXdlYWspO1xuICAgIC0taWRzLWlucHV0LWNvbG9yLWJvcmRlci1ob3ZlcjogdmFyKC0taWRzLWNvbG9yLWFjY2VudC1uZXV0cmFsLXdlYWspO1xuICAgIC0taWRzLWlucHV0LWNvbG9yLWJvcmRlci1mb2N1czogdmFyKC0taWRzLWNvbG9yLWFjY2VudC1uZXV0cmFsLXdlYWspO1xuICAgIC0taWRzLWlucHV0LWNvbG9yLWJvcmRlci1zaGFkb3c6IG5vbmU7XG4gICAgLS1pZHMtc2VhcmNoLWZpZWxkLWJvcmRlci1yYWRpdXM6IHZhcigtLWlkcy1ib3JkZXItcmFkaXVzLW5vbmUpO1xuICAgIC0taWRzLXNlYXJjaC1maWVsZC1ib3JkZXItd2lkdGg6IHZhcigtLWlkcy1ib3JkZXItd2lkdGgtc20pIHZhcigtLWlkcy1ib3JkZXItd2lkdGgtbm9uZSk7XG5cbiAgICBtYXJnaW4tYm90dG9tOiAtOHB4O1xuICAgIG1hcmdpbi10b3A6IGNhbGModmFyKC0taWRzLXNwYWNlLTA4KSAqIC0xKTtcbiAgICBtaW4td2lkdGg6IDMzMHB4O1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgdG9wOiB2YXIoLS1pZHMtc3BhY2Utbm9uZSk7XG4gICAgei1pbmRleDogMTtcbiAgfVxuXG4gIGlkcy10ZXh0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIGlkcy1zd2l0Y2gge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0b3A6IHZhcigtLWlkcy1zcGFjZS0zeHMpO1xuICB9XG5cbiAgaWRzLXN3YXBwYWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAuZGF0YWdyaWQtbW9kYWwtY29sdW1uLWxpc3Qge1xuICAgIC0taWRzLW1vZGFsLWNvbHVtbi1saXN0LWhlaWdodDogY2FsYygxMDAlIC0gMTRweCk7XG5cbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBtYXgtaGVpZ2h0OiB2YXIoLS1pZHMtbW9kYWwtY29sdW1uLWxpc3QtaGVpZ2h0KTtcbiAgfVxuXG59XG5cbi5zZWxlY3Rpb24tYm9yZGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1pZHMtYnV0dG9uLXByaW1hcnktY29sb3ItYmFja2dyb3VuZC1kZWZhdWx0KTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIHotaW5kZXg6IDI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjA1cyBlYXNlO1xufVxuIiwiLy8gQnJlYWtwb2ludHMgLSB0aGlzIGNhbnQgYmUgdG9rZW5zXG4kYnJlYWtwb2ludC14eGw6IDE0NDBweDtcbiRicmVha3BvaW50LXhsOiAxMjgwcHg7XG4kYnJlYWtwb2ludC1sZzogMTAyNHB4O1xuJGJyZWFrcG9pbnQtbWQ6IDg0MHB4O1xuJGJyZWFrcG9pbnQtc206IDYwMHB4O1xuJGJyZWFrcG9pbnQteHM6IDMyMHB4O1xuXG4vLyBTZXRzIFRleHQgQW50aWFsaWFzaW5nXG5AbWl4aW4gYW50aWFsaWFzZWQge1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuLy8gdmVuZG9yIHByZWZpeGVkIHRyYW5zaXRpb25zIGZvciByZWd1bGFyIGF0dHJpYnV0ZXMgKG5vbi12ZW5kb3IgcHJlZml4ZWQpXG5AbWl4aW4gdHJhbnNpdGlvbigkdHJhbnNpdGlvbnMtbGlzdC4uLikge1xuICBAZWFjaCAkcHJlZml4IGluICRwcmVmaXhlcyB7XG4gICAgI3skcHJlZml4fXRyYW5zaXRpb246ICR0cmFuc2l0aW9ucy1saXN0O1xuICB9XG59XG5cbi8vIG1ha2UgdGhlIHRleHQgaW52aXNpYmxlIHZpc3VhbGx5IGJ1dCByZWFkYWJsZSBieSBzY3JlZW4gcmVhZGVyc1xuQG1peGluIGF1ZGlibGUoKSB7XG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XG4gIGhlaWdodDogMDtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIG1pbi1oZWlnaHQ6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbn1cbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2VuZXJhdGVzIGEgcHNldWRvLWVsZW1lbnQgaW4gdGhlIGZvcm0gb2YgYW4gXCJvdXRsaW5lXCJcbi8vIGluIGEgY2VsbCB0aGF0IHJlcHJlc2VudHMgdGhlIFwiaW5saW5lLCBlZGl0YWJsZVwiIHN0YXRlLlxuQG1peGluIGlkcy1kYXRhLWdyaWQtaW5saW5lLWVkaXRhYmxlLW91dGxpbmUoJG1hcmdpbikge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgJjo6YWZ0ZXIge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlkcy1pbnB1dC1jb2xvci1ib3JkZXItZGVmYXVsdCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0taWRzLWJvcmRlci1yYWRpdXMtMnhzKTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIG1hcmdpbjogI3skbWFyZ2lufXB4O1xuICAgIGhlaWdodDogY2FsYygxMDAlIC0gI3skbWFyZ2luICogMn1weCk7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAjeyRtYXJnaW4gKiAyfXB4KTtcbiAgfVxufVxuIl19 */`;
|
|
83208
83207
|
|
|
83209
83208
|
// src/components/ids-data-grid/ids-data-grid-header.ts
|
|
83210
|
-
var _columns, _IdsDataGridHeader_instances, attachEventHandlers_fn38, attachSortHandler_fn, attachSelectionHandler_fn, attachResizeHandlers_fn, attachReorderHandlers_fn, attachFilterBtnHandler_fn;
|
|
83209
|
+
var _activeColumn, _columns, _IdsDataGridHeader_instances, attachEventHandlers_fn38, attachSortHandler_fn, attachSelectionHandler_fn, attachResizeHandlers_fn, attachReorderHandlers_fn, attachFilterBtnHandler_fn, attachFocusHandlers_fn;
|
|
83211
83210
|
var IdsDataGridHeader = class extends ids_events_mixin_default(IdsElement) {
|
|
83212
83211
|
constructor() {
|
|
83213
83212
|
super({ noShadowRoot: true });
|
|
@@ -83219,6 +83218,7 @@ ids-loading-indicator[stopped] {
|
|
|
83219
83218
|
* Tracks the state of the header expander
|
|
83220
83219
|
*/
|
|
83221
83220
|
__publicField(this, "isHeaderExpanderCollapsed", false);
|
|
83221
|
+
__privateAdd(this, _activeColumn, -1);
|
|
83222
83222
|
/** @see IdsDataGridHeader.columns */
|
|
83223
83223
|
__privateAdd(this, _columns);
|
|
83224
83224
|
this.state = {
|
|
@@ -83241,6 +83241,13 @@ ids-loading-indicator[stopped] {
|
|
|
83241
83241
|
get expanderIcons() {
|
|
83242
83242
|
return [...this.querySelectorAll("ids-icon.header-expander")];
|
|
83243
83243
|
}
|
|
83244
|
+
/**
|
|
83245
|
+
* Get the index of the active column.
|
|
83246
|
+
* @returns {number} the index of the active column. Returns -1 if there are none.
|
|
83247
|
+
*/
|
|
83248
|
+
get activeColumn() {
|
|
83249
|
+
return __privateGet(this, _activeColumn);
|
|
83250
|
+
}
|
|
83244
83251
|
/* Returns all the columns in the header */
|
|
83245
83252
|
get columns() {
|
|
83246
83253
|
if (!__privateGet(this, _columns)?.length) {
|
|
@@ -83542,6 +83549,7 @@ ids-loading-indicator[stopped] {
|
|
|
83542
83549
|
return columnGroupHtml;
|
|
83543
83550
|
}
|
|
83544
83551
|
};
|
|
83552
|
+
_activeColumn = new WeakMap();
|
|
83545
83553
|
_columns = new WeakMap();
|
|
83546
83554
|
_IdsDataGridHeader_instances = new WeakSet();
|
|
83547
83555
|
/**
|
|
@@ -83554,6 +83562,7 @@ ids-loading-indicator[stopped] {
|
|
|
83554
83562
|
__privateMethod(this, _IdsDataGridHeader_instances, attachResizeHandlers_fn).call(this);
|
|
83555
83563
|
__privateMethod(this, _IdsDataGridHeader_instances, attachReorderHandlers_fn).call(this);
|
|
83556
83564
|
__privateMethod(this, _IdsDataGridHeader_instances, attachFilterBtnHandler_fn).call(this);
|
|
83565
|
+
__privateMethod(this, _IdsDataGridHeader_instances, attachFocusHandlers_fn).call(this);
|
|
83557
83566
|
};
|
|
83558
83567
|
/**
|
|
83559
83568
|
* Attach handlers to sort via clicking the headers
|
|
@@ -83819,6 +83828,22 @@ ids-loading-indicator[stopped] {
|
|
|
83819
83828
|
}
|
|
83820
83829
|
});
|
|
83821
83830
|
};
|
|
83831
|
+
/**
|
|
83832
|
+
* Attach focus handlers to manage keyboard-only focus outlines
|
|
83833
|
+
* @private
|
|
83834
|
+
*/
|
|
83835
|
+
attachFocusHandlers_fn = function() {
|
|
83836
|
+
this.offEvent("focusout", this);
|
|
83837
|
+
this.onEvent("focusout", this, (e) => {
|
|
83838
|
+
const relatedTarget = e.relatedTarget;
|
|
83839
|
+
if (!relatedTarget || relatedTarget?.nodeName === "IDS-DATA-GRID-CELL") __privateSet(this, _activeColumn, -1);
|
|
83840
|
+
});
|
|
83841
|
+
this.offEvent("mousedown.focusin", this);
|
|
83842
|
+
this.onEvent("mousedown.focusin", this, (e) => {
|
|
83843
|
+
const headerCell = e.target.closest(".ids-data-grid-header-cell");
|
|
83844
|
+
__privateSet(this, _activeColumn, parseFloat(headerCell?.getAttribute("aria-colindex") || ""));
|
|
83845
|
+
});
|
|
83846
|
+
};
|
|
83822
83847
|
IdsDataGridHeader = __decorateClass([
|
|
83823
83848
|
customElement("ids-data-grid-header")
|
|
83824
83849
|
], IdsDataGridHeader);
|
|
@@ -84231,6 +84256,16 @@ ids-loading-indicator[stopped] {
|
|
|
84231
84256
|
columnIndex = Math.min(columnIndex, maxColumnIndex);
|
|
84232
84257
|
return cells[columnIndex] ?? null;
|
|
84233
84258
|
}
|
|
84259
|
+
/**
|
|
84260
|
+
* Get the cell HTMLElement by logical column index (accounting for rowspan)
|
|
84261
|
+
* @param {number} logicalColumnIndex the zero-based logical column index
|
|
84262
|
+
* @returns {IdsDataGridCell} html element for cell
|
|
84263
|
+
*/
|
|
84264
|
+
cellByLogicalIndex(logicalColumnIndex) {
|
|
84265
|
+
const columnId = this.dataGrid.visibleColumns[logicalColumnIndex]?.id;
|
|
84266
|
+
if (!columnId) return null;
|
|
84267
|
+
return this.querySelector(`ids-data-grid-cell[aria-colindex="${logicalColumnIndex + 1}"]`) ?? null;
|
|
84268
|
+
}
|
|
84234
84269
|
/**
|
|
84235
84270
|
* Is this row currently expanded
|
|
84236
84271
|
* @returns {boolean} true if expanded
|
|
@@ -87902,7 +87937,7 @@ ids-icon {
|
|
|
87902
87937
|
)
|
|
87903
87938
|
)
|
|
87904
87939
|
);
|
|
87905
|
-
var _activeCellCache, _editedCellsCache, _startSelectionCell, _endSelectionCell, _currentScroll, _afterSetActiveCellFn, _header, _IdsDataGrid_instances, redrawBodyTemplate_fn, _lastSelectedRow, _initiallySelectedRow, _lastShiftedRow, resetLastSelectedRow_fn, resetInitiallySelectedRow_fn, resetLastShiftedRow_fn, toggleShiftSelectionInBetween_fn, getSelection_fn, attachEventHandlers_fn41, attachDragSelection_fn, createSelectionBorder_fn, updateSelectionBorder_fn, attachCopyPasteCellHandlers_fn, attachKeyboardListeners_fn9, setColumnWidths_fn, setFrozenColumnWidth_fn, calcMaxContentWidth_fn, reapplyDirtyStates_fn, setColumnGroupsWidth_fn, appendMissingRows_fn, _virtualScrollMaxRowsInDom, attachScrollEvents_fn, attachVirtualScrollEvent_fn, calculateColumnsOnscreen_fn, detachScrollEvents_fn, syncTreeHiddenStates_fn, handleTreeRowExpandCollapse_fn, recycleAllTreeRows_fn, handleVirtualScroll_fn, _customScrollEventCache, triggerCustomScrollEvent_fn, positionVirtualScrollWindow_fn, restoreScrollPosition_fn, scrollTo_fn, scrollToTreeRow_fn, scrollRowIntoView_fn, setVirtualScrollPaddingBottom_fn, scrollTreeRowIntoView_fn, recycleTreeRowsDown_fn, recycleTreeRowsUp_fn, recycleAllRows_fn, recycleTopRowsDown_fn, recycleBottomRowsUp_fn, saveCellOriginalValue_fn, updateCellDirtyState_fn, findParentRow_fn, findRootRow_fn, updateRowCount_fn, applyAutoFit_fn, removeAttachedMenus_fn, filterColumnList_fn, handleCopy_fn, handlePaste_fn, saveEditedCellsBeforeScroll_fn, restoreActiveCellAfterScroll_fn, restoreEditedCellsAfterScroll_fn;
|
|
87940
|
+
var _activeCellCache, _editedCellsCache, _startSelectionCell, _endSelectionCell, _currentScroll, _afterSetActiveCellFn, _header, _IdsDataGrid_instances, redrawBodyTemplate_fn, _lastSelectedRow, _initiallySelectedRow, _lastShiftedRow, resetLastSelectedRow_fn, resetInitiallySelectedRow_fn, resetLastShiftedRow_fn, toggleShiftSelectionInBetween_fn, getSelection_fn, attachEventHandlers_fn41, attachDragSelection_fn, createSelectionBorder_fn, updateSelectionBorder_fn, attachCopyPasteCellHandlers_fn, attachKeyboardListeners_fn9, setColumnWidths_fn, setFrozenColumnWidth_fn, calcMaxContentWidth_fn, reapplyDirtyStates_fn, setColumnGroupsWidth_fn, appendMissingRows_fn, _virtualScrollMaxRowsInDom, attachScrollEvents_fn, attachVirtualScrollEvent_fn, calculateColumnsOnscreen_fn, detachScrollEvents_fn, syncTreeHiddenStates_fn, handleTreeRowExpandCollapse_fn, recycleAllTreeRows_fn, handleVirtualScroll_fn, _customScrollEventCache, triggerCustomScrollEvent_fn, positionVirtualScrollWindow_fn, restoreScrollPosition_fn, scrollTo_fn, scrollToTreeRow_fn, scrollRowIntoView_fn, getVisibleRowIndex_fn, findNextVisibleRow_fn, scrollToActivateRow_fn, ensureRowInViewport_fn, setVirtualScrollPaddingBottom_fn, scrollTreeRowIntoView_fn, recycleTreeRowsDown_fn, recycleTreeRowsUp_fn, recycleAllRows_fn, recycleTopRowsDown_fn, recycleBottomRowsUp_fn, saveCellOriginalValue_fn, updateCellDirtyState_fn, findParentRow_fn, findRootRow_fn, updateRowCount_fn, applyAutoFit_fn, removeAttachedMenus_fn, filterColumnList_fn, handleCopy_fn, handlePaste_fn, saveEditedCellsBeforeScroll_fn, restoreActiveCellAfterScroll_fn, restoreEditedCellsAfterScroll_fn;
|
|
87906
87941
|
var IdsDataGrid = class extends Base68 {
|
|
87907
87942
|
constructor() {
|
|
87908
87943
|
super();
|
|
@@ -88869,7 +88904,8 @@ ids-icon {
|
|
|
88869
88904
|
if (this.activeCellEditor) {
|
|
88870
88905
|
const rowIndex = this.activeCell.row;
|
|
88871
88906
|
const cell = this.activeCell.cell;
|
|
88872
|
-
|
|
88907
|
+
const activeNode = this.activeCell.node;
|
|
88908
|
+
this.updateActiveCellCache(rowIndex, cell, __privateGet(this, _activeCellCache)?.currentValue || "", activeNode?.isEditing);
|
|
88873
88909
|
}
|
|
88874
88910
|
if (__privateGet(this, _activeCellCache)) {
|
|
88875
88911
|
__privateGet(this, _activeCellCache).shouldReinstateCell = true;
|
|
@@ -88879,6 +88915,7 @@ ids-icon {
|
|
|
88879
88915
|
this.resetCache();
|
|
88880
88916
|
if (this.treeGrid) {
|
|
88881
88917
|
__privateMethod(this, _IdsDataGrid_instances, recycleAllTreeRows_fn).call(this, Math.floor(this.container.scrollTop / this.virtualScrollSettings.ROW_HEIGHT));
|
|
88918
|
+
__privateMethod(this, _IdsDataGrid_instances, restoreActiveCellAfterScroll_fn).call(this);
|
|
88882
88919
|
} else {
|
|
88883
88920
|
__privateMethod(this, _IdsDataGrid_instances, appendMissingRows_fn).call(this);
|
|
88884
88921
|
}
|
|
@@ -88886,6 +88923,82 @@ ids-icon {
|
|
|
88886
88923
|
this.data = this.data.concat(value);
|
|
88887
88924
|
}
|
|
88888
88925
|
}
|
|
88926
|
+
/**
|
|
88927
|
+
* Find a cell by logical position, accounting for rowspan
|
|
88928
|
+
* @param {number} rowIndex the row index
|
|
88929
|
+
* @param {number} columnIndex the logical column index
|
|
88930
|
+
* @returns {IdsDataGridCell | null} the cell at the logical position
|
|
88931
|
+
*/
|
|
88932
|
+
findCellByLogicalPosition(rowIndex, columnIndex) {
|
|
88933
|
+
if (rowIndex < 0 || rowIndex >= this.data.length) return null;
|
|
88934
|
+
if (columnIndex < 0 || columnIndex >= this.visibleColumns.length) return null;
|
|
88935
|
+
if (this.treeGrid && this.data[rowIndex]?.rowHidden) return null;
|
|
88936
|
+
const row = this.rowByIndex(rowIndex);
|
|
88937
|
+
if (!row) return null;
|
|
88938
|
+
const columnId = this.visibleColumns[columnIndex]?.id;
|
|
88939
|
+
if (!columnId) return null;
|
|
88940
|
+
return row.cellByLogicalIndex?.(columnIndex) ?? row.cellByIndex(columnIndex) ?? null;
|
|
88941
|
+
}
|
|
88942
|
+
/**
|
|
88943
|
+
* Find the next navigable cell in a given direction
|
|
88944
|
+
* @param {IdsDataGridCell} currentCell the current cell
|
|
88945
|
+
* @param {IdsDirection} direction the navigation direction
|
|
88946
|
+
* @returns {IdsDataGridCell | null} the next navigable cell
|
|
88947
|
+
*/
|
|
88948
|
+
findNextNavigableCell(currentCell, direction) {
|
|
88949
|
+
const currentRowIndex = currentCell.rowIndex;
|
|
88950
|
+
const currentColumnIndex = currentCell.columnIndex;
|
|
88951
|
+
switch (direction) {
|
|
88952
|
+
case "up" /* Up */: {
|
|
88953
|
+
if (currentRowIndex === 0) return null;
|
|
88954
|
+
for (let targetRowIndex = currentRowIndex - 1; targetRowIndex >= 0; targetRowIndex--) {
|
|
88955
|
+
const cell = this.findCellByLogicalPosition(targetRowIndex, currentColumnIndex);
|
|
88956
|
+
if (cell) return cell;
|
|
88957
|
+
}
|
|
88958
|
+
return null;
|
|
88959
|
+
}
|
|
88960
|
+
case "down" /* Down */: {
|
|
88961
|
+
if (currentRowIndex >= this.data.length - 1) return null;
|
|
88962
|
+
const currentRowData = this.data[currentRowIndex];
|
|
88963
|
+
const columnId = this.visibleColumns[currentColumnIndex]?.id;
|
|
88964
|
+
const currentSpan = currentRowData?.rowspan?.[columnId] || 1;
|
|
88965
|
+
const startRowIndex = currentRowIndex + currentSpan;
|
|
88966
|
+
for (let targetRowIndex = startRowIndex; targetRowIndex < this.data.length; targetRowIndex++) {
|
|
88967
|
+
const cell = this.findCellByLogicalPosition(targetRowIndex, currentColumnIndex);
|
|
88968
|
+
if (cell) return cell;
|
|
88969
|
+
}
|
|
88970
|
+
return null;
|
|
88971
|
+
}
|
|
88972
|
+
case "left" /* Left */: {
|
|
88973
|
+
for (let colIndex = currentColumnIndex - 1; colIndex >= 0; colIndex--) {
|
|
88974
|
+
const cell = this.findCellByLogicalPosition(currentRowIndex, colIndex);
|
|
88975
|
+
if (cell && cell !== currentCell) return cell;
|
|
88976
|
+
}
|
|
88977
|
+
if (currentRowIndex > 0) {
|
|
88978
|
+
for (let colIndex = this.visibleColumns.length - 1; colIndex >= 0; colIndex--) {
|
|
88979
|
+
const cell = this.findCellByLogicalPosition(currentRowIndex - 1, colIndex);
|
|
88980
|
+
if (cell) return cell;
|
|
88981
|
+
}
|
|
88982
|
+
}
|
|
88983
|
+
return null;
|
|
88984
|
+
}
|
|
88985
|
+
case "right" /* Right */: {
|
|
88986
|
+
for (let colIndex = currentColumnIndex + 1; colIndex < this.visibleColumns.length; colIndex++) {
|
|
88987
|
+
const cell = this.findCellByLogicalPosition(currentRowIndex, colIndex);
|
|
88988
|
+
if (cell && cell !== currentCell) return cell;
|
|
88989
|
+
}
|
|
88990
|
+
if (currentRowIndex < this.data.length - 1) {
|
|
88991
|
+
for (let colIndex = 0; colIndex < this.visibleColumns.length; colIndex++) {
|
|
88992
|
+
const cell = this.findCellByLogicalPosition(currentRowIndex + 1, colIndex);
|
|
88993
|
+
if (cell) return cell;
|
|
88994
|
+
}
|
|
88995
|
+
}
|
|
88996
|
+
return null;
|
|
88997
|
+
}
|
|
88998
|
+
default:
|
|
88999
|
+
return null;
|
|
89000
|
+
}
|
|
89001
|
+
}
|
|
88889
89002
|
/**
|
|
88890
89003
|
* Set the data of the data grid
|
|
88891
89004
|
* @param {Array} value The array to use
|
|
@@ -89977,7 +90090,11 @@ ids-icon {
|
|
|
89977
90090
|
this.activeCell.cell = Number(cellNumber);
|
|
89978
90091
|
this.activeCell.row = Number(rowIndex);
|
|
89979
90092
|
const currentCell = this.cellByIndex(rowIndex, cellNumber);
|
|
89980
|
-
|
|
90093
|
+
if (reason === "redraw") {
|
|
90094
|
+
this.clearActiveCellCache();
|
|
90095
|
+
} else {
|
|
90096
|
+
this.updateActiveCellCache(rowIndex, cellNumber, currentCell?.value, true);
|
|
90097
|
+
}
|
|
89981
90098
|
let rowNode = this.rowByIndex(rowIndex);
|
|
89982
90099
|
if (!rowNode && this.virtualScroll) {
|
|
89983
90100
|
const setActiveCellData = {
|
|
@@ -90531,15 +90648,20 @@ ids-icon {
|
|
|
90531
90648
|
* @param {number} row - The row index
|
|
90532
90649
|
* @param {number} cell - The cell index
|
|
90533
90650
|
* @param {string} cellValue - The current cell value
|
|
90651
|
+
* @param {boolean} isEditing - Whether the cell is currently in edit mode
|
|
90534
90652
|
*/
|
|
90535
|
-
updateActiveCellCache(row, cell, cellValue) {
|
|
90536
|
-
|
|
90653
|
+
updateActiveCellCache(row, cell, cellValue, isEditing) {
|
|
90654
|
+
const cacheUpdate = {
|
|
90537
90655
|
rowIndex: row,
|
|
90538
90656
|
columnIndex: cell,
|
|
90539
90657
|
currentValue: cellValue,
|
|
90540
90658
|
hasLeaveViewport: false,
|
|
90541
90659
|
shouldReinstateCell: true
|
|
90542
|
-
}
|
|
90660
|
+
};
|
|
90661
|
+
if (isEditing !== void 0) {
|
|
90662
|
+
cacheUpdate.wasEditing = isEditing;
|
|
90663
|
+
}
|
|
90664
|
+
__privateSet(this, _activeCellCache, cacheUpdate);
|
|
90543
90665
|
}
|
|
90544
90666
|
/**
|
|
90545
90667
|
* Clears the active cell cache, optionally checking if the cached row is within viewport
|
|
@@ -91030,7 +91152,13 @@ ids-icon {
|
|
|
91030
91152
|
if (e.key === "ArrowDown") newRowIndex = 1;
|
|
91031
91153
|
if (e.key === "ArrowRight") newColIndex = 1;
|
|
91032
91154
|
if (e.key === "ArrowLeft") newColIndex = -1;
|
|
91033
|
-
|
|
91155
|
+
if (this.treeGrid && newRowIndex !== 0) {
|
|
91156
|
+
const direction = newRowIndex === 1 ? "down" /* Down */ : "up" /* Up */;
|
|
91157
|
+
const nextRowIndex = __privateMethod(this, _IdsDataGrid_instances, findNextVisibleRow_fn).call(this, __privateGet(this, _activeCellCache).rowIndex, direction);
|
|
91158
|
+
__privateGet(this, _activeCellCache).rowIndex = nextRowIndex !== -1 ? nextRowIndex : __privateGet(this, _activeCellCache).rowIndex;
|
|
91159
|
+
} else {
|
|
91160
|
+
__privateGet(this, _activeCellCache).rowIndex = Math.max(__privateGet(this, _activeCellCache).rowIndex + newRowIndex, 0);
|
|
91161
|
+
}
|
|
91034
91162
|
__privateGet(this, _activeCellCache).columnIndex = Math.max(__privateGet(this, _activeCellCache).columnIndex + newColIndex, 0);
|
|
91035
91163
|
requestAnimationTimeout(() => {
|
|
91036
91164
|
__privateMethod(this, _IdsDataGrid_instances, restoreActiveCellAfterScroll_fn).call(this);
|
|
@@ -91052,26 +91180,60 @@ ids-icon {
|
|
|
91052
91180
|
e.preventDefault();
|
|
91053
91181
|
e.stopPropagation();
|
|
91054
91182
|
const previousActiveRow = Number(activeCell?.rowIndex || 0);
|
|
91055
|
-
if (key === "ArrowUp")
|
|
91056
|
-
|
|
91057
|
-
|
|
91058
|
-
|
|
91183
|
+
if (key === "ArrowUp") {
|
|
91184
|
+
if (activeCell?.rowIndex === 0) {
|
|
91185
|
+
const columnIndex = activeCell?.columnIndex ?? 0;
|
|
91186
|
+
const headerCell = this.header?.querySelector(`[aria-colindex="${columnIndex + 1}"][tabindex="0"]`);
|
|
91187
|
+
if (headerCell) {
|
|
91188
|
+
headerCell.setAttribute(attributes.TABINDEX, "0");
|
|
91189
|
+
this.header?.querySelectorAll(".ids-data-grid-header-cell").forEach((cell) => {
|
|
91190
|
+
cell.classList.remove("is-focused");
|
|
91191
|
+
});
|
|
91192
|
+
headerCell.focus();
|
|
91193
|
+
return;
|
|
91194
|
+
}
|
|
91195
|
+
}
|
|
91196
|
+
const prevCell = activeCell;
|
|
91197
|
+
activeCell = this.findNextNavigableCell(activeCell, "up" /* Up */);
|
|
91198
|
+
if (!activeCell && this.virtualScroll && prevCell && prevCell.rowIndex > 0) {
|
|
91199
|
+
const nextRowIndex = __privateMethod(this, _IdsDataGrid_instances, findNextVisibleRow_fn).call(this, prevCell.rowIndex, "up" /* Up */);
|
|
91200
|
+
if (nextRowIndex !== -1) {
|
|
91201
|
+
__privateMethod(this, _IdsDataGrid_instances, scrollToActivateRow_fn).call(this, nextRowIndex, prevCell.columnIndex, "up" /* Up */);
|
|
91202
|
+
return;
|
|
91203
|
+
}
|
|
91204
|
+
}
|
|
91205
|
+
if (this.virtualScroll && activeCell) {
|
|
91206
|
+
__privateMethod(this, _IdsDataGrid_instances, ensureRowInViewport_fn).call(this, activeCell.rowIndex, "up" /* Up */);
|
|
91207
|
+
}
|
|
91208
|
+
} else if (key === "ArrowDown") {
|
|
91209
|
+
const prevCell = activeCell;
|
|
91210
|
+
activeCell = this.findNextNavigableCell(activeCell, "down" /* Down */);
|
|
91211
|
+
if (!activeCell && this.virtualScroll && prevCell && prevCell.rowIndex < this.data.length - 1) {
|
|
91212
|
+
const nextRowIndex = __privateMethod(this, _IdsDataGrid_instances, findNextVisibleRow_fn).call(this, prevCell.rowIndex, "down" /* Down */);
|
|
91213
|
+
if (nextRowIndex !== -1) {
|
|
91214
|
+
__privateMethod(this, _IdsDataGrid_instances, scrollToActivateRow_fn).call(this, nextRowIndex, prevCell.columnIndex, "down" /* Down */);
|
|
91215
|
+
return;
|
|
91216
|
+
}
|
|
91217
|
+
}
|
|
91218
|
+
if (this.virtualScroll && activeCell) {
|
|
91219
|
+
__privateMethod(this, _IdsDataGrid_instances, ensureRowInViewport_fn).call(this, activeCell.rowIndex, "down" /* Down */);
|
|
91220
|
+
}
|
|
91221
|
+
} else if (key === "ArrowLeft" && !e.metaKey) activeCell = this.findNextNavigableCell(activeCell, "left" /* Left */);
|
|
91222
|
+
else if (key === "ArrowRight" && !e.metaKey) activeCell = this.findNextNavigableCell(activeCell, "right" /* Right */);
|
|
91059
91223
|
else if (key === "PageUp") {
|
|
91060
|
-
const firstRow = this.rowByIndex(0);
|
|
91061
91224
|
const columnIndex = activeCell?.columnIndex ?? 0;
|
|
91062
|
-
activeCell =
|
|
91225
|
+
activeCell = this.findCellByLogicalPosition(0, columnIndex);
|
|
91063
91226
|
} else if (key === "PageDown") {
|
|
91064
91227
|
const lastRowIndex = this.data.length - 1;
|
|
91065
|
-
const lastRow = this.rowByIndex(lastRowIndex);
|
|
91066
91228
|
const columnIndex = activeCell?.columnIndex ?? 0;
|
|
91067
|
-
activeCell =
|
|
91229
|
+
activeCell = this.findCellByLogicalPosition(lastRowIndex, columnIndex);
|
|
91068
91230
|
} else if (key === "Home" || key === "ArrowLeft" && e.metaKey) {
|
|
91069
|
-
const
|
|
91070
|
-
activeCell =
|
|
91231
|
+
const currentRowIndex = activeCell?.rowIndex ?? 0;
|
|
91232
|
+
activeCell = this.findCellByLogicalPosition(currentRowIndex, 0);
|
|
91071
91233
|
} else if (key === "End" || key === "ArrowRight" && e.metaKey) {
|
|
91072
|
-
const
|
|
91073
|
-
const lastColumnIndex = this.
|
|
91074
|
-
activeCell =
|
|
91234
|
+
const currentRowIndex = activeCell?.rowIndex ?? 0;
|
|
91235
|
+
const lastColumnIndex = this.visibleColumns.length - 1;
|
|
91236
|
+
activeCell = this.findCellByLogicalPosition(currentRowIndex, lastColumnIndex);
|
|
91075
91237
|
}
|
|
91076
91238
|
const activeRowIndex = activeCell?.rowIndex ?? previousActiveRow;
|
|
91077
91239
|
activeCell?.focus?.();
|
|
@@ -91177,8 +91339,44 @@ ids-icon {
|
|
|
91177
91339
|
if (!this.isEditable) {
|
|
91178
91340
|
return;
|
|
91179
91341
|
}
|
|
91180
|
-
|
|
91342
|
+
let nextCell = e.shiftKey ? this.activeCell?.node?.cellLeftEditable : this.activeCell?.node?.cellRightEditable;
|
|
91343
|
+
while (nextCell && nextCell.hasAttribute?.("hidden")) {
|
|
91344
|
+
nextCell = e.shiftKey ? nextCell?.cellLeftEditable : nextCell?.cellRightEditable;
|
|
91345
|
+
}
|
|
91181
91346
|
if (!nextCell) {
|
|
91347
|
+
if (!e.shiftKey && this.addNewAtEnd && this.activeCell?.node) {
|
|
91348
|
+
const currentRowIndex = this.activeCell.node.rowIndex;
|
|
91349
|
+
const isLastRow = currentRowIndex === this.data.length - 1;
|
|
91350
|
+
if (isLastRow) {
|
|
91351
|
+
e.stopImmediatePropagation();
|
|
91352
|
+
e.stopPropagation();
|
|
91353
|
+
e.preventDefault();
|
|
91354
|
+
const newRowData = {};
|
|
91355
|
+
this.visibleColumns.forEach((column) => {
|
|
91356
|
+
if (column.field && column.field !== "selectionCheckbox" && column.field !== "selectionRadio") {
|
|
91357
|
+
newRowData[column.field] = "";
|
|
91358
|
+
}
|
|
91359
|
+
});
|
|
91360
|
+
this.addRow(newRowData);
|
|
91361
|
+
requestAnimationFrame(() => {
|
|
91362
|
+
const newRowIndex = this.data.length - 1;
|
|
91363
|
+
const newRow = this.rowByIndex(newRowIndex);
|
|
91364
|
+
if (newRow) {
|
|
91365
|
+
const firstEditableCell = newRow.querySelector(".is-editable:not(.is-readonly):not(.is-disabled)");
|
|
91366
|
+
if (firstEditableCell) {
|
|
91367
|
+
const columnIndex = firstEditableCell.columnIndex;
|
|
91368
|
+
this.setActiveCell(columnIndex, newRowIndex, false, "keyboard");
|
|
91369
|
+
if (this.editNextOnEnterPress) {
|
|
91370
|
+
firstEditableCell.startCellEdit?.();
|
|
91371
|
+
} else {
|
|
91372
|
+
firstEditableCell.focus?.();
|
|
91373
|
+
}
|
|
91374
|
+
}
|
|
91375
|
+
}
|
|
91376
|
+
});
|
|
91377
|
+
return;
|
|
91378
|
+
}
|
|
91379
|
+
}
|
|
91182
91380
|
return;
|
|
91183
91381
|
}
|
|
91184
91382
|
e.stopImmediatePropagation();
|
|
@@ -91210,7 +91408,98 @@ ids-icon {
|
|
|
91210
91408
|
}
|
|
91211
91409
|
});
|
|
91212
91410
|
this.offEvent("keydown.body", this.header);
|
|
91213
|
-
this.onEvent("keydown.body", this.header, () => {
|
|
91411
|
+
this.onEvent("keydown.body", this.header, (e) => {
|
|
91412
|
+
if (e.key === "ArrowUp") {
|
|
91413
|
+
e.preventDefault();
|
|
91414
|
+
e.stopPropagation();
|
|
91415
|
+
return;
|
|
91416
|
+
}
|
|
91417
|
+
if (e.key === "ArrowDown") {
|
|
91418
|
+
e.preventDefault();
|
|
91419
|
+
e.stopPropagation();
|
|
91420
|
+
const focusedHeaderCell = e.target;
|
|
91421
|
+
const columnIndexAttr = focusedHeaderCell.getAttribute("aria-colindex");
|
|
91422
|
+
if (columnIndexAttr) {
|
|
91423
|
+
const columnIndex = parseInt(columnIndexAttr) - 1;
|
|
91424
|
+
const firstRow = this.rowByIndex(0);
|
|
91425
|
+
if (firstRow) {
|
|
91426
|
+
const targetCell = firstRow.cellByIndex(columnIndex);
|
|
91427
|
+
if (targetCell) {
|
|
91428
|
+
this.setActiveCell(columnIndex, 0, false, "keyboard");
|
|
91429
|
+
targetCell.focus();
|
|
91430
|
+
return;
|
|
91431
|
+
}
|
|
91432
|
+
}
|
|
91433
|
+
}
|
|
91434
|
+
}
|
|
91435
|
+
if (e.key === "ArrowLeft" || e.key === "ArrowRight") {
|
|
91436
|
+
const focusedHeaderCell = e.target;
|
|
91437
|
+
const columnIndexAttr = focusedHeaderCell.getAttribute("aria-colindex");
|
|
91438
|
+
if (e.shiftKey && columnIndexAttr) {
|
|
91439
|
+
e.preventDefault();
|
|
91440
|
+
e.stopPropagation();
|
|
91441
|
+
const columnId = focusedHeaderCell.getAttribute("column-id");
|
|
91442
|
+
if (columnId) {
|
|
91443
|
+
const column = this.columnDataById(columnId);
|
|
91444
|
+
if (column && column.resizable) {
|
|
91445
|
+
const RESIZE_INCREMENT = 5;
|
|
91446
|
+
const DEFAULT_COLUMNSIZE = 110;
|
|
91447
|
+
const currentWidth = typeof column.width === "number" ? column.width : DEFAULT_COLUMNSIZE;
|
|
91448
|
+
const proposedWidth = e.key === "ArrowRight" ? currentWidth + RESIZE_INCREMENT : currentWidth - RESIZE_INCREMENT;
|
|
91449
|
+
const minWidth = column.minWidth || DEFAULT_COLUMN_MIN_WIDTH;
|
|
91450
|
+
const maxWidth = column.maxWidth || Number.MAX_SAFE_INTEGER;
|
|
91451
|
+
const newWidth = Math.max(minWidth, Math.min(maxWidth, proposedWidth));
|
|
91452
|
+
if (newWidth !== currentWidth) {
|
|
91453
|
+
this.setColumnWidth(columnId, newWidth);
|
|
91454
|
+
let columnText = this.localeAPI?.translate("ColumnResizeAria");
|
|
91455
|
+
columnText = columnText.replace("{0}", column.name).replace("{1}", newWidth);
|
|
91456
|
+
focusedHeaderCell.setAttribute("aria-label", columnText);
|
|
91457
|
+
}
|
|
91458
|
+
}
|
|
91459
|
+
}
|
|
91460
|
+
return;
|
|
91461
|
+
}
|
|
91462
|
+
e.preventDefault();
|
|
91463
|
+
e.stopPropagation();
|
|
91464
|
+
if (columnIndexAttr) {
|
|
91465
|
+
const currentColumnIndex = parseInt(columnIndexAttr) - 1;
|
|
91466
|
+
const nextColumnIndex = e.key === "ArrowRight" ? currentColumnIndex + 1 : currentColumnIndex - 1;
|
|
91467
|
+
if (nextColumnIndex >= 0 && nextColumnIndex < this.visibleColumns.length) {
|
|
91468
|
+
const nextHeaderCell = this.header?.querySelector(`[aria-colindex="${nextColumnIndex + 1}"][tabindex="0"]`);
|
|
91469
|
+
if (nextHeaderCell) {
|
|
91470
|
+
nextHeaderCell.focus();
|
|
91471
|
+
return;
|
|
91472
|
+
}
|
|
91473
|
+
}
|
|
91474
|
+
}
|
|
91475
|
+
}
|
|
91476
|
+
if (e.key === " " || e.key === "Space") {
|
|
91477
|
+
const focusedHeaderCell = e.target;
|
|
91478
|
+
if (focusedHeaderCell.hasAttribute("tabindex") && focusedHeaderCell.classList.contains("ids-data-grid-header-cell")) {
|
|
91479
|
+
e.preventDefault();
|
|
91480
|
+
e.stopPropagation();
|
|
91481
|
+
const headerCheckbox = focusedHeaderCell.querySelector(".ids-data-grid-checkbox");
|
|
91482
|
+
if (headerCheckbox) {
|
|
91483
|
+
if (headerCheckbox.classList.contains("checked") || headerCheckbox.classList.contains("indeterminate")) {
|
|
91484
|
+
this.deSelectAllRows();
|
|
91485
|
+
} else {
|
|
91486
|
+
this.selectAllRows();
|
|
91487
|
+
}
|
|
91488
|
+
}
|
|
91489
|
+
const columnCheckbox = focusedHeaderCell.querySelector(".ids-checkbox input");
|
|
91490
|
+
if (columnCheckbox) {
|
|
91491
|
+
const checkbox = columnCheckbox;
|
|
91492
|
+
checkbox.checked = !checkbox.checked;
|
|
91493
|
+
const columnIndex = parseInt(focusedHeaderCell.getAttribute("aria-colindex") || "1") - 1;
|
|
91494
|
+
if (checkbox.checked) {
|
|
91495
|
+
this.selectColumn(columnIndex);
|
|
91496
|
+
} else {
|
|
91497
|
+
this.deSelectColumn(columnIndex);
|
|
91498
|
+
}
|
|
91499
|
+
}
|
|
91500
|
+
return;
|
|
91501
|
+
}
|
|
91502
|
+
}
|
|
91214
91503
|
this.activeCell = {};
|
|
91215
91504
|
});
|
|
91216
91505
|
this.offEvent("keydown.body", this);
|
|
@@ -91754,6 +92043,73 @@ ids-icon {
|
|
|
91754
92043
|
__privateMethod(this, _IdsDataGrid_instances, restoreEditedCellsAfterScroll_fn).call(this);
|
|
91755
92044
|
}
|
|
91756
92045
|
};
|
|
92046
|
+
/**
|
|
92047
|
+
* Convert data row index to visible row index for tree grids
|
|
92048
|
+
* @param {number} rowIndex - The data row index
|
|
92049
|
+
* @returns {number} The visible row index, or -1 if row is hidden
|
|
92050
|
+
* @private
|
|
92051
|
+
*/
|
|
92052
|
+
getVisibleRowIndex_fn = function(rowIndex) {
|
|
92053
|
+
if (!this.treeGrid) return rowIndex;
|
|
92054
|
+
return this.virtualRows.findIndex((row) => row === this.data[rowIndex]);
|
|
92055
|
+
};
|
|
92056
|
+
/**
|
|
92057
|
+
* Find the next non-hidden row index in the specified direction
|
|
92058
|
+
* @param {number} startRowIndex - The starting data row index
|
|
92059
|
+
* @param {IdsDirection} direction - The navigation direction (Up or Down)
|
|
92060
|
+
* @returns {number} The next non-hidden row index, or -1 if none found
|
|
92061
|
+
* @private
|
|
92062
|
+
*/
|
|
92063
|
+
findNextVisibleRow_fn = function(startRowIndex, direction) {
|
|
92064
|
+
const step = direction === "down" /* Down */ ? 1 : -1;
|
|
92065
|
+
let nextRowIndex = startRowIndex + step;
|
|
92066
|
+
while (nextRowIndex >= 0 && nextRowIndex < this.data.length && this.treeGrid && this.data[nextRowIndex]?.rowHidden) {
|
|
92067
|
+
nextRowIndex += step;
|
|
92068
|
+
}
|
|
92069
|
+
return nextRowIndex >= 0 && nextRowIndex < this.data.length ? nextRowIndex : -1;
|
|
92070
|
+
};
|
|
92071
|
+
/**
|
|
92072
|
+
* Scroll to bring a row into view and activate its cell
|
|
92073
|
+
* @param {number} nextRowIndex - The data row index to bring into view
|
|
92074
|
+
* @param {number} columnIndex - The column index of the cell to activate
|
|
92075
|
+
* @param {IdsDirection} direction - The navigation direction (Up or Down)
|
|
92076
|
+
* @private
|
|
92077
|
+
*/
|
|
92078
|
+
scrollToActivateRow_fn = function(nextRowIndex, columnIndex, direction) {
|
|
92079
|
+
if (nextRowIndex < 0 || nextRowIndex >= this.data.length) return;
|
|
92080
|
+
const visibleRowIndex = __privateMethod(this, _IdsDataGrid_instances, getVisibleRowIndex_fn).call(this, nextRowIndex);
|
|
92081
|
+
if (visibleRowIndex === -1) return;
|
|
92082
|
+
const { ROW_HEIGHT } = this.virtualScrollSettings;
|
|
92083
|
+
const containerHeight = this.container.clientHeight;
|
|
92084
|
+
const headerHeight = this.header?.clientHeight ?? 0;
|
|
92085
|
+
const targetScrollTop = direction === "down" /* Down */ ? (visibleRowIndex + 1) * ROW_HEIGHT - containerHeight + headerHeight : visibleRowIndex * ROW_HEIGHT;
|
|
92086
|
+
this.container.scrollTop = Math.max(targetScrollTop, 0);
|
|
92087
|
+
requestAnimationFrame(() => {
|
|
92088
|
+
const activeCell = this.findCellByLogicalPosition(nextRowIndex, columnIndex);
|
|
92089
|
+
if (activeCell) {
|
|
92090
|
+
activeCell.focus();
|
|
92091
|
+
this.setActiveCell(activeCell.columnIndex, activeCell.rowIndex, false, "keyboard");
|
|
92092
|
+
}
|
|
92093
|
+
});
|
|
92094
|
+
};
|
|
92095
|
+
ensureRowInViewport_fn = function(rowIndex, direction) {
|
|
92096
|
+
if (!this.virtualScroll || !this.container) return;
|
|
92097
|
+
const { ROW_HEIGHT } = this.virtualScrollSettings;
|
|
92098
|
+
const containerHeight = this.container.clientHeight;
|
|
92099
|
+
const headerHeight = this.header?.clientHeight ?? 0;
|
|
92100
|
+
const scrollTop = this.container.scrollTop;
|
|
92101
|
+
const viewportTop = scrollTop;
|
|
92102
|
+
const viewportBottom = scrollTop + containerHeight - headerHeight;
|
|
92103
|
+
const effectiveRowIndex = __privateMethod(this, _IdsDataGrid_instances, getVisibleRowIndex_fn).call(this, rowIndex);
|
|
92104
|
+
if (effectiveRowIndex === -1) return;
|
|
92105
|
+
const rowTop = effectiveRowIndex * ROW_HEIGHT;
|
|
92106
|
+
const rowBottom = rowTop + ROW_HEIGHT;
|
|
92107
|
+
if (direction === "up" /* Up */ && rowTop < viewportTop) {
|
|
92108
|
+
this.container.scrollTop = rowTop;
|
|
92109
|
+
} else if (direction === "down" /* Down */ && rowBottom > viewportBottom) {
|
|
92110
|
+
this.container.scrollTop = rowBottom - containerHeight + headerHeight;
|
|
92111
|
+
}
|
|
92112
|
+
};
|
|
91757
92113
|
setVirtualScrollPaddingBottom_fn = function(settings, totalRows, offsetTop) {
|
|
91758
92114
|
const maxHeight = totalRows * settings.ROW_HEIGHT;
|
|
91759
92115
|
const paddingBottom = maxHeight - settings.MAX_ROWS_IN_DOM * settings.ROW_HEIGHT - offsetTop;
|
|
@@ -92123,7 +92479,7 @@ ids-icon {
|
|
|
92123
92479
|
editedCells.push(this.activeCell?.node);
|
|
92124
92480
|
const activeCell = this.activeCell.node;
|
|
92125
92481
|
const currentValue = activeCell.editor?.input?.value || "";
|
|
92126
|
-
this.updateActiveCellCache(this.activeCell.row, this.activeCell.cell, currentValue);
|
|
92482
|
+
this.updateActiveCellCache(this.activeCell.row, this.activeCell.cell, currentValue, true);
|
|
92127
92483
|
__privateGet(this, _activeCellCache).shouldReinstateCell = true;
|
|
92128
92484
|
this.commitCellEdit();
|
|
92129
92485
|
}
|
|
@@ -92162,7 +92518,8 @@ ids-icon {
|
|
|
92162
92518
|
const {
|
|
92163
92519
|
rowIndex,
|
|
92164
92520
|
columnIndex,
|
|
92165
|
-
currentValue
|
|
92521
|
+
currentValue,
|
|
92522
|
+
wasEditing
|
|
92166
92523
|
} = __privateGet(this, _activeCellCache);
|
|
92167
92524
|
if (rowIndex < 0 || rowIndex >= this.data.length || columnIndex < 0 || columnIndex >= this.visibleColumns.length) {
|
|
92168
92525
|
return;
|
|
@@ -92174,7 +92531,9 @@ ids-icon {
|
|
|
92174
92531
|
const scrollTop = this.container?.scrollTop || 0;
|
|
92175
92532
|
const containerHeight = this.container?.clientHeight || 0;
|
|
92176
92533
|
const rowHeight = this.virtualScrollSettings.ROW_HEIGHT;
|
|
92177
|
-
const
|
|
92534
|
+
const effectiveRowIndex = __privateMethod(this, _IdsDataGrid_instances, getVisibleRowIndex_fn).call(this, rowIndex);
|
|
92535
|
+
if (effectiveRowIndex === -1) return;
|
|
92536
|
+
const rowTop = effectiveRowIndex * rowHeight;
|
|
92178
92537
|
const rowBottom = rowTop + rowHeight;
|
|
92179
92538
|
const viewportTop = scrollTop;
|
|
92180
92539
|
const viewportBottom = scrollTop + containerHeight;
|
|
@@ -92183,15 +92542,12 @@ ids-icon {
|
|
|
92183
92542
|
__privateGet(this, _activeCellCache).hasLeaveViewport = true;
|
|
92184
92543
|
return;
|
|
92185
92544
|
}
|
|
92186
|
-
if (!__privateGet(this, _activeCellCache).hasLeaveViewport) {
|
|
92187
|
-
return;
|
|
92188
|
-
}
|
|
92189
92545
|
const cellElement = this.cellByIndex(rowIndex, columnIndex);
|
|
92190
92546
|
if (!cellElement) {
|
|
92191
92547
|
return;
|
|
92192
92548
|
}
|
|
92193
92549
|
this.setActiveCell(columnIndex, rowIndex, false, "internal");
|
|
92194
|
-
if (cellElement.column?.editor) {
|
|
92550
|
+
if (wasEditing === true && cellElement.column?.editor) {
|
|
92195
92551
|
cellElement.startCellEdit();
|
|
92196
92552
|
if (cellElement.editor?.input) {
|
|
92197
92553
|
cellElement.editor.input.value = currentValue;
|