vcomply-workflow-engine 7.3.6 → 7.3.8

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.
@@ -87,26 +87,24 @@ export class FrequencyService {
87
87
  const time_arr = value.split(' ');
88
88
  const meridian = time_arr[1];
89
89
  const hr_min = time_arr[0].split(':').map(Number);
90
- const hr = hr_min[0];
91
- const min = hr_min[1] ? hr_min[1] : '00';
92
- let return_time = '';
90
+ let hr = hr_min[0];
91
+ const min = hr_min[1] ?? 0;
92
+ const sec = hr_min[2] ?? 0;
93
93
  if (meridian?.toLowerCase() == 'pm') {
94
- if (hr == 12) {
95
- return_time = 12 + ':' + min + ':00';
96
- }
97
- else if (hr < 12) {
98
- return_time = +hr + 12 + ':' + min + ':00';
94
+ if (hr < 12) {
95
+ hr = hr + 12;
99
96
  }
100
97
  }
101
98
  else {
102
99
  if (hr == 12) {
103
- return_time = '00:' + min + ':00';
104
- }
105
- else if (hr < 12) {
106
- return_time = hr + ':' + min + ':00';
100
+ hr = 0;
107
101
  }
108
102
  }
109
- return return_time;
103
+ return (String(hr).padStart(2, '0') +
104
+ ':' +
105
+ String(min).padStart(2, '0') +
106
+ ':' +
107
+ String(sec).padStart(2, '0'));
110
108
  }
111
109
  else {
112
110
  return '';
@@ -848,4 +846,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
848
846
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.GrcService }, { type: i4.Configurations, decorators: [{
849
847
  type: Optional
850
848
  }] }]; } });
851
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFHLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQUlwRSxNQUFNLE9BQU8sZ0JBQWdCO0lBcUUzQixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3hCLFVBQXNCLEVBQ2xCLE1BQXVCO1FBSDNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXZFekIsZUFBVSxHQUFrQjtZQUNqQyxTQUFTO1lBQ1QsVUFBVTtZQUNWLE9BQU87WUFDUCxPQUFPO1lBQ1AsS0FBSztZQUNMLE1BQU07WUFDTixNQUFNO1lBQ04sUUFBUTtZQUNSLFdBQVc7WUFDWCxTQUFTO1lBQ1QsVUFBVTtZQUNWLFVBQVU7U0FDWCxDQUFDO1FBRUssWUFBTyxHQUFrQjtZQUM5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LEVBQUUsS0FBSyxFQUFFLE1BQU07WUFDdEQsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVO1NBQ25FLENBQUM7UUFDRixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFMUMsT0FBTyxHQUFHLEdBQUcsSUFBSSxLQUFLLElBQUksSUFBSSxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7T0FlRztJQUNJLFlBQVksQ0FBQyxhQUFxQjtRQUN2QyxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssYUFBYSxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ2hGLENBQUM7K0dBOTJCWSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQTBFSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7ICByZXRyeSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnMgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9ucyc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcclxuaW1wb3J0IHsgREVGQVVMVF9USU1FIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3RpbWUuY29uc3RhbnRzJztcclxuaW1wb3J0IHsgRnJlcXVlbmN5T2JqZWN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9mcmVxdWVuY3kuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQVBJIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FwaS5jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBHcmNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3cvc2hhcmVkL3NlcnZpY2VzL2dyYy5zZXJ2aWNlJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHsgTU9OVEhfTkFNRVMgfSBmcm9tICcuL2ZyZXF1ZW5jeS5jb25zdGFudCc7XHJcbmltcG9ydCB7IFBBR0lOQVRJT05fTElNSVQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29tbW9uLmNvbnN0YW50cyc7XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGcmVxdWVuY3lTZXJ2aWNlIHtcclxuICBwdWJsaWMgbW9udGhBcnJheTogQXJyYXk8c3RyaW5nPiA9IFtcclxuICAgICdKYW51YXJ5JyxcclxuICAgICdGZWJydWFyeScsXHJcbiAgICAnTWFyY2gnLFxyXG4gICAgJ0FwcmlsJyxcclxuICAgICdNYXknLFxyXG4gICAgJ0p1bmUnLFxyXG4gICAgJ0p1bHknLFxyXG4gICAgJ0F1Z3VzdCcsXHJcbiAgICAnU2VwdGVtYmVyJyxcclxuICAgICdPY3RvYmVyJyxcclxuICAgICdOb3ZlbWJlcicsXHJcbiAgICAnRGVjZW1iZXInLFxyXG4gIF07XHJcblxyXG4gIHB1YmxpYyBkYXlOYW1lOiBBcnJheTxzdHJpbmc+ID0gW1xyXG4gICAgJ01vbmRheScsXHJcbiAgICAnVHVlc2RheScsXHJcbiAgICAnV2VkbmVzZGF5JyxcclxuICAgICdUaHVyc2RheScsXHJcbiAgICAnRnJpZGF5JyxcclxuICAgICdTYXR1cmRheScsXHJcbiAgICAnU3VuZGF5JyxcclxuICBdOyAvLyBmdWxsIGRheSBuYW1lXHJcblxyXG4gIHB1YmxpYyBxdWFydGVybHlNb250aDogQXJyYXk8c3RyaW5nPiA9IFtcclxuICAgICdKYW51YXJ5LCBBcHJpbCwgSnVseSwgT2N0b2JlcicsXHJcbiAgICAnRmVicnVhcnksIE1heSwgQXVndXN0LCBOb3ZlbWJlcicsXHJcbiAgICAnTWFyY2gsIEp1bmUsIFNlcHRlbWJlciwgRGVjZW1iZXInLFxyXG4gIF07XHJcblxyXG4gIHB1YmxpYyBkYXRlQ29uZmlnID0ge1xyXG4gICAgZm9ybWF0OiAnREQgTU0gWVlZWScsXHJcbiAgICBzaG93R29Ub0N1cnJlbnQ6IGZhbHNlLFxyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBmcmVxdWVuY3lJbmZvID0ge1xyXG4gICAgcGxhY2Vob2xkZXI6ICcnLFxyXG4gICAgcGF0dGVybjogJycsXHJcbiAgICBjYXNlOiAnJyxcclxuICAgIGZhaWxlZEFmdGVyOiAwLFxyXG4gICAgd2luZG93OiAwLFxyXG4gICAgdGltZUluMTJocjogJycsXHJcbiAgICB0aW1lSW4yNEhyOiAnJyxcclxuICAgIGxpZmVjeWNsZURldGFpbHM6ICcwMDAwLTAwLTAwfn4wJyxcclxuICAgIHN0YXJ0RnJvbTogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXHJcbiAgICByZXBvcnRJZDogMCxcclxuICAgIGZhaWxlZF90aW1lX3V0YzogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXHJcbiAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwLFxyXG4gICAgZGF0ZU9mTW9kaWZpZWQ6IDAsXHJcbiAgICBzdGFydERhdGU6ICcnLFxyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBmcmVxdWVuY3lEZXRhaWxzOiBvYmplY3QgPSB7XHJcbiAgICBwYXR0ZXJuOiAnJyxcclxuICAgIG5vdGlmaWNhdGlvblBlbmRpbmc6IDAsXHJcbiAgICBkYXRlT2ZNb2RpZmllZDogMCxcclxuICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxyXG4gICAgc2VsZWN0ZWRSZXBvcnQ6IDAsXHJcbiAgICBsaWZlY3ljbGU6ICcwMDAwLTAwLTAwfn4wJyxcclxuICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgc3RhcnRPblRoZURheTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxyXG4gICAgd2luZG93OiAwLFxyXG4gICAgZmFpbGVkOiAwLFxyXG4gICAgdGltZTogREVGQVVMVF9USU1FLFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgZW52ITogYW55O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdyY1NlcnZpY2U6IEdyY1NlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBjb25maWc/OiBDb25maWd1cmF0aW9uc1xyXG4gICkge1xyXG4gICAgaWYgKGNvbmZpZykge1xyXG4gICAgICB0aGlzLmVudiA9IGNvbmZpZy5lbnZDb25maWc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0aW1lRnJvbTEyaFRvMjRoKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgY29uc3QgdGltZV9hcnIgPSB2YWx1ZS5zcGxpdCgnICcpO1xyXG4gICAgICBjb25zdCBtZXJpZGlhbiA9IHRpbWVfYXJyWzFdO1xyXG4gICAgICBjb25zdCBocl9taW4gPSB0aW1lX2FyclswXS5zcGxpdCgnOicpLm1hcChOdW1iZXIpO1xyXG4gICAgICBjb25zdCBociA9IGhyX21pblswXTtcclxuICAgICAgY29uc3QgbWluID0gaHJfbWluWzFdID8gaHJfbWluWzFdIDogJzAwJztcclxuICAgICAgbGV0IHJldHVybl90aW1lID0gJyc7XHJcblxyXG4gICAgICBpZiAobWVyaWRpYW4/LnRvTG93ZXJDYXNlKCkgPT0gJ3BtJykge1xyXG4gICAgICAgIGlmIChociA9PSAxMikge1xyXG4gICAgICAgICAgcmV0dXJuX3RpbWUgPSAxMiArICc6JyArIG1pbiArICc6MDAnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaHIgPCAxMikge1xyXG4gICAgICAgICAgcmV0dXJuX3RpbWUgPSAraHIgKyAxMiArICc6JyArIG1pbiArICc6MDAnO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaHIgPT0gMTIpIHtcclxuICAgICAgICAgIHJldHVybl90aW1lID0gJzAwOicgKyBtaW4gKyAnOjAwJztcclxuICAgICAgICB9IGVsc2UgaWYgKGhyIDwgMTIpIHtcclxuICAgICAgICAgIHJldHVybl90aW1lID0gaHIgKyAnOicgKyBtaW4gKyAnOjAwJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiByZXR1cm5fdGltZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRpbWVJbjEyKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgbGV0IGhyO1xyXG4gICAgICBsZXQgbWluO1xyXG4gICAgICBsZXQgbWVyaWRpYW47XHJcbiAgICAgIGlmICh2YWx1ZS5zcGxpdCgnOicpWzBdID49IDEyKSB7XHJcbiAgICAgICAgaHIgPSB2YWx1ZS5zcGxpdCgnOicpWzBdID09PSAnMTInID8gMTIgOiB2YWx1ZS5zcGxpdCgnOicpWzBdIC0gMTI7XHJcbiAgICAgICAgbWluID0gdmFsdWUuc3BsaXQoJzonKVsxXTtcclxuICAgICAgICBpZiAobWluLmxlbmd0aCA8IDIpIHtcclxuICAgICAgICAgIG1pbiA9ICcwJyArIG1pbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWVyaWRpYW4gPSAncG0nO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGhyID0gdmFsdWUuc3BsaXQoJzonKVswXSA9PSAnMDAnID8gMTIgOiB2YWx1ZS5zcGxpdCgnOicpWzBdO1xyXG4gICAgICAgIG1pbiA9IHZhbHVlLnNwbGl0KCc6JylbMV07XHJcbiAgICAgICAgaWYgKG1pbi5sZW5ndGggPCAyKSB7XHJcbiAgICAgICAgICBtaW4gPSAnMCcgKyBtaW47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1lcmlkaWFuID0gJ2FtJztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gaHIgKyAnOicgKyBtaW4gKyAnICcgKyBtZXJpZGlhbjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZyYW1ld29ya1N0YXJ0RGF0ZShyb3c6IGFueSkge1xyXG4gICAgbGV0IGNhbGN1bGF0ZWREYXk6IG51bWJlciA9IDA7XHJcbiAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgRGF0ZShwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgKiAxMDAwKS5nZXREYXkoKTtcclxuICAgIGNvbnN0IGdldERhdGUgPSBuZXcgRGF0ZShwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgKiAxMDAwKS5nZXREYXRlKCk7XHJcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCkuZ2V0RGF5KCk7XHJcbiAgICBjb25zdCBzdGFydE1vbnRoID0gbmV3IERhdGUocGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpICogMTAwMCkuZ2V0TW9udGgoKTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSA8IERhdGUubm93KCkgLyAxMDAwICYmXHJcbiAgICAgIChyb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgd2VlaycgfHxcclxuICAgICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgMiB3ZWVrcycgfHxcclxuICAgICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgMyB3ZWVrcycpXHJcbiAgICApIHtcclxuICAgICAgbGV0IGRheXNUb0JlQWRkZWQgPSAwO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xyXG4gICAgICAgIGlmICgoY3VycmVudERhdGUgKyBpKSAlIDcgPT09IHN0YXJ0RGF0ZSkge1xyXG4gICAgICAgICAgZGF5c1RvQmVBZGRlZCA9IGk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdGltZXN0YW1wVG9CZUFkZGVkID0gZGF5c1RvQmVBZGRlZCAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XHJcbiAgICAgIGNhbGN1bGF0ZWREYXkgPSBuZXcgRGF0ZShcclxuICAgICAgICBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIHRpbWVzdGFtcFRvQmVBZGRlZFxyXG4gICAgICApLmdldFRpbWUoKTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSA8IERhdGUubm93KCkgLyAxMDAwICYmXHJcbiAgICAgICEoXHJcbiAgICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IHdlZWsnIHx8XHJcbiAgICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IDIgd2Vla3MnIHx8XHJcbiAgICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IDMgd2Vla3MnXHJcbiAgICAgICkgJiZcclxuICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSAhPT0gJ2V2ZXJ5IGRheSdcclxuICAgICkge1xyXG4gICAgICBjb25zdCBtb21lbnRVbml4ID0gbW9tZW50KFxyXG4gICAgICAgIGdldERhdGUgK1xyXG4gICAgICAgICAgJy0nICtcclxuICAgICAgICAgIChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICAgICAnLScgK1xyXG4gICAgICAgICAgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICtcclxuICAgICAgICAgICcgMDA6MDAnLFxyXG4gICAgICAgICdERC1NTS1ZWVlZIEhIOm1tJ1xyXG4gICAgICApLnVuaXgoKTtcclxuICAgICAgY2FsY3VsYXRlZERheSA9IG1vbWVudFVuaXggKiAxMDAwO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IGRheScgJiZcclxuICAgICAgcGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpIDwgRGF0ZS5ub3coKSAvIDEwMDBcclxuICAgICkge1xyXG4gICAgICBjYWxjdWxhdGVkRGF5ID0gRGF0ZS5ub3coKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNhbGN1bGF0ZWREYXkgPSBwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgKiAxMDAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNhbGN1bGF0ZWREYXkgLyAxMDAwO1xyXG4gIH1cclxuXHJcbiAgZnJhbWV3b3JrRnJlcXVlbmN5KGZyZXF1ZW5jeTogYW55LCBzdGFydF9kYXRlOiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHN0YXJ0X2RhdGUgKiAxMDAwKTtcclxuICAgICAgY29uc3QgZmlyc3RIYWxmTW9udGggPSBbJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2J107XHJcbiAgICAgIGNvbnN0IHNlY29uZEhhbGZNb250aCA9IFsnNycsICc4JywgJzknLCAnMTAnLCAnMTEnLCAnMTInXTtcclxuICAgICAgY29uc3QgZ2V0RGF5RGF0YSA9IHN0YXJ0RGF0ZS5nZXREYXkoKSA9PT0gMCA/IDcgOiBzdGFydERhdGUuZ2V0RGF5KCk7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gc3RhcnREYXRlLmdldE1vbnRoKCk7XHJcbiAgICAgIGxldCBxdWFydGVyUGF0dGVybiA9ICd+MSw0LDcsMTB+MCc7XHJcbiAgICAgIHN3aXRjaCAobW9udGgpIHtcclxuICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgIGNhc2UgNjpcclxuICAgICAgICBjYXNlIDk6XHJcbiAgICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+MSw0LDcsMTB+MCc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgY2FzZSA0OlxyXG4gICAgICAgIGNhc2UgNzpcclxuICAgICAgICBjYXNlIDEwOlxyXG4gICAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjIsNSw4LDExfjAnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgIGNhc2UgNTpcclxuICAgICAgICBjYXNlIDg6XHJcbiAgICAgICAgY2FzZSAxMTpcclxuICAgICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34zLDYsOSwxMn4wJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIF07XHJcbiAgICAgIGxldCBmcmVxdWVuY3lfcGF0dGVybjtcclxuXHJcbiAgICAgIGZyZXF1ZW5jeSA9IGZyZXF1ZW5jeS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBsZXQgY29udGludW91c19mYWlsZWRfZGF5cyA9IDA7XHJcbiAgICAgIC8vIEAgPT4gZGF5ICgxIHRvIDcpXHJcbiAgICAgIC8vICMgPT4gbW9udGggKDEgdG8gMTIpXHJcbiAgICAgIC8vID8gPT4gbW9udGggJSAyID09IDAgPyBcIjIsNCw2LDgsMTAsMTJcIiA6IFwiMSwzLDUsNyw5LDExXCJcclxuXHJcbiAgICAgIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSB3ZWVrJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzJ+JyArIGdldERheURhdGEgKyAnfjB+MSc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ29uZSB0aW1lJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cclxuICAgICAgICAgICcwficgK1xyXG4gICAgICAgICAgc3RhcnREYXRlLmdldEZ1bGxZZWFyKCkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICBzdGFydERhdGUuZ2V0RGF0ZSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IGRheScpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcxfjB+MH4xJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgYWx0ZXJuYXRlIGRheScpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcxfjB+MH4yJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMTAgZGF5cycpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcxfjB+MH4xMCc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDIgd2Vla3MnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMn4nICsgZ2V0RGF5RGF0YSArICd+MH4yJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgZm9ydG5pZ2h0Jykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+JyArIGdldERheURhdGEgKyAnfjB+MTQnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAzIHdlZWtzJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzJ+JyArIGdldERheURhdGEgKyAnfjB+Myc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IG1vbnRoJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cclxuICAgICAgICAgICczficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34xLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMn4wJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgNDUgZGF5cycpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcxfjB+MH40NSc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IGFsdGVybmF0ZSBtb250aCcpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XHJcbiAgICAgICAgICAnM34nICtcclxuICAgICAgICAgIHN0YXJ0RGF0ZS5nZXREYXRlKCkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgICgoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSAlIDIgPT0gMFxyXG4gICAgICAgICAgICA/ICcyLDQsNiw4LDEwLDEyJ1xyXG4gICAgICAgICAgICA6ICcxLDMsNSw3LDksMTEnKSArXHJcbiAgICAgICAgICAnfjAnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBxdWFydGVyJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzd+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyBxdWFydGVyUGF0dGVybjtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAxMjAgZGF5cycpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcxfjB+MH4xMjAnO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2hhbGYgeWVhcmx5Jykge1xyXG4gICAgICAgIGNvbnN0IGluZGV4MSA9IGZpcnN0SGFsZk1vbnRoLmluZGV4T2YoXHJcbiAgICAgICAgICAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBpbmRleDIgPSBzZWNvbmRIYWxmTW9udGguaW5kZXhPZihcclxuICAgICAgICAgIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKClcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHBhdHRlcm4gPVxyXG4gICAgICAgICAgaW5kZXgxID4gLTFcclxuICAgICAgICAgICAgPyAnficgK1xyXG4gICAgICAgICAgICAgIGZpcnN0SGFsZk1vbnRoW2luZGV4MV0gK1xyXG4gICAgICAgICAgICAgICcsJyArXHJcbiAgICAgICAgICAgICAgc2Vjb25kSGFsZk1vbnRoW2luZGV4MV0gK1xyXG4gICAgICAgICAgICAgICd+MCdcclxuICAgICAgICAgICAgOiAnficgK1xyXG4gICAgICAgICAgICAgIGZpcnN0SGFsZk1vbnRoW2luZGV4Ml0gK1xyXG4gICAgICAgICAgICAgICcsJyArXHJcbiAgICAgICAgICAgICAgc2Vjb25kSGFsZk1vbnRoW2luZGV4Ml0gK1xyXG4gICAgICAgICAgICAgICd+MCc7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnM34nICsgc3RhcnREYXRlLmdldERhdGUoKSArIHBhdHRlcm47XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ3llYXJseScpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XHJcbiAgICAgICAgICAnNH4nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+JyArIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICsgJ34xJztcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAyIHllYXJzJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cclxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjInO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDMgeWVhcnMnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxyXG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+Myc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgNCB5ZWFycycpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XHJcbiAgICAgICAgICAnNH4nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+JyArIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICsgJ340JztcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSA1IHllYXJzJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cclxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjUnO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDEwIHllYXJzJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cclxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjEwJztcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICd0byBiZSBkZWNpZGVkIGxhdGVyJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJyc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnJztcclxuICAgICAgfVxyXG4gICAgICAvLyB0aGlzLmVkaXREYXRhLmZyZXF1ZW5jeV9kZXRhaWxzID0gZnJlcXVlbmN5X3BhdHRlcm47XHJcblxyXG4gICAgICByZXR1cm4geyBmcmVxdWVuY3lfcGF0dGVybiwgY29udGludW91c19mYWlsZWRfZGF5cyB9O1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgICByZXR1cm4geyBmcmVxdWVuY3lfcGF0dGVybjogJycsIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3J0SGFuZF9mcmVxQ2FsKGZyZXF1ZW5jeTogYW55LCBkYXk6IGFueSwgbW9udGg6IGFueSwgeWVhcj86IGFueSkge1xyXG4gICAgY29uc3QgbW9udGhOYW1lcyA9IE1PTlRIX05BTUVTO1xyXG4gICAgbGV0IGZyZXF1ZW5jeV9kZXRhaWxzO1xyXG4gICAgbGV0IGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAwO1xyXG4gICAgY29uc3QgZGF0ZV92YWx1ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgZGF0ZV92YWx1ZS5zZXRNb250aChcclxuICAgICAgdHlwZW9mIG1vbnRoICE9PSAnbnVtYmVyJ1xyXG4gICAgICAgID8gbW9udGhOYW1lcy5maWx0ZXIoKHgpID0+IHgubW9udGggPT09IG1vbnRoPy5zdWJzdHJpbmcoMCwgMykpWzBdXHJcbiAgICAgICAgICAgID8udmFsdWUgLSAxXHJcbiAgICAgICAgOiBtb250aFxyXG4gICAgKTtcclxuICAgIGlmICgheWVhcikge1xyXG4gICAgICBkYXRlX3ZhbHVlLnNldEZ1bGxZZWFyKDIwICsgbW9udGguc3BsaXQoXCInXCIpWzFdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRhdGVfdmFsdWUuc2V0RnVsbFllYXIoeWVhcik7XHJcbiAgICB9XHJcbiAgICBkYXRlX3ZhbHVlLnNldERhdGUoZGF5KTtcclxuICAgIGxldCBxdWFydGVyUGF0dGVybiA9ICd+MSw0LDcsMTB+MCc7XHJcbiAgICBjb25zdCBmaXJzdEhhbGZNb250aCA9IFsnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnXTtcclxuICAgIGNvbnN0IHNlY29uZEhhbGZNb250aCA9IFsnNycsICc4JywgJzknLCAnMTAnLCAnMTEnLCAnMTInXTtcclxuICAgIGZyZXF1ZW5jeSA9IGZyZXF1ZW5jeS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIHN3aXRjaCAoZGF0ZV92YWx1ZS5nZXRNb250aCgpKSB7XHJcbiAgICAgIGNhc2UgMDpcclxuICAgICAgY2FzZSAzOlxyXG4gICAgICBjYXNlIDY6XHJcbiAgICAgIGNhc2UgOTpcclxuICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+MSw0LDcsMTB+MCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgY2FzZSA0OlxyXG4gICAgICBjYXNlIDc6XHJcbiAgICAgIGNhc2UgMTA6XHJcbiAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjIsNSw4LDExfjAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgIGNhc2UgNTpcclxuICAgICAgY2FzZSA4OlxyXG4gICAgICBjYXNlIDExOlxyXG4gICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34zLDYsOSwxMn4wJztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGNvbnN0IGdldERheSA9IGRhdGVfdmFsdWUuZ2V0RGF5KCkgPT09IDAgPyA3IDogZGF0ZV92YWx1ZS5nZXREYXkoKTtcclxuICAgIHN3aXRjaCAoZnJlcXVlbmN5KSB7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IHdlZWsnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzJ+JyArIGdldERheSArICd+MH4xJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ29uZSB0aW1lJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XHJcbiAgICAgICAgICAnMH4nICtcclxuICAgICAgICAgICcnICtcclxuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RnVsbFllYXIoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgZGF5JzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxfjB+MH4xJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IGFsdGVybmF0ZSBkYXknOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjInO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgMTAgZGF5cyc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMX4wfjB+MTAnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgMiB3ZWVrcyc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMn4nICsgZ2V0RGF5ICsgJ34wfjInO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgZm9ydG5pZ2h0JzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxficgKyBnZXREYXkgKyAnfjB+MTQnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgMyB3ZWVrcyc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMn4nICsgZ2V0RGF5ICsgJ34wfjMnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgbW9udGgnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cclxuICAgICAgICAgICczficgKyBkYXRlX3ZhbHVlLmdldERhdGUoKSArICd+MSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJ+MCc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSA0NSBkYXlzJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxfjB+MH40NSc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSBhbHRlcm5hdGUgbW9udGgnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cclxuICAgICAgICAgICczficgK1xyXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgICgoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgJSAyID09PSAwXHJcbiAgICAgICAgICAgID8gJzIsNCw2LDgsMTAsMTInXHJcbiAgICAgICAgICAgIDogJzEsMyw1LDcsOSwxMScpICtcclxuICAgICAgICAgICd+MCc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSBxdWFydGVyJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICc3ficgKyBkYXRlX3ZhbHVlLmdldERhdGUoKSArIHF1YXJ0ZXJQYXR0ZXJuO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSAxMjAgZGF5cyc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMX4wfjB+MTIwJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2hhbGYgeWVhcmx5JzpcclxuICAgICAgICBjb25zdCBpbmRleDEgPSBmaXJzdEhhbGZNb250aC5pbmRleE9mKFxyXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKClcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGluZGV4MiA9IHNlY29uZEhhbGZNb250aC5pbmRleE9mKFxyXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKClcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHBhdHRlcm4gPVxyXG4gICAgICAgICAgaW5kZXgxID4gLTFcclxuICAgICAgICAgICAgPyAnficgK1xyXG4gICAgICAgICAgICAgIGZpcnN0SGFsZk1vbnRoW2luZGV4MV0gK1xyXG4gICAgICAgICAgICAgICcsJyArXHJcbiAgICAgICAgICAgICAgc2Vjb25kSGFsZk1vbnRoW2luZGV4MV0gK1xyXG4gICAgICAgICAgICAgICd+MCdcclxuICAgICAgICAgICAgOiAnficgK1xyXG4gICAgICAgICAgICAgIGZpcnN0SGFsZk1vbnRoW2luZGV4Ml0gK1xyXG4gICAgICAgICAgICAgICcsJyArXHJcbiAgICAgICAgICAgICAgc2Vjb25kSGFsZk1vbnRoW2luZGV4Ml0gK1xyXG4gICAgICAgICAgICAgICd+MCc7XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnM34nICsgZGF0ZV92YWx1ZS5nZXREYXRlKCkgKyBwYXR0ZXJuO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdhbm51YWwnOlxyXG4gICAgICBjYXNlICd5ZWFybHknOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cclxuICAgICAgICAgICc0ficgK1xyXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICAgICAnfjEnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSAyIHllYXJzJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XHJcbiAgICAgICAgICAnNH4nICtcclxuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAgICAgJ34yJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgMyB5ZWFycyc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxyXG4gICAgICAgICAgJzR+JyArXHJcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcclxuICAgICAgICAgICd+Myc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IDQgeWVhcnMnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cclxuICAgICAgICAgICc0ficgK1xyXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICAgICAnfjQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSA1IHllYXJzJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XHJcbiAgICAgICAgICAnNH4nICtcclxuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAgICAgJ341JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgMTAgeWVhcnMnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cclxuICAgICAgICAgICc0ficgK1xyXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICAgICAnfjEwJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnb25nb2luZyc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMTB+MH4wfjAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd0byBiZSBkZWNpZGVkIGxhdGVyJzpcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICc1fjB+MH4wJztcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHBhdHRlcm46IGZyZXF1ZW5jeV9kZXRhaWxzLFxyXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBjb250aW51b3VzX2ZhaWxlZF9kYXlzLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdldE9uQ29tcGxldGlvbk9mUmVzcG9uc2liaWxpdHkoKSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxyXG4gICAgICAndG9rZW4nLFxyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgJ3JlcG9ydHMvb25Db21wbGV0aW9uT2ZSZXBvcnRzJywge1xyXG4gICAgICAgIGhlYWRlcnMsXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVRpbWVab25lKGRhdGU6IGFueSkge1xyXG4gICAgaWYgKHR5cGVvZiBkYXRlID09PSAnbnVtYmVyJykge1xyXG4gICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbnZEYXRlID0gbmV3IERhdGUoXHJcbiAgICAgIGRhdGUudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywge1xyXG4gICAgICAgIHRpbWVab25lOiB0aGlzLmF1dGhTZXJ2aWNlPy51c2VyRGV0YWlscz8udGltZXpvbmUsXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGludkRhdGU7XHJcbiAgfVxyXG5cclxuICBnZXRSZXNwb25zaWJpbGl0eUxpc3QocGF5bG9hZDogYW55KSB7XHJcbiAgICBjb25zdCBsaW1pdCA9IFBBR0lOQVRJT05fTElNSVQ7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxyXG4gICAgICAndG9rZW4nLFxyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpLFxyXG4gICAgKVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAuZ2V0PGFueT4oXHJcbiAgICAgICAgYCR7dGhpcy5lbnYuY29tcGxpYW5jZUdldH1zYWlsc1Jlc3BvbnNpYmlsaXRpZXNMaXN0JnBhZ2U9JHtwYXlsb2FkPy5wYWdlTm99JmxpbWl0PSR7bGltaXR9JHtwYXlsb2FkPy5zZWFyY2hUZXJtID8gYCZzZWFyY2hUZXJtPSR7cGF5bG9hZD8uc2VhcmNoVGVybX1gIDogJyd9JmJpekN5Y2xlUmVxdWlyZWQ9MCZpbmNsdWRlPWFzc2lnbmVlcyZncm91cD1hbGxgLFxyXG4gICAgICAgIHsgaGVhZGVycyB9XHJcbiAgICAgIClcclxuICAgICAgLnBpcGUocmV0cnkoMSkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVzcG9uc2liaWxpdGllc0NvdW50KHBheWxvYWQ6IGFueSkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcclxuICAgICAgJ3Rva2VuJyxcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxyXG4gICAgKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihcclxuICAgICAgICB0aGlzLmVudi5yZXNwb25zaWJpbGl0eVBvc3QgKyAnbWFuYWdlX3Jlc3BvbnNpYmlsaXRpZXNfcmVwb3J0c19jb3VudCcsXHJcbiAgICAgICAgcGF5bG9hZCxcclxuICAgICAgICB7IGhlYWRlcnMgfVxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcclxuICB9XHJcblxyXG4gIGdldEFsbFJlc3BvbnNpYmlsaXRpZXMocGFnZU5vOiBudW1iZXIsIHBheWxvYWQ6IGFueSkge1xyXG4gICAgY29uc3QgYnVzaW5lc3NDeWNsZSA9IHRoaXMuZ3JjU2VydmljZS5nZXRCdXNpbmVzc0N5Y2xlKCk7XHJcbiAgICBjb25zdCBmb3JtYXR0ZWRDeWNsZSA9IGJ1c2luZXNzQ3ljbGUuc2VsZWN0ZWRfY3ljbGVcclxuICAgICAgPyBkYXlqcyhidXNpbmVzc0N5Y2xlLnNlbGVjdGVkX2N5Y2xlLnNwbGl0KCctJylbMF0pLmZvcm1hdCgnWVlZWS1NTS1ERCcpICsgXHJcbiAgICAgICAgJzonICsgXHJcbiAgICAgICAgZGF5anMoYnVzaW5lc3NDeWNsZS5zZWxlY3RlZF9jeWNsZS5zcGxpdCgnLScpWzFdKS5mb3JtYXQoJ1lZWVktTU0tREQnKVxyXG4gICAgICA6ICcnO1xyXG4gICAgXHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcclxuICAgICAgLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKVxyXG4gICAgICAuc2V0KCdiaXpfY3ljbGUnLCBmb3JtYXR0ZWRDeWNsZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4oXHJcbiAgICAgIHRoaXMuZW52LmNvbXBsaWFuY2VHZXQgKyBBUEkucmVzcG9uc2liaWxpdHlMaXN0ICsgYCZwYWdlPSR7cGFnZU5vfSZsaW1pdD0ke1BBR0lOQVRJT05fTElNSVR9JHtwYXlsb2FkPy5zZWFyY2hUZXJtID8gYCZzZWFyY2hUZXJtPSR7cGF5bG9hZD8uc2VhcmNoVGVybX1gIDogJyd9YCAsXHJcbiAgICAgIHsgaGVhZGVycyB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0RGF0ZSgpIHtcclxuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcclxuICAgIGNvbnN0IGRheSA9IFN0cmluZyhjdXJyZW50RGF0ZT8uZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgY29uc3QgbW9udGggPSBTdHJpbmcoY3VycmVudERhdGU/LmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgY29uc3QgeWVhciA9IGN1cnJlbnREYXRlPy5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGAke2RheX0tJHttb250aH0tJHt5ZWFyfWA7XHJcbiAgICByZXR1cm4gZm9ybWF0dGVkRGF0ZTtcclxuICB9XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQ29udmVydHMgYSBmcmVxdWVuY3kgY29uZmlndXJhdGlvbiBvYmplY3QgaW50byBhIHN0YW5kYXJkaXplZCBGcmVxdWVuY3lPYmplY3QgZm9ybWF0LlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBmcmVxdWVuY3kgLSBUaGUgaW5wdXQgZnJlcXVlbmN5IGNvbmZpZ3VyYXRpb24gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxyXG4gICAqIC0gY2FzZTogVGhlIHR5cGUgb2YgZnJlcXVlbmN5ICgnb25lX3RpbWUnIHwgJ2RhaWx5JyB8ICd3ZWVrbHknIHwgJ21vbnRobHknIHwgJ3F1YXJ0ZXJseScgfCAnc2VtZXN0ZXInIHwgJ3llYXJseScgfCAncmFuZG9tJyB8ICdvbmdvaW5nJyB8ICdvbl9jb21wbGV0aW9uX29mJyB8ICdiaWFubnVhbGx5JylcclxuICAgKiAtIHdpbmRvdzogTnVtYmVyIG9mIGRheXMgYmVmb3JlIHRoZSB0YXNrIGNhbiBiZSBzdGFydGVkXHJcbiAgICogLSBmYWlsZWRBZnRlcjogTnVtYmVyIG9mIGRheXMgYWZ0ZXIgd2hpY2ggdGhlIHRhc2sgaXMgY29uc2lkZXJlZCBmYWlsZWRcclxuICAgKiAtIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IE51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIHRoZSB0YXNrIGlzIGF1dG8tZGVhY3RpdmF0ZWRcclxuICAgKiAtIGRheTogVGhlIGRheSBvZiBvY2N1cnJlbmNlXHJcbiAgICogLSB0aW1lSW4yNEhyOiBUaW1lIGluIDI0LWhvdXIgZm9ybWF0XHJcbiAgICogLSBldmVyeTogRnJlcXVlbmN5IGludGVydmFsXHJcbiAgICogLSBzZWxlY3RlZERheTogQXJyYXkgb2Ygc2VsZWN0ZWQgZGF5cyBmb3Igd2Vla2x5IGZyZXF1ZW5jeSAoMS03IHJlcHJlc2VudGluZyBNb25kYXktU3VuZGF5KVxyXG4gICAqIC0gc2VsZWN0ZWRNb250aDogQXJyYXkgb2Ygc2VsZWN0ZWQgbW9udGhzICgwLTExIHJlcHJlc2VudGluZyBKYW51YXJ5LURlY2VtYmVyKVxyXG4gICAqIC0gc3RhcnRGcm9tOiBVbml4IHRpbWVzdGFtcCBmb3IgdGhlIHN0YXJ0IGRhdGVcclxuICAgKiAtIGxpZmVjeWNsZURldGFpbHM6IFN0cmluZyBpbiBmb3JtYXQgXCJZWVlZLU1NLUREfn5OXCIgd2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9mIG9jY3VycmVuY2VzXHJcbiAgICogLSByYW5kb21UeXBlU2VsZWN0ZWQ6IEluZGV4IGZvciByYW5kb20gZnJlcXVlbmN5IHR5cGUgKDA6IHdlZWtseSwgMTogbW9udGhseSwgMjogcXVhcnRlcmx5LCAzOiB5ZWFybHkpXHJcbiAgICogLSByYW5kb21JbnN0YW5jZXM6IE51bWJlciBvZiByYW5kb20gb2NjdXJyZW5jZXNcclxuICAgKiAtIHNlbGVjdGVkVHlwZTogTnVtYmVyIG9mIHJlbWluZGVycyBmb3Igb25nb2luZyBmcmVxdWVuY3lcclxuICAgKiAtIHNlbGVjdGVkT25nb2luZ1R5cGU6IEluZGV4IGZvciBvbmdvaW5nIGZyZXF1ZW5jeSB0eXBlICgxOiB3ZWVrLCAyOiBtb250aCwgMzogcXVhcnRlciwgNDogc2VtZXN0ZXIsIDU6IHllYXIpXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgQSBGcmVxdWVuY3lPYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcclxuICAgKiAtIHR5cGU6IEZyZXF1ZW5jeSB0eXBlXHJcbiAgICogLSBzdGFydEJlZm9yZTogRGF5cyBiZWZvcmUgdGFzayBjYW4gc3RhcnRcclxuICAgKiAtIGVuZEFmdGVyOiBEYXlzIGFmdGVyIHdoaWNoIHRhc2sgZmFpbHNcclxuICAgKiAtIGF1dG9EZWFjdGl2YXRlOiBEYXlzIGFmdGVyIHdoaWNoIHRhc2sgaXMgZGVhY3RpdmF0ZWRcclxuICAgKiAtIGRheTogRGF5IG9mIG9jY3VycmVuY2VcclxuICAgKiAtIHRpbWU6IFRpbWUgaW4gMjQtaG91ciBmb3JtYXRcclxuICAgKiAtIHJlcGVhdE9wdGlvbnM6IHtcclxuICAgKiAgICAgZXZlcnk6IG51bWJlcixcclxuICAgKiAgICAgcmVwZWF0T246IHN0cmluZyAoYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHNlbGVjdGVkIGRheXMvbW9udGhzKSxcclxuICAgKiAgICAgbGlmZWN5Y2xlOiB7XHJcbiAgICogICAgICAgc3RhcnRGcm9tOiBzdHJpbmcgKFlZWVktTU0tREQpLFxyXG4gICAqICAgICAgIGVuZEJ5Pzogc3RyaW5nIChZWVlZLU1NLUREKSxcclxuICAgKiAgICAgICBlbmRBZnRlcj86IG51bWJlclxyXG4gICAqICAgICB9XHJcbiAgICogICB9XHJcbiAgICogLSByYW5kb20/OiB7IHR5cGU6IHN0cmluZywgb2NjdXJyZW5jZTogbnVtYmVyIH1cclxuICAgKiAtIG9uQ29tcGxldGU6IHt9XHJcbiAgICogLSBvbkdvaW5nOiB7IHJlbWluZGVyczogbnVtYmVyLCBzdGFydE9mOiAnd2VlaycgfCAnbW9udGgnIHwgJ3F1YXJ0ZXInIHwgJ3NlbWVzdGVyJyB8ICd5ZWFyJyB9XHJcbiAgICogXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiBgYGB0eXBlc2NyaXB0XHJcbiAgICogY29uc3QgZnJlcXVlbmN5ID0ge1xyXG4gICAqICAgY2FzZTogJ3dlZWtseScsXHJcbiAgICogICB3aW5kb3c6IDIsXHJcbiAgICogICBmYWlsZWRBZnRlcjogMSxcclxuICAgKiAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDMsXHJcbiAgICogICBkYXk6IDEsXHJcbiAgICogICB0aW1lSW4yNEhyOiAnMDk6MDA6MDAnLFxyXG4gICAqICAgZXZlcnk6IDEsXHJcbiAgICogICBzZWxlY3RlZERheTogWzEsIDMsIDVdLCAvLyBNb25kYXksIFdlZG5lc2RheSwgRnJpZGF5XHJcbiAgICogICBzdGFydEZyb206IDE2Nzg5MDAwMDAsXHJcbiAgICogICBsaWZlY3ljbGVEZXRhaWxzOiAnMjAyNC0xMi0zMX5+MTAnXHJcbiAgICogfTtcclxuICAgKiBjb25zdCByZXN1bHQgPSBzZXRGcmVxdWVuY3lPYmplY3QoZnJlcXVlbmN5KTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBzZXRGcmVxdWVuY3lPYmplY3QoZnJlcXVlbmN5OiBhbnkpOiBGcmVxdWVuY3lPYmplY3QgfCBudWxsIHtcclxuICAgIGNvbnNvbGUubG9nKGZyZXF1ZW5jeSwgXCJmcmVxdWVuY3lcIik7XHJcbiAgICBjb25zdCByZXBlYXRPcHRpb25zID0gdGhpcy5yZXBlYXRPcHRpb25zKGZyZXF1ZW5jeSk7XHJcbiAgICBjb25zdCBsaWZlY3ljbGVEZXRhaWxzID0gZnJlcXVlbmN5LmxpZmVjeWNsZURldGFpbHMuc3BsaXQoJ35+Jyk7XHJcbiAgICBjb25zdCBmcmVxdWVuY3lPYmplY3Q6IEZyZXF1ZW5jeU9iamVjdCA9IHtcclxuICAgICAgdHlwZTogZnJlcXVlbmN5LmNhc2UsXHJcbiAgICAgIHN0YXJ0QmVmb3JlOiBmcmVxdWVuY3kud2luZG93LFxyXG4gICAgICBlbmRBZnRlcjogZnJlcXVlbmN5LmZhaWxlZEFmdGVyLFxyXG4gICAgICBhdXRvRGVhY3RpdmF0ZTogZnJlcXVlbmN5LmNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXHJcbiAgICAgIGRheTogZnJlcXVlbmN5LmRheSwgXHJcbiAgICAgIHRpbWU6IGZyZXF1ZW5jeS50aW1lSW4yNEhyLFxyXG4gICAgICByZXBlYXRPcHRpb25zOiB7XHJcbiAgICAgICAgZXZlcnk6IGZyZXF1ZW5jeS5ldmVyeSxcclxuICAgICAgICByZXBlYXRPbjogcmVwZWF0T3B0aW9ucyxcclxuICAgICAgICBsaWZlY3ljbGU6IHtcclxuICAgICAgICAgIHN0YXJ0RnJvbTogbW9tZW50KGZyZXF1ZW5jeS5zdGFydEZyb20gKiAxMDAwKS5mb3JtYXQoJ1lZWVktTU0tREQnKSxcclxuICAgICAgICAgIGVuZEJ5OmxpZmVjeWNsZURldGFpbHNbMF0gIT09ICcwMDAwLTAwLTAwJyA/IG1vbWVudChsaWZlY3ljbGVEZXRhaWxzWzBdICwgJ0RELU1NTU0tWVlZWScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgZW5kQWZ0ZXI6IFxyXG4gICAgICAgICAgICAgICAgZnJlcXVlbmN5LmNhc2UgPT09ICdvbmVfdGltZSdcclxuICAgICAgICAgICAgICAgICAgICA/IDFcclxuICAgICAgICAgICAgICAgICAgICA6IGxpZmVjeWNsZURldGFpbHNbMV0gIT09ICcwJ1xyXG4gICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQobGlmZWN5Y2xlRGV0YWlsc1sxXSlcclxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHJhbmRvbTogdGhpcy5nZXRSYW5kb21GcmVxdWVuY3koZnJlcXVlbmN5KSxcclxuICAgICAgb25Db21wbGV0ZTogZnJlcXVlbmN5LmNhc2UgPT09ICdvbl9jb21wbGV0ZScgPyBmcmVxdWVuY3kub25Db21wbGV0aW9uIDoge30sXHJcbiAgICAgIG9uR29pbmc6IHRoaXMuZ2V0T25nb2luZyhmcmVxdWVuY3kpLFxyXG4gICAgfSAgXHJcbiAgICByZXR1cm4gZnJlcXVlbmN5T2JqZWN0O1xyXG4gIH0gXHJcblxyXG4gIHJlcGVhdE9wdGlvbnMoZnJlcXVlbmN5OiBhbnkpOiBzdHJpbmcge1xyXG4gICAgY29uc29sZS5sb2coZnJlcXVlbmN5LCAncmVwZWF0T3B0aW9ucyBmcmVxdWVuY3knKTtcclxuICAgaWYoZnJlcXVlbmN5Py5zZWxlY3RlZERheT8ubGVuZ3RoID4gMCkge1xyXG4gICAgY29uc3Qgd2Vla0RheXMgPSBbXTtcclxuICAgICBmb3IobGV0IGkgPSAwOyBpIDwgNzsgaSArKykge1xyXG4gICAgICBpZihmcmVxdWVuY3kuc2VsZWN0ZWREYXkuaW5jbHVkZXMoaSArIDEpKSB7XHJcbiAgICAgICAgd2Vla0RheXMucHVzaCgxKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB3ZWVrRGF5cy5wdXNoKDApO1xyXG4gICAgICB9XHJcbiAgICAgfVxyXG4gICAgIHJldHVybiB3ZWVrRGF5cy5qb2luKCcnKTtcclxuICAgfSBlbHNlIGlmKGZyZXF1ZW5jeT8uc2VsZWN0ZWRNb250aD8ubGVuZ3RoID4gMCkge1xyXG4gICAgY29uc3QgbW9udGhzID0gWyBdO1xyXG4gICAgZm9yKGxldCBpID0gMDsgaSA8IDEyOyBpICsrKSB7XHJcbiAgICAgIGlmKGZyZXF1ZW5jeT8uc2VsZWN0ZWRNb250aD8uaW5jbHVkZXMoaSkpIHtcclxuICAgICAgICBtb250aHMucHVzaCgxKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtb250aHMucHVzaCgwKTtcclxuICAgICAgfVxyXG4gICB9XHJcbiAgIHJldHVybiBtb250aHMuam9pbignJyk7XHJcbiAgIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgIH1cclxuICB9XHJcblxyXG4gIGdldE9uZ29pbmcoZnJlcXVlbmN5OiBhbnkpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHJlbWluZGVyczogZnJlcXVlbmN5Py5zZWxlY3RlZFR5cGUsXHJcbiAgICAgIHN0YXJ0T2Y6IGZyZXF1ZW5jeT8uc2VsZWN0ZWRUeXBlID8gIFsnd2VlaycsJ21vbnRoJyAsJ3F1YXJ0ZXInICwnc2VtZXN0ZXInICwneWVhciddW2ZyZXF1ZW5jeT8uc2VsZWN0ZWRPbmdvaW5nVHlwZSAtIDFdIDogJydcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0UmFuZG9tRnJlcXVlbmN5KGZyZXF1ZW5jeTogYW55KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgIHR5cGU6IFsnd2Vla2x5JywgJ21vbnRobHknLCAncXVhcnRlcmx5JywgJ3llYXJseSddW2ZyZXF1ZW5jeT8ucmFuZG9tVHlwZVNlbGVjdGVkXSxcclxuICAgICBvY2N1cnJlbmNlOiBmcmVxdWVuY3k/LnJhbmRvbUluc3RhbmNlc1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlRnJlcXVlbmN5UGF0dGVybihmcmVxdWVuY3k6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coZnJlcXVlbmN5LCAnZnJlcXVlbmN5Jyk7XHJcbiAgICBsZXQgcGF0dGVybiA9ICcnO1xyXG4gICAgbGV0IHNlbGVjdGVkRGF5ID0gZnJlcXVlbmN5LmRheVxyXG4gICAgc3dpdGNoIChmcmVxdWVuY3kudHlwZSkge1xyXG5cclxuICAgICAgY2FzZSAnb25lX3RpbWUnOlxyXG4gICAgICAgIGxldCBkYXRlX3ZhbHVlID0gZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uc3RhcnRGcm9tPy5zcGxpdCgnLScpO1xyXG5cclxuICAgICAgICBwYXR0ZXJuID1cclxuICAgICAgICAgICcwficgK1xyXG4gICAgICAgICAgJycgK1xyXG4gICAgICAgICAgZGF0ZV92YWx1ZVswXSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKGRhdGVfdmFsdWVbMV0pICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICBkYXRlX3ZhbHVlWzJdO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdkYWlseSc6XHJcbiAgICAgICAgcGF0dGVybiA9IGAxfjB+MH4ke2ZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5ldmVyeX1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd3ZWVrbHknOlxyXG4gICAgICAgIHBhdHRlcm4gPSBgMn4ke3RoaXMuZ2V0RGF5KGZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5yZXBlYXRPbil9fjB+JHtmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8uZXZlcnl9YDtcclxuICAgICAgICBicmVhazsgICBcclxuICAgICAgY2FzZSAnbW9udGhseSc6XHJcbiAgICAgICAgcGF0dGVybiA9XHJcbiAgICAgICAgICBgM34ke3NlbGVjdGVkRGF5fX4ke3RoaXMuZ2V0TW9udGgoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+MGA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgXHJcbiAgICAgIGNhc2UgJ3F1YXJ0ZXJseSc6XHJcbiAgICAgICAgcGF0dGVybiA9IGA3fiR7c2VsZWN0ZWREYXl9fiR7dGhpcy5nZXRNb250aChmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ucmVwZWF0T24pfX4wYDtcclxuICAgICAgICBicmVhaztcclxuICAgICBcclxuICAgICBjYXNlICdzZW1lc3Rlcic6XHJcbiAgICAgIHBhdHRlcm4gPSBgOX4ke3NlbGVjdGVkRGF5fX4ke3RoaXMuZ2V0TW9udGgoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+MGA7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd5ZWFybHknOlxyXG4gICAgICAgIHBhdHRlcm4gPVxyXG4gICAgICAgICAgYDR+JHtzZWxlY3RlZERheX1+JHt0aGlzLmdldE1vbnRoKGZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5yZXBlYXRPbil9fjFgO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvbmdvaW5nJzpcclxuICAgICAgICBjb25zdCB0eXBlID0gWyd3ZWVrJywgJ21vbnRoJywgJ3F1YXJ0ZXInLCAnc2VtZXN0ZXInLCAneWVhciddO1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdHlwZS5pbmRleE9mKGZyZXF1ZW5jeS5vbkdvaW5nPy5zdGFydE9mKTtcclxuICAgICAgICBwYXR0ZXJuID0gYDEwfiR7ZnJlcXVlbmN5Lm9uR29pbmc/LnJlbWluZGVyc31+JHtpbmRleH1+MGA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3JhbmRvbSc6IFxyXG4gICAgICAgIGxldCByYW5kb21UeXBlID0gWyd3ZWVrbHknLCAnbW9udGhseScsICdxdWFydGVybHknLCAneWVhcmx5J107XHJcbiAgICAgICAgbGV0IHJhbmRvbUluZGV4ID0gcmFuZG9tVHlwZS5pbmRleE9mKGZyZXF1ZW5jeS5yYW5kb20udHlwZSk7XHJcbiAgICAgICAgcGF0dGVybiA9IGA4fiR7cmFuZG9tSW5kZXggKyAxfX4ke3RoaXMuZ2V0TW9udGgoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+JHtmcmVxdWVuY3kucmFuZG9tLm9jY3VycmVuY2V9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnb25fY29tcGxldGUnOlxyXG4gICAgICAgIHBhdHRlcm4gPSBgNn4wfjB+JHtmcmVxdWVuY3kub25Db21wbGV0ZT8uZHVlQWZ0ZXJ9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBwYXR0ZXJuID0gYDV+JHtmcmVxdWVuY3kucmFuZG9tLm9jY3VycmVuY2V9fjB+MGA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGF0dGVybjtcclxuICB9XHJcblxyXG4gIGdldERheShyZXBlYXRPcHRpb25zOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRheSA9IHJlcGVhdE9wdGlvbnMuc3BsaXQoJycpLm1hcChOdW1iZXIpO1xyXG4gICAgY29uc3QgZGF5TmFtZSA9IFtdO1xyXG4gICAgZm9yKGxldCBpID0gMDsgaSA8IDc7IGkgKyspIHtcclxuICAgICAgaWYoZGF5W2ldID09PSAxKSB7XHJcbiAgICAgICAgZGF5TmFtZS5wdXNoKGkgKyAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRheU5hbWUuam9pbignLCcpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TW9udGgocmVwZWF0T3B0aW9uczogc3RyaW5nKSB7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gcmVwZWF0T3B0aW9ucy5zcGxpdCgnJykubWFwKE51bWJlcik7XHJcbiAgICAgIGNvbnN0IG1vbnRoTmFtZSA9IFtdO1xyXG4gICAgICBmb3IobGV0IGkgPSAwOyBpIDwgMTI7IGkgKyspIHtcclxuICAgICAgICBpZihtb250aFtpXSA9PT0gMSkge1xyXG4gICAgICAgICAgbW9udGhOYW1lLnB1c2goaSArIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbW9udGhOYW1lLmpvaW4oJywnKTtcclxuICB9XHJcbiAgICBcclxuICAgIGdldExpZmVjeWNsZVBhdHRlcm4gKGZyZXF1ZW5jeTogYW55KSB7XHJcbiAgICAgIGxldCBwYXR0ZXJuID0gXCIwMDAwLTAwLTAwfn4wXCI7XHJcbiAgICAgIGlmKCFmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uZW5kQnkgJiYgIWZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRBZnRlcikge1xyXG4gICAgICAgIHJldHVybiAge1xyXG4gICAgICAgICAgc3RhcnRGcm9tOiBuZXcgRGF0ZShmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uc3RhcnRGcm9tKS5nZXRUaW1lKCkgLyAxMDAwLFxyXG4gICAgICAgICAgIHBhdHRlcm5cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZihmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uZW5kQnkpIHtcclxuICAgICAgICByZXR1cm4gIHtcclxuICAgICAgICAgIHN0YXJ0RnJvbTogbmV3IERhdGUoZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LnN0YXJ0RnJvbSkuZ2V0VGltZSgpIC8gMTAwMCxcclxuICAgICAgICAgICBwYXR0ZXJuOiB0aGlzLmZvcm1hdERhdGVTdHJpbmcoZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LmVuZEJ5KVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRBZnRlcikge1xyXG4gICAgICAgIHJldHVybiAge1xyXG4gICAgICAgICAgc3RhcnRGcm9tOiBuZXcgRGF0ZShmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uc3RhcnRGcm9tKS5nZXRUaW1lKCkgLyAxMDAwLFxyXG4gICAgICAgICAgIHBhdHRlcm46IFwiMDAwMC0wMC0wMH5+XCIgKyBmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uZW5kQWZ0ZXJcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBzdGFydEZyb206IG5ldyBEYXRlKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5zdGFydEZyb20pLmdldFRpbWUoKSAvIDEwMDAsXHJcbiAgICAgICAgcGF0dGVybjogXCIwMDAwLTAwLTAwfn4wXCJcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gKiBDb252ZXJ0cyBhIGRhdGUgc3RyaW5nIGluIFwiWVlZWS1NTS1ERFwiIGZvcm1hdCB0byBcIkRELU1vbnRoLVlZWVl+fjBcIi5cclxuICogXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRlU3RyaW5nIC0gVGhlIGlucHV0IGRhdGUgc3RyaW5nIGluIFwiWVlZWS1NTS1ERFwiIGZvcm1hdC5cclxuICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nIGluIFwiREQtTW9udGgtWVlZWX5+MFwiIGZvcm1hdC5cclxuICogXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogZm9ybWF0RGF0ZVN0cmluZyhcIjIwMjUtMDMtMjdcIik7IC8vIFJldHVybnMgXCIyNy1NYXJjaC0yMDI1fn4wXCJcclxuICogYGBgXHJcbiAqL1xyXG4gZm9ybWF0RGF0ZVN0cmluZyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlU3RyaW5nKTtcclxuICBcclxuICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKTtcclxuICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gIFxyXG4gIGNvbnN0IG1vbnRoTmFtZXMgPSBbXHJcbiAgICAgIFwiSmFudWFyeVwiLCBcIkZlYnJ1YXJ5XCIsIFwiTWFyY2hcIiwgXCJBcHJpbFwiLCBcIk1heVwiLCBcIkp1bmVcIixcclxuICAgICAgXCJKdWx5XCIsIFwiQXVndXN0XCIsIFwiU2VwdGVtYmVyXCIsIFwiT2N0b2JlclwiLCBcIk5vdmVtYmVyXCIsIFwiRGVjZW1iZXJcIlxyXG4gIF07XHJcbiAgY29uc3QgbW9udGggPSBtb250aE5hbWVzW2RhdGUuZ2V0TW9udGgoKV07XHJcblxyXG4gIHJldHVybiBgJHtkYXl9LSR7bW9udGh9LSR7eWVhcn1+fjBgO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0cmlldmVzIHRoZSBuYW1lIG9mIGEgbW9udGggYmFzZWQgb24gaXRzIG51bWVyaWNhbCB2YWx1ZS5cclxuICogXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBtb250aCAtIFRoZSBtb250aCBudW1iZXIgKDEtMTIpIHdoZXJlOlxyXG4gKiAgIDEgPSBKYW51YXJ5XHJcbiAqICAgMiA9IEZlYnJ1YXJ5XHJcbiAqICAgLi4uXHJcbiAqICAgMTIgPSBEZWNlbWJlclxyXG4gKiBcclxuICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gVGhlIG5hbWUgb2YgdGhlIG1vbnRoIChlLmcuLCBcIkpBTlwiLCBcIkZFQlwiLCBldGMuKSBvciB1bmRlZmluZWQgaWYgdGhlIG1vbnRoIG51bWJlciBpcyBpbnZhbGlkXHJcbiAqIFxyXG4gKiBAZXhhbXBsZVxyXG4gKiBnZXRNb250aE5hbWUoMSkgIC8vIFJldHVybnM6IFwiSmFuXCJcclxuICogZ2V0TW9udGhOYW1lKDEyKSAvLyBSZXR1cm5zOiBcIkRlY1wiXHJcbiAqIGdldE1vbnRoTmFtZSgxMykgLy8gUmV0dXJuczogdW5kZWZpbmVkXHJcbiAqL1xyXG5wdWJsaWMgZ2V0TW9udGhOYW1lKHNlbGVjdGVkTW9udGg6IG51bWJlcikgeyAgXHJcbiAgcmV0dXJuIE1PTlRIX05BTUVTLmZpbmQoKG1vbnRoOiBhbnkpID0+IG1vbnRoLnZhbHVlID09PSBzZWxlY3RlZE1vbnRoKT8ubW9udGg7XHJcbn1cclxuXHJcbn1cclxuIl19
849
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFHLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQUlwRSxNQUFNLE9BQU8sZ0JBQWdCO0lBcUUzQixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3hCLFVBQXNCLEVBQ2xCLE1BQXVCO1FBSDNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXZFekIsZUFBVSxHQUFrQjtZQUNqQyxTQUFTO1lBQ1QsVUFBVTtZQUNWLE9BQU87WUFDUCxPQUFPO1lBQ1AsS0FBSztZQUNMLE1BQU07WUFDTixNQUFNO1lBQ04sUUFBUTtZQUNSLFdBQVc7WUFDWCxTQUFTO1lBQ1QsVUFBVTtZQUNWLFVBQVU7U0FDWCxDQUFDO1FBRUssWUFBTyxHQUFrQjtZQUM5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LEVBQUUsVUFBVSxFQUFFLFVBQVU7U0FDbkUsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUUxQyxPQUFPLEdBQUcsR0FBRyxJQUFJLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0ksWUFBWSxDQUFDLGFBQXFCO1FBQ3ZDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxhQUFhLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDaEYsQ0FBQzsrR0FoM0JZLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBMEVJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgIHJldHJ5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb25zJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC9tb21lbnQnO1xyXG5pbXBvcnQgeyBERUZBVUxUX1RJTUUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGltZS5jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBGcmVxdWVuY3lPYmplY3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ZyZXF1ZW5jeS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXBpLmNvbnN0YW50cyc7XHJcbmltcG9ydCB7IEdyY1NlcnZpY2UgfSBmcm9tICcuLi8uLi93b3JrZmxvdy9zaGFyZWQvc2VydmljZXMvZ3JjLnNlcnZpY2UnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBNT05USF9OQU1FUyB9IGZyb20gJy4vZnJlcXVlbmN5LmNvbnN0YW50JztcclxuaW1wb3J0IHsgUEFHSU5BVElPTl9MSU1JVCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb21tb24uY29uc3RhbnRzJztcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZyZXF1ZW5jeVNlcnZpY2Uge1xyXG4gIHB1YmxpYyBtb250aEFycmF5OiBBcnJheTxzdHJpbmc+ID0gW1xyXG4gICAgJ0phbnVhcnknLFxyXG4gICAgJ0ZlYnJ1YXJ5JyxcclxuICAgICdNYXJjaCcsXHJcbiAgICAnQXByaWwnLFxyXG4gICAgJ01heScsXHJcbiAgICAnSnVuZScsXHJcbiAgICAnSnVseScsXHJcbiAgICAnQXVndXN0JyxcclxuICAgICdTZXB0ZW1iZXInLFxyXG4gICAgJ09jdG9iZXInLFxyXG4gICAgJ05vdmVtYmVyJyxcclxuICAgICdEZWNlbWJlcicsXHJcbiAgXTtcclxuXHJcbiAgcHVibGljIGRheU5hbWU6IEFycmF5PHN0cmluZz4gPSBbXHJcbiAgICAnTW9uZGF5JyxcclxuICAgICdUdWVzZGF5JyxcclxuICAgICdXZWRuZXNkYXknLFxyXG4gICAgJ1RodXJzZGF5JyxcclxuICAgICdGcmlkYXknLFxyXG4gICAgJ1NhdHVyZGF5JyxcclxuICAgICdTdW5kYXknLFxyXG4gIF07IC8vIGZ1bGwgZGF5IG5hbWVcclxuXHJcbiAgcHVibGljIHF1YXJ0ZXJseU1vbnRoOiBBcnJheTxzdHJpbmc+ID0gW1xyXG4gICAgJ0phbnVhcnksIEFwcmlsLCBKdWx5LCBPY3RvYmVyJyxcclxuICAgICdGZWJydWFyeSwgTWF5LCBBdWd1c3QsIE5vdmVtYmVyJyxcclxuICAgICdNYXJjaCwgSnVuZSwgU2VwdGVtYmVyLCBEZWNlbWJlcicsXHJcbiAgXTtcclxuXHJcbiAgcHVibGljIGRhdGVDb25maWcgPSB7XHJcbiAgICBmb3JtYXQ6ICdERCBNTSBZWVlZJyxcclxuICAgIHNob3dHb1RvQ3VycmVudDogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGZyZXF1ZW5jeUluZm8gPSB7XHJcbiAgICBwbGFjZWhvbGRlcjogJycsXHJcbiAgICBwYXR0ZXJuOiAnJyxcclxuICAgIGNhc2U6ICcnLFxyXG4gICAgZmFpbGVkQWZ0ZXI6IDAsXHJcbiAgICB3aW5kb3c6IDAsXHJcbiAgICB0aW1lSW4xMmhyOiAnJyxcclxuICAgIHRpbWVJbjI0SHI6ICcnLFxyXG4gICAgbGlmZWN5Y2xlRGV0YWlsczogJzAwMDAtMDAtMDB+fjAnLFxyXG4gICAgc3RhcnRGcm9tOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcclxuICAgIHJlcG9ydElkOiAwLFxyXG4gICAgZmFpbGVkX3RpbWVfdXRjOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcclxuICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXHJcbiAgICBkYXRlT2ZNb2RpZmllZDogMCxcclxuICAgIHN0YXJ0RGF0ZTogJycsXHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGZyZXF1ZW5jeURldGFpbHM6IG9iamVjdCA9IHtcclxuICAgIHBhdHRlcm46ICcnLFxyXG4gICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcclxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxyXG4gICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXHJcbiAgICBzZWxlY3RlZFJlcG9ydDogMCxcclxuICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxyXG4gICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXHJcbiAgICB3aW5kb3c6IDAsXHJcbiAgICBmYWlsZWQ6IDAsXHJcbiAgICB0aW1lOiBERUZBVUxUX1RJTUUsXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBlbnYhOiBhbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgZ3JjU2VydmljZTogR3JjU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXHJcbiAgKSB7XHJcbiAgICBpZiAoY29uZmlnKSB7XHJcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRpbWVGcm9tMTJoVG8yNGgodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCB0aW1lX2FyciA9IHZhbHVlLnNwbGl0KCcgJyk7XHJcbiAgICAgIGNvbnN0IG1lcmlkaWFuID0gdGltZV9hcnJbMV07XHJcbiAgICAgIGNvbnN0IGhyX21pbiA9IHRpbWVfYXJyWzBdLnNwbGl0KCc6JykubWFwKE51bWJlcik7XHJcbiAgICAgIGxldCBociA9IGhyX21pblswXTtcclxuICAgICAgY29uc3QgbWluID0gaHJfbWluWzFdID8/IDA7XHJcbiAgICAgIGNvbnN0IHNlYyA9IGhyX21pblsyXSA/PyAwO1xyXG5cclxuICAgICAgaWYgKG1lcmlkaWFuPy50b0xvd2VyQ2FzZSgpID09ICdwbScpIHtcclxuICAgICAgICBpZiAoaHIgPCAxMikge1xyXG4gICAgICAgICAgaHIgPSBociArIDEyO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaHIgPT0gMTIpIHtcclxuICAgICAgICAgIGhyID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgU3RyaW5nKGhyKS5wYWRTdGFydCgyLCAnMCcpICtcclxuICAgICAgICAnOicgK1xyXG4gICAgICAgIFN0cmluZyhtaW4pLnBhZFN0YXJ0KDIsICcwJykgK1xyXG4gICAgICAgICc6JyArXHJcbiAgICAgICAgU3RyaW5nKHNlYykucGFkU3RhcnQoMiwgJzAnKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGltZUluMTIodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHZhbHVlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBsZXQgaHI7XHJcbiAgICAgIGxldCBtaW47XHJcbiAgICAgIGxldCBtZXJpZGlhbjtcclxuICAgICAgaWYgKHZhbHVlLnNwbGl0KCc6JylbMF0gPj0gMTIpIHtcclxuICAgICAgICBociA9IHZhbHVlLnNwbGl0KCc6JylbMF0gPT09ICcxMicgPyAxMiA6IHZhbHVlLnNwbGl0KCc6JylbMF0gLSAxMjtcclxuICAgICAgICBtaW4gPSB2YWx1ZS5zcGxpdCgnOicpWzFdO1xyXG4gICAgICAgIGlmIChtaW4ubGVuZ3RoIDwgMikge1xyXG4gICAgICAgICAgbWluID0gJzAnICsgbWluO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtZXJpZGlhbiA9ICdwbSc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaHIgPSB2YWx1ZS5zcGxpdCgnOicpWzBdID09ICcwMCcgPyAxMiA6IHZhbHVlLnNwbGl0KCc6JylbMF07XHJcbiAgICAgICAgbWluID0gdmFsdWUuc3BsaXQoJzonKVsxXTtcclxuICAgICAgICBpZiAobWluLmxlbmd0aCA8IDIpIHtcclxuICAgICAgICAgIG1pbiA9ICcwJyArIG1pbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWVyaWRpYW4gPSAnYW0nO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBociArICc6JyArIG1pbiArICcgJyArIG1lcmlkaWFuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZnJhbWV3b3JrU3RhcnREYXRlKHJvdzogYW55KSB7XHJcbiAgICBsZXQgY2FsY3VsYXRlZERheTogbnVtYmVyID0gMDtcclxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSAqIDEwMDApLmdldERheSgpO1xyXG4gICAgY29uc3QgZ2V0RGF0ZSA9IG5ldyBEYXRlKHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSAqIDEwMDApLmdldERhdGUoKTtcclxuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKS5nZXREYXkoKTtcclxuICAgIGNvbnN0IHN0YXJ0TW9udGggPSBuZXcgRGF0ZShwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgKiAxMDAwKS5nZXRNb250aCgpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgcGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpIDwgRGF0ZS5ub3coKSAvIDEwMDAgJiZcclxuICAgICAgKHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSB3ZWVrJyB8fFxyXG4gICAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSAyIHdlZWtzJyB8fFxyXG4gICAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSAzIHdlZWtzJylcclxuICAgICkge1xyXG4gICAgICBsZXQgZGF5c1RvQmVBZGRlZCA9IDA7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNzsgaSsrKSB7XHJcbiAgICAgICAgaWYgKChjdXJyZW50RGF0ZSArIGkpICUgNyA9PT0gc3RhcnREYXRlKSB7XHJcbiAgICAgICAgICBkYXlzVG9CZUFkZGVkID0gaTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb25zdCB0aW1lc3RhbXBUb0JlQWRkZWQgPSBkYXlzVG9CZUFkZGVkICogMjQgKiA2MCAqIDYwICogMTAwMDtcclxuICAgICAgY2FsY3VsYXRlZERheSA9IG5ldyBEYXRlKFxyXG4gICAgICAgIG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgdGltZXN0YW1wVG9CZUFkZGVkXHJcbiAgICAgICkuZ2V0VGltZSgpO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgcGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpIDwgRGF0ZS5ub3coKSAvIDEwMDAgJiZcclxuICAgICAgIShcclxuICAgICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgd2VlaycgfHxcclxuICAgICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgMiB3ZWVrcycgfHxcclxuICAgICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgMyB3ZWVrcydcclxuICAgICAgKSAmJlxyXG4gICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlICE9PSAnZXZlcnkgZGF5J1xyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IG1vbWVudFVuaXggPSBtb21lbnQoXHJcbiAgICAgICAgZ2V0RGF0ZSArXHJcbiAgICAgICAgICAnLScgK1xyXG4gICAgICAgICAgKG5ldyBEYXRlKCkuZ2V0TW9udGgoKSArIDEpICtcclxuICAgICAgICAgICctJyArXHJcbiAgICAgICAgICBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgK1xyXG4gICAgICAgICAgJyAwMDowMCcsXHJcbiAgICAgICAgJ0RELU1NLVlZWVkgSEg6bW0nXHJcbiAgICAgICkudW5peCgpO1xyXG4gICAgICBjYWxjdWxhdGVkRGF5ID0gbW9tZW50VW5peCAqIDEwMDA7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgZGF5JyAmJlxyXG4gICAgICBwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgPCBEYXRlLm5vdygpIC8gMTAwMFxyXG4gICAgKSB7XHJcbiAgICAgIGNhbGN1bGF0ZWREYXkgPSBEYXRlLm5vdygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2FsY3VsYXRlZERheSA9IHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSAqIDEwMDA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2FsY3VsYXRlZERheSAvIDEwMDA7XHJcbiAgfVxyXG5cclxuICBmcmFtZXdvcmtGcmVxdWVuY3koZnJlcXVlbmN5OiBhbnksIHN0YXJ0X2RhdGU6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoc3RhcnRfZGF0ZSAqIDEwMDApO1xyXG4gICAgICBjb25zdCBmaXJzdEhhbGZNb250aCA9IFsnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnXTtcclxuICAgICAgY29uc3Qgc2Vjb25kSGFsZk1vbnRoID0gWyc3JywgJzgnLCAnOScsICcxMCcsICcxMScsICcxMiddO1xyXG4gICAgICBjb25zdCBnZXREYXlEYXRhID0gc3RhcnREYXRlLmdldERheSgpID09PSAwID8gNyA6IHN0YXJ0RGF0ZS5nZXREYXkoKTtcclxuICAgICAgY29uc3QgbW9udGggPSBzdGFydERhdGUuZ2V0TW9udGgoKTtcclxuICAgICAgbGV0IHF1YXJ0ZXJQYXR0ZXJuID0gJ34xLDQsNywxMH4wJztcclxuICAgICAgc3dpdGNoIChtb250aCkge1xyXG4gICAgICAgIGNhc2UgMDpcclxuICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgY2FzZSA2OlxyXG4gICAgICAgIGNhc2UgOTpcclxuICAgICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34xLDQsNywxMH4wJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgMTpcclxuICAgICAgICBjYXNlIDQ6XHJcbiAgICAgICAgY2FzZSA3OlxyXG4gICAgICAgIGNhc2UgMTA6XHJcbiAgICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+Miw1LDgsMTF+MCc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgY2FzZSA1OlxyXG4gICAgICAgIGNhc2UgODpcclxuICAgICAgICBjYXNlIDExOlxyXG4gICAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjMsNiw5LDEyfjAnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgLy8gXTtcclxuICAgICAgbGV0IGZyZXF1ZW5jeV9wYXR0ZXJuO1xyXG5cclxuICAgICAgZnJlcXVlbmN5ID0gZnJlcXVlbmN5LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGxldCBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMDtcclxuICAgICAgLy8gQCA9PiBkYXkgKDEgdG8gNylcclxuICAgICAgLy8gIyA9PiBtb250aCAoMSB0byAxMilcclxuICAgICAgLy8gPyA9PiBtb250aCAlIDIgPT0gMCA/IFwiMiw0LDYsOCwxMCwxMlwiIDogXCIxLDMsNSw3LDksMTFcIlxyXG5cclxuICAgICAgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IHdlZWsnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMn4nICsgZ2V0RGF5RGF0YSArICd+MH4xJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnb25lIHRpbWUnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxyXG4gICAgICAgICAgJzB+JyArXHJcbiAgICAgICAgICBzdGFydERhdGUuZ2V0RnVsbFllYXIoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIHN0YXJ0RGF0ZS5nZXREYXRlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgZGF5Jykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjEnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBhbHRlcm5hdGUgZGF5Jykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjInO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAxMCBkYXlzJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjEwJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMiB3ZWVrcycpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcyficgKyBnZXREYXlEYXRhICsgJ34wfjInO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBmb3J0bmlnaHQnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4nICsgZ2V0RGF5RGF0YSArICd+MH4xNCc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDMgd2Vla3MnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMn4nICsgZ2V0RGF5RGF0YSArICd+MH4zJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgbW9udGgnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxyXG4gICAgICAgICAgJzN+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnfjEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyfjAnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSA0NSBkYXlzJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjQ1JztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgYWx0ZXJuYXRlIG1vbnRoJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cclxuICAgICAgICAgICczficgK1xyXG4gICAgICAgICAgc3RhcnREYXRlLmdldERhdGUoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICUgMiA9PSAwXHJcbiAgICAgICAgICAgID8gJzIsNCw2LDgsMTAsMTInXHJcbiAgICAgICAgICAgIDogJzEsMyw1LDcsOSwxMScpICtcclxuICAgICAgICAgICd+MCc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IHF1YXJ0ZXInKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnN34nICsgc3RhcnREYXRlLmdldERhdGUoKSArIHF1YXJ0ZXJQYXR0ZXJuO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDEyMCBkYXlzJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjEyMCc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnaGFsZiB5ZWFybHknKSB7XHJcbiAgICAgICAgY29uc3QgaW5kZXgxID0gZmlyc3RIYWxmTW9udGguaW5kZXhPZihcclxuICAgICAgICAgIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKClcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IGluZGV4MiA9IHNlY29uZEhhbGZNb250aC5pbmRleE9mKFxyXG4gICAgICAgICAgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgcGF0dGVybiA9XHJcbiAgICAgICAgICBpbmRleDEgPiAtMVxyXG4gICAgICAgICAgICA/ICd+JyArXHJcbiAgICAgICAgICAgICAgZmlyc3RIYWxmTW9udGhbaW5kZXgxXSArXHJcbiAgICAgICAgICAgICAgJywnICtcclxuICAgICAgICAgICAgICBzZWNvbmRIYWxmTW9udGhbaW5kZXgxXSArXHJcbiAgICAgICAgICAgICAgJ34wJ1xyXG4gICAgICAgICAgICA6ICd+JyArXHJcbiAgICAgICAgICAgICAgZmlyc3RIYWxmTW9udGhbaW5kZXgyXSArXHJcbiAgICAgICAgICAgICAgJywnICtcclxuICAgICAgICAgICAgICBzZWNvbmRIYWxmTW9udGhbaW5kZXgyXSArXHJcbiAgICAgICAgICAgICAgJ34wJztcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICczficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgcGF0dGVybjtcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAneWVhcmx5Jykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cclxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjEnO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDIgeWVhcnMnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxyXG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+Mic7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMyB5ZWFycycpIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XHJcbiAgICAgICAgICAnNH4nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+JyArIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICsgJ34zJztcclxuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSA0IHllYXJzJykge1xyXG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cclxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjQnO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDUgeWVhcnMnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxyXG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+NSc7XHJcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMTAgeWVhcnMnKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxyXG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+MTAnO1xyXG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ3RvIGJlIGRlY2lkZWQgbGF0ZXInKSB7XHJcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcnO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHRoaXMuZWRpdERhdGEuZnJlcXVlbmN5X2RldGFpbHMgPSBmcmVxdWVuY3lfcGF0dGVybjtcclxuXHJcbiAgICAgIHJldHVybiB7IGZyZXF1ZW5jeV9wYXR0ZXJuLCBjb250aW51b3VzX2ZhaWxlZF9kYXlzIH07XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgIHJldHVybiB7IGZyZXF1ZW5jeV9wYXR0ZXJuOiAnJywgY29udGludW91c19mYWlsZWRfZGF5czogMCB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvcnRIYW5kX2ZyZXFDYWwoZnJlcXVlbmN5OiBhbnksIGRheTogYW55LCBtb250aDogYW55LCB5ZWFyPzogYW55KSB7XHJcbiAgICBjb25zdCBtb250aE5hbWVzID0gTU9OVEhfTkFNRVM7XHJcbiAgICBsZXQgZnJlcXVlbmN5X2RldGFpbHM7XHJcbiAgICBsZXQgY29udGludW91c19mYWlsZWRfZGF5cyA9IDA7XHJcbiAgICBjb25zdCBkYXRlX3ZhbHVlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICBkYXRlX3ZhbHVlLnNldE1vbnRoKFxyXG4gICAgICB0eXBlb2YgbW9udGggIT09ICdudW1iZXInXHJcbiAgICAgICAgPyBtb250aE5hbWVzLmZpbHRlcigoeCkgPT4geC5tb250aCA9PT0gbW9udGg/LnN1YnN0cmluZygwLCAzKSlbMF1cclxuICAgICAgICAgICAgPy52YWx1ZSAtIDFcclxuICAgICAgICA6IG1vbnRoXHJcbiAgICApO1xyXG4gICAgaWYgKCF5ZWFyKSB7XHJcbiAgICAgIGRhdGVfdmFsdWUuc2V0RnVsbFllYXIoMjAgKyBtb250aC5zcGxpdChcIidcIilbMV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGF0ZV92YWx1ZS5zZXRGdWxsWWVhcih5ZWFyKTtcclxuICAgIH1cclxuICAgIGRhdGVfdmFsdWUuc2V0RGF0ZShkYXkpO1xyXG4gICAgbGV0IHF1YXJ0ZXJQYXR0ZXJuID0gJ34xLDQsNywxMH4wJztcclxuICAgIGNvbnN0IGZpcnN0SGFsZk1vbnRoID0gWycxJywgJzInLCAnMycsICc0JywgJzUnLCAnNiddO1xyXG4gICAgY29uc3Qgc2Vjb25kSGFsZk1vbnRoID0gWyc3JywgJzgnLCAnOScsICcxMCcsICcxMScsICcxMiddO1xyXG4gICAgZnJlcXVlbmN5ID0gZnJlcXVlbmN5LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgc3dpdGNoIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkpIHtcclxuICAgICAgY2FzZSAwOlxyXG4gICAgICBjYXNlIDM6XHJcbiAgICAgIGNhc2UgNjpcclxuICAgICAgY2FzZSA5OlxyXG4gICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34xLDQsNywxMH4wJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICBjYXNlIDQ6XHJcbiAgICAgIGNhc2UgNzpcclxuICAgICAgY2FzZSAxMDpcclxuICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+Miw1LDgsMTF+MCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgY2FzZSA1OlxyXG4gICAgICBjYXNlIDg6XHJcbiAgICAgIGNhc2UgMTE6XHJcbiAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjMsNiw5LDEyfjAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZ2V0RGF5ID0gZGF0ZV92YWx1ZS5nZXREYXkoKSA9PT0gMCA/IDcgOiBkYXRlX3ZhbHVlLmdldERheSgpO1xyXG4gICAgc3dpdGNoIChmcmVxdWVuY3kpIHtcclxuICAgICAgY2FzZSAnZXZlcnkgd2Vlayc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMn4nICsgZ2V0RGF5ICsgJ34wfjEnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnb25lIHRpbWUnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cclxuICAgICAgICAgICcwficgK1xyXG4gICAgICAgICAgJycgK1xyXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXRGdWxsWWVhcigpICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSBkYXknOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjEnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgYWx0ZXJuYXRlIGRheSc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMX4wfjB+Mic7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSAxMCBkYXlzJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxfjB+MH4xMCc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSAyIHdlZWtzJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcyficgKyBnZXREYXkgKyAnfjB+Mic7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSBmb3J0bmlnaHQnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+JyArIGdldERheSArICd+MH4xNCc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSAzIHdlZWtzJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcyficgKyBnZXREYXkgKyAnfjB+Myc7XHJcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSBtb250aCc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxyXG4gICAgICAgICAgJzN+JyArIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICsgJ34xLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMn4wJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IDQ1IGRheXMnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjQ1JztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IGFsdGVybmF0ZSBtb250aCc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxyXG4gICAgICAgICAgJzN+JyArXHJcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSAlIDIgPT09IDBcclxuICAgICAgICAgICAgPyAnMiw0LDYsOCwxMCwxMidcclxuICAgICAgICAgICAgOiAnMSwzLDUsNyw5LDExJykgK1xyXG4gICAgICAgICAgJ34wJztcclxuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IHF1YXJ0ZXInOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzd+JyArIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICsgcXVhcnRlclBhdHRlcm47XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IDEyMCBkYXlzJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxfjB+MH4xMjAnO1xyXG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnaGFsZiB5ZWFybHknOlxyXG4gICAgICAgIGNvbnN0IGluZGV4MSA9IGZpcnN0SGFsZk1vbnRoLmluZGV4T2YoXHJcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgaW5kZXgyID0gc2Vjb25kSGFsZk1vbnRoLmluZGV4T2YoXHJcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgcGF0dGVybiA9XHJcbiAgICAgICAgICBpbmRleDEgPiAtMVxyXG4gICAgICAgICAgICA/ICd+JyArXHJcbiAgICAgICAgICAgICAgZmlyc3RIYWxmTW9udGhbaW5kZXgxXSArXHJcbiAgICAgICAgICAgICAgJywnICtcclxuICAgICAgICAgICAgICBzZWNvbmRIYWxmTW9udGhbaW5kZXgxXSArXHJcbiAgICAgICAgICAgICAgJ34wJ1xyXG4gICAgICAgICAgICA6ICd+JyArXHJcbiAgICAgICAgICAgICAgZmlyc3RIYWxmTW9udGhbaW5kZXgyXSArXHJcbiAgICAgICAgICAgICAgJywnICtcclxuICAgICAgICAgICAgICBzZWNvbmRIYWxmTW9udGhbaW5kZXgyXSArXHJcbiAgICAgICAgICAgICAgJ34wJztcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICczficgKyBkYXRlX3ZhbHVlLmdldERhdGUoKSArIHBhdHRlcm47XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2FubnVhbCc6XHJcbiAgICAgIGNhc2UgJ3llYXJseSc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxyXG4gICAgICAgICAgJzR+JyArXHJcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcclxuICAgICAgICAgICd+MSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IDIgeWVhcnMnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cclxuICAgICAgICAgICc0ficgK1xyXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICAgICAnfjInO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSAzIHllYXJzJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XHJcbiAgICAgICAgICAnNH4nICtcclxuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAgICAgJ34zJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZXZlcnkgNCB5ZWFycyc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxyXG4gICAgICAgICAgJzR+JyArXHJcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcclxuICAgICAgICAgICd+NCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V2ZXJ5IDUgeWVhcnMnOlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cclxuICAgICAgICAgICc0ficgK1xyXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICAgICAnfjUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdldmVyeSAxMCB5ZWFycyc6XHJcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxyXG4gICAgICAgICAgJzR+JyArXHJcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcclxuICAgICAgICAgICd+MTAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvbmdvaW5nJzpcclxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxMH4wfjB+MCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3RvIGJlIGRlY2lkZWQgbGF0ZXInOlxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzV+MH4wfjAnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcGF0dGVybjogZnJlcXVlbmN5X2RldGFpbHMsXHJcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0T25Db21wbGV0aW9uT2ZSZXNwb25zaWJpbGl0eSgpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXHJcbiAgICAgICd0b2tlbicsXHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcclxuICAgICk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52LmNvbXBsaWFuY2VHZXQgKyAncmVwb3J0cy9vbkNvbXBsZXRpb25PZlJlcG9ydHMnLCB7XHJcbiAgICAgICAgaGVhZGVycyxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUocmV0cnkoMikpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlVGltZVpvbmUoZGF0ZTogYW55KSB7XHJcbiAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGludkRhdGUgPSBuZXcgRGF0ZShcclxuICAgICAgZGF0ZS50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7XHJcbiAgICAgICAgdGltZVpvbmU6IHRoaXMuYXV0aFNlcnZpY2U/LnVzZXJEZXRhaWxzPy50aW1lem9uZSxcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICByZXR1cm4gaW52RGF0ZTtcclxuICB9XHJcblxyXG4gIGdldFJlc3BvbnNpYmlsaXR5TGlzdChwYXlsb2FkOiBhbnkpIHtcclxuICAgIGNvbnN0IGxpbWl0ID0gUEFHSU5BVElPTl9MSU1JVDtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXHJcbiAgICAgICd0b2tlbicsXHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCksXHJcbiAgICApXHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQ8YW55PihcclxuICAgICAgICBgJHt0aGlzLmVudi5jb21wbGlhbmNlR2V0fXNhaWxzUmVzcG9uc2liaWxpdGllc0xpc3QmcGFnZT0ke3BheWxvYWQ/LnBhZ2VOb30mbGltaXQ9JHtsaW1pdH0ke3BheWxvYWQ/LnNlYXJjaFRlcm0gPyBgJnNlYXJjaFRlcm09JHtwYXlsb2FkPy5zZWFyY2hUZXJtfWAgOiAnJ30mYml6Q3ljbGVSZXF1aXJlZD0wJmluY2x1ZGU9YXNzaWduZWVzJmdyb3VwPWFsbGAsXHJcbiAgICAgICAgeyBoZWFkZXJzIH1cclxuICAgICAgKVxyXG4gICAgICAucGlwZShyZXRyeSgxKSk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXNwb25zaWJpbGl0aWVzQ291bnQocGF5bG9hZDogYW55KSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxyXG4gICAgICAndG9rZW4nLFxyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KFxyXG4gICAgICAgIHRoaXMuZW52LnJlc3BvbnNpYmlsaXR5UG9zdCArICdtYW5hZ2VfcmVzcG9uc2liaWxpdGllc19yZXBvcnRzX2NvdW50JyxcclxuICAgICAgICBwYXlsb2FkLFxyXG4gICAgICAgIHsgaGVhZGVycyB9XHJcbiAgICAgIClcclxuICAgICAgLnBpcGUocmV0cnkoMSkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsUmVzcG9uc2liaWxpdGllcyhwYWdlTm86IG51bWJlciwgcGF5bG9hZDogYW55KSB7XHJcbiAgICBjb25zdCBidXNpbmVzc0N5Y2xlID0gdGhpcy5ncmNTZXJ2aWNlLmdldEJ1c2luZXNzQ3ljbGUoKTtcclxuICAgIGNvbnN0IGZvcm1hdHRlZEN5Y2xlID0gYnVzaW5lc3NDeWNsZS5zZWxlY3RlZF9jeWNsZVxyXG4gICAgICA/IGRheWpzKGJ1c2luZXNzQ3ljbGUuc2VsZWN0ZWRfY3ljbGUuc3BsaXQoJy0nKVswXSkuZm9ybWF0KCdZWVlZLU1NLUREJykgKyBcclxuICAgICAgICAnOicgKyBcclxuICAgICAgICBkYXlqcyhidXNpbmVzc0N5Y2xlLnNlbGVjdGVkX2N5Y2xlLnNwbGl0KCctJylbMV0pLmZvcm1hdCgnWVlZWS1NTS1ERCcpXHJcbiAgICAgIDogJyc7XHJcbiAgICBcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxyXG4gICAgICAuc2V0KCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpXHJcbiAgICAgIC5zZXQoJ2Jpel9jeWNsZScsIGZvcm1hdHRlZEN5Y2xlKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihcclxuICAgICAgdGhpcy5lbnYuY29tcGxpYW5jZUdldCArIEFQSS5yZXNwb25zaWJpbGl0eUxpc3QgKyBgJnBhZ2U9JHtwYWdlTm99JmxpbWl0PSR7UEFHSU5BVElPTl9MSU1JVH0ke3BheWxvYWQ/LnNlYXJjaFRlcm0gPyBgJnNlYXJjaFRlcm09JHtwYXlsb2FkPy5zZWFyY2hUZXJtfWAgOiAnJ31gICxcclxuICAgICAgeyBoZWFkZXJzIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXREYXRlKCkge1xyXG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgZGF5ID0gU3RyaW5nKGN1cnJlbnREYXRlPy5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCBtb250aCA9IFN0cmluZyhjdXJyZW50RGF0ZT8uZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBjb25zdCB5ZWFyID0gY3VycmVudERhdGU/LmdldEZ1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gYCR7ZGF5fS0ke21vbnRofS0ke3llYXJ9YDtcclxuICAgIHJldHVybiBmb3JtYXR0ZWREYXRlO1xyXG4gIH1cclxuICBcclxuICAvKipcclxuICAgKiBDb252ZXJ0cyBhIGZyZXF1ZW5jeSBjb25maWd1cmF0aW9uIG9iamVjdCBpbnRvIGEgc3RhbmRhcmRpemVkIEZyZXF1ZW5jeU9iamVjdCBmb3JtYXQuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGZyZXF1ZW5jeSAtIFRoZSBpbnB1dCBmcmVxdWVuY3kgY29uZmlndXJhdGlvbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XHJcbiAgICogLSBjYXNlOiBUaGUgdHlwZSBvZiBmcmVxdWVuY3kgKCdvbmVfdGltZScgfCAnZGFpbHknIHwgJ3dlZWtseScgfCAnbW9udGhseScgfCAncXVhcnRlcmx5JyB8ICdzZW1lc3RlcicgfCAneWVhcmx5JyB8ICdyYW5kb20nIHwgJ29uZ29pbmcnIHwgJ29uX2NvbXBsZXRpb25fb2YnIHwgJ2JpYW5udWFsbHknKVxyXG4gICAqIC0gd2luZG93OiBOdW1iZXIgb2YgZGF5cyBiZWZvcmUgdGhlIHRhc2sgY2FuIGJlIHN0YXJ0ZWRcclxuICAgKiAtIGZhaWxlZEFmdGVyOiBOdW1iZXIgb2YgZGF5cyBhZnRlciB3aGljaCB0aGUgdGFzayBpcyBjb25zaWRlcmVkIGZhaWxlZFxyXG4gICAqIC0gY29udGludW91c19mYWlsZWRfZGF5czogTnVtYmVyIG9mIGRheXMgYWZ0ZXIgd2hpY2ggdGhlIHRhc2sgaXMgYXV0by1kZWFjdGl2YXRlZFxyXG4gICAqIC0gZGF5OiBUaGUgZGF5IG9mIG9jY3VycmVuY2VcclxuICAgKiAtIHRpbWVJbjI0SHI6IFRpbWUgaW4gMjQtaG91ciBmb3JtYXRcclxuICAgKiAtIGV2ZXJ5OiBGcmVxdWVuY3kgaW50ZXJ2YWxcclxuICAgKiAtIHNlbGVjdGVkRGF5OiBBcnJheSBvZiBzZWxlY3RlZCBkYXlzIGZvciB3ZWVrbHkgZnJlcXVlbmN5ICgxLTcgcmVwcmVzZW50aW5nIE1vbmRheS1TdW5kYXkpXHJcbiAgICogLSBzZWxlY3RlZE1vbnRoOiBBcnJheSBvZiBzZWxlY3RlZCBtb250aHMgKDAtMTEgcmVwcmVzZW50aW5nIEphbnVhcnktRGVjZW1iZXIpXHJcbiAgICogLSBzdGFydEZyb206IFVuaXggdGltZXN0YW1wIGZvciB0aGUgc3RhcnQgZGF0ZVxyXG4gICAqIC0gbGlmZWN5Y2xlRGV0YWlsczogU3RyaW5nIGluIGZvcm1hdCBcIllZWVktTU0tRER+fk5cIiB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXNcclxuICAgKiAtIHJhbmRvbVR5cGVTZWxlY3RlZDogSW5kZXggZm9yIHJhbmRvbSBmcmVxdWVuY3kgdHlwZSAoMDogd2Vla2x5LCAxOiBtb250aGx5LCAyOiBxdWFydGVybHksIDM6IHllYXJseSlcclxuICAgKiAtIHJhbmRvbUluc3RhbmNlczogTnVtYmVyIG9mIHJhbmRvbSBvY2N1cnJlbmNlc1xyXG4gICAqIC0gc2VsZWN0ZWRUeXBlOiBOdW1iZXIgb2YgcmVtaW5kZXJzIGZvciBvbmdvaW5nIGZyZXF1ZW5jeVxyXG4gICAqIC0gc2VsZWN0ZWRPbmdvaW5nVHlwZTogSW5kZXggZm9yIG9uZ29pbmcgZnJlcXVlbmN5IHR5cGUgKDE6IHdlZWssIDI6IG1vbnRoLCAzOiBxdWFydGVyLCA0OiBzZW1lc3RlciwgNTogeWVhcilcclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBBIEZyZXF1ZW5jeU9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxyXG4gICAqIC0gdHlwZTogRnJlcXVlbmN5IHR5cGVcclxuICAgKiAtIHN0YXJ0QmVmb3JlOiBEYXlzIGJlZm9yZSB0YXNrIGNhbiBzdGFydFxyXG4gICAqIC0gZW5kQWZ0ZXI6IERheXMgYWZ0ZXIgd2hpY2ggdGFzayBmYWlsc1xyXG4gICAqIC0gYXV0b0RlYWN0aXZhdGU6IERheXMgYWZ0ZXIgd2hpY2ggdGFzayBpcyBkZWFjdGl2YXRlZFxyXG4gICAqIC0gZGF5OiBEYXkgb2Ygb2NjdXJyZW5jZVxyXG4gICAqIC0gdGltZTogVGltZSBpbiAyNC1ob3VyIGZvcm1hdFxyXG4gICAqIC0gcmVwZWF0T3B0aW9uczoge1xyXG4gICAqICAgICBldmVyeTogbnVtYmVyLFxyXG4gICAqICAgICByZXBlYXRPbjogc3RyaW5nIChiaW5hcnkgcmVwcmVzZW50YXRpb24gb2Ygc2VsZWN0ZWQgZGF5cy9tb250aHMpLFxyXG4gICAqICAgICBsaWZlY3ljbGU6IHtcclxuICAgKiAgICAgICBzdGFydEZyb206IHN0cmluZyAoWVlZWS1NTS1ERCksXHJcbiAgICogICAgICAgZW5kQnk/OiBzdHJpbmcgKFlZWVktTU0tREQpLFxyXG4gICAqICAgICAgIGVuZEFmdGVyPzogbnVtYmVyXHJcbiAgICogICAgIH1cclxuICAgKiAgIH1cclxuICAgKiAtIHJhbmRvbT86IHsgdHlwZTogc3RyaW5nLCBvY2N1cnJlbmNlOiBudW1iZXIgfVxyXG4gICAqIC0gb25Db21wbGV0ZToge31cclxuICAgKiAtIG9uR29pbmc6IHsgcmVtaW5kZXJzOiBudW1iZXIsIHN0YXJ0T2Y6ICd3ZWVrJyB8ICdtb250aCcgfCAncXVhcnRlcicgfCAnc2VtZXN0ZXInIHwgJ3llYXInIH1cclxuICAgKiBcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGBgYHR5cGVzY3JpcHRcclxuICAgKiBjb25zdCBmcmVxdWVuY3kgPSB7XHJcbiAgICogICBjYXNlOiAnd2Vla2x5JyxcclxuICAgKiAgIHdpbmRvdzogMixcclxuICAgKiAgIGZhaWxlZEFmdGVyOiAxLFxyXG4gICAqICAgY29udGludW91c19mYWlsZWRfZGF5czogMyxcclxuICAgKiAgIGRheTogMSxcclxuICAgKiAgIHRpbWVJbjI0SHI6ICcwOTowMDowMCcsXHJcbiAgICogICBldmVyeTogMSxcclxuICAgKiAgIHNlbGVjdGVkRGF5OiBbMSwgMywgNV0sIC8vIE1vbmRheSwgV2VkbmVzZGF5LCBGcmlkYXlcclxuICAgKiAgIHN0YXJ0RnJvbTogMTY3ODkwMDAwMCxcclxuICAgKiAgIGxpZmVjeWNsZURldGFpbHM6ICcyMDI0LTEyLTMxfn4xMCdcclxuICAgKiB9O1xyXG4gICAqIGNvbnN0IHJlc3VsdCA9IHNldEZyZXF1ZW5jeU9iamVjdChmcmVxdWVuY3kpO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIHNldEZyZXF1ZW5jeU9iamVjdChmcmVxdWVuY3k6IGFueSk6IEZyZXF1ZW5jeU9iamVjdCB8IG51bGwge1xyXG4gICAgY29uc29sZS5sb2coZnJlcXVlbmN5LCBcImZyZXF1ZW5jeVwiKTtcclxuICAgIGNvbnN0IHJlcGVhdE9wdGlvbnMgPSB0aGlzLnJlcGVhdE9wdGlvbnMoZnJlcXVlbmN5KTtcclxuICAgIGNvbnN0IGxpZmVjeWNsZURldGFpbHMgPSBmcmVxdWVuY3kubGlmZWN5Y2xlRGV0YWlscy5zcGxpdCgnfn4nKTtcclxuICAgIGNvbnN0IGZyZXF1ZW5jeU9iamVjdDogRnJlcXVlbmN5T2JqZWN0ID0ge1xyXG4gICAgICB0eXBlOiBmcmVxdWVuY3kuY2FzZSxcclxuICAgICAgc3RhcnRCZWZvcmU6IGZyZXF1ZW5jeS53aW5kb3csXHJcbiAgICAgIGVuZEFmdGVyOiBmcmVxdWVuY3kuZmFpbGVkQWZ0ZXIsXHJcbiAgICAgIGF1dG9EZWFjdGl2YXRlOiBmcmVxdWVuY3kuY29udGludW91c19mYWlsZWRfZGF5cyxcclxuICAgICAgZGF5OiBmcmVxdWVuY3kuZGF5LCBcclxuICAgICAgdGltZTogZnJlcXVlbmN5LnRpbWVJbjI0SHIsXHJcbiAgICAgIHJlcGVhdE9wdGlvbnM6IHtcclxuICAgICAgICBldmVyeTogZnJlcXVlbmN5LmV2ZXJ5LFxyXG4gICAgICAgIHJlcGVhdE9uOiByZXBlYXRPcHRpb25zLFxyXG4gICAgICAgIGxpZmVjeWNsZToge1xyXG4gICAgICAgICAgc3RhcnRGcm9tOiBtb21lbnQoZnJlcXVlbmN5LnN0YXJ0RnJvbSAqIDEwMDApLmZvcm1hdCgnWVlZWS1NTS1ERCcpLFxyXG4gICAgICAgICAgZW5kQnk6bGlmZWN5Y2xlRGV0YWlsc1swXSAhPT0gJzAwMDAtMDAtMDAnID8gbW9tZW50KGxpZmVjeWNsZURldGFpbHNbMF0gLCAnREQtTU1NTS1ZWVlZJykuZm9ybWF0KCdZWVlZLU1NLUREJykgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBlbmRBZnRlcjogXHJcbiAgICAgICAgICAgICAgICBmcmVxdWVuY3kuY2FzZSA9PT0gJ29uZV90aW1lJ1xyXG4gICAgICAgICAgICAgICAgICAgID8gMVxyXG4gICAgICAgICAgICAgICAgICAgIDogbGlmZWN5Y2xlRGV0YWlsc1sxXSAhPT0gJzAnXHJcbiAgICAgICAgICAgICAgICAgICAgPyBwYXJzZUludChsaWZlY3ljbGVEZXRhaWxzWzFdKVxyXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgcmFuZG9tOiB0aGlzLmdldFJhbmRvbUZyZXF1ZW5jeShmcmVxdWVuY3kpLFxyXG4gICAgICBvbkNvbXBsZXRlOiBmcmVxdWVuY3kuY2FzZSA9PT0gJ29uX2NvbXBsZXRlJyA/IGZyZXF1ZW5jeS5vbkNvbXBsZXRpb24gOiB7fSxcclxuICAgICAgb25Hb2luZzogdGhpcy5nZXRPbmdvaW5nKGZyZXF1ZW5jeSksXHJcbiAgICB9ICBcclxuICAgIHJldHVybiBmcmVxdWVuY3lPYmplY3Q7XHJcbiAgfSBcclxuXHJcbiAgcmVwZWF0T3B0aW9ucyhmcmVxdWVuY3k6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zb2xlLmxvZyhmcmVxdWVuY3ksICdyZXBlYXRPcHRpb25zIGZyZXF1ZW5jeScpO1xyXG4gICBpZihmcmVxdWVuY3k/LnNlbGVjdGVkRGF5Py5sZW5ndGggPiAwKSB7XHJcbiAgICBjb25zdCB3ZWVrRGF5cyA9IFtdO1xyXG4gICAgIGZvcihsZXQgaSA9IDA7IGkgPCA3OyBpICsrKSB7XHJcbiAgICAgIGlmKGZyZXF1ZW5jeS5zZWxlY3RlZERheS5pbmNsdWRlcyhpICsgMSkpIHtcclxuICAgICAgICB3ZWVrRGF5cy5wdXNoKDEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHdlZWtEYXlzLnB1c2goMCk7XHJcbiAgICAgIH1cclxuICAgICB9XHJcbiAgICAgcmV0dXJuIHdlZWtEYXlzLmpvaW4oJycpO1xyXG4gICB9IGVsc2UgaWYoZnJlcXVlbmN5Py5zZWxlY3RlZE1vbnRoPy5sZW5ndGggPiAwKSB7XHJcbiAgICBjb25zdCBtb250aHMgPSBbIF07XHJcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgMTI7IGkgKyspIHtcclxuICAgICAgaWYoZnJlcXVlbmN5Py5zZWxlY3RlZE1vbnRoPy5pbmNsdWRlcyhpKSkge1xyXG4gICAgICAgIG1vbnRocy5wdXNoKDEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1vbnRocy5wdXNoKDApO1xyXG4gICAgICB9XHJcbiAgIH1cclxuICAgcmV0dXJuIG1vbnRocy5qb2luKCcnKTtcclxuICAgfSBlbHNlIHtcclxuICAgIHJldHVybiAnJztcclxuICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0T25nb2luZyhmcmVxdWVuY3k6IGFueSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcmVtaW5kZXJzOiBmcmVxdWVuY3k/LnNlbGVjdGVkVHlwZSxcclxuICAgICAgc3RhcnRPZjogZnJlcXVlbmN5Py5zZWxlY3RlZFR5cGUgPyAgWyd3ZWVrJywnbW9udGgnICwncXVhcnRlcicgLCdzZW1lc3RlcicgLCd5ZWFyJ11bZnJlcXVlbmN5Py5zZWxlY3RlZE9uZ29pbmdUeXBlIC0gMV0gOiAnJ1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRSYW5kb21GcmVxdWVuY3koZnJlcXVlbmN5OiBhbnkpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgdHlwZTogWyd3ZWVrbHknLCAnbW9udGhseScsICdxdWFydGVybHknLCAneWVhcmx5J11bZnJlcXVlbmN5Py5yYW5kb21UeXBlU2VsZWN0ZWRdLFxyXG4gICAgIG9jY3VycmVuY2U6IGZyZXF1ZW5jeT8ucmFuZG9tSW5zdGFuY2VzXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVGcmVxdWVuY3lQYXR0ZXJuKGZyZXF1ZW5jeTogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhmcmVxdWVuY3ksICdmcmVxdWVuY3knKTtcclxuICAgIGxldCBwYXR0ZXJuID0gJyc7XHJcbiAgICBsZXQgc2VsZWN0ZWREYXkgPSBmcmVxdWVuY3kuZGF5XHJcbiAgICBzd2l0Y2ggKGZyZXF1ZW5jeS50eXBlKSB7XHJcblxyXG4gICAgICBjYXNlICdvbmVfdGltZSc6XHJcbiAgICAgICAgbGV0IGRhdGVfdmFsdWUgPSBmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5zdGFydEZyb20/LnNwbGl0KCctJyk7XHJcblxyXG4gICAgICAgIHBhdHRlcm4gPVxyXG4gICAgICAgICAgJzB+JyArXHJcbiAgICAgICAgICAnJyArXHJcbiAgICAgICAgICBkYXRlX3ZhbHVlWzBdICtcclxuICAgICAgICAgICd+JyArXHJcbiAgICAgICAgICAoZGF0ZV92YWx1ZVsxXSkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIGRhdGVfdmFsdWVbMl07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2RhaWx5JzpcclxuICAgICAgICBwYXR0ZXJuID0gYDF+MH4wfiR7ZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LmV2ZXJ5fWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3dlZWtseSc6XHJcbiAgICAgICAgcGF0dGVybiA9IGAyfiR7dGhpcy5nZXREYXkoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+MH4ke2ZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5ldmVyeX1gO1xyXG4gICAgICAgIGJyZWFrOyAgIFxyXG4gICAgICBjYXNlICdtb250aGx5JzpcclxuICAgICAgICBwYXR0ZXJuID1cclxuICAgICAgICAgIGAzfiR7c2VsZWN0ZWREYXl9fiR7dGhpcy5nZXRNb250aChmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ucmVwZWF0T24pfX4wYDtcclxuICAgICAgICBicmVhaztcclxuICAgICBcclxuICAgICAgY2FzZSAncXVhcnRlcmx5JzpcclxuICAgICAgICBwYXR0ZXJuID0gYDd+JHtzZWxlY3RlZERheX1+JHt0aGlzLmdldE1vbnRoKGZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5yZXBlYXRPbil9fjBgO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgIFxyXG4gICAgIGNhc2UgJ3NlbWVzdGVyJzpcclxuICAgICAgcGF0dGVybiA9IGA5fiR7c2VsZWN0ZWREYXl9fiR7dGhpcy5nZXRNb250aChmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ucmVwZWF0T24pfX4wYDtcclxuICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3llYXJseSc6XHJcbiAgICAgICAgcGF0dGVybiA9XHJcbiAgICAgICAgICBgNH4ke3NlbGVjdGVkRGF5fX4ke3RoaXMuZ2V0TW9udGgoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+MWA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ29uZ29pbmcnOlxyXG4gICAgICAgIGNvbnN0IHR5cGUgPSBbJ3dlZWsnLCAnbW9udGgnLCAncXVhcnRlcicsICdzZW1lc3RlcicsICd5ZWFyJ107XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0eXBlLmluZGV4T2YoZnJlcXVlbmN5Lm9uR29pbmc/LnN0YXJ0T2YpO1xyXG4gICAgICAgIHBhdHRlcm4gPSBgMTB+JHtmcmVxdWVuY3kub25Hb2luZz8ucmVtaW5kZXJzfX4ke2luZGV4fX4wYDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncmFuZG9tJzogXHJcbiAgICAgICAgbGV0IHJhbmRvbVR5cGUgPSBbJ3dlZWtseScsICdtb250aGx5JywgJ3F1YXJ0ZXJseScsICd5ZWFybHknXTtcclxuICAgICAgICBsZXQgcmFuZG9tSW5kZXggPSByYW5kb21UeXBlLmluZGV4T2YoZnJlcXVlbmN5LnJhbmRvbS50eXBlKTtcclxuICAgICAgICBwYXR0ZXJuID0gYDh+JHtyYW5kb21JbmRleCArIDF9fiR7dGhpcy5nZXRNb250aChmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ucmVwZWF0T24pfX4ke2ZyZXF1ZW5jeS5yYW5kb20ub2NjdXJyZW5jZX1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdvbl9jb21wbGV0ZSc6XHJcbiAgICAgICAgcGF0dGVybiA9IGA2fjB+MH4ke2ZyZXF1ZW5jeS5vbkNvbXBsZXRlPy5kdWVBZnRlcn1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHBhdHRlcm4gPSBgNX4ke2ZyZXF1ZW5jeS5yYW5kb20ub2NjdXJyZW5jZX1+MH4wYDtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXR0ZXJuO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF5KHJlcGVhdE9wdGlvbnM6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGF5ID0gcmVwZWF0T3B0aW9ucy5zcGxpdCgnJykubWFwKE51bWJlcik7XHJcbiAgICBjb25zdCBkYXlOYW1lID0gW107XHJcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgNzsgaSArKykge1xyXG4gICAgICBpZihkYXlbaV0gPT09IDEpIHtcclxuICAgICAgICBkYXlOYW1lLnB1c2goaSArIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF5TmFtZS5qb2luKCcsJyk7XHJcbiAgfVxyXG5cclxuICBnZXRNb250aChyZXBlYXRPcHRpb25zOiBzdHJpbmcpIHtcclxuICAgICAgY29uc3QgbW9udGggPSByZXBlYXRPcHRpb25zLnNwbGl0KCcnKS5tYXAoTnVtYmVyKTtcclxuICAgICAgY29uc3QgbW9udGhOYW1lID0gW107XHJcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCAxMjsgaSArKykge1xyXG4gICAgICAgIGlmKG1vbnRoW2ldID09PSAxKSB7XHJcbiAgICAgICAgICBtb250aE5hbWUucHVzaChpICsgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBtb250aE5hbWUuam9pbignLCcpO1xyXG4gIH1cclxuICAgIFxyXG4gICAgZ2V0TGlmZWN5Y2xlUGF0dGVybiAoZnJlcXVlbmN5OiBhbnkpIHtcclxuICAgICAgbGV0IHBhdHRlcm4gPSBcIjAwMDAtMDAtMDB+fjBcIjtcclxuICAgICAgaWYoIWZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRCeSAmJiAhZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LmVuZEFmdGVyKSB7XHJcbiAgICAgICAgcmV0dXJuICB7XHJcbiAgICAgICAgICBzdGFydEZyb206IG5ldyBEYXRlKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5zdGFydEZyb20pLmdldFRpbWUoKSAvIDEwMDAsXHJcbiAgICAgICAgICAgcGF0dGVyblxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRCeSkge1xyXG4gICAgICAgIHJldHVybiAge1xyXG4gICAgICAgICAgc3RhcnRGcm9tOiBuZXcgRGF0ZShmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uc3RhcnRGcm9tKS5nZXRUaW1lKCkgLyAxMDAwLFxyXG4gICAgICAgICAgIHBhdHRlcm46IHRoaXMuZm9ybWF0RGF0ZVN0cmluZyhmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uZW5kQnkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYoZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LmVuZEFmdGVyKSB7XHJcbiAgICAgICAgcmV0dXJuICB7XHJcbiAgICAgICAgICBzdGFydEZyb206IG5ldyBEYXRlKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5zdGFydEZyb20pLmdldFRpbWUoKSAvIDEwMDAsXHJcbiAgICAgICAgICAgcGF0dGVybjogXCIwMDAwLTAwLTAwfn5cIiArIGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRBZnRlclxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHN0YXJ0RnJvbTogbmV3IERhdGUoZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LnN0YXJ0RnJvbSkuZ2V0VGltZSgpIC8gMTAwMCxcclxuICAgICAgICBwYXR0ZXJuOiBcIjAwMDAtMDAtMDB+fjBcIlxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAqIENvbnZlcnRzIGEgZGF0ZSBzdHJpbmcgaW4gXCJZWVlZLU1NLUREXCIgZm9ybWF0IHRvIFwiREQtTW9udGgtWVlZWX5+MFwiLlxyXG4gKiBcclxuICogQHBhcmFtIHtzdHJpbmd9IGRhdGVTdHJpbmcgLSBUaGUgaW5wdXQgZGF0ZSBzdHJpbmcgaW4gXCJZWVlZLU1NLUREXCIgZm9ybWF0LlxyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gXCJERC1Nb250aC1ZWVlZfn4wXCIgZm9ybWF0LlxyXG4gKiBcclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBmb3JtYXREYXRlU3RyaW5nKFwiMjAyNS0wMy0yN1wiKTsgLy8gUmV0dXJucyBcIjI3LU1hcmNoLTIwMjV+fjBcIlxyXG4gKiBgYGBcclxuICovXHJcbiBmb3JtYXREYXRlU3RyaW5nKGRhdGVTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGVTdHJpbmcpO1xyXG4gIFxyXG4gIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG4gIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgXHJcbiAgY29uc3QgbW9udGhOYW1lcyA9IFtcclxuICAgICAgXCJKYW51YXJ5XCIsIFwiRmVicnVhcnlcIiwgXCJNYXJjaFwiLCBcIkFwcmlsXCIsIFwiTWF5XCIsIFwiSnVuZVwiLFxyXG4gICAgICBcIkp1bHlcIiwgXCJBdWd1c3RcIiwgXCJTZXB0ZW1iZXJcIiwgXCJPY3RvYmVyXCIsIFwiTm92ZW1iZXJcIiwgXCJEZWNlbWJlclwiXHJcbiAgXTtcclxuICBjb25zdCBtb250aCA9IG1vbnRoTmFtZXNbZGF0ZS5nZXRNb250aCgpXTtcclxuXHJcbiAgcmV0dXJuIGAke2RheX0tJHttb250aH0tJHt5ZWFyfX5+MGA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXRyaWV2ZXMgdGhlIG5hbWUgb2YgYSBtb250aCBiYXNlZCBvbiBpdHMgbnVtZXJpY2FsIHZhbHVlLlxyXG4gKiBcclxuICogQHBhcmFtIHtudW1iZXJ9IG1vbnRoIC0gVGhlIG1vbnRoIG51bWJlciAoMS0xMikgd2hlcmU6XHJcbiAqICAgMSA9IEphbnVhcnlcclxuICogICAyID0gRmVicnVhcnlcclxuICogICAuLi5cclxuICogICAxMiA9IERlY2VtYmVyXHJcbiAqIFxyXG4gKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBUaGUgbmFtZSBvZiB0aGUgbW9udGggKGUuZy4sIFwiSkFOXCIsIFwiRkVCXCIsIGV0Yy4pIG9yIHVuZGVmaW5lZCBpZiB0aGUgbW9udGggbnVtYmVyIGlzIGludmFsaWRcclxuICogXHJcbiAqIEBleGFtcGxlXHJcbiAqIGdldE1vbnRoTmFtZSgxKSAgLy8gUmV0dXJuczogXCJKYW5cIlxyXG4gKiBnZXRNb250aE5hbWUoMTIpIC8vIFJldHVybnM6IFwiRGVjXCJcclxuICogZ2V0TW9udGhOYW1lKDEzKSAvLyBSZXR1cm5zOiB1bmRlZmluZWRcclxuICovXHJcbnB1YmxpYyBnZXRNb250aE5hbWUoc2VsZWN0ZWRNb250aDogbnVtYmVyKSB7ICBcclxuICByZXR1cm4gTU9OVEhfTkFNRVMuZmluZCgobW9udGg6IGFueSkgPT4gbW9udGgudmFsdWUgPT09IHNlbGVjdGVkTW9udGgpPy5tb250aDtcclxufVxyXG5cclxufVxyXG4iXX0=
@@ -12366,26 +12366,24 @@ class FrequencyService {
12366
12366
  const time_arr = value.split(' ');
12367
12367
  const meridian = time_arr[1];
12368
12368
  const hr_min = time_arr[0].split(':').map(Number);
12369
- const hr = hr_min[0];
12370
- const min = hr_min[1] ? hr_min[1] : '00';
12371
- let return_time = '';
12369
+ let hr = hr_min[0];
12370
+ const min = hr_min[1] ?? 0;
12371
+ const sec = hr_min[2] ?? 0;
12372
12372
  if (meridian?.toLowerCase() == 'pm') {
12373
- if (hr == 12) {
12374
- return_time = 12 + ':' + min + ':00';
12375
- }
12376
- else if (hr < 12) {
12377
- return_time = +hr + 12 + ':' + min + ':00';
12373
+ if (hr < 12) {
12374
+ hr = hr + 12;
12378
12375
  }
12379
12376
  }
12380
12377
  else {
12381
12378
  if (hr == 12) {
12382
- return_time = '00:' + min + ':00';
12383
- }
12384
- else if (hr < 12) {
12385
- return_time = hr + ':' + min + ':00';
12379
+ hr = 0;
12386
12380
  }
12387
12381
  }
12388
- return return_time;
12382
+ return (String(hr).padStart(2, '0') +
12383
+ ':' +
12384
+ String(min).padStart(2, '0') +
12385
+ ':' +
12386
+ String(sec).padStart(2, '0'));
12389
12387
  }
12390
12388
  else {
12391
12389
  return '';