chrv-components 1.8.61 → 1.8.63
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.
|
Binary file
|
|
@@ -153,8 +153,10 @@ export class ChrFormComponent {
|
|
|
153
153
|
* @param dateFormat optional date format for date and datetime inputs
|
|
154
154
|
*/
|
|
155
155
|
this.patchValue = (key, value, dateFormat = null) => {
|
|
156
|
+
console.log(`[Patching]: <Raw>`, value);
|
|
156
157
|
const type = this.controlTypes[key];
|
|
157
158
|
const val = this.typeToInputValue(key, value);
|
|
159
|
+
console.log(`[Patching]: <${type}>`, val);
|
|
158
160
|
if (type == 'file') {
|
|
159
161
|
this.setValue$(key, val?.name);
|
|
160
162
|
this.setModel$(key, val);
|
|
@@ -174,6 +176,7 @@ export class ChrFormComponent {
|
|
|
174
176
|
*/
|
|
175
177
|
this.patch = (model, dateFormat = null) => {
|
|
176
178
|
for (const key of Object.keys(model)) {
|
|
179
|
+
console.log(`[Patching]: {${key}}`);
|
|
177
180
|
this.patchValue(key, model[key], dateFormat);
|
|
178
181
|
}
|
|
179
182
|
};
|
|
@@ -409,4 +412,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.6", ngImpor
|
|
|
409
412
|
}], tabDisplay: [{
|
|
410
413
|
type: Input
|
|
411
414
|
}] } });
|
|
412
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsR0FPeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixXQUFXLEdBR1osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBR0wsVUFBVSxFQUNWLFdBQVcsR0FDWixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUNMLFFBQVEsRUFDUixZQUFZLEVBQ1oseUJBQXlCLEdBQzFCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFB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Qix1T0FDckIscUJBQXFCLDhCQUVyQixZQUFZLHVZQUVaLGFBQWE7OzJGQVdKLGdCQUFnQjtrQkFqQzVCLFNBQVM7K0JBQ0UsY0FBYyxjQU9aLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsUUFBUTt3QkFDUix3QkFBd0I7d0JBQ3hCLHFCQUFxQjt3QkFDckIscUJBQXFCO3dCQUNyQixRQUFRO3dCQUNSLFlBQVk7d0JBQ1osc0JBQXNCO3dCQUN0QixhQUFhO3FCQUNkLGFBQ1U7d0JBQ1QsUUFBUTt3QkFDUjs0QkFDRSxPQUFPLEVBQUUseUJBQXlCOzRCQUNsQyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO3lCQUN0QztxQkFDRixtQkFDZ0IsdUJBQXVCLENBQUMsT0FBTzswTEFHdkMsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUVFLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUVFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFFRSxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBR0UsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uSW5pdCxcbiAgRWxlbWVudFJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBWYWxpZGF0b3JGbixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIEFic3RyYWN0Q29udHJvbCxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Hcm91cCxcbiAgVmFsaWRhdG9ycyxcbiAgRm9ybUNvbnRyb2wsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEVycm9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBDaHJTZWFyY2hTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9jaHItc2VhcmNoLXNlbGVjdC9jaHItc2VhcmNoLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHtcbiAgRGF0ZVBpcGUsXG4gIENvbW1vbk1vZHVsZSxcbiAgREFURV9QSVBFX0RFRkFVTFRfT1BUSU9OUyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBUeXBlVmFsaWRhdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vbW9kZWxzL2Noci12YWxpZGF0b3JzL3R5cGUtdmFsaWRhdG9yJztcbmltcG9ydCB7IGRlY2ltYWwgfSBmcm9tICcuLi9tb2RlbHMvY2hyLXZhbGlkYXRvcnMvZGVjaW1hbC12YWxpZGF0b3InO1xuaW1wb3J0IHsgbWF4RGF0ZSB9IGZyb20gJy4uL21vZGVscy9jaHItdmFsaWRhdG9ycy9tYXgtZGF0ZS12YWxpZGF0b3InO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgcmVxdWlyZWQgfSBmcm9tICcuLi9tb2RlbHMvY2hyLXZhbGlkYXRvcnMvcmVxdWlyZWQtdmFsaWRhdG9yJztcbmltcG9ydCB7IENoclRhZ1NlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL2Noci10YWctc2VsZWN0L2Noci10YWctc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyB0eXBlIH0gZnJvbSAnLi4vbW9kZWxzL2Noci12YWxpZGF0b3JzL3R5cGUtdmFsaWRhdG9yJztcbmltcG9ydCB7IEZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmlsZXMuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Db250cm9sQ29sbGVjdGlvbiB7XG4gIFtrZXk6IHN0cmluZ106IEZvcm1Db250cm9sO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hGaWx0ZXIge1xuICBkaXNwbGF5OiBzdHJpbmc7XG4gIGNhbGxiYWNrPzogRnVuY3Rpb247XG4gIHRvb2x0aXA/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2xWYWxpZGF0aW9uIHtcbiAgcnVsZTogc3RyaW5nO1xuICB2YWxpZGF0b3I/OiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbDtcbiAga2V5Pzogc3RyaW5nO1xuICB2YWx1ZT86IGFueTtcbiAgZGlzcGxheT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29udHJvbCB7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNwYW4/OiBzdHJpbmc7XG4gIHdpZHRoPzogJ2NvbCcgfCAncm93JztcbiAgY29sPzogbnVtYmVyO1xuICByb3c/OiBudW1iZXI7XG4gIHR5cGU6XG4gICAgfCAndGV4dCdcbiAgICB8ICdwYXNzd29yZCdcbiAgICB8ICd0ZXh0QXJlYSdcbiAgICB8ICdudW1iZXInXG4gICAgfCAnZGF0ZSdcbiAgICB8ICdkYXRldGltZSdcbiAgICB8ICdzZWFyY2hTZWxlY3QnXG4gICAgfCAndGFnU2VsZWN0J1xuICAgIHwgJ2NvbG9yJ1xuICAgIHwgJ3RvZ2dsZSdcbiAgICB8ICdmaWxlJztcbiAgYWNjZXB0Pzogc3RyaW5nW107XG4gIHZhbHVlPzogYW55O1xuICBkYXRhPzogYW55W10gfCBudWxsO1xuICBpY29uPzogc3RyaW5nO1xuICBpY29uQ2FsbGJhY2s/OiBGdW5jdGlvbjtcbiAgaWNvbkNhbGxiYWNrRGlzYWJsZWQ/OiBib29sZWFuO1xuICBpY29uVG9vbHRpcD86IHN0cmluZztcbiAgZm4/OiAob2JqZWN0OiBhbnkpID0+IHN0cmluZztcbiAgZmlsdGVycz86IElTZWFyY2hGaWx0ZXJbXTtcbiAgdmFsaWRhdGlvbnM/OiBJQ29udHJvbFZhbGlkYXRpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybVNlY3Rpb24ge1xuICB0aXRsZT86IHN0cmluZztcbiAgY29udHJvbHM6IElDb250cm9sW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Db250cm9sIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNoci1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Noci1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJy4vY2hyLWZvcm0uY29tcG9uZW50LnNjc3MnLFxuICAgICcuLi8uLi8uLi8uLi8uLi90YWlsd2luZGJ1aWxkLmNzcycsXG4gICAgJy4vY2hyLWZvcm0uY29tcG9uZW50LnNjc3MnLFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgTWF0RXJyb3IsXG4gICAgQ2hyU2VhcmNoU2VsZWN0Q29tcG9uZW50LFxuICAgIENoclRhZ1NlbGVjdENvbXBvbmVudCxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgRGF0ZVBpcGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFR5cGVWYWxpZGF0b3JEaXJlY3RpdmUsXG4gICAgTWF0VGFic01vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRGF0ZVBpcGUsXG4gICAge1xuICAgICAgcHJvdmlkZTogREFURV9QSVBFX0RFRkFVTFRfT1BUSU9OUyxcbiAgICAgIHVzZVZhbHVlOiB7IGRhdGVGb3JtYXQ6ICdzaG9ydERhdGUnIH0sXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxufSlcbmV4cG9ydCBjbGFzcyBDaHJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgc2VjdGlvbnM/OiBJRm9ybVNlY3Rpb25bXTtcbiAgQElucHV0KCkgY29udHJvbHM/OiBJQ29udHJvbFtdO1xuXG4gIEBJbnB1dCgpIHZhbGlkPzogYm9vbGVhbjtcbiAgQE91dHB1dCgpIHZhbGlkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQElucHV0KCkgbW9kZWw6IGFueSA9IG51bGw7XG4gIEBPdXRwdXQoKSBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBASW5wdXQoKSBkaXNhYmxlZD86IGJvb2xlYW47XG4gIEBPdXRwdXQoKSB2YWx1ZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpIHN1Ym1pdD86IEZ1bmN0aW9uO1xuXG4gIEBJbnB1dCgpIGNvbXBhY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgZm9ybUNoYW5nZTogRXZlbnRFbWl0dGVyPElGb3JtQ29udHJvbD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8SUZvcm1Db250cm9sPigpO1xuXG4gIEBJbnB1dCgpIHRhYkRpc3BsYXk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvL0BJbnB1dCgpIGluY29tcGxlU3VibWlzc2lvbkNhbGxiYWNrOiAoKCkgPT4gYW55ICl8IG51bGwgPSBudWxsO1xuXG4gIGZvcm06IEZvcm1Hcm91cCA9IHRoaXMuYnVpbGRlci5ncm91cCh7fSk7XG5cbiAgcHJpdmF0ZSB2YWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgcHJpdmF0ZSBjb250cm9sVHlwZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgcHJpdmF0ZSBmbGF0dGVuZWRDb250cm9sczogSUNvbnRyb2xbXSA9IFtdO1xuICBwcml2YXRlIF9lcnJvcnM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG5cbiAgcHVibGljIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBidWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBmaWxlU2VydmljZTogRmlsZVNlcnZpY2VcbiAgKSB7XG4gICAgaWYgKHRoaXMuY29udHJvbHMgIT0gbnVsbCAmJiB0aGlzLnNlY3Rpb25zICE9IG51bGwpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiWW91IGNhbid0IHVzZSBib3RoIGNvbnRyb2xzIGFuZCBzZWN0aW9ucyBpbiB0aGUgc2FtZSBmb3JtXCJcbiAgICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZsYXR0ZW5lZENvbnRyb2xzID1cbiAgICAgIHRoaXMuc2VjdGlvbnNcbiAgICAgICAgPy5tYXAoKHMpID0+IHMuY29udHJvbHMpXG4gICAgICAgIC5mbGF0KClcbiAgICAgICAgLmNvbmNhdCh0aGlzLmNvbnRyb2xzID8/IFtdKSB8fCBbXTtcbiAgICB0aGlzLmluaXRNb2RlbCgpO1xuICAgIHRoaXMuaW5pdFZhbHVlcygpO1xuICAgIHRoaXMuaW5pdENvbnRyb2xzKCk7XG4gICAgdGhpcy5pbml0TGlzdGVuZXJzKCk7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICB2YWxpZGF0ZVNlYXJjaFNlbGVjdFZhbGlkdHkgPSAodmFsaWQ6IGJvb2xlYW4pID0+IHtcbiAgICAvL3RoaXMudmFsaWQgPSB2YWxpZCAmJiB0aGlzLmZvcm0udmFsaWQ7XG4gICAgLy90aGlzLnZhbGlkQ2hhbmdlLmVtaXQodGhpcy52YWxpZCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBpbml0TW9kZWwgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMubW9kZWwgPT0gbnVsbCkgdGhpcy5tb2RlbCA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5tb2RlbFtjb250cm9sLm5hbWVdID09PSBudWxsIHx8XG4gICAgICAgIHRoaXMubW9kZWxbY29udHJvbC5uYW1lXSA9PT0gdW5kZWZpbmVkXG4gICAgICApXG4gICAgICAgIHRoaXMubW9kZWxbY29udHJvbC5uYW1lXSA9IGNvbnRyb2wudmFsdWU7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgaW5pdFZhbHVlcyA9ICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5mbGF0dGVuZWRDb250cm9scykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnZhbHVlc1tjb250cm9sLm5hbWVdID09PSBudWxsIHx8XG4gICAgICAgIHRoaXMudmFsdWVzW2NvbnRyb2wubmFtZV0gPT09IHVuZGVmaW5lZFxuICAgICAgKVxuICAgICAgICB0aGlzLnZhbHVlc1tjb250cm9sLm5hbWVdID0gdGhpcy50b0lucHV0VmFsdWUoXG4gICAgICAgICAgY29udHJvbCxcbiAgICAgICAgICB0aGlzLm1vZGVsW2NvbnRyb2wubmFtZV1cbiAgICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBpbml0Q29udHJvbHMgPSAoKSA9PiB7XG4gICAgY29uc3QgZm9ybUNvbnRyb2xzID0ge30gYXMgSUZvcm1Db250cm9sQ29sbGVjdGlvbjtcbiAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5mbGF0dGVuZWRDb250cm9scykge1xuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuX2dldFZhbGlkYXRvcnMoY29udHJvbC52YWxpZGF0aW9ucyk7XG4gICAgICBmb3JtQ29udHJvbHNbY29udHJvbC5uYW1lXSA9IG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgdGhpcy52YWx1ZXNbY29udHJvbC5uYW1lXSxcbiAgICAgICAgdmFsaWRhdG9yc1xuICAgICAgKTtcbiAgICAgIC8vaWYgKGNvbnRyb2wudHlwZSA9PSAnZmlsZScpIGZvcm1Db250cm9sc1tjb250cm9sLm5hbWVdLmRpc2FibGUoKTtcbiAgICAgIHRoaXMuY29udHJvbFR5cGVzW2NvbnRyb2wubmFtZV0gPSBjb250cm9sLnR5cGU7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtID0gdGhpcy5idWlsZGVyLmdyb3VwKGZvcm1Db250cm9scyk7XG4gICAgdGhpcy52YWxpZCA9IHRoaXMuZm9ybS52YWxpZDtcbiAgfTtcblxuICBwcml2YXRlIGluaXRMaXN0ZW5lcnMgPSAoKSA9PiB7XG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlcykgPT4ge1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdmFsdWVzKSB7XG4gICAgICAgIGlmIChPYmplY3QuaGFzT3duKHRoaXMubW9kZWwsIGtleSkgJiYgdGhpcy5jb250cm9sVHlwZXNba2V5XSAhPSAnZmlsZScpXG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlVQREFUSU5HIFwiICsga2V5LCB0aGlzLm1vZGVsW2tleV0sIHZhbHVlc1trZXldKTtcbiAgICAgICAgICB0aGlzLm1vZGVsW2tleV0gPSB2YWx1ZXNba2V5XTtcbiAgICAgICAgaWYgKE9iamVjdC5oYXNPd24odGhpcy52YWx1ZXMsIGtleSkpIHRoaXMudmFsdWVzW2tleV0gPSB2YWx1ZXNba2V5XTtcbiAgICAgICAgLy8gaWYgKHZhbHVlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIC8vIFx0dGhpcy5tb2RlbFtrZXldID0gdmFsdWVzW2tleV07XG4gICAgICAgIC8vIFx0dGhpcy52YWx1ZXNba2V5XSA9IHZhbHVlc1trZXldO1xuICAgICAgICAvLyB9XG4gICAgICB9XG4gICAgICB0aGlzLnZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xuICAgICAgdGhpcy52YWxpZENoYW5nZS5lbWl0KHRoaXMudmFsaWQpO1xuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHRoaXMubW9kZWwpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29udHJvbCA9IChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobmFtZSkgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc1tuYW1lXTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBmb2N1cyA9IChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAvL2NvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbnRyb2wobmFtZSk7XG4gICAgY29uc3QgZWwgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgYGlucHV0W25hbWU9XCIke25hbWV9XCJdYFxuICAgICkgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB0aGlzLmNvbnRyb2wobmFtZSk/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGVsLmZvY3VzKCk7XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIHZhbHVlID0gKGlucHV0Pzogc3RyaW5nKSA9PiB0aGlzLmdldFZhbHVlKGlucHV0KTtcblxuICBnZXRWYWx1ZSA9IChpbnB1dD86IHN0cmluZykgPT4ge1xuICAgIGlmIChpbnB1dCkgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc1tpbnB1dF0/LnZhbHVlO1xuICAgIHJldHVybiB0aGlzLmZvcm0udmFsdWU7XG4gIH07XG5cbiAgaXNWYWxpZCA9IChpbnB1dD86IHN0cmluZykgPT4ge1xuICAgIGlmIChpbnB1dCkgcmV0dXJuIHRoaXMuZm9ybS5nZXQoaW5wdXQpPy52YWxpZDtcbiAgICByZXR1cm4gdGhpcy52YWxpZDtcbiAgfTtcblxuICBpc0NvbnRyb2xSZXF1aXJlZCA9IChjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuICAgIHJldHVybiBjb250cm9sLnZhbGlkYXRpb25zPy5maW5kKFxuICAgICAgKHYpID0+IHYucnVsZT8udG9Mb3dlckNhc2UoKSA9PSAncmVxdWlyZWQnXG4gICAgKTtcbiAgfTtcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSB2YWx1ZSBvZiBhIGNvbnRyb2wgV0lUSE9VVCB0cmlnZ2VyaW5nIHRoZSBtb2RlbENoYW5nZSBldmVudFxuICAgKiBAcGFyYW0ga2V5IGlucHV0IGtleSAoY29udHJvbCBuYW1lKVxuICAgKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gc2V0XG4gICAqIEBwYXJhbSBkYXRlRm9ybWF0IG9wdGlvbmFsIGRhdGUgZm9ybWF0IGZvciBkYXRlIGFuZCBkYXRldGltZSBpbnB1dHNcbiAgICovXG4gIHNldFZhbHVlID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBkYXRlRm9ybWF0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMudHlwZVRvSW5wdXRWYWx1ZSh0aGlzLmNvbnRyb2xUeXBlc1trZXldLCB2YWx1ZSk7XG4gICAgdGhpcy5mb3JtLmdldChrZXkpPy5zZXRWYWx1ZSh2YWwsIHtcbiAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICBlbWl0Vmlld1RvTW9kZWxDaGFuZ2U6IGZhbHNlLFxuICAgIH0pO1xuICAgIHRoaXMubW9kZWxba2V5XSA9IHZhbDtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfTtcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSdzIG1vZGVsIFdJVEhPVVQgdHJpZ2dlcmluZyB0aGUgbW9kZWxDaGFuZ2UgZXZlbnRcbiAgICogQHBhcmFtIG1vZGVsIHRoZSBtb2RlbCB0byBzZXRcbiAgICogQHBhcmFtIGRhdGVGb3JtYXQgb3B0aW9uYWwgZGF0ZSBmb3JtYXQgZm9yIGRhdGUgYW5kIGRhdGV0aW1lIGlucHV0c1xuICAgKi9cbiAgc2V0ID0gKG1vZGVsOiBhbnksIGRhdGVGb3JtYXQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PiB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobW9kZWwpKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKGtleSwgbW9kZWxba2V5XSwgZGF0ZUZvcm1hdCk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSB2YWx1ZSBvZiBhIGNvbnRyb2wuIFRoaXMgV0lMTCB0cmlnZ2VyIHRoZSBtb2RlbENoYW5nZSBldmVudFxuICAgKiBAcGFyYW0ga2V5IGlucHV0IGtleSAoY29udHJvbCBuYW1lKVxuICAgKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gc2V0XG4gICAqIEBwYXJhbSBkYXRlRm9ybWF0IG9wdGlvbmFsIGRhdGUgZm9ybWF0IGZvciBkYXRlIGFuZCBkYXRldGltZSBpbnB1dHNcbiAgICovXG4gIHBhdGNoVmFsdWUgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGRhdGVGb3JtYXQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PiB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuY29udHJvbFR5cGVzW2tleV07XG4gICAgY29uc3QgdmFsID0gdGhpcy50eXBlVG9JbnB1dFZhbHVlKGtleSwgdmFsdWUpO1xuICAgIGlmICh0eXBlID09ICdmaWxlJykge1xuICAgICAgdGhpcy5zZXRWYWx1ZSQoa2V5LCB2YWw/Lm5hbWUpO1xuICAgICAgdGhpcy5zZXRNb2RlbCQoa2V5LCB2YWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFZhbHVlJChrZXksIHZhbCk7XG4gICAgICB0aGlzLnNldE1vZGVsJChrZXksIHZhbCk7XG4gICAgfVxuICAgIHRoaXMuZm9ybS5nZXQoa2V5KT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLm1vZGVsKTtcbiAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcbiAgfTtcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgdmFsdWUgb2YgdGhlIGZvcm0ncyBtb2RlbC4gVGhpcyBXSUxMIHRyaWdnZXIgdGhlIG1vZGVsQ2hhbmdlIGV2ZW50IG9uY2UgZm9yIGVhY2ggaW5wdXRcbiAgICogQHBhcmFtIG1vZGVsIG1vZGVsIHRvIHNldFxuICAgKiBAcGFyYW0gZGF0ZUZvcm1hdCBvcHRpb25hbCBkYXRlIGZvcm1hdCBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUgaW5wdXRzXG4gICAqL1xuICBwYXRjaCA9IChtb2RlbDogYW55LCBkYXRlRm9ybWF0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1vZGVsKSkge1xuICAgICAgdGhpcy5wYXRjaFZhbHVlKGtleSwgbW9kZWxba2V5XSwgZGF0ZUZvcm1hdCk7XG4gICAgfVxuICB9O1xuXG4gIGNoZWNrVmFsaWRpdHkgPSAoKSA9PiB7XG4gICAgZm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMpIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQoY29udHJvbC5uYW1lKT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICB9O1xuXG4gIHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkgPSAodG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XG4gICAgdGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgaWYgKHRvdWNoZWQpIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gIH07XG5cbiAgcmVzZXQgPSAoKSA9PiB7XG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGdldCA9IChjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgaGFzRXJyb3IgPSAoY29udHJvbDogSUNvbnRyb2wsIHZhbGlkYXRpb246IElDb250cm9sVmFsaWRhdGlvbikgPT4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uaGFzRXJyb3IodmFsaWRhdGlvbi5ydWxlLCBjb250cm9sLm5hbWUpO1xuICB9O1xuXG4gIHByb3RlY3RlZCBnZXRUb0FjY2VwdCA9IChjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuICAgIHJldHVybiBjb250cm9sLmFjY2VwdD8ubWFwKChzKSA9PiBzLnRvTG9jYWxlVXBwZXJDYXNlKCkpLmpvaW4oJywgJyk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIHNob3VsZFNob3dFcnJvciA9IChcbiAgICBjb250cm9sOiBJQ29udHJvbCxcbiAgICB2YWxpZGF0aW9uOiBJQ29udHJvbFZhbGlkYXRpb25cbiAgKSA9PiB7XG4gICAgY29uc3QgY3RybCA9IHRoaXMuZm9ybS5nZXQoY29udHJvbC5uYW1lKTtcbiAgICBpZiAoY3RybCAmJiBjdHJsLmVycm9ycykge1xuICAgICAgY29uc3QgZmlyc3QgPSBPYmplY3Qua2V5cyhjdHJsLmVycm9ycylbMF07XG4gICAgICByZXR1cm4gZmlyc3QgPT09IHZhbGlkYXRpb24ucnVsZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIHByb3RlY3RlZCBmaWxlQ2hhbmdlID0gKGV2ZW50OiBFdmVudCwgY29udHJvbDogSUNvbnRyb2wpID0+IHtcbiAgICBjb25zdCBjdHJsID0gdGhpcy5mb3JtLmdldChjb250cm9sLm5hbWUpO1xuICAgIGN0cmw/Lm1hcmtBc0RpcnR5KCk7XG4gICAgY3RybD8ubWFya0FzVG91Y2hlZCgpO1xuICAgIGNvbnN0IGZpbGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzPy5bMF07XG4gICAgaWYgKGZpbGUgPT09IG51bGwgfHwgZmlsZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgcmV0dXJuIHRoaXMucGF0Y2hWYWx1ZShjb250cm9sLm5hbWUsICcnKTtcbiAgICB0aGlzLmZpbGVTZXJ2aWNlLmZpbGVUb0Jhc2U2NChmaWxlISkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIHRoaXMubW9kZWxbY29udHJvbC5uYW1lXSA9IHJlcztcbiAgICAgIHRoaXMudmFsdWVzW2NvbnRyb2wubmFtZV0gPSByZXMubmFtZTtcbiAgICAgIGN0cmw/LnBhdGNoVmFsdWUocmVzLm5hbWUsIHtcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgZW1pdFZpZXdUb01vZGVsQ2hhbmdlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlcyk7XG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XG4gICAgfSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZSQgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcbiAgICB0aGlzLmZvcm0uZ2V0KGtleSk/LnBhdGNoVmFsdWUodmFsdWUpO1xuICAgIHRoaXMudmFsdWVzW2tleV0gPSB2YWx1ZTtcbiAgfTtcblxuICBwcml2YXRlIHNldE1vZGVsJCA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuICAgIHRoaXMubW9kZWxba2V5XSA9IHZhbHVlO1xuICB9O1xuXG4gIHByaXZhdGUgdG9JbnB1dFZhbHVlID0gKGNvbnRyb2w6IElDb250cm9sLCB2YWx1ZTogYW55IHwgbnVsbCA9IG51bGwpID0+IHtcbiAgICByZXR1cm4gdGhpcy50eXBlVG9JbnB1dFZhbHVlKGNvbnRyb2wudHlwZSwgdmFsdWUsIGNvbnRyb2wudmFsdWUpO1xuICB9O1xuXG4gIHByaXZhdGUgdHlwZVRvSW5wdXRWYWx1ZSA9IChcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgdmFsdWU6IGFueSB8IG51bGwgPSBudWxsLFxuICAgIGRlZmF1bHRWYWx1ZTogYW55IHwgbnVsbCA9IG51bGxcbiAgKSA9PiB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWUgfHwgbnVsbDtcbiAgICB9XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtRGF0ZSh2YWx1ZSA/PyBkZWZhdWx0VmFsdWUsICd5eXl5LU1NLWRkJyk7XG4gICAgICBjYXNlICdkYXRldGltZSc6XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybURhdGUodmFsdWUgPz8gZGVmYXVsdFZhbHVlLCAneXl5eS1NTS1kZFRISDptbScpO1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTihudW1iZXIpID8gMCA6IG51bWJlcjtcbiAgICAgIGNhc2UgJ3NlYXJjaFNlbGVjdCc6XG4gICAgICAgIHJldHVybiB2YWx1ZSE7XG4gICAgICBjYXNlICd0YWdTZWxlY3QnOlxuICAgICAgICByZXR1cm4gdmFsdWUhO1xuICAgICAgY2FzZSAndG9nZ2xlJzpcbiAgICAgICAgaWYgKHZhbHVlID09PSAndHJ1ZScgfHwgdmFsdWUgPT09IHRydWUpIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2YWx1ZSEgfHwgZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHRyYW5zZm9ybURhdGUgPSAodmFsdWU6IGFueSwgZm9ybWF0OiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsIGZvcm1hdCk7XG4gIH07XG5cbiAgcHVibGljIHJlc2l6ZSA9ICh0ZXh0QXJlYTogSFRNTFRleHRBcmVhRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxIZWlnaHQgPSB0ZXh0QXJlYS5zdHlsZS5oZWlnaHQ7XG4gICAgdGV4dEFyZWEuc3R5bGUuaGVpZ2h0ID0gaW5pdGlhbEhlaWdodDtcbiAgICB0ZXh0QXJlYS5zdHlsZS5oZWlnaHQgPSAnJyArIHRleHRBcmVhLnNjcm9sbEhlaWdodCArICdweCc7XG4gIH07XG5cbiAgcHVibGljIGRvU3VibWl0ID0gKCkgPT4ge1xuICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgaWYgKHRoaXMudmFsaWQgJiYgdGhpcy5mb3JtLnZhbGlkKSB0aGlzLnN1Ym1pdD8uKHRoaXMuZm9ybS52YWx1ZSk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGxvZyA9IChlbDogYW55KSA9PiB7XG4gICAgY29uc29sZS5sb2coZWwpO1xuICB9O1xuXG4gIHByb3RlY3RlZCBhY2NlcHRUb1N0cmluZyA9IChjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuICAgIHJldHVybiBjb250cm9sLmFjY2VwdD8ubWFwKCh0eXBlKSA9PiBgLiR7dHlwZX1gKS5qb2luKCcsICcpIHx8ICcuKic7XG4gIH07XG5cbiAgcHJpdmF0ZSBkZXRlY3RDaGFuZ2VzID0gKCkgPT4ge1xuICAgIHRoaXMuZm9ybS5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9O1xuXG4gIHByaXZhdGUgX2dldFZhbGlkYXRvcnMgPSAodmFsaWRhdGlvbnM/OiBJQ29udHJvbFZhbGlkYXRpb25bXSkgPT4ge1xuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcbiAgICBpZiAoIXZhbGlkYXRpb25zKSByZXR1cm4gdmFsaWRhdG9ycztcbiAgICAvL1N3aXRjaCBjYXNlIGJyZWFrcyB0aGUgbW9iaWxlIGFwcCBzbyB3ZSdsbCBkbyBpZiBzdGF0ZW1lbnRzXG4gICAgZm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25zKSB7XG4gICAgICBpZiAodmFsaWRhdGlvbi52YWxpZGF0b3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2godmFsaWRhdGlvbi52YWxpZGF0b3IpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJ1bGUgPSB2YWxpZGF0aW9uLnJ1bGU/LnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICBpZiAocnVsZSA9PSAnbWluJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSAnQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIHBldGl0ZSAhJztcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKHZhbGlkYXRpb24udmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdtYXgnKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9ICdDZXR0ZSB2YWxldXIgZXN0IHRyb3AgZ3JhbmRlICEnO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgodmFsaWRhdGlvbi52YWx1ZSkpO1xuICAgICAgfVxuICAgICAgaWYgKHJ1bGUgPT0gJ3JlcXVpcmVkJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSAnQ2UgY2hhbXBzIGVzdCByZXF1aXMgISc7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChyZXF1aXJlZCgpKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdlbWFpbCcpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSBhZHJlc3NlIGVtYWlsIG4nZXN0IHBhcyB2YWxpZGUgIVwiO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5lbWFpbCk7XG4gICAgICB9XG4gICAgICBpZiAocnVsZSA9PSAnbWlubGVuZ3RoJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSAnQ2V0dGUgdmFsZXVyIGVzdCB0cm9wIHBldGl0ZSAhJztcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHZhbGlkYXRpb24udmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdtYXhsZW5ndGgnKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9ICdDZXR0ZSB2YWxldXIgZXN0IHRyb3AgZ3JhbmRlICEnO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xuICAgICAgfVxuICAgICAgaWYgKHJ1bGUgPT0gJ3R5cGUnKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9IFwiQ2V0dGUgdmFsZXVyIG4nZXN0IHBhcyB2YWxpZGUgIVwiO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2godHlwZSh2YWxpZGF0aW9uLnZhbHVlKSk7XG4gICAgICB9XG4gICAgICBpZiAocnVsZSA9PSAnZGVjaW1hbCcpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gYExlIG5vbWJyZSBkZSBkw6ljaW1hbCBuJ2VzdCBwYXMgdmFsaWRlIChtYXg6ICR7dmFsaWRhdGlvbi52YWx1ZX0pICFgO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goZGVjaW1hbCh2YWxpZGF0aW9uLnZhbHVlKSk7XG4gICAgICB9XG4gICAgICBpZiAocnVsZSA9PSAnbWF4ZGF0ZScpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gYENldHRlIGRhdGUgZXN0IHRyb3AgZ3JhbmRlICEgKG1heDogJHt2YWxpZGF0aW9uLnZhbHVlfSkgIWA7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChtYXhEYXRlKHZhbGlkYXRpb24udmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBtaW4taC01LzYgbXQtMlwiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAqbmdJZj1cImluaXRpYWxpemVkXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJEaXNwbGF5IHx8ICFzZWN0aW9uc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNpbmdsZVRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29udHJvbHM6IGNvbnRyb2xzfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFiRGlzcGxheSAmJiBzZWN0aW9uc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlY3Rpb25UZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3NlY3Rpb25zOiBzZWN0aW9uc31cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFiRGlzcGxheSAmJiBzZWN0aW9uc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhYnNUZW1wbGF0ZVwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3NlY3RzOiBzZWN0aW9uc31cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9mb3JtPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGFic1RlbXBsYXRlIGxldC1zZWN0aW9ucz0nc2VjdHMnPlxuICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPG1hdC10YWItZ3JvdXA+XG4gICAgICBAZm9yIChzZWN0aW9uIG9mIHNlY3Rpb25zOyB0cmFjayBzZWN0aW9uOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgIDxtYXQtdGFiIFtsYWJlbF09XCJzZWN0aW9uLnRpdGxlIHx8ICfDiXRhcGUgJyArIChpbmRleCArIDEpXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpbml0aWFsaXplZFwiIGNsYXNzPVwibXQtNFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiY29tcGFjdCA/ICdncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtNCc6J2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy0yJ1wiPlxuICAgICAgICAgIEBmb3IgKGN0cmwgb2Ygc2VjdGlvbi5jb250cm9sczsgdHJhY2sgaW5kZXg7IGxldCBpbmRleCA9ICRpbmRleDsgbGV0XG4gICAgICAgICAgbGFzdCA9XG4gICAgICAgICAgJGxhc3QpXG4gICAgICAgICAge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Y29udHJvbDogY3RybCwgaW5kZXg6IGluZGV4LCBsYXN0OiAkbGFzdH1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuICAgICAgfVxuICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgPC9maWVsZHNldD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2luZ2xlVGVtcGxhdGUgbGV0LWNvbnRyb2xzPVwiY29udHJvbHNcIj5cbiAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxkaXYgKm5nSWY9XCJpbml0aWFsaXplZFwiXG4gICAgICBbbmdDbGFzc109XCJjb21wYWN0ID8gJ2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy00JzonZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTInXCI+XG4gICAgICBAZm9yIChjb250cm9sIG9mIGNvbnRyb2xzOyB0cmFjayBjb250cm9sOyBsZXQgaW5kZXggPSAkaW5kZXg7IGxldCBsYXN0ID0gJGxhc3QpIHtcbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntjb250cm9sOiBjb250cm9sLCBpbmRleDogaW5kZXgsIGxhc3Q6IGxhc3R9XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICA8L2ZpZWxkc2V0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWN0aW9uVGVtcGxhdGUgbGV0LXNlY3Rpb25zPSdzZWN0aW9ucyc+XG4gIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICBAZm9yIChzZWN0aW9uIG9mIHNlY3Rpb25zOyB0cmFjayBzZWN0aW9uOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICA8ZGl2PlxuICAgICAgQGlmIChzZWN0aW9uLnRpdGxlKSB7XG4gICAgICA8aDIgY2xhc3M9XCJtYi0yIGZvbnQtYm9sZCB0ZXh0LXhsIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlXCI+XG4gICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cbiAgICAgIDwvaDI+XG4gICAgICB9XG4gICAgICA8ZGl2ICpuZ0lmPVwiaW5pdGlhbGl6ZWRcIlxuICAgICAgICBbbmdDbGFzc109XCJjb21wYWN0ID8gJ2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy00JzonZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTInXCI+XG4gICAgICAgIEBmb3IgKGNvbnRyb2wgb2Ygc2VjdGlvbi5jb250cm9sczsgdHJhY2sgaW5kZXg7IGxldCBpbmRleCA9ICRpbmRleDsgbGV0XG4gICAgICAgIGxhc3QgPVxuICAgICAgICAkbGFzdClcbiAgICAgICAge1xuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUZW1wbGF0ZVwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntjb250cm9sOiBjb250cm9sLCBpbmRleDogaW5kZXgsIGxhc3Q6ICRsYXN0fVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKGluZGV4ICE9IChzZWN0aW9uc3x8W10pLmxlbmd0aCAtIDEgJiYgIWNvbXBhY3QpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJweS00XCI+XG4gICAgICAgIDxociBjbGFzcz1cIlwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZmllbGRzZXQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRyb2xUZW1wbGF0ZSBsZXQtY29udHJvbD0nY29udHJvbCcgbGV0LWxhc3Q9J2xhc3QnIGxldC1pbmRleD0naW5kZXgnPlxuICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgaC1taW4gbXQtMlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIFtuZ0NsYXNzXT1cIntcbiAgICAnc206Y29sLXNwYW4tMic6IChjb250cm9sLndpZHRoID09ICdyb3cnICYmICFjb21wYWN0KSB8fCBjb250cm9sLnR5cGU9PSd0ZXh0QXJlYScgJiYgY29tcGFjdCAmJiBjb250cm9sLndpZHRoICE9ICdyb3cnLFxuICAgICdzbTpjb2wtc3Bhbi00JzogY29udHJvbC53aWR0aCA9PSdyb3cnICYmIGNvbXBhY3QsXG4gICAgfVwiPlxuICAgIEBpZiAoY29udHJvbC50eXBlPT0nc2VhcmNoU2VsZWN0Jykge1xuICAgIDxkaXYgYXBwLWNoci1zZWFyY2gtc2VsZWN0IGNsYXNzPVwicmVsYXRpdmUgaW5wdXQgei0wIHctZnVsbFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCJcbiAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICBbZGF0YV09XCJjb250cm9sLmRhdGEgfHwgW11cIiBbZGlzcGxheV09XCJjb250cm9sLmZuIVwiIFtuYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICBbZmlsdGVyc109XCJjb250cm9sLmZpbHRlcnNcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBhYnNvbHV0ZSB0ZXh0LXNtIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCI+e3tcbiAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICB9fVxuICAgICAgICBAaWYgKGlzQ29udHJvbFJlcXVpcmVkKGNvbnRyb2wpKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgICA6XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICBAaWYgKFxuICAgICAgICBnZXQoY29udHJvbCk/LnRvdWNoZWQgJiZcbiAgICAgICAgaGFzRXJyb3IoY29udHJvbCwgdmFsaWRhdGlvbikgJiYgc2hvdWxkU2hvd0Vycm9yKGNvbnRyb2wsIHZhbGlkYXRpb24pKSB7XG4gICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZGFyazp0ZXh0LXJlZC04MDBcIj57eyB2YWxpZGF0aW9uLmRpc3BsYXkgfX08L21hdC1lcnJvcj5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGNvbnRyb2wudHlwZT09J3RhZ1NlbGVjdCcpIHtcbiAgICA8ZGl2IGFwcC1jaHItdGFnLXNlbGVjdCBjbGFzcz1cInJlbGF0aXZlIGlucHV0IHotMCB3LWZ1bGxcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiXG4gICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgW2RhdGFdPVwiY29udHJvbC5kYXRhIHx8IFtdXCIgW2Rpc3BsYXldPVwiY29udHJvbC5mbiFcIiBbbmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIlxuICAgICAgW2ZpbHRlcnNdPVwiY29udHJvbC5maWx0ZXJzXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgYWJzb2x1dGUgdGV4dC1zbSB0ZXh0LWdyYXktNTAwIGRhcms6dGV4dC1ncmF5LTQwMFwiPnt7XG4gICAgICAgIGNvbnRyb2wubGFiZWxcbiAgICAgICAgfX1cbiAgICAgICAgQGlmIChpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgOlxuICAgICAgICBAZm9yICh2YWxpZGF0aW9uIG9mIGNvbnRyb2wudmFsaWRhdGlvbnM7IHRyYWNrIHZhbGlkYXRpb24pIHtcbiAgICAgICAgQGlmIChcbiAgICAgICAgZ2V0KGNvbnRyb2wpPy50b3VjaGVkICYmXG4gICAgICAgIGhhc0Vycm9yKGNvbnRyb2wsIHZhbGlkYXRpb24pICYmIHNob3VsZFNob3dFcnJvcihjb250cm9sLCB2YWxpZGF0aW9uKSkge1xuICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwidGV4dC1yZWQtNTAwIGRhcms6dGV4dC1yZWQtODAwXCI+e3sgdmFsaWRhdGlvbi5kaXNwbGF5IH19PC9tYXQtZXJyb3I+XG4gICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHotMCB3LWZ1bGwgZ3JvdXAvaW5wdXRzIGNvbnRlbnRcIj5cbiAgICAgIDwhLS0gSGVyZSB3ZSB3aWxsICpuZ0lmIGVhY2ggdHlwZSBvZiBpbnB1dCBjYXVzZSBpdCdzIHRoZSBjbGVhbmVzdCB3YXkgSSBjYW4gaW1hZ2luZS0tPlxuICAgICAgPCEtLVRFWFQtLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICd0ZXh0Jykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwidGV4dFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCIgXCIgW3ZhbHVlXT1cIm1vZGVsPy5bY29udHJvbC5uYW1lXSB8fCBjb250cm9sLnZhbHVlIHx8ICcnXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIuNSBweC0wIHctZnVsbCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIDwhLS1QQVNTV09SRC0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3Bhc3N3b3JkJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwicGFzc3dvcmRcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiIFwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yLjUgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICA8IS0tVEVYVCBBUkVBLS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAndGV4dEFyZWEnKSB7XG4gICAgICA8dGV4dGFyZWEgI3RleHRBcmVhIGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICAgIChpbnB1dCk9XCJyZXNpemUodGV4dEFyZWEpXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cIm5vLXNjcm9sbGJhciBpbnB1dCAhcmVzaXplLW5vbmUgaGVpZ2h0LW5vcm1hbGl6ZWQgYmxvY2sgcHktMiBweC0wIHctZnVsbCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCI+PC90ZXh0YXJlYT5cbiAgICAgIH1cbiAgICAgIDwhLS1OVU1CRVItLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdudW1iZXInKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJudW1iZXJcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBwbGFjZWhvbGRlcj1cIiBcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yLjUgcHgtMCB3LWZ1bGwgdGV4dC1zbSB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGFwcGVhcmFuY2Utbm9uZSBkYXJrOmJvcmRlci1ncmF5LTYwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICA8IS0tREFURS0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ2RhdGUnKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJkYXRlXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMiBweC0wIHctZnVsbCBoZWlnaHQtbm9ybWFsaXplZCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdkYXRldGltZScpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIiBwbGFjZWhvbGRlcj1cIiBcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMiBweC0wIHctZnVsbCBoZWlnaHQtbm9ybWFsaXplZCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIDwhLS1DT0xPUi0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ2NvbG9yJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwiY29sb3JcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiIFwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCIgc3R5bGU9XCJoZWlnaHQ6IDQycHg7XCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0xLjUgbS0wIHB4LTAgdy1mdWxsIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3RvZ2dsZScpe1xuICAgICAgPGlucHV0ICN0b2dnbGUgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJoaWRkZW4gY2hlY2tib3hcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiIC8+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmVsYXRpdmUgdG9nZ2xlLXdyYXBwZXIgYmxvY2sgaW5wdXQgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBib3JkZXItZ3JheS0zMDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIj5cbiAgICAgICAgPGRpdiAoY2xpY2spPVwidG9nZ2xlPy5jbGljaygpXCIgY2xhc3M9XCJyZWxhdGl2ZSBibG9jayBpbnB1dCB0b2dnbGVcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICdmaWxlJyl7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgdG9wLTIgcmlnaHQtMCBmbGV4IGZsZXgtcm93IGp1c3RpZnktY2VudGVyIGNvbnRlbnQtY2VudGVyIGl0ZW1zLWNlbnRlciBhbGlnbi1taWRkbGUgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHJvdW5kZWQtZnVsbCBcIiAoY2xpY2spPVwiZmlucHV0LmNsaWNrKClcIj5hZGQ8L21hdC1pY29uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNDAwIGJvcmRlci1sLTIgYm9yZGVyLWItMCBib3JkZXItdC0wIFxuICAgIGJvcmRlci1yLTAgdy1maXQgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtZ3JheS00MDAgcHgtMSB0ZXh0LWNlbnRlciBvcGFjaXR5LTEwMCBiZy1zbGF0ZS0xMDAgZGFyazpiZy1zbGF0ZS03MDAgYmctb3BhY2l0eS01MCBmbGV4IGp1c3RpZnktY2VudGVyIFxuICAgIGFsaWduLW1pZGRsZSBpdGVtcy1jZW50ZXJcIj57e2dldFRvQWNjZXB0KGNvbnRyb2wpfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIiB0eXBlPVwiZmlsZVwiIGNsYXNzPVwiaGlkZGVuXCIgI2ZpbnB1dCBbYWNjZXB0XT1cImFjY2VwdFRvU3RyaW5nKGNvbnRyb2wpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJmaWxlQ2hhbmdlKCRldmVudCwgY29udHJvbClcIiAvPlxuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA0MnB4O1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcG9pbnRlci1ldmVudHMtbm9uZSBweS0xLjUgbS0wIHB4LTAgdy1mdWxsIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHMgZmlsZTpoaWRkZW5cIiAvPlxuICAgICAgfVxuICAgICAgQGlmIChjb250cm9sLnR5cGUgIT0gJ3NlYXJjaFNlbGVjdCcgJiYgY29udHJvbC50eXBlICE9ICd0YWdTZWxlY3QnKSB7XG4gICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBhYnNvbHV0ZSB0ZXh0LXNtIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCI+e3tcbiAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICB9fVxuICAgICAgICBAaWYoY29udHJvbC5sYWJlbCAmJiBjb250cm9sLmxhYmVsICE9ICcnICYmIGNvbnRyb2wubGFiZWwgIT0gJyAnKXtcbiAgICAgICAgQGlmIChpc0NvbnRyb2xSZXF1aXJlZChjb250cm9sKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgOlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICBAaWYgKFxuICAgICAgICBnZXQoY29udHJvbCk/LnRvdWNoZWQgJiZcbiAgICAgICAgaGFzRXJyb3IoY29udHJvbCwgdmFsaWRhdGlvbikgJiYgc2hvdWxkU2hvd0Vycm9yKGNvbnRyb2wsIHZhbGlkYXRpb24pKSB7XG4gICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZGFyazp0ZXh0LXJlZC04MDBcIj57eyB2YWxpZGF0aW9uLmRpc3BsYXkgfX08L21hdC1lcnJvcj5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2xhYmVsPlxuICAgICAgfVxuICAgICAgQGlmIChjb250cm9sLmljb24gJiYgIWRpc2FibGVkKSB7XG4gICAgICA8c3BhblxuICAgICAgICBbbmdDbGFzc109XCJjb250cm9sLmljb25DYWxsYmFja0Rpc2FibGVkID8gJ3RleHQtZ3JheS00MDAgZGFyazp0ZXh0LWdyYXktNTAwJzondGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUnXCJcbiAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBwLTIuNSBib3R0b20tMCByaWdodC0wXCIgW21hdFRvb2x0aXBdPVwiY29udHJvbC5pY29uVG9vbHRpcCB8fCAnJ1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcbiAgICAgICAgKGNsaWNrKT1cIiFjb250cm9sLmljb25DYWxsYmFja0Rpc2FibGVkICYmIGNvbnRyb2wuaWNvbkNhbGxiYWNrPy4oZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy52YWx1ZSlcIj48bWF0LWljb25cbiAgICAgICAgICBjbGFzcz1cImZsZXggaW5wdXQganVzdGlmeS1jZW50ZXIgYWxpZ24tbWlkZGxlIGl0ZW1zLWNlbnRlciBjb250ZW50LWNlbnRlciB0ZXh0LWxnXCI+e3tjb250cm9sLmljb259fTwvbWF0LWljb24+PC9zcGFuPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIEBpZiAoY29udHJvbC5zcGFuKSB7XG4gICAgPHNwYW5cbiAgICAgIFtuZ0NsYXNzXT1cIiFmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycyB8fCAhZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkID8gJ3RleHQtZ3JheS02MDAgZGFyazp0ZXh0LWdyYXktMzAwJyA6ICchdGV4dC1yZWQtNTAwIGRhcms6IXRleHQtcmVkLTgwMCdcIlxuICAgICAgY2xhc3M9XCJoLTAgdGV4dC14c1wiPnt7IGNvbnRyb2wuc3BhblxuICAgICAgfX08L3NwYW4+XG4gICAgfVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
|
|
415
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hyLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hydi1jb21wb25lbnRzL3NyYy9saWIvY2hyLWZvcm0vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsR0FPeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixXQUFXLEdBR1osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBR0wsVUFBVSxFQUNWLFdBQVcsR0FDWixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUNMLFFBQVEsRUFDUixZQUFZLEVBQ1oseUJBQXlCLEdBQzFCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFB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QUNsQyxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO2FBQ3RDO1NBQ0YsMEJDdElILHF4YkFvUGMsdTdxTkRsSVYsbUJBQW1CLCt4Q0FDbkIsV0FBVyw4QkFDWCxnQkFBZ0IsNFRBQ2hCLGFBQWEsbUxBQ2Isb0JBQW9CLCtCQUNwQixRQUFRLGtGQUNSLHdCQUF3QixvT0FDeEIscUJBQXFCLHVPQUNyQixxQkFBcUIsOEJBRXJCLFlBQVksdVlBRVosYUFBYTs7MkZBV0osZ0JBQWdCO2tCQWpDNUIsU0FBUzsrQkFDRSxjQUFjLGNBT1osSUFBSSxXQUNQO3dCQUNQLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2Isb0JBQW9CO3dCQUNwQixRQUFRO3dCQUNSLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQixxQkFBcUI7d0JBQ3JCLFFBQVE7d0JBQ1IsWUFBWTt3QkFDWixzQkFBc0I7d0JBQ3RCLGFBQWE7cUJBQ2QsYUFDVTt3QkFDVCxRQUFRO3dCQUNSOzRCQUNFLE9BQU8sRUFBRSx5QkFBeUI7NEJBQ2xDLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUU7eUJBQ3RDO3FCQUNGLG1CQUNnQix1QkFBdUIsQ0FBQyxPQUFPOzBMQUd2QyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUUsS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUUsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUVFLE1BQU07c0JBQWQsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFHRSxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25Jbml0LFxuICBFbGVtZW50UmVmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBBZnRlclZpZXdJbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFZhbGlkYXRvckZuLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgQWJzdHJhY3RDb250cm9sLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBGb3JtQnVpbGRlcixcbiAgRm9ybUdyb3VwLFxuICBWYWxpZGF0b3JzLFxuICBGb3JtQ29udHJvbCxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RXJyb3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IENoclNlYXJjaFNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL2Noci1zZWFyY2gtc2VsZWN0L2Noci1zZWFyY2gtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQge1xuICBEYXRlUGlwZSxcbiAgQ29tbW9uTW9kdWxlLFxuICBEQVRFX1BJUEVfREVGQVVMVF9PUFRJT05TLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IFR5cGVWYWxpZGF0b3JEaXJlY3RpdmUgfSBmcm9tICcuLi9tb2RlbHMvY2hyLXZhbGlkYXRvcnMvdHlwZS12YWxpZGF0b3InO1xuaW1wb3J0IHsgZGVjaW1hbCB9IGZyb20gJy4uL21vZGVscy9jaHItdmFsaWRhdG9ycy9kZWNpbWFsLXZhbGlkYXRvcic7XG5pbXBvcnQgeyBtYXhEYXRlIH0gZnJvbSAnLi4vbW9kZWxzL2Noci12YWxpZGF0b3JzL21heC1kYXRlLXZhbGlkYXRvcic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyByZXF1aXJlZCB9IGZyb20gJy4uL21vZGVscy9jaHItdmFsaWRhdG9ycy9yZXF1aXJlZC12YWxpZGF0b3InO1xuaW1wb3J0IHsgQ2hyVGFnU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY2hyLXRhZy1zZWxlY3QvY2hyLXRhZy1zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7IHR5cGUgfSBmcm9tICcuLi9tb2RlbHMvY2hyLXZhbGlkYXRvcnMvdHlwZS12YWxpZGF0b3InO1xuaW1wb3J0IHsgRmlsZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9maWxlcy5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybUNvbnRyb2xDb2xsZWN0aW9uIHtcbiAgW2tleTogc3RyaW5nXTogRm9ybUNvbnRyb2w7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlYXJjaEZpbHRlciB7XG4gIGRpc3BsYXk6IHN0cmluZztcbiAgY2FsbGJhY2s/OiBGdW5jdGlvbjtcbiAgdG9vbHRpcD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29udHJvbFZhbGlkYXRpb24ge1xuICBydWxlOiBzdHJpbmc7XG4gIHZhbGlkYXRvcj86IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsO1xuICBrZXk/OiBzdHJpbmc7XG4gIHZhbHVlPzogYW55O1xuICBkaXNwbGF5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb250cm9sIHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgc3Bhbj86IHN0cmluZztcbiAgd2lkdGg/OiAnY29sJyB8ICdyb3cnO1xuICBjb2w/OiBudW1iZXI7XG4gIHJvdz86IG51bWJlcjtcbiAgdHlwZTpcbiAgICB8ICd0ZXh0J1xuICAgIHwgJ3Bhc3N3b3JkJ1xuICAgIHwgJ3RleHRBcmVhJ1xuICAgIHwgJ251bWJlcidcbiAgICB8ICdkYXRlJ1xuICAgIHwgJ2RhdGV0aW1lJ1xuICAgIHwgJ3NlYXJjaFNlbGVjdCdcbiAgICB8ICd0YWdTZWxlY3QnXG4gICAgfCAnY29sb3InXG4gICAgfCAndG9nZ2xlJ1xuICAgIHwgJ2ZpbGUnO1xuICBhY2NlcHQ/OiBzdHJpbmdbXTtcbiAgdmFsdWU/OiBhbnk7XG4gIGRhdGE/OiBhbnlbXSB8IG51bGw7XG4gIGljb24/OiBzdHJpbmc7XG4gIGljb25DYWxsYmFjaz86IEZ1bmN0aW9uO1xuICBpY29uQ2FsbGJhY2tEaXNhYmxlZD86IGJvb2xlYW47XG4gIGljb25Ub29sdGlwPzogc3RyaW5nO1xuICBmbj86IChvYmplY3Q6IGFueSkgPT4gc3RyaW5nO1xuICBmaWx0ZXJzPzogSVNlYXJjaEZpbHRlcltdO1xuICB2YWxpZGF0aW9ucz86IElDb250cm9sVmFsaWRhdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGb3JtU2VjdGlvbiB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBjb250cm9sczogSUNvbnRyb2xbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybUNvbnRyb2wge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2hyLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hyLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtcbiAgICAnLi9jaHItZm9ybS5jb21wb25lbnQuc2NzcycsXG4gICAgJy4uLy4uLy4uLy4uLy4uL3RhaWx3aW5kYnVpbGQuY3NzJyxcbiAgICAnLi9jaHItZm9ybS5jb21wb25lbnQuc2NzcycsXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBNYXRFcnJvcixcbiAgICBDaHJTZWFyY2hTZWxlY3RDb21wb25lbnQsXG4gICAgQ2hyVGFnU2VsZWN0Q29tcG9uZW50LFxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBEYXRlUGlwZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVHlwZVZhbGlkYXRvckRpcmVjdGl2ZSxcbiAgICBNYXRUYWJzTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBEYXRlUGlwZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBEQVRFX1BJUEVfREVGQVVMVF9PUFRJT05TLFxuICAgICAgdXNlVmFsdWU6IHsgZGF0ZUZvcm1hdDogJ3Nob3J0RGF0ZScgfSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG59KVxuZXhwb3J0IGNsYXNzIENockZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBzZWN0aW9ucz86IElGb3JtU2VjdGlvbltdO1xuICBASW5wdXQoKSBjb250cm9scz86IElDb250cm9sW107XG5cbiAgQElucHV0KCkgdmFsaWQ/OiBib29sZWFuO1xuICBAT3V0cHV0KCkgdmFsaWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBASW5wdXQoKSBtb2RlbDogYW55ID0gbnVsbDtcbiAgQE91dHB1dCgpIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgQE91dHB1dCgpIHZhbHVlc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQElucHV0KCkgc3VibWl0PzogRnVuY3Rpb247XG5cbiAgQElucHV0KCkgY29tcGFjdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBmb3JtQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SUZvcm1Db250cm9sPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxJRm9ybUNvbnRyb2w+KCk7XG5cbiAgQElucHV0KCkgdGFiRGlzcGxheTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vQElucHV0KCkgaW5jb21wbGVTdWJtaXNzaW9uQ2FsbGJhY2s6ICgoKSA9PiBhbnkgKXwgbnVsbCA9IG51bGw7XG5cbiAgZm9ybTogRm9ybUdyb3VwID0gdGhpcy5idWlsZGVyLmdyb3VwKHt9KTtcblxuICBwcml2YXRlIHZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICBwcml2YXRlIGNvbnRyb2xUeXBlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICBwcml2YXRlIGZsYXR0ZW5lZENvbnRyb2xzOiBJQ29udHJvbFtdID0gW107XG4gIHByaXZhdGUgX2Vycm9yczogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuICBwdWJsaWMgaW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGZpbGVTZXJ2aWNlOiBGaWxlU2VydmljZVxuICApIHtcbiAgICBpZiAodGhpcy5jb250cm9scyAhPSBudWxsICYmIHRoaXMuc2VjdGlvbnMgIT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJZb3UgY2FuJ3QgdXNlIGJvdGggY29udHJvbHMgYW5kIHNlY3Rpb25zIGluIHRoZSBzYW1lIGZvcm1cIlxuICAgICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZmxhdHRlbmVkQ29udHJvbHMgPVxuICAgICAgdGhpcy5zZWN0aW9uc1xuICAgICAgICA/Lm1hcCgocykgPT4gcy5jb250cm9scylcbiAgICAgICAgLmZsYXQoKVxuICAgICAgICAuY29uY2F0KHRoaXMuY29udHJvbHMgPz8gW10pIHx8IFtdO1xuICAgIHRoaXMuaW5pdE1vZGVsKCk7XG4gICAgdGhpcy5pbml0VmFsdWVzKCk7XG4gICAgdGhpcy5pbml0Q29udHJvbHMoKTtcbiAgICB0aGlzLmluaXRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlU2VhcmNoU2VsZWN0VmFsaWR0eSA9ICh2YWxpZDogYm9vbGVhbikgPT4ge1xuICAgIC8vdGhpcy52YWxpZCA9IHZhbGlkICYmIHRoaXMuZm9ybS52YWxpZDtcbiAgICAvL3RoaXMudmFsaWRDaGFuZ2UuZW1pdCh0aGlzLnZhbGlkKTtcbiAgfTtcblxuICBwcml2YXRlIGluaXRNb2RlbCA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5tb2RlbCA9PSBudWxsKSB0aGlzLm1vZGVsID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5mbGF0dGVuZWRDb250cm9scykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLm1vZGVsW2NvbnRyb2wubmFtZV0gPT09IG51bGwgfHxcbiAgICAgICAgdGhpcy5tb2RlbFtjb250cm9sLm5hbWVdID09PSB1bmRlZmluZWRcbiAgICAgIClcbiAgICAgICAgdGhpcy5tb2RlbFtjb250cm9sLm5hbWVdID0gY29udHJvbC52YWx1ZTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBpbml0VmFsdWVzID0gKCkgPT4ge1xuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiB0aGlzLmZsYXR0ZW5lZENvbnRyb2xzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMudmFsdWVzW2NvbnRyb2wubmFtZV0gPT09IG51bGwgfHxcbiAgICAgICAgdGhpcy52YWx1ZXNbY29udHJvbC5uYW1lXSA9PT0gdW5kZWZpbmVkXG4gICAgICApXG4gICAgICAgIHRoaXMudmFsdWVzW2NvbnRyb2wubmFtZV0gPSB0aGlzLnRvSW5wdXRWYWx1ZShcbiAgICAgICAgICBjb250cm9sLFxuICAgICAgICAgIHRoaXMubW9kZWxbY29udHJvbC5uYW1lXVxuICAgICAgICApO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIGluaXRDb250cm9scyA9ICgpID0+IHtcbiAgICBjb25zdCBmb3JtQ29udHJvbHMgPSB7fSBhcyBJRm9ybUNvbnRyb2xDb2xsZWN0aW9uO1xuICAgIGZvciAoY29uc3QgY29udHJvbCBvZiB0aGlzLmZsYXR0ZW5lZENvbnRyb2xzKSB7XG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5fZ2V0VmFsaWRhdG9ycyhjb250cm9sLnZhbGlkYXRpb25zKTtcbiAgICAgIGZvcm1Db250cm9sc1tjb250cm9sLm5hbWVdID0gbmV3IEZvcm1Db250cm9sKFxuICAgICAgICB0aGlzLnZhbHVlc1tjb250cm9sLm5hbWVdLFxuICAgICAgICB2YWxpZGF0b3JzXG4gICAgICApO1xuICAgICAgLy9pZiAoY29udHJvbC50eXBlID09ICdmaWxlJykgZm9ybUNvbnRyb2xzW2NvbnRyb2wubmFtZV0uZGlzYWJsZSgpO1xuICAgICAgdGhpcy5jb250cm9sVHlwZXNbY29udHJvbC5uYW1lXSA9IGNvbnRyb2wudHlwZTtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm0gPSB0aGlzLmJ1aWxkZXIuZ3JvdXAoZm9ybUNvbnRyb2xzKTtcbiAgICB0aGlzLnZhbGlkID0gdGhpcy5mb3JtLnZhbGlkO1xuICB9O1xuXG4gIHByaXZhdGUgaW5pdExpc3RlbmVycyA9ICgpID0+IHtcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWVzKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB2YWx1ZXMpIHtcbiAgICAgICAgaWYgKE9iamVjdC5oYXNPd24odGhpcy5tb2RlbCwga2V5KSAmJiB0aGlzLmNvbnRyb2xUeXBlc1trZXldICE9ICdmaWxlJylcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiVVBEQVRJTkcgXCIgKyBrZXksIHRoaXMubW9kZWxba2V5XSwgdmFsdWVzW2tleV0pO1xuICAgICAgICAgIHRoaXMubW9kZWxba2V5XSA9IHZhbHVlc1trZXldO1xuICAgICAgICBpZiAoT2JqZWN0Lmhhc093bih0aGlzLnZhbHVlcywga2V5KSkgdGhpcy52YWx1ZXNba2V5XSA9IHZhbHVlc1trZXldO1xuICAgICAgICAvLyBpZiAodmFsdWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgLy8gXHR0aGlzLm1vZGVsW2tleV0gPSB2YWx1ZXNba2V5XTtcbiAgICAgICAgLy8gXHR0aGlzLnZhbHVlc1trZXldID0gdmFsdWVzW2tleV07XG4gICAgICAgIC8vIH1cbiAgICAgIH1cbiAgICAgIHRoaXMudmFsaWQgPSB0aGlzLmZvcm0udmFsaWQ7XG4gICAgICB0aGlzLnZhbGlkQ2hhbmdlLmVtaXQodGhpcy52YWxpZCk7XG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb250cm9sID0gKG5hbWU6IHN0cmluZykgPT4ge1xuICAgIGlmIChuYW1lKSByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzW25hbWVdO1xuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGZvY3VzID0gKG5hbWU6IHN0cmluZykgPT4ge1xuICAgIC8vY29uc3QgY29udHJvbCA9IHRoaXMuY29udHJvbChuYW1lKTtcbiAgICBjb25zdCBlbCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBgaW5wdXRbbmFtZT1cIiR7bmFtZX1cIl1gXG4gICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHRoaXMuY29udHJvbChuYW1lKT8ubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZWwuZm9jdXMoKTtcbiAgICB9LCAxMCk7XG4gIH07XG5cbiAgdmFsdWUgPSAoaW5wdXQ/OiBzdHJpbmcpID0+IHRoaXMuZ2V0VmFsdWUoaW5wdXQpO1xuXG4gIGdldFZhbHVlID0gKGlucHV0Pzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGlucHV0KSByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzW2lucHV0XT8udmFsdWU7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS52YWx1ZTtcbiAgfTtcblxuICBpc1ZhbGlkID0gKGlucHV0Pzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGlucHV0KSByZXR1cm4gdGhpcy5mb3JtLmdldChpbnB1dCk/LnZhbGlkO1xuICAgIHJldHVybiB0aGlzLnZhbGlkO1xuICB9O1xuXG4gIGlzQ29udHJvbFJlcXVpcmVkID0gKGNvbnRyb2w6IElDb250cm9sKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRyb2wudmFsaWRhdGlvbnM/LmZpbmQoXG4gICAgICAodikgPT4gdi5ydWxlPy50b0xvd2VyQ2FzZSgpID09ICdyZXF1aXJlZCdcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHZhbHVlIG9mIGEgY29udHJvbCBXSVRIT1VUIHRyaWdnZXJpbmcgdGhlIG1vZGVsQ2hhbmdlIGV2ZW50XG4gICAqIEBwYXJhbSBrZXkgaW5wdXQga2V5IChjb250cm9sIG5hbWUpXG4gICAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSB0byBzZXRcbiAgICogQHBhcmFtIGRhdGVGb3JtYXQgb3B0aW9uYWwgZGF0ZSBmb3JtYXQgZm9yIGRhdGUgYW5kIGRhdGV0aW1lIGlucHV0c1xuICAgKi9cbiAgc2V0VmFsdWUgPSAoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIGRhdGVGb3JtYXQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PiB7XG4gICAgY29uc3QgdmFsID0gdGhpcy50eXBlVG9JbnB1dFZhbHVlKHRoaXMuY29udHJvbFR5cGVzW2tleV0sIHZhbHVlKTtcbiAgICB0aGlzLmZvcm0uZ2V0KGtleSk/LnNldFZhbHVlKHZhbCwge1xuICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgIGVtaXRWaWV3VG9Nb2RlbENoYW5nZTogZmFsc2UsXG4gICAgfSk7XG4gICAgdGhpcy5tb2RlbFtrZXldID0gdmFsO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHZhbHVlIG9mIHRoZSBmb3JtJ3MgbW9kZWwgV0lUSE9VVCB0cmlnZ2VyaW5nIHRoZSBtb2RlbENoYW5nZSBldmVudFxuICAgKiBAcGFyYW0gbW9kZWwgdGhlIG1vZGVsIHRvIHNldFxuICAgKiBAcGFyYW0gZGF0ZUZvcm1hdCBvcHRpb25hbCBkYXRlIGZvcm1hdCBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUgaW5wdXRzXG4gICAqL1xuICBzZXQgPSAobW9kZWw6IGFueSwgZGF0ZUZvcm1hdDogc3RyaW5nIHwgbnVsbCA9IG51bGwpID0+IHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhtb2RlbCkpIHtcbiAgICAgIHRoaXMuc2V0VmFsdWUoa2V5LCBtb2RlbFtrZXldLCBkYXRlRm9ybWF0KTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHZhbHVlIG9mIGEgY29udHJvbC4gVGhpcyBXSUxMIHRyaWdnZXIgdGhlIG1vZGVsQ2hhbmdlIGV2ZW50XG4gICAqIEBwYXJhbSBrZXkgaW5wdXQga2V5IChjb250cm9sIG5hbWUpXG4gICAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSB0byBzZXRcbiAgICogQHBhcmFtIGRhdGVGb3JtYXQgb3B0aW9uYWwgZGF0ZSBmb3JtYXQgZm9yIGRhdGUgYW5kIGRhdGV0aW1lIGlucHV0c1xuICAgKi9cbiAgcGF0Y2hWYWx1ZSA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgZGF0ZUZvcm1hdDogc3RyaW5nIHwgbnVsbCA9IG51bGwpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgW1BhdGNoaW5nXTogPFJhdz5gLCB2YWx1ZSk7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuY29udHJvbFR5cGVzW2tleV07XG4gICAgY29uc3QgdmFsID0gdGhpcy50eXBlVG9JbnB1dFZhbHVlKGtleSwgdmFsdWUpO1xuICAgIGNvbnNvbGUubG9nKGBbUGF0Y2hpbmddOiA8JHt0eXBlfT5gLCB2YWwpO1xuICAgIGlmICh0eXBlID09ICdmaWxlJykge1xuICAgICAgdGhpcy5zZXRWYWx1ZSQoa2V5LCB2YWw/Lm5hbWUpO1xuICAgICAgdGhpcy5zZXRNb2RlbCQoa2V5LCB2YWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFZhbHVlJChrZXksIHZhbCk7XG4gICAgICB0aGlzLnNldE1vZGVsJChrZXksIHZhbCk7XG4gICAgfVxuICAgIHRoaXMuZm9ybS5nZXQoa2V5KT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLm1vZGVsKTtcbiAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcbiAgfTtcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgdmFsdWUgb2YgdGhlIGZvcm0ncyBtb2RlbC4gVGhpcyBXSUxMIHRyaWdnZXIgdGhlIG1vZGVsQ2hhbmdlIGV2ZW50IG9uY2UgZm9yIGVhY2ggaW5wdXRcbiAgICogQHBhcmFtIG1vZGVsIG1vZGVsIHRvIHNldFxuICAgKiBAcGFyYW0gZGF0ZUZvcm1hdCBvcHRpb25hbCBkYXRlIGZvcm1hdCBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUgaW5wdXRzXG4gICAqL1xuICBwYXRjaCA9IChtb2RlbDogYW55LCBkYXRlRm9ybWF0OiBzdHJpbmcgfCBudWxsID0gbnVsbCkgPT4ge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1vZGVsKSkge1xuICAgICAgY29uc29sZS5sb2coYFtQYXRjaGluZ106IHske2tleX19YCk7XG4gICAgICB0aGlzLnBhdGNoVmFsdWUoa2V5LCBtb2RlbFtrZXldLCBkYXRlRm9ybWF0KTtcbiAgICB9XG4gIH07XG5cbiAgY2hlY2tWYWxpZGl0eSA9ICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5mbGF0dGVuZWRDb250cm9scykge1xuICAgICAgdGhpcy5mb3JtLmdldChjb250cm9sLm5hbWUpPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuICAgIHRoaXMudmFsaWQgPSB0aGlzLmZvcm0udmFsaWQ7XG4gICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XG4gIH07XG5cbiAgdXBkYXRlVmFsdWVBbmRWYWxpZGl0eSA9ICh0b3VjaGVkOiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICB0aGlzLmZvcm0ubWFya0FzRGlydHkoKTtcbiAgICBpZiAodG91Y2hlZCkgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICB0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgfTtcblxuICByZXNldCA9ICgpID0+IHtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgZ2V0ID0gKGNvbnRyb2w6IElDb250cm9sKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pO1xuICB9O1xuXG4gIHByb3RlY3RlZCBoYXNFcnJvciA9IChjb250cm9sOiBJQ29udHJvbCwgdmFsaWRhdGlvbjogSUNvbnRyb2xWYWxpZGF0aW9uKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5oYXNFcnJvcih2YWxpZGF0aW9uLnJ1bGUsIGNvbnRyb2wubmFtZSk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGdldFRvQWNjZXB0ID0gKGNvbnRyb2w6IElDb250cm9sKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRyb2wuYWNjZXB0Py5tYXAoKHMpID0+IHMudG9Mb2NhbGVVcHBlckNhc2UoKSkuam9pbignLCAnKTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgc2hvdWxkU2hvd0Vycm9yID0gKFxuICAgIGNvbnRyb2w6IElDb250cm9sLFxuICAgIHZhbGlkYXRpb246IElDb250cm9sVmFsaWRhdGlvblxuICApID0+IHtcbiAgICBjb25zdCBjdHJsID0gdGhpcy5mb3JtLmdldChjb250cm9sLm5hbWUpO1xuICAgIGlmIChjdHJsICYmIGN0cmwuZXJyb3JzKSB7XG4gICAgICBjb25zdCBmaXJzdCA9IE9iamVjdC5rZXlzKGN0cmwuZXJyb3JzKVswXTtcbiAgICAgIHJldHVybiBmaXJzdCA9PT0gdmFsaWRhdGlvbi5ydWxlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGZpbGVDaGFuZ2UgPSAoZXZlbnQ6IEV2ZW50LCBjb250cm9sOiBJQ29udHJvbCkgPT4ge1xuICAgIGNvbnN0IGN0cmwgPSB0aGlzLmZvcm0uZ2V0KGNvbnRyb2wubmFtZSk7XG4gICAgY3RybD8ubWFya0FzRGlydHkoKTtcbiAgICBjdHJsPy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgY29uc3QgZmlsZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXM/LlswXTtcbiAgICBpZiAoZmlsZSA9PT0gbnVsbCB8fCBmaWxlID09PSB1bmRlZmluZWQpXG4gICAgICByZXR1cm4gdGhpcy5wYXRjaFZhbHVlKGNvbnRyb2wubmFtZSwgJycpO1xuICAgIHRoaXMuZmlsZVNlcnZpY2UuZmlsZVRvQmFzZTY0KGZpbGUhKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgdGhpcy5tb2RlbFtjb250cm9sLm5hbWVdID0gcmVzO1xuICAgICAgdGhpcy52YWx1ZXNbY29udHJvbC5uYW1lXSA9IHJlcy5uYW1lO1xuICAgICAgY3RybD8ucGF0Y2hWYWx1ZShyZXMubmFtZSwge1xuICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgICBlbWl0Vmlld1RvTW9kZWxDaGFuZ2U6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnZhbHVlc0NoYW5nZS5lbWl0KHRoaXMudmFsdWVzKTtcbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh0aGlzLm1vZGVsKTtcbiAgICB9KTtcbiAgfTtcblxuICBwcml2YXRlIHNldFZhbHVlJCA9IChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuICAgIHRoaXMuZm9ybS5nZXQoa2V5KT8ucGF0Y2hWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy52YWx1ZXNba2V5XSA9IHZhbHVlO1xuICB9O1xuXG4gIHByaXZhdGUgc2V0TW9kZWwkID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG4gICAgdGhpcy5tb2RlbFtrZXldID0gdmFsdWU7XG4gIH07XG5cbiAgcHJpdmF0ZSB0b0lucHV0VmFsdWUgPSAoY29udHJvbDogSUNvbnRyb2wsIHZhbHVlOiBhbnkgfCBudWxsID0gbnVsbCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnR5cGVUb0lucHV0VmFsdWUoY29udHJvbC50eXBlLCB2YWx1ZSwgY29udHJvbC52YWx1ZSk7XG4gIH07XG5cbiAgcHJpdmF0ZSB0eXBlVG9JbnB1dFZhbHVlID0gKFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICB2YWx1ZTogYW55IHwgbnVsbCA9IG51bGwsXG4gICAgZGVmYXVsdFZhbHVlOiBhbnkgfCBudWxsID0gbnVsbFxuICApID0+IHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSB8fCBudWxsO1xuICAgIH1cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1EYXRlKHZhbHVlID8/IGRlZmF1bHRWYWx1ZSwgJ3l5eXktTU0tZGQnKTtcbiAgICAgIGNhc2UgJ2RhdGV0aW1lJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtRGF0ZSh2YWx1ZSA/PyBkZWZhdWx0VmFsdWUsICd5eXl5LU1NLWRkVEhIOm1tJyk7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICBjb25zdCBudW1iZXIgPSBOdW1iZXIodmFsdWUpO1xuICAgICAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG51bWJlcikgPyAwIDogbnVtYmVyO1xuICAgICAgY2FzZSAnc2VhcmNoU2VsZWN0JzpcbiAgICAgICAgcmV0dXJuIHZhbHVlITtcbiAgICAgIGNhc2UgJ3RhZ1NlbGVjdCc6XG4gICAgICAgIHJldHVybiB2YWx1ZSE7XG4gICAgICBjYXNlICd0b2dnbGUnOlxuICAgICAgICBpZiAodmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gdHJ1ZSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHZhbHVlISB8fCBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgdHJhbnNmb3JtRGF0ZSA9ICh2YWx1ZTogYW55LCBmb3JtYXQ6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcbiAgfTtcblxuICBwdWJsaWMgcmVzaXplID0gKHRleHRBcmVhOiBIVE1MVGV4dEFyZWFFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbEhlaWdodCA9IHRleHRBcmVhLnN0eWxlLmhlaWdodDtcbiAgICB0ZXh0QXJlYS5zdHlsZS5oZWlnaHQgPSBpbml0aWFsSGVpZ2h0O1xuICAgIHRleHRBcmVhLnN0eWxlLmhlaWdodCA9ICcnICsgdGV4dEFyZWEuc2Nyb2xsSGVpZ2h0ICsgJ3B4JztcbiAgfTtcblxuICBwdWJsaWMgZG9TdWJtaXQgPSAoKSA9PiB7XG4gICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICBpZiAodGhpcy52YWxpZCAmJiB0aGlzLmZvcm0udmFsaWQpIHRoaXMuc3VibWl0Py4odGhpcy5mb3JtLnZhbHVlKTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgbG9nID0gKGVsOiBhbnkpID0+IHtcbiAgICBjb25zb2xlLmxvZyhlbCk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGFjY2VwdFRvU3RyaW5nID0gKGNvbnRyb2w6IElDb250cm9sKSA9PiB7XG4gICAgcmV0dXJuIGNvbnRyb2wuYWNjZXB0Py5tYXAoKHR5cGUpID0+IGAuJHt0eXBlfWApLmpvaW4oJywgJykgfHwgJy4qJztcbiAgfTtcblxuICBwcml2YXRlIGRldGVjdENoYW5nZXMgPSAoKSA9PiB7XG4gICAgdGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfZ2V0VmFsaWRhdG9ycyA9ICh2YWxpZGF0aW9ucz86IElDb250cm9sVmFsaWRhdGlvbltdKSA9PiB7XG4gICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xuICAgIGlmICghdmFsaWRhdGlvbnMpIHJldHVybiB2YWxpZGF0b3JzO1xuICAgIC8vU3dpdGNoIGNhc2UgYnJlYWtzIHRoZSBtb2JpbGUgYXBwIHNvIHdlJ2xsIGRvIGlmIHN0YXRlbWVudHNcbiAgICBmb3IgKGNvbnN0IHZhbGlkYXRpb24gb2YgdmFsaWRhdGlvbnMpIHtcbiAgICAgIGlmICh2YWxpZGF0aW9uLnZhbGlkYXRvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaCh2YWxpZGF0aW9uLnZhbGlkYXRvcik7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgcnVsZSA9IHZhbGlkYXRpb24ucnVsZT8udG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgIGlmIChydWxlID09ICdtaW4nKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9ICdDZXR0ZSB2YWxldXIgZXN0IHRyb3AgcGV0aXRlICEnO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW4odmFsaWRhdGlvbi52YWx1ZSkpO1xuICAgICAgfVxuICAgICAgaWYgKHJ1bGUgPT0gJ21heCcpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gJ0NldHRlIHZhbGV1ciBlc3QgdHJvcCBncmFuZGUgISc7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heCh2YWxpZGF0aW9uLnZhbHVlKSk7XG4gICAgICB9XG4gICAgICBpZiAocnVsZSA9PSAncmVxdWlyZWQnKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9ICdDZSBjaGFtcHMgZXN0IHJlcXVpcyAhJztcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKHJlcXVpcmVkKCkpO1xuICAgICAgfVxuICAgICAgaWYgKHJ1bGUgPT0gJ2VtYWlsJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSBcIkNldHRlIGFkcmVzc2UgZW1haWwgbidlc3QgcGFzIHZhbGlkZSAhXCI7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLmVtYWlsKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdtaW5sZW5ndGgnKSB7XG4gICAgICAgIHZhbGlkYXRpb24uZGlzcGxheSA9ICdDZXR0ZSB2YWxldXIgZXN0IHRyb3AgcGV0aXRlICEnO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodmFsaWRhdGlvbi52YWx1ZSkpO1xuICAgICAgfVxuICAgICAgaWYgKHJ1bGUgPT0gJ21heGxlbmd0aCcpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gJ0NldHRlIHZhbGV1ciBlc3QgdHJvcCBncmFuZGUgISc7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh2YWxpZGF0aW9uLnZhbHVlKSk7XG4gICAgICB9XG4gICAgICBpZiAocnVsZSA9PSAndHlwZScpIHtcbiAgICAgICAgdmFsaWRhdGlvbi5kaXNwbGF5ID0gXCJDZXR0ZSB2YWxldXIgbidlc3QgcGFzIHZhbGlkZSAhXCI7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaCh0eXBlKHZhbGlkYXRpb24udmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdkZWNpbWFsJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSBgTGUgbm9tYnJlIGRlIGTDqWNpbWFsIG4nZXN0IHBhcyB2YWxpZGUgKG1heDogJHt2YWxpZGF0aW9uLnZhbHVlfSkgIWA7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChkZWNpbWFsKHZhbGlkYXRpb24udmFsdWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChydWxlID09ICdtYXhkYXRlJykge1xuICAgICAgICB2YWxpZGF0aW9uLmRpc3BsYXkgPSBgQ2V0dGUgZGF0ZSBlc3QgdHJvcCBncmFuZGUgISAobWF4OiAke3ZhbGlkYXRpb24udmFsdWV9KSAhYDtcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKG1heERhdGUodmFsaWRhdGlvbi52YWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIG1pbi1oLTUvNiBtdC0yXCI+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiICpuZ0lmPVwiaW5pdGlhbGl6ZWRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRhYkRpc3BsYXkgfHwgIXNlY3Rpb25zXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2luZ2xlVGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntjb250cm9sczogY29udHJvbHN9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJEaXNwbGF5ICYmIHNlY3Rpb25zXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VjdGlvblRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7c2VjdGlvbnM6IHNlY3Rpb25zfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJEaXNwbGF5ICYmIHNlY3Rpb25zXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFic1RlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7c2VjdHM6IHNlY3Rpb25zfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Zvcm0+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0YWJzVGVtcGxhdGUgbGV0LXNlY3Rpb25zPSdzZWN0cyc+XG4gIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICA8bWF0LXRhYi1ncm91cD5cbiAgICAgIEBmb3IgKHNlY3Rpb24gb2Ygc2VjdGlvbnM7IHRyYWNrIHNlY3Rpb247IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgPG1hdC10YWIgW2xhYmVsXT1cInNlY3Rpb24udGl0bGUgfHwgJ8OJdGFwZSAnICsgKGluZGV4ICsgMSlcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImluaXRpYWxpemVkXCIgY2xhc3M9XCJtdC00XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJjb21wYWN0ID8gJ2dyaWQgZ2FwLXktMiBnYXAteC02IHNtOmdyaWQtY29scy00JzonZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTInXCI+XG4gICAgICAgICAgQGZvciAoY3RybCBvZiBzZWN0aW9uLmNvbnRyb2xzOyB0cmFjayBpbmRleDsgbGV0IGluZGV4ID0gJGluZGV4OyBsZXRcbiAgICAgICAgICBsYXN0ID1cbiAgICAgICAgICAkbGFzdClcbiAgICAgICAgICB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVGVtcGxhdGVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntjb250cm9sOiBjdHJsLCBpbmRleDogaW5kZXgsIGxhc3Q6ICRsYXN0fVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgICB9XG4gICAgPC9tYXQtdGFiLWdyb3VwPlxuICA8L2ZpZWxkc2V0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaW5nbGVUZW1wbGF0ZSBsZXQtY29udHJvbHM9XCJjb250cm9sc1wiPlxuICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPGRpdiAqbmdJZj1cImluaXRpYWxpemVkXCJcbiAgICAgIFtuZ0NsYXNzXT1cImNvbXBhY3QgPyAnZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTQnOidncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtMidcIj5cbiAgICAgIEBmb3IgKGNvbnRyb2wgb2YgY29udHJvbHM7IHRyYWNrIGNvbnRyb2w7IGxldCBpbmRleCA9ICRpbmRleDsgbGV0IGxhc3QgPSAkbGFzdCkge1xuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250cm9sVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2NvbnRyb2w6IGNvbnRyb2wsIGluZGV4OiBpbmRleCwgbGFzdDogbGFzdH1cIj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gIDwvZmllbGRzZXQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlY3Rpb25UZW1wbGF0ZSBsZXQtc2VjdGlvbnM9J3NlY3Rpb25zJz5cbiAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIEBmb3IgKHNlY3Rpb24gb2Ygc2VjdGlvbnM7IHRyYWNrIHNlY3Rpb247IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgIDxkaXY+XG4gICAgICBAaWYgKHNlY3Rpb24udGl0bGUpIHtcbiAgICAgIDxoMiBjbGFzcz1cIm1iLTIgZm9udC1ib2xkIHRleHQteGwgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGVcIj5cbiAgICAgICAge3sgc2VjdGlvbi50aXRsZSB9fVxuICAgICAgPC9oMj5cbiAgICAgIH1cbiAgICAgIDxkaXYgKm5nSWY9XCJpbml0aWFsaXplZFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImNvbXBhY3QgPyAnZ3JpZCBnYXAteS0yIGdhcC14LTYgc206Z3JpZC1jb2xzLTQnOidncmlkIGdhcC15LTIgZ2FwLXgtNiBzbTpncmlkLWNvbHMtMidcIj5cbiAgICAgICAgQGZvciAoY29udHJvbCBvZiBzZWN0aW9uLmNvbnRyb2xzOyB0cmFjayBpbmRleDsgbGV0IGluZGV4ID0gJGluZGV4OyBsZXRcbiAgICAgICAgbGFzdCA9XG4gICAgICAgICRsYXN0KVxuICAgICAgICB7XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udHJvbFRlbXBsYXRlXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2NvbnRyb2w6IGNvbnRyb2wsIGluZGV4OiBpbmRleCwgbGFzdDogJGxhc3R9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIEBpZiAoaW5kZXggIT0gKHNlY3Rpb25zfHxbXSkubGVuZ3RoIC0gMSAmJiAhY29tcGFjdCkge1xuICAgICAgPGRpdiBjbGFzcz1cInB5LTRcIj5cbiAgICAgICAgPGhyIGNsYXNzPVwiXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIH1cbiAgPC9maWVsZHNldD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29udHJvbFRlbXBsYXRlIGxldC1jb250cm9sPSdjb250cm9sJyBsZXQtbGFzdD0nbGFzdCcgbGV0LWluZGV4PSdpbmRleCc+XG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBoLW1pbiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgW25nQ2xhc3NdPVwie1xuICAgICdzbTpjb2wtc3Bhbi0yJzogKGNvbnRyb2wud2lkdGggPT0gJ3JvdycgJiYgIWNvbXBhY3QpIHx8IGNvbnRyb2wudHlwZT09J3RleHRBcmVhJyAmJiBjb21wYWN0ICYmIGNvbnRyb2wud2lkdGggIT0gJ3JvdycsXG4gICAgJ3NtOmNvbC1zcGFuLTQnOiBjb250cm9sLndpZHRoID09J3JvdycgJiYgY29tcGFjdCxcbiAgICB9XCI+XG4gICAgQGlmIChjb250cm9sLnR5cGU9PSdzZWFyY2hTZWxlY3QnKSB7XG4gICAgPGRpdiBhcHAtY2hyLXNlYXJjaC1zZWxlY3QgY2xhc3M9XCJyZWxhdGl2ZSBpbnB1dCB6LTAgdy1mdWxsXCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIlxuICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgIFtkYXRhXT1cImNvbnRyb2wuZGF0YSB8fCBbXVwiIFtkaXNwbGF5XT1cImNvbnRyb2wuZm4hXCIgW25hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCJcbiAgICAgIFtmaWx0ZXJzXT1cImNvbnRyb2wuZmlsdGVyc1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIGFic29sdXRlIHRleHQtc20gdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIj57e1xuICAgICAgICBjb250cm9sLmxhYmVsXG4gICAgICAgIH19XG4gICAgICAgIEBpZiAoaXNDb250cm9sUmVxdWlyZWQoY29udHJvbCkpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXJlZC01MDBcIj4qPC9zcGFuPlxuICAgICAgICB9XG4gICAgICAgIDpcbiAgICAgICAgQGZvciAodmFsaWRhdGlvbiBvZiBjb250cm9sLnZhbGlkYXRpb25zOyB0cmFjayB2YWxpZGF0aW9uKSB7XG4gICAgICAgIEBpZiAoXG4gICAgICAgIGdldChjb250cm9sKT8udG91Y2hlZCAmJlxuICAgICAgICBoYXNFcnJvcihjb250cm9sLCB2YWxpZGF0aW9uKSAmJiBzaG91bGRTaG93RXJyb3IoY29udHJvbCwgdmFsaWRhdGlvbikpIHtcbiAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cInRleHQtcmVkLTUwMCBkYXJrOnRleHQtcmVkLTgwMFwiPnt7IHZhbGlkYXRpb24uZGlzcGxheSB9fTwvbWF0LWVycm9yPlxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoY29udHJvbC50eXBlPT0ndGFnU2VsZWN0Jykge1xuICAgIDxkaXYgYXBwLWNoci10YWctc2VsZWN0IGNsYXNzPVwicmVsYXRpdmUgaW5wdXQgei0wIHctZnVsbFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCJcbiAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICBbZGF0YV09XCJjb250cm9sLmRhdGEgfHwgW11cIiBbZGlzcGxheV09XCJjb250cm9sLmZuIVwiIFtuYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICBbZmlsdGVyc109XCJjb250cm9sLmZpbHRlcnNcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBhYnNvbHV0ZSB0ZXh0LXNtIHRleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwXCI+e3tcbiAgICAgICAgY29udHJvbC5sYWJlbFxuICAgICAgICB9fVxuICAgICAgICBAaWYgKGlzQ29udHJvbFJlcXVpcmVkKGNvbnRyb2wpKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgICA6XG4gICAgICAgIEBmb3IgKHZhbGlkYXRpb24gb2YgY29udHJvbC52YWxpZGF0aW9uczsgdHJhY2sgdmFsaWRhdGlvbikge1xuICAgICAgICBAaWYgKFxuICAgICAgICBnZXQoY29udHJvbCk/LnRvdWNoZWQgJiZcbiAgICAgICAgaGFzRXJyb3IoY29udHJvbCwgdmFsaWRhdGlvbikgJiYgc2hvdWxkU2hvd0Vycm9yKGNvbnRyb2wsIHZhbGlkYXRpb24pKSB7XG4gICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZGFyazp0ZXh0LXJlZC04MDBcIj57eyB2YWxpZGF0aW9uLmRpc3BsYXkgfX08L21hdC1lcnJvcj5cbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIH1cbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgei0wIHctZnVsbCBncm91cC9pbnB1dHMgY29udGVudFwiPlxuICAgICAgPCEtLSBIZXJlIHdlIHdpbGwgKm5nSWYgZWFjaCB0eXBlIG9mIGlucHV0IGNhdXNlIGl0J3MgdGhlIGNsZWFuZXN0IHdheSBJIGNhbiBpbWFnaW5lLS0+XG4gICAgICA8IS0tVEVYVC0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ3RleHQnKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCIgaWQ9XCJ7eyBjb250cm9sLm5hbWUgfX1fe3sgaW5kZXggfX1cIiBuYW1lPVwie3sgY29udHJvbC5uYW1lIH19XCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sLm5hbWVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIiBcIiBbdmFsdWVdPVwibW9kZWw/Lltjb250cm9sLm5hbWVdIHx8IGNvbnRyb2wudmFsdWUgfHwgJydcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgaW5wdXQgcHktMi41IHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgPCEtLVBBU1NXT1JELS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAncGFzc3dvcmQnKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJwYXNzd29yZFwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCIgXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIuNSBweC0wIHctZnVsbCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIDwhLS1URVhUIEFSRUEtLT5cbiAgICAgIEBpZiAoY29udHJvbC50eXBlID09ICd0ZXh0QXJlYScpIHtcbiAgICAgIDx0ZXh0YXJlYSAjdGV4dEFyZWEgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCJcbiAgICAgICAgKGlucHV0KT1cInJlc2l6ZSh0ZXh0QXJlYSlcIiAoa2V5dXAuZW50ZXIpPVwibGFzdCA/IGRvU3VibWl0KCkgOiAnJ1wiXG4gICAgICAgIGNsYXNzPVwibm8tc2Nyb2xsYmFyIGlucHV0ICFyZXNpemUtbm9uZSBoZWlnaHQtbm9ybWFsaXplZCBibG9jayBweS0yIHB4LTAgdy1mdWxsIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIj48L3RleHRhcmVhPlxuICAgICAgfVxuICAgICAgPCEtLU5VTUJFUi0tPlxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ251bWJlcicpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cIm51bWJlclwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTIuNSBweC0wIHctZnVsbCB0ZXh0LXNtIHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIGJvcmRlci1iLTIgYXBwZWFyYW5jZS1ub25lIGRhcms6Ym9yZGVyLWdyYXktNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWNocmxibHVlIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTAgZm9jdXM6Ym9yZGVyLWNocmRibHVlIHBlZXIvaW5wdXRzXCIgLz5cbiAgICAgIH1cbiAgICAgIDwhLS1EQVRFLS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnZGF0ZScpIHtcbiAgICAgIDxpbnB1dCBjbGFzcz1cInJlbGF0aXZlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8udG91Y2hlZCAmJiBmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LmVycm9ycykgPyAnZXJyb3InOidib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS02MDAnXCJcbiAgICAgICAgdHlwZT1cImRhdGVcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIiBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiIFwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yIHB4LTAgdy1mdWxsIGhlaWdodC1ub3JtYWxpemVkIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ2RhdGV0aW1lJykge1xuICAgICAgPGlucHV0IGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbbmdDbGFzc109XCIoZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy50b3VjaGVkICYmIGZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzKSA/ICdlcnJvcic6J2JvcmRlci1ncmF5LTMwMCBkYXJrOmJvcmRlci1ncmF5LTYwMCdcIlxuICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiBpZD1cInt7IGNvbnRyb2wubmFtZSB9fV97eyBpbmRleCB9fVwiIG5hbWU9XCJ7eyBjb250cm9sLm5hbWUgfX1cIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRyb2wubmFtZVwiIHBsYWNlaG9sZGVyPVwiIFwiIChrZXl1cC5lbnRlcik9XCJsYXN0ID8gZG9TdWJtaXQoKSA6ICcnXCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBweS0yIHB4LTAgdy1mdWxsIGhlaWdodC1ub3JtYWxpemVkIHRleHQtc20gdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBhcHBlYXJhbmNlLW5vbmUgZGFyazpib3JkZXItZ3JheS02MDAgZGFyazpmb2N1czpib3JkZXItY2hybGJsdWUgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMCBmb2N1czpib3JkZXItY2hyZGJsdWUgcGVlci9pbnB1dHNcIiAvPlxuICAgICAgfVxuICAgICAgPCEtLUNPTE9SLS0+XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAnY29sb3InKSB7XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIHR5cGU9XCJjb2xvclwiIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCIgXCIgKGtleXVwLmVudGVyKT1cImxhc3QgPyBkb1N1Ym1pdCgpIDogJydcIiBzdHlsZT1cImhlaWdodDogNDJweDtcIlxuICAgICAgICBjbGFzcz1cImJsb2NrIGlucHV0IHB5LTEuNSBtLTAgcHgtMCB3LWZ1bGwgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSA9PSAndG9nZ2xlJyl7XG4gICAgICA8aW5wdXQgI3RvZ2dsZSB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImhpZGRlbiBjaGVja2JveFwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCIgLz5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSB0b2dnbGUtd3JhcHBlciBibG9jayBpbnB1dCBiZy10cmFuc3BhcmVudCBib3JkZXItMCBib3JkZXItYi0yIGJvcmRlci1ncmF5LTMwMCBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0c1wiPlxuICAgICAgICA8ZGl2IChjbGljayk9XCJ0b2dnbGU/LmNsaWNrKClcIiBjbGFzcz1cInJlbGF0aXZlIGJsb2NrIGlucHV0IHRvZ2dsZVwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmIChjb250cm9sLnR5cGUgPT0gJ2ZpbGUnKXtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSB0b3AtMiByaWdodC0wIGZsZXggZmxleC1yb3cganVzdGlmeS1jZW50ZXIgY29udGVudC1jZW50ZXIgaXRlbXMtY2VudGVyIGFsaWduLW1pZGRsZSBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1mdWxsIFwiIChjbGljayk9XCJmaW5wdXQuY2xpY2soKVwiPmFkZDwvbWF0LWljb24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXItZ3JheS0zMDAgZGFyazpib3JkZXItZ3JheS00MDAgYm9yZGVyLWwtMiBib3JkZXItYi0wIGJvcmRlci10LTAgXG4gICAgYm9yZGVyLXItMCB3LWZpdCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC1ncmF5LTQwMCBweC0xIHRleHQtY2VudGVyIG9wYWNpdHktMTAwIGJnLXNsYXRlLTEwMCBkYXJrOmJnLXNsYXRlLTcwMCBiZy1vcGFjaXR5LTUwIGZsZXgganVzdGlmeS1jZW50ZXIgXG4gICAgYWxpZ24tbWlkZGxlIGl0ZW1zLWNlbnRlclwiPnt7Z2V0VG9BY2NlcHQoY29udHJvbCl9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiIHR5cGU9XCJmaWxlXCIgY2xhc3M9XCJoaWRkZW5cIiAjZmlucHV0IFthY2NlcHRdPVwiYWNjZXB0VG9TdHJpbmcoY29udHJvbClcIlxuICAgICAgICAoY2hhbmdlKT1cImZpbGVDaGFuZ2UoJGV2ZW50LCBjb250cm9sKVwiIC8+XG4gICAgICA8aW5wdXQgY2xhc3M9XCJyZWxhdGl2ZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgJiYgZm9ybS5nZXQoW2NvbnRyb2wubmFtZV0pPy5lcnJvcnMpID8gJ2Vycm9yJzonYm9yZGVyLWdyYXktMzAwIGRhcms6Ym9yZGVyLWdyYXktNjAwJ1wiXG4gICAgICAgIGlkPVwie3sgY29udHJvbC5uYW1lIH19X3t7IGluZGV4IH19XCIgbmFtZT1cInt7IGNvbnRyb2wubmFtZSB9fVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbC5uYW1lXCIgcGxhY2Vob2xkZXI9XCIgXCJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDQycHg7XCJcbiAgICAgICAgY2xhc3M9XCJibG9jayBpbnB1dCBwb2ludGVyLWV2ZW50cy1ub25lIHB5LTEuNSBtLTAgcHgtMCB3LWZ1bGwgYmctdHJhbnNwYXJlbnQgYm9yZGVyLTAgYm9yZGVyLWItMiBkYXJrOmZvY3VzOmJvcmRlci1jaHJsYmx1ZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0wIGZvY3VzOmJvcmRlci1jaHJkYmx1ZSBwZWVyL2lucHV0cyBmaWxlOmhpZGRlblwiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wudHlwZSAhPSAnc2VhcmNoU2VsZWN0JyAmJiBjb250cm9sLnR5cGUgIT0gJ3RhZ1NlbGVjdCcpIHtcbiAgICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsIGFic29sdXRlIHRleHQtc20gdGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDBcIj57e1xuICAgICAgICBjb250cm9sLmxhYmVsXG4gICAgICAgIH19XG4gICAgICAgIEBpZihjb250cm9sLmxhYmVsICYmIGNvbnRyb2wubGFiZWwgIT0gJycgJiYgY29udHJvbC5sYWJlbCAhPSAnICcpe1xuICAgICAgICBAaWYgKGlzQ29udHJvbFJlcXVpcmVkKGNvbnRyb2wpKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgICA6XG4gICAgICAgIH1cbiAgICAgICAgQGZvciAodmFsaWRhdGlvbiBvZiBjb250cm9sLnZhbGlkYXRpb25zOyB0cmFjayB2YWxpZGF0aW9uKSB7XG4gICAgICAgIEBpZiAoXG4gICAgICAgIGdldChjb250cm9sKT8udG91Y2hlZCAmJlxuICAgICAgICBoYXNFcnJvcihjb250cm9sLCB2YWxpZGF0aW9uKSAmJiBzaG91bGRTaG93RXJyb3IoY29udHJvbCwgdmFsaWRhdGlvbikpIHtcbiAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cInRleHQtcmVkLTUwMCBkYXJrOnRleHQtcmVkLTgwMFwiPnt7IHZhbGlkYXRpb24uZGlzcGxheSB9fTwvbWF0LWVycm9yPlxuICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvbGFiZWw+XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRyb2wuaWNvbiAmJiAhZGlzYWJsZWQpIHtcbiAgICAgIDxzcGFuXG4gICAgICAgIFtuZ0NsYXNzXT1cImNvbnRyb2wuaWNvbkNhbGxiYWNrRGlzYWJsZWQgPyAndGV4dC1ncmF5LTQwMCBkYXJrOnRleHQtZ3JheS01MDAnOid0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSdcIlxuICAgICAgICBjbGFzcz1cImFic29sdXRlIHAtMi41IGJvdHRvbS0wIHJpZ2h0LTBcIiBbbWF0VG9vbHRpcF09XCJjb250cm9sLmljb25Ub29sdGlwIHx8ICcnXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxuICAgICAgICAoY2xpY2spPVwiIWNvbnRyb2wuaWNvbkNhbGxiYWNrRGlzYWJsZWQgJiYgY29udHJvbC5pY29uQ2FsbGJhY2s/Lihmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnZhbHVlKVwiPjxtYXQtaWNvblxuICAgICAgICAgIGNsYXNzPVwiZmxleCBpbnB1dCBqdXN0aWZ5LWNlbnRlciBhbGlnbi1taWRkbGUgaXRlbXMtY2VudGVyIGNvbnRlbnQtY2VudGVyIHRleHQtbGdcIj57e2NvbnRyb2wuaWNvbn19PC9tYXQtaWNvbj48L3NwYW4+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChjb250cm9sLnNwYW4pIHtcbiAgICA8c3BhblxuICAgICAgW25nQ2xhc3NdPVwiIWZvcm0uZ2V0KFtjb250cm9sLm5hbWVdKT8uZXJyb3JzIHx8ICFmb3JtLmdldChbY29udHJvbC5uYW1lXSk/LnRvdWNoZWQgPyAndGV4dC1ncmF5LTYwMCBkYXJrOnRleHQtZ3JheS0zMDAnIDogJyF0ZXh0LXJlZC01MDAgZGFyazohdGV4dC1yZWQtODAwJ1wiXG4gICAgICBjbGFzcz1cImgtMCB0ZXh0LXhzXCI+e3sgY29udHJvbC5zcGFuXG4gICAgICB9fTwvc3Bhbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -1196,8 +1196,10 @@ class ChrFormComponent {
|
|
|
1196
1196
|
* @param dateFormat optional date format for date and datetime inputs
|
|
1197
1197
|
*/
|
|
1198
1198
|
this.patchValue = (key, value, dateFormat = null) => {
|
|
1199
|
+
console.log(`[Patching]: <Raw>`, value);
|
|
1199
1200
|
const type = this.controlTypes[key];
|
|
1200
1201
|
const val = this.typeToInputValue(key, value);
|
|
1202
|
+
console.log(`[Patching]: <${type}>`, val);
|
|
1201
1203
|
if (type == 'file') {
|
|
1202
1204
|
this.setValue$(key, val?.name);
|
|
1203
1205
|
this.setModel$(key, val);
|
|
@@ -1217,6 +1219,7 @@ class ChrFormComponent {
|
|
|
1217
1219
|
*/
|
|
1218
1220
|
this.patch = (model, dateFormat = null) => {
|
|
1219
1221
|
for (const key of Object.keys(model)) {
|
|
1222
|
+
console.log(`[Patching]: {${key}}`);
|
|
1220
1223
|
this.patchValue(key, model[key], dateFormat);
|
|
1221
1224
|
}
|
|
1222
1225
|
};
|