@gravitee/ui-components 3.18.1 → 3.20.1
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/package.json +15 -15
- package/src/atoms/gv-input.js +7 -2
- package/src/atoms/gv-state.js +4 -2
- package/src/atoms/gv-text.js +2 -2
- package/src/lib/schema-form.js +22 -1
- package/src/organisms/gv-schema-form-array.js +15 -8
- package/src/organisms/gv-schema-form-control-object.js +12 -12
- package/src/organisms/gv-schema-form-control.js +20 -8
- package/src/organisms/gv-schema-form.js +22 -12
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { css, html, LitElement } from 'lit-element';
|
|
17
|
-
import {
|
|
17
|
+
import { canInline, canGrid } from '../lib/schema-form';
|
|
18
18
|
import { classMap } from 'lit-html/directives/class-map';
|
|
19
19
|
import { skeleton } from '../styles/skeleton';
|
|
20
20
|
import '../molecules/gv-expandable';
|
|
@@ -62,6 +62,9 @@ export class GvSchemaFormControlObject extends LitElement {
|
|
|
62
62
|
hidden: {
|
|
63
63
|
type: Boolean,
|
|
64
64
|
reflect: true
|
|
65
|
+
},
|
|
66
|
+
compact: {
|
|
67
|
+
type: Boolean
|
|
65
68
|
}
|
|
66
69
|
};
|
|
67
70
|
}
|
|
@@ -78,7 +81,7 @@ export class GvSchemaFormControlObject extends LitElement {
|
|
|
78
81
|
const control = { ...this.schema.properties[subKey]
|
|
79
82
|
};
|
|
80
83
|
const value = this.value != null ? this.value[subKey] : null;
|
|
81
|
-
return html`<gv-schema-form-control .id="${fullKey}" .control="${control}" .value="${value}" .skeleton="${this.skeleton}" ?required="${isRequired}" ?disabled="${isDisabled}" ?readonly="${this.readonly}" ?hidden="${this.hidden}" class="control"></gv-schema-form-control>`;
|
|
84
|
+
return html`<gv-schema-form-control .id="${fullKey}" .control="${control}" .value="${value}" .skeleton="${this.skeleton}" ?required="${isRequired}" ?disabled="${isDisabled}" ?readonly="${this.readonly}" ?hidden="${this.hidden}" class="control" ?compact="${this.compact}"></gv-schema-form-control>`;
|
|
82
85
|
}
|
|
83
86
|
|
|
84
87
|
getControls() {
|
|
@@ -104,15 +107,13 @@ export class GvSchemaFormControlObject extends LitElement {
|
|
|
104
107
|
return super.shouldUpdate(changedProperties);
|
|
105
108
|
}
|
|
106
109
|
|
|
107
|
-
canInline(key) {
|
|
108
|
-
const property = this.schema.properties[key];
|
|
109
|
-
return !isCodemirror(property) && !isObject(property);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
110
|
render() {
|
|
113
111
|
const keys = Object.keys(this.schema.properties);
|
|
112
|
+
const isGrid = canGrid(this.schema);
|
|
114
113
|
const classes = {
|
|
115
|
-
'form_control-inline':
|
|
114
|
+
'form_control-inline': canInline(this.schema),
|
|
115
|
+
'form_control-grid': isGrid,
|
|
116
|
+
'form_control-grid-odd': isGrid && keys.length % 2 !== 0
|
|
116
117
|
};
|
|
117
118
|
const titleClasses = {
|
|
118
119
|
'form__control-group-title': true,
|
|
@@ -121,8 +122,7 @@ export class GvSchemaFormControlObject extends LitElement {
|
|
|
121
122
|
const details = keys.map(key => this._renderPart(key));
|
|
122
123
|
|
|
123
124
|
if (this.title) {
|
|
124
|
-
|
|
125
|
-
return html`<gv-expandable ?open="${isOpen}"> <div slot="summary" class="${classMap(titleClasses)}" title="${this.title}">${this.title}</div> <div slot="details" class="${classMap(classes)}">${details}</div> </gv-expandable>`;
|
|
125
|
+
return html`<gv-expandable open> <div slot="summary" class="${classMap(titleClasses)}" title="${this.title}">${this.title}</div> <div slot="details" class="${classMap(classes)}">${details}</div> </gv-expandable>`;
|
|
126
126
|
} else {
|
|
127
127
|
return html`<div class="${classMap(classes)}">${details}</div>`;
|
|
128
128
|
}
|
|
@@ -130,9 +130,9 @@ export class GvSchemaFormControlObject extends LitElement {
|
|
|
130
130
|
|
|
131
131
|
static get styles() {
|
|
132
132
|
return [skeleton, // language=CSS
|
|
133
|
-
css`.form__control-group-title{padding:.5rem 0}.form_control-inline{display:flex;flex-direction:row;margin:0}.form_control-inline>*{flex:1;--gv-schema-form-control--m:0 0.2rem 0 0}.form_control-inline>:last-child{--gv-schema-form-control--m:0 0 0 0.2rem}`];
|
|
133
|
+
css`.form__control-group-title{padding:.5rem 0}.form_control-inline{display:flex;flex-direction:row;margin:0}.form_control-grid{display:grid;grid-template-columns:repeat(2,1fr)}.form_control-grid-odd :first-child{grid-column:1/3}.form_control-inline>*{flex:1;--gv-schema-form-control--m:0 0.2rem 0 0}.form_control-inline>:last-child{--gv-schema-form-control--m:0 0 0 0.2rem}`];
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
}
|
|
137
137
|
window.customElements.define('gv-schema-form-control-object', GvSchemaFormControlObject);
|
|
138
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS1jb250cm9sLW9iamVjdC5qcyJdLCJuYW1lcyI6WyJjc3MiLCJodG1sIiwiTGl0RWxlbWVudCIsImlzQ29kZW1pcnJvciIsImlzT2JqZWN0IiwiY2xhc3NNYXAiLCJza2VsZXRvbiIsIkd2U2NoZW1hRm9ybUNvbnRyb2xPYmplY3QiLCJwcm9wZXJ0aWVzIiwic2NoZW1hIiwidHlwZSIsIk9iamVjdCIsInZhbHVlIiwicmVmbGVjdCIsImlkIiwiU3RyaW5nIiwidGl0bGUiLCJlcnJvcnMiLCJBcnJheSIsIkJvb2xlYW4iLCJyZWFkb25seSIsImRpc2FibGVkIiwicmVxdWlyZWQiLCJoaWRkZW4iLCJjb25zdHJ1Y3RvciIsIl9yZW5kZXJQYXJ0Iiwic3ViS2V5IiwiaXNSZXF1aXJlZCIsImluY2x1ZGVzIiwiaXNEaXNhYmxlZCIsImZ1bGxLZXkiLCJjb250cm9sIiwiZ2V0Q29udHJvbHMiLCJmcm9tIiwic2hhZG93Um9vdCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJnZXRDb250cm9sIiwicXVlcnlTZWxlY3RvciIsIl9nZXRVcGRhdGVDb21wbGV0ZSIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJlIiwidXBkYXRlQ29tcGxldGUiLCJzaG91bGRVcGRhdGUiLCJjaGFuZ2VkUHJvcGVydGllcyIsImhhcyIsImZvckVhY2giLCJjYW5JbmxpbmUiLCJrZXkiLCJwcm9wZXJ0eSIsInJlbmRlciIsImtleXMiLCJjbGFzc2VzIiwibGVuZ3RoIiwiZmlsdGVyIiwidGl0bGVDbGFzc2VzIiwiZGV0YWlscyIsImlzT3BlbiIsInN0eWxlcyIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QUFBLEdBQUcsNFBBSEUsQ0FBUDtBQXdCRDs7QUF6SHVEO0FBNEgxRDRELE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQkMsTUFBdEIsQ0FBNkIsK0JBQTdCLEVBQThEdkQseUJBQTlEIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IGNzcywgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdC1lbGVtZW50JztcbmltcG9ydCB7IGlzQ29kZW1pcnJvciwgaXNPYmplY3QgfSBmcm9tICcuLi9saWIvc2NoZW1hLWZvcm0nO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQtaHRtbC9kaXJlY3RpdmVzL2NsYXNzLW1hcCc7XG5pbXBvcnQgeyBza2VsZXRvbiB9IGZyb20gJy4uL3N0eWxlcy9za2VsZXRvbic7XG5pbXBvcnQgJy4uL21vbGVjdWxlcy9ndi1leHBhbmRhYmxlJztcblxuLyoqXG4gKiBTY2hlbWEgZm9ybSBjb250cm9sIG9iamVjdCBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIEd2U2NoZW1hRm9ybUNvbnRyb2xPYmplY3QgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzY2hlbWE6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICB2YWx1ZTogeyB0eXBlOiBPYmplY3QsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGlkOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgdGl0bGU6IHsgdHlwZTogU3RyaW5nLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBlcnJvcnM6IHsgdHlwZTogQXJyYXkgfSxcbiAgICAgIHNrZWxldG9uOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHJlYWRvbmx5OiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGRpc2FibGVkOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHJlcXVpcmVkOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGhpZGRlbjogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy52YWx1ZSA9IFtdO1xuICB9XG5cbiAgX3JlbmRlclBhcnQoc3ViS2V5KSB7XG4gICAgY29uc3QgaXNSZXF1aXJlZCA9IHRoaXMucmVxdWlyZWQgfHwgKHRoaXMuc2NoZW1hLnJlcXVpcmVkICYmIHRoaXMuc2NoZW1hLnJlcXVpcmVkLmluY2x1ZGVzKHN1YktleSkpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkIHx8ICh0aGlzLnNjaGVtYS5kaXNhYmxlZCAmJiB0aGlzLnNjaGVtYS5kaXNhYmxlZC5pbmNsdWRlcyhzdWJLZXkpKTtcblxuICAgIGNvbnN0IGZ1bGxLZXkgPSB0aGlzLmlkICE9IG51bGwgPyBgJHt0aGlzLmlkfS4ke3N1YktleX1gIDogc3ViS2V5O1xuICAgIGNvbnN0IGNvbnRyb2wgPSB7IC4uLnRoaXMuc2NoZW1hLnByb3BlcnRpZXNbc3ViS2V5XSB9O1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZSAhPSBudWxsID8gdGhpcy52YWx1ZVtzdWJLZXldIDogbnVsbDtcbiAgICByZXR1cm4gaHRtbGA8Z3Ytc2NoZW1hLWZvcm0tY29udHJvbFxuICAgICAgLmlkPVwiJHtmdWxsS2V5fVwiXG4gICAgICAuY29udHJvbD1cIiR7Y29udHJvbH1cIlxuICAgICAgLnZhbHVlPVwiJHt2YWx1ZX1cIlxuICAgICAgLnNrZWxldG9uPVwiJHt0aGlzLnNrZWxldG9ufVwiXG4gICAgICA/cmVxdWlyZWQ9XCIke2lzUmVxdWlyZWR9XCJcbiAgICAgID9kaXNhYmxlZD1cIiR7aXNEaXNhYmxlZH1cIlxuICAgICAgP3JlYWRvbmx5PVwiJHt0aGlzLnJlYWRvbmx5fVwiXG4gICAgICA/aGlkZGVuPVwiJHt0aGlzLmhpZGRlbn1cIlxuICAgICAgY2xhc3M9XCJjb250cm9sXCJcbiAgICA+PC9ndi1zY2hlbWEtZm9ybS1jb250cm9sPmA7XG4gIH1cblxuICBnZXRDb250cm9scygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCcpKSxcbiAgICAgIC4uLkFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wtYXJyYXknKSksXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1zY2hlbWEtZm9ybS1jb250cm9sLW9iamVjdCcpKSxcbiAgICBdO1xuICB9XG5cbiAgZ2V0Q29udHJvbChpZCkge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2lkPVwiJHtpZH1cIl1gKTtcbiAgfVxuXG4gIGFzeW5jIF9nZXRVcGRhdGVDb21wbGV0ZSgpIHtcbiAgICBhd2FpdCBzdXBlci5fZ2V0VXBkYXRlQ29tcGxldGUoKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmdldENvbnRyb2xzKCkubWFwKChlKSA9PiBlLnVwZGF0ZUNvbXBsZXRlKSk7XG4gIH1cblxuICBzaG91bGRVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpIHtcbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdlcnJvcnMnKSkge1xuICAgICAgdGhpcy5nZXRDb250cm9scygpLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgICAgY29udHJvbC5lcnJvcnMgPSB0aGlzLmVycm9ycztcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIGNhbklubGluZShrZXkpIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuc2NoZW1hLnByb3BlcnRpZXNba2V5XTtcbiAgICByZXR1cm4gIWlzQ29kZW1pcnJvcihwcm9wZXJ0eSkgJiYgIWlzT2JqZWN0KHByb3BlcnR5KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5zY2hlbWEucHJvcGVydGllcyk7XG4gICAgY29uc3QgY2xhc3NlcyA9IHtcbiAgICAgICdmb3JtX2NvbnRyb2wtaW5saW5lJzoga2V5cy5sZW5ndGggPD0gMiAmJiBrZXlzLmZpbHRlcigoa2V5KSA9PiB0aGlzLmNhbklubGluZShrZXkpKS5sZW5ndGggPT09IGtleXMubGVuZ3RoLFxuICAgIH07XG5cbiAgICBjb25zdCB0aXRsZUNsYXNzZXMgPSB7XG4gICAgICAnZm9ybV9fY29udHJvbC1ncm91cC10aXRsZSc6IHRydWUsXG4gICAgICBza2VsZXRvbjogdGhpcy5za2VsZXRvbixcbiAgICB9O1xuXG4gICAgY29uc3QgZGV0YWlscyA9IGtleXMubWFwKChrZXkpID0+IHRoaXMuX3JlbmRlclBhcnQoa2V5KSk7XG5cbiAgICBpZiAodGhpcy50aXRsZSkge1xuICAgICAgY29uc3QgaXNPcGVuID0gdGhpcy5yZXF1aXJlZCB8fCB0aGlzLnNjaGVtYS5yZXF1aXJlZCAhPSBudWxsO1xuICAgICAgcmV0dXJuIGh0bWxgPGd2LWV4cGFuZGFibGUgP29wZW49XCIke2lzT3Blbn1cIj5cbiAgICAgICAgPGRpdiBzbG90PVwic3VtbWFyeVwiIGNsYXNzPVwiJHtjbGFzc01hcCh0aXRsZUNsYXNzZXMpfVwiIHRpdGxlPVwiJHt0aGlzLnRpdGxlfVwiPiR7dGhpcy50aXRsZX08L2Rpdj5cbiAgICAgICAgPGRpdiBzbG90PVwiZGV0YWlsc1wiIGNsYXNzPVwiJHtjbGFzc01hcChjbGFzc2VzKX1cIj4ke2RldGFpbHN9PC9kaXY+XG4gICAgICA8L2d2LWV4cGFuZGFibGU+YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoY2xhc3Nlcyl9XCI+JHtkZXRhaWxzfTwvZGl2PmA7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHNrZWxldG9uLFxuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIC5mb3JtX19jb250cm9sLWdyb3VwLXRpdGxlIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX2NvbnRyb2wtaW5saW5lIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fY29udHJvbC1pbmxpbmUgPiAqIHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIC0tZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC0tbTogMCAwLjJyZW0gMCAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fY29udHJvbC1pbmxpbmUgPiAqOmxhc3QtY2hpbGQge1xuICAgICAgICAgIC0tZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC0tbTogMCAwIDAgMC4ycmVtO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC1vYmplY3QnLCBHdlNjaGVtYUZvcm1Db250cm9sT2JqZWN0KTtcbiJdfQ==
|
|
138
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS1jb250cm9sLW9iamVjdC5qcyJdLCJuYW1lcyI6WyJjc3MiLCJodG1sIiwiTGl0RWxlbWVudCIsImNhbklubGluZSIsImNhbkdyaWQiLCJjbGFzc01hcCIsInNrZWxldG9uIiwiR3ZTY2hlbWFGb3JtQ29udHJvbE9iamVjdCIsInByb3BlcnRpZXMiLCJzY2hlbWEiLCJ0eXBlIiwiT2JqZWN0IiwidmFsdWUiLCJyZWZsZWN0IiwiaWQiLCJTdHJpbmciLCJ0aXRsZSIsImVycm9ycyIsIkFycmF5IiwiQm9vbGVhbiIsInJlYWRvbmx5IiwiZGlzYWJsZWQiLCJyZXF1aXJlZCIsImhpZGRlbiIsImNvbXBhY3QiLCJjb25zdHJ1Y3RvciIsIl9yZW5kZXJQYXJ0Iiwic3ViS2V5IiwiaXNSZXF1aXJlZCIsImluY2x1ZGVzIiwiaXNEaXNhYmxlZCIsImZ1bGxLZXkiLCJjb250cm9sIiwiZ2V0Q29udHJvbHMiLCJmcm9tIiwic2hhZG93Um9vdCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJnZXRDb250cm9sIiwicXVlcnlTZWxlY3RvciIsIl9nZXRVcGRhdGVDb21wbGV0ZSIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJlIiwidXBkYXRlQ29tcGxldGUiLCJzaG91bGRVcGRhdGUiLCJjaGFuZ2VkUHJvcGVydGllcyIsImhhcyIsImZvckVhY2giLCJyZW5kZXIiLCJrZXlzIiwiaXNHcmlkIiwiY2xhc3NlcyIsImxlbmd0aCIsInRpdGxlQ2xhc3NlcyIsImRldGFpbHMiLCJrZXkiLCJzdHlsZXMiLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsR0FBVCxFQUFjQyxJQUFkLEVB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ekMsTUFBTCxDQUFZRCxVQUF4QixDQUFiO0FBQ0EsVUFBTTJDLE1BQU0sR0FBRy9DLE9BQU8sQ0FBQyxLQUFLSyxNQUFOLENBQXRCO0FBQ0EsVUFBTTJDLE9BQU8sR0FBRztBQUNkLDZCQUF1QmpELFNBQVMsQ0FBQyxLQUFLTSxNQUFOLENBRGxCO0FBRWQsMkJBQXFCMEMsTUFGUDtBQUdkLCtCQUF5QkEsTUFBTSxJQUFJRCxJQUFJLENBQUNHLE1BQUwsR0FBYyxDQUFkLEtBQW9CO0FBSHpDLEtBQWhCO0FBTUEsVUFBTUMsWUFBWSxHQUFHO0FBQ25CLG1DQUE2QixJQURWO0FBRW5CaEQsTUFBQUEsUUFBUSxFQUFFLEtBQUtBO0FBRkksS0FBckI7QUFLQSxVQUFNaUQsT0FBTyxHQUFHTCxJQUFJLENBQUNSLEdBQUwsQ0FBVWMsR0FBRCxJQUFTLEtBQUs5QixXQUFMLENBQWlCOEIsR0FBakIsQ0FBbEIsQ0FBaEI7O0FBRUEsUUFBSSxLQUFLeEMsS0FBVCxFQUFnQjtBQUNkLGFBQU9mLElBQUksbURBQ29CSSxRQUFRLENBQUNpRCxZQUFELENBRDVCLFlBQ3NELEtBQUt0QyxLQUQzRCxLQUNxRSxLQUFLQSxLQUQxRSxxQ0FFb0JYLFFBQVEsQ0FBQytDLE9BQUQsQ0FGNUIsS0FFMENHLE9BRjFDLHlCQUFYO0FBSUQsS0FMRCxNQUtPO0FBQ0wsYUFBT3RELElBQUksZUFBZUksUUFBUSxDQUFDK0MsT0FBRCxDQUF2QixLQUFxQ0csT0FBckMsUUFBWDtBQUNEO0FBQ0Y7O0FBRWdCLGFBQU5FLE1BQU0sR0FBRztBQUNsQixXQUFPLENBQ0xuRCxRQURLLEVBRUw7QUFDQU4sSUFBQUEsR0FBRyxvWEFIRSxDQUFQO0FBaUNEOztBQWpJdUQ7QUFvSTFEMEQsTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2QiwrQkFBN0IsRUFBOERyRCx5QkFBOUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0LWVsZW1lbnQnO1xuaW1wb3J0IHsgY2FuSW5saW5lLCBjYW5HcmlkIH0gZnJvbSAnLi4vbGliL3NjaGVtYS1mb3JtJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0LWh0bWwvZGlyZWN0aXZlcy9jbGFzcy1tYXAnO1xuaW1wb3J0IHsgc2tlbGV0b24gfSBmcm9tICcuLi9zdHlsZXMvc2tlbGV0b24nO1xuaW1wb3J0ICcuLi9tb2xlY3VsZXMvZ3YtZXhwYW5kYWJsZSc7XG5cbi8qKlxuICogU2NoZW1hIGZvcm0gY29udHJvbCBvYmplY3QgY29tcG9uZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBHdlNjaGVtYUZvcm1Db250cm9sT2JqZWN0IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2NoZW1hOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgdmFsdWU6IHsgdHlwZTogT2JqZWN0LCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBpZDogeyB0eXBlOiBTdHJpbmcsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHRpdGxlOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgZXJyb3JzOiB7IHR5cGU6IEFycmF5IH0sXG4gICAgICBza2VsZXRvbjogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICByZWFkb25seTogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBkaXNhYmxlZDogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICByZXF1aXJlZDogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBoaWRkZW46IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgY29tcGFjdDogeyB0eXBlOiBCb29sZWFuIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy52YWx1ZSA9IFtdO1xuICB9XG5cbiAgX3JlbmRlclBhcnQoc3ViS2V5KSB7XG4gICAgY29uc3QgaXNSZXF1aXJlZCA9IHRoaXMucmVxdWlyZWQgfHwgKHRoaXMuc2NoZW1hLnJlcXVpcmVkICYmIHRoaXMuc2NoZW1hLnJlcXVpcmVkLmluY2x1ZGVzKHN1YktleSkpO1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkIHx8ICh0aGlzLnNjaGVtYS5kaXNhYmxlZCAmJiB0aGlzLnNjaGVtYS5kaXNhYmxlZC5pbmNsdWRlcyhzdWJLZXkpKTtcblxuICAgIGNvbnN0IGZ1bGxLZXkgPSB0aGlzLmlkICE9IG51bGwgPyBgJHt0aGlzLmlkfS4ke3N1YktleX1gIDogc3ViS2V5O1xuICAgIGNvbnN0IGNvbnRyb2wgPSB7IC4uLnRoaXMuc2NoZW1hLnByb3BlcnRpZXNbc3ViS2V5XSB9O1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZSAhPSBudWxsID8gdGhpcy52YWx1ZVtzdWJLZXldIDogbnVsbDtcbiAgICByZXR1cm4gaHRtbGA8Z3Ytc2NoZW1hLWZvcm0tY29udHJvbFxuICAgICAgLmlkPVwiJHtmdWxsS2V5fVwiXG4gICAgICAuY29udHJvbD1cIiR7Y29udHJvbH1cIlxuICAgICAgLnZhbHVlPVwiJHt2YWx1ZX1cIlxuICAgICAgLnNrZWxldG9uPVwiJHt0aGlzLnNrZWxldG9ufVwiXG4gICAgICA/cmVxdWlyZWQ9XCIke2lzUmVxdWlyZWR9XCJcbiAgICAgID9kaXNhYmxlZD1cIiR7aXNEaXNhYmxlZH1cIlxuICAgICAgP3JlYWRvbmx5PVwiJHt0aGlzLnJlYWRvbmx5fVwiXG4gICAgICA/aGlkZGVuPVwiJHt0aGlzLmhpZGRlbn1cIlxuICAgICAgY2xhc3M9XCJjb250cm9sXCJcbiAgICAgID9jb21wYWN0PVwiJHt0aGlzLmNvbXBhY3R9XCJcbiAgICA+PC9ndi1zY2hlbWEtZm9ybS1jb250cm9sPmA7XG4gIH1cblxuICBnZXRDb250cm9scygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbCcpKSxcbiAgICAgIC4uLkFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wtYXJyYXknKSksXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1zY2hlbWEtZm9ybS1jb250cm9sLW9iamVjdCcpKSxcbiAgICBdO1xuICB9XG5cbiAgZ2V0Q29udHJvbChpZCkge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgW2lkPVwiJHtpZH1cIl1gKTtcbiAgfVxuXG4gIGFzeW5jIF9nZXRVcGRhdGVDb21wbGV0ZSgpIHtcbiAgICBhd2FpdCBzdXBlci5fZ2V0VXBkYXRlQ29tcGxldGUoKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmdldENvbnRyb2xzKCkubWFwKChlKSA9PiBlLnVwZGF0ZUNvbXBsZXRlKSk7XG4gIH1cblxuICBzaG91bGRVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpIHtcbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdlcnJvcnMnKSkge1xuICAgICAgdGhpcy5nZXRDb250cm9scygpLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgICAgY29udHJvbC5lcnJvcnMgPSB0aGlzLmVycm9ycztcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5zY2hlbWEucHJvcGVydGllcyk7XG4gICAgY29uc3QgaXNHcmlkID0gY2FuR3JpZCh0aGlzLnNjaGVtYSk7XG4gICAgY29uc3QgY2xhc3NlcyA9IHtcbiAgICAgICdmb3JtX2NvbnRyb2wtaW5saW5lJzogY2FuSW5saW5lKHRoaXMuc2NoZW1hKSxcbiAgICAgICdmb3JtX2NvbnRyb2wtZ3JpZCc6IGlzR3JpZCxcbiAgICAgICdmb3JtX2NvbnRyb2wtZ3JpZC1vZGQnOiBpc0dyaWQgJiYga2V5cy5sZW5ndGggJSAyICE9PSAwLFxuICAgIH07XG5cbiAgICBjb25zdCB0aXRsZUNsYXNzZXMgPSB7XG4gICAgICAnZm9ybV9fY29udHJvbC1ncm91cC10aXRsZSc6IHRydWUsXG4gICAgICBza2VsZXRvbjogdGhpcy5za2VsZXRvbixcbiAgICB9O1xuXG4gICAgY29uc3QgZGV0YWlscyA9IGtleXMubWFwKChrZXkpID0+IHRoaXMuX3JlbmRlclBhcnQoa2V5KSk7XG5cbiAgICBpZiAodGhpcy50aXRsZSkge1xuICAgICAgcmV0dXJuIGh0bWxgPGd2LWV4cGFuZGFibGUgb3Blbj5cbiAgICAgICAgPGRpdiBzbG90PVwic3VtbWFyeVwiIGNsYXNzPVwiJHtjbGFzc01hcCh0aXRsZUNsYXNzZXMpfVwiIHRpdGxlPVwiJHt0aGlzLnRpdGxlfVwiPiR7dGhpcy50aXRsZX08L2Rpdj5cbiAgICAgICAgPGRpdiBzbG90PVwiZGV0YWlsc1wiIGNsYXNzPVwiJHtjbGFzc01hcChjbGFzc2VzKX1cIj4ke2RldGFpbHN9PC9kaXY+XG4gICAgICA8L2d2LWV4cGFuZGFibGU+YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoY2xhc3Nlcyl9XCI+JHtkZXRhaWxzfTwvZGl2PmA7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldCBzdHlsZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHNrZWxldG9uLFxuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIC5mb3JtX19jb250cm9sLWdyb3VwLXRpdGxlIHtcbiAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX2NvbnRyb2wtaW5saW5lIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fY29udHJvbC1ncmlkIHtcbiAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9jb250cm9sLWdyaWQtb2RkICo6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgIGdyaWQtY29sdW1uOiAxIC8gMztcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX2NvbnRyb2wtaW5saW5lID4gKiB7XG4gICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAtLWd2LXNjaGVtYS1mb3JtLWNvbnRyb2wtLW06IDAgMC4ycmVtIDAgMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX2NvbnRyb2wtaW5saW5lID4gKjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAtLWd2LXNjaGVtYS1mb3JtLWNvbnRyb2wtLW06IDAgMCAwIDAuMnJlbTtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wtb2JqZWN0JywgR3ZTY2hlbWFGb3JtQ29udHJvbE9iamVjdCk7XG4iXX0=
|
|
@@ -27,7 +27,7 @@ import '../molecules/gv-cron-editor';
|
|
|
27
27
|
import '../atoms/gv-autocomplete';
|
|
28
28
|
import '../organisms/gv-schema-form-array';
|
|
29
29
|
import '../organisms/gv-schema-form-control-object';
|
|
30
|
-
import { isCodemirror, isObject } from '../lib/schema-form';
|
|
30
|
+
import { isCodemirror, isObject, isComplexArray } from '../lib/schema-form';
|
|
31
31
|
export class GvSchemaFormControl extends LitElement {
|
|
32
32
|
static get properties() {
|
|
33
33
|
return {
|
|
@@ -82,6 +82,9 @@ export class GvSchemaFormControl extends LitElement {
|
|
|
82
82
|
writeOnly: {
|
|
83
83
|
type: Boolean,
|
|
84
84
|
reflect: true
|
|
85
|
+
},
|
|
86
|
+
compact: {
|
|
87
|
+
type: Boolean
|
|
85
88
|
}
|
|
86
89
|
};
|
|
87
90
|
}
|
|
@@ -132,7 +135,7 @@ export class GvSchemaFormControl extends LitElement {
|
|
|
132
135
|
|
|
133
136
|
if ((this.control.enum || this.control.items && this.control.items.enum) && !this.isAutocomplete()) {
|
|
134
137
|
return 'gv-select';
|
|
135
|
-
} else if (this.
|
|
138
|
+
} else if (isComplexArray(this.control)) {
|
|
136
139
|
return 'gv-schema-form-array';
|
|
137
140
|
} else if (this.control.type === 'array') {
|
|
138
141
|
return 'gv-button';
|
|
@@ -151,10 +154,6 @@ export class GvSchemaFormControl extends LitElement {
|
|
|
151
154
|
return 'gv-input';
|
|
152
155
|
}
|
|
153
156
|
|
|
154
|
-
isComplexArray() {
|
|
155
|
-
return this.control.type === 'array' && !this.control.items.enum;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
157
|
_updateProperties(element) {
|
|
159
158
|
if (element != null) {
|
|
160
159
|
this._observedProperties.forEach(property => {
|
|
@@ -192,7 +191,7 @@ export class GvSchemaFormControl extends LitElement {
|
|
|
192
191
|
|
|
193
192
|
if (this.control.type === 'object') {
|
|
194
193
|
element.schema = this.control;
|
|
195
|
-
} else if (this.
|
|
194
|
+
} else if (isComplexArray(this.control)) {
|
|
196
195
|
element.schema = this.control.items;
|
|
197
196
|
}
|
|
198
197
|
|
|
@@ -219,6 +218,12 @@ export class GvSchemaFormControl extends LitElement {
|
|
|
219
218
|
element.type = 'number';
|
|
220
219
|
}
|
|
221
220
|
|
|
221
|
+
if (this.isText()) {
|
|
222
|
+
element.rows = 3;
|
|
223
|
+
element.autosize = true;
|
|
224
|
+
element.placeholder = this.control.description;
|
|
225
|
+
}
|
|
226
|
+
|
|
222
227
|
const placeholder = this.getPlaceholder();
|
|
223
228
|
|
|
224
229
|
if (this.control.enum || this.control.items && this.control.items.enum) {
|
|
@@ -253,6 +258,13 @@ export class GvSchemaFormControl extends LitElement {
|
|
|
253
258
|
element.description = this.control.description;
|
|
254
259
|
}
|
|
255
260
|
|
|
261
|
+
if (this.compact) {
|
|
262
|
+
element.placeholder = element.description || element.label;
|
|
263
|
+
element.label = null;
|
|
264
|
+
element.description = null;
|
|
265
|
+
element.compact = this.compact;
|
|
266
|
+
}
|
|
267
|
+
|
|
256
268
|
if (placeholder != null) {
|
|
257
269
|
if (this.isExpressionLanguage() || this.isCodemirror()) {
|
|
258
270
|
element.options.placeholder = placeholder;
|
|
@@ -396,4 +408,4 @@ export class GvSchemaFormControl extends LitElement {
|
|
|
396
408
|
|
|
397
409
|
}
|
|
398
410
|
window.customElements.define('gv-schema-form-control', GvSchemaFormControl);
|
|
399
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS1jb250cm9sLmpzIl0sIm5hbWVzIjpbImNzcyIsIkxpdEVsZW1lbnQiLCJodG1sIiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsImlzQ29kZW1pcnJvciIsImlzT2JqZWN0IiwiR3ZTY2hlbWFGb3JtQ29udHJvbCIsInByb3BlcnRpZXMiLCJ0eXBlIiwiU3RyaW5nIiwiaWQiLCJyZWZsZWN0IiwibmFtZSIsInJlcXVpcmVkIiwiQm9vbGVhbiIsImRpc2FibGVkIiwicmVhZG9ubHkiLCJ0aXRsZSIsInBhdHRlcm4iLCJjb250cm9sIiwiT2JqZWN0IiwiZXJyb3JzIiwiQXJyYXkiLCJ2YWx1ZSIsInNrZWxldG9uIiwiaGlkZGVuIiwid3JpdGVPbmx5IiwiY29uc3RydWN0b3IiLCJfb2JzZXJ2ZWRQcm9wZXJ0aWVzIiwiaXNFeHByZXNzaW9uTGFuZ3VhZ2UiLCJpc0Nyb25FeHByZXNzaW9uIiwiaXNQYXNzd29yZCIsImdldFBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJpc0F1dG9jb21wbGV0ZSIsImV2ZW50IiwiaXNUZXh0IiwiZ2V0RWxlbWVudE5hbWUiLCJlbnVtIiwiaXRlbXMiLCJpc0NvbXBsZXhBcnJheSIsIl91cGRhdGVQcm9wZXJ0aWVzIiwiZWxlbWVudCIsImZvckVhY2giLCJwcm9wZXJ0eSIsIl9yZW5kZXJDb250cm9sIiwiZWxlbWVudE5hbWUiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJfc2V0VmFsdWUiLCJkZWZhdWx0IiwiY3VycmVudFRhcmdldCIsInNjaGVtYSIsImxhYmVsIiwidG1wIiwic3BsaXQiLCJsZW5ndGgiLCJpc05hTiIsInBhcnNlSW50Iiwib3B0aW9ucyIsInRpdGxlTWFwIiwibWFwIiwibXVsdGlwbGUiLCJjb2RlbWlycm9yT3B0aW9ucyIsInJvd3MiLCJkZXNjcmlwdGlvbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJfb25JbnB1dCIsImJpbmQiLCJhdXRvY29tcGxldGUiLCJtaW5DaGFycyIsImZpbHRlciIsImNsZWFyYWJsZSIsImFwcGVuZENoaWxkIiwiZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwidGFyZ2V0IiwidGFnTmFtZSIsImRldGFpbCIsImdldENvbnRyb2xzIiwiZnJvbSIsInNoYWRvd1Jvb3QiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZ2V0Q29udHJvbCIsInF1ZXJ5U2VsZWN0b3IiLCJjb250cm9sRWxlbWVudCIsInRvU3RyaW5nIiwidXBkYXRlZCIsImNoYW5nZWRQcm9wZXJ0aWVzIiwiaGFzIiwiUHJvbWlzZSIsImFsbCIsInVwZGF0ZUNvbXBsZXRlIiwidGhlbiIsImdldFVwZGF0ZUNvbXBsZXRlIiwiZm9ybWF0RXJyb3JNZXNzYWdlIiwiZXJyb3IiLCJhcmd1bWVudCIsIm1lc3NhZ2UiLCJyZXBsYWNlIiwic2hvdWxkVXBkYXRlIiwiZmluZCIsImVycm9yQ29udGFpbmVyIiwiY29udGFpbmVyIiwiaW5uZXJIVE1MIiwia2V5IiwibGV2ZWwiLCJyZW5kZXIiLCJzdHlsZXMiLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsR0FBVCxFQUFjQyxVQUFkLFFBQWdDLGFBQWhDO0FBQ0EsU0FBU0MsSUFBVCxRQUFxQixVQUFyQjtBQUNBLFNBQVNDLG1CQUFULFFBQW9DLGVBQXBDO0FBQ0EsT0FBTyxtQkFBUDtBQUNBLE9BQU8sMkJBQVA7QUFDQSxPQUFPLGtCQUFQO0FBQ0EsT0FBTyxvQkFBUDtBQUNBLE9BQU8sb0JBQVA7QUFDQSxPQUFPLHNCQUFQO0FBQ0EsT0FBTyxxQ0FBUDtBQUNBLE9BQU8sNkJBQVA7QUFDQSxPQUFPLDBCQUFQO0FBQ0EsT0FB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QUFFRG1CLEVBQUFBLE1BQU0sR0FBRztBQUNQLFdBQU81RyxJQUFJLElBQ1AsS0FBSzJDLGNBQUwsRUFETyx5Q0FFOEIsS0FBS25DLEVBQUwsR0FBVSxRQUZ4QyxXQUFYO0FBSUQ7O0FBRWdCLGFBQU5xRyxNQUFNLEdBQUc7QUFDbEIsV0FBTyxDQUNMO0FBQ0EvRyxJQUFBQSxHQUFHLDJ2QkFGRSxDQUFQO0FBMkVEOztBQWpZaUQ7QUFvWXBEZ0gsTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUF0QixDQUE2Qix3QkFBN0IsRUFBdUQ1RyxtQkFBdkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3NzLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0LWVsZW1lbnQnO1xuaW1wb3J0IHsgaHRtbCB9IGZyb20gJ2xpdC1odG1sJztcbmltcG9ydCB7IGRpc3BhdGNoQ3VzdG9tRXZlbnQgfSBmcm9tICcuLi9saWIvZXZlbnRzJztcbmltcG9ydCAnLi4vYXRvbXMvZ3YtaW5wdXQnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1pbnB1dC1tZXNzYWdlJztcbmltcG9ydCAnLi4vYXRvbXMvZ3YtdGV4dCc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LXNlbGVjdCc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LXN3aXRjaCc7XG5pbXBvcnQgJy4uL21vbGVjdWxlcy9ndi1jb2RlJztcbmltcG9ydCAnLi4vbW9sZWN1bGVzL2d2LWV4cHJlc3Npb24tbGFuZ3VhZ2UnO1xuaW1wb3J0ICcuLi9tb2xlY3VsZXMvZ3YtY3Jvbi1lZGl0b3InO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1hdXRvY29tcGxldGUnO1xuaW1wb3J0ICcuLi9vcmdhbmlzbXMvZ3Ytc2NoZW1hLWZvcm0tYXJyYXknO1xuaW1wb3J0ICcuLi9vcmdhbmlzbXMvZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC1vYmplY3QnO1xuaW1wb3J0IHsgaXNDb2RlbWlycm9yLCBpc09iamVjdCB9IGZyb20gJy4uL2xpYi9zY2hlbWEtZm9ybSc7XG5cbmV4cG9ydCBjbGFzcyBHdlNjaGVtYUZvcm1Db250cm9sIGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICAgIGlkOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgbmFtZTogeyB0eXBlOiBTdHJpbmcsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHJlcXVpcmVkOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGRpc2FibGVkOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHJlYWRvbmx5OiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHRpdGxlOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgcGF0dGVybjogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICAgIGNvbnRyb2w6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBlcnJvcnM6IHsgdHlwZTogQXJyYXkgfSxcbiAgICAgIHZhbHVlOiB7IHR5cGU6IE9iamVjdCwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgc2tlbGV0b246IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgaGlkZGVuOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHdyaXRlT25seTogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgLy8gV2hlbiBmb3JtIGhhcyBlcnJvcnMsIHRoZSBjb250cm9sIGlzIG5vdCB1cGRhdGUgdG8gY29uc2VydmUgdGhlIGVycm9yIHN0YXRlLlxuICAgIC8vIFRoaXMgbGlzdCBpcyB1c2VkIHRvIGZvcmNlIHRoZSB1cGRhdGUgb2YgcHJvcGVydGllcyBldmVuIGluIGVycm9yIGNhc2UuXG4gICAgdGhpcy5fb2JzZXJ2ZWRQcm9wZXJ0aWVzID0gWydkaXNhYmxlZCcsICdyZWFkb25seScsICdyZXF1aXJlZCddO1xuICB9XG5cbiAgaXNFeHByZXNzaW9uTGFuZ3VhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddICYmIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddWydleHByZXNzaW9uLWxhbmd1YWdlJ10gIT0gbnVsbDtcbiAgfVxuXG4gIGlzQ3JvbkV4cHJlc3Npb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddICYmIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddWydjcm9uLWV4cHJlc3Npb24nXSA9PT0gdHJ1ZTtcbiAgfVxuXG4gIGlzUGFzc3dvcmQoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY29udHJvbC53cml0ZU9ubHkgPT09IHRydWUgfHxcbiAgICAgICh0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS50eXBlICE9IG51bGwgJiYgdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10udHlwZSA9PT0gJ3Bhc3N3b3JkJylcbiAgICApO1xuICB9XG5cbiAgZ2V0UGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddICYmIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLnBsYWNlaG9sZGVyID8gdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10ucGxhY2Vob2xkZXIgOiBudWxsO1xuICB9XG5cbiAgaXNDb2RlbWlycm9yKCkge1xuICAgIHJldHVybiBpc0NvZGVtaXJyb3IodGhpcy5jb250cm9sKTtcbiAgfVxuXG4gIGlzT2JqZWN0KCkge1xuICAgIHJldHVybiBpc09iamVjdCh0aGlzLmNvbnRyb2wpO1xuICB9XG5cbiAgaXNBdXRvY29tcGxldGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddICYmIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLmV2ZW50ICE9IG51bGwgJiYgdGhpcy5jb250cm9sLnR5cGUgPT09ICdzdHJpbmcnO1xuICB9XG5cbiAgaXNUZXh0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXSAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS50eXBlID09PSAndGV4dCcgJiYgdGhpcy5jb250cm9sLnR5cGUgPT09ICdzdHJpbmcnO1xuICB9XG5cbiAgZ2V0RWxlbWVudE5hbWUoKSB7XG4gICAgaWYgKHRoaXMuaXNPYmplY3QoKSkge1xuICAgICAgcmV0dXJuICdndi1zY2hlbWEtZm9ybS1jb250cm9sLW9iamVjdCc7XG4gICAgfVxuICAgIGlmICgodGhpcy5jb250cm9sLmVudW0gfHwgKHRoaXMuY29udHJvbC5pdGVtcyAmJiB0aGlzLmNvbnRyb2wuaXRlbXMuZW51bSkpICYmICF0aGlzLmlzQXV0b2NvbXBsZXRlKCkpIHtcbiAgICAgIHJldHVybiAnZ3Ytc2VsZWN0JztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNDb21wbGV4QXJyYXkoKSkge1xuICAgICAgcmV0dXJuICdndi1zY2hlbWEtZm9ybS1hcnJheSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgcmV0dXJuICdndi1idXR0b24nO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb250cm9sLnR5cGUgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuICdndi1zd2l0Y2gnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0V4cHJlc3Npb25MYW5ndWFnZSgpKSB7XG4gICAgICByZXR1cm4gJ2d2LWV4cHJlc3Npb24tbGFuZ3VhZ2UnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0NvZGVtaXJyb3IoKSkge1xuICAgICAgcmV0dXJuICdndi1jb2RlJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNDcm9uRXhwcmVzc2lvbigpKSB7XG4gICAgICByZXR1cm4gJ2d2LWNyb24tZWRpdG9yJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNUZXh0KCkpIHtcbiAgICAgIHJldHVybiAnZ3YtdGV4dCc7XG4gICAgfVxuXG4gICAgcmV0dXJuICdndi1pbnB1dCc7XG4gIH1cblxuICBpc0NvbXBsZXhBcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sLnR5cGUgPT09ICdhcnJheScgJiYgIXRoaXMuY29udHJvbC5pdGVtcy5lbnVtO1xuICB9XG5cbiAgX3VwZGF0ZVByb3BlcnRpZXMoZWxlbWVudCkge1xuICAgIGlmIChlbGVtZW50ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX29ic2VydmVkUHJvcGVydGllcy5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBpZiAodGhpc1twcm9wZXJ0eV0gIT0gbnVsbCkge1xuICAgICAgICAgIGVsZW1lbnRbcHJvcGVydHldID0gdGhpc1twcm9wZXJ0eV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIF9yZW5kZXJDb250cm9sKCkge1xuICAgIGNvbnN0IGVsZW1lbnROYW1lID0gdGhpcy5nZXRFbGVtZW50TmFtZSgpO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnROYW1lKTtcbiAgICBlbGVtZW50LmlkID0gdGhpcy5pZDtcbiAgICBlbGVtZW50Lm5hbWUgPSB0aGlzLmlkO1xuICAgIGVsZW1lbnQuc2tlbGV0b24gPSB0aGlzLnNrZWxldG9uO1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZm9ybV9fY29udHJvbCcpO1xuXG4gICAgaWYgKHRoaXMudmFsdWUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fc2V0VmFsdWUoZWxlbWVudCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnZhbHVlID09IG51bGwgJiYgdGhpcy5jb250cm9sLmRlZmF1bHQgIT0gbnVsbCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY29udHJvbC5kZWZhdWx0O1xuICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnZGVmYXVsdC12YWx1ZScsIHsgdmFsdWU6IHRoaXMudmFsdWUsIGN1cnJlbnRUYXJnZXQ6IGVsZW1lbnQsIGNvbnRyb2w6IHRoaXMuY29udHJvbCB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMudmFsdWUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fc2V0VmFsdWUoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udHJvbC50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgZWxlbWVudC5zY2hlbWEgPSB0aGlzLmNvbnRyb2w7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQ29tcGxleEFycmF5KCkpIHtcbiAgICAgIGVsZW1lbnQuc2NoZW1hID0gdGhpcy5jb250cm9sLml0ZW1zO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZVByb3BlcnRpZXMoZWxlbWVudCk7XG5cbiAgICBpZiAodGhpcy5jb250cm9sLnRpdGxlKSB7XG4gICAgICBlbGVtZW50LmxhYmVsID0gdGhpcy5jb250cm9sLnRpdGxlO1xuICAgICAgZWxlbWVudC50aXRsZSA9IHRoaXMuY29udHJvbC50aXRsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdG1wID0gdGhpcy5pZC5zcGxpdCgnLicpO1xuICAgICAgY29uc3QgdGl0bGUgPSB0bXBbdG1wLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKGlzTmFOKHBhcnNlSW50KHRpdGxlLCAxMCkpKSB7XG4gICAgICAgIGVsZW1lbnQubGFiZWwgPSB0aXRsZTtcbiAgICAgICAgZWxlbWVudC50aXRsZSA9IHRpdGxlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRyb2wucGF0dGVybikge1xuICAgICAgZWxlbWVudC5wYXR0ZXJuID0gdGhpcy5jb250cm9sLnBhdHRlcm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udHJvbC50eXBlID09PSAnaW50ZWdlcicpIHtcbiAgICAgIGVsZW1lbnQudHlwZSA9ICdudW1iZXInO1xuICAgIH1cblxuICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5nZXRQbGFjZWhvbGRlcigpO1xuXG4gICAgaWYgKHRoaXMuY29udHJvbC5lbnVtIHx8ICh0aGlzLmNvbnRyb2wuaXRlbXMgJiYgdGhpcy5jb250cm9sLml0ZW1zLmVudW0pKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jb250cm9sLmVudW0gfHwgdGhpcy5jb250cm9sLml0ZW1zLmVudW07XG4gICAgICBpZiAodGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gJiYgdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10udGl0bGVNYXApIHtcbiAgICAgICAgZWxlbWVudC5vcHRpb25zID0gb3B0aW9ucy5tYXAoKHZhbHVlKSA9PiAoe1xuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIGxhYmVsOiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS50aXRsZU1hcFt2YWx1ZV0gfHwgdmFsdWUsXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jb250cm9sLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgZWxlbWVudC5tdWx0aXBsZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQ29kZW1pcnJvcigpKSB7XG4gICAgICBlbGVtZW50Lm9wdGlvbnMgPSB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS5jb2RlbWlycm9yT3B0aW9ucztcbiAgICAgIGlmICh0aGlzLmNvbnRyb2wuZGVmYXVsdCAhPSBudWxsICYmIGVsZW1lbnQub3B0aW9ucy52YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGVsZW1lbnQub3B0aW9ucy52YWx1ZSA9IHRoaXMuY29udHJvbC5kZWZhdWx0O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5pc0V4cHJlc3Npb25MYW5ndWFnZSgpKSB7XG4gICAgICBlbGVtZW50Lm9wdGlvbnMgPSB7fTtcbiAgICAgIGVsZW1lbnQucm93cyA9IDE7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzUGFzc3dvcmQoKSkge1xuICAgICAgZWxlbWVudC50eXBlID0gJ3Bhc3N3b3JkJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250cm9sLmRlc2NyaXB0aW9uKSB7XG4gICAgICBlbGVtZW50LmRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9sLmRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIGlmIChwbGFjZWhvbGRlciAhPSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5pc0V4cHJlc3Npb25MYW5ndWFnZSgpIHx8IHRoaXMuaXNDb2RlbWlycm9yKCkpIHtcbiAgICAgICAgZWxlbWVudC5vcHRpb25zLnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50LnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGAke2VsZW1lbnROYW1lfTppbnB1dGAsIHRoaXMuX29uSW5wdXQuYmluZCh0aGlzKSk7XG5cbiAgICBsZXQgY3VycmVudFRhcmdldDtcbiAgICBpZiAodGhpcy5pc0F1dG9jb21wbGV0ZSgpKSB7XG4gICAgICBjb25zdCBhdXRvY29tcGxldGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdndi1hdXRvY29tcGxldGUnKTtcbiAgICAgIGF1dG9jb21wbGV0ZS5taW5DaGFycyA9IDA7XG4gICAgICBhdXRvY29tcGxldGUuZmlsdGVyID0gdHJ1ZTtcbiAgICAgIGVsZW1lbnQuY2xlYXJhYmxlID0gdHJ1ZTtcbiAgICAgIGF1dG9jb21wbGV0ZS5pZCA9IHRoaXMuaWQ7XG4gICAgICBhdXRvY29tcGxldGUuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICBhdXRvY29tcGxldGUuYWRkRXZlbnRMaXN0ZW5lcihgZ3YtYXV0b2NvbXBsZXRlOnNlbGVjdGAsIHRoaXMuX29uSW5wdXQuYmluZCh0aGlzKSk7XG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoYGd2LWlucHV0OmNsZWFyYCwgdGhpcy5fb25JbnB1dC5iaW5kKHRoaXMpKTtcbiAgICAgIGN1cnJlbnRUYXJnZXQgPSBhdXRvY29tcGxldGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRUYXJnZXQgPSBlbGVtZW50O1xuICAgIH1cbiAgICBpZiAodGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gIT0gbnVsbCkge1xuICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnY29udHJvbC1yZWFkeScsIHtcbiAgICAgICAgY3VycmVudFRhcmdldCxcbiAgICAgICAgY29udHJvbDogdGhpcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY3VycmVudFRhcmdldDtcbiAgfVxuXG4gIF9vbklucHV0KGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBsZXQgdmFsdWUgPSBudWxsO1xuICAgIGlmIChlLnRhcmdldC50YWdOYW1lID09PSAnR1YtQVVUT0NPTVBMRVRFJykge1xuICAgICAgdmFsdWUgPSBlLmRldGFpbC52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBlLmRldGFpbDtcbiAgICB9XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnY2hhbmdlJywgeyB2YWx1ZSwgY3VycmVudFRhcmdldDogZS50YXJnZXQsIGNvbnRyb2w6IHRoaXMuY29udHJvbCB9KTtcbiAgfVxuXG4gIGdldENvbnRyb2xzKCkge1xuICAgIHJldHVybiBbXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1zY2hlbWEtZm9ybS1jb250cm9sJykpLFxuICAgICAgLi4uQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC1hcnJheScpKSxcbiAgICAgIC4uLkFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wtb2JqZWN0JykpLFxuICAgIF07XG4gIH1cblxuICBnZXRDb250cm9sKGlkKSB7XG4gICAgaWYgKGlkID09IG51bGwpIHtcbiAgICAgIGlkID0gdGhpcy5pZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGBbaWQ9XCIke2lkfVwiXWApO1xuICB9XG5cbiAgX3NldFZhbHVlKGNvbnRyb2xFbGVtZW50KSB7XG4gICAgaWYgKHRoaXMudmFsdWUgIT0gbnVsbCAmJiBjb250cm9sRWxlbWVudCAhPSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5jb250cm9sLnR5cGUgPT09ICdib29sZWFuJyB8fCB0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ2FycmF5JyB8fCB0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29udHJvbEVsZW1lbnQudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udHJvbEVsZW1lbnQudmFsdWUgPSB0aGlzLnZhbHVlLnRvU3RyaW5nID8gdGhpcy52YWx1ZS50b1N0cmluZygpIDogdGhpcy52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbnRyb2xFbGVtZW50O1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcykge1xuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3ZhbHVlJykpIHtcbiAgICAgIFByb21pc2UuYWxsKHRoaXMuZ2V0Q29udHJvbHMoKS5tYXAoKGNvbnRyb2wpID0+IGNvbnRyb2wudXBkYXRlQ29tcGxldGUpKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5nZXRDb250cm9sKCkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0VXBkYXRlQ29tcGxldGUoKSB7XG4gICAgYXdhaXQgc3VwZXIuZ2V0VXBkYXRlQ29tcGxldGUoKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmdldENvbnRyb2xzKCkubWFwKChlKSA9PiBlLnVwZGF0ZUNvbXBsZXRlKSk7XG4gIH1cblxuICBmb3JtYXRFcnJvck1lc3NhZ2UoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3Iuc2NoZW1hLnByb3BlcnRpZXMgIT0gbnVsbCAmJiBlcnJvci5zY2hlbWEucHJvcGVydGllc1tlcnJvci5hcmd1bWVudF0gIT0gbnVsbCkge1xuICAgICAgY29uc3QgdGl0bGUgPSBlcnJvci5zY2hlbWEucHJvcGVydGllc1tlcnJvci5hcmd1bWVudF0udGl0bGU7XG4gICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yLm1lc3NhZ2UucmVwbGFjZShlcnJvci5hcmd1bWVudCwgdGl0bGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXJyb3IubWVzc2FnZTtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcykge1xuICAgIGlmICh0aGlzLl9vYnNlcnZlZFByb3BlcnRpZXMuZmluZCgocHJvcGVydHkpID0+IGNoYW5nZWRQcm9wZXJ0aWVzLmhhcyhwcm9wZXJ0eSkpICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVByb3BlcnRpZXModGhpcy5nZXRDb250cm9sKCkpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Vycm9ycycpICYmIHRoaXMuZXJyb3JzICE9IG51bGwpIHtcbiAgICAgIC8vIFNldCBlcnJvcnMgdG8gY29tcGxleCBjb250cm9sc1xuICAgICAgdGhpcy5nZXRDb250cm9scygpLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgICAgY29udHJvbC5lcnJvcnMgPSB0aGlzLmVycm9ycztcbiAgICAgIH0pO1xuXG4gICAgICAvLyBGaW5kIHNpbXBsZSBjb250cm9scyBhbmQgYXBwZW5kIGVycm9yIG1lc3NhZ2VcbiAgICAgIGNvbnN0IGVycm9yQ29udGFpbmVyID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mb3JtX19jb250cm9sLWVycm9yJyk7XG4gICAgICBlcnJvckNvbnRhaW5lci5mb3JFYWNoKChjb250YWluZXIpID0+IChjb250YWluZXIuaW5uZXJIVE1MID0gJycpKTtcbiAgICAgIHRoaXMuZXJyb3JzLmZvckVhY2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGVycm9yLnByb3BlcnR5ID09PSAnaW5zdGFuY2UnID8gZXJyb3IuYXJndW1lbnQgOiBlcnJvci5wcm9wZXJ0eS5yZXBsYWNlKCdpbnN0YW5jZS4nLCAnJyk7XG4gICAgICAgIGNvbnN0IGVycm9yQ29udGFpbmVyID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYFtpZD1cIiR7a2V5fS1lcnJvclwiXWApO1xuICAgICAgICBpZiAoZXJyb3JDb250YWluZXIpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZ3YtaW5wdXQtbWVzc2FnZScpO1xuICAgICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gdGhpcy5mb3JtYXRFcnJvck1lc3NhZ2UoZXJyb3IpO1xuICAgICAgICAgIG1lc3NhZ2UubGV2ZWwgPSAnd2Fybic7XG4gICAgICAgICAgZXJyb3JDb250YWluZXIuYXBwZW5kQ2hpbGQobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgICR7dGhpcy5fcmVuZGVyQ29udHJvbCgpfVxuICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2NvbnRyb2wtZXJyb3JcIiBpZD1cIiR7dGhpcy5pZCArICctZXJyb3InfVwiPjwvZGl2PlxuICAgIGA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIG1hcmdpbjogdmFyKC0tZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC0tbSwgMC40cmVtKTtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtoaWRkZW5dKSB7XG4gICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtZGVzY3JpcHRpb24sXG4gICAgICAgIC5mb3JtX19jb250cm9sLWVycm9yIHtcbiAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9fY29udHJvbC1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtbGFiZWwge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICBtYXJnaW46IDAuMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19jb250cm9sLWxhYmVsIGxhYmVsIHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtYXJyYXksXG4gICAgICAgIC5mb3JtX19jb250cm9sLW9iamVjdCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtZW51bSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAvKmFsaWduLWl0ZW1zOiBmbGV4LWVuZDsqL1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtYXJyYXkgZ3YtYnV0dG9uIHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19jb250cm9sIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cblxuICAgICAgICBndi1zZWxlY3QsXG4gICAgICAgIGd2LWlucHV0LFxuICAgICAgICBndi1jb2RlLFxuICAgICAgICBndi1zd2l0Y2gsXG4gICAgICAgIGd2LWV4cHJlc3Npb24tbGFuZ3VhZ2Uge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1hcmdpbjogMC4ycmVtIDA7XG4gICAgICAgIH1cblxuICAgICAgICBndi1zZWxlY3Q6aG92ZXIsXG4gICAgICAgIGd2LWF1dG9jb21wbGV0ZTpob3ZlciB7XG4gICAgICAgICAgei1pbmRleDogNzA7XG4gICAgICAgIH1cbiAgICAgIGAsXG4gICAgXTtcbiAgfVxufVxuXG53aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdndi1zY2hlbWEtZm9ybS1jb250cm9sJywgR3ZTY2hlbWFGb3JtQ29udHJvbCk7XG4iXX0=
|
|
411
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS1jb250cm9sLmpzIl0sIm5hbWVzIjpbImNzcyIsIkxpdEVsZW1lbnQiLCJodG1sIiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsImlzQ29kZW1pcnJvciIsImlzT2JqZWN0IiwiaXNDb21wbGV4QXJyYXkiLCJHdlNjaGVtYUZvcm1Db250cm9sIiwicHJvcGVydGllcyIsInR5cGUiLCJTdHJpbmciLCJpZCIsInJlZmxlY3QiLCJuYW1lIiwicmVxdWlyZWQiLCJCb29sZWFuIiwiZGlzYWJsZWQiLCJyZWFkb25seSIsInRpdGxlIiwicGF0dGVybiIsImNvbnRyb2wiLCJPYmplY3QiLCJlcnJvcnMiLCJBcnJheSIsInZhbHVlIiwic2tlbGV0b24iLCJoaWRkZW4iLCJ3cml0ZU9ubHkiLCJjb21wYWN0IiwiY29uc3RydWN0b3IiLCJfb2JzZXJ2ZWRQcm9wZXJ0aWVzIiwiaXNFeHByZXNzaW9uTGFuZ3VhZ2UiLCJpc0Nyb25FeHByZXNzaW9uIiwiaXNQYXNzd29yZCIsImdldFBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJpc0F1dG9jb21wbGV0ZSIsImV2ZW50IiwiaXNUZXh0IiwiZ2V0RWxlbWVudE5hbWUiLCJlbnVtIiwiaXRlbXMiLCJfdXBkYXRlUHJvcGVydGllcyIsImVsZW1lbnQiLCJmb3JFYWNoIiwicHJvcGVydHkiLCJfcmVuZGVyQ29udHJvbCIsImVsZW1lbnROYW1lIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwiX3NldFZhbHVlIiwiZGVmYXVsdCIsImN1cnJlbnRUYXJnZXQiLCJzY2hlbWEiLCJsYWJlbCIsInRtcCIsInNwbGl0IiwibGVuZ3RoIiwiaXNOYU4iLCJwYXJzZUludCIsInJvd3MiLCJhdXRvc2l6ZSIsImRlc2NyaXB0aW9uIiwib3B0aW9ucyIsInRpdGxlTWFwIiwibWFwIiwibXVsdGlwbGUiLCJjb2RlbWlycm9yT3B0aW9ucyIsImFkZEV2ZW50TGlzdGVuZXIiLCJfb25JbnB1dCIsImJpbmQiLCJhdXRvY29tcGxldGUiLCJtaW5DaGFycyIsImZpbHRlciIsImNsZWFyYWJsZSIsImFwcGVuZENoaWxkIiwiZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwidGFyZ2V0IiwidGFnTmFtZSIsImRldGFpbCIsImdldENvbnRyb2xzIiwiZnJvbSIsInNoYWRvd1Jvb3QiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZ2V0Q29udHJvbCIsInF1ZXJ5U2VsZWN0b3IiLCJjb250cm9sRWxlbWVudCIsInRvU3RyaW5nIiwidXBkYXRlZCIsImNoYW5nZWRQcm9wZXJ0aWVzIiwiaGFzIiwiUHJvbWlzZSIsImFsbCIsInVwZGF0ZUNvbXBsZXRlIiwidGhlbiIsImdldFVwZGF0ZUNvbXBsZXRlIiwiZm9ybWF0RXJyb3JNZXNzYWdlIiwiZXJyb3IiLCJhcmd1bWVudCIsIm1lc3NhZ2UiLCJyZXBsYWNlIiwic2hvdWxkVXBkYXRlIiwiZmluZCIsImVycm9yQ29udGFpbmVyIiwiY29udGFpbmVyIiwiaW5uZXJIVE1MIiwia2V5IiwibGV2ZWwiLCJyZW5kZXIiLCJzdHlsZXMiLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsImRlZmluZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsR0FBVCxFQUFjQyxVQUFkLFFBQWdDLGFBQWhDO0FBQ0EsU0FBU0MsSUFBVCxRQUFxQixVQUFyQjtBQUNBLFNBQVNDLG1CQUFULFFBQW9DLGVBQXBDO0FBQ0EsT0FBTyxtQkFBUDtBQUNBLE9BQU8sMkJBQVA7QUFDQSxPQUFPLGtCQUFQO0FBQ0EsT0FBTyxvQkFBUDtBQUNBLE9BQU8sb0JBQVA7QUFDQSxPQUFPLHNCQUFQO0FBQ0EsT0FBTyxxQ0FBUDtBQUNBLE9BQU8sNkJBQVA7QUFDQSxPQUFPLDBCQUFQO0FBQ0EsT0FBTyxtQ0FBUDtBQUNBLE9BQU8sNENBQVA7QUFDQSxTQUFTQyxZQUFULEVBQXVCQyxRQUF2QixFQUFpQ0MsY0FBakMsUUFBdUQsb0JBQXZEO0FBRUEsT0FBTyxNQUFNQyxtQkFBTixTQUFrQ04sVUFBbEMsQ0FBNkM7QUFDN0IsYUFBVk8sVUFBVSxHQUFHO0FBQ3RCLFdBQU87QUFDTEMsTUFBQUEsSUFBSSxFQUFFO0FBQUVBLFFBQUFBLElBQUksRUFBRUM7QUFBUixPQUREO0FBRUxDLE1BQUFBLEVBQUUsRUFBRTtBQUFFRixRQUFBQSxJQUFJLEVBQUVDLE1BQVI7QUFBZ0JFLFFBQUFBLE9BQU8sRUFBRTtBQUF6QixPQUZDO0FBR0xDLE1BQUFBLElBQUksRUFBRTtBQUFFSixRQUFBQSxJQUFJLEVBQUVDLE1BQVI7QUFBZ0JFLFFBQUFBLE9BQU8sRUFBRTtBQUF6QixPQUhEO0FBSUxFLE1BQUFBLFFBQVEsRUFBRTtBQUFFTCxRQUFBQSxJQUFJLEVBQUVNLE9BQVI7QUFBaUJILFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQUpMO0FBS0xJLE1BQUFBLFFBQVEsRUFBRTtBQUFFUCxRQUFBQSxJQUFJLEVBQUVNLE9BQVI7QUFBaUJILFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQUxMO0FBTUxLLE1BQUFBLFFBQVEsRUFBRTtBQUFFUixRQUFBQSxJQUFJLEVBQUVNLE9BQVI7QUFBaUJILFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQU5MO0FBT0xNLE1BQUFBLEtBQUssRUFBRTtBQUFFVCxRQUFBQSxJQUFJLEVBQUVDLE1BQVI7QUFBZ0JFLFFBQUFBLE9BQU8sRUFBRTtBQUF6QixPQVBGO0FBUUxPLE1BQUFBLE9BQU8sRUFBRTtBQUFFVixRQUFBQSxJQUFJLEVBQUVDO0FBQVIsT0FSSjtBQVNMVSxNQUFBQSxPQUFPLEVBQUU7QUFBRVgsUUFBQUEsSUFBSSxFQUFFWTtBQUFSLE9BVEo7QUFVTEMsTUFBQUEsTUFBTSxFQUFFO0FBQUViLFFBQUFBLElBQUksRUFBRWM7QUFBUixPQVZIO0FBV0xDLE1BQUFBLEtBQUssRUFBRTtBQUFFZixRQUFBQSxJQUFJLEVBQUVZLE1BQVI7QUFBZ0JULFFBQUFBLE9BQU8sRUFBRTtBQUF6QixPQVhGO0FBWUxhLE1BQUFBLFFBQVEsRUFBRTtBQUFFaEIsUUFBQUEsSUFBSSxFQUFFTSxPQUFSO0FBQWlCSCxRQUFBQSxPQUFPLEVBQUU7QUFBMUIsT0FaTDtBQWFMYyxNQUFBQSxNQUFNLEVBQUU7QUFBRWpCLFFBQUFBLElBQUksRUFBRU0sT0FBUjtBQUFpQkgsUUFBQUEsT0FBTyxFQUFFO0FBQTFCLE9BYkg7QUFjTGUsTUFBQUEsU0FBUyxFQUFFO0FBQUVsQixRQUFBQSxJQUFJLEVBQUVNLE9BQVI7QUFBaUJILFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQWROO0FBZUxnQixNQUFBQSxPQUFPLEVBQUU7QUFBRW5CLFFBQUFBLElBQUksRUFBRU07QUFBUjtBQWZKLEtBQVA7QUFpQkQ7O0FBRURjLEVBQUFBLFdBQVcsR0FBRztBQUNaLFlBRFksQ0FFWjtBQUNBOztBQUNBLFNBQUtDLG1CQUFMLEdBQTJCLENBQUMsVUFBRCxFQUFhLFVBQWIsRUFBeUIsVUFBekIsQ0FBM0I7QUFDRDs7QUFFREMsRUFBQUEsb0JBQW9CLEdBQUc7QUFDckIsV0FBTyxLQUFLWCxPQUFMLENBQWEsZUFBYixLQUFpQyxLQUFLQSxPQUFMLENBQWEsZUFBYixFQUE4QixxQkFBOUIsS0FBd0QsSUFBaEc7QUFDRDs7QUFFRFksRUFBQUEsZ0JBQWdCLEdBQUc7QUFDakIsV0FBTyxLQUFLWixPQUFMLENBQWEsZUFBYixLQUFpQyxLQUFLQSxPQUFMLENBQWEsZUFBYixFQUE4QixpQkFBOUIsTUFBcUQsSUFBN0Y7QUFDRDs7QUFFRGEsRUFBQUEsVUFBVSxHQUFHO0FBQ1gsV0FDRSxLQUFLYixPQUFMLENBQWFPLFNBQWIsS0FBMkIsSUFBM0IsSUFDQyxLQUFLUCxPQUFMLENBQWEsZUFBYixLQUFpQyxLQUFLQSxPQUFMLENBQWEsZUFBYixFQUE4QlgsSUFBOUIsSUFBc0MsSUFBdkUsSUFBK0UsS0FBS1csT0FBTCxDQUFhLGVBQWIsRUFBOEJYLElBQTlCLEtBQXVDLFVBRnpIO0FBSUQ7O0FBRUR5QixFQUFBQSxjQUFjLEdBQUc7QUFDZixXQUFPLEtBQUtkLE9BQUwsQ0FBYSxlQUFiLEtBQWlDLEtBQUtBLE9BQUwsQ0FBYSxlQUFiLEVBQThCZSxXQUEvRCxHQUE2RSxLQUFLZixPQUFMLENBQWEsZUFBYixFQUE4QmUsV0FBM0csR0FBeUgsSUFBaEk7QUFDRDs7QUFFRC9CLEVBQUFBLFlBQVksR0FBRztBQUNiLFdBQU9BLFlBQVksQ0FBQyxLQUFLZ0IsT0FBTixDQUFuQjtBQUNEOztBQUVEZixFQUFBQSxRQUFRLEdBQUc7QUFDVCxXQUFPQSxRQUFRLENBQUMsS0FBS2UsT0FBTixDQUFmO0FBQ0Q7O0FBRURnQixFQUFBQSxjQUFjLEdBQUc7QUFDZixXQUFPLEtBQUtoQixPQUFMLENBQWEsZUFBYixLQUFpQyxLQUFLQSxPQUFMLENBQWEsZUFBYixFQUE4QmlCLEtBQTlCLElBQXVDLElBQXhFLElBQWdGLEtBQUtqQixPQUFMLENBQWFYLElBQWIsS0FBc0IsUUFBN0c7QUFDRDs7QUFFRDZCLEVBQUFBLE1BQU0sR0FBRztBQUNQLFdBQU8sS0FBS2xCLE9BQUwsQ0FBYSxlQUFiLEtBQWlDLEtBQUtBLE9BQUwsQ0FBYSxlQUFiLEVBQThCWCxJQUE5QixLQUF1QyxNQUF4RSxJQUFrRixLQUFLVyxPQUFMLENBQWFYLElBQWIsS0FBc0IsUUFBL0c7QUFDRDs7QUFFRDhCLEVBQUFBLGNBQWMsR0FBRztBQUNmLFFBQUksS0FBS2xDLFFBQUwsRUFBSixFQUFxQjtBQUNuQixhQUFPLCtCQUFQO0FBQ0Q7O0FBQ0QsUUFBSSxDQUFDLEtBQUtlLE9BQUwsQ0FBYW9CLElBQWIsSUFBc0IsS0FBS3BCLE9BQUwsQ0FBYXFCLEtBQWIsSUFBc0IsS0FBS3JCLE9BQUwsQ0FBYXFCLEtBQWIsQ0FBbUJELElBQWhFLEtBQTBFLENBQUMsS0FBS0osY0FBTCxFQUEvRSxFQUFzRztBQUNwRyxhQUFPLFdBQVA7QUFDRCxLQUZELE1BRU8sSUFBSTlCLGNBQWMsQ0FBQyxLQUFLYyxPQUFOLENBQWxCLEVBQWtDO0FBQ3ZDLGFBQU8sc0JBQVA7QUFDRCxLQUZNLE1BRUEsSUFBSSxLQUFLQSxPQUFMLENBQWFYLElBQWIsS0FBc0IsT0FBMUIsRUFBbUM7QUFDeEMsYUFBTyxXQUFQO0FBQ0QsS0FGTSxNQUVBLElBQUksS0FBS1csT0FBTCxDQUFhWCxJQUFiLEtBQXNCLFNBQTFCLEVBQXFDO0FBQzFDLGFBQU8sV0FBUDtBQUNELEtBRk0sTUFFQSxJQUFJLEtBQUtzQixvQkFBTCxFQUFKLEVBQWlDO0FBQ3RDLGFBQU8sd0JBQVA7QUFDRCxLQUZNLE1BRUEsSUFBSSxLQUFLM0IsWUFBTCxFQUFKLEVBQXlCO0FBQzlCLGFBQU8sU0FBUDtBQUNELEtBRk0sTUFFQSxJQUFJLEtBQUs0QixnQkFBTCxFQUFKLEVBQTZCO0FBQ2xDLGFBQU8sZ0JBQVA7QUFDRCxLQUZNLE1BRUEsSUFBSSxLQUFLTSxNQUFMLEVBQUosRUFBbUI7QUFDeEIsYUFBTyxTQUFQO0FBQ0Q7O0FBRUQsV0FBTyxVQUFQO0FBQ0Q7O0FBRURJLEVBQUFBLGlCQUFpQixDQUFDQyxPQUFELEVBQVU7QUFDekIsUUFBSUEsT0FBTyxJQUFJLElBQWYsRUFBcUI7QUFDbkIsV0FBS2IsbUJBQUwsQ0FBeUJjLE9BQXpCLENBQWtDQyxRQUFELElBQWM7QUFDN0MsWUFBSSxLQUFLQSxRQUFMLEtBQWtCLElBQXRCLEVBQTRCO0FBQzFCRixVQUFBQSxPQUFPLENBQUNFLFFBQUQsQ0FBUCxHQUFvQixLQUFLQSxRQUFMLENBQXBCO0FBQ0Q7QUFDRixPQUpEO0FBS0Q7QUFDRjs7QUFFREMsRUFBQUEsY0FBYyxHQUFHO0FBQ2YsVUFBTUMsV0FBVyxHQUFHLEtBQUtSLGNBQUwsRUFBcEI7QUFDQSxVQUFNSSxPQUFPLEdBQUdLLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QkYsV0FBdkIsQ0FBaEI7QUFDQUosSUFBQUEsT0FBTyxDQUFDaEMsRUFBUixHQUFhLEtBQUtBLEVBQWxCO0FBQ0FnQyxJQUFBQSxPQUFPLENBQUM5QixJQUFSLEdBQWUsS0FBS0YsRUFBcEI7QUFDQWdDLElBQUFBLE9BQU8sQ0FBQ2xCLFFBQVIsR0FBbUIsS0FBS0EsUUFBeEI7QUFDQWtCLElBQUFBLE9BQU8sQ0FBQ08sU0FBUixDQUFrQkMsR0FBbEIsQ0FBc0IsZUFBdEI7O0FBRUEsUUFBSSxLQUFLM0IsS0FBTCxJQUFjLElBQWxCLEVBQXdCO0FBQ3RCLFdBQUs0QixTQUFMLENBQWVULE9BQWY7QUFDRDs7QUFDRCxRQUFJLEtBQUtuQixLQUFMLElBQWMsSUFBZCxJQUFzQixLQUFLSixPQUFMLENBQWFpQyxPQUFiLElBQXdCLElBQWxELEVBQXdEO0FBQ3RELFdBQUs3QixLQUFMLEdBQWEsS0FBS0osT0FBTCxDQUFhaUMsT0FBMUI7QUFDQWxELE1BQUFBLG1CQUFtQixDQUFDLElBQUQsRUFBTyxlQUFQLEVBQXdCO0FBQUVxQixRQUFBQSxLQUFLLEVBQUUsS0FBS0EsS0FBZDtBQUFxQjhCLFFBQUFBLGFBQWEsRUFBRVgsT0FBcEM7QUFBNkN2QixRQUFBQSxPQUFPLEVBQUUsS0FBS0E7QUFBM0QsT0FBeEIsQ0FBbkI7QUFDRDs7QUFDRCxRQUFJLEtBQUtJLEtBQUwsSUFBYyxJQUFsQixFQUF3QjtBQUN0QixXQUFLNEIsU0FBTCxDQUFlVCxPQUFmO0FBQ0Q7O0FBRUQsUUFBSSxLQUFLdkIsT0FBTCxDQUFhWCxJQUFiLEtBQXNCLFFBQTFCLEVBQW9DO0FBQ2xDa0MsTUFBQUEsT0FBTyxDQUFDWSxNQUFSLEdBQWlCLEtBQUtuQyxPQUF0QjtBQUNELEtBRkQsTUFFTyxJQUFJZCxjQUFjLENBQUMsS0FBS2MsT0FBTixDQUFsQixFQUFrQztBQUN2Q3VCLE1BQUFBLE9BQU8sQ0FBQ1ksTUFBUixHQUFpQixLQUFLbkMsT0FBTCxDQUFhcUIsS0FBOUI7QUFDRDs7QUFFRCxTQUFLQyxpQkFBTCxDQUF1QkMsT0FBdkI7O0FBRUEsUUFBSSxLQUFLdkIsT0FBTCxDQUFhRixLQUFqQixFQUF3QjtBQUN0QnlCLE1BQUFBLE9BQU8sQ0FBQ2EsS0FBUixHQUFnQixLQUFLcEMsT0FBTCxDQUFhRixLQUE3QjtBQUNBeUIsTUFBQUEsT0FBTyxDQUFDekIsS0FBUixHQUFnQixLQUFLRSxPQUFMLENBQWFGLEtBQTdCO0FBQ0QsS0FIRCxNQUdPO0FBQ0wsWUFBTXVDLEdBQUcsR0FBRyxLQUFLOUMsRUFBTCxDQUFRK0MsS0FBUixDQUFjLEdBQWQsQ0FBWjtBQUNBLFlBQU14QyxLQUFLLEdBQUd1QyxHQUFHLENBQUNBLEdBQUcsQ0FBQ0UsTUFBSixHQUFhLENBQWQsQ0FBakI7O0FBQ0EsVUFBSUMsS0FBSyxDQUFDQyxRQUFRLENBQUMzQyxLQUFELEVBQVEsRUFBUixDQUFULENBQVQsRUFBZ0M7QUFDOUJ5QixRQUFBQSxPQUFPLENBQUNhLEtBQVIsR0FBZ0J0QyxLQUFoQjtBQUNBeUIsUUFBQUEsT0FBTyxDQUFDekIsS0FBUixHQUFnQkEsS0FBaEI7QUFDRDtBQUNGOztBQUVELFFBQUksS0FBS0UsT0FBTCxDQUFhRCxPQUFqQixFQUEwQjtBQUN4QndCLE1BQUFBLE9BQU8sQ0FBQ3hCLE9BQVIsR0FBa0IsS0FBS0MsT0FBTCxDQUFhRCxPQUEvQjtBQUNEOztBQUVELFFBQUksS0FBS0MsT0FBTCxDQUFhWCxJQUFiLEtBQXNCLFNBQTFCLEVBQXFDO0FBQ25Da0MsTUFBQUEsT0FBTyxDQUFDbEMsSUFBUixHQUFlLFFBQWY7QUFDRDs7QUFFRCxRQUFJLEtBQUs2QixNQUFMLEVBQUosRUFBbUI7QUFDakJLLE1BQUFBLE9BQU8sQ0FBQ21CLElBQVIsR0FBZSxDQUFmO0FBQ0FuQixNQUFBQSxPQUFPLENBQUNvQixRQUFSLEdBQW1CLElBQW5CO0FBQ0FwQixNQUFBQSxPQUFPLENBQUNSLFdBQVIsR0FBc0IsS0FBS2YsT0FBTCxDQUFhNEMsV0FBbkM7QUFDRDs7QUFFRCxVQUFNN0IsV0FBVyxHQUFHLEtBQUtELGNBQUwsRUFBcEI7O0FBRUEsUUFBSSxLQUFLZCxPQUFMLENBQWFvQixJQUFiLElBQXNCLEtBQUtwQixPQUFMLENBQWFxQixLQUFiLElBQXNCLEtBQUtyQixPQUFMLENBQWFxQixLQUFiLENBQW1CRCxJQUFuRSxFQUEwRTtBQUN4RSxZQUFNeUIsT0FBTyxHQUFHLEtBQUs3QyxPQUFMLENBQWFvQixJQUFiLElBQXFCLEtBQUtwQixPQUFMLENBQWFxQixLQUFiLENBQW1CRCxJQUF4RDs7QUFDQSxVQUFJLEtBQUtwQixPQUFMLENBQWEsZUFBYixLQUFpQyxLQUFLQSxPQUFMLENBQWEsZUFBYixFQUE4QjhDLFFBQW5FLEVBQTZFO0FBQzNFdkIsUUFBQUEsT0FBTyxDQUFDc0IsT0FBUixHQUFrQkEsT0FBTyxDQUFDRSxHQUFSLENBQWEzQyxLQUFELEtBQVk7QUFDeENBLFVBQUFBLEtBRHdDO0FBRXhDZ0MsVUFBQUEsS0FBSyxFQUFFLEtBQUtwQyxPQUFMLENBQWEsZUFBYixFQUE4QjhDLFFBQTlCLENBQXVDMUMsS0FBdkMsS0FBaURBO0FBRmhCLFNBQVosQ0FBWixDQUFsQjtBQUlELE9BTEQsTUFLTztBQUNMbUIsUUFBQUEsT0FBTyxDQUFDc0IsT0FBUixHQUFrQkEsT0FBbEI7QUFDRDs7QUFDRCxVQUFJLEtBQUs3QyxPQUFMLENBQWFYLElBQWIsS0FBc0IsT0FBMUIsRUFBbUM7QUFDakNrQyxRQUFBQSxPQUFPLENBQUN5QixRQUFSLEdBQW1CLElBQW5CO0FBQ0Q7QUFDRixLQWJELE1BYU8sSUFBSSxLQUFLaEUsWUFBTCxFQUFKLEVBQXlCO0FBQzlCdUMsTUFBQUEsT0FBTyxDQUFDc0IsT0FBUixHQUFrQixLQUFLN0MsT0FBTCxDQUFhLGVBQWIsRUFBOEJpRCxpQkFBaEQ7O0FBQ0EsVUFBSSxLQUFLakQsT0FBTCxDQUFhaUMsT0FBYixJQUF3QixJQUF4QixJQUFnQ1YsT0FBTyxDQUFDc0IsT0FBUixDQUFnQnpDLEtBQWhCLElBQXlCLElBQTdELEVBQW1FO0FBQ2pFbUIsUUFBQUEsT0FBTyxDQUFDc0IsT0FBUixDQUFnQnpDLEtBQWhCLEdBQXdCLEtBQUtKLE9BQUwsQ0FBYWlDLE9BQXJDO0FBQ0Q7QUFDRixLQUxNLE1BS0EsSUFBSSxLQUFLdEIsb0JBQUwsRUFBSixFQUFpQztBQUN0Q1ksTUFBQUEsT0FBTyxDQUFDc0IsT0FBUixHQUFrQixFQUFsQjtBQUNBdEIsTUFBQUEsT0FBTyxDQUFDbUIsSUFBUixHQUFlLENBQWY7QUFDRCxLQUhNLE1BR0EsSUFBSSxLQUFLN0IsVUFBTCxFQUFKLEVBQXVCO0FBQzVCVSxNQUFBQSxPQUFPLENBQUNsQyxJQUFSLEdBQWUsVUFBZjtBQUNEOztBQUVELFFBQUksS0FBS1csT0FBTCxDQUFhNEMsV0FBakIsRUFBOEI7QUFDNUJyQixNQUFBQSxPQUFPLENBQUNxQixXQUFSLEdBQXNCLEtBQUs1QyxPQUFMLENBQWE0QyxXQUFuQztBQUNEOztBQUVELFFBQUksS0FBS3BDLE9BQVQsRUFBa0I7QUFDaEJlLE1BQUFBLE9BQU8sQ0FBQ1IsV0FBUixHQUFzQlEsT0FBTyxDQUFDcUIsV0FBUixJQUF1QnJCLE9BQU8sQ0FBQ2EsS0FBckQ7QUFDQWIsTUFBQUEsT0FBTyxDQUFDYSxLQUFSLEdBQWdCLElBQWhCO0FBQ0FiLE1BQUFBLE9BQU8sQ0FBQ3FCLFdBQVIsR0FBc0IsSUFBdEI7QUFDQXJCLE1BQUFBLE9BQU8sQ0FBQ2YsT0FBUixHQUFrQixLQUFLQSxPQUF2QjtBQUNEOztBQUVELFFBQUlPLFdBQVcsSUFBSSxJQUFuQixFQUF5QjtBQUN2QixVQUFJLEtBQUtKLG9CQUFMLE1BQStCLEtBQUszQixZQUFMLEVBQW5DLEVBQXdEO0FBQ3REdUMsUUFBQUEsT0FBTyxDQUFDc0IsT0FBUixDQUFnQjlCLFdBQWhCLEdBQThCQSxXQUE5QjtBQUNELE9BRkQsTUFFTztBQUNMUSxRQUFBQSxPQUFPLENBQUNSLFdBQVIsR0FBc0JBLFdBQXRCO0FBQ0Q7QUFDRjs7QUFFRFEsSUFBQUEsT0FBTyxDQUFDMkIsZ0JBQVIsQ0FBMEIsR0FBRXZCLFdBQVksUUFBeEMsRUFBaUQsS0FBS3dCLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixJQUFuQixDQUFqRDtBQUVBLFFBQUlsQixhQUFKOztBQUNBLFFBQUksS0FBS2xCLGNBQUwsRUFBSixFQUEyQjtBQUN6QixZQUFNcUMsWUFBWSxHQUFHekIsUUFBUSxDQUFDQyxhQUFULENBQXVCLGlCQUF2QixDQUFyQjtBQUNBd0IsTUFBQUEsWUFBWSxDQUFDQyxRQUFiLEdBQXdCLENBQXhCO0FBQ0FELE1BQUFBLFlBQVksQ0FBQ0UsTUFBYixHQUFzQixJQUF0QjtBQUNBaEMsTUFBQUEsT0FBTyxDQUFDaUMsU0FBUixHQUFvQixJQUFwQjtBQUNBSCxNQUFBQSxZQUFZLENBQUM5RCxFQUFiLEdBQWtCLEtBQUtBLEVBQXZCO0FBQ0E4RCxNQUFBQSxZQUFZLENBQUNJLFdBQWIsQ0FBeUJsQyxPQUF6QjtBQUNBOEIsTUFBQUEsWUFBWSxDQUFDSCxnQkFBYixDQUErQix3QkFBL0IsRUFBd0QsS0FBS0MsUUFBTCxDQUFjQyxJQUFkLENBQW1CLElBQW5CLENBQXhEO0FBQ0E3QixNQUFBQSxPQUFPLENBQUMyQixnQkFBUixDQUEwQixnQkFBMUIsRUFBMkMsS0FBS0MsUUFBTCxDQUFjQyxJQUFkLENBQW1CLElBQW5CLENBQTNDO0FBQ0FsQixNQUFBQSxhQUFhLEdBQUdtQixZQUFoQjtBQUNELEtBVkQsTUFVTztBQUNMbkIsTUFBQUEsYUFBYSxHQUFHWCxPQUFoQjtBQUNEOztBQUNELFFBQUksS0FBS3ZCLE9BQUwsQ0FBYSxlQUFiLEtBQWlDLElBQXJDLEVBQTJDO0FBQ3pDakIsTUFBQUEsbUJBQW1CLENBQUMsSUFBRCxFQUFPLGVBQVAsRUFBd0I7QUFDekNtRCxRQUFBQSxhQUR5QztBQUV6Q2xDLFFBQUFBLE9BQU8sRUFBRTtBQUZnQyxPQUF4QixDQUFuQjtBQUlEOztBQUNELFdBQU9rQyxhQUFQO0FBQ0Q7O0FBRURpQixFQUFBQSxRQUFRLENBQUNPLENBQUQsRUFBSTtBQUNWQSxJQUFBQSxDQUFDLENBQUNDLGNBQUY7QUFDQUQsSUFBQUEsQ0FBQyxDQUFDRSxlQUFGO0FBQ0EsUUFBSXhELEtBQUssR0FBRyxJQUFaOztBQUNBLFFBQUlzRCxDQUFDLENBQUNHLE1BQUYsQ0FBU0MsT0FBVCxLQUFxQixpQkFBekIsRUFBNEM7QUFDMUMxRCxNQUFBQSxLQUFLLEdBQUdzRCxDQUFDLENBQUNLLE1BQUYsQ0FBUzNELEtBQWpCO0FBQ0QsS0FGRCxNQUVPO0FBQ0xBLE1BQUFBLEtBQUssR0FBR3NELENBQUMsQ0FBQ0ssTUFBVjtBQUNEOztBQUNEaEYsSUFBQUEsbUJBQW1CLENBQUMsSUFBRCxFQUFPLFFBQVAsRUFBaUI7QUFBRXFCLE1BQUFBLEtBQUY7QUFBUzhCLE1BQUFBLGFBQWEsRUFBRXdCLENBQUMsQ0FBQ0csTUFBMUI7QUFBa0M3RCxNQUFBQSxPQUFPLEVBQUUsS0FBS0E7QUFBaEQsS0FBakIsQ0FBbkI7QUFDRDs7QUFFRGdFLEVBQUFBLFdBQVcsR0FBRztBQUNaLFdBQU8sQ0FDTCxHQUFHN0QsS0FBSyxDQUFDOEQsSUFBTixDQUFXLEtBQUtDLFVBQUwsQ0FBZ0JDLGdCQUFoQixDQUFpQyx3QkFBakMsQ0FBWCxDQURFLEVBRUwsR0FBR2hFLEtBQUssQ0FBQzhELElBQU4sQ0FBVyxLQUFLQyxVQUFMLENBQWdCQyxnQkFBaEIsQ0FBaUMsOEJBQWpDLENBQVgsQ0FGRSxFQUdMLEdBQUdoRSxLQUFLLENBQUM4RCxJQUFOLENBQVcsS0FBS0MsVUFBTCxDQUFnQkMsZ0JBQWhCLENBQWlDLCtCQUFqQyxDQUFYLENBSEUsQ0FBUDtBQUtEOztBQUVEQyxFQUFBQSxVQUFVLENBQUM3RSxFQUFELEVBQUs7QUFDYixRQUFJQSxFQUFFLElBQUksSUFBVixFQUFnQjtBQUNkQSxNQUFBQSxFQUFFLEdBQUcsS0FBS0EsRUFBVjtBQUNEOztBQUNELFdBQU8sS0FBSzJFLFVBQUwsQ0FBZ0JHLGFBQWhCLENBQStCLFFBQU85RSxFQUFHLElBQXpDLENBQVA7QUFDRDs7QUFFRHlDLEVBQUFBLFNBQVMsQ0FBQ3NDLGNBQUQsRUFBaUI7QUFDeEIsUUFBSSxLQUFLbEUsS0FBTCxJQUFjLElBQWQsSUFBc0JrRSxjQUFjLElBQUksSUFBNUMsRUFBa0Q7QUFDaEQsVUFBSSxLQUFLdEUsT0FBTCxDQUFhWCxJQUFiLEtBQXNCLFNBQXRCLElBQW1DLEtBQUtXLE9BQUwsQ0FBYVgsSUFBYixLQUFzQixPQUF6RCxJQUFvRSxLQUFLVyxPQUFMLENBQWFYLElBQWIsS0FBc0IsUUFBOUYsRUFBd0c7QUFDdEdpRixRQUFBQSxjQUFjLENBQUNsRSxLQUFmLEdBQXVCLEtBQUtBLEtBQTVCO0FBQ0QsT0FGRCxNQUVPO0FBQ0xrRSxRQUFBQSxjQUFjLENBQUNsRSxLQUFmLEdBQXVCLEtBQUtBLEtBQUwsQ0FBV21FLFFBQVgsR0FBc0IsS0FBS25FLEtBQUwsQ0FBV21FLFFBQVgsRUFBdEIsR0FBOEMsS0FBS25FLEtBQTFFO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPa0UsY0FBUDtBQUNEOztBQUVZLFFBQVBFLE9BQU8sQ0FBQ0MsaUJBQUQsRUFBb0I7QUFDL0IsUUFBSUEsaUJBQWlCLENBQUNDLEdBQWxCLENBQXNCLE9BQXRCLENBQUosRUFBb0M7QUFDbENDLE1BQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLEtBQUtaLFdBQUwsR0FBbUJqQixHQUFuQixDQUF3Qi9DLE9BQUQsSUFBYUEsT0FBTyxDQUFDNkUsY0FBNUMsQ0FBWixFQUF5RUMsSUFBekUsQ0FBOEUsTUFBTTtBQUNsRixhQUFLOUMsU0FBTCxDQUFlLEtBQUtvQyxVQUFMLEVBQWY7QUFDRCxPQUZEO0FBR0Q7QUFDRjs7QUFFc0IsUUFBakJXLGlCQUFpQixHQUFHO0FBQ3hCLFVBQU0sTUFBTUEsaUJBQU4sRUFBTjtBQUNBLFVBQU1KLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLEtBQUtaLFdBQUwsR0FBbUJqQixHQUFuQixDQUF3QlcsQ0FBRCxJQUFPQSxDQUFDLENBQUNtQixjQUFoQyxDQUFaLENBQU47QUFDRDs7QUFFREcsRUFBQUEsa0JBQWtCLENBQUNDLEtBQUQsRUFBUTtBQUN4QixRQUFJQSxLQUFLLENBQUM5QyxNQUFOLENBQWEvQyxVQUFiLElBQTJCLElBQTNCLElBQW1DNkYsS0FBSyxDQUFDOUMsTUFBTixDQUFhL0MsVUFBYixDQUF3QjZGLEtBQUssQ0FBQ0MsUUFBOUIsS0FBMkMsSUFBbEYsRUFBd0Y7QUFDdEYsWUFBTXBGLEtBQUssR0FBR21GLEtBQUssQ0FBQzlDLE1BQU4sQ0FBYS9DLFVBQWIsQ0FBd0I2RixLQUFLLENBQUNDLFFBQTlCLEVBQXdDcEYsS0FBdEQ7O0FBQ0EsVUFBSUEsS0FBSixFQUFXO0FBQ1QsZUFBT21GLEtBQUssQ0FBQ0UsT0FBTixDQUFjQyxPQUFkLENBQXNCSCxLQUFLLENBQUNDLFFBQTVCLEVBQXNDcEYsS0FBdEMsQ0FBUDtBQUNEO0FBQ0Y7O0FBQ0QsV0FBT21GLEtBQUssQ0FBQ0UsT0FBYjtBQUNEOztBQUVERSxFQUFBQSxZQUFZLENBQUNaLGlCQUFELEVBQW9CO0FBQzlCLFFBQUksS0FBSy9ELG1CQUFMLENBQXlCNEUsSUFBekIsQ0FBK0I3RCxRQUFELElBQWNnRCxpQkFBaUIsQ0FBQ0MsR0FBbEIsQ0FBc0JqRCxRQUF0QixDQUE1QyxLQUFnRixJQUFwRixFQUEwRjtBQUN4RixXQUFLSCxpQkFBTCxDQUF1QixLQUFLOEMsVUFBTCxFQUF2QjtBQUNEOztBQUVELFFBQUlLLGlCQUFpQixDQUFDQyxHQUFsQixDQUFzQixRQUF0QixLQUFtQyxLQUFLeEUsTUFBTCxJQUFlLElBQXRELEVBQTREO0FBQzFEO0FBQ0EsV0FBSzhELFdBQUwsR0FBbUJ4QyxPQUFuQixDQUE0QnhCLE9BQUQsSUFBYTtBQUN0Q0EsUUFBQUEsT0FBTyxDQUFDRSxNQUFSLEdBQWlCLEtBQUtBLE1BQXRCO0FBQ0QsT0FGRCxFQUYwRCxDQU0xRDs7QUFDQSxZQUFNcUYsY0FBYyxHQUFHLEtBQUtyQixVQUFMLENBQWdCQyxnQkFBaEIsQ0FBaUMsc0JBQWpDLENBQXZCO0FBQ0FvQixNQUFBQSxjQUFjLENBQUMvRCxPQUFmLENBQXdCZ0UsU0FBRCxJQUFnQkEsU0FBUyxDQUFDQyxTQUFWLEdBQXNCLEVBQTdEO0FBQ0EsV0FBS3ZGLE1BQUwsQ0FBWXNCLE9BQVosQ0FBcUJ5RCxLQUFELElBQVc7QUFDN0IsY0FBTVMsR0FBRyxHQUFHVCxLQUFLLENBQUN4RCxRQUFOLEtBQW1CLFVBQW5CLEdBQWdDd0QsS0FBSyxDQUFDQyxRQUF0QyxHQUFpREQsS0FBSyxDQUFDeEQsUUFBTixDQUFlMkQsT0FBZixDQUF1QixXQUF2QixFQUFvQyxFQUFwQyxDQUE3RDtBQUNBLGNBQU1HLGNBQWMsR0FBRyxLQUFLckIsVUFBTCxDQUFnQkcsYUFBaEIsQ0FBK0IsUUFBT3FCLEdBQUksVUFBMUMsQ0FBdkI7O0FBQ0EsWUFBSUgsY0FBSixFQUFvQjtBQUNsQixnQkFBTUosT0FBTyxHQUFHdkQsUUFBUSxDQUFDQyxhQUFULENBQXVCLGtCQUF2QixDQUFoQjtBQUNBc0QsVUFBQUEsT0FBTyxDQUFDTSxTQUFSLEdBQW9CLEtBQUtULGtCQUFMLENBQXdCQyxLQUF4QixDQUFwQjtBQUNBRSxVQUFBQSxPQUFPLENBQUNRLEtBQVIsR0FBZ0IsTUFBaEI7QUFDQUosVUFBQUEsY0FBYyxDQUFDOUIsV0FBZixDQUEyQjBCLE9BQTNCO0FBQ0Q7QUFDRixPQVREO0FBVUEsYUFBTyxLQUFQO0FBQ0Q7O0FBQ0QsV0FBTyxNQUFNRSxZQUFOLENBQW1CWixpQkFBbkIsQ0FBUDtBQUNEOztBQUVEbUIsRUFBQUEsTUFBTSxHQUFHO0FBQ1AsV0FBTzlHLElBQUksSUFDUCxLQUFLNEMsY0FBTCxFQURPLHlDQUU4QixLQUFLbkMsRUFBTCxHQUFVLFFBRnhDLFdBQVg7QUFJRDs7QUFFZ0IsYUFBTnNHLE1BQU0sR0FBRztBQUNsQixXQUFPLENBQ0w7QUFDQWpILElBQUFBLEdBQUcsMnZCQUZFLENBQVA7QUEyRUQ7O0FBM1lpRDtBQThZcERrSCxNQUFNLENBQUNDLGNBQVAsQ0FBc0JDLE1BQXRCLENBQTZCLHdCQUE3QixFQUF1RDdHLG1CQUF2RCIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBjc3MsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQtZWxlbWVudCc7XG5pbXBvcnQgeyBodG1sIH0gZnJvbSAnbGl0LWh0bWwnO1xuaW1wb3J0IHsgZGlzcGF0Y2hDdXN0b21FdmVudCB9IGZyb20gJy4uL2xpYi9ldmVudHMnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1pbnB1dCc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LWlucHV0LW1lc3NhZ2UnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi10ZXh0JztcbmltcG9ydCAnLi4vYXRvbXMvZ3Ytc2VsZWN0JztcbmltcG9ydCAnLi4vYXRvbXMvZ3Ytc3dpdGNoJztcbmltcG9ydCAnLi4vbW9sZWN1bGVzL2d2LWNvZGUnO1xuaW1wb3J0ICcuLi9tb2xlY3VsZXMvZ3YtZXhwcmVzc2lvbi1sYW5ndWFnZSc7XG5pbXBvcnQgJy4uL21vbGVjdWxlcy9ndi1jcm9uLWVkaXRvcic7XG5pbXBvcnQgJy4uL2F0b21zL2d2LWF1dG9jb21wbGV0ZSc7XG5pbXBvcnQgJy4uL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS1hcnJheSc7XG5pbXBvcnQgJy4uL29yZ2FuaXNtcy9ndi1zY2hlbWEtZm9ybS1jb250cm9sLW9iamVjdCc7XG5pbXBvcnQgeyBpc0NvZGVtaXJyb3IsIGlzT2JqZWN0LCBpc0NvbXBsZXhBcnJheSB9IGZyb20gJy4uL2xpYi9zY2hlbWEtZm9ybSc7XG5cbmV4cG9ydCBjbGFzcyBHdlNjaGVtYUZvcm1Db250cm9sIGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICAgIGlkOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgbmFtZTogeyB0eXBlOiBTdHJpbmcsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHJlcXVpcmVkOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGRpc2FibGVkOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHJlYWRvbmx5OiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHRpdGxlOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgcGF0dGVybjogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICAgIGNvbnRyb2w6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBlcnJvcnM6IHsgdHlwZTogQXJyYXkgfSxcbiAgICAgIHZhbHVlOiB7IHR5cGU6IE9iamVjdCwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgc2tlbGV0b246IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgaGlkZGVuOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHdyaXRlT25seTogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBjb21wYWN0OiB7IHR5cGU6IEJvb2xlYW4gfSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICAvLyBXaGVuIGZvcm0gaGFzIGVycm9ycywgdGhlIGNvbnRyb2wgaXMgbm90IHVwZGF0ZSB0byBjb25zZXJ2ZSB0aGUgZXJyb3Igc3RhdGUuXG4gICAgLy8gVGhpcyBsaXN0IGlzIHVzZWQgdG8gZm9yY2UgdGhlIHVwZGF0ZSBvZiBwcm9wZXJ0aWVzIGV2ZW4gaW4gZXJyb3IgY2FzZS5cbiAgICB0aGlzLl9vYnNlcnZlZFByb3BlcnRpZXMgPSBbJ2Rpc2FibGVkJywgJ3JlYWRvbmx5JywgJ3JlcXVpcmVkJ107XG4gIH1cblxuICBpc0V4cHJlc3Npb25MYW5ndWFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gJiYgdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ11bJ2V4cHJlc3Npb24tbGFuZ3VhZ2UnXSAhPSBudWxsO1xuICB9XG5cbiAgaXNDcm9uRXhwcmVzc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gJiYgdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ11bJ2Nyb24tZXhwcmVzc2lvbiddID09PSB0cnVlO1xuICB9XG5cbiAgaXNQYXNzd29yZCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jb250cm9sLndyaXRlT25seSA9PT0gdHJ1ZSB8fFxuICAgICAgKHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddICYmIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLnR5cGUgIT0gbnVsbCAmJiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS50eXBlID09PSAncGFzc3dvcmQnKVxuICAgICk7XG4gIH1cblxuICBnZXRQbGFjZWhvbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gJiYgdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10ucGxhY2Vob2xkZXIgPyB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS5wbGFjZWhvbGRlciA6IG51bGw7XG4gIH1cblxuICBpc0NvZGVtaXJyb3IoKSB7XG4gICAgcmV0dXJuIGlzQ29kZW1pcnJvcih0aGlzLmNvbnRyb2wpO1xuICB9XG5cbiAgaXNPYmplY3QoKSB7XG4gICAgcmV0dXJuIGlzT2JqZWN0KHRoaXMuY29udHJvbCk7XG4gIH1cblxuICBpc0F1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gJiYgdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10uZXZlbnQgIT0gbnVsbCAmJiB0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ3N0cmluZyc7XG4gIH1cblxuICBpc1RleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddICYmIHRoaXMuY29udHJvbFsneC1zY2hlbWEtZm9ybSddLnR5cGUgPT09ICd0ZXh0JyAmJiB0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ3N0cmluZyc7XG4gIH1cblxuICBnZXRFbGVtZW50TmFtZSgpIHtcbiAgICBpZiAodGhpcy5pc09iamVjdCgpKSB7XG4gICAgICByZXR1cm4gJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wtb2JqZWN0JztcbiAgICB9XG4gICAgaWYgKCh0aGlzLmNvbnRyb2wuZW51bSB8fCAodGhpcy5jb250cm9sLml0ZW1zICYmIHRoaXMuY29udHJvbC5pdGVtcy5lbnVtKSkgJiYgIXRoaXMuaXNBdXRvY29tcGxldGUoKSkge1xuICAgICAgcmV0dXJuICdndi1zZWxlY3QnO1xuICAgIH0gZWxzZSBpZiAoaXNDb21wbGV4QXJyYXkodGhpcy5jb250cm9sKSkge1xuICAgICAgcmV0dXJuICdndi1zY2hlbWEtZm9ybS1hcnJheSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgcmV0dXJuICdndi1idXR0b24nO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb250cm9sLnR5cGUgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuICdndi1zd2l0Y2gnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0V4cHJlc3Npb25MYW5ndWFnZSgpKSB7XG4gICAgICByZXR1cm4gJ2d2LWV4cHJlc3Npb24tbGFuZ3VhZ2UnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0NvZGVtaXJyb3IoKSkge1xuICAgICAgcmV0dXJuICdndi1jb2RlJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNDcm9uRXhwcmVzc2lvbigpKSB7XG4gICAgICByZXR1cm4gJ2d2LWNyb24tZWRpdG9yJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNUZXh0KCkpIHtcbiAgICAgIHJldHVybiAnZ3YtdGV4dCc7XG4gICAgfVxuXG4gICAgcmV0dXJuICdndi1pbnB1dCc7XG4gIH1cblxuICBfdXBkYXRlUHJvcGVydGllcyhlbGVtZW50KSB7XG4gICAgaWYgKGVsZW1lbnQgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fb2JzZXJ2ZWRQcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgICAgIGlmICh0aGlzW3Byb3BlcnR5XSAhPSBudWxsKSB7XG4gICAgICAgICAgZWxlbWVudFtwcm9wZXJ0eV0gPSB0aGlzW3Byb3BlcnR5XTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgX3JlbmRlckNvbnRyb2woKSB7XG4gICAgY29uc3QgZWxlbWVudE5hbWUgPSB0aGlzLmdldEVsZW1lbnROYW1lKCk7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWxlbWVudE5hbWUpO1xuICAgIGVsZW1lbnQuaWQgPSB0aGlzLmlkO1xuICAgIGVsZW1lbnQubmFtZSA9IHRoaXMuaWQ7XG4gICAgZWxlbWVudC5za2VsZXRvbiA9IHRoaXMuc2tlbGV0b247XG4gICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdmb3JtX19jb250cm9sJyk7XG5cbiAgICBpZiAodGhpcy52YWx1ZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9zZXRWYWx1ZShlbGVtZW50KTtcbiAgICB9XG4gICAgaWYgKHRoaXMudmFsdWUgPT0gbnVsbCAmJiB0aGlzLmNvbnRyb2wuZGVmYXVsdCAhPSBudWxsKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb250cm9sLmRlZmF1bHQ7XG4gICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdkZWZhdWx0LXZhbHVlJywgeyB2YWx1ZTogdGhpcy52YWx1ZSwgY3VycmVudFRhcmdldDogZWxlbWVudCwgY29udHJvbDogdGhpcy5jb250cm9sIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy52YWx1ZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9zZXRWYWx1ZShlbGVtZW50KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250cm9sLnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICBlbGVtZW50LnNjaGVtYSA9IHRoaXMuY29udHJvbDtcbiAgICB9IGVsc2UgaWYgKGlzQ29tcGxleEFycmF5KHRoaXMuY29udHJvbCkpIHtcbiAgICAgIGVsZW1lbnQuc2NoZW1hID0gdGhpcy5jb250cm9sLml0ZW1zO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZVByb3BlcnRpZXMoZWxlbWVudCk7XG5cbiAgICBpZiAodGhpcy5jb250cm9sLnRpdGxlKSB7XG4gICAgICBlbGVtZW50LmxhYmVsID0gdGhpcy5jb250cm9sLnRpdGxlO1xuICAgICAgZWxlbWVudC50aXRsZSA9IHRoaXMuY29udHJvbC50aXRsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdG1wID0gdGhpcy5pZC5zcGxpdCgnLicpO1xuICAgICAgY29uc3QgdGl0bGUgPSB0bXBbdG1wLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKGlzTmFOKHBhcnNlSW50KHRpdGxlLCAxMCkpKSB7XG4gICAgICAgIGVsZW1lbnQubGFiZWwgPSB0aXRsZTtcbiAgICAgICAgZWxlbWVudC50aXRsZSA9IHRpdGxlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRyb2wucGF0dGVybikge1xuICAgICAgZWxlbWVudC5wYXR0ZXJuID0gdGhpcy5jb250cm9sLnBhdHRlcm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udHJvbC50eXBlID09PSAnaW50ZWdlcicpIHtcbiAgICAgIGVsZW1lbnQudHlwZSA9ICdudW1iZXInO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzVGV4dCgpKSB7XG4gICAgICBlbGVtZW50LnJvd3MgPSAzO1xuICAgICAgZWxlbWVudC5hdXRvc2l6ZSA9IHRydWU7XG4gICAgICBlbGVtZW50LnBsYWNlaG9sZGVyID0gdGhpcy5jb250cm9sLmRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5nZXRQbGFjZWhvbGRlcigpO1xuXG4gICAgaWYgKHRoaXMuY29udHJvbC5lbnVtIHx8ICh0aGlzLmNvbnRyb2wuaXRlbXMgJiYgdGhpcy5jb250cm9sLml0ZW1zLmVudW0pKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jb250cm9sLmVudW0gfHwgdGhpcy5jb250cm9sLml0ZW1zLmVudW07XG4gICAgICBpZiAodGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gJiYgdGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10udGl0bGVNYXApIHtcbiAgICAgICAgZWxlbWVudC5vcHRpb25zID0gb3B0aW9ucy5tYXAoKHZhbHVlKSA9PiAoe1xuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIGxhYmVsOiB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS50aXRsZU1hcFt2YWx1ZV0gfHwgdmFsdWUsXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jb250cm9sLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgZWxlbWVudC5tdWx0aXBsZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzQ29kZW1pcnJvcigpKSB7XG4gICAgICBlbGVtZW50Lm9wdGlvbnMgPSB0aGlzLmNvbnRyb2xbJ3gtc2NoZW1hLWZvcm0nXS5jb2RlbWlycm9yT3B0aW9ucztcbiAgICAgIGlmICh0aGlzLmNvbnRyb2wuZGVmYXVsdCAhPSBudWxsICYmIGVsZW1lbnQub3B0aW9ucy52YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGVsZW1lbnQub3B0aW9ucy52YWx1ZSA9IHRoaXMuY29udHJvbC5kZWZhdWx0O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5pc0V4cHJlc3Npb25MYW5ndWFnZSgpKSB7XG4gICAgICBlbGVtZW50Lm9wdGlvbnMgPSB7fTtcbiAgICAgIGVsZW1lbnQucm93cyA9IDE7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzUGFzc3dvcmQoKSkge1xuICAgICAgZWxlbWVudC50eXBlID0gJ3Bhc3N3b3JkJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250cm9sLmRlc2NyaXB0aW9uKSB7XG4gICAgICBlbGVtZW50LmRlc2NyaXB0aW9uID0gdGhpcy5jb250cm9sLmRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbXBhY3QpIHtcbiAgICAgIGVsZW1lbnQucGxhY2Vob2xkZXIgPSBlbGVtZW50LmRlc2NyaXB0aW9uIHx8IGVsZW1lbnQubGFiZWw7XG4gICAgICBlbGVtZW50LmxhYmVsID0gbnVsbDtcbiAgICAgIGVsZW1lbnQuZGVzY3JpcHRpb24gPSBudWxsO1xuICAgICAgZWxlbWVudC5jb21wYWN0ID0gdGhpcy5jb21wYWN0O1xuICAgIH1cblxuICAgIGlmIChwbGFjZWhvbGRlciAhPSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5pc0V4cHJlc3Npb25MYW5ndWFnZSgpIHx8IHRoaXMuaXNDb2RlbWlycm9yKCkpIHtcbiAgICAgICAgZWxlbWVudC5vcHRpb25zLnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50LnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGAke2VsZW1lbnROYW1lfTppbnB1dGAsIHRoaXMuX29uSW5wdXQuYmluZCh0aGlzKSk7XG5cbiAgICBsZXQgY3VycmVudFRhcmdldDtcbiAgICBpZiAodGhpcy5pc0F1dG9jb21wbGV0ZSgpKSB7XG4gICAgICBjb25zdCBhdXRvY29tcGxldGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdndi1hdXRvY29tcGxldGUnKTtcbiAgICAgIGF1dG9jb21wbGV0ZS5taW5DaGFycyA9IDA7XG4gICAgICBhdXRvY29tcGxldGUuZmlsdGVyID0gdHJ1ZTtcbiAgICAgIGVsZW1lbnQuY2xlYXJhYmxlID0gdHJ1ZTtcbiAgICAgIGF1dG9jb21wbGV0ZS5pZCA9IHRoaXMuaWQ7XG4gICAgICBhdXRvY29tcGxldGUuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICBhdXRvY29tcGxldGUuYWRkRXZlbnRMaXN0ZW5lcihgZ3YtYXV0b2NvbXBsZXRlOnNlbGVjdGAsIHRoaXMuX29uSW5wdXQuYmluZCh0aGlzKSk7XG4gICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoYGd2LWlucHV0OmNsZWFyYCwgdGhpcy5fb25JbnB1dC5iaW5kKHRoaXMpKTtcbiAgICAgIGN1cnJlbnRUYXJnZXQgPSBhdXRvY29tcGxldGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRUYXJnZXQgPSBlbGVtZW50O1xuICAgIH1cbiAgICBpZiAodGhpcy5jb250cm9sWyd4LXNjaGVtYS1mb3JtJ10gIT0gbnVsbCkge1xuICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnY29udHJvbC1yZWFkeScsIHtcbiAgICAgICAgY3VycmVudFRhcmdldCxcbiAgICAgICAgY29udHJvbDogdGhpcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY3VycmVudFRhcmdldDtcbiAgfVxuXG4gIF9vbklucHV0KGUpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBsZXQgdmFsdWUgPSBudWxsO1xuICAgIGlmIChlLnRhcmdldC50YWdOYW1lID09PSAnR1YtQVVUT0NPTVBMRVRFJykge1xuICAgICAgdmFsdWUgPSBlLmRldGFpbC52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBlLmRldGFpbDtcbiAgICB9XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnY2hhbmdlJywgeyB2YWx1ZSwgY3VycmVudFRhcmdldDogZS50YXJnZXQsIGNvbnRyb2w6IHRoaXMuY29udHJvbCB9KTtcbiAgfVxuXG4gIGdldENvbnRyb2xzKCkge1xuICAgIHJldHVybiBbXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1zY2hlbWEtZm9ybS1jb250cm9sJykpLFxuICAgICAgLi4uQXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC1hcnJheScpKSxcbiAgICAgIC4uLkFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LXNjaGVtYS1mb3JtLWNvbnRyb2wtb2JqZWN0JykpLFxuICAgIF07XG4gIH1cblxuICBnZXRDb250cm9sKGlkKSB7XG4gICAgaWYgKGlkID09IG51bGwpIHtcbiAgICAgIGlkID0gdGhpcy5pZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGBbaWQ9XCIke2lkfVwiXWApO1xuICB9XG5cbiAgX3NldFZhbHVlKGNvbnRyb2xFbGVtZW50KSB7XG4gICAgaWYgKHRoaXMudmFsdWUgIT0gbnVsbCAmJiBjb250cm9sRWxlbWVudCAhPSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5jb250cm9sLnR5cGUgPT09ICdib29sZWFuJyB8fCB0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ2FycmF5JyB8fCB0aGlzLmNvbnRyb2wudHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29udHJvbEVsZW1lbnQudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udHJvbEVsZW1lbnQudmFsdWUgPSB0aGlzLnZhbHVlLnRvU3RyaW5nID8gdGhpcy52YWx1ZS50b1N0cmluZygpIDogdGhpcy52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbnRyb2xFbGVtZW50O1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcykge1xuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3ZhbHVlJykpIHtcbiAgICAgIFByb21pc2UuYWxsKHRoaXMuZ2V0Q29udHJvbHMoKS5tYXAoKGNvbnRyb2wpID0+IGNvbnRyb2wudXBkYXRlQ29tcGxldGUpKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5nZXRDb250cm9sKCkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0VXBkYXRlQ29tcGxldGUoKSB7XG4gICAgYXdhaXQgc3VwZXIuZ2V0VXBkYXRlQ29tcGxldGUoKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmdldENvbnRyb2xzKCkubWFwKChlKSA9PiBlLnVwZGF0ZUNvbXBsZXRlKSk7XG4gIH1cblxuICBmb3JtYXRFcnJvck1lc3NhZ2UoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3Iuc2NoZW1hLnByb3BlcnRpZXMgIT0gbnVsbCAmJiBlcnJvci5zY2hlbWEucHJvcGVydGllc1tlcnJvci5hcmd1bWVudF0gIT0gbnVsbCkge1xuICAgICAgY29uc3QgdGl0bGUgPSBlcnJvci5zY2hlbWEucHJvcGVydGllc1tlcnJvci5hcmd1bWVudF0udGl0bGU7XG4gICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yLm1lc3NhZ2UucmVwbGFjZShlcnJvci5hcmd1bWVudCwgdGl0bGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXJyb3IubWVzc2FnZTtcbiAgfVxuXG4gIHNob3VsZFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcykge1xuICAgIGlmICh0aGlzLl9vYnNlcnZlZFByb3BlcnRpZXMuZmluZCgocHJvcGVydHkpID0+IGNoYW5nZWRQcm9wZXJ0aWVzLmhhcyhwcm9wZXJ0eSkpICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVByb3BlcnRpZXModGhpcy5nZXRDb250cm9sKCkpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Vycm9ycycpICYmIHRoaXMuZXJyb3JzICE9IG51bGwpIHtcbiAgICAgIC8vIFNldCBlcnJvcnMgdG8gY29tcGxleCBjb250cm9sc1xuICAgICAgdGhpcy5nZXRDb250cm9scygpLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgICAgY29udHJvbC5lcnJvcnMgPSB0aGlzLmVycm9ycztcbiAgICAgIH0pO1xuXG4gICAgICAvLyBGaW5kIHNpbXBsZSBjb250cm9scyBhbmQgYXBwZW5kIGVycm9yIG1lc3NhZ2VcbiAgICAgIGNvbnN0IGVycm9yQ29udGFpbmVyID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mb3JtX19jb250cm9sLWVycm9yJyk7XG4gICAgICBlcnJvckNvbnRhaW5lci5mb3JFYWNoKChjb250YWluZXIpID0+IChjb250YWluZXIuaW5uZXJIVE1MID0gJycpKTtcbiAgICAgIHRoaXMuZXJyb3JzLmZvckVhY2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGVycm9yLnByb3BlcnR5ID09PSAnaW5zdGFuY2UnID8gZXJyb3IuYXJndW1lbnQgOiBlcnJvci5wcm9wZXJ0eS5yZXBsYWNlKCdpbnN0YW5jZS4nLCAnJyk7XG4gICAgICAgIGNvbnN0IGVycm9yQ29udGFpbmVyID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoYFtpZD1cIiR7a2V5fS1lcnJvclwiXWApO1xuICAgICAgICBpZiAoZXJyb3JDb250YWluZXIpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZ3YtaW5wdXQtbWVzc2FnZScpO1xuICAgICAgICAgIG1lc3NhZ2UuaW5uZXJIVE1MID0gdGhpcy5mb3JtYXRFcnJvck1lc3NhZ2UoZXJyb3IpO1xuICAgICAgICAgIG1lc3NhZ2UubGV2ZWwgPSAnd2Fybic7XG4gICAgICAgICAgZXJyb3JDb250YWluZXIuYXBwZW5kQ2hpbGQobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgICR7dGhpcy5fcmVuZGVyQ29udHJvbCgpfVxuICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2NvbnRyb2wtZXJyb3JcIiBpZD1cIiR7dGhpcy5pZCArICctZXJyb3InfVwiPjwvZGl2PlxuICAgIGA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIG1hcmdpbjogdmFyKC0tZ3Ytc2NoZW1hLWZvcm0tY29udHJvbC0tbSwgMC40cmVtKTtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtoaWRkZW5dKSB7XG4gICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtZGVzY3JpcHRpb24sXG4gICAgICAgIC5mb3JtX19jb250cm9sLWVycm9yIHtcbiAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybV9fY29udHJvbC1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtbGFiZWwge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICBtYXJnaW46IDAuMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19jb250cm9sLWxhYmVsIGxhYmVsIHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtYXJyYXksXG4gICAgICAgIC5mb3JtX19jb250cm9sLW9iamVjdCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtZW51bSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAvKmFsaWduLWl0ZW1zOiBmbGV4LWVuZDsqL1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm1fX2NvbnRyb2wtYXJyYXkgZ3YtYnV0dG9uIHtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtX19jb250cm9sIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIH1cblxuICAgICAgICBndi1zZWxlY3QsXG4gICAgICAgIGd2LWlucHV0LFxuICAgICAgICBndi1jb2RlLFxuICAgICAgICBndi1zd2l0Y2gsXG4gICAgICAgIGd2LWV4cHJlc3Npb24tbGFuZ3VhZ2Uge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIG1hcmdpbjogMC4ycmVtIDA7XG4gICAgICAgIH1cblxuICAgICAgICBndi1zZWxlY3Q6aG92ZXIsXG4gICAgICAgIGd2LWF1dG9jb21wbGV0ZTpob3ZlciB7XG4gICAgICAgICAgei1pbmRleDogNzA7XG4gICAgICAgIH1cbiAgICAgIGAsXG4gICAgXTtcbiAgfVxufVxuXG53aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdndi1zY2hlbWEtZm9ybS1jb250cm9sJywgR3ZTY2hlbWFGb3JtQ29udHJvbCk7XG4iXX0=
|