@acrodata/gui 2.6.0 → 2.6.2
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/esm2022/fill/fill-picker.mjs +2 -2
- package/esm2022/gui-form.mjs +5 -5
- package/esm2022/gui-utils.mjs +26 -1
- package/fesm2022/acrodata-gui.mjs +30 -5
- package/fesm2022/acrodata-gui.mjs.map +1 -1
- package/fill/fill-picker.d.ts +1 -1
- package/gui-form.d.ts +1 -1
- package/gui-utils.d.ts +2 -1
- package/package.json +1 -1
|
@@ -44,7 +44,7 @@ export class GuiFillPicker {
|
|
|
44
44
|
writeValue(value) {
|
|
45
45
|
if (typeof value === 'string') {
|
|
46
46
|
value = value.trim();
|
|
47
|
-
if (
|
|
47
|
+
if (this.type === 'all') {
|
|
48
48
|
this.getTypeFromModel(value);
|
|
49
49
|
}
|
|
50
50
|
this.getValueFromModel(value);
|
|
@@ -158,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
158
158
|
}], type: [{
|
|
159
159
|
type: Input
|
|
160
160
|
}] } });
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsbC1waWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvZmlsbC9maWxsLXBpY2tlci50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9maWxsL2ZpbGwtcGlja2VyLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7OztBQStCakUsTUFBTSxPQUFPLGFBQWE7SUFtQnhCLFlBQ1UsR0FBc0IsRUFDOUIsYUFBK0I7UUFEdkIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFuQnZCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsU0FBSSxHQUFnQixLQUFLLENBQUM7UUFFbkMsVUFBSyxHQUFHO1lBQ04sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDbEMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDeEMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVB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RkFDZCxlQUFlOzs0RkFHTixhQUFhO2tCQTNCekIsU0FBUzsrQkFDRSxpQkFBaUIsUUFHckI7d0JBQ0osS0FBSyxFQUFFLGlCQUFpQjtxQkFDekIsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUM7NEJBQzVDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLGNBQ1csSUFBSSxXQUNQO3dCQUNQLFdBQVc7d0JBQ1gsb0JBQW9CO3dCQUNwQixlQUFlO3dCQUNmLE9BQU87d0JBQ1AsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLGVBQWU7cUJBQ2hCO3FIQUdRLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhZGllbnRQaWNrZXIgfSBmcm9tICdAYWNyb2RhdGEvZ3JhZGllbnQtcGlja2VyJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlLCBNYXRCdXR0b25Ub2dnbGVHcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgVGlueUNvbG9yIH0gZnJvbSAnQGN0cmwvdGlueWNvbG9yJztcbmltcG9ydCB7IENvbG9yRXZlbnQgfSBmcm9tICduZ3gtY29sb3InO1xuaW1wb3J0IHsgQ29sb3JDaHJvbWVNb2R1bGUgfSBmcm9tICduZ3gtY29sb3IvY2hyb21lJztcbmltcG9ydCB7IEd1aUZpbGVVcGxvYWRlciB9IGZyb20gJy4uL2ZpbGUtdXBsb2FkZXIvZmlsZS11cGxvYWRlcic7XG5pbXBvcnQgeyBHdWlJY29uc1JlZ2lzdHJ5IH0gZnJvbSAnLi4vZ3VpLWljb25zJztcbmltcG9ydCB7IEd1aUZpbGxNb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ3VpLWZpbGwtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGwtcGlja2VyLmh0bWwnLFxuICBzdHlsZVVybDogJy4vZmlsbC1waWNrZXIuc2NzcycsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2d1aS1maWxsLXBpY2tlcicsXG4gIH0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEd1aUZpbGxQaWNrZXIpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdEJ1dHRvblRvZ2dsZUdyb3VwLFxuICAgIE1hdEJ1dHRvblRvZ2dsZSxcbiAgICBNYXRJY29uLFxuICAgIENvbG9yQ2hyb21lTW9kdWxlLFxuICAgIEdyYWRpZW50UGlja2VyLFxuICAgIEd1aUZpbGVVcGxvYWRlcixcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgR3VpRmlsbFBpY2tlciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSB0eXBlOiBHdWlGaWxsTW9kZSA9ICdhbGwnO1xuXG4gIHR5cGVzID0gW1xuICAgIHsgbGFiZWw6ICdTb2xpZCcsIHZhbHVlOiAnc29saWQnIH0sXG4gICAgeyBsYWJlbDogJ0dyYWRpZW50JywgdmFsdWU6ICdncmFkaWVudCcgfSxcbiAgICB7IGxhYmVsOiAnSW1hZ2UnLCB2YWx1ZTogJ2ltYWdlJyB9LFxuICBdO1xuXG4gIHNlbGVjdGVkVHlwZSA9ICdzb2xpZCc7XG5cbiAgY29sb3JGb3JtYXQ6ICdoZXgnIHwgJ3JnYicgfCAnaHNsJyB8ICdoc3YnID0gJ2hleCc7XG5cbiAgdmFsdWUgPSAnJztcblxuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBpY29uc1JlZ2lzdHJ5OiBHdWlJY29uc1JlZ2lzdHJ5XG4gICkge1xuICAgIGljb25zUmVnaXN0cnkuYWRkKCdzb2xpZCcsICdncmFkaWVudCcsICdpbWFnZScpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWyd0eXBlJ10pIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdncmFkaWVudCcpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSAnZ3JhZGllbnQnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdpbWFnZScpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSAnaW1hZ2UnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSAnc29saWQnO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRWYWx1ZUJ5VHlwZSgpO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRyaW0oKTtcbiAgICAgIGlmICghdGhpcy50eXBlKSB7XG4gICAgICAgIHRoaXMuZ2V0VHlwZUZyb21Nb2RlbCh2YWx1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmdldFZhbHVlRnJvbU1vZGVsKHZhbHVlKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXRDb2xvckZvcm1hdCgpIHtcbiAgICBjb25zdCBjb2xvciA9IG5ldyBUaW55Q29sb3IodGhpcy52YWx1ZSk7XG4gICAgaWYgKGNvbG9yLmZvcm1hdCA9PT0gJ3JnYicgfHwgY29sb3IuZm9ybWF0ID09PSAnaHNsJyB8fCBjb2xvci5mb3JtYXQgPT09ICdoc3YnKSB7XG4gICAgICByZXR1cm4gY29sb3IuZm9ybWF0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2hleCc7XG4gICAgfVxuICB9XG5cbiAgZ2V0VHlwZUZyb21Nb2RlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlLmluY2x1ZGVzKCdsaW5lYXInKSB8fCB2YWx1ZS5pbmNsdWRlcygncmFkaWFsJykgfHwgdmFsdWUuaW5jbHVkZXMoJ2NvbmljJykpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gJ2dyYWRpZW50JztcbiAgICB9IGVsc2UgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ3VybCcpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVHlwZSA9ICdpbWFnZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gJ3NvbGlkJztcbiAgICB9XG4gIH1cblxuICBnZXRWYWx1ZUZyb21Nb2RlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRUeXBlID09PSAnc29saWQnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLmNvbG9yRm9ybWF0ID0gdGhpcy5nZXRDb2xvckZvcm1hdCgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFR5cGUgPT09ICdncmFkaWVudCcpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRUeXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICBjb25zdCByZWdleCA9IC91cmxcXCgoPzonfFwiKT8oW14nXCJdKz8pKD86J3xcIik/XFwpLztcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZS5tYXRjaChyZWdleCk/LlsxXSB8fCAnJztcbiAgICB9XG4gIH1cblxuICBzZXRWYWx1ZUJ5VHlwZSgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFR5cGUgPT09ICdzb2xpZCcpIHtcbiAgICAgIHRoaXMudmFsdWUgPSAnIzAwMCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkVHlwZSA9PT0gJ2dyYWRpZW50Jykge1xuICAgICAgdGhpcy52YWx1ZSA9ICdsaW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsICMwMDApJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRUeXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gJyc7XG4gICAgfVxuICB9XG5cbiAgb25UeXBlQ2hhbmdlKCkge1xuICAgIHRoaXMuc2V0VmFsdWVCeVR5cGUoKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25Db2xvckNoYW5nZShlOiBDb2xvckV2ZW50KSB7XG4gICAgdGhpcy52YWx1ZSA9IHtcbiAgICAgIGhleDogZS5jb2xvci5yZ2IuYSA9PT0gMSA/IGUuY29sb3IuaGV4IDogbmV3IFRpbnlDb2xvcihlLmNvbG9yLnJnYikudG9IZXg4U3RyaW5nKCksXG4gICAgICByZ2I6IG5ldyBUaW55Q29sb3IoZS5jb2xvci5yZ2IpLnRvUmdiU3RyaW5nKCksXG4gICAgICBoc2w6IG5ldyBUaW55Q29sb3IoZS5jb2xvci5oc2wpLnRvSHNsU3RyaW5nKCksXG4gICAgICBoc3Y6IG5ldyBUaW55Q29sb3IoZS5jb2xvci5oc3YpLnRvSHN2U3RyaW5nKCksXG4gICAgfVt0aGlzLmNvbG9yRm9ybWF0XTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgb25HcmFkaWVudENoYW5nZSgpIHtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgb25JbWFnZUNoYW5nZSgpIHtcbiAgICB0aGlzLm9uQ2hhbmdlKGB1cmwoXCIke3RoaXMudmFsdWV9XCIpYCk7XG4gIH1cbn1cbiIsIkBpZiAodHlwZSA9PT0gJ2FsbCcpIHtcbiAgPGRpdiBjbGFzcz1cImd1aS1maWxsLXBpY2tlci1oZWFkZXJcIj5cbiAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBcbiAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCJcbiAgICAgIGhpZGVTaW5nbGVTZWxlY3Rpb25JbmRpY2F0b3JcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVHlwZUNoYW5nZSgpXCJcbiAgICA+XG4gICAgICBAZm9yICh0IG9mIHR5cGVzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJ0LnZhbHVlXCIgW3RpdGxlXT1cInQubGFiZWxcIj5cbiAgICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwidC52YWx1ZVwiIC8+XG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICB9XG4gICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgPC9kaXY+XG59XG5cbjxkaXYgY2xhc3M9XCJndWktZmlsbC1waWNrZXItYm9keVwiPlxuICBAaWYgKHNlbGVjdGVkVHlwZSA9PT0gJ3NvbGlkJykge1xuICAgIDxjb2xvci1jaHJvbWUgW2NvbG9yXT1cInZhbHVlXCIgKG9uQ2hhbmdlQ29tcGxldGUpPVwib25Db2xvckNoYW5nZSgkZXZlbnQpXCIgLz5cbiAgfSBAZWxzZSBpZiAoc2VsZWN0ZWRUeXBlID09PSAnZ3JhZGllbnQnKSB7XG4gICAgPGdyYWRpZW50LXBpY2tlciBbKG5nTW9kZWwpXT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25HcmFkaWVudENoYW5nZSgpXCIgLz5cbiAgfSBAZWxzZSBpZiAoc2VsZWN0ZWRUeXBlID09PSAnaW1hZ2UnKSB7XG4gICAgPGd1aS1maWxlLXVwbG9hZGVyIHR5cGU9XCJpbWFnZVwiIFsobmdNb2RlbCldPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkltYWdlQ2hhbmdlKClcIiAvPlxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsbC1waWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvZmlsbC9maWxsLXBpY2tlci50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9maWxsL2ZpbGwtcGlja2VyLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7OztBQStCakUsTUFBTSxPQUFPLGFBQWE7SUFtQnhCLFlBQ1UsR0FBc0IsRUFDOUIsYUFBK0I7UUFEdkIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFuQnZCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsU0FBSSxHQUFnQixLQUFLLENBQUM7UUFFbkMsVUFBSyxHQUFHO1lBQ04sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDbEMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDeEMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVB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Y0FBYyxrRkFDZCxlQUFlOzs0RkFHTixhQUFhO2tCQTNCekIsU0FBUzsrQkFDRSxpQkFBaUIsUUFHckI7d0JBQ0osS0FBSyxFQUFFLGlCQUFpQjtxQkFDekIsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUM7NEJBQzVDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLGNBQ1csSUFBSSxXQUNQO3dCQUNQLFdBQVc7d0JBQ1gsb0JBQW9CO3dCQUNwQixlQUFlO3dCQUNmLE9BQU87d0JBQ1AsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLGVBQWU7cUJBQ2hCO3FIQUdRLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhZGllbnRQaWNrZXIgfSBmcm9tICdAYWNyb2RhdGEvZ3JhZGllbnQtcGlja2VyJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlLCBNYXRCdXR0b25Ub2dnbGVHcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgVGlueUNvbG9yIH0gZnJvbSAnQGN0cmwvdGlueWNvbG9yJztcbmltcG9ydCB7IENvbG9yRXZlbnQgfSBmcm9tICduZ3gtY29sb3InO1xuaW1wb3J0IHsgQ29sb3JDaHJvbWVNb2R1bGUgfSBmcm9tICduZ3gtY29sb3IvY2hyb21lJztcbmltcG9ydCB7IEd1aUZpbGVVcGxvYWRlciB9IGZyb20gJy4uL2ZpbGUtdXBsb2FkZXIvZmlsZS11cGxvYWRlcic7XG5pbXBvcnQgeyBHdWlJY29uc1JlZ2lzdHJ5IH0gZnJvbSAnLi4vZ3VpLWljb25zJztcbmltcG9ydCB7IEd1aUZpbGxNb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ3VpLWZpbGwtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGwtcGlja2VyLmh0bWwnLFxuICBzdHlsZVVybDogJy4vZmlsbC1waWNrZXIuc2NzcycsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2d1aS1maWxsLXBpY2tlcicsXG4gIH0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEd1aUZpbGxQaWNrZXIpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdEJ1dHRvblRvZ2dsZUdyb3VwLFxuICAgIE1hdEJ1dHRvblRvZ2dsZSxcbiAgICBNYXRJY29uLFxuICAgIENvbG9yQ2hyb21lTW9kdWxlLFxuICAgIEdyYWRpZW50UGlja2VyLFxuICAgIEd1aUZpbGVVcGxvYWRlcixcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgR3VpRmlsbFBpY2tlciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSB0eXBlOiBHdWlGaWxsTW9kZSA9ICdhbGwnO1xuXG4gIHR5cGVzID0gW1xuICAgIHsgbGFiZWw6ICdTb2xpZCcsIHZhbHVlOiAnc29saWQnIH0sXG4gICAgeyBsYWJlbDogJ0dyYWRpZW50JywgdmFsdWU6ICdncmFkaWVudCcgfSxcbiAgICB7IGxhYmVsOiAnSW1hZ2UnLCB2YWx1ZTogJ2ltYWdlJyB9LFxuICBdO1xuXG4gIHNlbGVjdGVkVHlwZSA9ICdzb2xpZCc7XG5cbiAgY29sb3JGb3JtYXQ6ICdoZXgnIHwgJ3JnYicgfCAnaHNsJyB8ICdoc3YnID0gJ2hleCc7XG5cbiAgdmFsdWUgPSAnJztcblxuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBpY29uc1JlZ2lzdHJ5OiBHdWlJY29uc1JlZ2lzdHJ5XG4gICkge1xuICAgIGljb25zUmVnaXN0cnkuYWRkKCdzb2xpZCcsICdncmFkaWVudCcsICdpbWFnZScpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWyd0eXBlJ10pIHtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdncmFkaWVudCcpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSAnZ3JhZGllbnQnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdpbWFnZScpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSAnaW1hZ2UnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFR5cGUgPSAnc29saWQnO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRWYWx1ZUJ5VHlwZSgpO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRyaW0oKTtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdhbGwnKSB7XG4gICAgICAgIHRoaXMuZ2V0VHlwZUZyb21Nb2RlbCh2YWx1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmdldFZhbHVlRnJvbU1vZGVsKHZhbHVlKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXRDb2xvckZvcm1hdCgpIHtcbiAgICBjb25zdCBjb2xvciA9IG5ldyBUaW55Q29sb3IodGhpcy52YWx1ZSk7XG4gICAgaWYgKGNvbG9yLmZvcm1hdCA9PT0gJ3JnYicgfHwgY29sb3IuZm9ybWF0ID09PSAnaHNsJyB8fCBjb2xvci5mb3JtYXQgPT09ICdoc3YnKSB7XG4gICAgICByZXR1cm4gY29sb3IuZm9ybWF0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2hleCc7XG4gICAgfVxuICB9XG5cbiAgZ2V0VHlwZUZyb21Nb2RlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlLmluY2x1ZGVzKCdsaW5lYXInKSB8fCB2YWx1ZS5pbmNsdWRlcygncmFkaWFsJykgfHwgdmFsdWUuaW5jbHVkZXMoJ2NvbmljJykpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gJ2dyYWRpZW50JztcbiAgICB9IGVsc2UgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ3VybCcpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVHlwZSA9ICdpbWFnZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gJ3NvbGlkJztcbiAgICB9XG4gIH1cblxuICBnZXRWYWx1ZUZyb21Nb2RlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRUeXBlID09PSAnc29saWQnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLmNvbG9yRm9ybWF0ID0gdGhpcy5nZXRDb2xvckZvcm1hdCgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFR5cGUgPT09ICdncmFkaWVudCcpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRUeXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICBjb25zdCByZWdleCA9IC91cmxcXCgoPzonfFwiKT8oW14nXCJdKz8pKD86J3xcIik/XFwpLztcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZS5tYXRjaChyZWdleCk/LlsxXSB8fCAnJztcbiAgICB9XG4gIH1cblxuICBzZXRWYWx1ZUJ5VHlwZSgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFR5cGUgPT09ICdzb2xpZCcpIHtcbiAgICAgIHRoaXMudmFsdWUgPSAnIzAwMCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkVHlwZSA9PT0gJ2dyYWRpZW50Jykge1xuICAgICAgdGhpcy52YWx1ZSA9ICdsaW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsICMwMDApJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRUeXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gJyc7XG4gICAgfVxuICB9XG5cbiAgb25UeXBlQ2hhbmdlKCkge1xuICAgIHRoaXMuc2V0VmFsdWVCeVR5cGUoKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25Db2xvckNoYW5nZShlOiBDb2xvckV2ZW50KSB7XG4gICAgdGhpcy52YWx1ZSA9IHtcbiAgICAgIGhleDogZS5jb2xvci5yZ2IuYSA9PT0gMSA/IGUuY29sb3IuaGV4IDogbmV3IFRpbnlDb2xvcihlLmNvbG9yLnJnYikudG9IZXg4U3RyaW5nKCksXG4gICAgICByZ2I6IG5ldyBUaW55Q29sb3IoZS5jb2xvci5yZ2IpLnRvUmdiU3RyaW5nKCksXG4gICAgICBoc2w6IG5ldyBUaW55Q29sb3IoZS5jb2xvci5oc2wpLnRvSHNsU3RyaW5nKCksXG4gICAgICBoc3Y6IG5ldyBUaW55Q29sb3IoZS5jb2xvci5oc3YpLnRvSHN2U3RyaW5nKCksXG4gICAgfVt0aGlzLmNvbG9yRm9ybWF0XTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgb25HcmFkaWVudENoYW5nZSgpIHtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgb25JbWFnZUNoYW5nZSgpIHtcbiAgICB0aGlzLm9uQ2hhbmdlKGB1cmwoXCIke3RoaXMudmFsdWV9XCIpYCk7XG4gIH1cbn1cbiIsIkBpZiAodHlwZSA9PT0gJ2FsbCcpIHtcbiAgPGRpdiBjbGFzcz1cImd1aS1maWxsLXBpY2tlci1oZWFkZXJcIj5cbiAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBcbiAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUeXBlXCJcbiAgICAgIGhpZGVTaW5nbGVTZWxlY3Rpb25JbmRpY2F0b3JcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVHlwZUNoYW5nZSgpXCJcbiAgICA+XG4gICAgICBAZm9yICh0IG9mIHR5cGVzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJ0LnZhbHVlXCIgW3RpdGxlXT1cInQubGFiZWxcIj5cbiAgICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwidC52YWx1ZVwiIC8+XG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICB9XG4gICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgPC9kaXY+XG59XG5cbjxkaXYgY2xhc3M9XCJndWktZmlsbC1waWNrZXItYm9keVwiPlxuICBAaWYgKHNlbGVjdGVkVHlwZSA9PT0gJ3NvbGlkJykge1xuICAgIDxjb2xvci1jaHJvbWUgW2NvbG9yXT1cInZhbHVlXCIgKG9uQ2hhbmdlQ29tcGxldGUpPVwib25Db2xvckNoYW5nZSgkZXZlbnQpXCIgLz5cbiAgfSBAZWxzZSBpZiAoc2VsZWN0ZWRUeXBlID09PSAnZ3JhZGllbnQnKSB7XG4gICAgPGdyYWRpZW50LXBpY2tlciBbKG5nTW9kZWwpXT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25HcmFkaWVudENoYW5nZSgpXCIgLz5cbiAgfSBAZWxzZSBpZiAoc2VsZWN0ZWRUeXBlID09PSAnaW1hZ2UnKSB7XG4gICAgPGd1aS1maWxlLXVwbG9hZGVyIHR5cGU9XCJpbWFnZVwiIFsobmdNb2RlbCldPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkltYWdlQ2hhbmdlKClcIiAvPlxuICB9XG48L2Rpdj5cbiJdfQ==
|
package/esm2022/gui-form.mjs
CHANGED
|
@@ -13,7 +13,7 @@ import { GuiFieldGroup } from './field-group/field-group';
|
|
|
13
13
|
import { GuiFieldLabel } from './field-label/field-label';
|
|
14
14
|
import { GuiFileUploader } from './file-uploader/file-uploader';
|
|
15
15
|
import { GuiFill } from './fill/fill';
|
|
16
|
-
import { GuiEjsPipe, GuiFlexDirective, compareValues, getValueByPath } from './gui-utils';
|
|
16
|
+
import { GuiEjsPipe, GuiFlexDirective, compareValues, getModelFromConfig, getValueByPath, } from './gui-utils';
|
|
17
17
|
import { GuiIconButtonWrapper } from './icon-button-wrapper/icon-button-wrapper';
|
|
18
18
|
import { GuiImageSelect } from './image-select/image-select';
|
|
19
19
|
import { GuiInlineGroup } from './inline-group/inline-group';
|
|
@@ -54,6 +54,7 @@ export class GuiForm {
|
|
|
54
54
|
}
|
|
55
55
|
ngOnChanges(changes) {
|
|
56
56
|
if (changes['config']) {
|
|
57
|
+
getModelFromConfig(this.config, this.model);
|
|
57
58
|
this.form.controls = {}; // reset controls
|
|
58
59
|
this.formFields = this.getFormFieldArray(this.form, this.config, this.model);
|
|
59
60
|
}
|
|
@@ -91,14 +92,14 @@ export class GuiForm {
|
|
|
91
92
|
const _children = config[key].template ? [] : config[key].children;
|
|
92
93
|
const _type = !_children ? 'control' : Array.isArray(_children) ? 'array' : 'group';
|
|
93
94
|
const item = {
|
|
95
|
+
...config[key],
|
|
94
96
|
_type,
|
|
95
97
|
key,
|
|
96
98
|
parentType,
|
|
97
99
|
model: model[key],
|
|
98
|
-
default: defaultValue?.[key],
|
|
100
|
+
default: defaultValue?.[key] ?? config[key].default,
|
|
99
101
|
index: Number(key), // the string key will be `NaN`
|
|
100
102
|
show: true,
|
|
101
|
-
...config[key],
|
|
102
103
|
};
|
|
103
104
|
// The `group` type generally have no `default`, so we should
|
|
104
105
|
// set the default value manually
|
|
@@ -119,7 +120,6 @@ export class GuiForm {
|
|
|
119
120
|
}
|
|
120
121
|
if (item.default?.length) {
|
|
121
122
|
item.children = item.default.map((value) => {
|
|
122
|
-
Object.assign(value, item.template?.default);
|
|
123
123
|
return {
|
|
124
124
|
default: value,
|
|
125
125
|
...item.template,
|
|
@@ -301,4 +301,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
301
301
|
}], modelChange: [{
|
|
302
302
|
type: Output
|
|
303
303
|
}] } });
|
|
304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpLWZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9ndWkvZ3VpLWZvcm0udHMiLCIuLi8uLi8uLi9wcm9qZWN0cy9ndWkvZ3VpLWZvcm0uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLHVCQUF1QixHQUN4QixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFJbEQsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBNkNyQixNQUFNLE9BQU8sT0FBTztJQThCbEIsWUFBWSxhQUErQjtRQTdCM0M7O1dBRUc7UUFDTSxTQUFJLEdBQUcsSUFBSSxTQUFTLENBQU0sRUFBRSxDQUFDLENBQUM7UUFFdkM7O1dBRUc7UUFDTSxXQUFNLEdBQWMsRUFBRSxDQUFDO1FBRWhDOztXQUVHO1FBQ00sVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUV6Qjs7V0FFRztRQUNPLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUzQyxlQUFVLEdBQWlCLEVBQUUsQ0FBQztRQUU5QixxQkFBZ0IsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBRXRDLHlCQUFvQixHQUFtQixFQUFFLENBQUM7UUFFMUMsMEJBQTBCO1FBQzFCLFFBQUcsR0FBRyxZQUFZLFlBQVksRUFBRSxFQUFFLENBQUM7UUFHakMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQjtZQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6RSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILGlCQUFpQixDQUNmLElBQTJCLEVBQzNCLFNBQW1DLEVBQUUsRUFDckMsUUFBNkIsRUFBRSxFQUMvQixlQUFvQixJQUFJLEVBQ3hCLGFBQTJCLE9BQU87UUFFbEMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRW5CLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3RDLHlEQUF5RDtZQUN6RCxnQ0FBZ0M7WUFDaEMsOEJBQThCO1lBQzlCLDhCQUE4QjtZQUM5QixNQUFNLFNBQVMsR0FBSSxNQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFFLE1BQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDckYsTUFBTSxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFFcEYsTUFBTSxJQUFJLEdBQWU7Z0JBQ3ZCLEtBQUs7Z0JBQ0wsR0FBRztnQkFDSCxVQUFVO2dCQUNWLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUNqQixPQUFPLEVBQUUsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDO2dCQUM1QixLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLCtCQUErQjtnQkFDbkQsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsR0FBSSxNQUFjLENBQUMsR0FBRyxDQUFDO2FBQ3hCLENBQUM7WUFFRiw2REFBNkQ7WUFDN0QsaUNBQWlDO1lBQ2pDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM3RCxDQUFDO1lBRUQsMERBQTBEO1lBQzFELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDcEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDNUIsQ0FBQztZQUVELHlFQUF5RTtZQUN6RSw2QkFBNkI7WUFDN0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLGdFQUFnRTtnQkFDaEUsNkJBQTZCO2dCQUM3QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDNUIsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTt3QkFDOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQzt3QkFDN0MsT0FBTzs0QkFDTCxPQUFPLEVBQUUsS0FBSzs0QkFDZCxHQUFHLElBQUksQ0FBQyxRQUFRO3lCQUNqQixDQUFDO29CQUNKLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztnQkFDckIsQ0FBQztZQUNILENBQUM7WUFFRCxnQ0FBZ0M7WUFDaEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hCLE1BQU0sYUFBYSxHQUFHLENBQUMsV0FBaUQsRUFBRSxFQUFFO29CQUMxRSxJQUFJLElBQUksQ0FBQyxNQUFPLENBQUMsV0FBVyxLQUFLLEtBQUssRUFBRSxDQUFDO3dCQUN2QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNoRSxDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakUsQ0FBQztnQkFDSCxDQUFDLENBQUM7Z0JBRUYsdUNBQXVDO2dCQUN2QyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ2hCLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlFLE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzVFLE9BQU8sYUFBYSxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELENBQUMsQ0FBQyxDQUFDO2dCQUVILDhFQUE4RTtnQkFDOUUsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFFM0UsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BFLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzdFLE1BQU0sWUFBWSxHQUFHLEVBQUUsRUFBRTt5QkFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDO3lCQUNqQyxTQUFTLENBQUMsR0FBRyxFQUFFO3dCQUNkLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6RSxDQUFDLENBQUMsQ0FBQztvQkFFTCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUMvQyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sU0FBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkUsSUFBSSxJQUFJLFlBQVksU0FBUyxFQUFFLENBQUM7b0JBQzlCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxDQUFDO3FCQUFNLElBQUksSUFBSSxZQUFZLFNBQVMsRUFBRSxDQUFDO29CQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksU0FBUyxHQUFHLElBQUksU0FBUyxDQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLElBQUksWUFBWSxTQUFTLEVBQUUsQ0FBQztvQkFDOUIsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBYyxDQUFDO2dCQUM3RSxDQUFDO3FCQUFNLElBQUksSUFBSSxZQUFZLFNBQVMsRUFBRSxDQUFDO29CQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDMUUsQ0FBQztnQkFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FDcEMsU0FBUyxFQUNULElBQUksQ0FBQyxRQUFRLEVBQ2IsSUFBSSxDQUFDLEtBQUssRUFDVixJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxJQUFJLENBQ1YsQ0FBQztnQkFFRixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztZQUN6QixDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2xDLElBQUksSUFBSSxZQUFZLFNBQVMsRUFBRSxDQUFDO29CQUM5QixTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFjLENBQUM7Z0JBQzdFLENBQUM7cUJBQU0sSUFBSSxJQUFJLFlBQVksU0FBUyxFQUFFLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRSxDQUFDO2dCQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUNwQyxTQUFTLEVBQ1QsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLElBQUksQ0FDVixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxDQUFhLEVBQUUsU0FBb0IsRUFBRSxJQUFnQixFQUFFLElBQWMsRUFBRSxLQUFjO1FBQzFGLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixNQUFNLFdBQVcsR0FDZixLQUFLLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFTLENBQUMsTUFBTSxDQUFDO1FBQ3hGLGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsUUFBUyxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7UUFDbkMsc0VBQXNFO1FBQ3RFLElBQUksQ0FBQyxRQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3RDLElBQUksS0FBSyxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUN6QixLQUFLLENBQUMsS0FBTSxJQUFJLENBQUMsQ0FBQztnQkFDbEIsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQjtZQUNwRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQzdELGdGQUFnRjtRQUNoRixzQ0FBc0M7UUFDdEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUNuQyxTQUFTLEVBQ1QsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQWUsRUFDN0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDeEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDMUMsTUFBTSxDQUNQLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpELHdCQUF3QjtRQUN4QixTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFNBQVMsQ0FBQyxDQUFhLEVBQUUsU0FBb0IsRUFBRSxJQUFnQixFQUFFLEtBQWM7UUFDN0UsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ25FLElBQUksQ0FBQyxRQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3RDLElBQUksS0FBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO2dCQUN4QixLQUFLLENBQUMsS0FBTSxJQUFJLENBQUMsQ0FBQztnQkFDbEIsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQjtZQUNwRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsY0FBYyxDQUFDLENBQWEsRUFBRSxJQUFnQixFQUFFLElBQWtCO1FBQ2hFLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDOytHQXJSVSxPQUFPO21HQUFQLE9BQU8sc1FDMUZwQiwwMVpBK1FBLDA0RURwTkksbUJBQW1CLDJwQ0FDbkIsZ0JBQWdCLG9KQUNoQixpQkFBaUIsc0xBQ2pCLHVCQUF1QixrSUFDdkIsd0JBQXdCLGtGQUN4QixhQUFhLDZGQUNiLE9BQU8sMklBQ1AsV0FBVyxrYkFDWCxNQUFNLHFLQUNOLFdBQVcsMkVBQ1gsYUFBYSw0REFDYixhQUFhLGdGQUNiLGdCQUFnQixxRUFDaEIsWUFBWSwyRkFDWixjQUFjLDZGQUNkLFNBQVMsdUZBQ1QsU0FBUyx1RkFDVCxTQUFTLHVGQUNULGVBQWUsOEZBQ2YsT0FBTyw2RkFDUCxlQUFlLGlKQUNmLGNBQWMseUdBQ2QsV0FBVyx5RkFDWCxjQUFjLGlGQUNkLGFBQWEseUZBQ2Isb0JBQW9CLCtEQUNwQixVQUFVLDRDQUNWLFdBQVcscUdBQ1gsV0FBVzs7NEZBR0YsT0FBTztrQkEzQ25CLFNBQVM7K0JBQ0UsVUFBVSxRQUdkO3dCQUNKLFdBQVcsRUFBRSxLQUFLO3dCQUNsQixPQUFPLEVBQUUsVUFBVTtxQkFDcEIsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLGFBQWE7d0JBQ2IsT0FBTzt3QkFDUCxXQUFXO3dCQUNYLE1BQU07d0JBQ04sV0FBVzt3QkFDWCxhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsU0FBUzt3QkFDVCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsZUFBZTt3QkFDZixPQUFPO3dCQUNQLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLFVBQVU7d0JBQ1YsV0FBVzt3QkFDWCxXQUFXO3FCQUNaO3FGQU1RLElBQUk7c0JBQVosS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUtJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0SWNvbkJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge1xuICBNYXRFeHBhbnNpb25QYW5lbCxcbiAgTWF0RXhwYW5zaW9uUGFuZWxDb250ZW50LFxuICBNYXRFeHBhbnNpb25QYW5lbEhlYWRlcixcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFRhYiwgTWF0VGFiQ29udGVudCwgTWF0VGFiR3JvdXAsIE1hdFRhYkxhYmVsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIG1lcmdlV2l0aCwgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgR3VpQnV0dG9uVG9nZ2xlIH0gZnJvbSAnLi9idXR0b24tdG9nZ2xlL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgR3VpQ29kZWFyZWEgfSBmcm9tICcuL2NvZGVhcmVhL2NvZGVhcmVhJztcbmltcG9ydCB7IEd1aUNvbWJvYm94IH0gZnJvbSAnLi9jb21ib2JveC9jb21ib2JveCc7XG5pbXBvcnQgeyBHdWlGaWVsZEdyb3VwIH0gZnJvbSAnLi9maWVsZC1ncm91cC9maWVsZC1ncm91cCc7XG5pbXBvcnQgeyBHdWlGaWVsZExhYmVsIH0gZnJvbSAnLi9maWVsZC1sYWJlbC9maWVsZC1sYWJlbCc7XG5pbXBvcnQgeyBHdWlGaWxlVXBsb2FkZXIgfSBmcm9tICcuL2ZpbGUtdXBsb2FkZXIvZmlsZS11cGxvYWRlcic7XG5pbXBvcnQgeyBHdWlGaWxsIH0gZnJvbSAnLi9maWxsL2ZpbGwnO1xuaW1wb3J0IHsgR3VpRWpzUGlwZSwgR3VpRmxleERpcmVjdGl2ZSwgY29tcGFyZVZhbHVlcywgZ2V0VmFsdWVCeVBhdGggfSBmcm9tICcuL2d1aS11dGlscyc7XG5pbXBvcnQgeyBHdWlJY29uQnV0dG9uV3JhcHBlciB9IGZyb20gJy4vaWNvbi1idXR0b24td3JhcHBlci9pY29uLWJ1dHRvbi13cmFwcGVyJztcbmltcG9ydCB7IEd1aUltYWdlU2VsZWN0IH0gZnJvbSAnLi9pbWFnZS1zZWxlY3QvaW1hZ2Utc2VsZWN0JztcbmltcG9ydCB7IEd1aUlubGluZUdyb3VwIH0gZnJvbSAnLi9pbmxpbmUtZ3JvdXAvaW5saW5lLWdyb3VwJztcbmltcG9ydCB7IEd1aUlucHV0TnVtYmVyIH0gZnJvbSAnLi9pbnB1dC1udW1iZXIvaW5wdXQtbnVtYmVyJztcbmltcG9ydCB7IEd1aUlucHV0VGV4dCB9IGZyb20gJy4vaW5wdXQtdGV4dC9pbnB1dC10ZXh0JztcbmltcG9ydCB7IEd1aUNvbmRpdGlvbiwgR3VpQ29udHJvbCwgR3VpRmllbGRUeXBlLCBHdWlGaWVsZHMsIEd1aVRhYnNNb2RlIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR3VpU2VsZWN0IH0gZnJvbSAnLi9zZWxlY3Qvc2VsZWN0JztcbmltcG9ydCB7IEd1aVNsaWRlciB9IGZyb20gJy4vc2xpZGVyL3NsaWRlcic7XG5pbXBvcnQgeyBHdWlTd2l0Y2ggfSBmcm9tICcuL3N3aXRjaC9zd2l0Y2gnO1xuaW1wb3J0IHsgR3VpVGV4dGFyZWEgfSBmcm9tICcuL3RleHRhcmVhL3RleHRhcmVhJztcblxuaW1wb3J0IHsgR3VpSWNvbnNSZWdpc3RyeSB9IGZyb20gJy4vZ3VpLWljb25zJztcblxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2d1aS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2d1aS1mb3JtLmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ3VpLWZvcm0uc2NzcycsXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIuaWRdJzogJ3VpZCcsXG4gICAgJ2NsYXNzJzogJ2d1aS1mb3JtJyxcbiAgfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgTWF0RXhwYW5zaW9uUGFuZWwsXG4gICAgTWF0RXhwYW5zaW9uUGFuZWxIZWFkZXIsXG4gICAgTWF0RXhwYW5zaW9uUGFuZWxDb250ZW50LFxuICAgIE1hdEljb25CdXR0b24sXG4gICAgTWF0SWNvbixcbiAgICBNYXRUYWJHcm91cCxcbiAgICBNYXRUYWIsXG4gICAgTWF0VGFiTGFiZWwsXG4gICAgTWF0VGFiQ29udGVudCxcbiAgICBHdWlGaWVsZEdyb3VwLFxuICAgIEd1aUZsZXhEaXJlY3RpdmUsXG4gICAgR3VpSW5wdXRUZXh0LFxuICAgIEd1aUlucHV0TnVtYmVyLFxuICAgIEd1aVNlbGVjdCxcbiAgICBHdWlTd2l0Y2gsXG4gICAgR3VpU2xpZGVyLFxuICAgIEd1aUJ1dHRvblRvZ2dsZSxcbiAgICBHdWlGaWxsLFxuICAgIEd1aUZpbGVVcGxvYWRlcixcbiAgICBHdWlJbWFnZVNlbGVjdCxcbiAgICBHdWlUZXh0YXJlYSxcbiAgICBHdWlJbmxpbmVHcm91cCxcbiAgICBHdWlGaWVsZExhYmVsLFxuICAgIEd1aUljb25CdXR0b25XcmFwcGVyLFxuICAgIEd1aUVqc1BpcGUsXG4gICAgR3VpQ29tYm9ib3gsXG4gICAgR3VpQ29kZWFyZWEsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEd1aUZvcm0gaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFRoZSBmb3JtIGluc3RhbmNlIHdoaWNoIGFsbG93IHRvIHRyYWNrIG1vZGVsIHZhbHVlIGFuZCB2YWxpZGF0aW9uIHN0YXR1cy5cbiAgICovXG4gIEBJbnB1dCgpIGZvcm0gPSBuZXcgRm9ybUdyb3VwPGFueT4oe30pO1xuXG4gIC8qKlxuICAgKiBUaGUgZmllbGQgY29uZmlndXJhdGlvbnMgZm9yIGJ1aWxkaW5nIHRoZSBmb3JtLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBHdWlGaWVsZHMgPSB7fTtcblxuICAvKipcbiAgICogVGhlIG1vZGVsIHRvIGJlIHJlcHJlc2VudGVkIGJ5IHRoZSBmb3JtLlxuICAgKi9cbiAgQElucHV0KCkgbW9kZWw6IGFueSA9IHt9O1xuXG4gIC8qKlxuICAgKiBGaXJlZCBvbiBtb2RlbCB2YWx1ZSBjaGFuZ2VcbiAgICovXG4gIEBPdXRwdXQoKSBtb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBmb3JtRmllbGRzOiBHdWlDb250cm9sW10gPSBbXTtcblxuICBmb3JtU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIGNvbnRyb2xTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIC8vIFVuaXF1ZSBpZCBmb3IgdGhpcyBmb3JtXG4gIHVpZCA9IGBndWktZm9ybS0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgY29uc3RydWN0b3IoaWNvbnNSZWdpc3RyeTogR3VpSWNvbnNSZWdpc3RyeSkge1xuICAgIGljb25zUmVnaXN0cnkuYWRkKCdob3Jpem9udGFsJywgJ3ZlcnRpY2FsJywgJ2NvcHknLCAnYWRkJywgJ2RlbGV0ZScpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSkge1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzID0ge307IC8vIHJlc2V0IGNvbnRyb2xzXG4gICAgICB0aGlzLmZvcm1GaWVsZHMgPSB0aGlzLmdldEZvcm1GaWVsZEFycmF5KHRoaXMuZm9ybSwgdGhpcy5jb25maWcsIHRoaXMubW9kZWwpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydtb2RlbCddICYmIHRoaXMubW9kZWwgJiYgT2JqZWN0LmtleXModGhpcy5tb2RlbCkubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtU3Vic2NyaXB0aW9uID0gdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm1vZGVsLCB2YWx1ZSk7XG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jb250cm9sU3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoZSBvYmplY3QgY29uZmlnIHRvIGFycmF5IGNvbmZpZyBhbmQgcmVnaXN0ZXIgaW50byB0aGUgcmVhY3RpdmUgZm9ybS5cbiAgICpcbiAgICogQHBhcmFtIGZvcm0gICAgICAgICBUaGUgcmVhY3RpdmUgZm9ybSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gY29uZmlnICAgICAgIFRoZSBjb25maWcgb2YgdGhlIGZvcm0gZmllbGRzXG4gICAqIEBwYXJhbSBtb2RlbCAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSBmb3JtIGNvbnRyb2xcbiAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZSBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgZm9ybSBmaWVsZFxuICAgKiBAcGFyYW0gcGFyZW50VHlwZSAgIFRoZSB0eXBlIG9mIHRoZSBmb3JtIGZpZWxkIHBhcmVudFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0Rm9ybUZpZWxkQXJyYXkoXG4gICAgZm9ybTogRm9ybUdyb3VwIHwgRm9ybUFycmF5LFxuICAgIGNvbmZpZzogR3VpRmllbGRzIHwgR3VpQ29udHJvbFtdID0ge30sXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgICBkZWZhdWx0VmFsdWU6IGFueSA9IG51bGwsXG4gICAgcGFyZW50VHlwZTogR3VpRmllbGRUeXBlID0gJ2dyb3VwJ1xuICApIHtcbiAgICBjb25zdCB0ZW1wQXJyID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb25maWcpKSB7XG4gICAgICAvLyBJbmZlcnJpbmcgdGhlIGZvcm0gdHlwZSBieSB0aGUgZGF0YSB0eXBlIG9mIGBjaGlsZHJlbmBcbiAgICAgIC8vIDEuIGB1bmRlZmluZWRgID0+IEZvcm1Db250cm9sXG4gICAgICAvLyAyLiBgYXJyYXlgICAgICA9PiBGb3JtQXJyYXlcbiAgICAgIC8vIDMuIGBvYmplY3RgICAgID0+IEZvcm1Hcm91cFxuICAgICAgY29uc3QgX2NoaWxkcmVuID0gKGNvbmZpZyBhcyBhbnkpW2tleV0udGVtcGxhdGUgPyBbXSA6IChjb25maWcgYXMgYW55KVtrZXldLmNoaWxkcmVuO1xuICAgICAgY29uc3QgX3R5cGUgPSAhX2NoaWxkcmVuID8gJ2NvbnRyb2wnIDogQXJyYXkuaXNBcnJheShfY2hpbGRyZW4pID8gJ2FycmF5JyA6ICdncm91cCc7XG5cbiAgICAgIGNvbnN0IGl0ZW06IEd1aUNvbnRyb2wgPSB7XG4gICAgICAgIF90eXBlLFxuICAgICAgICBrZXksXG4gICAgICAgIHBhcmVudFR5cGUsXG4gICAgICAgIG1vZGVsOiBtb2RlbFtrZXldLFxuICAgICAgICBkZWZhdWx0OiBkZWZhdWx0VmFsdWU/LltrZXldLFxuICAgICAgICBpbmRleDogTnVtYmVyKGtleSksIC8vIHRoZSBzdHJpbmcga2V5IHdpbGwgYmUgYE5hTmBcbiAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgLi4uKGNvbmZpZyBhcyBhbnkpW2tleV0sXG4gICAgICB9O1xuXG4gICAgICAvLyBUaGUgYGdyb3VwYCB0eXBlIGdlbmVyYWxseSBoYXZlIG5vIGBkZWZhdWx0YCwgc28gd2Ugc2hvdWxkXG4gICAgICAvLyBzZXQgdGhlIGRlZmF1bHQgdmFsdWUgbWFudWFsbHlcbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuICYmIG1vZGVsW2tleV0gPT0gbnVsbCAmJiBpdGVtLmRlZmF1bHQgPT0gbnVsbCkge1xuICAgICAgICBpdGVtLm1vZGVsID0gbW9kZWxba2V5XSA9IGl0ZW0uX3R5cGUgPT09ICdhcnJheScgPyBbXSA6IHt9O1xuICAgICAgfVxuXG4gICAgICAvLyBHZW5lcmF0ZSBtb2RlbCBieSB0aGUgYGRlZmF1bHRgIGtleSBvZiB0aGUgZmllbGQgY29uZmlnXG4gICAgICBpZiAodHlwZW9mIG1vZGVsID09PSAnb2JqZWN0JyAmJiBtb2RlbFtrZXldID09IG51bGwpIHtcbiAgICAgICAgbW9kZWxba2V5XSA9IGl0ZW0uZGVmYXVsdDtcbiAgICAgIH1cblxuICAgICAgLy8gU3BlY2lhbCBqdWRnbWVudCBvbiBgdGFic2AgdHlwZSwgdGhlIGBjaGlsZHJlbmAga2V5IHdpbGwgYmUgaWdub3JlZCBpZlxuICAgICAgLy8gdGhlcmUgaGFzIGEgYHRlbXBsYXRlYCBrZXlcbiAgICAgIGlmIChpdGVtLnRlbXBsYXRlKSB7XG4gICAgICAgIC8vIElmIHRoZSBtb2RlbCBpcyBhbiBhcnJheSwgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGZvcm0gZmllbGRcbiAgICAgICAgLy8gd2lsbCB1c2UgdGhlIG1vZGVsJ3MgdmFsdWVcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS5tb2RlbCkpIHtcbiAgICAgICAgICBpdGVtLmRlZmF1bHQgPSBpdGVtLm1vZGVsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpdGVtLmRlZmF1bHQ/Lmxlbmd0aCkge1xuICAgICAgICAgIGl0ZW0uY2hpbGRyZW4gPSBpdGVtLmRlZmF1bHQubWFwKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHZhbHVlLCBpdGVtLnRlbXBsYXRlPy5kZWZhdWx0KTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6IHZhbHVlLFxuICAgICAgICAgICAgICAuLi5pdGVtLnRlbXBsYXRlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtLmNoaWxkcmVuID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUGFyc2UgdGhlIGBzaG93SWZgIGNvbmRpdGlvbnNcbiAgICAgIGlmIChpdGVtLnNob3dJZikge1xuICAgICAgICBjb25zdCBzZXRWaXNpYmlsaXR5ID0gKGNvbXBhcmVXaXRoOiAoY29uZGl0aW9uOiBHdWlDb25kaXRpb24pID0+IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICBpZiAoaXRlbS5zaG93SWYhLmxvZ2ljYWxUeXBlID09PSAnJG9yJykge1xuICAgICAgICAgICAgaXRlbS5zaG93ID0gaXRlbS5zaG93SWYhLmNvbmRpdGlvbnMuc29tZShjID0+IGNvbXBhcmVXaXRoKGMpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXRlbS5zaG93ID0gaXRlbS5zaG93SWYhLmNvbmRpdGlvbnMuZXZlcnkoYyA9PiBjb21wYXJlV2l0aChjKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFNldCB0aGUgaW5pdCB2aXNpYmlsaXR5IG9mIHRoZSBmaWVsZFxuICAgICAgICBzZXRWaXNpYmlsaXR5KGMgPT4ge1xuICAgICAgICAgIGNvbnN0IGNmZyA9IGdldFZhbHVlQnlQYXRoKGNvbmZpZywgY1swXSkgPz8gZ2V0VmFsdWVCeVBhdGgodGhpcy5jb25maWcsIGNbMF0pO1xuICAgICAgICAgIGNvbnN0IHZhbCA9IGdldFZhbHVlQnlQYXRoKG1vZGVsLCBjWzBdKSA/PyBnZXRWYWx1ZUJ5UGF0aCh0aGlzLm1vZGVsLCBjWzBdKTtcbiAgICAgICAgICByZXR1cm4gY29tcGFyZVZhbHVlcyh2YWwgPz8gY2ZnPy5bJ2RlZmF1bHQnXSwgY1syXSwgY1sxXSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIERlbGF5IHRoZSBzdWJzY3JpcHRpb24gdG8gbWFrZSBzdXJlIGFsbCB0aGUgZm9ybSBjb250cm9scyBoYXZlIGJlZW4gY3JlYXRlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBnZXRDb250cm9sID0gKHBhdGg6IHN0cmluZykgPT4gZm9ybS5nZXQocGF0aCkgfHwgdGhpcy5mb3JtLmdldChwYXRoKTtcblxuICAgICAgICAgIGNvbnN0IGNvbnRyb2xzID0gaXRlbS5zaG93SWYhLmNvbmRpdGlvbnMubWFwKGMgPT4gZ2V0Q29udHJvbChjWzBdKSk7XG4gICAgICAgICAgY29uc3QgdmFsdWVDaGFuZ2VzJCA9IGNvbnRyb2xzLm1hcChjb250cm9sID0+IGNvbnRyb2w/LnZhbHVlQ2hhbmdlcyB8fCBvZigpKTtcbiAgICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBvZigpXG4gICAgICAgICAgICAucGlwZShtZXJnZVdpdGgoLi4udmFsdWVDaGFuZ2VzJCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgc2V0VmlzaWJpbGl0eShjID0+IGNvbXBhcmVWYWx1ZXMoZ2V0Q29udHJvbChjWzBdKT8udmFsdWUsIGNbMl0sIGNbMV0pKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5jb250cm9sU3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbS5fdHlwZSA9PT0gJ2NvbnRyb2wnKSB7XG4gICAgICAgIGNvbnN0IGZvcm1TdGF0ZSA9IHsgdmFsdWU6IGl0ZW0uZGVmYXVsdCwgZGlzYWJsZWQ6IGl0ZW0uZGlzYWJsZWQgfTtcbiAgICAgICAgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgICAgICBmb3JtLnJlZ2lzdGVyQ29udHJvbChpdGVtLmtleSwgbmV3IEZvcm1Db250cm9sKGZvcm1TdGF0ZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICAgICBmb3JtLmluc2VydChpdGVtLmluZGV4IHx8IGZvcm0ubGVuZ3RoLCBuZXcgRm9ybUNvbnRyb2woZm9ybVN0YXRlKSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uX3R5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgbGV0IGZvcm1BcnJheSA9IG5ldyBGb3JtQXJyYXk8YW55PihbXSk7XG4gICAgICAgIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICAgICAgZm9ybUFycmF5ID0gZm9ybS5yZWdpc3RlckNvbnRyb2woaXRlbS5rZXksIG5ldyBGb3JtQXJyYXkoW10pKSBhcyBGb3JtQXJyYXk7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgICAgIGZvcm0uaW5zZXJ0KGl0ZW0uaW5kZXggfHwgZm9ybS5sZW5ndGgsIGZvcm1BcnJheSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS5jaGlsZHJlbiA9IHRoaXMuZ2V0Rm9ybUZpZWxkQXJyYXkoXG4gICAgICAgICAgZm9ybUFycmF5LFxuICAgICAgICAgIGl0ZW0uY2hpbGRyZW4sXG4gICAgICAgICAgaXRlbS5tb2RlbCxcbiAgICAgICAgICBpdGVtLmRlZmF1bHQsXG4gICAgICAgICAgaXRlbS50eXBlXG4gICAgICAgICk7XG5cbiAgICAgICAgaXRlbS5zZWxlY3RlZEluZGV4ID0gMDtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS5fdHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICBsZXQgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgICAgIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICAgICAgZm9ybUdyb3VwID0gZm9ybS5yZWdpc3RlckNvbnRyb2woaXRlbS5rZXksIG5ldyBGb3JtR3JvdXAoe30pKSBhcyBGb3JtR3JvdXA7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgICAgIGZvcm0uaW5zZXJ0KGl0ZW0uaW5kZXggfHwgZm9ybS5sZW5ndGgsIGZvcm1Hcm91cCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbS5jaGlsZHJlbiA9IHRoaXMuZ2V0Rm9ybUZpZWxkQXJyYXkoXG4gICAgICAgICAgZm9ybUdyb3VwLFxuICAgICAgICAgIGl0ZW0uY2hpbGRyZW4sXG4gICAgICAgICAgaXRlbS5tb2RlbCxcbiAgICAgICAgICBpdGVtLmRlZmF1bHQsXG4gICAgICAgICAgaXRlbS50eXBlXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRlbXBBcnIucHVzaChpdGVtKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVtcEFycjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSB0YWIgaXRlbS5cbiAgICpcbiAgICogQHBhcmFtIGUgICAgICAgICBUaGUgbW91c2UgZXZlbnRcbiAgICogQHBhcmFtIGZvcm1BcnJheSBUaGUgcmVhY3RpdmUgZm9ybSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gdGFicyAgICAgIFRoZSBjb25maWcgb2YgdGhlIHRhYnMgZmllbGRcbiAgICogQHBhcmFtIGNvcHkgICAgICBXaGV0aGVyIHRvIGNvcHkgdGhlIGN1cnJlbnQgdGFiXG4gICAqIEBwYXJhbSBpbmRleCAgICAgVGhlIGluZGV4IG9mIHRoZSB0YWJzIGFycmF5XG4gICAqL1xuICBhZGRUYWIoZTogTW91c2VFdmVudCwgZm9ybUFycmF5OiBGb3JtQXJyYXksIHRhYnM6IEd1aUNvbnRyb2wsIGNvcHk/OiBib29sZWFuLCBpbmRleD86IG51bWJlcikge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgaW5zZXJ0SW5kZXggPVxuICAgICAgaW5kZXggIT09IHZvaWQgMCA/IGluZGV4ICsgMSA6IGNvcHkgPyB0YWJzLnNlbGVjdGVkSW5kZXghICsgMSA6IHRhYnMuY2hpbGRyZW4hLmxlbmd0aDtcbiAgICAvLyBTYXZlIHRoZSBpbmRleCBvZiB0aGUgaW5zZXJ0aW9uIGluIHRoZSBjb25maWdcbiAgICB0YWJzLnRlbXBsYXRlIS5pbmRleCA9IGluc2VydEluZGV4O1xuICAgIC8vIFRoZSBrZXkgaW4gdGhlIG9iamVjdCBhbmQgdGhlIGluZGV4IGluIHRoZSBhcnJheSBzaG91bGQgYmUgdGhlIHNhbWVcbiAgICB0YWJzLmNoaWxkcmVuIS5mb3JFYWNoKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbmRleCA+PSBpbnNlcnRJbmRleCkge1xuICAgICAgICBjaGlsZC5pbmRleCEgKz0gMTtcbiAgICAgICAgY2hpbGQua2V5ID0gY2hpbGQuaW5kZXggKyAnJzsgLy8gY29udmVydCB0byBzdHJpbmdcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IGZvcm1BcnJheS5nZXQoaW5zZXJ0SW5kZXggLSAxICsgJycpPy52YWx1ZTtcbiAgICAvLyBUaGUgY29uc3RydWN0ZWQgb2JqZWN0IGxvb2tzIGxpa2UgdGhpcyBgW3sga2V5OiAndGFiJywgY2hpbGRyZW46IHRlbXBsYXRlIH1dYFxuICAgIC8vIFRoZSBrZXkgc2hvdWxkIHByZWZlcmFibHkgYmUgYG51bGxgXG4gICAgY29uc3QgbmV3VGFiID0gdGhpcy5nZXRGb3JtRmllbGRBcnJheShcbiAgICAgIGZvcm1BcnJheSxcbiAgICAgIHsgW2luc2VydEluZGV4XTogdGFicy50ZW1wbGF0ZSB9IGFzIEd1aUZpZWxkcyxcbiAgICAgIGNvcHkgPyB7IFtpbnNlcnRJbmRleF06IGZvcm1WYWx1ZSB9IDoge30sXG4gICAgICBjb3B5ID8geyBbaW5zZXJ0SW5kZXhdOiBmb3JtVmFsdWUgfSA6IG51bGwsXG4gICAgICAndGFicydcbiAgICApO1xuICAgIHRhYnMuY2hpbGRyZW4hLnNwbGljZShpbnNlcnRJbmRleCwgMCwgbmV3VGFiWzBdKTtcblxuICAgIC8vIHVwZGF0ZSB0aGUgZm9ybSBtb2RlbFxuICAgIGZvcm1BcnJheS5wYXRjaFZhbHVlKGZvcm1BcnJheS52YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgdGFiIGl0ZW0uXG4gICAqXG4gICAqIEBwYXJhbSBlICAgICAgICAgVGhlIG1vdXNlIGV2ZW50XG4gICAqIEBwYXJhbSBmb3JtQXJyYXkgVGhlIHJlYWN0aXZlIGZvcm0gaW5zdGFuY2VcbiAgICogQHBhcmFtIHRhYnMgICAgICBUaGUgY29uZmlnIG9mIHRoZSB0YWJzIGZpZWxkXG4gICAqIEBwYXJhbSBpbmRleCAgICAgVGhlIGluZGV4IG9mIHRoZSB0YWJzIGFycmF5XG4gICAqL1xuICByZW1vdmVUYWIoZTogTW91c2VFdmVudCwgZm9ybUFycmF5OiBGb3JtQXJyYXksIHRhYnM6IEd1aUNvbnRyb2wsIGluZGV4PzogbnVtYmVyKSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCByZW1vdmVJbmRleCA9IGluZGV4ID09PSB2b2lkIDAgPyB0YWJzLnNlbGVjdGVkSW5kZXghIDogaW5kZXg7XG4gICAgdGFicy5jaGlsZHJlbiEuZm9yRWFjaCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoaW5kZXggPiByZW1vdmVJbmRleCkge1xuICAgICAgICBjaGlsZC5pbmRleCEgLT0gMTtcbiAgICAgICAgY2hpbGQua2V5ID0gY2hpbGQuaW5kZXggKyAnJzsgLy8gY29udmVydCB0byBzdHJpbmdcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0YWJzLmNoaWxkcmVuIS5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xuICAgIGZvcm1BcnJheS5yZW1vdmVBdChyZW1vdmVJbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBkaXNwbGF5IG1vZGUgb2YgdGFicy5cbiAgICpcbiAgICogQHBhcmFtIGUgICAgVGhlIG1vdXNlIGV2ZW50XG4gICAqIEBwYXJhbSB0YWJzIFRoZSBjb25maWcgb2YgdGhlIHRhYnMgZmllbGRcbiAgICogQHBhcmFtIG1vZGUgVGhlIGRpc3BsYXkgbW9kZSBvZiB0YWJzXG4gICAqL1xuICBjaGFuZ2VUYWJzTW9kZShlOiBNb3VzZUV2ZW50LCB0YWJzOiBHdWlDb250cm9sLCBtb2RlPzogR3VpVGFic01vZGUpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRhYnMubW9kZSA9IG1vZGU7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICBAZm9yIChpdGVtIG9mIGZvcm1GaWVsZHM7IHRyYWNrIGl0ZW0pIHtcbiAgICA8ZGl2PlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUeXBlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6IGl0ZW0sIGZvcm1Hcm91cDogZm9ybX1cIiAvPlxuICAgIDwvZGl2PlxuICB9XG48L2Zvcm0+XG5cbjxuZy10ZW1wbGF0ZSAjY29udHJvbFR5cGUgbGV0LWl0ZW0gbGV0LXBhcmVudD1cInBhcmVudFwiIGxldC1mb3JtPVwiZm9ybUdyb3VwXCI+XG4gIEBpZiAoaXRlbS5zaG93KSB7XG4gICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICAgIEBzd2l0Y2ggKGl0ZW0udHlwZSkge1xuICAgICAgICBAY2FzZSAoJ3RleHQnKSB7XG4gICAgICAgICAgPGd1aS1maWVsZC1ncm91cCBbY29uZmlnXT1cIml0ZW1cIiBbZmxleF09XCJpdGVtLmNvbFwiPlxuICAgICAgICAgICAgPGd1aS1pbnB1dC10ZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIiBbY29uZmlnXT1cIml0ZW1cIiAvPlxuICAgICAgICAgIDwvZ3VpLWZpZWxkLWdyb3VwPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnbnVtYmVyJykge1xuICAgICAgICAgIDxndWktZmllbGQtZ3JvdXAgW2NvbmZpZ109XCJpdGVtXCIgW2ZsZXhdPVwiaXRlbS5jb2xcIj5cbiAgICAgICAgICAgIDxndWktaW5wdXQtbnVtYmVyIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIiBbY29uZmlnXT1cIml0ZW1cIiAvPlxuICAgICAgICAgIDwvZ3VpLWZpZWxkLWdyb3VwPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnc2VsZWN0Jykge1xuICAgICAgICAgIDxndWktZmllbGQtZ3JvdXAgW2NvbmZpZ109XCJpdGVtXCIgW2ZsZXhdPVwiaXRlbS5jb2xcIj5cbiAgICAgICAgICAgIDxndWktc2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIiBbY29uZmlnXT1cIml0ZW1cIiAvPlxuICAgICAgICAgIDwvZ3VpLWZpZWxkLWdyb3VwPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnc3dpdGNoJykge1xuICAgICAgICAgIDxndWktZmllbGQtZ3JvdXAgW2NvbmZpZ109XCJpdGVtXCIgW2ZsZXhdPVwiaXRlbS5jb2xcIj5cbiAgICAgICAgICAgIDxndWktc3dpdGNoIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIiBbY29uZmlnXT1cIml0ZW1cIiAvPlxuICAgICAgICAgIDwvZ3VpLWZpZWxkLWdyb3VwPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnc2xpZGVyJykge1xuICAgICAgICAgIDxndWktZmllbGQtZ3JvdXAgW2NvbmZpZ109XCJpdGVtXCIgW2ZsZXhdPVwiaXRlbS5jb2xcIj5cbiAgICAgICAgICAgIDxndWktc2xpZGVyIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIiBbY29uZmlnXT1cIml0ZW1cIiAvPlxuICAgICAgICAgIDwvZ3VpLWZpZWxkLWdyb3VwPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnYnV0dG9uVG9nZ2xlJykge1xuICAgICAgICAgIDxndWktZmllbGQtZ3JvdXAgW2NvbmZpZ109XCJpdGVtXCIgW2ZsZXhdPVwiaXRlbS5jb2xcIj5cbiAgICAgICAgICAgIDxndWktYnV0dG9uLXRvZ2dsZSBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCIgW2NvbmZpZ109XCJpdGVtXCIgLz5cbiAgICAgICAgICA8L2d1aS1maWVsZC1ncm91cD5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2ZpbGwnKSB7XG4gICAgICAgICAgPGd1aS1maWVsZC1ncm91cCBbY29uZmlnXT1cIml0ZW1cIiBbZmxleF09XCJpdGVtLmNvbFwiPlxuICAgICAgICAgICAgPGd1aS1maWxsIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIiBbY29uZmlnXT1cIml0ZW1cIiAvPlxuICAgICAgICAgIDwvZ3VpLWZpZWxkLWdyb3VwPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnZmlsZScpIHtcbiAgICAgICAgICA8Z3VpLWZpZWxkLWdyb3VwIFtjb25maWddPVwiaXRlbVwiIFtmbGV4XT1cIml0ZW0uY29sXCI+XG4gICAgICAgICAgICA8Z3VpLWZpbGUtdXBsb2FkZXIgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtjb25maWddPVwiaXRlbVwiIC8+XG4gICAgICAgICAgPC9ndWktZmllbGQtZ3JvdXA+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdpbWFnZScpIHtcbiAgICAgICAgICA8Z3VpLWZpZWxkLWdyb3VwIFtjb25maWddPVwiaXRlbVwiIFtmbGV4XT1cIml0ZW0uY29sXCI+XG4gICAgICAgICAgICA8Z3VpLWZpbGUtdXBsb2FkZXIgdHlwZT1cImltYWdlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtjb25maWddPVwiaXRlbVwiIC8+XG4gICAgICAgICAgPC9ndWktZmllbGQtZ3JvdXA+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCd2aWRlbycpIHtcbiAgICAgICAgICA8Z3VpLWZpZWxkLWdyb3VwIFtjb25maWddPVwiaXRlbVwiIFtmbGV4XT1cIml0ZW0uY29sXCI+XG4gICAgICAgICAgICA8Z3VpLWZpbGUtdXBsb2FkZXIgdHlwZT1cInZpZGVvXCIgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtjb25maWddPVwiaXRlbVwiIC8+XG4gICAgICAgICAgPC9ndWktZmllbGQtZ3JvdXA+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdhdWRpbycpIHtcbiAgICAgICAgICA8Z3VpLWZpZWxkLWdyb3VwIFtjb25maWddPVwiaXRlbVwiIFtmbGV4XT1cIml0ZW0uY29sXCI+XG4gICAgICAgICAgICA8Z3VpLWZpbGUtdXBsb2FkZXIgdHlwZT1cImF1ZGlvXCIgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtjb25maWddPVwiaXRlbVwiIC8+XG4gICAgICAgICAgPC9ndWktZmllbGQtZ3JvdXA+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdpbWFnZVNlbGVjdCcpIHtcbiAgICAgICAgICA8Z3VpLWZpZWxkLWdyb3VwIFtjb25maWddPVwiaXRlbVwiIFtmbGV4XT1cIml0ZW0uY29sXCI+XG4gICAgICAgICAgICA8Z3VpLWltYWdlLXNlbGVjdCBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCIgW2NvbmZpZ109XCJpdGVtXCIgW2FwcGVuZFRvXT1cIicjJyt1aWRcIiAvPlxuICAgICAgICAgIDwvZ3VpLWZpZWxkLWdyb3VwPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnY29tYm9ib3gnKSB7XG4gICAgICAgICAgPGd1aS1maWVsZC1ncm91cCBbY29uZmlnXT1cIml0ZW1cIiBbZmxleF09XCJpdGVtLmNvbFwiPlxuICAgICAgICAgICAgPGd1aS1jb21ib2JveCBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCIgW2NvbmZpZ109XCJpdGVtXCIgW2FwcGVuZFRvXT1cIicjJyt1aWRcIiAvPlxuICAgICAgICAgIDwvZ3VpLWZpZWxkLWdyb3VwPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgndGV4dGFyZWEnKSB7XG4gICAgICAgICAgPGd1aS1maWVsZC1ncm91cCBbY29uZmlnXT1cIml0ZW1cIiBbZmxleF09XCJpdGVtLmNvbFwiPlxuICAgICAgICAgICAgPGd1aS10ZXh0YXJlYSBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCIgW2NvbmZpZ109XCJpdGVtXCIgLz5cbiAgICAgICAgICA8L2d1aS1maWVsZC1ncm91cD5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2NvZGVhcmVhJykge1xuICAgICAgICAgIDxndWktZmllbGQtZ3JvdXAgW2NvbmZpZ109XCJpdGVtXCIgW2ZsZXhdPVwiaXRlbS5jb2xcIj5cbiAgICAgICAgICAgIDxndWktY29kZWFyZWEgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtjb25maWddPVwiaXRlbVwiIC8+XG4gICAgICAgICAgPC9ndWktZmllbGQtZ3JvdXA+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdoaWRkZW4nKSB7XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCI+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdpbmxpbmUnKSB7XG4gICAgICAgICAgPGd1aS1pbmxpbmUtZ3JvdXAgW2NvbmZpZ109XCJpdGVtXCIgW2Zvcm1Hcm91cE5hbWVdPVwiaXRlbS5rZXlcIj5cbiAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIGl0ZW0uY2hpbGRyZW47IHRyYWNrIGNoaWxkKSB7XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVHlwZVwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsIHBhcmVudDogaXRlbSwgZm9ybUdyb3VwOiBmb3JtLmdldChpdGVtLmtleSlcbiAgICAgICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2d1aS1pbmxpbmUtZ3JvdXA+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdncm91cCcpIHtcbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZm9ybUdyb3VwTmFtZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICBbKGV4cGFuZGVkKV09XCJpdGVtLmV4cGFuZGVkXCIgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIj5cbiAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGd1aS1maWVsZC1sYWJlbCBbY29uZmlnXT1cIml0ZW1cIiAvPlxuICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgIDwhLS0gTGF6eSByZW5kZXJpbmcgLS0+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0RXhwYW5zaW9uUGFuZWxDb250ZW50PlxuICAgICAgICAgICAgICBAZm9yIChjaGlsZCBvZiBpdGVtLmNoaWxkcmVuOyB0cmFjayBjaGlsZCkge1xuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFR5cGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsIHBhcmVudDogaXRlbSwgZm9ybUdyb3VwOiBmb3JtLmdldChpdGVtLmtleSlcbiAgICAgICAgICAgICAgICAgICAgfVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgndGFicycpIHtcbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZm9ybUFycmF5TmFtZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICBbKGV4cGFuZGVkKV09XCJpdGVtLmV4cGFuZGVkXCIgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIj5cbiAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgICAgPGd1aS1maWVsZC1sYWJlbCBbY29uZmlnXT1cIml0ZW1cIiAvPlxuICAgICAgICAgICAgICA8IS0tIFNob3cgb3BlcmF0aW9uIGJ1dHRvbnMgd2hlbiBwYW5lbCBvcGVuZWQgLS0+XG4gICAgICAgICAgICAgIEBpZiAoaXRlbS5leHBhbmRlZCkge1xuICAgICAgICAgICAgICAgIDxndWktaWNvbi1idXR0b24td3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbY29sb3JdPVwiaXRlbS5tb2RlIT09J2xpc3QnPydwcmltYXJ5JzonJ1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VUYWJzTW9kZSgkZXZlbnQsIGl0ZW0sICdub3JtYWwnKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImhvcml6b250YWxcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2NvbG9yXT1cIml0ZW0ubW9kZT09PSdsaXN0Jz8ncHJpbWFyeSc6JydcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlVGFic01vZGUoJGV2ZW50LCBpdGVtLCAnbGlzdCcpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwidmVydGljYWxcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0udGVtcGxhdGUgJiYgKGl0ZW0uYWRkYWJsZSB8fCBpdGVtLmFkZGFibGU9PT11bmRlZmluZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZFRhYigkZXZlbnQsIGZvcm0uZ2V0KGl0ZW0ua2V5KSwgaXRlbSwgdHJ1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImNvcHlcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkVGFiKCRldmVudCwgZm9ybS5nZXQoaXRlbS5rZXkpLCBpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiYWRkXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVRhYigkZXZlbnQsIGZvcm0uZ2V0KGl0ZW0ua2V5KSwgaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImRlbGV0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZ3VpLWljb24tYnV0dG9uLXdyYXBwZXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICA8IS0tIExhenkgcmVuZGVyaW5nIC0tPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdEV4cGFuc2lvblBhbmVsQ29udGVudD5cbiAgICAgICAgICAgICAgQGlmIChpdGVtLm1vZGUhPT0nbGlzdCcpIHtcbiAgICAgICAgICAgICAgICA8IS0tIEhvcml6b250YWwgbW9kZSAtLT5cbiAgICAgICAgICAgICAgICA8bWF0LXRhYi1ncm91cCBjbGFzcz1cImd1aS10YWJzXCIgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgICAgICAgW21hdC1zdHJldGNoLXRhYnNdPVwiZmFsc2VcIiBbKHNlbGVjdGVkSW5kZXgpXT1cIml0ZW0uc2VsZWN0ZWRJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgQGZvciAodGFiIG9mIGl0ZW0uY2hpbGRyZW47IHRyYWNrIHRhYjsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgPG1hdC10YWIgW2Rpc2FibGVkXT1cInRhYi5kaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57e3RhYi5uYW1lIHwgZWpzOntpfSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBGb3JtQ29udHJvbCAmIEZvcm1BcnJheSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKCF0YWIuY2hpbGRyZW4gfHwgdGFiLmNoaWxkcmVuLmxlbmd0aD09PTAgfHwgdGFiLnR5cGU9PT0ndGFicycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiB0YWIsIHBhcmVudDogaXRlbSwgZm9ybUdyb3VwOiBmb3JtLmdldChbaXRlbS5rZXldKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBGb3JtR3JvdXAgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmICh0YWIuY2hpbGRyZW4/Lmxlbmd0aD4wICYmIHRhYi50eXBlIT09J3RhYnMnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChjaGlsZCBvZiB0YWIuY2hpbGRyZW47IHRyYWNrIGNoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsIHBhcmVudDogaXRlbSwgZm9ybUdyb3VwOiBmb3JtLmdldChbaXRlbS5rZXksIGldKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPCEtLSBWZXJ0aWNhbCBtb2RlIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJndWktbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgQGZvciAodGFiIG9mIGl0ZW0uY2hpbGRyZW47IHRyYWNrIHRhYjsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImd1aS1saXN0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ndWktbGlzdC1pdGVtLWFjdGl2ZV09XCJpdGVtLnNlbGVjdGVkSW5kZXg9PT1pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImd1aS1saXN0LWl0ZW0taGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImd1aS1saXN0LWl0ZW0tdGl0bGVcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIml0ZW0uc2VsZWN0ZWRJbmRleD1pXCI+e3t0YWIubmFtZSB8IGVqczp7aX0gfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS50ZW1wbGF0ZSAmJiAoaXRlbS5hZGRhYmxlIHx8IGl0ZW0uYWRkYWJsZT09PXVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGd1aS1pY29uLWJ1dHRvbi13cmFwcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkVGFiKCRldmVudCwgZm9ybS5nZXQoaXRlbS5rZXkpLCBpdGVtLCB0cnVlLCBpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJjb3B5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZFRhYigkZXZlbnQsIGZvcm0uZ2V0KGl0ZW0ua2V5KSwgaXRlbSwgZmFsc2UsIGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImFkZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVUYWIoJGV2ZW50LCBmb3JtLmdldChpdGVtLmtleSksIGl0ZW0sIGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImRlbGV0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3VpLWljb24tYnV0dG9uLXdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImd1aS1saXN0LWl0ZW0tY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGb3JtQ29udHJvbCAmIEZvcm1BcnJheSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIXRhYi5jaGlsZHJlbiB8fCB0YWIuY2hpbGRyZW4ubGVuZ3RoPT09MCB8fCB0YWIudHlwZT09PSd0YWJzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHRhYiwgcGFyZW50OiBpdGVtLCBmb3JtR3JvdXA6IGZvcm0uZ2V0KFtpdGVtLmtleV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvcm1Hcm91cCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodGFiLmNoaWxkcmVuPy5sZW5ndGg+MCAmJiB0YWIudHlwZSE9PSd0YWJzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChjaGlsZCBvZiB0YWIuY2hpbGRyZW47IHRyYWNrIGNoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCwgcGFyZW50OiBpdGVtLCBmb3JtR3JvdXA6IGZvcm0uZ2V0KFtpdGVtLmtleSwgaV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ21lbnUnKSB7XG4gICAgICAgICAgPG1hdC10YWItZ3JvdXAgY2xhc3M9XCJndWktbWVudVwiIFtmb3JtR3JvdXBOYW1lXT1cIml0ZW0ua2V5XCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIEBmb3IgKG1lbnVDaGlsZCBvZiBpdGVtLmNoaWxkcmVuOyB0cmFjayBtZW51Q2hpbGQpIHtcbiAgICAgICAgICAgICAgPG1hdC10YWIgW2xhYmVsXT1cIm1lbnVDaGlsZC5uYW1lXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudUNoaWxkLmRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICBAaWYgKG1lbnVDaGlsZC50eXBlPT09J21lbnVJdGVtJykge1xuICAgICAgICAgICAgICAgICAgICA8IS0tIE11c3Qgd3JhcCB3aXRoIGRpdiAtLT5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY29udHJvbEl0ZW0gb2YgbWVudUNoaWxkLmNoaWxkcmVuOyB0cmFjayBjb250cm9sSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2Zvcm1Hcm91cE5hbWVdPVwibWVudUNoaWxkLmtleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbnRyb2xJdGVtLCBmb3JtR3JvdXA6IGZvcm0uZ2V0KFtpdGVtLmtleSwgbWVudUNoaWxkLmtleV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tIFN1cHBvcnQgZm9yIHVubGltaXRlZCBuZXN0aW5nIC0tPlxuICAgICAgICAgICAgICAgICAgQGlmIChtZW51Q2hpbGQudHlwZT09PSdtZW51Jykge1xuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IG1lbnVDaGlsZCwgZm9ybUdyb3VwOiBmb3JtLmdldChpdGVtLmtleSlcbiAgICAgICAgICAgICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9tYXQtdGFiLWdyb3VwPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9uZy1jb250YWluZXI+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpLWZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9ndWkvZ3VpLWZvcm0udHMiLCIuLi8uLi8uLi9wcm9qZWN0cy9ndWkvZ3VpLWZvcm0uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLHVCQUF1QixHQUN4QixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVB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Z0ZBQ2IsZ0JBQWdCLHFFQUNoQixZQUFZLDJGQUNaLGNBQWMsNkZBQ2QsU0FBUyx1RkFDVCxTQUFTLHVGQUNULFNBQVMsdUZBQ1QsZUFBZSw4RkFDZixPQUFPLDZGQUNQLGVBQWUsaUpBQ2YsY0FBYyx5R0FDZCxXQUFXLHlGQUNYLGNBQWMsaUZBQ2QsYUFBYSx5RkFDYixvQkFBb0IsK0RBQ3BCLFVBQVUsNENBQ1YsV0FBVyxxR0FDWCxXQUFXOzs0RkFHRixPQUFPO2tCQTNDbkIsU0FBUzsrQkFDRSxVQUFVLFFBR2Q7d0JBQ0osV0FBVyxFQUFFLEtBQUs7d0JBQ2xCLE9BQU8sRUFBRSxVQUFVO3FCQUNwQixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIsYUFBYTt3QkFDYixPQUFPO3dCQUNQLFdBQVc7d0JBQ1gsTUFBTTt3QkFDTixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxTQUFTO3dCQUNULFNBQVM7d0JBQ1QsU0FBUzt3QkFDVCxlQUFlO3dCQUNmLE9BQU87d0JBQ1AsZUFBZTt3QkFDZixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsVUFBVTt3QkFDVixXQUFXO3dCQUNYLFdBQVc7cUJBQ1o7cUZBTVEsSUFBSTtzQkFBWixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBS0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRJY29uQnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7XG4gIE1hdEV4cGFuc2lvblBhbmVsLFxuICBNYXRFeHBhbnNpb25QYW5lbENvbnRlbnQsXG4gIE1hdEV4cGFuc2lvblBhbmVsSGVhZGVyLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0VGFiLCBNYXRUYWJDb250ZW50LCBNYXRUYWJHcm91cCwgTWF0VGFiTGFiZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgbWVyZ2VXaXRoLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBHdWlCdXR0b25Ub2dnbGUgfSBmcm9tICcuL2J1dHRvbi10b2dnbGUvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBHdWlDb2RlYXJlYSB9IGZyb20gJy4vY29kZWFyZWEvY29kZWFyZWEnO1xuaW1wb3J0IHsgR3VpQ29tYm9ib3ggfSBmcm9tICcuL2NvbWJvYm94L2NvbWJvYm94JztcbmltcG9ydCB7IEd1aUZpZWxkR3JvdXAgfSBmcm9tICcuL2ZpZWxkLWdyb3VwL2ZpZWxkLWdyb3VwJztcbmltcG9ydCB7IEd1aUZpZWxkTGFiZWwgfSBmcm9tICcuL2ZpZWxkLWxhYmVsL2ZpZWxkLWxhYmVsJztcbmltcG9ydCB7IEd1aUZpbGVVcGxvYWRlciB9IGZyb20gJy4vZmlsZS11cGxvYWRlci9maWxlLXVwbG9hZGVyJztcbmltcG9ydCB7IEd1aUZpbGwgfSBmcm9tICcuL2ZpbGwvZmlsbCc7XG5pbXBvcnQge1xuICBHdWlFanNQaXBlLFxuICBHdWlGbGV4RGlyZWN0aXZlLFxuICBjb21wYXJlVmFsdWVzLFxuICBnZXRNb2RlbEZyb21Db25maWcsXG4gIGdldFZhbHVlQnlQYXRoLFxufSBmcm9tICcuL2d1aS11dGlscyc7XG5pbXBvcnQgeyBHdWlJY29uQnV0dG9uV3JhcHBlciB9IGZyb20gJy4vaWNvbi1idXR0b24td3JhcHBlci9pY29uLWJ1dHRvbi13cmFwcGVyJztcbmltcG9ydCB7IEd1aUltYWdlU2VsZWN0IH0gZnJvbSAnLi9pbWFnZS1zZWxlY3QvaW1hZ2Utc2VsZWN0JztcbmltcG9ydCB7IEd1aUlubGluZUdyb3VwIH0gZnJvbSAnLi9pbmxpbmUtZ3JvdXAvaW5saW5lLWdyb3VwJztcbmltcG9ydCB7IEd1aUlucHV0TnVtYmVyIH0gZnJvbSAnLi9pbnB1dC1udW1iZXIvaW5wdXQtbnVtYmVyJztcbmltcG9ydCB7IEd1aUlucHV0VGV4dCB9IGZyb20gJy4vaW5wdXQtdGV4dC9pbnB1dC10ZXh0JztcbmltcG9ydCB7IEd1aUNvbmRpdGlvbiwgR3VpQ29udHJvbCwgR3VpRmllbGRUeXBlLCBHdWlGaWVsZHMsIEd1aVRhYnNNb2RlIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR3VpU2VsZWN0IH0gZnJvbSAnLi9zZWxlY3Qvc2VsZWN0JztcbmltcG9ydCB7IEd1aVNsaWRlciB9IGZyb20gJy4vc2xpZGVyL3NsaWRlcic7XG5pbXBvcnQgeyBHdWlTd2l0Y2ggfSBmcm9tICcuL3N3aXRjaC9zd2l0Y2gnO1xuaW1wb3J0IHsgR3VpVGV4dGFyZWEgfSBmcm9tICcuL3RleHRhcmVhL3RleHRhcmVhJztcblxuaW1wb3J0IHsgR3VpSWNvbnNSZWdpc3RyeSB9IGZyb20gJy4vZ3VpLWljb25zJztcblxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2d1aS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2d1aS1mb3JtLmh0bWwnLFxuICBzdHlsZVVybDogJy4vZ3VpLWZvcm0uc2NzcycsXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIuaWRdJzogJ3VpZCcsXG4gICAgJ2NsYXNzJzogJ2d1aS1mb3JtJyxcbiAgfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgTWF0RXhwYW5zaW9uUGFuZWwsXG4gICAgTWF0RXhwYW5zaW9uUGFuZWxIZWFkZXIsXG4gICAgTWF0RXhwYW5zaW9uUGFuZWxDb250ZW50LFxuICAgIE1hdEljb25CdXR0b24sXG4gICAgTWF0SWNvbixcbiAgICBNYXRUYWJHcm91cCxcbiAgICBNYXRUYWIsXG4gICAgTWF0VGFiTGFiZWwsXG4gICAgTWF0VGFiQ29udGVudCxcbiAgICBHdWlGaWVsZEdyb3VwLFxuICAgIEd1aUZsZXhEaXJlY3RpdmUsXG4gICAgR3VpSW5wdXRUZXh0LFxuICAgIEd1aUlucHV0TnVtYmVyLFxuICAgIEd1aVNlbGVjdCxcbiAgICBHdWlTd2l0Y2gsXG4gICAgR3VpU2xpZGVyLFxuICAgIEd1aUJ1dHRvblRvZ2dsZSxcbiAgICBHdWlGaWxsLFxuICAgIEd1aUZpbGVVcGxvYWRlcixcbiAgICBHdWlJbWFnZVNlbGVjdCxcbiAgICBHdWlUZXh0YXJlYSxcbiAgICBHdWlJbmxpbmVHcm91cCxcbiAgICBHdWlGaWVsZExhYmVsLFxuICAgIEd1aUljb25CdXR0b25XcmFwcGVyLFxuICAgIEd1aUVqc1BpcGUsXG4gICAgR3VpQ29tYm9ib3gsXG4gICAgR3VpQ29kZWFyZWEsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEd1aUZvcm0gaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFRoZSBmb3JtIGluc3RhbmNlIHdoaWNoIGFsbG93IHRvIHRyYWNrIG1vZGVsIHZhbHVlIGFuZCB2YWxpZGF0aW9uIHN0YXR1cy5cbiAgICovXG4gIEBJbnB1dCgpIGZvcm0gPSBuZXcgRm9ybUdyb3VwPGFueT4oe30pO1xuXG4gIC8qKlxuICAgKiBUaGUgZmllbGQgY29uZmlndXJhdGlvbnMgZm9yIGJ1aWxkaW5nIHRoZSBmb3JtLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBHdWlGaWVsZHMgPSB7fTtcblxuICAvKipcbiAgICogVGhlIG1vZGVsIHRvIGJlIHJlcHJlc2VudGVkIGJ5IHRoZSBmb3JtLlxuICAgKi9cbiAgQElucHV0KCkgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAvKipcbiAgICogRmlyZWQgb24gbW9kZWwgdmFsdWUgY2hhbmdlXG4gICAqL1xuICBAT3V0cHV0KCkgbW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgZm9ybUZpZWxkczogR3VpQ29udHJvbFtdID0gW107XG5cbiAgZm9ybVN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICBjb250cm9sU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAvLyBVbmlxdWUgaWQgZm9yIHRoaXMgZm9ybVxuICB1aWQgPSBgZ3VpLWZvcm0tJHtuZXh0VW5pcXVlSWQrK31gO1xuXG4gIGNvbnN0cnVjdG9yKGljb25zUmVnaXN0cnk6IEd1aUljb25zUmVnaXN0cnkpIHtcbiAgICBpY29uc1JlZ2lzdHJ5LmFkZCgnaG9yaXpvbnRhbCcsICd2ZXJ0aWNhbCcsICdjb3B5JywgJ2FkZCcsICdkZWxldGUnKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY29uZmlnJ10pIHtcbiAgICAgIGdldE1vZGVsRnJvbUNvbmZpZyh0aGlzLmNvbmZpZywgdGhpcy5tb2RlbCk7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMgPSB7fTsgLy8gcmVzZXQgY29udHJvbHNcbiAgICAgIHRoaXMuZm9ybUZpZWxkcyA9IHRoaXMuZ2V0Rm9ybUZpZWxkQXJyYXkodGhpcy5mb3JtLCB0aGlzLmNvbmZpZywgdGhpcy5tb2RlbCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ21vZGVsJ10gJiYgdGhpcy5tb2RlbCAmJiBPYmplY3Qua2V5cyh0aGlzLm1vZGVsKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLm1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1TdWJzY3JpcHRpb24gPSB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMubW9kZWwsIHZhbHVlKTtcbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhlIG9iamVjdCBjb25maWcgdG8gYXJyYXkgY29uZmlnIGFuZCByZWdpc3RlciBpbnRvIHRoZSByZWFjdGl2ZSBmb3JtLlxuICAgKlxuICAgKiBAcGFyYW0gZm9ybSAgICAgICAgIFRoZSByZWFjdGl2ZSBmb3JtIGluc3RhbmNlXG4gICAqIEBwYXJhbSBjb25maWcgICAgICAgVGhlIGNvbmZpZyBvZiB0aGUgZm9ybSBmaWVsZHNcbiAgICogQHBhcmFtIG1vZGVsICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIGZvcm0gY29udHJvbFxuICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBmb3JtIGZpZWxkXG4gICAqIEBwYXJhbSBwYXJlbnRUeXBlICAgVGhlIHR5cGUgb2YgdGhlIGZvcm0gZmllbGQgcGFyZW50XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRGb3JtRmllbGRBcnJheShcbiAgICBmb3JtOiBGb3JtR3JvdXAgfCBGb3JtQXJyYXksXG4gICAgY29uZmlnOiBHdWlGaWVsZHMgfCBHdWlDb250cm9sW10gPSB7fSxcbiAgICBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuICAgIGRlZmF1bHRWYWx1ZTogYW55ID0gbnVsbCxcbiAgICBwYXJlbnRUeXBlOiBHdWlGaWVsZFR5cGUgPSAnZ3JvdXAnXG4gICkge1xuICAgIGNvbnN0IHRlbXBBcnIgPSBbXTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNvbmZpZykpIHtcbiAgICAgIC8vIEluZmVycmluZyB0aGUgZm9ybSB0eXBlIGJ5IHRoZSBkYXRhIHR5cGUgb2YgYGNoaWxkcmVuYFxuICAgICAgLy8gMS4gYHVuZGVmaW5lZGAgPT4gRm9ybUNvbnRyb2xcbiAgICAgIC8vIDIuIGBhcnJheWAgICAgID0+IEZvcm1BcnJheVxuICAgICAgLy8gMy4gYG9iamVjdGAgICAgPT4gRm9ybUdyb3VwXG4gICAgICBjb25zdCBfY2hpbGRyZW4gPSAoY29uZmlnIGFzIGFueSlba2V5XS50ZW1wbGF0ZSA/IFtdIDogKGNvbmZpZyBhcyBhbnkpW2tleV0uY2hpbGRyZW47XG4gICAgICBjb25zdCBfdHlwZSA9ICFfY2hpbGRyZW4gPyAnY29udHJvbCcgOiBBcnJheS5pc0FycmF5KF9jaGlsZHJlbikgPyAnYXJyYXknIDogJ2dyb3VwJztcblxuICAgICAgY29uc3QgaXRlbTogR3VpQ29udHJvbCA9IHtcbiAgICAgICAgLi4uKGNvbmZpZyBhcyBhbnkpW2tleV0sXG4gICAgICAgIF90eXBlLFxuICAgICAgICBrZXksXG4gICAgICAgIHBhcmVudFR5cGUsXG4gICAgICAgIG1vZGVsOiBtb2RlbFtrZXldLFxuICAgICAgICBkZWZhdWx0OiBkZWZhdWx0VmFsdWU/LltrZXldID8/IChjb25maWcgYXMgYW55KVtrZXldLmRlZmF1bHQsXG4gICAgICAgIGluZGV4OiBOdW1iZXIoa2V5KSwgLy8gdGhlIHN0cmluZyBrZXkgd2lsbCBiZSBgTmFOYFxuICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgLy8gVGhlIGBncm91cGAgdHlwZSBnZW5lcmFsbHkgaGF2ZSBubyBgZGVmYXVsdGAsIHNvIHdlIHNob3VsZFxuICAgICAgLy8gc2V0IHRoZSBkZWZhdWx0IHZhbHVlIG1hbnVhbGx5XG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBtb2RlbFtrZXldID09IG51bGwgJiYgaXRlbS5kZWZhdWx0ID09IG51bGwpIHtcbiAgICAgICAgaXRlbS5tb2RlbCA9IG1vZGVsW2tleV0gPSBpdGVtLl90eXBlID09PSAnYXJyYXknID8gW10gOiB7fTtcbiAgICAgIH1cblxuICAgICAgLy8gR2VuZXJhdGUgbW9kZWwgYnkgdGhlIGBkZWZhdWx0YCBrZXkgb2YgdGhlIGZpZWxkIGNvbmZpZ1xuICAgICAgaWYgKHR5cGVvZiBtb2RlbCA9PT0gJ29iamVjdCcgJiYgbW9kZWxba2V5XSA9PSBudWxsKSB7XG4gICAgICAgIG1vZGVsW2tleV0gPSBpdGVtLmRlZmF1bHQ7XG4gICAgICB9XG5cbiAgICAgIC8vIFNwZWNpYWwganVkZ21lbnQgb24gYHRhYnNgIHR5cGUsIHRoZSBgY2hpbGRyZW5gIGtleSB3aWxsIGJlIGlnbm9yZWQgaWZcbiAgICAgIC8vIHRoZXJlIGhhcyBhIGB0ZW1wbGF0ZWAga2V5XG4gICAgICBpZiAoaXRlbS50ZW1wbGF0ZSkge1xuICAgICAgICAvLyBJZiB0aGUgbW9kZWwgaXMgYW4gYXJyYXksIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBmb3JtIGZpZWxkXG4gICAgICAgIC8vIHdpbGwgdXNlIHRoZSBtb2RlbCdzIHZhbHVlXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0ubW9kZWwpKSB7XG4gICAgICAgICAgaXRlbS5kZWZhdWx0ID0gaXRlbS5tb2RlbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbS5kZWZhdWx0Py5sZW5ndGgpIHtcbiAgICAgICAgICBpdGVtLmNoaWxkcmVuID0gaXRlbS5kZWZhdWx0Lm1hcCgodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGVmYXVsdDogdmFsdWUsXG4gICAgICAgICAgICAgIC4uLml0ZW0udGVtcGxhdGUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW0uY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBQYXJzZSB0aGUgYHNob3dJZmAgY29uZGl0aW9uc1xuICAgICAgaWYgKGl0ZW0uc2hvd0lmKSB7XG4gICAgICAgIGNvbnN0IHNldFZpc2liaWxpdHkgPSAoY29tcGFyZVdpdGg6IChjb25kaXRpb246IEd1aUNvbmRpdGlvbikgPT4gYm9vbGVhbikgPT4ge1xuICAgICAgICAgIGlmIChpdGVtLnNob3dJZiEubG9naWNhbFR5cGUgPT09ICckb3InKSB7XG4gICAgICAgICAgICBpdGVtLnNob3cgPSBpdGVtLnNob3dJZiEuY29uZGl0aW9ucy5zb21lKGMgPT4gY29tcGFyZVdpdGgoYykpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpdGVtLnNob3cgPSBpdGVtLnNob3dJZiEuY29uZGl0aW9ucy5ldmVyeShjID0+IGNvbXBhcmVXaXRoKGMpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU2V0IHRoZSBpbml0IHZpc2liaWxpdHkgb2YgdGhlIGZpZWxkXG4gICAgICAgIHNldFZpc2liaWxpdHkoYyA9PiB7XG4gICAgICAgICAgY29uc3QgY2ZnID0gZ2V0VmFsdWVCeVBhdGgoY29uZmlnLCBjWzBdKSA/PyBnZXRWYWx1ZUJ5UGF0aCh0aGlzLmNvbmZpZywgY1swXSk7XG4gICAgICAgICAgY29uc3QgdmFsID0gZ2V0VmFsdWVCeVBhdGgobW9kZWwsIGNbMF0pID8/IGdldFZhbHVlQnlQYXRoKHRoaXMubW9kZWwsIGNbMF0pO1xuICAgICAgICAgIHJldHVybiBjb21wYXJlVmFsdWVzKHZhbCA/PyBjZmc/LlsnZGVmYXVsdCddLCBjWzJdLCBjWzFdKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRGVsYXkgdGhlIHN1YnNjcmlwdGlvbiB0byBtYWtlIHN1cmUgYWxsIHRoZSBmb3JtIGNvbnRyb2xzIGhhdmUgYmVlbiBjcmVhdGVkXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGdldENvbnRyb2wgPSAocGF0aDogc3RyaW5nKSA9PiBmb3JtLmdldChwYXRoKSB8fCB0aGlzLmZvcm0uZ2V0KHBhdGgpO1xuXG4gICAgICAgICAgY29uc3QgY29udHJvbHMgPSBpdGVtLnNob3dJZiEuY29uZGl0aW9ucy5tYXAoYyA9PiBnZXRDb250cm9sKGNbMF0pKTtcbiAgICAgICAgICBjb25zdCB2YWx1ZUNoYW5nZXMkID0gY29udHJvbHMubWFwKGNvbnRyb2wgPT4gY29udHJvbD8udmFsdWVDaGFuZ2VzIHx8IG9mKCkpO1xuICAgICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG9mKClcbiAgICAgICAgICAgIC5waXBlKG1lcmdlV2l0aCguLi52YWx1ZUNoYW5nZXMkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICBzZXRWaXNpYmlsaXR5KGMgPT4gY29tcGFyZVZhbHVlcyhnZXRDb250cm9sKGNbMF0pPy52YWx1ZSwgY1syXSwgY1sxXSkpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtLl90eXBlID09PSAnY29udHJvbCcpIHtcbiAgICAgICAgY29uc3QgZm9ybVN0YXRlID0geyB2YWx1ZTogaXRlbS5kZWZhdWx0LCBkaXNhYmxlZDogaXRlbS5kaXNhYmxlZCB9O1xuICAgICAgICBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgICAgIGZvcm0ucmVnaXN0ZXJDb250cm9sKGl0ZW0ua2V5LCBuZXcgRm9ybUNvbnRyb2woZm9ybVN0YXRlKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgICAgIGZvcm0uaW5zZXJ0KGl0ZW0uaW5kZXggfHwgZm9ybS5sZW5ndGgsIG5ldyBGb3JtQ29udHJvbChmb3JtU3RhdGUpLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXRlbS5fdHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgICBsZXQgZm9ybUFycmF5ID0gbmV3IEZvcm1BcnJheTxhbnk+KFtdKTtcbiAgICAgICAgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgICAgICBmb3JtQXJyYXkgPSBmb3JtLnJlZ2lzdGVyQ29udHJvbChpdGVtLmtleSwgbmV3IEZvcm1BcnJheShbXSkpIGFzIEZvcm1BcnJheTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgICAgICAgZm9ybS5pbnNlcnQoaXRlbS5pbmRleCB8fCBmb3JtLmxlbmd0aCwgZm9ybUFycmF5LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLmNoaWxkcmVuID0gdGhpcy5nZXRGb3JtRmllbGRBcnJheShcbiAgICAgICAgICBmb3JtQXJyYXksXG4gICAgICAgICAgaXRlbS5jaGlsZHJlbixcbiAgICAgICAgICBpdGVtLm1vZGVsLFxuICAgICAgICAgIGl0ZW0uZGVmYXVsdCxcbiAgICAgICAgICBpdGVtLnR5cGVcbiAgICAgICAgKTtcblxuICAgICAgICBpdGVtLnNlbGVjdGVkSW5kZXggPSAwO1xuICAgICAgfSBlbHNlIGlmIChpdGVtLl90eXBlID09PSAnZ3JvdXAnKSB7XG4gICAgICAgIGxldCBmb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICAgICAgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgICAgICBmb3JtR3JvdXAgPSBmb3JtLnJlZ2lzdGVyQ29udHJvbChpdGVtLmtleSwgbmV3IEZvcm1Hcm91cCh7fSkpIGFzIEZvcm1Hcm91cDtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gICAgICAgICAgZm9ybS5pbnNlcnQoaXRlbS5pbmRleCB8fCBmb3JtLmxlbmd0aCwgZm9ybUdyb3VwLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLmNoaWxkcmVuID0gdGhpcy5nZXRGb3JtRmllbGRBcnJheShcbiAgICAgICAgICBmb3JtR3JvdXAsXG4gICAgICAgICAgaXRlbS5jaGlsZHJlbixcbiAgICAgICAgICBpdGVtLm1vZGVsLFxuICAgICAgICAgIGl0ZW0uZGVmYXVsdCxcbiAgICAgICAgICBpdGVtLnR5cGVcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGVtcEFyci5wdXNoKGl0ZW0pO1xuICAgIH1cblxuICAgIHJldHVybiB0ZW1wQXJyO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRhYiBpdGVtLlxuICAgKlxuICAgKiBAcGFyYW0gZSAgICAgICAgIFRoZSBtb3VzZSBldmVudFxuICAgKiBAcGFyYW0gZm9ybUFycmF5IFRoZSByZWFjdGl2ZSBmb3JtIGluc3RhbmNlXG4gICAqIEBwYXJhbSB0YWJzICAgICAgVGhlIGNvbmZpZyBvZiB0aGUgdGFicyBmaWVsZFxuICAgKiBAcGFyYW0gY29weSAgICAgIFdoZXRoZXIgdG8gY29weSB0aGUgY3VycmVudCB0YWJcbiAgICogQHBhcmFtIGluZGV4ICAgICBUaGUgaW5kZXggb2YgdGhlIHRhYnMgYXJyYXlcbiAgICovXG4gIGFkZFRhYihlOiBNb3VzZUV2ZW50LCBmb3JtQXJyYXk6IEZvcm1BcnJheSwgdGFiczogR3VpQ29udHJvbCwgY29weT86IGJvb2xlYW4sIGluZGV4PzogbnVtYmVyKSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBpbnNlcnRJbmRleCA9XG4gICAgICBpbmRleCAhPT0gdm9pZCAwID8gaW5kZXggKyAxIDogY29weSA/IHRhYnMuc2VsZWN0ZWRJbmRleCEgKyAxIDogdGFicy5jaGlsZHJlbiEubGVuZ3RoO1xuICAgIC8vIFNhdmUgdGhlIGluZGV4IG9mIHRoZSBpbnNlcnRpb24gaW4gdGhlIGNvbmZpZ1xuICAgIHRhYnMudGVtcGxhdGUhLmluZGV4ID0gaW5zZXJ0SW5kZXg7XG4gICAgLy8gVGhlIGtleSBpbiB0aGUgb2JqZWN0IGFuZCB0aGUgaW5kZXggaW4gdGhlIGFycmF5IHNob3VsZCBiZSB0aGUgc2FtZVxuICAgIHRhYnMuY2hpbGRyZW4hLmZvckVhY2goKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGluZGV4ID49IGluc2VydEluZGV4KSB7XG4gICAgICAgIGNoaWxkLmluZGV4ISArPSAxO1xuICAgICAgICBjaGlsZC5rZXkgPSBjaGlsZC5pbmRleCArICcnOyAvLyBjb252ZXJ0IHRvIHN0cmluZ1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgZm9ybVZhbHVlID0gZm9ybUFycmF5LmdldChpbnNlcnRJbmRleCAtIDEgKyAnJyk/LnZhbHVlO1xuICAgIC8vIFRoZSBjb25zdHJ1Y3RlZCBvYmplY3QgbG9va3MgbGlrZSB0aGlzIGBbeyBrZXk6ICd0YWInLCBjaGlsZHJlbjogdGVtcGxhdGUgfV1gXG4gICAgLy8gVGhlIGtleSBzaG91bGQgcHJlZmVyYWJseSBiZSBgbnVsbGBcbiAgICBjb25zdCBuZXdUYWIgPSB0aGlzLmdldEZvcm1GaWVsZEFycmF5KFxuICAgICAgZm9ybUFycmF5LFxuICAgICAgeyBbaW5zZXJ0SW5kZXhdOiB0YWJzLnRlbXBsYXRlIH0gYXMgR3VpRmllbGRzLFxuICAgICAgY29weSA/IHsgW2luc2VydEluZGV4XTogZm9ybVZhbHVlIH0gOiB7fSxcbiAgICAgIGNvcHkgPyB7IFtpbnNlcnRJbmRleF06IGZvcm1WYWx1ZSB9IDogbnVsbCxcbiAgICAgICd0YWJzJ1xuICAgICk7XG4gICAgdGFicy5jaGlsZHJlbiEuc3BsaWNlKGluc2VydEluZGV4LCAwLCBuZXdUYWJbMF0pO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBmb3JtIG1vZGVsXG4gICAgZm9ybUFycmF5LnBhdGNoVmFsdWUoZm9ybUFycmF5LnZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSB0YWIgaXRlbS5cbiAgICpcbiAgICogQHBhcmFtIGUgICAgICAgICBUaGUgbW91c2UgZXZlbnRcbiAgICogQHBhcmFtIGZvcm1BcnJheSBUaGUgcmVhY3RpdmUgZm9ybSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gdGFicyAgICAgIFRoZSBjb25maWcgb2YgdGhlIHRhYnMgZmllbGRcbiAgICogQHBhcmFtIGluZGV4ICAgICBUaGUgaW5kZXggb2YgdGhlIHRhYnMgYXJyYXlcbiAgICovXG4gIHJlbW92ZVRhYihlOiBNb3VzZUV2ZW50LCBmb3JtQXJyYXk6IEZvcm1BcnJheSwgdGFiczogR3VpQ29udHJvbCwgaW5kZXg/OiBudW1iZXIpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IHJlbW92ZUluZGV4ID0gaW5kZXggPT09IHZvaWQgMCA/IHRhYnMuc2VsZWN0ZWRJbmRleCEgOiBpbmRleDtcbiAgICB0YWJzLmNoaWxkcmVuIS5mb3JFYWNoKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbmRleCA+IHJlbW92ZUluZGV4KSB7XG4gICAgICAgIGNoaWxkLmluZGV4ISAtPSAxO1xuICAgICAgICBjaGlsZC5rZXkgPSBjaGlsZC5pbmRleCArICcnOyAvLyBjb252ZXJ0IHRvIHN0cmluZ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRhYnMuY2hpbGRyZW4hLnNwbGljZShyZW1vdmVJbmRleCwgMSk7XG4gICAgZm9ybUFycmF5LnJlbW92ZUF0KHJlbW92ZUluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2UgdGhlIGRpc3BsYXkgbW9kZSBvZiB0YWJzLlxuICAgKlxuICAgKiBAcGFyYW0gZSAgICBUaGUgbW91c2UgZXZlbnRcbiAgICogQHBhcmFtIHRhYnMgVGhlIGNvbmZpZyBvZiB0aGUgdGFicyBmaWVsZFxuICAgKiBAcGFyYW0gbW9kZSBUaGUgZGlzcGxheSBtb2RlIG9mIHRhYnNcbiAgICovXG4gIGNoYW5nZVRhYnNNb2RlKGU6IE1vdXNlRXZlbnQsIHRhYnM6IEd1aUNvbnRyb2wsIG1vZGU/OiBHdWlUYWJzTW9kZSkge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGFicy5tb2RlID0gbW9kZTtcbiAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gIEBmb3IgKGl0ZW0gb2YgZm9ybUZpZWxkczsgdHJhY2sgaXRlbSkge1xuICAgIDxkaXY+XG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFR5cGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDogaXRlbSwgZm9ybUdyb3VwOiBmb3JtfVwiIC8+XG4gICAgPC9kaXY+XG4gIH1cbjwvZm9ybT5cblxuPG5nLXRlbXBsYXRlICNjb250cm9sVHlwZSBsZXQtaXRlbSBsZXQtcGFyZW50PVwicGFyZW50XCIgbGV0LWZvcm09XCJmb3JtR3JvdXBcIj5cbiAgQGlmIChpdGVtLnNob3cpIHtcbiAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgQHN3aXRjaCAoaXRlbS50eXBlKSB7XG4gICAgICAgIEBjYXNlICgndGV4dCcpIHtcbiAgICAgICAgICA8Z3VpLWZpZWxkLWdyb3VwIFtjb25maWddPVwiaXRlbVwiIFtmbGV4XT1cIml0ZW0uY29sXCI+XG4gICAgICAgICAgICA8Z3VpLWlucHV0LXRleHQgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtjb25maWddPVwiaXRlbVwiIC8+XG4gICAgICAgICAgPC9ndWktZmllbGQtZ3JvdXA+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdudW1iZXInKSB7XG4gICAgICAgICAgPGd1aS1maWVsZC1ncm91cCBbY29uZmlnXT1cIml0ZW1cIiBbZmxleF09XCJpdGVtLmNvbFwiPlxuICAgICAgICAgICAgPGd1aS1pbnB1dC1udW1iZXIgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtjb25maWddPVwiaXRlbVwiIC8+XG4gICAgICAgICAgPC9ndWktZmllbGQtZ3JvdXA+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdzZWxlY3QnKSB7XG4gICAgICAgICAgPGd1aS1maWVsZC1ncm91cCBbY29uZmlnXT1cIml0ZW1cIiBbZmxleF09XCJpdGVtLmNvbFwiPlxuICAgICAgICAgICAgPGd1aS1zZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtjb25maWddPVwiaXRlbVwiIC8+XG4gICAgICAgICAgPC9ndWktZmllbGQtZ3JvdXA+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdzd2l0Y2gnKSB7XG4gICAgICAgICAgPGd1aS1maWVsZC1ncm91cCBbY29uZmlnXT1cIml0ZW1cIiBbZmxleF09XCJpdGVtLmNvbFwiPlxuICAgICAgICAgICAgPGd1aS1zd2l0Y2ggW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtjb25maWddPVwiaXRlbVwiIC8+XG4gICAgICAgICAgPC9ndWktZmllbGQtZ3JvdXA+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdzbGlkZXInKSB7XG4gICAgICAgICAgPGd1aS1maWVsZC1ncm91cCBbY29uZmlnXT1cIml0ZW1cIiBbZmxleF09XCJpdGVtLmNvbFwiPlxuICAgICAgICAgICAgPGd1aS1zbGlkZXIgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtjb25maWddPVwiaXRlbVwiIC8+XG4gICAgICAgICAgPC9ndWktZmllbGQtZ3JvdXA+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdidXR0b25Ub2dnbGUnKSB7XG4gICAgICAgICAgPGd1aS1maWVsZC1ncm91cCBbY29uZmlnXT1cIml0ZW1cIiBbZmxleF09XCJpdGVtLmNvbFwiPlxuICAgICAgICAgICAgPGd1aS1idXR0b24tdG9nZ2xlIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIiBbY29uZmlnXT1cIml0ZW1cIiAvPlxuICAgICAgICAgIDwvZ3VpLWZpZWxkLWdyb3VwPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnZmlsbCcpIHtcbiAgICAgICAgICA8Z3VpLWZpZWxkLWdyb3VwIFtjb25maWddPVwiaXRlbVwiIFtmbGV4XT1cIml0ZW0uY29sXCI+XG4gICAgICAgICAgICA8Z3VpLWZpbGwgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtLmtleVwiIFtjb25maWddPVwiaXRlbVwiIC8+XG4gICAgICAgICAgPC9ndWktZmllbGQtZ3JvdXA+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdmaWxlJykge1xuICAgICAgICAgIDxndWktZmllbGQtZ3JvdXAgW2NvbmZpZ109XCJpdGVtXCIgW2ZsZXhdPVwiaXRlbS5jb2xcIj5cbiAgICAgICAgICAgIDxndWktZmlsZS11cGxvYWRlciBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCIgW2NvbmZpZ109XCJpdGVtXCIgLz5cbiAgICAgICAgICA8L2d1aS1maWVsZC1ncm91cD5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2ltYWdlJykge1xuICAgICAgICAgIDxndWktZmllbGQtZ3JvdXAgW2NvbmZpZ109XCJpdGVtXCIgW2ZsZXhdPVwiaXRlbS5jb2xcIj5cbiAgICAgICAgICAgIDxndWktZmlsZS11cGxvYWRlciB0eXBlPVwiaW1hZ2VcIiBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCIgW2NvbmZpZ109XCJpdGVtXCIgLz5cbiAgICAgICAgICA8L2d1aS1maWVsZC1ncm91cD5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ3ZpZGVvJykge1xuICAgICAgICAgIDxndWktZmllbGQtZ3JvdXAgW2NvbmZpZ109XCJpdGVtXCIgW2ZsZXhdPVwiaXRlbS5jb2xcIj5cbiAgICAgICAgICAgIDxndWktZmlsZS11cGxvYWRlciB0eXBlPVwidmlkZW9cIiBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCIgW2NvbmZpZ109XCJpdGVtXCIgLz5cbiAgICAgICAgICA8L2d1aS1maWVsZC1ncm91cD5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2F1ZGlvJykge1xuICAgICAgICAgIDxndWktZmllbGQtZ3JvdXAgW2NvbmZpZ109XCJpdGVtXCIgW2ZsZXhdPVwiaXRlbS5jb2xcIj5cbiAgICAgICAgICAgIDxndWktZmlsZS11cGxvYWRlciB0eXBlPVwiYXVkaW9cIiBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCIgW2NvbmZpZ109XCJpdGVtXCIgLz5cbiAgICAgICAgICA8L2d1aS1maWVsZC1ncm91cD5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2ltYWdlU2VsZWN0Jykge1xuICAgICAgICAgIDxndWktZmllbGQtZ3JvdXAgW2NvbmZpZ109XCJpdGVtXCIgW2ZsZXhdPVwiaXRlbS5jb2xcIj5cbiAgICAgICAgICAgIDxndWktaW1hZ2Utc2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIiBbY29uZmlnXT1cIml0ZW1cIiBbYXBwZW5kVG9dPVwiJyMnK3VpZFwiIC8+XG4gICAgICAgICAgPC9ndWktZmllbGQtZ3JvdXA+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdjb21ib2JveCcpIHtcbiAgICAgICAgICA8Z3VpLWZpZWxkLWdyb3VwIFtjb25maWddPVwiaXRlbVwiIFtmbGV4XT1cIml0ZW0uY29sXCI+XG4gICAgICAgICAgICA8Z3VpLWNvbWJvYm94IFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIiBbY29uZmlnXT1cIml0ZW1cIiBbYXBwZW5kVG9dPVwiJyMnK3VpZFwiIC8+XG4gICAgICAgICAgPC9ndWktZmllbGQtZ3JvdXA+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCd0ZXh0YXJlYScpIHtcbiAgICAgICAgICA8Z3VpLWZpZWxkLWdyb3VwIFtjb25maWddPVwiaXRlbVwiIFtmbGV4XT1cIml0ZW0uY29sXCI+XG4gICAgICAgICAgICA8Z3VpLXRleHRhcmVhIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIiBbY29uZmlnXT1cIml0ZW1cIiAvPlxuICAgICAgICAgIDwvZ3VpLWZpZWxkLWdyb3VwPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnY29kZWFyZWEnKSB7XG4gICAgICAgICAgPGd1aS1maWVsZC1ncm91cCBbY29uZmlnXT1cIml0ZW1cIiBbZmxleF09XCJpdGVtLmNvbFwiPlxuICAgICAgICAgICAgPGd1aS1jb2RlYXJlYSBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW0ua2V5XCIgW2NvbmZpZ109XCJpdGVtXCIgLz5cbiAgICAgICAgICA8L2d1aS1maWVsZC1ncm91cD5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2hpZGRlbicpIHtcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbS5rZXlcIj5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2lubGluZScpIHtcbiAgICAgICAgICA8Z3VpLWlubGluZS1ncm91cCBbY29uZmlnXT1cIml0ZW1cIiBbZm9ybUdyb3VwTmFtZV09XCJpdGVtLmtleVwiPlxuICAgICAgICAgICAgQGZvciAoY2hpbGQgb2YgaXRlbS5jaGlsZHJlbjsgdHJhY2sgY2hpbGQpIHtcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUeXBlXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCwgcGFyZW50OiBpdGVtLCBmb3JtR3JvdXA6IGZvcm0uZ2V0KGl0ZW0ua2V5KVxuICAgICAgICAgICAgICAgIH1cIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZ3VpLWlubGluZS1ncm91cD5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2dyb3VwJykge1xuICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIFtmb3JtR3JvdXBOYW1lXT1cIml0ZW0ua2V5XCJcbiAgICAgICAgICAgIFsoZXhwYW5kZWQpXT1cIml0ZW0uZXhwYW5kZWRcIiBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiPlxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgICAgICA8Z3VpLWZpZWxkLWxhYmVsIFtjb25maWddPVwiaXRlbVwiIC8+XG4gICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgICAgPCEtLSBMYXp5IHJlbmRlcmluZyAtLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRFeHBhbnNpb25QYW5lbENvbnRlbnQ+XG4gICAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIGl0ZW0uY2hpbGRyZW47IHRyYWNrIGNoaWxkKSB7XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCwgcGFyZW50OiBpdGVtLCBmb3JtR3JvdXA6IGZvcm0uZ2V0KGl0ZW0ua2V5KVxuICAgICAgICAgICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCd0YWJzJykge1xuICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIFtmb3JtQXJyYXlOYW1lXT1cIml0ZW0ua2V5XCJcbiAgICAgICAgICAgIFsoZXhwYW5kZWQpXT1cIml0ZW0uZXhwYW5kZWRcIiBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiPlxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgICAgICA8Z3VpLWZpZWxkLWxhYmVsIFtjb25maWddPVwiaXRlbVwiIC8+XG4gICAgICAgICAgICAgIDwhLS0gU2hvdyBvcGVyYXRpb24gYnV0dG9ucyB3aGVuIHBhbmVsIG9wZW5lZCAtLT5cbiAgICAgICAgICAgICAgQGlmIChpdGVtLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgPGd1aS1pY29uLWJ1dHRvbi13cmFwcGVyPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtjb2xvcl09XCJpdGVtLm1vZGUhPT0nbGlzdCc/J3ByaW1hcnknOicnXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVRhYnNNb2RlKCRldmVudCwgaXRlbSwgJ25vcm1hbCcpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiaG9yaXpvbnRhbFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbY29sb3JdPVwiaXRlbS5tb2RlPT09J2xpc3QnPydwcmltYXJ5JzonJ1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VUYWJzTW9kZSgkZXZlbnQsIGl0ZW0sICdsaXN0JylcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJ2ZXJ0aWNhbFwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS50ZW1wbGF0ZSAmJiAoaXRlbS5hZGRhYmxlIHx8IGl0ZW0uYWRkYWJsZT09PXVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkVGFiKCRldmVudCwgZm9ybS5nZXQoaXRlbS5rZXkpLCBpdGVtLCB0cnVlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiY29weVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRUYWIoJGV2ZW50LCBmb3JtLmdldChpdGVtLmtleSksIGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJhZGRcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlVGFiKCRldmVudCwgZm9ybS5nZXQoaXRlbS5rZXkpLCBpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZGVsZXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9ndWktaWNvbi1idXR0b24td3JhcHBlcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgIDwhLS0gTGF6eSByZW5kZXJpbmcgLS0+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0RXhwYW5zaW9uUGFuZWxDb250ZW50PlxuICAgICAgICAgICAgICBAaWYgKGl0ZW0ubW9kZSE9PSdsaXN0Jykge1xuICAgICAgICAgICAgICAgIDwhLS0gSG9yaXpvbnRhbCBtb2RlIC0tPlxuICAgICAgICAgICAgICAgIDxtYXQtdGFiLWdyb3VwIGNsYXNzPVwiZ3VpLXRhYnNcIiBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICAgICAgICBbbWF0LXN0cmV0Y2gtdGFic109XCJmYWxzZVwiIFsoc2VsZWN0ZWRJbmRleCldPVwiaXRlbS5zZWxlY3RlZEluZGV4XCI+XG4gICAgICAgICAgICAgICAgICBAZm9yICh0YWIgb2YgaXRlbS5jaGlsZHJlbjsgdHJhY2sgdGFiOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LXRhYiBbZGlzYWJsZWRdPVwidGFiLmRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7dGFiLm5hbWUgfCBlanM6e2l9IH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvcm1Db250cm9sICYgRm9ybUFycmF5IC0tPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIXRhYi5jaGlsZHJlbiB8fCB0YWIuY2hpbGRyZW4ubGVuZ3RoPT09MCB8fCB0YWIudHlwZT09PSd0YWJzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHRhYiwgcGFyZW50OiBpdGVtLCBmb3JtR3JvdXA6IGZvcm0uZ2V0KFtpdGVtLmtleV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvcm1Hcm91cCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKHRhYi5jaGlsZHJlbj8ubGVuZ3RoPjAgJiYgdGFiLnR5cGUhPT0ndGFicycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIHRhYi5jaGlsZHJlbjsgdHJhY2sgY2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCwgcGFyZW50OiBpdGVtLCBmb3JtR3JvdXA6IGZvcm0uZ2V0KFtpdGVtLmtleSwgaV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9tYXQtdGFiLWdyb3VwPlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8IS0tIFZlcnRpY2FsIG1vZGUgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImd1aS1saXN0XCI+XG4gICAgICAgICAgICAgICAgICBAZm9yICh0YWIgb2YgaXRlbS5jaGlsZHJlbjsgdHJhY2sgdGFiOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3VpLWxpc3QtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmd1aS1saXN0LWl0ZW0tYWN0aXZlXT1cIml0ZW0uc2VsZWN0ZWRJbmRleD09PWlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3VpLWxpc3QtaXRlbS1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZ3VpLWxpc3QtaXRlbS10aXRsZVwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaXRlbS5zZWxlY3RlZEluZGV4PWlcIj57e3RhYi5uYW1lIHwgZWpzOntpfSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnRlbXBsYXRlICYmIChpdGVtLmFkZGFibGUgfHwgaXRlbS5hZGRhYmxlPT09dW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3VpLWljb24tYnV0dG9uLXdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRUYWIoJGV2ZW50LCBmb3JtLmdldChpdGVtLmtleSksIGl0ZW0sIHRydWUsIGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImNvcHlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkVGFiKCRldmVudCwgZm9ybS5nZXQoaXRlbS5rZXkpLCBpdGVtLCBmYWxzZSwgaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiYWRkXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVRhYigkZXZlbnQsIGZvcm0uZ2V0KGl0ZW0ua2V5KSwgaXRlbSwgaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZGVsZXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ndWktaWNvbi1idXR0b24td3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3VpLWxpc3QtaXRlbS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvcm1Db250cm9sICYgRm9ybUFycmF5IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghdGFiLmNoaWxkcmVuIHx8IHRhYi5jaGlsZHJlbi5sZW5ndGg9PT0wIHx8IHRhYi50eXBlPT09J3RhYnMnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogdGFiLCBwYXJlbnQ6IGl0ZW0sIGZvcm1Hcm91cDogZm9ybS5nZXQoW2l0ZW0ua2V5XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRm9ybUdyb3VwIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh0YWIuY2hpbGRyZW4/Lmxlbmd0aD4wICYmIHRhYi50eXBlIT09J3RhYnMnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIHRhYi5jaGlsZHJlbjsgdHJhY2sgY2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLCBwYXJlbnQ6IGl0ZW0sIGZvcm1Hcm91cDogZm9ybS5nZXQoW2l0ZW0ua2V5LCBpXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnbWVudScpIHtcbiAgICAgICAgICA8bWF0LXRhYi1ncm91cCBjbGFzcz1cImd1aS1tZW51XCIgW2Zvcm1Hcm91cE5hbWVdPVwiaXRlbS5rZXlcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgQGZvciAobWVudUNoaWxkIG9mIGl0ZW0uY2hpbGRyZW47IHRyYWNrIG1lbnVDaGlsZCkge1xuICAgICAgICAgICAgICA8bWF0LXRhYiBbbGFiZWxdPVwibWVudUNoaWxkLm5hbWVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51Q2hpbGQuZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgIEBpZiAobWVudUNoaWxkLnR5cGU9PT0nbWVudUl0ZW0nKSB7XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTXVzdCB3cmFwIHdpdGggZGl2IC0tPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChjb250cm9sSXRlbSBvZiBtZW51Q2hpbGQuY2hpbGRyZW47IHRyYWNrIGNvbnRyb2xJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBbZm9ybUdyb3VwTmFtZV09XCJtZW51Q2hpbGQua2V5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29udHJvbEl0ZW0sIGZvcm1Hcm91cDogZm9ybS5nZXQoW2l0ZW0ua2V5LCBtZW51Q2hpbGQua2V5XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwhLS0gU3VwcG9ydCBmb3IgdW5saW1pdGVkIG5lc3RpbmcgLS0+XG4gICAgICAgICAgICAgICAgICBAaWYgKG1lbnVDaGlsZC50eXBlPT09J21lbnUnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogbWVudUNoaWxkLCBmb3JtR3JvdXA6IGZvcm0uZ2V0KGl0ZW0ua2V5KVxuICAgICAgICAgICAgICAgICAgICAgIH1cIiAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L21hdC10YWItZ3JvdXA+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
package/esm2022/gui-utils.mjs
CHANGED
|
@@ -100,4 +100,29 @@ export function getValueByPath(obj, path) {
|
|
|
100
100
|
return acc?.['children']?.[key] ? acc['children'][key] : acc?.[key];
|
|
101
101
|
}, obj);
|
|
102
102
|
}
|
|
103
|
-
|
|
103
|
+
export function getModelFromConfig(config = {}, model = {}) {
|
|
104
|
+
for (const [key, fieldCfg] of Object.entries(config)) {
|
|
105
|
+
if (model[key] != null) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (fieldCfg.default != null) {
|
|
109
|
+
model[key] = fieldCfg.default;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
if (fieldCfg.type === 'group' ||
|
|
113
|
+
fieldCfg.type === 'inline' ||
|
|
114
|
+
fieldCfg.type === 'menu' ||
|
|
115
|
+
fieldCfg.type === 'menuItem') {
|
|
116
|
+
model[key] = getModelFromConfig(fieldCfg.children, {});
|
|
117
|
+
}
|
|
118
|
+
else if (fieldCfg.type === 'tabs') {
|
|
119
|
+
model[key] = [];
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
model[key] = null;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return model;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvZ3VpL2d1aS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUcxRjs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVM7SUFDNUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQ3JCLEtBQUssRUFDTCx3REFBd0Q7UUFDdEQsdURBQXVEO1FBQ3ZELG9CQUFvQjtRQUNwQiw0Q0FBNEM7UUFDNUMsR0FBRzthQUNBLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDO2FBQ3pCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ1YsT0FBTyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQzthQUNuQyxPQUFPLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQzthQUNoQyxLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUNYLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ1osd0JBQXdCLENBQzNCLENBQUM7SUFFRiwwQ0FBMEM7SUFDMUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzlCLENBQUM7QUFNRCxNQUFNLE9BQU8sVUFBVTtJQUNyQixTQUFTLENBQUMsS0FBYSxFQUFFLElBQUksR0FBRyxFQUFFO1FBQ2hDLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5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LENBQUM7WUFDdkIsU0FBUztRQUNYLENBQUM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7WUFDN0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFDaEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUNFLFFBQVEsQ0FBQyxJQUFJLEtBQUssT0FBTztnQkFDekIsUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRO2dCQUMxQixRQUFRLENBQUMsSUFBSSxLQUFLLE1BQU07Z0JBQ3hCLFFBQVEsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUM1QixDQUFDO2dCQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsUUFBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0RSxDQUFDO2lCQUFNLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDcEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNwQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEd1aURlZmF1bHRWYWx1ZSwgR3VpRmllbGRzLCBHdWlPcGVyYXRvciB9IGZyb20gJy4vaW50ZXJmYWNlJztcblxuLyoqXG4gKiBMaWdodHdlaWdodCBFSlMgdGVtcGxhdGUgZW5naW5lXG4gKlxuICogQHBhcmFtIHN0ciAgdGVtcGxhdGUgc3RyaW5nXG4gKiBAcGFyYW0gZGF0YSBkYXRhIHBhc3NlZCB0byB0aGUgdGVtcGxhdGVcbiAqIEByZXR1cm5zXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgcGVvcGxlID0gWydnZWRkeScsICduZWlsJywgJ2FsZXgnXTtcbiAqIGNvbnN0IHJlcyA9IGVqc1RtcGwoJzwlPSBwZW9wbGUuam9pbihcIiwgXCIpICU+Jywge3Blb3BsZTogcGVvcGxlfSk7XG4gKiBjb25zb2xlLmxvZyhyZXMpO1xuICogLy8gPT4gJ2dlZGR5LCBuZWlsLCBhbGV4J1xuICogYGBgXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gZWpzVG1wbChzdHI6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGNvbnN0IGZuID0gbmV3IEZ1bmN0aW9uKFxuICAgICdvYmonLFxuICAgICd2YXIgcD1bXSxwcmludD1mdW5jdGlvbigpe3AucHVzaC5hcHBseShwLGFyZ3VtZW50cyk7fTsnICtcbiAgICAgIC8vIEludHJvZHVjZSB0aGUgZGF0YSBhcyBsb2NhbCB2YXJpYWJsZXMgdXNpbmcgd2l0aCgpe31cbiAgICAgICd3aXRoKG9iail7cC5wdXNoKFwiJyArXG4gICAgICAvLyBDb252ZXJ0IHRoZSB0ZW1wbGF0ZSBpbnRvIHB1cmUgSmF2YVNjcmlwdFxuICAgICAgc3RyXG4gICAgICAgIC5yZXBsYWNlKC9bXFxyXFx0XFxuXS9nLCAnICcpXG4gICAgICAgIC5zcGxpdCgnPCUnKVxuICAgICAgICAuam9pbignXFx0JylcbiAgICAgICAgLnJlcGxhY2UoLygoXnwlPilbXlxcdF0qKScvZywgJyQxXFxyJylcbiAgICAgICAgLnJlcGxhY2UoL1xcdD0oLio/KSU+L2csICdcIiwkMSxcIicpXG4gICAgICAgIC5zcGxpdCgnXFx0JylcbiAgICAgICAgLmpvaW4oJ1wiKTsnKVxuICAgICAgICAuc3BsaXQoJyU+JylcbiAgICAgICAgLmpvaW4oJ3AucHVzaChcIicpXG4gICAgICAgIC5zcGxpdCgnXFxyJylcbiAgICAgICAgLmpvaW4oJ1wiJykgK1xuICAgICAgJ1wiKTt9cmV0dXJuIHAuam9pbihcIlwiKTsnXG4gICk7XG5cbiAgLy8gUHJvdmlkZSBzb21lIGJhc2ljIGN1cnJ5aW5nIHRvIHRoZSB1c2VyXG4gIHJldHVybiBkYXRhID8gZm4oZGF0YSkgOiBmbjtcbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnZWpzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgR3VpRWpzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgZGF0YSA9IHt9KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZWpzVG1wbCh2YWx1ZSwgZGF0YSk7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZsZXhdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgR3VpRmxleERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGZsZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IDEwMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5mbGV4ID0gYDEgMSAke3RoaXMuZmxleH0lYDtcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWF4V2lkdGggPSBgJHt0aGlzLmZsZXh9JWA7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVWYWx1ZXMoYTogR3VpRGVmYXVsdFZhbHVlLCBiOiBHdWlEZWZhdWx0VmFsdWUsIG9wZXJhdG9yOiBHdWlPcGVyYXRvcikge1xuICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgY2FzZSAnJGVxJzpcbiAgICAgIHJldHVybiBhID09PSBiO1xuICAgIGNhc2UgJyRuZSc6XG4gICAgICByZXR1cm4gYSAhPT0gYjtcbiAgICBjYXNlICckZ3QnOlxuICAgICAgcmV0dXJuIChhID8/IDApID4gKGIgPz8gMCk7XG4gICAgY2FzZSAnJGx0JzpcbiAgICAgIHJldHVybiAoYSA/PyAwKSA8IChiID8/IDApO1xuICAgIGNhc2UgJyRndGUnOlxuICAgICAgcmV0dXJuIChhID8/IDApID49IChiID8/IDApO1xuICAgIGNhc2UgJyRsdGUnOlxuICAgICAgcmV0dXJuIChhID8/IDApIDw9IChiID8/IDApO1xuICAgIGNhc2UgJyRpbic6XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShiKSAmJiBiLmluY2x1ZGVzKGEpO1xuICAgIGNhc2UgJyRuaW4nOlxuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYikgJiYgIWIuaW5jbHVkZXMoYSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsdWVCeVBhdGgob2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBwYXRoOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYzogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCwga2V5KSA9PiB7XG4gICAgcmV0dXJuIGFjYz8uWydjaGlsZHJlbiddPy5ba2V5XSA/IGFjY1snY2hpbGRyZW4nXVtrZXldIDogYWNjPy5ba2V5XTtcbiAgfSwgb2JqKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vZGVsRnJvbUNvbmZpZyhjb25maWc6IEd1aUZpZWxkcyA9IHt9LCBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KSB7XG4gIGZvciAoY29uc3QgW2tleSwgZmllbGRDZmddIG9mIE9iamVjdC5lbnRyaWVzKGNvbmZpZykpIHtcbiAgICBpZiAobW9kZWxba2V5XSAhPSBudWxsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGZpZWxkQ2ZnLmRlZmF1bHQgIT0gbnVsbCkge1xuICAgICAgbW9kZWxba2V5XSA9IGZpZWxkQ2ZnLmRlZmF1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChcbiAgICAgICAgZmllbGRDZmcudHlwZSA9PT0gJ2dyb3VwJyB8fFxuICAgICAgICBmaWVsZENmZy50eXBlID09PSAnaW5saW5lJyB8fFxuICAgICAgICBmaWVsZENmZy50eXBlID09PSAnbWVudScgfHxcbiAgICAgICAgZmllbGRDZmcudHlwZSA9PT0gJ21lbnVJdGVtJ1xuICAgICAgKSB7XG4gICAgICAgIG1vZGVsW2tleV0gPSBnZXRNb2RlbEZyb21Db25maWcoZmllbGRDZmcuY2hpbGRyZW4gYXMgR3VpRmllbGRzLCB7fSk7XG4gICAgICB9IGVsc2UgaWYgKGZpZWxkQ2ZnLnR5cGUgPT09ICd0YWJzJykge1xuICAgICAgICBtb2RlbFtrZXldID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb2RlbFtrZXldID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1vZGVsO1xufVxuIl19
|
|
@@ -135,6 +135,31 @@ function getValueByPath(obj, path) {
|
|
|
135
135
|
return acc?.['children']?.[key] ? acc['children'][key] : acc?.[key];
|
|
136
136
|
}, obj);
|
|
137
137
|
}
|
|
138
|
+
function getModelFromConfig(config = {}, model = {}) {
|
|
139
|
+
for (const [key, fieldCfg] of Object.entries(config)) {
|
|
140
|
+
if (model[key] != null) {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
if (fieldCfg.default != null) {
|
|
144
|
+
model[key] = fieldCfg.default;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
if (fieldCfg.type === 'group' ||
|
|
148
|
+
fieldCfg.type === 'inline' ||
|
|
149
|
+
fieldCfg.type === 'menu' ||
|
|
150
|
+
fieldCfg.type === 'menuItem') {
|
|
151
|
+
model[key] = getModelFromConfig(fieldCfg.children, {});
|
|
152
|
+
}
|
|
153
|
+
else if (fieldCfg.type === 'tabs') {
|
|
154
|
+
model[key] = [];
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
model[key] = null;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return model;
|
|
162
|
+
}
|
|
138
163
|
|
|
139
164
|
class GuiFieldLabel {
|
|
140
165
|
constructor() {
|
|
@@ -865,7 +890,7 @@ class GuiFillPicker {
|
|
|
865
890
|
writeValue(value) {
|
|
866
891
|
if (typeof value === 'string') {
|
|
867
892
|
value = value.trim();
|
|
868
|
-
if (
|
|
893
|
+
if (this.type === 'all') {
|
|
869
894
|
this.getTypeFromModel(value);
|
|
870
895
|
}
|
|
871
896
|
this.getValueFromModel(value);
|
|
@@ -1516,6 +1541,7 @@ class GuiForm {
|
|
|
1516
1541
|
}
|
|
1517
1542
|
ngOnChanges(changes) {
|
|
1518
1543
|
if (changes['config']) {
|
|
1544
|
+
getModelFromConfig(this.config, this.model);
|
|
1519
1545
|
this.form.controls = {}; // reset controls
|
|
1520
1546
|
this.formFields = this.getFormFieldArray(this.form, this.config, this.model);
|
|
1521
1547
|
}
|
|
@@ -1553,14 +1579,14 @@ class GuiForm {
|
|
|
1553
1579
|
const _children = config[key].template ? [] : config[key].children;
|
|
1554
1580
|
const _type = !_children ? 'control' : Array.isArray(_children) ? 'array' : 'group';
|
|
1555
1581
|
const item = {
|
|
1582
|
+
...config[key],
|
|
1556
1583
|
_type,
|
|
1557
1584
|
key,
|
|
1558
1585
|
parentType,
|
|
1559
1586
|
model: model[key],
|
|
1560
|
-
default: defaultValue?.[key],
|
|
1587
|
+
default: defaultValue?.[key] ?? config[key].default,
|
|
1561
1588
|
index: Number(key), // the string key will be `NaN`
|
|
1562
1589
|
show: true,
|
|
1563
|
-
...config[key],
|
|
1564
1590
|
};
|
|
1565
1591
|
// The `group` type generally have no `default`, so we should
|
|
1566
1592
|
// set the default value manually
|
|
@@ -1581,7 +1607,6 @@ class GuiForm {
|
|
|
1581
1607
|
}
|
|
1582
1608
|
if (item.default?.length) {
|
|
1583
1609
|
item.children = item.default.map((value) => {
|
|
1584
|
-
Object.assign(value, item.template?.default);
|
|
1585
1610
|
return {
|
|
1586
1611
|
default: value,
|
|
1587
1612
|
...item.template,
|
|
@@ -1935,5 +1960,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
1935
1960
|
* Generated bundle index. Do not edit.
|
|
1936
1961
|
*/
|
|
1937
1962
|
|
|
1938
|
-
export { GUI_ICONS_CONFIG, GuiButtonToggle, GuiCodearea, GuiCodeareaConfig, GuiCodeareaDialog, GuiCombobox, GuiEjsPipe, GuiFieldGroup, GuiFieldLabel, GuiFileUploader, GuiFileUploaderConfig, GuiFill, GuiFillPicker, GuiFlexDirective, GuiForm, GuiIcon, GuiIconButtonWrapper, GuiIconsRegistry, GuiImageSelect, GuiInlineGroup, GuiInputNumber, GuiInputText, GuiModule, GuiSelect, GuiSlider, GuiSwitch, GuiTextarea, compareValues, ejsTmpl, getValueByPath, svgIcons };
|
|
1963
|
+
export { GUI_ICONS_CONFIG, GuiButtonToggle, GuiCodearea, GuiCodeareaConfig, GuiCodeareaDialog, GuiCombobox, GuiEjsPipe, GuiFieldGroup, GuiFieldLabel, GuiFileUploader, GuiFileUploaderConfig, GuiFill, GuiFillPicker, GuiFlexDirective, GuiForm, GuiIcon, GuiIconButtonWrapper, GuiIconsRegistry, GuiImageSelect, GuiInlineGroup, GuiInputNumber, GuiInputText, GuiModule, GuiSelect, GuiSlider, GuiSwitch, GuiTextarea, compareValues, ejsTmpl, getModelFromConfig, getValueByPath, svgIcons };
|
|
1939
1964
|
//# sourceMappingURL=acrodata-gui.mjs.map
|