commons-assessment 12.0.12 → 12.0.13

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.
@@ -208,7 +208,7 @@ export class AssessmentTakerComponent {
208
208
  this.addControlForQuestion(group, question, question === null || question === void 0 ? void 0 : question.isMandatory);
209
209
  if ((_a = question.defaultOptionsList) === null || _a === void 0 ? void 0 : _a.length) {
210
210
  question.defaultOptionsList.forEach((option) => {
211
- var _a, _b, _c, _d, _e, _f, _g;
211
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
212
212
  if (option.remarksRequired) {
213
213
  // Pre-populate remarks if we have answers matching this option.
214
214
  let remarkVal = null;
@@ -216,11 +216,11 @@ export class AssessmentTakerComponent {
216
216
  if (prefilledOptions) {
217
217
  const ansObj = (_b = (_a = this.assesseeResponse) === null || _a === void 0 ? void 0 : _a.aiadefaultResponseList) === null || _b === void 0 ? void 0 : _b.find((a) => { var _a; return ((_a = a.sectionQuestion) === null || _a === void 0 ? void 0 : _a.questionId) === qId && (!a.childQuestionId || a.childQuestionId === 0); });
218
218
  if (ansObj) {
219
- if (((_c = question.questionType) === null || _c === void 0 ? void 0 : _c.code) === 'QUESTION_TYPE.OBJECTIVE' && prefilledOptions.id === ((_e = (_d = option.options) === null || _d === void 0 ? void 0 : _d.id) !== null && _e !== void 0 ? _e : option.id)) {
219
+ if (((_c = question.questionType) === null || _c === void 0 ? void 0 : _c.code) === 'QUESTION_TYPE.OBJECTIVE' && (prefilledOptions === ((_e = (_d = option.options) === null || _d === void 0 ? void 0 : _d.id) !== null && _e !== void 0 ? _e : option.id) || (prefilledOptions === null || prefilledOptions === void 0 ? void 0 : prefilledOptions.id) === ((_g = (_f = option.options) === null || _f === void 0 ? void 0 : _f.id) !== null && _g !== void 0 ? _g : option.id))) {
220
220
  remarkVal = ansObj.remarks || null;
221
221
  }
222
222
  else if (Array.isArray(prefilledOptions)) {
223
- const matchingObj = (_f = ansObj.drobjectiveresponseList) === null || _f === void 0 ? void 0 : _f.find((r) => { var _a, _b, _c, _d; return ((_b = (_a = r.defaultOption) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.id) === ((_d = (_c = option.options) === null || _c === void 0 ? void 0 : _c.id) !== null && _d !== void 0 ? _d : option.id); });
223
+ const matchingObj = (_h = ansObj.drobjectiveresponseList) === null || _h === void 0 ? void 0 : _h.find((r) => { var _a, _b, _c, _d; return ((_b = (_a = r.defaultOption) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.id) === ((_d = (_c = option.options) === null || _c === void 0 ? void 0 : _c.id) !== null && _d !== void 0 ? _d : option.id); });
224
224
  if (matchingObj) {
225
225
  remarkVal = matchingObj.remarks || null;
226
226
  }
@@ -234,7 +234,7 @@ export class AssessmentTakerComponent {
234
234
  ;
235
235
  group[`${qId}_remarks_${option.id}`] = remarkCtrl;
236
236
  }
237
- (_g = option.childQuestionList) === null || _g === void 0 ? void 0 : _g.forEach((childId) => {
237
+ (_j = option.childQuestionList) === null || _j === void 0 ? void 0 : _j.forEach((childId) => {
238
238
  var _a, _b;
239
239
  const childQues = this.questionBank[childId];
240
240
  if (childQues) {
@@ -252,7 +252,7 @@ export class AssessmentTakerComponent {
252
252
  return;
253
253
  const question = this.questionBank[qId];
254
254
  if ((_a = question.defaultOptionsList) === null || _a === void 0 ? void 0 : _a.length) {
255
- (_b = fg.get(qId.toString())) === null || _b === void 0 ? void 0 : _b.valueChanges.subscribe(val => {
255
+ (_b = fg.get(qId === null || qId === void 0 ? void 0 : qId.toString())) === null || _b === void 0 ? void 0 : _b.valueChanges.subscribe(val => {
256
256
  var _a;
257
257
  (_a = question.defaultOptionsList) === null || _a === void 0 ? void 0 : _a.forEach((option) => {
258
258
  var _a, _b;
@@ -270,9 +270,10 @@ export class AssessmentTakerComponent {
270
270
  }
271
271
  if ((_b = option.childQuestionList) === null || _b === void 0 ? void 0 : _b.length) {
272
272
  option.childQuestionList.forEach((childId) => {
273
+ var _a;
273
274
  const childQues = this.questionBank[childId];
274
275
  if (childQues === null || childQues === void 0 ? void 0 : childQues.id) {
275
- const childCtrl = fg.get(childQues.id.toString());
276
+ const childCtrl = fg.get((_a = childQues.id) === null || _a === void 0 ? void 0 : _a.toString());
276
277
  if (isSelected) {
277
278
  const validators = this.getValidatorsForQuestion(childQues, childQues.isMandatory || false).filter(v => !!v);
278
279
  childCtrl === null || childCtrl === void 0 ? void 0 : childCtrl.setValidators(Validators.compose(validators));
@@ -768,4 +769,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
768
769
  }], stepChanged: [{
769
770
  type: Output
770
771
  }] } });
771
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC10YWtlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb25zLWFzc2Vzc21lbnQvc3JjL2xpYi9tb2R1bGVzL2Fzc2Vzc21lbnQtdGFrZXIvYXNzZXNzbWVudC10YWtlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb25zLWFzc2Vzc21lbnQvc3JjL2xpYi9tb2R1bGVzL2Fzc2Vzc21lbnQtdGFrZXIvYXNzZXNzbWVudC10YWtlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEMsT0FBTyxFQUFlLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlqRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUloSCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFqRCxNQUFNLE9BQU8sd0JBQXdCO0lBZ0RuQyxZQUNVLHNCQUE4QyxFQUM5QyxFQUFlLEVBQ2Ysc0JBQThDLEVBQzlDLFNBQXVCLEVBQ3ZCLE1BQWlCO1FBSmpCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBcERsQixnQkFBVyxHQUE4QixFQUFFLENB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O3NCQUF6QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgQXNzZXNzbWVudFRha2VyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXNzZXNzbWVudC10YWtlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVzcG9uc2VCdWlsZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcmVzcG9uc2UtYnVpbGRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2VjdGlvbkluc3RydWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zZWN0aW9uLWluc3RydWN0aW9ucy9zZWN0aW9uLWluc3RydWN0aW9ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBc3Nlc3NlZURUTywgQXNzZXNzb3JEVE8sIEFzc2Vzc21lbnQsIEFzc2Vzc21lbnRJbnN0YW5jZUFzc2Vzc2VEVE8sIEFzc2Vzc21lbnRTdGVwLCBBc3Nlc3NtZW50Q29udGV4dERUTywgU2VjdGlvblNjb3JlLCBTa2lsbFNjb3JlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvYXNzZXNzbWVudC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBBc3Nlc3NtZW50UXVlc3Rpb24gfSBmcm9tICcuLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9xdWVzdGlvbi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBBc3Nlc3NtZW50UXVlc3Rpb25QYXBlciwgUXVlc3Rpb25QYXBlclNlY3Rpb24sIFNlY3Rpb25RdWVzdGlvbiB9IGZyb20gJy4uLy4uL3NoYXJlZC9pbnRlcmZhY2VzL3F1ZXN0aW9uLXBhcGVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFNraWxsQWxsb2NhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9jb21wb25lbnRzL3NraWxsLWFsbG9jYXRpb24vc2tpbGwtYWxsb2NhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBzb3J0QnlPcmRlciB9IGZyb20gJy4uLy4uL3NoYXJlZC91dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hc3Nlc3NtZW50LXRha2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXNzZXNzbWVudC10YWtlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXNzZXNzbWVudC10YWtlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQXNzZXNzbWVudFRha2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBsYWJlbENvbmZpZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gIEBJbnB1dCgpIGltYWdlQ29uZmlnOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcbiAgQElucHV0KCkgc2hvd0Zvb3RlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFzc2Vzc21lbnRJZCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBhc3Nlc3NtZW50SW5zdGFuY2VJZCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBhc3Nlc3NlZURhdGE6IEFzc2Vzc2VlRFRPID0geyBpZDogMCwgYWN0b3JJZDogMCwgYWN0b3JUeXBlOiAnVVNFUicgfTtcclxuICBASW5wdXQoKSBhc3Nlc3NvckRhdGE6IEFzc2Vzc29yRFRPID0geyBpZDogMCwgYWN0b3JJZDogMCwgYWN0b3JUeXBlOiAnVVNFUicgfTtcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHByZXZpZXdNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdmVydGljYWxWaWV3OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZW5hYmxlTWFya3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBoaWRlU2VjdGlvblRhYnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBhc3Nlc3NtZW50Q29udGV4dCE6IEFzc2Vzc21lbnRDb250ZXh0RFRPO1xyXG4gIEBJbnB1dCgpIGFzc2Vzc2VlUmVzcG9uc2U6IEFzc2Vzc21lbnRJbnN0YW5jZUFzc2Vzc2VEVE8gPSB7fTtcclxuICBASW5wdXQoKSBtYXJrQXNDb21wbGV0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25XaXNlU2NvcmU6IHsgW3NlY3Rpb25JZDogbnVtYmVyXTogU2VjdGlvblNjb3JlIH0gPSB7fTtcclxuICBASW5wdXQoKSBzaG93T3ZlcmFsbFJlbWFya3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIHNuYWNrYmFyTWVzc2FnZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBtZXNzYWdlOiBzdHJpbmcsIHR5cGU6ICdzdWNjZXNzJyB8ICdlcnJvcicgfCAnaW5mbycgfT4oKTtcclxuICBAT3V0cHV0KCkgc3VibWl0QXNzZXNzbWVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzdGVwQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QXNzZXNzbWVudFN0ZXA+KCk7XHJcblxyXG4gIHNob3dMb2FkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHF1ZXN0aW9uQmFuazogUmVjb3JkPG51bWJlciwgQXNzZXNzbWVudFF1ZXN0aW9uPiA9IHt9O1xyXG4gIGFzc2Vzc21lbnRRdWVzdGlvblBhcGVyRGF0YTogQXNzZXNzbWVudFF1ZXN0aW9uUGFwZXIgPSB7fTtcclxuICBhc3Nlc3NtZW50RGF0YTogQXNzZXNzbWVudCA9IHt9O1xyXG4gIGNvbmZpZ3NMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1N1Ym1pdHRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWN0aW9uRm9ybUdyb3VwczogeyBzZWN0aW9uSWQ6IG51bWJlcjsgZm9ybUdyb3VwOiBGb3JtR3JvdXAgfVtdID0gW107XHJcbiAgb3ZlcmFsbE5vdGVzQ3RybCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XHJcbiAgcHJpdmF0ZSB5b3V0dWJlVXJsQ2FjaGU6IHsgW3VybDogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuXHJcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRUYWJJbmRleDogbnVtYmVyID0gMDtcclxuICBnZXQgc2VsZWN0ZWRUYWJJbmRleCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkVGFiSW5kZXg7XHJcbiAgfVxyXG4gIHNldCBzZWxlY3RlZFRhYkluZGV4KHZhbHVlOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLl9zZWxlY3RlZFRhYkluZGV4ICE9PSB2YWx1ZSkge1xyXG4gICAgICB0aGlzLl9zZWxlY3RlZFRhYkluZGV4ID0gdmFsdWU7XHJcbiAgICAgIHRoaXMuZW1pdFN0ZXBEZXRhaWxzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWN0aW9uRXJyb3JzOiBib29sZWFuW10gPSBbXTtcclxuICB0ZW5hbnRJZDogbnVtYmVyID0gMDtcclxuICB0b29sdGlwU3RhdGU6IFJlY29yZDxudW1iZXIsIGJvb2xlYW4+ID0ge307XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhc3Nlc3NtZW50VGFrZXJTZXJ2aWNlOiBBc3Nlc3NtZW50VGFrZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHJlc3BvbnNlQnVpbGRlclNlcnZpY2U6IFJlc3BvbnNlQnVpbGRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZ1xyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRDb25maWdzRnJvbUpTT04oKTtcclxuXHJcbiAgICBpZiAodGhpcy5wcmV2aWV3TW9kZSB8fCB0aGlzLmFzc2Vzc2VlUmVzcG9uc2U/LmFzc2Vzc21lbnRUYWtlbj8uY29kZSA9PT0gJ0FTU0VTU01FTlRfVEFLRU4uQ09NUExFVEUnKSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmFzc2Vzc21lbnRJbnN0YW5jZUlkKSB7XHJcbiAgICAgIGlmICghdGhpcy5hc3Nlc3NtZW50Q29udGV4dCkge1xyXG4gICAgICAgIHRoaXMubG9hZEFzc2Vzc21lbnREYXRhKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hc3Nlc3NtZW50UXVlc3Rpb25QYXBlckRhdGEgPSB0aGlzLmFzc2Vzc21lbnRDb250ZXh0LmFzc2Vzc21lbnRRdWVzdGlvblBhcGVyRFRPO1xyXG4gICAgICAgIHRoaXMuYXNzZXNzbWVudERhdGEgPSB0aGlzLmFzc2Vzc21lbnRDb250ZXh0LmFzc2Vzc21lbnQ7XHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbkJhbmsgPSB0aGlzLmFzc2Vzc21lbnRDb250ZXh0LnF1ZXN0aW9uRFRPTWFwO1xyXG4gICAgICAgIHRoaXMudGVuYW50SWQgPSB0aGlzLmFzc2Vzc21lbnREYXRhPy50ZW5hbnRJZCB8fCAwO1xyXG4gICAgICAgIGlmICghdGhpcy5hc3Nlc3NlZVJlc3BvbnNlPy5pZCkge1xyXG4gICAgICAgICAgdGhpcy5hc3Nlc3NlZVJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICBpZDogMCxcclxuICAgICAgICAgICAgYXNzZXNzbWVudEluc3RhbmNlOiB7IGlkOiB0aGlzLmFzc2Vzc21lbnRJbnN0YW5jZUlkIH0sXHJcbiAgICAgICAgICAgIGFzc2Vzc2VlOiB0aGlzLmFzc2Vzc2VlRGF0YSxcclxuICAgICAgICAgICAgYXNzZXNzb3I6IHRoaXMuYXNzZXNzb3JEYXRhLFxyXG4gICAgICAgICAgICBhaWFkZWZhdWx0UmVzcG9uc2VMaXN0OiBbXSxcclxuICAgICAgICAgICAgdGVuYW50OiB0aGlzLnRlbmFudElkXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5vdmVyYWxsTm90ZXNDdHJsLnNldFZhbHVlKHRoaXMuYXNzZXNzZWVSZXNwb25zZS5ub3RlcyB8fCAnJyk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuc2hvd092ZXJhbGxSZW1hcmtzKSB7XHJcbiAgICAgICAgICB0aGlzLm92ZXJhbGxOb3Rlc0N0cmwuZGlzYWJsZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5mZXRjaEF0dGFjaG1lbnRzQW5kU2V0dXBGb3JtKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbmZpZ3NGcm9tSlNPTigpIHtcclxuICAgIGZvcmtKb2luKHtcclxuICAgICAgbGFiZWxDb25maWc6IHRoaXMuYXNzZXNzbWVudFRha2VyU2VydmljZS5nZXRDb25maWdKU09OKCdqc29uL2xhYmVsQ29uZmlnJyksXHJcbiAgICAgIGltYWdlQ29uZmlnOiB0aGlzLmFzc2Vzc21lbnRUYWtlclNlcnZpY2UuZ2V0Q29uZmlnSlNPTignanNvbi9pbWFnZUNvbmZpZycpXHJcbiAgICB9KS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubGFiZWxDb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCByZXM/LmxhYmVsQ29uZmlnLCB0aGlzLmxhYmVsQ29uZmlnKTtcclxuICAgICAgdGhpcy5pbWFnZUNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIHJlcz8uaW1hZ2VDb25maWcsIHRoaXMuaW1hZ2VDb25maWcpO1xyXG5cclxuICAgICAgdGhpcy5jb25maWdzTG9hZGVkID0gdHJ1ZTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBsb2FkQXNzZXNzbWVudERhdGEoKSB7XHJcbiAgICBjb25zdCBhcGlDYWxscyA9IHtcclxuICAgICAgYXNzZXNzbWVudERhdGE6IHRoaXMuYXNzZXNzbWVudFRha2VyU2VydmljZS5nZXRBc3Nlc3NtZW50Q29udGV4dEJ5SWQodGhpcy5hc3Nlc3NtZW50SWQpLFxyXG4gICAgICAuLi4odGhpcy5hc3Nlc3NlZURhdGE/LmlkICYmICF0aGlzLmFzc2Vzc2VlUmVzcG9uc2U/LmlkICYmIHtcclxuICAgICAgICBhc3Nlc3NlZVJlc3BvbnNlOiB0aGlzLmFzc2Vzc21lbnRUYWtlclNlcnZpY2UuZ2V0QW5zd2Vyc0J5QWlhSWQodGhpcy5hc3Nlc3NlZURhdGEuaWQpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBmb3JrSm9pbihhcGlDYWxscykuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXNzZXNzbWVudFF1ZXN0aW9uUGFwZXJEYXRhID0gZGF0YT8uYXNzZXNzbWVudERhdGE/LmFzc2Vzc21lbnRRdWVzdGlvblBhcGVyRFRPO1xyXG4gICAgICAgIHRoaXMuYXNzZXNzbWVudERhdGEgPSBkYXRhPy5hc3Nlc3NtZW50RGF0YT8uYXNzZXNzbWVudDtcclxuICAgICAgICB0aGlzLnF1ZXN0aW9uQmFuayA9IGRhdGE/LmFzc2Vzc21lbnREYXRhPy5xdWVzdGlvbkRUT01hcDtcclxuICAgICAgICB0aGlzLnRlbmFudElkID0gZGF0YT8uYXNzZXNzbWVudERhdGE/LmFzc2Vzc21lbnQ/LnRlbmFudElkO1xyXG4gICAgICAgIGlmIChkYXRhPy5hc3Nlc3NlZVJlc3BvbnNlKSB7XHJcbiAgICAgICAgICB0aGlzLmFzc2Vzc2VlUmVzcG9uc2UgPSBkYXRhPy5hc3Nlc3NlZVJlc3BvbnNlO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXNzZXNzZWVSZXNwb25zZT8uYXNzZXNzbWVudFRha2VuPy5jb2RlID09PSAnQVNTRVNTTUVOVF9UQUtFTi5DT01QTEVURScpIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYXNzZXNzZWVSZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgICAgIGFzc2Vzc21lbnRJbnN0YW5jZTogeyBpZDogdGhpcy5hc3Nlc3NtZW50SW5zdGFuY2VJZCB9LFxyXG4gICAgICAgICAgICBhc3Nlc3NlZTogdGhpcy5hc3Nlc3NlZURhdGEsXHJcbiAgICAgICAgICAgIGFzc2Vzc29yOiB0aGlzLmFzc2Vzc29yRGF0YSxcclxuICAgICAgICAgICAgYWlhZGVmYXVsdFJlc3BvbnNlTGlzdDogW10sXHJcbiAgICAgICAgICAgIHRlbmFudDogdGhpcy50ZW5hbnRJZFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vdmVyYWxsTm90ZXNDdHJsLnNldFZhbHVlKHRoaXMuYXNzZXNzZWVSZXNwb25zZS5ub3RlcyB8fCAnJyk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuc2hvd092ZXJhbGxSZW1hcmtzKSB7XHJcbiAgICAgICAgICB0aGlzLm92ZXJhbGxOb3Rlc0N0cmwuZGlzYWJsZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZldGNoQXR0YWNobWVudHNBbmRTZXR1cEZvcm0oKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnNuYWNrYmFyTWVzc2FnZS5lbWl0KHsgbWVzc2FnZTogdGhpcy5sYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlRPQVNULkVSUk9SX0RFRkFVTFQnXSwgdHlwZTogJ2Vycm9yJyB9KTtcclxuICAgICAgICB0aHJvdyB7IGVycm9yLCBtZXRob2Q6ICdHRVQnIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmZXRjaEF0dGFjaG1lbnRzQW5kU2V0dXBGb3JtKCkge1xyXG4gICAgY29uc3QgYXR0YWNobWVudElkczogU2V0PG51bWJlcj4gPSBuZXcgU2V0KCk7XHJcbiAgICB0aGlzLmFzc2Vzc2VlUmVzcG9uc2U/LmFpYWRlZmF1bHRSZXNwb25zZUxpc3Q/LmZvckVhY2goKGE6IGFueSkgPT4ge1xyXG4gICAgICBhLmF0dGFjaG1lbnRSZXNwb25zZUxpc3Q/LmZvckVhY2goKHI6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyLmF0dGFjaG1lbnRJZCkgYXR0YWNobWVudElkcy5hZGQoci5hdHRhY2htZW50SWQpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChhdHRhY2htZW50SWRzLnNpemUgPiAwKSB7XHJcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgICBlbnRpdHlJZHM6IEFycmF5LmZyb20oYXR0YWNobWVudElkcyksXHJcbiAgICAgICAgZW50aXR5VHlwZTogJ0VOVElUWV9UWVBFLkFTU0VTU01FTlRfUVVFU1RJT04nXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuYXNzZXNzbWVudFRha2VyU2VydmljZS5nZXRBdHRhY2htZW50cyhwYXJhbXMpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGF0dGFjaG1lbnRzUmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuYXNzZXNzZWVSZXNwb25zZS5haWFkZWZhdWx0UmVzcG9uc2VMaXN0Py5mb3JFYWNoKChhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgYS5hdHRhY2htZW50UmVzcG9uc2VMaXN0Py5mb3JFYWNoKChyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoci5hdHRhY2htZW50SWQgJiYgYXR0YWNobWVudHNSZXNbci5hdHRhY2htZW50SWRdKSB7XHJcbiAgICAgICAgICAgICAgICByLmF0dGFjaG1lbnRPYmplY3QgPSBhdHRhY2htZW50c1Jlc1tyLmF0dGFjaG1lbnRJZF07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5mb3JtU2V0dXAoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICB0aGlzLmZvcm1TZXR1cCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm1TZXR1cCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybVNldHVwKCkge1xyXG4gICAgdGhpcy5zZWN0aW9uRm9ybUdyb3VwcyA9IFtdO1xyXG5cclxuICAgIHNvcnRCeU9yZGVyKHRoaXMuYXNzZXNzbWVudFF1ZXN0aW9uUGFwZXJEYXRhPy5xdWVzdGlvblBhcGVyU2VjdGlvbkxpc3QpPy5mb3JFYWNoKChzZWN0aW9uOiBRdWVzdGlvblBhcGVyU2VjdGlvbikgPT4ge1xyXG4gICAgICBjb25zdCBncm91cDogYW55ID0ge307XHJcblxyXG4gICAgICBzb3J0QnlPcmRlcihzZWN0aW9uPy5zZWN0aW9uUXVlc3Rpb25zTGlzdCk/LmZvckVhY2goKHNxOiBTZWN0aW9uUXVlc3Rpb24pID0+IHtcclxuICAgICAgICBjb25zdCBxSWQgPSBzcS5xdWVzdGlvbklkO1xyXG4gICAgICAgIGlmICghcUlkIHx8ICF0aGlzLnF1ZXN0aW9uQmFua1txSWRdKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gdGhpcy5xdWVzdGlvbkJhbmtbcUlkXTtcclxuICAgICAgICB0aGlzLmFkZENvbnRyb2xGb3JRdWVzdGlvbihncm91cCwgcXVlc3Rpb24sIHF1ZXN0aW9uPy5pc01hbmRhdG9yeSk7XHJcblxyXG4gICAgICAgIGlmIChxdWVzdGlvbi5kZWZhdWx0T3B0aW9uc0xpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcXVlc3Rpb24uZGVmYXVsdE9wdGlvbnNMaXN0LmZvckVhY2goKG9wdGlvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb24ucmVtYXJrc1JlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgICAgLy8gUHJlLXBvcHVsYXRlIHJlbWFya3MgaWYgd2UgaGF2ZSBhbnN3ZXJzIG1hdGNoaW5nIHRoaXMgb3B0aW9uLlxyXG4gICAgICAgICAgICAgIGxldCByZW1hcmtWYWwgPSBudWxsO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHByZWZpbGxlZE9wdGlvbnMgPSB0aGlzLmdldFByZWZpbGxlZEFuc3dlcihxSWQpO1xyXG4gICAgICAgICAgICAgIGlmIChwcmVmaWxsZWRPcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhbnNPYmogPSB0aGlzLmFzc2Vzc2VlUmVzcG9uc2U/LmFpYWRlZmF1bHRSZXNwb25zZUxpc3Q/LmZpbmQoKGE6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgYS5zZWN0aW9uUXVlc3Rpb24/LnF1ZXN0aW9uSWQgPT09IHFJZCAmJiAoIWEuY2hpbGRRdWVzdGlvbklkIHx8IGEuY2hpbGRRdWVzdGlvbklkID09PSAwKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGlmIChhbnNPYmopIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHF1ZXN0aW9uLnF1ZXN0aW9uVHlwZT8uY29kZSA9PT0gJ1FVRVNUSU9OX1RZUEUuT0JKRUNUSVZFJyAmJiBwcmVmaWxsZWRPcHRpb25zLmlkID09PSAob3B0aW9uLm9wdGlvbnM/LmlkID8/IG9wdGlvbi5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZW1hcmtWYWwgPSBhbnNPYmoucmVtYXJrcyB8fCBudWxsO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocHJlZmlsbGVkT3B0aW9ucykpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGluZ09iaiA9IGFuc09iai5kcm9iamVjdGl2ZXJlc3BvbnNlTGlzdD8uZmluZCgocjogYW55KSA9PiByLmRlZmF1bHRPcHRpb24/Lm9wdGlvbnM/LmlkID09PSAob3B0aW9uLm9wdGlvbnM/LmlkID8/IG9wdGlvbi5pZCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaGluZ09iaikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmVtYXJrVmFsID0gbWF0Y2hpbmdPYmoucmVtYXJrcyB8fCBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgcmVtYXJrQ3RybCA9IG5ldyBGb3JtQ29udHJvbChyZW1hcmtWYWwpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICByZW1hcmtDdHJsLmRpc2FibGUoKTtcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIGdyb3VwW2Ake3FJZH1fcmVtYXJrc18ke29wdGlvbi5pZH1gXSA9IHJlbWFya0N0cmw7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIG9wdGlvbi5jaGlsZFF1ZXN0aW9uTGlzdD8uZm9yRWFjaCgoY2hpbGRJZDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGRRdWVzID0gdGhpcy5xdWVzdGlvbkJhbmtbY2hpbGRJZF07XHJcbiAgICAgICAgICAgICAgaWYgKGNoaWxkUXVlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRDb250cm9sRm9yUXVlc3Rpb24oZ3JvdXAsIGNoaWxkUXVlcywgZmFsc2UsIHRydWUsIHFJZCwgb3B0aW9uLm9wdGlvbnM/LmlkID8/IG9wdGlvbi5pZCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjb25zdCBmZyA9IHRoaXMuZmIuZ3JvdXAoZ3JvdXApO1xyXG5cclxuICAgICAgc29ydEJ5T3JkZXIoc2VjdGlvbj8uc2VjdGlvblF1ZXN0aW9uc0xpc3QpPy5mb3JFYWNoKChzcTogU2VjdGlvblF1ZXN0aW9uKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcUlkID0gc3EucXVlc3Rpb25JZDtcclxuICAgICAgICBpZiAoIXFJZCB8fCAhdGhpcy5xdWVzdGlvbkJhbmtbcUlkXSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gdGhpcy5xdWVzdGlvbkJhbmtbcUlkXTtcclxuXHJcbiAgICAgICAgaWYgKHF1ZXN0aW9uLmRlZmF1bHRPcHRpb25zTGlzdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBmZy5nZXQocUlkLnRvU3RyaW5nKCkpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICAgICAgICAgIHF1ZXN0aW9uLmRlZmF1bHRPcHRpb25zTGlzdD8uZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5pc09wdGlvblNlbGVjdGVkKGZnLCBxdWVzdGlvbiwgb3B0aW9uLm9wdGlvbnM/LmlkKTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbi5yZW1hcmtzUmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlbWFya0N0cmwgPSBmZy5nZXQoYCR7cUlkfV9yZW1hcmtzXyR7b3B0aW9uLmlkfWApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzU2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgcmVtYXJrQ3RybD8uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlbWFya0N0cmw/LmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICAgICAgICByZW1hcmtDdHJsPy5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlbWFya0N0cmw/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGlmIChvcHRpb24uY2hpbGRRdWVzdGlvbkxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uLmNoaWxkUXVlc3Rpb25MaXN0LmZvckVhY2goKGNoaWxkSWQ6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFF1ZXMgPSB0aGlzLnF1ZXN0aW9uQmFua1tjaGlsZElkXTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkUXVlcz8uaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZEN0cmwgPSBmZy5nZXQoY2hpbGRRdWVzLmlkLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1NlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5nZXRWYWxpZGF0b3JzRm9yUXVlc3Rpb24oY2hpbGRRdWVzLCBjaGlsZFF1ZXMuaXNNYW5kYXRvcnkgfHwgZmFsc2UpLmZpbHRlcih2ID0+ICEhdik7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZEN0cmw/LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKHZhbGlkYXRvcnMpKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRDdHJsPy5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkQ3RybD8uc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkQ3RybD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnNlY3Rpb25Gb3JtR3JvdXBzLnB1c2goe1xyXG4gICAgICAgIHNlY3Rpb25JZDogc2VjdGlvbi5pZCxcclxuICAgICAgICBmb3JtR3JvdXA6IGZnXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNlY3Rpb25FcnJvcnMucHVzaChmYWxzZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmVtaXRTdGVwRGV0YWlscygpO1xyXG4gICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBlbWl0U3RlcERldGFpbHMoKSB7XHJcbiAgICBpZiAodGhpcy5zZWN0aW9uRm9ybUdyb3VwcyAmJiB0aGlzLnNlY3Rpb25Gb3JtR3JvdXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zdGVwQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgICBjdXJyZW50U3RlcEluZGV4OiB0aGlzLnNlbGVjdGVkVGFiSW5kZXgsXHJcbiAgICAgICAgdG90YWxTdGVwczogdGhpcy5zZWN0aW9uRm9ybUdyb3Vwcy5sZW5ndGgsXHJcbiAgICAgICAgaXNMYXN0U3RlcDogdGhpcy5zZWxlY3RlZFRhYkluZGV4ID09PSB0aGlzLnNlY3Rpb25Gb3JtR3JvdXBzLmxlbmd0aCAtIDFcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRDb250cm9sRm9yUXVlc3Rpb24oZ3JvdXA6IGFueSwgcXVlc3Rpb246IEFzc2Vzc21lbnRRdWVzdGlvbiwgaXNNYW5kYXRvcnk6IGJvb2xlYW4gPSBmYWxzZSwgaXNDaGlsZDogYm9vbGVhbiA9IGZhbHNlLCBwYXJlbnRJZD86IG51bWJlciwgcGFyZW50T3B0aW9uSWQ/OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHFJZCA9IHF1ZXN0aW9uLmlkO1xyXG4gICAgaWYgKCFxSWQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5nZXRWYWxpZGF0b3JzRm9yUXVlc3Rpb24ocXVlc3Rpb24sIGlzTWFuZGF0b3J5KS5maWx0ZXIodiA9PiAhIXYpO1xyXG4gICAgbGV0IHByZWZpbGxlZFZhbHVlID0gdGhpcy5nZXRQcmVmaWxsZWRBbnN3ZXIocUlkLCBpc0NoaWxkLCBwYXJlbnRJZCwgcGFyZW50T3B0aW9uSWQpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wocHJlZmlsbGVkVmFsdWUsIFZhbGlkYXRvcnMuY29tcG9zZSh2YWxpZGF0b3JzKSk7XHJcblxyXG4gICAgLy8gRGlzYWJsZSBpZiBhc3Nlc3NtZW50IGlzIGNvbXBsZXRlZFxyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgY29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ3JvdXBbcUlkXSA9IGNvbnRyb2w7XHJcblxyXG4gICAgLy8gQXR0YWNoIG1hcmsgYXNzaWdubWVudCBjb250cm9sIGlmIHJlcXVpcmVkXHJcbiAgICBpZiAodGhpcy5lbmFibGVNYXJrcyAmJiB0aGlzLnNob3VsZFNob3dNYXJrc0Ryb3Bkb3duKHF1ZXN0aW9uKSkge1xyXG4gICAgICBsZXQgbWFya1ZhbHVlID0gdGhpcy5nZXRQcmVmaWxsZWRNYXJrKHFJZCwgaXNDaGlsZCwgcGFyZW50SWQsIHBhcmVudE9wdGlvbklkKTtcclxuICAgICAgZ3JvdXBbYCR7cUlkfV9tYXJrc2BdID0gbmV3IEZvcm1Db250cm9sKG1hcmtWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQcmVmaWxsZWRNYXJrKHFJZDogbnVtYmVyLCBpc0NoaWxkOiBib29sZWFuID0gZmFsc2UsIHBhcmVudElkPzogbnVtYmVyLCBwYXJlbnRPcHRpb25JZD86IG51bWJlcik6IGFueSB7XHJcbiAgICBpZiAoIXRoaXMuYXNzZXNzZWVSZXNwb25zZT8uYWlhZGVmYXVsdFJlc3BvbnNlTGlzdCkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCBhbnN3ZXJPYmogPSB0aGlzLmFzc2Vzc2VlUmVzcG9uc2UuYWlhZGVmYXVsdFJlc3BvbnNlTGlzdC5maW5kKChhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGlzQ2hpbGQpIHtcclxuICAgICAgICByZXR1cm4gYS5jaGlsZFF1ZXN0aW9uSWQgPT09IHFJZCAmJiBhLmNoaWxkUXVlc3Rpb25QYXJlbnRRdWVzdGlvbklkID09PSBwYXJlbnRJZCAmJiBhLmNoaWxkRGVmYXVsdE9wdGlvbklkID09PSBwYXJlbnRPcHRpb25JZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gYS5zZWN0aW9uUXVlc3Rpb24/LnF1ZXN0aW9uSWQgPT09IHFJZCAmJiAoIWEuY2hpbGRRdWVzdGlvbklkIHx8IGEuY2hpbGRRdWVzdGlvbklkID09PSAwKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gYW5zd2VyT2JqPy5tYXJrcyA/PyBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0UXVlc3Rpb25XZWlnaHQocUlkOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMucXVlc3Rpb25CYW5rW3FJZF0/LndlaWdodCB8fCAwO1xyXG4gIH1cclxuXHJcbiAgc2hvdWxkU2hvd01hcmtzRHJvcGRvd24ocXVlc3Rpb246IEFzc2Vzc21lbnRRdWVzdGlvbik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgYXV0b0Fzc2lnbmVkVHlwZXMgPSBbXHJcbiAgICAgICdRVUVTVElPTl9UWVBFLk9CSkVDVElWRScsXHJcbiAgICAgICdRVUVTVElPTl9UWVBFLk1VTFRJX1NFTEVDVCcsXHJcbiAgICAgICdRVUVTVElPTl9UWVBFLlBSRUZFUkVOQ0UnXHJcbiAgICBdO1xyXG4gICAgY29uc3QgaGFzV2VpZ2h0ID0gdGhpcy5nZXRRdWVzdGlvbldlaWdodChxdWVzdGlvbi5pZCB8fCAwKSA+IDA7XHJcbiAgICByZXR1cm4gIWF1dG9Bc3NpZ25lZFR5cGVzLmluY2x1ZGVzKHF1ZXN0aW9uLnF1ZXN0aW9uVHlwZT8uY29kZSB8fCAnJykgJiYgaGFzV2VpZ2h0O1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJlZmlsbGVkQW5zd2VyKHFJZDogbnVtYmVyLCBpc0NoaWxkOiBib29sZWFuID0gZmFsc2UsIHBhcmVudElkPzogbnVtYmVyLCBwYXJlbnRPcHRpb25JZD86IG51bWJlcik6IGFueSB7XHJcbiAgICBpZiAoIXRoaXMuYXNzZXNzZWVSZXNwb25zZT8uYWlhZGVmYXVsdFJlc3BvbnNlTGlzdCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3QgYW5zd2VyT2JqID0gdGhpcy5hc3Nlc3NlZVJlc3BvbnNlLmFpYWRlZmF1bHRSZXNwb25zZUxpc3QuZmluZCgoYTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpc0NoaWxkKSB7XHJcbiAgICAgICAgcmV0dXJuIGEuY2hpbGRRdWVzdGlvbklkID09PSBxSWQgJiYgYS5jaGlsZFF1ZXN0aW9uUGFyZW50UXVlc3Rpb25JZCA9PT0gcGFyZW50SWQgJiYgYS5jaGlsZERlZmF1bHRPcHRpb25JZCA9PT0gcGFyZW50T3B0aW9uSWQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGEuc2VjdGlvblF1ZXN0aW9uPy5xdWVzdGlvbklkID09PSBxSWQgJiYgKCFhLmNoaWxkUXVlc3Rpb25JZCB8fCBhLmNoaWxkUXVlc3Rpb25JZCA9PT0gMCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghYW5zd2VyT2JqKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBjb25zdCBxdWVzdGlvbiA9IHRoaXMucXVlc3Rpb25CYW5rW3FJZF07XHJcbiAgICBpZiAoIXF1ZXN0aW9uKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBjb25zdCBxVHlwZSA9IHF1ZXN0aW9uLnF1ZXN0aW9uVHlwZT8uY29kZTtcclxuXHJcbiAgICBpZiAocVR5cGUgPT09ICdRVUVTVElPTl9UWVBFLk9CSkVDVElWRScpIHtcclxuICAgICAgcmV0dXJuIGFuc3dlck9iai5vcHRpb25JZD8uaWQ7XHJcbiAgICB9IGVsc2UgaWYgKHFUeXBlID09PSAnUVVFU1RJT05fVFlQRS5NVUxUSV9TRUxFQ1QnIHx8IHFUeXBlID09PSAnUVVFU1RJT05fVFlQRS5QUkVGRVJFTkNFJykge1xyXG4gICAgICBsZXQgc29ydGVkTGlzdCA9IFsuLi4oYW5zd2VyT2JqLmRyb2JqZWN0aXZlcmVzcG9uc2VMaXN0IHx8IFtdKV07XHJcbiAgICAgIGlmIChxVHlwZSA9PT0gJ1FVRVNUSU9OX1RZUEUuUFJFRkVSRU5DRScpIHtcclxuICAgICAgICBzb3J0ZWRMaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiAoYS5vcmRlck5vIHx8IDApIC0gKGIub3JkZXJObyB8fCAwKSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHNvcnRlZExpc3QubWFwKChyOiBhbnkpID0+IHIuZGVmYXVsdE9wdGlvbj8ub3B0aW9ucykgfHwgW107XHJcbiAgICB9IGVsc2UgaWYgKHFUeXBlID09PSAnUVVFU1RJT05fVFlQRS5GSUxFX1VQTE9BRCcpIHtcclxuICAgICAgcmV0dXJuIGFuc3dlck9iai5hdHRhY2htZW50UmVzcG9uc2VMaXN0Py5tYXAoKHI6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiByLmF0dGFjaG1lbnRPYmplY3QgfHwgeyBpZDogci5hdHRhY2htZW50SWQgfTtcclxuICAgICAgfSkgfHwgW107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gYW5zd2VyT2JqLmRyc3ViamVjdGl2ZXJlc3BvbnNlTGlzdD8uWzBdPy5yZXNwb25zZVRleHQgPz8gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFZhbGlkYXRvcnNGb3JRdWVzdGlvbihxdWVzdGlvbjogQXNzZXNzbWVudFF1ZXN0aW9uLCBpc01hbmRhdG9yeTogYm9vbGVhbik6IGFueVtdIHtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IGFueVtdID0gW107XHJcbiAgICBpZiAoaXNNYW5kYXRvcnkpIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChxdWVzdGlvbi5yZXNwb25zZVZhbGlkYXRpb24pIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybihxdWVzdGlvbi5yZXNwb25zZVZhbGlkYXRpb24pKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChxdWVzdGlvbi5xdWVzdGlvblR5cGU/LmNvZGUgPT09ICdRVUVTVElPTl9UWVBFLkVNQUlMJykge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oL15bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsfSQvKSk7XHJcbiAgICAgIH0gZWxzZSBpZiAocXVlc3Rpb24ucXVlc3Rpb25UeXBlPy5jb2RlID09PSAnUVVFU1RJT05fVFlQRS5VUkwnKSB7XHJcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybigvXihodHRwcz86XFwvXFwvKT8oW1xcd1xcLV0rKFxcLltcXHdcXC1dKykrKShbXFwvPyNdLiopPyQvaSkpO1xyXG4gICAgICB9IGVsc2UgaWYgKHF1ZXN0aW9uLnF1ZXN0aW9uVHlwZT8uY29kZSA9PT0gJ1FVRVNUSU9OX1RZUEUuQ09OVEFDVF9OVU1CRVInKSB7XHJcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybigvXlswLTldezEwfSQvKSk7XHJcbiAgICAgIH0gZWxzZSBpZiAocXVlc3Rpb24ucXVlc3Rpb25UeXBlPy5jb2RlID09PSAnUVVFU1RJT05fVFlQRS5OVU1CRVInKSB7XHJcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybigvXlswLTldKyQvKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAocXVlc3Rpb24ucXVlc3Rpb25Db25maWdzICYmIHF1ZXN0aW9uLnF1ZXN0aW9uQ29uZmlncy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IG1pbkNoYXIgPSBxdWVzdGlvbi5xdWVzdGlvbkNvbmZpZ3MuZmluZChjID0+IGMuY29uZmlnS2V5ID09PSAnbWluQ2hhcmFjdGVyQ291bnQnKT8uY29uZmlnVmFsdWU7XHJcbiAgICAgIGlmIChtaW5DaGFyKSB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgoTnVtYmVyKG1pbkNoYXIpKSk7XHJcblxyXG4gICAgICBjb25zdCBtYXhDaGFyID0gcXVlc3Rpb24ucXVlc3Rpb25Db25maWdzLmZpbmQoYyA9PiBjLmNvbmZpZ0tleSA9PT0gJ21heENoYXJhY3RlckNvdW50Jyk/LmNvbmZpZ1ZhbHVlO1xyXG4gICAgICBpZiAobWF4Q2hhcikgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKE51bWJlcihtYXhDaGFyKSkpO1xyXG5cclxuICAgICAgY29uc3QgbWluT3B0ID0gcXVlc3Rpb24ucXVlc3Rpb25Db25maWdzLmZpbmQoYyA9PiBjLmNvbmZpZ0tleSA9PT0gJ21pbmltdW1OdW1iZXJPZk9wdGlvbicpPy5jb25maWdWYWx1ZTtcclxuICAgICAgaWYgKG1pbk9wdCkge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaCgoY29udHJvbDogRm9ybUNvbnRyb2wpID0+IHtcclxuICAgICAgICAgIGlmICghY29udHJvbC52YWx1ZSB8fCBjb250cm9sLnZhbHVlLmxlbmd0aCA8IE51bWJlcihtaW5PcHQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IG1pbk9wdGlvbnM6IHsgcmVxdWlyZWQ6IE51bWJlcihtaW5PcHQpLCBhY3R1YWw6IGNvbnRyb2wudmFsdWU/Lmxlbmd0aCB8fCAwIH0gfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBtYXhPcHQgPSBxdWVzdGlvbi5xdWVzdGlvbkNvbmZpZ3MuZmluZChjID0+IGMuY29uZmlnS2V5ID09PSAnbWF4aW11bU51bWJlck9mT3B0aW9uJyk/LmNvbmZpZ1ZhbHVlO1xyXG4gICAgICBpZiAobWF4T3B0KSB7XHJcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKChjb250cm9sOiBGb3JtQ29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgY29udHJvbC52YWx1ZS5sZW5ndGggPiBOdW1iZXIobWF4T3B0KSkge1xyXG4gICAgICAgICAgICByZXR1cm4geyBtYXhPcHRpb25zOiB7IHJlcXVpcmVkOiBOdW1iZXIobWF4T3B0KSwgYWN0dWFsOiBjb250cm9sLnZhbHVlPy5sZW5ndGggfHwgMCB9IH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgbWF4RmlsZXMgPSBxdWVzdGlvbi5xdWVzdGlvbkNvbmZpZ3MuZmluZChjID0+IGMuY29uZmlnS2V5ID09PSAnbWF4Tm9PZkZpbGVzJyk/LmNvbmZpZ1ZhbHVlO1xyXG4gICAgICBpZiAobWF4RmlsZXMpIHtcclxuICAgICAgICB2YWxpZGF0b3JzLnB1c2goKGNvbnRyb2w6IEZvcm1Db250cm9sKSA9PiB7XHJcbiAgICAgICAgICBpZiAoY29udHJvbC52YWx1ZSAmJiBjb250cm9sLnZhbHVlLmxlbmd0aCA+IE51bWJlcihtYXhGaWxlcykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgbWF4RmlsZXM6IHsgcmVxdWlyZWQ6IE51bWJlcihtYXhGaWxlcyksIGFjdHVhbDogY29udHJvbC52YWx1ZT8ubGVuZ3RoIHx8IDAgfSB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IG1heEZpbGVTaXplID0gcXVlc3Rpb24ucXVlc3Rpb25Db25maWdzLmZpbmQoYyA9PiBjLmNvbmZpZ0tleSA9PT0gJ21heEZpbGVTaXplJyk/LmNvbmZpZ1ZhbHVlO1xyXG4gICAgICBpZiAobWF4RmlsZVNpemUpIHtcclxuICAgICAgICB2YWxpZGF0b3JzLnB1c2goKGNvbnRyb2w6IEZvcm1Db250cm9sKSA9PiB7XHJcbiAgICAgICAgICBpZiAoY29udHJvbC52YWx1ZSAmJiBBcnJheS5pc0FycmF5KGNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhc0xhcmdlRmlsZSA9IGNvbnRyb2wudmFsdWUuc29tZSgoZmlsZTogYW55KSA9PiBmaWxlPy5zaXplICYmIGZpbGUuc2l6ZSA+IChOdW1iZXIobWF4RmlsZVNpemUpICogMTAyNCAqIDEwMjQpKTtcclxuICAgICAgICAgICAgaWYgKGhhc0xhcmdlRmlsZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7IG1heEZpbGVTaXplOiB7IHJlcXVpcmVkU2l6ZTogTnVtYmVyKG1heEZpbGVTaXplKSB9IH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICB9XHJcblxyXG4gIGltYWdlRXJyb3JIYW5kbGVyKGV2ZW50OiBhbnksIGZpbGVQYXRoOiBzdHJpbmcpIHtcclxuICAgIGV2ZW50LnRhcmdldC5zcmMgPSBmaWxlUGF0aDtcclxuICB9XHJcblxyXG4gIGlzT3B0aW9uU2VsZWN0ZWQoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIHF1ZXN0aW9uOiBBc3Nlc3NtZW50UXVlc3Rpb24sIG9wdGlvbklkOiBudW1iZXIgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcclxuICAgIGlmICghb3B0aW9uSWQpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBsZXQgY29udHJvbE5hbWUgPSBxdWVzdGlvbi5pZD8udG9TdHJpbmcoKTtcclxuXHJcbiAgICBpZiAoIWNvbnRyb2xOYW1lKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgY29udHJvbCA9IGZvcm1Hcm91cC5nZXQoY29udHJvbE5hbWUpO1xyXG4gICAgaWYgKCFjb250cm9sIHx8IGNvbnRyb2wudmFsdWUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIC8vIE11bHRpLXNlbGVjdCBkZWFscyB3aXRoIGFuIGFycmF5IG9mIHZhbHVlc1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29udHJvbC52YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIGNvbnRyb2wudmFsdWUuaW5jbHVkZXMob3B0aW9uSWQpIHx8IGNvbnRyb2wudmFsdWUuc29tZSgodmFsOiBhbnkpID0+IHZhbD8uaWQgPT09IG9wdGlvbklkKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBPYmplY3RpdmUgLyBTaW5nbGUgc2VsZWN0IGRlYWxzIHdpdGggYSBzaW5nbGUgdmFsdWUgKGNvdWxkIGJlIGludGVnZXIgSUQgb3Igb2JqZWN0KVxyXG4gICAgaWYgKHR5cGVvZiBjb250cm9sLnZhbHVlID09PSAnb2JqZWN0JyAmJiBjb250cm9sLnZhbHVlLmlkKSB7XHJcbiAgICAgIHJldHVybiBjb250cm9sLnZhbHVlLmlkID09PSBvcHRpb25JZDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29udHJvbC52YWx1ZSA9PT0gb3B0aW9uSWQ7XHJcbiAgfVxyXG5cclxuICBnZXRNYXhDaGFyQ291bnQocXVlc3Rpb246IEFzc2Vzc21lbnRRdWVzdGlvbik6IG51bWJlciB7XHJcbiAgICBjb25zdCBjb25maWcgPSBxdWVzdGlvbj8ucXVlc3Rpb25Db25maWdzPy5maW5kKGMgPT4gYy5jb25maWdLZXkgPT09ICdtYXhDaGFyYWN0ZXJDb3VudCcpO1xyXG4gICAgcmV0dXJuIGNvbmZpZyA/IE51bWJlcihjb25maWcuY29uZmlnVmFsdWUpIDogMDtcclxuICB9XHJcblxyXG4gIGdldFJlbWFpbmluZ0NoYXJzKHF1ZXN0aW9uOiBBc3Nlc3NtZW50UXVlc3Rpb24sIGNvbnRyb2w6IGFueSk6IG51bWJlciB7XHJcbiAgICBjb25zdCBtYXggPSB0aGlzLmdldE1heENoYXJDb3VudChxdWVzdGlvbik7XHJcbiAgICBjb25zdCBjdXJyZW50TGVuZ3RoID0gY29udHJvbC52YWx1ZSA/IGNvbnRyb2wudmFsdWUubGVuZ3RoIDogMDtcclxuICAgIHJldHVybiBtYXggLSBjdXJyZW50TGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgZ29CYWNrKCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4LS07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG91bGREaXNhYmxlVGFiKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgaW5kZXg7IGorKykge1xyXG4gICAgICBpZiAodGhpcy5zZWN0aW9uRm9ybUdyb3Vwc1tqXT8uZm9ybUdyb3VwPy5pbnZhbGlkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdvTmV4dChzYXZlRGF0YTogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIGNvbnN0IHNhdmUgPSB0aGlzLmFzc2Vzc21lbnREYXRhPy5hc3Nlc3NtZW50Q29uZmlncz8uZmluZChjID0+IGMuY29uZmlnS2V5ID09ICdhc3Nlc21lbnQuY29uZmlnLmFsbG93ZWQtcGFydGlhbC1yZXNwb25zZScpPy5jb25maWdWYWx1ZSA9PSAnMSc7XHJcbiAgICBjb25zdCBjdXJyZW50U2VjdGlvbiA9IHRoaXMuc2VjdGlvbkZvcm1Hcm91cHNbdGhpcy5zZWxlY3RlZFRhYkluZGV4XTtcclxuICAgIGlmICghY3VycmVudFNlY3Rpb24pIHJldHVybjtcclxuXHJcbiAgICBjdXJyZW50U2VjdGlvbi5mb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xyXG5cclxuICAgIGlmIChjdXJyZW50U2VjdGlvbi5mb3JtR3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnNlY3Rpb25FcnJvcnNbdGhpcy5zZWxlY3RlZFRhYkluZGV4XSA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlY3Rpb25FcnJvcnNbdGhpcy5zZWxlY3RlZFRhYkluZGV4XSA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkVGFiSW5kZXggPCB0aGlzLnNlY3Rpb25Gb3JtR3JvdXBzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgc2F2ZSAmJiBzYXZlRGF0YSA/IHRoaXMuc2F2ZSgpIDogdGhpcy5zZWxlY3RlZFRhYkluZGV4Kys7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnByb2Nlc3NTdWJtaXQoc2F2ZURhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwYW5kZWRTdGF0ZTogYm9vbGVhbltdID0gW107XHJcblxyXG4gIHByb2Nlc3NTdWJtaXQoc2F2ZURhdGE6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBsZXQgZmlyc3RJbnZhbGlkSW5kZXggPSAtMTtcclxuICAgIHRoaXMuc2VjdGlvbkZvcm1Hcm91cHMuZm9yRWFjaCgoZ3JvdXAsIGluZGV4KSA9PiB7XHJcbiAgICAgIGdyb3VwLmZvcm1Hcm91cC5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgIGlmIChncm91cC5mb3JtR3JvdXAuaW52YWxpZCkge1xyXG4gICAgICAgIHRoaXMuc2VjdGlvbkVycm9yc1tpbmRleF0gPSB0cnVlO1xyXG4gICAgICAgIGlmIChmaXJzdEludmFsaWRJbmRleCA9PT0gLTEpIGZpcnN0SW52YWxpZEluZGV4ID0gaW5kZXg7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWN0aW9uRXJyb3JzW2luZGV4XSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoZmlyc3RJbnZhbGlkSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJ0aWNhbFZpZXcpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSBmaXJzdEludmFsaWRJbmRleDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkU3RhdGVbZmlyc3RJbnZhbGlkSW5kZXhdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNuYWNrYmFyTWVzc2FnZS5lbWl0KHsgbWVzc2FnZTogdGhpcy5sYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlRPQVNULkZJWF9FUlJPUlMnXSwgdHlwZTogJ2Vycm9yJyB9KTtcclxuICAgICAgdGhpcy5zY3JvbGxUb0ZpcnN0SW52YWxpZEZpZWxkKGZpcnN0SW52YWxpZEluZGV4KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2F2ZSh0cnVlLCBzYXZlRGF0YSk7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxUb0ZpcnN0SW52YWxpZEZpZWxkKHNlY3Rpb25JbmRleDogbnVtYmVyKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5zZWN0aW9uRm9ybUdyb3Vwc1tzZWN0aW9uSW5kZXhdLmZvcm1Hcm91cDtcclxuICAgICAgZm9yIChjb25zdCBjb250cm9sTmFtZSBpbiBmb3JtR3JvdXAuY29udHJvbHMpIHtcclxuICAgICAgICBpZiAoZm9ybUdyb3VwLmNvbnRyb2xzW2NvbnRyb2xOYW1lXS5pbnZhbGlkKSB7XHJcbiAgICAgICAgICBsZXQgcUlkID0gY29udHJvbE5hbWU7XHJcbiAgICAgICAgICBpZiAoY29udHJvbE5hbWUuaW5jbHVkZXMoJ19yZW1hcmtzXycpIHx8IGNvbnRyb2xOYW1lLmluY2x1ZGVzKCdfbWFya3MnKSkge1xyXG4gICAgICAgICAgICBxSWQgPSBjb250cm9sTmFtZS5zcGxpdCgnXycpWzBdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBxdWVzdGlvbi1jb250YWluZXItJHtxSWR9YCk7XHJcbiAgICAgICAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIHNhdmUoZ29OZXh0OiBib29sZWFuID0gdHJ1ZSwgc2F2ZURhdGE6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IHRydWU7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgaWYgKHRoaXMubWFya0FzQ29tcGxldGVkICYmICh0aGlzLnNlbGVjdGVkVGFiSW5kZXggPT0gdGhpcy5zZWN0aW9uRm9ybUdyb3Vwcy5sZW5ndGggLSAxIHx8IHRoaXMudmVydGljYWxWaWV3KSkge1xyXG4gICAgICAgIHRoaXMuYXNzZXNzZWVSZXNwb25zZS5hc3Nlc3NtZW50VGFrZW4gPSB7IGNvZGU6ICdBU1NFU1NNRU5UX1RBS0VOLkNPTVBMRVRFJyB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYXNzZXNzZWVSZXNwb25zZS5hc3Nlc3NtZW50VGFrZW4gPSB7IGNvZGU6ICdBU1NFU1NNRU5UX1RBS0VOLklOQ09NUExFVEUnIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5yZXNwb25zZUJ1aWxkZXJTZXJ2aWNlLmJ1aWxkUmVzcG9uc2VQYXlsb2FkKFxyXG4gICAgICB0aGlzLmFzc2Vzc2VlUmVzcG9uc2UsXHJcbiAgICAgIHRoaXMuYXNzZXNzbWVudFF1ZXN0aW9uUGFwZXJEYXRhLFxyXG4gICAgICB0aGlzLnNlY3Rpb25Gb3JtR3JvdXBzLFxyXG4gICAgICB0aGlzLnF1ZXN0aW9uQmFuayxcclxuICAgICAgdGhpcy50ZW5hbnRJZFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAodGhpcy5zaG93T3ZlcmFsbFJlbWFya3MgJiYgdGhpcy5hc3Nlc3NlZVJlc3BvbnNlKSB7XHJcbiAgICAgIHRoaXMuYXNzZXNzZWVSZXNwb25zZS5ub3RlcyA9IHRoaXMub3ZlcmFsbE5vdGVzQ3RybC52YWx1ZSB8fCBudWxsO1xyXG4gICAgICBwYXlsb2FkLm5vdGVzID0gdGhpcy5hc3Nlc3NlZVJlc3BvbnNlLm5vdGVzO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghc2F2ZURhdGEgfHwgKHRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuZW5hYmxlTWFya3MpKSB7XHJcbiAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc3VibWl0QXNzZXNzbWVudC5lbWl0KHtcclxuICAgICAgICBhc3Nlc3NlZUlkOiB0aGlzLmFzc2Vzc2VlUmVzcG9uc2U/LmlkLFxyXG4gICAgICAgIGFzc2Vzc2VlUmVzcG9uc2U6IHBheWxvYWQsXHJcbiAgICAgICAgY29tcGxldGVkOiBnb05leHQgJiYgKHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9PSB0aGlzLnNlY3Rpb25Gb3JtR3JvdXBzLmxlbmd0aCAtIDEgfHwgdGhpcy52ZXJ0aWNhbFZpZXcpXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoZ29OZXh0ICYmIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA8IHRoaXMuc2VjdGlvbkZvcm1Hcm91cHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBhcGlDYWxsID0gdGhpcy5hc3Nlc3NlZVJlc3BvbnNlPy5pZCA/IHRoaXMuYXNzZXNzbWVudFRha2VyU2VydmljZS5wYXRjaEFzc2Vzc21lbnQocGF5bG9hZCkgOiB0aGlzLmFzc2Vzc21lbnRUYWtlclNlcnZpY2Uuc3VibWl0QXNzZXNzbWVudChwYXlsb2FkKTtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkICYmIHRoaXMuZW5hYmxlTWFya3MpIHtcclxuICAgICAgY29uc3QgbWFya3NQYXlsb2FkOiBhbnkgPSB0aGlzLnJlc3BvbnNlQnVpbGRlclNlcnZpY2UuYnVpbGRNYXJrc1BheWxvYWQocGF5bG9hZCk7XHJcbiAgICAgIGlmICh0aGlzLnNob3dPdmVyYWxsUmVtYXJrcykge1xyXG4gICAgICAgIG1hcmtzUGF5bG9hZC5ub3RlcyA9IHRoaXMub3ZlcmFsbE5vdGVzQ3RybC52YWx1ZSB8fCBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGFwaUNhbGwgPSB0aGlzLmFzc2Vzc21lbnRUYWtlclNlcnZpY2UudXBkYXRlTWFya3MobWFya3NQYXlsb2FkKTtcclxuICAgIH1cclxuICAgIGFwaUNhbGwuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmFzc2Vzc2VlUmVzcG9uc2U/LmlkKSB7XHJcbiAgICAgICAgICB0aGlzLmdldEFuc3dlcnNCeUFpYUlkKHJlcyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYXNzZXNzZWVSZXNwb25zZSA9IHJlcztcclxuICAgICAgICAgIHRoaXMub3ZlcmFsbE5vdGVzQ3RybC5zZXRWYWx1ZSh0aGlzLmFzc2Vzc2VlUmVzcG9uc2Uubm90ZXMgfHwgJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc3VibWl0QXNzZXNzbWVudC5lbWl0KHtcclxuICAgICAgICAgIGFzc2Vzc2VlSWQ6IHRoaXMuYXNzZXNzZWVSZXNwb25zZT8uaWQgfHwgcmVzLFxyXG4gICAgICAgICAgYXNzZXNzZWVSZXNwb25zZTogdGhpcy5hc3Nlc3NlZVJlc3BvbnNlPy5pZCA/IHRoaXMuYXNzZXNzZWVSZXNwb25zZSA6IHBheWxvYWQsXHJcbiAgICAgICAgICBjb21wbGV0ZWQ6IGdvTmV4dCAmJiAodGhpcy5zZWxlY3RlZFRhYkluZGV4ID09IHRoaXMuc2VjdGlvbkZvcm1Hcm91cHMubGVuZ3RoIC0gMSB8fCB0aGlzLnZlcnRpY2FsVmlldylcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoZ29OZXh0ICYmIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA8IHRoaXMuc2VjdGlvbkZvcm1Hcm91cHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4Kys7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zbmFja2Jhck1lc3NhZ2UuZW1pdCh7IG1lc3NhZ2U6IHRoaXMubGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5UT0FTVC5TQVZFX0ZBSUxFRCddLCB0eXBlOiAnZXJyb3InIH0pO1xyXG4gICAgICAgIHRocm93IHsgZXJyb3IsIG1ldGhvZDogdGhpcy5hc3Nlc3NlZVJlc3BvbnNlPy5pZCA/ICdQQVRDSCcgOiAnUE9TVCcsIHBheWxvYWQgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEFuc3dlcnNCeUFpYUlkKGFzc2Vzc2VlSWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50VGFrZXJTZXJ2aWNlLmdldEFuc3dlcnNCeUFpYUlkKGFzc2Vzc2VlSWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXNzZXNzZWVSZXNwb25zZSA9IHJlcztcclxuICAgICAgICB0aGlzLm92ZXJhbGxOb3Rlc0N0cmwuc2V0VmFsdWUodGhpcy5hc3Nlc3NlZVJlc3BvbnNlLm5vdGVzIHx8ICcnKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnNuYWNrYmFyTWVzc2FnZS5lbWl0KHsgbWVzc2FnZTogdGhpcy5sYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlRPQVNULkdFVF9GQUlMRUQnXSwgdHlwZTogJ2Vycm9yJyB9KTtcclxuICAgICAgICB0aHJvdyB7IGVycm9yLCBtZXRob2Q6ICdHRVQnIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRZb3V0dWJlSWZyYW1lU3JjKHZpZGVvVXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICghdmlkZW9VcmwpIHJldHVybiBudWxsO1xyXG4gICAgaWYgKHRoaXMueW91dHViZVVybENhY2hlW3ZpZGVvVXJsXSkge1xyXG4gICAgICByZXR1cm4gdGhpcy55b3V0dWJlVXJsQ2FjaGVbdmlkZW9VcmxdO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdmlkZW9JZCA9IHRoaXMuZ2V0VmlkZW9JZCh2aWRlb1VybCk7XHJcbiAgICBjb25zdCB5b3V0dWJlVXJsID0gYGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7dmlkZW9JZH1gO1xyXG4gICAgdGhpcy55b3V0dWJlVXJsQ2FjaGVbdmlkZW9VcmxdID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHlvdXR1YmVVcmwpO1xyXG4gICAgcmV0dXJuIHRoaXMueW91dHViZVVybENhY2hlW3ZpZGVvVXJsXTtcclxuICB9XHJcblxyXG4gIGdldFZpZGVvSWQodmlkZW9Vcmw6IHN0cmluZykge1xyXG4gICAgbGV0IHBhdHRlcm4gPSBudWxsO1xyXG4gICAgaWYgKHZpZGVvVXJsLmluY2x1ZGVzKCd5b3V0dWJlLmNvbScpKSB7XHJcbiAgICAgIHBhdHRlcm4gPSAvKD86XFw/dj18JnY9fHlvdXR1XFwuYmVcXC98XFwvZW1iZWRcXC98XFwvXFxkXFwvfFxcL3ZpXFwvfFxcL3ZcXC98aHR0cHM/OlxcL1xcLyg/Ond3d1xcLik/eW91dHViZVxcLmNvbVxcLyg/OnZcXC98ZW1iZWRcXC98d2F0Y2hcXD8oPzpcXFMrJik/dj18d2F0Y2hcXD8oPzpcXFMrJik/dmk9fFxcUytcXC8pKShbYS16QS1aMC05Xy1dezExfSkvO1xyXG4gICAgfSBlbHNlIGlmICh2aWRlb1VybC5pbmNsdWRlcygneW91dHUuYmUnKSkge1xyXG4gICAgICBwYXR0ZXJuID0gL3lvdXR1XFwuYmVcXC8oW2EtekEtWjAtOV8tXXsxMX0pLztcclxuICAgIH1cclxuICAgIGlmIChwYXR0ZXJuKSB7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gdmlkZW9VcmwubWF0Y2gocGF0dGVybik7XHJcbiAgICAgIGlmIChtYXRjaCAmJiBtYXRjaFsxXSkge1xyXG4gICAgICAgIHJldHVybiBtYXRjaFsxXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBvcGVuSW5zdHJ1Y3Rpb25zRGlhbG9nKHNlY3Rpb246IFF1ZXN0aW9uUGFwZXJTZWN0aW9uKSB7XHJcbiAgICB0aGlzLmRpYWxvZy5vcGVuKFNlY3Rpb25JbnN0cnVjdGlvbnNDb21wb25lbnQsIHtcclxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgbWF4V2lkdGg6ICc5NSUnLFxyXG4gICAgICB3aWR0aDogJ2NhbGMoMjByZW0gKyA1MDBweCknLFxyXG4gICAgICBtYXhIZWlnaHQ6ICc5NWR2aCcsXHJcbiAgICAgIHBhbmVsQ2xhc3M6IFsnYXNzZXNzbWVudC1kaWFsb2cnXSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGltYWdlQ29uZmlnOiB0aGlzLmltYWdlQ29uZmlnLFxyXG4gICAgICAgIGxhYmVsQ29uZmlnOiB0aGlzLmxhYmVsQ29uZmlnLFxyXG4gICAgICAgIHNlY3Rpb25EZXRhaWxzOiBzZWN0aW9uLFxyXG4gICAgICAgIHlvdXR1YmVVcmxDYWNoZTogdGhpcy55b3V0dWJlVXJsQ2FjaGVcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tNYXhWYWwoZXZlbnQ6IGFueSwgY29udHJvbDogYW55LCBtYXhWYWw6IG51bWJlciB8IHVuZGVmaW5lZCkge1xyXG4gICAgY29uc3QgdG90YWxNYXJrcyA9IE51bWJlcihtYXhWYWwpIHx8IDA7XHJcbiAgICBpZiAodG90YWxNYXJrcyA+IDApIHtcclxuICAgICAgbGV0IHZhbCA9IE51bWJlcihldmVudC50YXJnZXQudmFsdWUpO1xyXG4gICAgICBpZiAodmFsID4gdG90YWxNYXJrcykge1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IHRvdGFsTWFya3M7XHJcbiAgICAgICAgY29udHJvbD8uc2V0VmFsdWUodG90YWxNYXJrcywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuU2tpbGxBbGxvY2F0aW9uRGlhbG9nKHNraWxsTGlzdD86IFNraWxsU2NvcmVbXSkge1xyXG4gICAgdGhpcy5kaWFsb2cub3BlbihTa2lsbEFsbG9jYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgbWF4SGVpZ2h0OiAnOTVkdmgnLFxyXG4gICAgICBtYXhXaWR0aDogJzkwdncnLFxyXG4gICAgICB3aWR0aDogJzM1cmVtJyxcclxuICAgICAgcGFuZWxDbGFzczogWydhc3Nlc3NtZW50LWRpYWxvZyddLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbGFiZWw6IHRoaXMubGFiZWxDb25maWcsXHJcbiAgICAgICAgc2tpbGxMaXN0XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiY29uZmlnc0xvYWRlZCAmJiAhc2hvd0xvYWRlcjsgZWxzZSBsb2FkZXJcIiBjbGFzcz1cImNvbC0xMiBoLTEwMFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBoLTEwMCBwdC0yIHBiLTRcIiBbY2xhc3MuaGVpZ2h0LXdpdGhvdXQtZm9vdGVyXT1cInNob3dGb290ZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXNzZXNzbWVudFF1ZXN0aW9uUGFwZXJEYXRhPy5xdWVzdGlvblBhcGVyU2VjdGlvbkxpc3Q/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICA8bWF0LXRhYi1ncm91cCAqbmdJZj1cIiF2ZXJ0aWNhbFZpZXdcIiBhbmltYXRpb25EdXJhdGlvbj1cIjBtc1wiIGNsYXNzPVwiYXNzZXNzbWVudC1tYXQtY3VzdG9tLXRhYnNcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydhc3Nlc3NtZW50LWhpZGUtdGFicyc6IGhpZGVTZWN0aW9uVGFic31cIiBbKHNlbGVjdGVkSW5kZXgpXT1cInNlbGVjdGVkVGFiSW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtdGFiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgYXNzZXNzbWVudFF1ZXN0aW9uUGFwZXJEYXRhLnF1ZXN0aW9uUGFwZXJTZWN0aW9uTGlzdCB8IG9yZGVyQnk7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzaG91bGREaXNhYmxlVGFiKGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlY3Rpb25FcnJvcnNbaV0gPyAnYXNzZXNzbWVudC10ZXh0LWRhbmdlcicgOiAnJ1wiPnt7c2VjdGlvbi5xcHNOYW1lPy5bMF0/LnRleHR9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VjdGlvbkNvbnRlbnQ7IGNvbnRleHQ6IHsgc2VjdGlvbjogc2VjdGlvbiwgaTogaSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L21hdC10YWI+XHJcbiAgICAgICAgICAgIDwvbWF0LXRhYi1ncm91cD5cclxuXHJcbiAgICAgICAgICAgIDxtYXQtYWNjb3JkaW9uICpuZ0lmPVwidmVydGljYWxWaWV3XCIgbXVsdGk9XCJ0cnVlXCIgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTRcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgYXNzZXNzbWVudFF1ZXN0aW9uUGFwZXJEYXRhLnF1ZXN0aW9uUGFwZXJTZWN0aW9uTGlzdCB8IG9yZGVyQnk7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtleHBhbmRlZF09XCJleHBhbmRlZFN0YXRlW2ldICE9PSBmYWxzZVwiIChvcGVuZWQpPVwiZXhwYW5kZWRTdGF0ZVtpXSA9IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbG9zZWQpPVwiZXhwYW5kZWRTdGF0ZVtpXSA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gc2hhZG93LW5vbmUgbS0wIGFzc2Vzc21lbnQtcGFuZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWJnLWdyZXktdHdvIGgtYXV0byBhc3Nlc3NtZW50LXBhbmVsLWhlYWRlciBiZy10cmFuc3BhcmVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMiBjb2wtMTIgcGUtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlY3Rpb25FcnJvcnNbaV0gPyAnYXNzZXNzbWVudC10ZXh0LWRhbmdlcicgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c2VjdGlvbi5xcHNOYW1lPy5bMF0/LnRleHR9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VjdGlvbldpc2VTY29yZT8uW3NlY3Rpb24/LmlkXSBhcyBzZWN0aW9uU2NvcmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBhc3Nlc3NtZW50LXRleHQtcHJpbWFyeS1mb3VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIoc2VjdGlvblNjb3JlPy5za2lsbFNjb3Jlcz8ubGVuZ3RoID8/IDApID4gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMiB0ZXh0LWRlY29yYXRpb24tdW5kZXJsaW5lIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtvcGVuU2tpbGxBbGxvY2F0aW9uRGlhbG9nKHNlY3Rpb25TY29yZS5za2lsbFNjb3JlcylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLlNLSUxMX0FMTE9DQVRJT04nXX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKHNlY3Rpb25TY29yZT8ub2J0YWluZWRNYXJrcyA/PyAtMSkgPj0wOyBlbHNlIG5vdFNjb3JlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2hpdGUtc3BhY2Utbm93cmFwIGFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTUgbWUtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLlNDT1JFJ119fTo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c2VjdGlvblNjb3JlLm9idGFpbmVkTWFya3N9fS97e3NlY3Rpb25TY29yZS50b3RhbE1hcmtzfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RTY29yZWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk5PVF9ZRVRfU0NPUkVEJ119fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VjdGlvbkNvbnRlbnQ7IGNvbnRleHQ6IHsgc2VjdGlvbjogc2VjdGlvbiwgaTogaSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgICAgICAgIDwvbWF0LWFjY29yZGlvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFhc3Nlc3NtZW50UXVlc3Rpb25QYXBlckRhdGE/LnF1ZXN0aW9uUGFwZXJTZWN0aW9uTGlzdD8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJoLTEwMCBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZ2FwLTNcIj5cclxuICAgICAgICAgICAgPGltZyBbc3JjXT1cImltYWdlQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuSUNPTi5OT19RVUVTVElPTlMnXVwiIGNsYXNzPVwiY29sLXNtLWF1dG8gY29sLTZcIlxyXG4gICAgICAgICAgICAgICAgKGVycm9yKT1cImltYWdlRXJyb3JIYW5kbGVyKCRldmVudCwgJ2Fzc2V0cy9jb21tb25zLWFzc2Vzc21lbnQvaW1hZ2VzL25vLXF1ZXN0aW9ucy5zdmcnKVwiIC8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0xIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMThcIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuTk9fUVVFU1RJT05TJ119fTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93T3ZlcmFsbFJlbWFya3MgJiYgYXNzZXNzbWVudFF1ZXN0aW9uUGFwZXJEYXRhPy5xdWVzdGlvblBhcGVyU2VjdGlvbkxpc3Q/Lmxlbmd0aFwiIGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTUgbWItMlwiPnt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5PVkVSQUxMX1JFTUFSS1MnXX19PC9wPlxyXG4gICAgICAgICAgICA8dGV4dGFyZWFcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLTEyIGFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEzIGFzc2Vzc21lbnQtaW5wdXQtYm9yZGVyLW9uZSBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIGFzc2Vzc21lbnQtaW5wdXQtcGFkZGluZyBvdXRsaW5lLTAgYXNzZXNzbWVudC1iZy1ncmV5LW9uZVwiXHJcbiAgICAgICAgICAgICAgICByb3dzPVwiM1wiIFtmb3JtQ29udHJvbF09XCJvdmVyYWxsTm90ZXNDdHJsXCJcclxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBMQUNFSE9MREVSLlJFTUFSS1MnXVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93Rm9vdGVyXCJcclxuICAgICAgICBjbGFzcz1cImJnLXdoaXRlIHAtMyBwb3NpdGlvbi1zdGlja3kgYm90dG9tLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtZW5kIGJvcmRlci10b3AgZ2FwLTMgei1pbmRleC0xXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtem9vbS1hbmltYXRpb24gYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LWJ1dHRvbi1wYWRkaW5nLWxhcmdlIGFzc2Vzc21lbnQtYnRuLXByaW1hcnktdHJhbnNwYXJlbnQgYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImdvQmFjaygpXCIgKm5nSWY9XCJzZWxlY3RlZFRhYkluZGV4ID4gMCAmJiAhdmVydGljYWxWaWV3XCI+XHJcbiAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5HT19CQUNLJ119fTwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImlzU3VibWl0dGluZ1wiIChjbGljayk9XCJ2ZXJ0aWNhbFZpZXcgPyBwcm9jZXNzU3VibWl0KHRydWUpIDogZ29OZXh0KClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtem9vbS1hbmltYXRpb24gYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LWJ1dHRvbi1wYWRkaW5nLWxhcmdlIGFzc2Vzc21lbnQtYnRuLXByaW1hcnkgYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsnb3BhY2l0eS0wJzogaXNTdWJtaXR0aW5nfVwiPlxyXG4gICAgICAgICAgICAgICAge3sgKHZlcnRpY2FsVmlldyB8fCBzZWxlY3RlZFRhYkluZGV4ID09PSBzZWN0aW9uRm9ybUdyb3Vwcy5sZW5ndGggLSAxKSA/XHJcbiAgICAgICAgICAgICAgICBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLlNVQk1JVCddIDogbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5ORVhUJ10gfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJpc1N1Ym1pdHRpbmdcIiBbZGlhbWV0ZXJdPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtNTAgc3RhcnQtNTAgdHJhbnNsYXRlLW1pZGRsZSBhc3Nlc3NtZW50LXNwaW5uZXItd2hpdGVcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNsb2FkZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgY29sLTEyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweS01XCI+XHJcbiAgICAgICAgPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiNjBcIiBjbGFzcz1cImFzc2Vzc21lbnQtc3Bpbm5lci1wcmltYXJ5XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBSZWN1cnNpdmUgVGVtcGxhdGUgZm9yIFF1ZXN0aW9ucyAmIENoaWxkIFF1ZXN0aW9ucyAtLT5cclxuPG5nLXRlbXBsYXRlICNxdWVzdGlvblRlbXBsYXRlIGxldC1xdWVzdGlvbklkPVwicXVlc3Rpb25JZFwiIGxldC1pc01hbmRhdG9yeT1cImlzTWFuZGF0b3J5XCIgbGV0LWdyb3VwSW5kZXg9XCJncm91cEluZGV4XCJcclxuICAgIGxldC1wYXJlbnRPcHRpb25JZD1cInBhcmVudE9wdGlvbklkXCIgbGV0LXNlcXVlbmNlPVwic2VxdWVuY2VcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJzZWN0aW9uRm9ybUdyb3Vwc1tncm91cEluZGV4XS5mb3JtR3JvdXBcIiBbZm9ybUdyb3VwXT1cInNlY3Rpb25Gb3JtR3JvdXBzW2dyb3VwSW5kZXhdLmZvcm1Hcm91cFwiXHJcbiAgICAgICAgW2lkXT1cIidxdWVzdGlvbi1jb250YWluZXItJyArIHF1ZXN0aW9uSWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LWJnLXdoaXRlXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwLTMgYXNzZXNzbWVudC1jYXJkLWJvcmRlcic6ICFwYXJlbnRPcHRpb25JZH1cIiAqbmdJZj1cInF1ZXN0aW9uQmFua1txdWVzdGlvbklkXSBhcyBxdWVzdGlvblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtbWQtcm93IGZsZXgtY29sdW1uIGdhcC0yIGFsaWduLWl0ZW1zLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTE1XCIgKm5nSWY9XCJzZXF1ZW5jZVwiPnt7c2VxdWVuY2V9fS48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgYWxpZ24taXRlbXMtc3RhcnQgY29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTUgbWItMCBkLWZsZXggZ2FwLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cInF1ZXN0aW9uLnF1ZXN0aW9uVGV4dD8uWzBdPy50ZXh0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc01hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1laWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuTUFOREFUT1JZJ119fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgY29sLTEyXCIgKm5nSWY9XCJxdWVzdGlvbj8ubWVkaWFVcmxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJWaWRlb1RlbXBsYXRlOyBjb250ZXh0Ont2aWRlb1VybDpxdWVzdGlvbj8ubWVkaWFVcmx9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVzdGlvbi5oaW50VGV4dCAmJiAhcHJldmlld01vZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1hZ2VDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5JQ09OLklORk8nXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJpbWFnZUVycm9ySGFuZGxlcigkZXZlbnQsICdhc3NldHMvY29tbW9ucy1hc3Nlc3NtZW50L2ltYWdlcy9pbmZvLnN2ZycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2RrT3ZlcmxheU9yaWdpbiAjdHJpZ2dlcj1cImNka092ZXJsYXlPcmlnaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJ0b29sdGlwU3RhdGVbcXVlc3Rpb24uaWQhXSA9IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJ0b29sdGlwU3RhdGVbcXVlc3Rpb24uaWQhXSA9IGZhbHNlXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0Nvbm5lY3RlZE92ZXJsYXkgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJ0b29sdGlwU3RhdGVbcXVlc3Rpb24uaWQhXSB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zXT1cIlt7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdjZW50ZXInLCBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAnY2VudGVyJywgb2Zmc2V0WDogLTgsIG9mZnNldFk6IDAgfSwgeyBvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ2NlbnRlcicsIG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ2NlbnRlcicsIG9mZnNldFg6IDgsIG9mZnNldFk6IDAgfV1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2Vzc21lbnQtYmctZ3JleS10d28gYXNzZXNzbWVudC10b29sdGlwLWJvcmRlciBwLTMgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LWJveC1zaGFkb3ctdG9vbHRpcCBxdWVzdGlvbi1pbmZvIGFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInRvb2x0aXBTdGF0ZVtxdWVzdGlvbi5pZCFdID0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJ0b29sdGlwU3RhdGVbcXVlc3Rpb24uaWQhXSA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicXVlc3Rpb24uaGludFRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gYW5zd2VyIGZpZWxkIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJldmlld01vZGVcIiBjbGFzcz1cImQtbWQtYmxvY2sgZC1ub25lIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImFuc3dlckZpZWxkOyBjb250ZXh0OiB7cXVlc3Rpb246IHF1ZXN0aW9uLHByZXZpZXdNb2RlOiBwcmV2aWV3TW9kZSxpc01hbmRhdG9yeTogaXNNYW5kYXRvcnksZ3JvdXBJbmRleDogZ3JvdXBJbmRleH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIGFuc3dlciBmaWVsZCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZC1tZC1ub25lIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYW5zd2VyRmllbGQ7IGNvbnRleHQ6IHtxdWVzdGlvbjogcXVlc3Rpb24scHJldmlld01vZGU6IHByZXZpZXdNb2RlLGlzTWFuZGF0b3J5OiBpc01hbmRhdG9yeSxncm91cEluZGV4OiBncm91cEluZGV4fVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBBc3Nlc3NvciBNYXJrcyBEcm9wZG93biBMb2dpYyAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3Nlc3NtZW50LW1hcmtzLWZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVuYWJsZU1hcmtzICYmIHNob3VsZFNob3dNYXJrc0Ryb3Bkb3duKHF1ZXN0aW9uKSAmJiBzZWN0aW9uRm9ybUdyb3Vwc1tncm91cEluZGV4XS5mb3JtR3JvdXAuZ2V0KHF1ZXN0aW9uLmlkICsgJ19tYXJrcycpIGFzIG1hcmtzQ29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuTUFSS1MnXX19KE1heDoge3txdWVzdGlvbi53ZWlnaHR9fSk8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGlucHV0KT1cImNoZWNrTWF4VmFsKCRldmVudCwgbWFya3NDb250cm9sLCBxdWVzdGlvbj8ud2VpZ2h0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLTEyIGFzc2Vzc21lbnQtaW5wdXQtYm9yZGVyLW9uZSBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIHB4LTIgcHktMSBvdXRsaW5lLTAgYXNzZXNzbWVudC1iZy1ncmV5LW9uZSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5pZCArICdfbWFya3MnXCIgdHlwZT1cIm51bWJlclwiICh3aGVlbCk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBhbnN3ZXIgZmllbGQgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcHJldmlld01vZGVcIiBjbGFzcz1cImQtbWQtYmxvY2sgZC1ub25lIG10LTNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImFuc3dlckZpZWxkOyBjb250ZXh0OiB7cXVlc3Rpb246IHF1ZXN0aW9uLHByZXZpZXdNb2RlOiBwcmV2aWV3TW9kZSxpc01hbmRhdG9yeTogaXNNYW5kYXRvcnksZ3JvdXBJbmRleDogZ3JvdXBJbmRleH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIENoaWxkIFF1ZXN0aW9ucyBhbmQgUmVtYXJrcyBSZW5kZXJpbmcgTG9naWMgYmFzZWQgb24gY2hlY2tlZCBmb3JtIHN0YXRlIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlc3Rpb24uZGVmYXVsdE9wdGlvbnNMaXN0Py5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBxdWVzdGlvbi5kZWZhdWx0T3B0aW9uc0xpc3RcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzT3B0aW9uU2VsZWN0ZWQoc2VjdGlvbkZvcm1Hcm91cHNbZ3JvdXBJbmRleF0uZm9ybUdyb3VwLCBxdWVzdGlvbiwgb3B0aW9uLm9wdGlvbnM/LmlkKVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSRU1BUktTIEZJRUxEIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvbi5yZW1hcmtzUmVxdWlyZWQgJiYgc2VjdGlvbkZvcm1Hcm91cHNbZ3JvdXBJbmRleF0uZm9ybUdyb3VwLmdldChxdWVzdGlvbi5pZCArICdfcmVtYXJrc18nICsgb3B0aW9uLmlkKSBhcyByZW1hcmtzQ29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xNSBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLlJFTUFSS1MnXX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhICpuZ0lmPVwiIXByZXZpZXdNb2RlXCIgZm9ybUNvbnRyb2xOYW1lPVwie3txdWVzdGlvbi5pZH19X3JlbWFya3Nfe3tvcHRpb24uaWR9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cz1cIjJcIiBbcGxhY2Vob2xkZXJdPVwibGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QTEFDRUhPTERFUi5SRU1BUktTJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJlbWFya3NDb250cm9sLmludmFsaWQgJiYgcmVtYXJrc0NvbnRyb2wudG91Y2hlZCA/ICdhc3Nlc3NtZW50LWlucHV0LWJvcmRlci1pbnZhbGlkJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC0xMiBhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMyBhc3Nlc3NtZW50LWlucHV0LWJvcmRlci1vbmUgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LWlucHV0LXBhZGRpbmcgb3V0bGluZS0wIGFzc2Vzc21lbnQtYmctZ3JleS1vbmVcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByZXZpZXdNb2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS1uaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJlbWFya3NDb250cm9sLnZhbHVlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtdC0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJlbWFya3NDb250cm9sLmludmFsaWQgJiYgcmVtYXJrc0NvbnRyb2wudG91Y2hlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5FUlJPUi5GSUVMRF9SRVFVSVJFRCddfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ0hJTEQgUVVFU1RJT05TIFJFQ1VSU0lPTiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtdC00IGQtZmxleCBmbGV4LWNvbHVtbiBnYXAtM1wiICpuZ0lmPVwib3B0aW9uLmNoaWxkUXVlc3Rpb25MaXN0Py5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkSWQgb2Ygb3B0aW9uLmNoaWxkUXVlc3Rpb25MaXN0OyBsZXQgY2hpbGRJbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInF1ZXN0aW9uVGVtcGxhdGU7IGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGNoaWxkSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc01hbmRhdG9yeTogcXVlc3Rpb25CYW5rW2NoaWxkSWRdPy5pc01hbmRhdG9yeSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwSW5kZXg6IGdyb3VwSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRPcHRpb25JZDogb3B0aW9uLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2U6IHNlcXVlbmNlICsgJy4nICsgKGNoaWxkSW5kZXggKyAxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBhbnN3ZXIgZmllbGQgdGVtcGxhdGUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjYW5zd2VyRmllbGQgbGV0LXF1ZXN0aW9uPVwicXVlc3Rpb25cIiBsZXQtcHJldmlld01vZGU9XCJwcmV2aWV3TW9kZVwiIGxldC1pc01hbmRhdG9yeT1cImlzTWFuZGF0b3J5XCJcclxuICAgIGxldC1ncm91cEluZGV4PVwiZ3JvdXBJbmRleFwiPlxyXG4gICAgPGRpdiAqbmdJZj1cInNlY3Rpb25Gb3JtR3JvdXBzW2dyb3VwSW5kZXhdLmZvcm1Hcm91cFwiIFtmb3JtR3JvdXBdPVwic2VjdGlvbkZvcm1Hcm91cHNbZ3JvdXBJbmRleF0uZm9ybUdyb3VwXCJcclxuICAgICAgICBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInF1ZXN0aW9uLnF1ZXN0aW9uVHlwZT8uY29kZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgKm5nU3dpdGNoQ2FzZT1cIidRVUVTVElPTl9UWVBFLlNVQkpFQ1RJVkVfU0hPUlQnXCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uLXR5cGUtc2hvcnQgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5pZCFcIiBbcmVxdWlyZWRdPVwiaXNNYW5kYXRvcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwcmV2aWV3TW9kZV09XCJwcmV2aWV3TW9kZVwiIFtsYWJlbENvbmZpZ109XCJsYWJlbENvbmZpZ1wiPjwvbGliLXF1ZXN0aW9uLXR5cGUtc2hvcnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiICpuZ1N3aXRjaENhc2U9XCInUVVFU1RJT05fVFlQRS5TVUJKRUNUSVZFX0xPTkcnXCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uLXR5cGUtbG9uZyBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLmlkIVwiIFtyZXF1aXJlZF09XCJpc01hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3ByZXZpZXdNb2RlXT1cInByZXZpZXdNb2RlXCIgW2xhYmVsQ29uZmlnXT1cImxhYmVsQ29uZmlnXCI+PC9saWItcXVlc3Rpb24tdHlwZS1sb25nPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdTd2l0Y2hDYXNlPVwiJ1FVRVNUSU9OX1RZUEUuU1VCSkVDVElWRV9SSUNIX1RFWFQnXCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uLXR5cGUtZWRpdG9yIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24uaWQhXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNNYW5kYXRvcnlcIiBbcHJldmlld01vZGVdPVwicHJldmlld01vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbENvbmZpZ109XCJsYWJlbENvbmZpZ1wiPjwvbGliLXF1ZXN0aW9uLXR5cGUtZWRpdG9yPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdTd2l0Y2hDYXNlPVwiJ1FVRVNUSU9OX1RZUEUuT0JKRUNUSVZFJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbi10eXBlLW9iamVjdGl2ZSBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLmlkIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImlzTWFuZGF0b3J5XCI+PC9saWItcXVlc3Rpb24tdHlwZS1vYmplY3RpdmU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiICpuZ1N3aXRjaENhc2U9XCInUVVFU1RJT05fVFlQRS5NVUxUSV9TRUxFQ1QnXCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uLXR5cGUtbXVsdGlzZWxlY3QgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5pZCFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc01hbmRhdG9yeVwiPjwvbGliLXF1ZXN0aW9uLXR5cGUtbXVsdGlzZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiICpuZ1N3aXRjaENhc2U9XCInUVVFU1RJT05fVFlQRS5QUkVGRVJFTkNFJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbi10eXBlLXByZWZlcmVuY2UgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5pZCFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc01hbmRhdG9yeVwiPjwvbGliLXF1ZXN0aW9uLXR5cGUtcHJlZmVyZW5jZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgKm5nU3dpdGNoQ2FzZT1cIidRVUVTVElPTl9UWVBFLk5VTUJFUidcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItcXVlc3Rpb24tdHlwZS1zaG9ydCBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLmlkIVwiIFtyZXF1aXJlZF09XCJpc01hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3ByZXZpZXdNb2RlXT1cInByZXZpZXdNb2RlXCIgW2xhYmVsQ29uZmlnXT1cImxhYmVsQ29uZmlnXCI+PC9saWItcXVlc3Rpb24tdHlwZS1zaG9ydD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgKm5nU3dpdGNoQ2FzZT1cIidRVUVTVElPTl9UWVBFLkVNQUlMJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbi10eXBlLXNob3J0IFtxdWVzdGlvbl09XCJxdWVzdGlvblwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24uaWQhXCIgW3JlcXVpcmVkXT1cImlzTWFuZGF0b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICBbcHJldmlld01vZGVdPVwicHJldmlld01vZGVcIiBbbGFiZWxDb25maWddPVwibGFiZWxDb25maWdcIj48L2xpYi1xdWVzdGlvbi10eXBlLXNob3J0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdTd2l0Y2hDYXNlPVwiJ1FVRVNUSU9OX1RZUEUuQ09OVEFDVF9OVU1CRVInXCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uLXR5cGUtc2hvcnQgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5pZCFcIiBbcmVxdWlyZWRdPVwiaXNNYW5kYXRvcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwcmV2aWV3TW9kZV09XCJwcmV2aWV3TW9kZVwiIFtsYWJlbENvbmZpZ109XCJsYWJlbENvbmZpZ1wiPjwvbGliLXF1ZXN0aW9uLXR5cGUtc2hvcnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiICpuZ1N3aXRjaENhc2U9XCInUVVFU1RJT05fVFlQRS5VUkwnXCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uLXR5cGUtc2hvcnQgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5pZCFcIiBbcmVxdWlyZWRdPVwiaXNNYW5kYXRvcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwcmV2aWV3TW9kZV09XCJwcmV2aWV3TW9kZVwiIFtsYWJlbENvbmZpZ109XCJsYWJlbENvbmZpZ1wiPjwvbGliLXF1ZXN0aW9uLXR5cGUtc2hvcnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiICpuZ1N3aXRjaENhc2U9XCInUVVFU1RJT05fVFlQRS5GSUxFX1VQTE9BRCdcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItcXVlc3Rpb24tdHlwZS1maWxlLXVwbG9hZCBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLmlkIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImlzTWFuZGF0b3J5XCIgW2xhYmVsQ29uZmlnXT1cImxhYmVsQ29uZmlnXCIgW2ltYWdlQ29uZmlnXT1cImltYWdlQ29uZmlnXCJcclxuICAgICAgICAgICAgICAgICAgICAoc25hY2tiYXJNZXNzYWdlKT1cInNuYWNrYmFyTWVzc2FnZS5lbWl0KCRldmVudClcIj48L2xpYi1xdWVzdGlvbi10eXBlLWZpbGUtdXBsb2FkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBFcnJvciBNZXNzYWdlcyBhbmQgQ2hhcmFjdGVyIENvdW50IENvbnRhaW5lciAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIXByZXZpZXdNb2RlICYmIHNlY3Rpb25Gb3JtR3JvdXBzW2dyb3VwSW5kZXhdLmZvcm1Hcm91cC5nZXQocXVlc3Rpb24uaWQ/LnRvU3RyaW5nKCkgfHwgJycpIGFzIGNvbnRyb2xcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1zdGFydCBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLlJFUVVJUkVEX1JFU1BPTlNFJ119fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtdC0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnM/LlsncGF0dGVybiddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7cXVlc3Rpb24/LnZhbGlkYXRpb25NZXNzYWdlIHx8IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuRVJST1IuSU5WQUxJRF9GT1JNQVQnXX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycz8uWydtaW5sZW5ndGgnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuRVJST1IuTUlOX0NIQVJTJ10/LnJlcGxhY2UoJ3t7bGVuZ3RofX0nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLmVycm9ycz8uWydtaW5sZW5ndGgnXS5yZXF1aXJlZExlbmd0aCArICcnKX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycz8uWydtYXhsZW5ndGgnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuRVJST1IuTUFYX0NIQVJTJ10/LnJlcGxhY2UoJ3t7bGVuZ3RofX0nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLmVycm9ycz8uWydtYXhsZW5ndGgnXS5yZXF1aXJlZExlbmd0aCArICcnKX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycz8uWydtaW5PcHRpb25zJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLk1JTl9PUFRJT05TJ10/LnJlcGxhY2UoJ3t7Y291bnR9fScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZXJyb3JzPy5bJ21pbk9wdGlvbnMnXS5yZXF1aXJlZCArICcnKX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycz8uWydtYXhPcHRpb25zJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLk1BWF9PUFRJT05TJ10/LnJlcGxhY2UoJ3t7Y291bnR9fScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZXJyb3JzPy5bJ21heE9wdGlvbnMnXS5yZXF1aXJlZCArICcnKX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycz8uWydtYXhGaWxlcyddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5FUlJPUi5NQVhfRklMRVMnXT8ucmVwbGFjZSgne3tjb3VudH19JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5lcnJvcnM/LlsnbWF4RmlsZXMnXS5yZXF1aXJlZCArICcnKX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycz8uWydtYXhGaWxlU2l6ZSddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5FUlJPUi5NQVhfRklMRV9TSVpFJ10/LnJlcGxhY2UoJ3t7c2l6ZX19JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5lcnJvcnM/LlsnbWF4RmlsZVNpemUnXS5yZXF1aXJlZFNpemUgKyAnJyl9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiB3aGl0ZS1zcGFjZS1ub3dyYXAgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRNYXhDaGFyQ291bnQocXVlc3Rpb24pID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGdldFJlbWFpbmluZ0NoYXJzKHF1ZXN0aW9uLCBjb250cm9sKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5DSEFSQUNURVInXX19e3tnZXRSZW1haW5pbmdDaGFycyhxdWVzdGlvbiwgY29udHJvbCkgIT09XHJcbiAgICAgICAgICAgICAgICAgICAgMVxyXG4gICAgICAgICAgICAgICAgICAgID8gJ3MnIDogJyd9fSB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuUkVNQUlOSU5HJ119fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFJldXNhYmxlIFNlY3Rpb24gRm9ybSBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNzZWN0aW9uQ29udGVudCBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIiBsZXQtaT1cImlcIj5cclxuICAgIDxmb3JtIGNsYXNzPVwidy0xMDBcIiAqbmdJZj1cInNlY3Rpb25Gb3JtR3JvdXBzW2ldLmZvcm1Hcm91cFwiIFtmb3JtR3JvdXBdPVwic2VjdGlvbkZvcm1Hcm91cHNbaV0uZm9ybUdyb3VwXCJcclxuICAgICAgICBbbmFtZV09XCInc2VjdGlvbmZybS0nICsgaVwiIG5vdmFsaWRhdGU+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIXByZXZpZXdNb2RlICYmIChzZWN0aW9uPy5xcHNEZXNjPy5bMF0/LnRleHQgfHwgc2VjdGlvbj8ubWVkaWFVcmwpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTE0IGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlblwiPlxyXG4gICAgICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLlRPVEFMX1FVRVNUSU9OUyddfX06IHt7IHNlY3Rpb24/LnRvdGFsUXVlc3Rpb25zIHx8IDAgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvcGVuSW5zdHJ1Y3Rpb25zRGlhbG9nKHNlY3Rpb24pXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC16b29tLWFuaW1hdGlvbiBhc3Nlc3NtZW50LWJ1dHRvbi1wYWRkaW5nIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTMgYXNzZXNzbWVudC1idG4tcHJpbWFyeS10cmFuc3BhcmVudFwiPlxyXG4gICAgICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLlZJRVdfSU5TVFJVQ1RJT05TJ119fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTNcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3Egb2Ygc2VjdGlvbi5zZWN0aW9uUXVlc3Rpb25zTGlzdCB8IG9yZGVyQnk7IGxldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJxdWVzdGlvblRlbXBsYXRlOyBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICBxdWVzdGlvbklkOiBzcS5xdWVzdGlvbklkLFxyXG4gICAgICAgICAgICAgICAgaXNNYW5kYXRvcnk6IHF1ZXN0aW9uQmFua1tzcS5xdWVzdGlvbklkXT8uaXNNYW5kYXRvcnksXHJcbiAgICAgICAgICAgICAgICBncm91cEluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50T3B0aW9uSWQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBzZXF1ZW5jZTogaiArIDFcclxuICAgICAgICAgICAgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gdmlkZW8gcHJldmlldyAgLS0+XHJcbjxuZy10ZW1wbGF0ZSBsZXQtdmlkZW9Vcmw9XCJ2aWRlb1VybFwiICNWaWRlb1RlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cImFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gb3ZlcmZsb3ctaGlkZGVuIGNvbC1tZC0xMCBjb2wtMTJcIj5cclxuICAgICAgICA8dmlkZW8gKm5nSWY9XCJ2aWRlb1VybD8uaW5jbHVkZXMoJy5tcDQnKSBlbHNlIHlvdXR1YmVWaWRlb1wiIHdpZHRoPVwiNDAwXCIgY29udHJvbHMgY2xhc3M9XCJtdy0xMDAgZC1ibG9jayBteC1hdXRvXCI+XHJcbiAgICAgICAgICAgIDxzb3VyY2UgW3NyY109XCJ2aWRlb1VybFwiIHR5cGU9XCJ2aWRlby9tcDRcIj5cclxuICAgICAgICA8L3ZpZGVvPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjeW91dHViZVZpZGVvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwieW91dHViZS12aWRlbyBwb3NpdGlvbi1yZWxhdGl2ZSBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGlmcmFtZSBbc3JjXT1cImFkZFlvdXR1YmVJZnJhbWVTcmModmlkZW9VcmwpXCIgdGl0bGU9XCJZb3VUdWJlIHZpZGVvIHBsYXllclwiIGZyYW1lYm9yZGVyPVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgYWxsb3c9XCJhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgY2xpcGJvYXJkLXdyaXRlOyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlOyB3ZWItc2hhcmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFsbG93ZnVsbHNjcmVlbiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRvcC0wIHN0YXJ0LTAgdy0xMDAgaC0xMDAgZC1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgPC9pZnJhbWU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
772
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC10YWtlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb25zLWFzc2Vzc21lbnQvc3JjL2xpYi9tb2R1bGVzL2Fzc2Vzc21lbnQtdGFrZXIvYXNzZXNzbWVudC10YWtlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb25zLWFzc2Vzc21lbnQvc3JjL2xpYi9tb2R1bGVzL2Fzc2Vzc21lbnQtdGFrZXIvYXNzZXNzbWVudC10YWtlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEMsT0FBTyxFQUFlLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlqRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUloSCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFqRCxNQUFNLE9BQU8sd0JBQXdCO0lBZ0RuQyxZQUNVLHNCQUE4QyxFQUM5QyxFQUFlLEVBQ2Ysc0JBQThDLEVBQzlDLFNBQXVCLEVBQ3ZCLE1BQWlCO1FBSmpCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBcERsQixnQkFBVyxHQUE4QixFQUFFLENB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RyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnRUYWtlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Fzc2Vzc21lbnQtdGFrZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc3BvbnNlQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3Jlc3BvbnNlLWJ1aWxkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlY3Rpb25JbnN0cnVjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2VjdGlvbi1pbnN0cnVjdGlvbnMvc2VjdGlvbi1pbnN0cnVjdGlvbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXNzZXNzZWVEVE8sIEFzc2Vzc29yRFRPLCBBc3Nlc3NtZW50LCBBc3Nlc3NtZW50SW5zdGFuY2VBc3Nlc3NlRFRPLCBBc3Nlc3NtZW50U3RlcCwgQXNzZXNzbWVudENvbnRleHREVE8sIFNlY3Rpb25TY29yZSwgU2tpbGxTY29yZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9pbnRlcmZhY2VzL2Fzc2Vzc21lbnQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQXNzZXNzbWVudFF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvcXVlc3Rpb24uaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQXNzZXNzbWVudFF1ZXN0aW9uUGFwZXIsIFF1ZXN0aW9uUGFwZXJTZWN0aW9uLCBTZWN0aW9uUXVlc3Rpb24gfSBmcm9tICcuLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9xdWVzdGlvbi1wYXBlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBTa2lsbEFsbG9jYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29tcG9uZW50cy9za2lsbC1hbGxvY2F0aW9uL3NraWxsLWFsbG9jYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgc29ydEJ5T3JkZXIgfSBmcm9tICcuLi8uLi9zaGFyZWQvdXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYXNzZXNzbWVudC10YWtlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2Vzc21lbnQtdGFrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Fzc2Vzc21lbnQtdGFrZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEFzc2Vzc21lbnRUYWtlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgbGFiZWxDb25maWc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICBASW5wdXQoKSBpbWFnZUNvbmZpZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gIEBJbnB1dCgpIHNob3dGb290ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBhc3Nlc3NtZW50SWQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgYXNzZXNzbWVudEluc3RhbmNlSWQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgYXNzZXNzZWVEYXRhOiBBc3Nlc3NlZURUTyA9IHsgaWQ6IDAsIGFjdG9ySWQ6IDAsIGFjdG9yVHlwZTogJ1VTRVInIH07XHJcbiAgQElucHV0KCkgYXNzZXNzb3JEYXRhOiBBc3Nlc3NvckRUTyA9IHsgaWQ6IDAsIGFjdG9ySWQ6IDAsIGFjdG9yVHlwZTogJ1VTRVInIH07XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwcmV2aWV3TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHZlcnRpY2FsVmlldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVuYWJsZU1hcmtzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGlkZVNlY3Rpb25UYWJzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYXNzZXNzbWVudENvbnRleHQhOiBBc3Nlc3NtZW50Q29udGV4dERUTztcclxuICBASW5wdXQoKSBhc3Nlc3NlZVJlc3BvbnNlOiBBc3Nlc3NtZW50SW5zdGFuY2VBc3Nlc3NlRFRPID0ge307XHJcbiAgQElucHV0KCkgbWFya0FzQ29tcGxldGVkOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzZWN0aW9uV2lzZVNjb3JlOiB7IFtzZWN0aW9uSWQ6IG51bWJlcl06IFNlY3Rpb25TY29yZSB9ID0ge307XHJcbiAgQElucHV0KCkgc2hvd092ZXJhbGxSZW1hcmtzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBzbmFja2Jhck1lc3NhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgbWVzc2FnZTogc3RyaW5nLCB0eXBlOiAnc3VjY2VzcycgfCAnZXJyb3InIHwgJ2luZm8nIH0+KCk7XHJcbiAgQE91dHB1dCgpIHN1Ym1pdEFzc2Vzc21lbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgc3RlcENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFzc2Vzc21lbnRTdGVwPigpO1xyXG5cclxuICBzaG93TG9hZGVyOiBib29sZWFuID0gdHJ1ZTtcclxuICBxdWVzdGlvbkJhbms6IFJlY29yZDxudW1iZXIsIEFzc2Vzc21lbnRRdWVzdGlvbj4gPSB7fTtcclxuICBhc3Nlc3NtZW50UXVlc3Rpb25QYXBlckRhdGE6IEFzc2Vzc21lbnRRdWVzdGlvblBhcGVyID0ge307XHJcbiAgYXNzZXNzbWVudERhdGE6IEFzc2Vzc21lbnQgPSB7fTtcclxuICBjb25maWdzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNTdWJtaXR0aW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VjdGlvbkZvcm1Hcm91cHM6IHsgc2VjdGlvbklkOiBudW1iZXI7IGZvcm1Hcm91cDogRm9ybUdyb3VwIH1bXSA9IFtdO1xyXG4gIG92ZXJhbGxOb3Rlc0N0cmwgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xyXG4gIHByaXZhdGUgeW91dHViZVVybENhY2hlOiB7IFt1cmw6IHN0cmluZ106IGFueSB9ID0ge307XHJcblxyXG4gIHByaXZhdGUgX3NlbGVjdGVkVGFiSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgZ2V0IHNlbGVjdGVkVGFiSW5kZXgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFRhYkluZGV4O1xyXG4gIH1cclxuICBzZXQgc2VsZWN0ZWRUYWJJbmRleCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRUYWJJbmRleCAhPT0gdmFsdWUpIHtcclxuICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJJbmRleCA9IHZhbHVlO1xyXG4gICAgICB0aGlzLmVtaXRTdGVwRGV0YWlscygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VjdGlvbkVycm9yczogYm9vbGVhbltdID0gW107XHJcbiAgdGVuYW50SWQ6IG51bWJlciA9IDA7XHJcbiAgdG9vbHRpcFN0YXRlOiBSZWNvcmQ8bnVtYmVyLCBib29sZWFuPiA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXNzZXNzbWVudFRha2VyU2VydmljZTogQXNzZXNzbWVudFRha2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSByZXNwb25zZUJ1aWxkZXJTZXJ2aWNlOiBSZXNwb25zZUJ1aWxkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2dcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0Q29uZmlnc0Zyb21KU09OKCk7XHJcblxyXG4gICAgaWYgKHRoaXMucHJldmlld01vZGUgfHwgdGhpcy5hc3Nlc3NlZVJlc3BvbnNlPy5hc3Nlc3NtZW50VGFrZW4/LmNvZGUgPT09ICdBU1NFU1NNRU5UX1RBS0VOLkNPTVBMRVRFJykge1xyXG4gICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hc3Nlc3NtZW50SW5zdGFuY2VJZCkge1xyXG4gICAgICBpZiAoIXRoaXMuYXNzZXNzbWVudENvbnRleHQpIHtcclxuICAgICAgICB0aGlzLmxvYWRBc3Nlc3NtZW50RGF0YSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYXNzZXNzbWVudFF1ZXN0aW9uUGFwZXJEYXRhID0gdGhpcy5hc3Nlc3NtZW50Q29udGV4dC5hc3Nlc3NtZW50UXVlc3Rpb25QYXBlckRUTztcclxuICAgICAgICB0aGlzLmFzc2Vzc21lbnREYXRhID0gdGhpcy5hc3Nlc3NtZW50Q29udGV4dC5hc3Nlc3NtZW50O1xyXG4gICAgICAgIHRoaXMucXVlc3Rpb25CYW5rID0gdGhpcy5hc3Nlc3NtZW50Q29udGV4dC5xdWVzdGlvbkRUT01hcDtcclxuICAgICAgICB0aGlzLnRlbmFudElkID0gdGhpcy5hc3Nlc3NtZW50RGF0YT8udGVuYW50SWQgfHwgMDtcclxuICAgICAgICBpZiAoIXRoaXMuYXNzZXNzZWVSZXNwb25zZT8uaWQpIHtcclxuICAgICAgICAgIHRoaXMuYXNzZXNzZWVSZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgICAgIGFzc2Vzc21lbnRJbnN0YW5jZTogeyBpZDogdGhpcy5hc3Nlc3NtZW50SW5zdGFuY2VJZCB9LFxyXG4gICAgICAgICAgICBhc3Nlc3NlZTogdGhpcy5hc3Nlc3NlZURhdGEsXHJcbiAgICAgICAgICAgIGFzc2Vzc29yOiB0aGlzLmFzc2Vzc29yRGF0YSxcclxuICAgICAgICAgICAgYWlhZGVmYXVsdFJlc3BvbnNlTGlzdDogW10sXHJcbiAgICAgICAgICAgIHRlbmFudDogdGhpcy50ZW5hbnRJZFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub3ZlcmFsbE5vdGVzQ3RybC5zZXRWYWx1ZSh0aGlzLmFzc2Vzc2VlUmVzcG9uc2Uubm90ZXMgfHwgJycpO1xyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkICYmICF0aGlzLnNob3dPdmVyYWxsUmVtYXJrcykge1xyXG4gICAgICAgICAgdGhpcy5vdmVyYWxsTm90ZXNDdHJsLmRpc2FibGUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmV0Y2hBdHRhY2htZW50c0FuZFNldHVwRm9ybSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb25maWdzRnJvbUpTT04oKSB7XHJcbiAgICBmb3JrSm9pbih7XHJcbiAgICAgIGxhYmVsQ29uZmlnOiB0aGlzLmFzc2Vzc21lbnRUYWtlclNlcnZpY2UuZ2V0Q29uZmlnSlNPTignanNvbi9sYWJlbENvbmZpZycpLFxyXG4gICAgICBpbWFnZUNvbmZpZzogdGhpcy5hc3Nlc3NtZW50VGFrZXJTZXJ2aWNlLmdldENvbmZpZ0pTT04oJ2pzb24vaW1hZ2VDb25maWcnKVxyXG4gICAgfSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxhYmVsQ29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgcmVzPy5sYWJlbENvbmZpZywgdGhpcy5sYWJlbENvbmZpZyk7XHJcbiAgICAgIHRoaXMuaW1hZ2VDb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCByZXM/LmltYWdlQ29uZmlnLCB0aGlzLmltYWdlQ29uZmlnKTtcclxuXHJcbiAgICAgIHRoaXMuY29uZmlnc0xvYWRlZCA9IHRydWU7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbG9hZEFzc2Vzc21lbnREYXRhKCkge1xyXG4gICAgY29uc3QgYXBpQ2FsbHMgPSB7XHJcbiAgICAgIGFzc2Vzc21lbnREYXRhOiB0aGlzLmFzc2Vzc21lbnRUYWtlclNlcnZpY2UuZ2V0QXNzZXNzbWVudENvbnRleHRCeUlkKHRoaXMuYXNzZXNzbWVudElkKSxcclxuICAgICAgLi4uKHRoaXMuYXNzZXNzZWVEYXRhPy5pZCAmJiAhdGhpcy5hc3Nlc3NlZVJlc3BvbnNlPy5pZCAmJiB7XHJcbiAgICAgICAgYXNzZXNzZWVSZXNwb25zZTogdGhpcy5hc3Nlc3NtZW50VGFrZXJTZXJ2aWNlLmdldEFuc3dlcnNCeUFpYUlkKHRoaXMuYXNzZXNzZWVEYXRhLmlkKVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZm9ya0pvaW4oYXBpQ2FsbHMpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmFzc2Vzc21lbnRRdWVzdGlvblBhcGVyRGF0YSA9IGRhdGE/LmFzc2Vzc21lbnREYXRhPy5hc3Nlc3NtZW50UXVlc3Rpb25QYXBlckRUTztcclxuICAgICAgICB0aGlzLmFzc2Vzc21lbnREYXRhID0gZGF0YT8uYXNzZXNzbWVudERhdGE/LmFzc2Vzc21lbnQ7XHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbkJhbmsgPSBkYXRhPy5hc3Nlc3NtZW50RGF0YT8ucXVlc3Rpb25EVE9NYXA7XHJcbiAgICAgICAgdGhpcy50ZW5hbnRJZCA9IGRhdGE/LmFzc2Vzc21lbnREYXRhPy5hc3Nlc3NtZW50Py50ZW5hbnRJZDtcclxuICAgICAgICBpZiAoZGF0YT8uYXNzZXNzZWVSZXNwb25zZSkge1xyXG4gICAgICAgICAgdGhpcy5hc3Nlc3NlZVJlc3BvbnNlID0gZGF0YT8uYXNzZXNzZWVSZXNwb25zZTtcclxuICAgICAgICAgIGlmICh0aGlzLmFzc2Vzc2VlUmVzcG9uc2U/LmFzc2Vzc21lbnRUYWtlbj8uY29kZSA9PT0gJ0FTU0VTU01FTlRfVEFLRU4uQ09NUExFVEUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFzc2Vzc2VlUmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgIGlkOiAwLFxyXG4gICAgICAgICAgICBhc3Nlc3NtZW50SW5zdGFuY2U6IHsgaWQ6IHRoaXMuYXNzZXNzbWVudEluc3RhbmNlSWQgfSxcclxuICAgICAgICAgICAgYXNzZXNzZWU6IHRoaXMuYXNzZXNzZWVEYXRhLFxyXG4gICAgICAgICAgICBhc3Nlc3NvcjogdGhpcy5hc3Nlc3NvckRhdGEsXHJcbiAgICAgICAgICAgIGFpYWRlZmF1bHRSZXNwb25zZUxpc3Q6IFtdLFxyXG4gICAgICAgICAgICB0ZW5hbnQ6IHRoaXMudGVuYW50SWRcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub3ZlcmFsbE5vdGVzQ3RybC5zZXRWYWx1ZSh0aGlzLmFzc2Vzc2VlUmVzcG9uc2Uubm90ZXMgfHwgJycpO1xyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkICYmICF0aGlzLnNob3dPdmVyYWxsUmVtYXJrcykge1xyXG4gICAgICAgICAgdGhpcy5vdmVyYWxsTm90ZXNDdHJsLmRpc2FibGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5mZXRjaEF0dGFjaG1lbnRzQW5kU2V0dXBGb3JtKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5zbmFja2Jhck1lc3NhZ2UuZW1pdCh7IG1lc3NhZ2U6IHRoaXMubGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5UT0FTVC5FUlJPUl9ERUZBVUxUJ10sIHR5cGU6ICdlcnJvcicgfSk7XHJcbiAgICAgICAgdGhyb3cgeyBlcnJvciwgbWV0aG9kOiAnR0VUJyB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hBdHRhY2htZW50c0FuZFNldHVwRm9ybSgpIHtcclxuICAgIGNvbnN0IGF0dGFjaG1lbnRJZHM6IFNldDxudW1iZXI+ID0gbmV3IFNldCgpO1xyXG4gICAgdGhpcy5hc3Nlc3NlZVJlc3BvbnNlPy5haWFkZWZhdWx0UmVzcG9uc2VMaXN0Py5mb3JFYWNoKChhOiBhbnkpID0+IHtcclxuICAgICAgYS5hdHRhY2htZW50UmVzcG9uc2VMaXN0Py5mb3JFYWNoKChyOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoci5hdHRhY2htZW50SWQpIGF0dGFjaG1lbnRJZHMuYWRkKHIuYXR0YWNobWVudElkKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoYXR0YWNobWVudElkcy5zaXplID4gMCkge1xyXG4gICAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgICAgZW50aXR5SWRzOiBBcnJheS5mcm9tKGF0dGFjaG1lbnRJZHMpLFxyXG4gICAgICAgIGVudGl0eVR5cGU6ICdFTlRJVFlfVFlQRS5BU1NFU1NNRU5UX1FVRVNUSU9OJ1xyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmFzc2Vzc21lbnRUYWtlclNlcnZpY2UuZ2V0QXR0YWNobWVudHMocGFyYW1zKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChhdHRhY2htZW50c1JlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFzc2Vzc2VlUmVzcG9uc2UuYWlhZGVmYXVsdFJlc3BvbnNlTGlzdD8uZm9yRWFjaCgoYTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGEuYXR0YWNobWVudFJlc3BvbnNlTGlzdD8uZm9yRWFjaCgocjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHIuYXR0YWNobWVudElkICYmIGF0dGFjaG1lbnRzUmVzW3IuYXR0YWNobWVudElkXSkge1xyXG4gICAgICAgICAgICAgICAgci5hdHRhY2htZW50T2JqZWN0ID0gYXR0YWNobWVudHNSZXNbci5hdHRhY2htZW50SWRdO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuZm9ybVNldHVwKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgdGhpcy5mb3JtU2V0dXAoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtU2V0dXAoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvcm1TZXR1cCgpIHtcclxuICAgIHRoaXMuc2VjdGlvbkZvcm1Hcm91cHMgPSBbXTtcclxuXHJcbiAgICBzb3J0QnlPcmRlcih0aGlzLmFzc2Vzc21lbnRRdWVzdGlvblBhcGVyRGF0YT8ucXVlc3Rpb25QYXBlclNlY3Rpb25MaXN0KT8uZm9yRWFjaCgoc2VjdGlvbjogUXVlc3Rpb25QYXBlclNlY3Rpb24pID0+IHtcclxuICAgICAgY29uc3QgZ3JvdXA6IGFueSA9IHt9O1xyXG5cclxuICAgICAgc29ydEJ5T3JkZXIoc2VjdGlvbj8uc2VjdGlvblF1ZXN0aW9uc0xpc3QpPy5mb3JFYWNoKChzcTogU2VjdGlvblF1ZXN0aW9uKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcUlkID0gc3EucXVlc3Rpb25JZDtcclxuICAgICAgICBpZiAoIXFJZCB8fCAhdGhpcy5xdWVzdGlvbkJhbmtbcUlkXSkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBxdWVzdGlvbiA9IHRoaXMucXVlc3Rpb25CYW5rW3FJZF07XHJcbiAgICAgICAgdGhpcy5hZGRDb250cm9sRm9yUXVlc3Rpb24oZ3JvdXAsIHF1ZXN0aW9uLCBxdWVzdGlvbj8uaXNNYW5kYXRvcnkpO1xyXG5cclxuICAgICAgICBpZiAocXVlc3Rpb24uZGVmYXVsdE9wdGlvbnNMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgICAgIHF1ZXN0aW9uLmRlZmF1bHRPcHRpb25zTGlzdC5mb3JFYWNoKChvcHRpb246IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAob3B0aW9uLnJlbWFya3NSZXF1aXJlZCkge1xyXG4gICAgICAgICAgICAgIC8vIFByZS1wb3B1bGF0ZSByZW1hcmtzIGlmIHdlIGhhdmUgYW5zd2VycyBtYXRjaGluZyB0aGlzIG9wdGlvbi5cclxuICAgICAgICAgICAgICBsZXQgcmVtYXJrVmFsID0gbnVsbDtcclxuICAgICAgICAgICAgICBjb25zdCBwcmVmaWxsZWRPcHRpb25zID0gdGhpcy5nZXRQcmVmaWxsZWRBbnN3ZXIocUlkKTtcclxuICAgICAgICAgICAgICBpZiAocHJlZmlsbGVkT3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYW5zT2JqID0gdGhpcy5hc3Nlc3NlZVJlc3BvbnNlPy5haWFkZWZhdWx0UmVzcG9uc2VMaXN0Py5maW5kKChhOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgIGEuc2VjdGlvblF1ZXN0aW9uPy5xdWVzdGlvbklkID09PSBxSWQgJiYgKCFhLmNoaWxkUXVlc3Rpb25JZCB8fCBhLmNoaWxkUXVlc3Rpb25JZCA9PT0gMClcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYW5zT2JqKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChxdWVzdGlvbi5xdWVzdGlvblR5cGU/LmNvZGUgPT09ICdRVUVTVElPTl9UWVBFLk9CSkVDVElWRScgJiYgKHByZWZpbGxlZE9wdGlvbnMgPT09IChvcHRpb24ub3B0aW9ucz8uaWQgPz8gb3B0aW9uLmlkKSB8fCBwcmVmaWxsZWRPcHRpb25zPy5pZCA9PT0gKG9wdGlvbi5vcHRpb25zPy5pZCA/PyBvcHRpb24uaWQpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbWFya1ZhbCA9IGFuc09iai5yZW1hcmtzIHx8IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwcmVmaWxsZWRPcHRpb25zKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nT2JqID0gYW5zT2JqLmRyb2JqZWN0aXZlcmVzcG9uc2VMaXN0Py5maW5kKChyOiBhbnkpID0+IHIuZGVmYXVsdE9wdGlvbj8ub3B0aW9ucz8uaWQgPT09IChvcHRpb24ub3B0aW9ucz8uaWQgPz8gb3B0aW9uLmlkKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoaW5nT2JqKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZW1hcmtWYWwgPSBtYXRjaGluZ09iai5yZW1hcmtzIHx8IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBjb25zdCByZW1hcmtDdHJsID0gbmV3IEZvcm1Db250cm9sKHJlbWFya1ZhbCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIHJlbWFya0N0cmwuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgZ3JvdXBbYCR7cUlkfV9yZW1hcmtzXyR7b3B0aW9uLmlkfWBdID0gcmVtYXJrQ3RybDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgb3B0aW9uLmNoaWxkUXVlc3Rpb25MaXN0Py5mb3JFYWNoKChjaGlsZElkOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBjaGlsZFF1ZXMgPSB0aGlzLnF1ZXN0aW9uQmFua1tjaGlsZElkXTtcclxuICAgICAgICAgICAgICBpZiAoY2hpbGRRdWVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZENvbnRyb2xGb3JRdWVzdGlvbihncm91cCwgY2hpbGRRdWVzLCBmYWxzZSwgdHJ1ZSwgcUlkLCBvcHRpb24ub3B0aW9ucz8uaWQgPz8gb3B0aW9uLmlkKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnN0IGZnID0gdGhpcy5mYi5ncm91cChncm91cCk7XHJcblxyXG4gICAgICBzb3J0QnlPcmRlcihzZWN0aW9uPy5zZWN0aW9uUXVlc3Rpb25zTGlzdCk/LmZvckVhY2goKHNxOiBTZWN0aW9uUXVlc3Rpb24pID0+IHtcclxuICAgICAgICBjb25zdCBxSWQgPSBzcS5xdWVzdGlvbklkO1xyXG4gICAgICAgIGlmICghcUlkIHx8ICF0aGlzLnF1ZXN0aW9uQmFua1txSWRdKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgcXVlc3Rpb24gPSB0aGlzLnF1ZXN0aW9uQmFua1txSWRdO1xyXG5cclxuICAgICAgICBpZiAocXVlc3Rpb24uZGVmYXVsdE9wdGlvbnNMaXN0Py5sZW5ndGgpIHtcclxuICAgICAgICAgIGZnLmdldChxSWQ/LnRvU3RyaW5nKCkpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICAgICAgICAgIHF1ZXN0aW9uLmRlZmF1bHRPcHRpb25zTGlzdD8uZm9yRWFjaCgob3B0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5pc09wdGlvblNlbGVjdGVkKGZnLCBxdWVzdGlvbiwgb3B0aW9uLm9wdGlvbnM/LmlkKTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbi5yZW1hcmtzUmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlbWFya0N0cmwgPSBmZy5nZXQoYCR7cUlkfV9yZW1hcmtzXyR7b3B0aW9uLmlkfWApO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzU2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgcmVtYXJrQ3RybD8uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlbWFya0N0cmw/LmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgICAgICAgICAgICAgICByZW1hcmtDdHJsPy5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlbWFya0N0cmw/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGlmIChvcHRpb24uY2hpbGRRdWVzdGlvbkxpc3Q/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uLmNoaWxkUXVlc3Rpb25MaXN0LmZvckVhY2goKGNoaWxkSWQ6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFF1ZXMgPSB0aGlzLnF1ZXN0aW9uQmFua1tjaGlsZElkXTtcclxuICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkUXVlcz8uaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZEN0cmwgPSBmZy5nZXQoY2hpbGRRdWVzLmlkPy50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNTZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuZ2V0VmFsaWRhdG9yc0ZvclF1ZXN0aW9uKGNoaWxkUXVlcywgY2hpbGRRdWVzLmlzTWFuZGF0b3J5IHx8IGZhbHNlKS5maWx0ZXIodiA9PiAhIXYpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRDdHJsPy5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZSh2YWxpZGF0b3JzKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkQ3RybD8uY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZEN0cmw/LnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjaGlsZEN0cmw/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zZWN0aW9uRm9ybUdyb3Vwcy5wdXNoKHtcclxuICAgICAgICBzZWN0aW9uSWQ6IHNlY3Rpb24uaWQsXHJcbiAgICAgICAgZm9ybUdyb3VwOiBmZ1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZWN0aW9uRXJyb3JzLnB1c2goZmFsc2UpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5lbWl0U3RlcERldGFpbHMoKTtcclxuICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZW1pdFN0ZXBEZXRhaWxzKCkge1xyXG4gICAgaWYgKHRoaXMuc2VjdGlvbkZvcm1Hcm91cHMgJiYgdGhpcy5zZWN0aW9uRm9ybUdyb3Vwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc3RlcENoYW5nZWQuZW1pdCh7XHJcbiAgICAgICAgY3VycmVudFN0ZXBJbmRleDogdGhpcy5zZWxlY3RlZFRhYkluZGV4LFxyXG4gICAgICAgIHRvdGFsU3RlcHM6IHRoaXMuc2VjdGlvbkZvcm1Hcm91cHMubGVuZ3RoLFxyXG4gICAgICAgIGlzTGFzdFN0ZXA6IHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9PT0gdGhpcy5zZWN0aW9uRm9ybUdyb3Vwcy5sZW5ndGggLSAxXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkQ29udHJvbEZvclF1ZXN0aW9uKGdyb3VwOiBhbnksIHF1ZXN0aW9uOiBBc3Nlc3NtZW50UXVlc3Rpb24sIGlzTWFuZGF0b3J5OiBib29sZWFuID0gZmFsc2UsIGlzQ2hpbGQ6IGJvb2xlYW4gPSBmYWxzZSwgcGFyZW50SWQ/OiBudW1iZXIsIHBhcmVudE9wdGlvbklkPzogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBxSWQgPSBxdWVzdGlvbi5pZDtcclxuICAgIGlmICghcUlkKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuZ2V0VmFsaWRhdG9yc0ZvclF1ZXN0aW9uKHF1ZXN0aW9uLCBpc01hbmRhdG9yeSkuZmlsdGVyKHYgPT4gISF2KTtcclxuICAgIGxldCBwcmVmaWxsZWRWYWx1ZSA9IHRoaXMuZ2V0UHJlZmlsbGVkQW5zd2VyKHFJZCwgaXNDaGlsZCwgcGFyZW50SWQsIHBhcmVudE9wdGlvbklkKTtcclxuXHJcbiAgICBjb25zdCBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKHByZWZpbGxlZFZhbHVlLCBWYWxpZGF0b3JzLmNvbXBvc2UodmFsaWRhdG9ycykpO1xyXG5cclxuICAgIC8vIERpc2FibGUgaWYgYXNzZXNzbWVudCBpcyBjb21wbGV0ZWRcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdyb3VwW3FJZF0gPSBjb250cm9sO1xyXG5cclxuICAgIC8vIEF0dGFjaCBtYXJrIGFzc2lnbm1lbnQgY29udHJvbCBpZiByZXF1aXJlZFxyXG4gICAgaWYgKHRoaXMuZW5hYmxlTWFya3MgJiYgdGhpcy5zaG91bGRTaG93TWFya3NEcm9wZG93bihxdWVzdGlvbikpIHtcclxuICAgICAgbGV0IG1hcmtWYWx1ZSA9IHRoaXMuZ2V0UHJlZmlsbGVkTWFyayhxSWQsIGlzQ2hpbGQsIHBhcmVudElkLCBwYXJlbnRPcHRpb25JZCk7XHJcbiAgICAgIGdyb3VwW2Ake3FJZH1fbWFya3NgXSA9IG5ldyBGb3JtQ29udHJvbChtYXJrVmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UHJlZmlsbGVkTWFyayhxSWQ6IG51bWJlciwgaXNDaGlsZDogYm9vbGVhbiA9IGZhbHNlLCBwYXJlbnRJZD86IG51bWJlciwgcGFyZW50T3B0aW9uSWQ/OiBudW1iZXIpOiBhbnkge1xyXG4gICAgaWYgKCF0aGlzLmFzc2Vzc2VlUmVzcG9uc2U/LmFpYWRlZmF1bHRSZXNwb25zZUxpc3QpIHJldHVybiBudWxsO1xyXG4gICAgY29uc3QgYW5zd2VyT2JqID0gdGhpcy5hc3Nlc3NlZVJlc3BvbnNlLmFpYWRlZmF1bHRSZXNwb25zZUxpc3QuZmluZCgoYTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpc0NoaWxkKSB7XHJcbiAgICAgICAgcmV0dXJuIGEuY2hpbGRRdWVzdGlvbklkID09PSBxSWQgJiYgYS5jaGlsZFF1ZXN0aW9uUGFyZW50UXVlc3Rpb25JZCA9PT0gcGFyZW50SWQgJiYgYS5jaGlsZERlZmF1bHRPcHRpb25JZCA9PT0gcGFyZW50T3B0aW9uSWQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGEuc2VjdGlvblF1ZXN0aW9uPy5xdWVzdGlvbklkID09PSBxSWQgJiYgKCFhLmNoaWxkUXVlc3Rpb25JZCB8fCBhLmNoaWxkUXVlc3Rpb25JZCA9PT0gMCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGFuc3dlck9iaj8ubWFya3MgPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIGdldFF1ZXN0aW9uV2VpZ2h0KHFJZDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnF1ZXN0aW9uQmFua1txSWRdPy53ZWlnaHQgfHwgMDtcclxuICB9XHJcblxyXG4gIHNob3VsZFNob3dNYXJrc0Ryb3Bkb3duKHF1ZXN0aW9uOiBBc3Nlc3NtZW50UXVlc3Rpb24pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGF1dG9Bc3NpZ25lZFR5cGVzID0gW1xyXG4gICAgICAnUVVFU1RJT05fVFlQRS5PQkpFQ1RJVkUnLFxyXG4gICAgICAnUVVFU1RJT05fVFlQRS5NVUxUSV9TRUxFQ1QnLFxyXG4gICAgICAnUVVFU1RJT05fVFlQRS5QUkVGRVJFTkNFJ1xyXG4gICAgXTtcclxuICAgIGNvbnN0IGhhc1dlaWdodCA9IHRoaXMuZ2V0UXVlc3Rpb25XZWlnaHQocXVlc3Rpb24uaWQgfHwgMCkgPiAwO1xyXG4gICAgcmV0dXJuICFhdXRvQXNzaWduZWRUeXBlcy5pbmNsdWRlcyhxdWVzdGlvbi5xdWVzdGlvblR5cGU/LmNvZGUgfHwgJycpICYmIGhhc1dlaWdodDtcclxuICB9XHJcblxyXG4gIGdldFByZWZpbGxlZEFuc3dlcihxSWQ6IG51bWJlciwgaXNDaGlsZDogYm9vbGVhbiA9IGZhbHNlLCBwYXJlbnRJZD86IG51bWJlciwgcGFyZW50T3B0aW9uSWQ/OiBudW1iZXIpOiBhbnkge1xyXG4gICAgaWYgKCF0aGlzLmFzc2Vzc2VlUmVzcG9uc2U/LmFpYWRlZmF1bHRSZXNwb25zZUxpc3QpIHJldHVybiBudWxsO1xyXG5cclxuICAgIGNvbnN0IGFuc3dlck9iaiA9IHRoaXMuYXNzZXNzZWVSZXNwb25zZS5haWFkZWZhdWx0UmVzcG9uc2VMaXN0LmZpbmQoKGE6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXNDaGlsZCkge1xyXG4gICAgICAgIHJldHVybiBhLmNoaWxkUXVlc3Rpb25JZCA9PT0gcUlkICYmIGEuY2hpbGRRdWVzdGlvblBhcmVudFF1ZXN0aW9uSWQgPT09IHBhcmVudElkICYmIGEuY2hpbGREZWZhdWx0T3B0aW9uSWQgPT09IHBhcmVudE9wdGlvbklkO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBhLnNlY3Rpb25RdWVzdGlvbj8ucXVlc3Rpb25JZCA9PT0gcUlkICYmICghYS5jaGlsZFF1ZXN0aW9uSWQgfHwgYS5jaGlsZFF1ZXN0aW9uSWQgPT09IDApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoIWFuc3dlck9iaikgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3QgcXVlc3Rpb24gPSB0aGlzLnF1ZXN0aW9uQmFua1txSWRdO1xyXG4gICAgaWYgKCFxdWVzdGlvbikgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3QgcVR5cGUgPSBxdWVzdGlvbi5xdWVzdGlvblR5cGU/LmNvZGU7XHJcblxyXG4gICAgaWYgKHFUeXBlID09PSAnUVVFU1RJT05fVFlQRS5PQkpFQ1RJVkUnKSB7XHJcbiAgICAgIHJldHVybiBhbnN3ZXJPYmoub3B0aW9uSWQ/LmlkO1xyXG4gICAgfSBlbHNlIGlmIChxVHlwZSA9PT0gJ1FVRVNUSU9OX1RZUEUuTVVMVElfU0VMRUNUJyB8fCBxVHlwZSA9PT0gJ1FVRVNUSU9OX1RZUEUuUFJFRkVSRU5DRScpIHtcclxuICAgICAgbGV0IHNvcnRlZExpc3QgPSBbLi4uKGFuc3dlck9iai5kcm9iamVjdGl2ZXJlc3BvbnNlTGlzdCB8fCBbXSldO1xyXG4gICAgICBpZiAocVR5cGUgPT09ICdRVUVTVElPTl9UWVBFLlBSRUZFUkVOQ0UnKSB7XHJcbiAgICAgICAgc29ydGVkTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gKGEub3JkZXJObyB8fCAwKSAtIChiLm9yZGVyTm8gfHwgMCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBzb3J0ZWRMaXN0Lm1hcCgocjogYW55KSA9PiByLmRlZmF1bHRPcHRpb24/Lm9wdGlvbnMpIHx8IFtdO1xyXG4gICAgfSBlbHNlIGlmIChxVHlwZSA9PT0gJ1FVRVNUSU9OX1RZUEUuRklMRV9VUExPQUQnKSB7XHJcbiAgICAgIHJldHVybiBhbnN3ZXJPYmouYXR0YWNobWVudFJlc3BvbnNlTGlzdD8ubWFwKChyOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gci5hdHRhY2htZW50T2JqZWN0IHx8IHsgaWQ6IHIuYXR0YWNobWVudElkIH07XHJcbiAgICAgIH0pIHx8IFtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGFuc3dlck9iai5kcnN1YmplY3RpdmVyZXNwb25zZUxpc3Q/LlswXT8ucmVzcG9uc2VUZXh0ID8/IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRWYWxpZGF0b3JzRm9yUXVlc3Rpb24ocXVlc3Rpb246IEFzc2Vzc21lbnRRdWVzdGlvbiwgaXNNYW5kYXRvcnk6IGJvb2xlYW4pOiBhbnlbXSB7XHJcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBhbnlbXSA9IFtdO1xyXG4gICAgaWYgKGlzTWFuZGF0b3J5KSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocXVlc3Rpb24ucmVzcG9uc2VWYWxpZGF0aW9uKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4ocXVlc3Rpb24ucmVzcG9uc2VWYWxpZGF0aW9uKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAocXVlc3Rpb24ucXVlc3Rpb25UeXBlPy5jb2RlID09PSAnUVVFU1RJT05fVFlQRS5FTUFJTCcpIHtcclxuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLykpO1xyXG4gICAgICB9IGVsc2UgaWYgKHF1ZXN0aW9uLnF1ZXN0aW9uVHlwZT8uY29kZSA9PT0gJ1FVRVNUSU9OX1RZUEUuVVJMJykge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oL14oaHR0cHM/OlxcL1xcLyk/KFtcXHdcXC1dKyhcXC5bXFx3XFwtXSspKykoW1xcLz8jXS4qKT8kL2kpKTtcclxuICAgICAgfSBlbHNlIGlmIChxdWVzdGlvbi5xdWVzdGlvblR5cGU/LmNvZGUgPT09ICdRVUVTVElPTl9UWVBFLkNPTlRBQ1RfTlVNQkVSJykge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05XXsxMH0kLykpO1xyXG4gICAgICB9IGVsc2UgaWYgKHF1ZXN0aW9uLnF1ZXN0aW9uVHlwZT8uY29kZSA9PT0gJ1FVRVNUSU9OX1RZUEUuTlVNQkVSJykge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oL15bMC05XSskLykpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHF1ZXN0aW9uLnF1ZXN0aW9uQ29uZmlncyAmJiBxdWVzdGlvbi5xdWVzdGlvbkNvbmZpZ3MubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBtaW5DaGFyID0gcXVlc3Rpb24ucXVlc3Rpb25Db25maWdzLmZpbmQoYyA9PiBjLmNvbmZpZ0tleSA9PT0gJ21pbkNoYXJhY3RlckNvdW50Jyk/LmNvbmZpZ1ZhbHVlO1xyXG4gICAgICBpZiAobWluQ2hhcikgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKE51bWJlcihtaW5DaGFyKSkpO1xyXG5cclxuICAgICAgY29uc3QgbWF4Q2hhciA9IHF1ZXN0aW9uLnF1ZXN0aW9uQ29uZmlncy5maW5kKGMgPT4gYy5jb25maWdLZXkgPT09ICdtYXhDaGFyYWN0ZXJDb3VudCcpPy5jb25maWdWYWx1ZTtcclxuICAgICAgaWYgKG1heENoYXIpIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aChOdW1iZXIobWF4Q2hhcikpKTtcclxuXHJcbiAgICAgIGNvbnN0IG1pbk9wdCA9IHF1ZXN0aW9uLnF1ZXN0aW9uQ29uZmlncy5maW5kKGMgPT4gYy5jb25maWdLZXkgPT09ICdtaW5pbXVtTnVtYmVyT2ZPcHRpb24nKT8uY29uZmlnVmFsdWU7XHJcbiAgICAgIGlmIChtaW5PcHQpIHtcclxuICAgICAgICB2YWxpZGF0b3JzLnB1c2goKGNvbnRyb2w6IEZvcm1Db250cm9sKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZS5sZW5ndGggPCBOdW1iZXIobWluT3B0KSkge1xyXG4gICAgICAgICAgICByZXR1cm4geyBtaW5PcHRpb25zOiB7IHJlcXVpcmVkOiBOdW1iZXIobWluT3B0KSwgYWN0dWFsOiBjb250cm9sLnZhbHVlPy5sZW5ndGggfHwgMCB9IH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgbWF4T3B0ID0gcXVlc3Rpb24ucXVlc3Rpb25Db25maWdzLmZpbmQoYyA9PiBjLmNvbmZpZ0tleSA9PT0gJ21heGltdW1OdW1iZXJPZk9wdGlvbicpPy5jb25maWdWYWx1ZTtcclxuICAgICAgaWYgKG1heE9wdCkge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaCgoY29udHJvbDogRm9ybUNvbnRyb2wpID0+IHtcclxuICAgICAgICAgIGlmIChjb250cm9sLnZhbHVlICYmIGNvbnRyb2wudmFsdWUubGVuZ3RoID4gTnVtYmVyKG1heE9wdCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgbWF4T3B0aW9uczogeyByZXF1aXJlZDogTnVtYmVyKG1heE9wdCksIGFjdHVhbDogY29udHJvbC52YWx1ZT8ubGVuZ3RoIHx8IDAgfSB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IG1heEZpbGVzID0gcXVlc3Rpb24ucXVlc3Rpb25Db25maWdzLmZpbmQoYyA9PiBjLmNvbmZpZ0tleSA9PT0gJ21heE5vT2ZGaWxlcycpPy5jb25maWdWYWx1ZTtcclxuICAgICAgaWYgKG1heEZpbGVzKSB7XHJcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKChjb250cm9sOiBGb3JtQ29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgY29udHJvbC52YWx1ZS5sZW5ndGggPiBOdW1iZXIobWF4RmlsZXMpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IG1heEZpbGVzOiB7IHJlcXVpcmVkOiBOdW1iZXIobWF4RmlsZXMpLCBhY3R1YWw6IGNvbnRyb2wudmFsdWU/Lmxlbmd0aCB8fCAwIH0gfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBtYXhGaWxlU2l6ZSA9IHF1ZXN0aW9uLnF1ZXN0aW9uQ29uZmlncy5maW5kKGMgPT4gYy5jb25maWdLZXkgPT09ICdtYXhGaWxlU2l6ZScpPy5jb25maWdWYWx1ZTtcclxuICAgICAgaWYgKG1heEZpbGVTaXplKSB7XHJcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKChjb250cm9sOiBGb3JtQ29udHJvbCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgQXJyYXkuaXNBcnJheShjb250cm9sLnZhbHVlKSkge1xyXG4gICAgICAgICAgICBjb25zdCBoYXNMYXJnZUZpbGUgPSBjb250cm9sLnZhbHVlLnNvbWUoKGZpbGU6IGFueSkgPT4gZmlsZT8uc2l6ZSAmJiBmaWxlLnNpemUgPiAoTnVtYmVyKG1heEZpbGVTaXplKSAqIDEwMjQgKiAxMDI0KSk7XHJcbiAgICAgICAgICAgIGlmIChoYXNMYXJnZUZpbGUpIHtcclxuICAgICAgICAgICAgICByZXR1cm4geyBtYXhGaWxlU2l6ZTogeyByZXF1aXJlZFNpemU6IE51bWJlcihtYXhGaWxlU2l6ZSkgfSB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XHJcbiAgfVxyXG5cclxuICBpbWFnZUVycm9ySGFuZGxlcihldmVudDogYW55LCBmaWxlUGF0aDogc3RyaW5nKSB7XHJcbiAgICBldmVudC50YXJnZXQuc3JjID0gZmlsZVBhdGg7XHJcbiAgfVxyXG5cclxuICBpc09wdGlvblNlbGVjdGVkKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBxdWVzdGlvbjogQXNzZXNzbWVudFF1ZXN0aW9uLCBvcHRpb25JZDogbnVtYmVyIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIW9wdGlvbklkKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgbGV0IGNvbnRyb2xOYW1lID0gcXVlc3Rpb24uaWQ/LnRvU3RyaW5nKCk7XHJcblxyXG4gICAgaWYgKCFjb250cm9sTmFtZSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGNvbnRyb2xOYW1lKTtcclxuICAgIGlmICghY29udHJvbCB8fCBjb250cm9sLnZhbHVlID09IG51bGwpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAvLyBNdWx0aS1zZWxlY3QgZGVhbHMgd2l0aCBhbiBhcnJheSBvZiB2YWx1ZXNcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBjb250cm9sLnZhbHVlLmluY2x1ZGVzKG9wdGlvbklkKSB8fCBjb250cm9sLnZhbHVlLnNvbWUoKHZhbDogYW55KSA9PiB2YWw/LmlkID09PSBvcHRpb25JZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gT2JqZWN0aXZlIC8gU2luZ2xlIHNlbGVjdCBkZWFscyB3aXRoIGEgc2luZ2xlIHZhbHVlIChjb3VsZCBiZSBpbnRlZ2VyIElEIG9yIG9iamVjdClcclxuICAgIGlmICh0eXBlb2YgY29udHJvbC52YWx1ZSA9PT0gJ29iamVjdCcgJiYgY29udHJvbC52YWx1ZS5pZCkge1xyXG4gICAgICByZXR1cm4gY29udHJvbC52YWx1ZS5pZCA9PT0gb3B0aW9uSWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbnRyb2wudmFsdWUgPT09IG9wdGlvbklkO1xyXG4gIH1cclxuXHJcbiAgZ2V0TWF4Q2hhckNvdW50KHF1ZXN0aW9uOiBBc3Nlc3NtZW50UXVlc3Rpb24pOiBudW1iZXIge1xyXG4gICAgY29uc3QgY29uZmlnID0gcXVlc3Rpb24/LnF1ZXN0aW9uQ29uZmlncz8uZmluZChjID0+IGMuY29uZmlnS2V5ID09PSAnbWF4Q2hhcmFjdGVyQ291bnQnKTtcclxuICAgIHJldHVybiBjb25maWcgPyBOdW1iZXIoY29uZmlnLmNvbmZpZ1ZhbHVlKSA6IDA7XHJcbiAgfVxyXG5cclxuICBnZXRSZW1haW5pbmdDaGFycyhxdWVzdGlvbjogQXNzZXNzbWVudFF1ZXN0aW9uLCBjb250cm9sOiBhbnkpOiBudW1iZXIge1xyXG4gICAgY29uc3QgbWF4ID0gdGhpcy5nZXRNYXhDaGFyQ291bnQocXVlc3Rpb24pO1xyXG4gICAgY29uc3QgY3VycmVudExlbmd0aCA9IGNvbnRyb2wudmFsdWUgPyBjb250cm9sLnZhbHVlLmxlbmd0aCA6IDA7XHJcbiAgICByZXR1cm4gbWF4IC0gY3VycmVudExlbmd0aDtcclxuICB9XHJcblxyXG4gIGdvQmFjaygpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkVGFiSW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleC0tO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvdWxkRGlzYWJsZVRhYihpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGluZGV4OyBqKyspIHtcclxuICAgICAgaWYgKHRoaXMuc2VjdGlvbkZvcm1Hcm91cHNbal0/LmZvcm1Hcm91cD8uaW52YWxpZCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnb05leHQoc2F2ZURhdGE6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBjb25zdCBzYXZlID0gdGhpcy5hc3Nlc3NtZW50RGF0YT8uYXNzZXNzbWVudENvbmZpZ3M/LmZpbmQoYyA9PiBjLmNvbmZpZ0tleSA9PSAnYXNzZXNtZW50LmNvbmZpZy5hbGxvd2VkLXBhcnRpYWwtcmVzcG9uc2UnKT8uY29uZmlnVmFsdWUgPT0gJzEnO1xyXG4gICAgY29uc3QgY3VycmVudFNlY3Rpb24gPSB0aGlzLnNlY3Rpb25Gb3JtR3JvdXBzW3RoaXMuc2VsZWN0ZWRUYWJJbmRleF07XHJcbiAgICBpZiAoIWN1cnJlbnRTZWN0aW9uKSByZXR1cm47XHJcblxyXG4gICAgY3VycmVudFNlY3Rpb24uZm9ybUdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuXHJcbiAgICBpZiAoY3VycmVudFNlY3Rpb24uZm9ybUdyb3VwLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5zZWN0aW9uRXJyb3JzW3RoaXMuc2VsZWN0ZWRUYWJJbmRleF0gPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWN0aW9uRXJyb3JzW3RoaXMuc2VsZWN0ZWRUYWJJbmRleF0gPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFRhYkluZGV4IDwgdGhpcy5zZWN0aW9uRm9ybUdyb3Vwcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIHNhdmUgJiYgc2F2ZURhdGEgPyB0aGlzLnNhdmUoKSA6IHRoaXMuc2VsZWN0ZWRUYWJJbmRleCsrO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wcm9jZXNzU3VibWl0KHNhdmVEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cGFuZGVkU3RhdGU6IGJvb2xlYW5bXSA9IFtdO1xyXG5cclxuICBwcm9jZXNzU3VibWl0KHNhdmVEYXRhOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgbGV0IGZpcnN0SW52YWxpZEluZGV4ID0gLTE7XHJcbiAgICB0aGlzLnNlY3Rpb25Gb3JtR3JvdXBzLmZvckVhY2goKGdyb3VwLCBpbmRleCkgPT4ge1xyXG4gICAgICBncm91cC5mb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICBpZiAoZ3JvdXAuZm9ybUdyb3VwLmludmFsaWQpIHtcclxuICAgICAgICB0aGlzLnNlY3Rpb25FcnJvcnNbaW5kZXhdID0gdHJ1ZTtcclxuICAgICAgICBpZiAoZmlyc3RJbnZhbGlkSW5kZXggPT09IC0xKSBmaXJzdEludmFsaWRJbmRleCA9IGluZGV4O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VjdGlvbkVycm9yc1tpbmRleF0gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGZpcnN0SW52YWxpZEluZGV4ICE9PSAtMSkge1xyXG4gICAgICBpZiAoIXRoaXMudmVydGljYWxWaWV3KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gZmlyc3RJbnZhbGlkSW5kZXg7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5leHBhbmRlZFN0YXRlW2ZpcnN0SW52YWxpZEluZGV4XSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zbmFja2Jhck1lc3NhZ2UuZW1pdCh7IG1lc3NhZ2U6IHRoaXMubGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5UT0FTVC5GSVhfRVJST1JTJ10sIHR5cGU6ICdlcnJvcicgfSk7XHJcbiAgICAgIHRoaXMuc2Nyb2xsVG9GaXJzdEludmFsaWRGaWVsZChmaXJzdEludmFsaWRJbmRleCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNhdmUodHJ1ZSwgc2F2ZURhdGEpO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9GaXJzdEludmFsaWRGaWVsZChzZWN0aW9uSW5kZXg6IG51bWJlcikge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMuc2VjdGlvbkZvcm1Hcm91cHNbc2VjdGlvbkluZGV4XS5mb3JtR3JvdXA7XHJcbiAgICAgIGZvciAoY29uc3QgY29udHJvbE5hbWUgaW4gZm9ybUdyb3VwLmNvbnRyb2xzKSB7XHJcbiAgICAgICAgaWYgKGZvcm1Hcm91cC5jb250cm9sc1tjb250cm9sTmFtZV0uaW52YWxpZCkge1xyXG4gICAgICAgICAgbGV0IHFJZCA9IGNvbnRyb2xOYW1lO1xyXG4gICAgICAgICAgaWYgKGNvbnRyb2xOYW1lLmluY2x1ZGVzKCdfcmVtYXJrc18nKSB8fCBjb250cm9sTmFtZS5pbmNsdWRlcygnX21hcmtzJykpIHtcclxuICAgICAgICAgICAgcUlkID0gY29udHJvbE5hbWUuc3BsaXQoJ18nKVswXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgcXVlc3Rpb24tY29udGFpbmVyLSR7cUlkfWApO1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICBzYXZlKGdvTmV4dDogYm9vbGVhbiA9IHRydWUsIHNhdmVEYXRhOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSB0cnVlO1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGlmICh0aGlzLm1hcmtBc0NvbXBsZXRlZCAmJiAodGhpcy5zZWxlY3RlZFRhYkluZGV4ID09IHRoaXMuc2VjdGlvbkZvcm1Hcm91cHMubGVuZ3RoIC0gMSB8fCB0aGlzLnZlcnRpY2FsVmlldykpIHtcclxuICAgICAgICB0aGlzLmFzc2Vzc2VlUmVzcG9uc2UuYXNzZXNzbWVudFRha2VuID0geyBjb2RlOiAnQVNTRVNTTUVOVF9UQUtFTi5DT01QTEVURScgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFzc2Vzc2VlUmVzcG9uc2UuYXNzZXNzbWVudFRha2VuID0geyBjb2RlOiAnQVNTRVNTTUVOVF9UQUtFTi5JTkNPTVBMRVRFJyB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMucmVzcG9uc2VCdWlsZGVyU2VydmljZS5idWlsZFJlc3BvbnNlUGF5bG9hZChcclxuICAgICAgdGhpcy5hc3Nlc3NlZVJlc3BvbnNlLFxyXG4gICAgICB0aGlzLmFzc2Vzc21lbnRRdWVzdGlvblBhcGVyRGF0YSxcclxuICAgICAgdGhpcy5zZWN0aW9uRm9ybUdyb3VwcyxcclxuICAgICAgdGhpcy5xdWVzdGlvbkJhbmssXHJcbiAgICAgIHRoaXMudGVuYW50SWRcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd092ZXJhbGxSZW1hcmtzICYmIHRoaXMuYXNzZXNzZWVSZXNwb25zZSkge1xyXG4gICAgICB0aGlzLmFzc2Vzc2VlUmVzcG9uc2Uubm90ZXMgPSB0aGlzLm92ZXJhbGxOb3Rlc0N0cmwudmFsdWUgfHwgbnVsbDtcclxuICAgICAgcGF5bG9hZC5ub3RlcyA9IHRoaXMuYXNzZXNzZWVSZXNwb25zZS5ub3RlcztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXNhdmVEYXRhIHx8ICh0aGlzLmRpc2FibGVkICYmICF0aGlzLmVuYWJsZU1hcmtzKSkge1xyXG4gICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnN1Ym1pdEFzc2Vzc21lbnQuZW1pdCh7XHJcbiAgICAgICAgYXNzZXNzZWVJZDogdGhpcy5hc3Nlc3NlZVJlc3BvbnNlPy5pZCxcclxuICAgICAgICBhc3Nlc3NlZVJlc3BvbnNlOiBwYXlsb2FkLFxyXG4gICAgICAgIGNvbXBsZXRlZDogZ29OZXh0ICYmICh0aGlzLnNlbGVjdGVkVGFiSW5kZXggPT0gdGhpcy5zZWN0aW9uRm9ybUdyb3Vwcy5sZW5ndGggLSAxIHx8IHRoaXMudmVydGljYWxWaWV3KVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKGdvTmV4dCAmJiB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPCB0aGlzLnNlY3Rpb25Gb3JtR3JvdXBzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXgrKztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgYXBpQ2FsbCA9IHRoaXMuYXNzZXNzZWVSZXNwb25zZT8uaWQgPyB0aGlzLmFzc2Vzc21lbnRUYWtlclNlcnZpY2UucGF0Y2hBc3Nlc3NtZW50KHBheWxvYWQpIDogdGhpcy5hc3Nlc3NtZW50VGFrZXJTZXJ2aWNlLnN1Ym1pdEFzc2Vzc21lbnQocGF5bG9hZCk7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCAmJiB0aGlzLmVuYWJsZU1hcmtzKSB7XHJcbiAgICAgIGNvbnN0IG1hcmtzUGF5bG9hZDogYW55ID0gdGhpcy5yZXNwb25zZUJ1aWxkZXJTZXJ2aWNlLmJ1aWxkTWFya3NQYXlsb2FkKHBheWxvYWQpO1xyXG4gICAgICBpZiAodGhpcy5zaG93T3ZlcmFsbFJlbWFya3MpIHtcclxuICAgICAgICBtYXJrc1BheWxvYWQubm90ZXMgPSB0aGlzLm92ZXJhbGxOb3Rlc0N0cmwudmFsdWUgfHwgbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBhcGlDYWxsID0gdGhpcy5hc3Nlc3NtZW50VGFrZXJTZXJ2aWNlLnVwZGF0ZU1hcmtzKG1hcmtzUGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgICBhcGlDYWxsLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5hc3Nlc3NlZVJlc3BvbnNlPy5pZCkge1xyXG4gICAgICAgICAgdGhpcy5nZXRBbnN3ZXJzQnlBaWFJZChyZXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFzc2Vzc2VlUmVzcG9uc2UgPSByZXM7XHJcbiAgICAgICAgICB0aGlzLm92ZXJhbGxOb3Rlc0N0cmwuc2V0VmFsdWUodGhpcy5hc3Nlc3NlZVJlc3BvbnNlLm5vdGVzIHx8ICcnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnN1Ym1pdEFzc2Vzc21lbnQuZW1pdCh7XHJcbiAgICAgICAgICBhc3Nlc3NlZUlkOiB0aGlzLmFzc2Vzc2VlUmVzcG9uc2U/LmlkIHx8IHJlcyxcclxuICAgICAgICAgIGFzc2Vzc2VlUmVzcG9uc2U6IHRoaXMuYXNzZXNzZWVSZXNwb25zZT8uaWQgPyB0aGlzLmFzc2Vzc2VlUmVzcG9uc2UgOiBwYXlsb2FkLFxyXG4gICAgICAgICAgY29tcGxldGVkOiBnb05leHQgJiYgKHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9PSB0aGlzLnNlY3Rpb25Gb3JtR3JvdXBzLmxlbmd0aCAtIDEgfHwgdGhpcy52ZXJ0aWNhbFZpZXcpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGdvTmV4dCAmJiB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPCB0aGlzLnNlY3Rpb25Gb3JtR3JvdXBzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCsrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc25hY2tiYXJNZXNzYWdlLmVtaXQoeyBtZXNzYWdlOiB0aGlzLmxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuVE9BU1QuU0FWRV9GQUlMRUQnXSwgdHlwZTogJ2Vycm9yJyB9KTtcclxuICAgICAgICB0aHJvdyB7IGVycm9yLCBtZXRob2Q6IHRoaXMuYXNzZXNzZWVSZXNwb25zZT8uaWQgPyAnUEFUQ0gnIDogJ1BPU1QnLCBwYXlsb2FkIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBbnN3ZXJzQnlBaWFJZChhc3Nlc3NlZUlkOiBudW1iZXIpIHtcclxuICAgIHRoaXMuYXNzZXNzbWVudFRha2VyU2VydmljZS5nZXRBbnN3ZXJzQnlBaWFJZChhc3Nlc3NlZUlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmFzc2Vzc2VlUmVzcG9uc2UgPSByZXM7XHJcbiAgICAgICAgdGhpcy5vdmVyYWxsTm90ZXNDdHJsLnNldFZhbHVlKHRoaXMuYXNzZXNzZWVSZXNwb25zZS5ub3RlcyB8fCAnJyk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5zbmFja2Jhck1lc3NhZ2UuZW1pdCh7IG1lc3NhZ2U6IHRoaXMubGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5UT0FTVC5HRVRfRkFJTEVEJ10sIHR5cGU6ICdlcnJvcicgfSk7XHJcbiAgICAgICAgdGhyb3cgeyBlcnJvciwgbWV0aG9kOiAnR0VUJyB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkWW91dHViZUlmcmFtZVNyYyh2aWRlb1VybDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXZpZGVvVXJsKSByZXR1cm4gbnVsbDtcclxuICAgIGlmICh0aGlzLnlvdXR1YmVVcmxDYWNoZVt2aWRlb1VybF0pIHtcclxuICAgICAgcmV0dXJuIHRoaXMueW91dHViZVVybENhY2hlW3ZpZGVvVXJsXTtcclxuICAgIH1cclxuICAgIGNvbnN0IHZpZGVvSWQgPSB0aGlzLmdldFZpZGVvSWQodmlkZW9VcmwpO1xyXG4gICAgY29uc3QgeW91dHViZVVybCA9IGBodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8ke3ZpZGVvSWR9YDtcclxuICAgIHRoaXMueW91dHViZVVybENhY2hlW3ZpZGVvVXJsXSA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh5b3V0dWJlVXJsKTtcclxuICAgIHJldHVybiB0aGlzLnlvdXR1YmVVcmxDYWNoZVt2aWRlb1VybF07XHJcbiAgfVxyXG5cclxuICBnZXRWaWRlb0lkKHZpZGVvVXJsOiBzdHJpbmcpIHtcclxuICAgIGxldCBwYXR0ZXJuID0gbnVsbDtcclxuICAgIGlmICh2aWRlb1VybC5pbmNsdWRlcygneW91dHViZS5jb20nKSkge1xyXG4gICAgICBwYXR0ZXJuID0gLyg/OlxcP3Y9fCZ2PXx5b3V0dVxcLmJlXFwvfFxcL2VtYmVkXFwvfFxcL1xcZFxcL3xcXC92aVxcL3xcXC92XFwvfGh0dHBzPzpcXC9cXC8oPzp3d3dcXC4pP3lvdXR1YmVcXC5jb21cXC8oPzp2XFwvfGVtYmVkXFwvfHdhdGNoXFw/KD86XFxTKyYpP3Y9fHdhdGNoXFw/KD86XFxTKyYpP3ZpPXxcXFMrXFwvKSkoW2EtekEtWjAtOV8tXXsxMX0pLztcclxuICAgIH0gZWxzZSBpZiAodmlkZW9VcmwuaW5jbHVkZXMoJ3lvdXR1LmJlJykpIHtcclxuICAgICAgcGF0dGVybiA9IC95b3V0dVxcLmJlXFwvKFthLXpBLVowLTlfLV17MTF9KS87XHJcbiAgICB9XHJcbiAgICBpZiAocGF0dGVybikge1xyXG4gICAgICBjb25zdCBtYXRjaCA9IHZpZGVvVXJsLm1hdGNoKHBhdHRlcm4pO1xyXG4gICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0pIHtcclxuICAgICAgICByZXR1cm4gbWF0Y2hbMV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgb3Blbkluc3RydWN0aW9uc0RpYWxvZyhzZWN0aW9uOiBRdWVzdGlvblBhcGVyU2VjdGlvbikge1xyXG4gICAgdGhpcy5kaWFsb2cub3BlbihTZWN0aW9uSW5zdHJ1Y3Rpb25zQ29tcG9uZW50LCB7XHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIG1heFdpZHRoOiAnOTUlJyxcclxuICAgICAgd2lkdGg6ICdjYWxjKDIwcmVtICsgNTAwcHgpJyxcclxuICAgICAgbWF4SGVpZ2h0OiAnOTVkdmgnLFxyXG4gICAgICBwYW5lbENsYXNzOiBbJ2Fzc2Vzc21lbnQtZGlhbG9nJ10sXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBpbWFnZUNvbmZpZzogdGhpcy5pbWFnZUNvbmZpZyxcclxuICAgICAgICBsYWJlbENvbmZpZzogdGhpcy5sYWJlbENvbmZpZyxcclxuICAgICAgICBzZWN0aW9uRGV0YWlsczogc2VjdGlvbixcclxuICAgICAgICB5b3V0dWJlVXJsQ2FjaGU6IHRoaXMueW91dHViZVVybENhY2hlXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNoZWNrTWF4VmFsKGV2ZW50OiBhbnksIGNvbnRyb2w6IGFueSwgbWF4VmFsOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIGNvbnN0IHRvdGFsTWFya3MgPSBOdW1iZXIobWF4VmFsKSB8fCAwO1xyXG4gICAgaWYgKHRvdGFsTWFya3MgPiAwKSB7XHJcbiAgICAgIGxldCB2YWwgPSBOdW1iZXIoZXZlbnQudGFyZ2V0LnZhbHVlKTtcclxuICAgICAgaWYgKHZhbCA+IHRvdGFsTWFya3MpIHtcclxuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSB0b3RhbE1hcmtzO1xyXG4gICAgICAgIGNvbnRyb2w/LnNldFZhbHVlKHRvdGFsTWFya3MsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlblNraWxsQWxsb2NhdGlvbkRpYWxvZyhza2lsbExpc3Q/OiBTa2lsbFNjb3JlW10pIHtcclxuICAgIHRoaXMuZGlhbG9nLm9wZW4oU2tpbGxBbGxvY2F0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgIG1heEhlaWdodDogJzk1ZHZoJyxcclxuICAgICAgbWF4V2lkdGg6ICc5MHZ3JyxcclxuICAgICAgd2lkdGg6ICczNXJlbScsXHJcbiAgICAgIHBhbmVsQ2xhc3M6IFsnYXNzZXNzbWVudC1kaWFsb2cnXSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLmxhYmVsQ29uZmlnLFxyXG4gICAgICAgIHNraWxsTGlzdFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cImNvbmZpZ3NMb2FkZWQgJiYgIXNob3dMb2FkZXI7IGVsc2UgbG9hZGVyXCIgY2xhc3M9XCJjb2wtMTIgaC0xMDBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgaC0xMDAgcHQtMiBwYi00XCIgW2NsYXNzLmhlaWdodC13aXRob3V0LWZvb3Rlcl09XCJzaG93Rm9vdGVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFzc2Vzc21lbnRRdWVzdGlvblBhcGVyRGF0YT8ucXVlc3Rpb25QYXBlclNlY3Rpb25MaXN0Py5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPG1hdC10YWItZ3JvdXAgKm5nSWY9XCIhdmVydGljYWxWaWV3XCIgYW5pbWF0aW9uRHVyYXRpb249XCIwbXNcIiBjbGFzcz1cImFzc2Vzc21lbnQtbWF0LWN1c3RvbS10YWJzXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYXNzZXNzbWVudC1oaWRlLXRhYnMnOiBoaWRlU2VjdGlvblRhYnN9XCIgWyhzZWxlY3RlZEluZGV4KV09XCJzZWxlY3RlZFRhYkluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXRhYlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGFzc2Vzc21lbnRRdWVzdGlvblBhcGVyRGF0YS5xdWVzdGlvblBhcGVyU2VjdGlvbkxpc3QgfCBvcmRlckJ5OyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2hvdWxkRGlzYWJsZVRhYihpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWN0aW9uRXJyb3JzW2ldID8gJ2Fzc2Vzc21lbnQtdGV4dC1kYW5nZXInIDogJydcIj57e3NlY3Rpb24ucXBzTmFtZT8uWzBdPy50ZXh0fX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlY3Rpb25Db250ZW50OyBjb250ZXh0OiB7IHNlY3Rpb246IHNlY3Rpb24sIGk6IGkgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtdGFiPlxyXG4gICAgICAgICAgICA8L21hdC10YWItZ3JvdXA+XHJcblxyXG4gICAgICAgICAgICA8bWF0LWFjY29yZGlvbiAqbmdJZj1cInZlcnRpY2FsVmlld1wiIG11bHRpPVwidHJ1ZVwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC00XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbFxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGFzc2Vzc21lbnRRdWVzdGlvblBhcGVyRGF0YS5xdWVzdGlvblBhcGVyU2VjdGlvbkxpc3QgfCBvcmRlckJ5OyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICBbZXhwYW5kZWRdPVwiZXhwYW5kZWRTdGF0ZVtpXSAhPT0gZmFsc2VcIiAob3BlbmVkKT1cImV4cGFuZGVkU3RhdGVbaV0gPSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xvc2VkKT1cImV4cGFuZGVkU3RhdGVbaV0gPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIHNoYWRvdy1ub25lIG0tMCBhc3Nlc3NtZW50LXBhbmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC1iZy1ncmV5LXR3byBoLWF1dG8gYXNzZXNzbWVudC1wYW5lbC1oZWFkZXIgYmctdHJhbnNwYXJlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTIgY29sLTEyIHBlLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWN0aW9uRXJyb3JzW2ldID8gJ2Fzc2Vzc21lbnQtdGV4dC1kYW5nZXInIDogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3NlY3Rpb24ucXBzTmFtZT8uWzBdPy50ZXh0fX08L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlY3Rpb25XaXNlU2NvcmU/LltzZWN0aW9uPy5pZF0gYXMgc2VjdGlvblNjb3JlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgYXNzZXNzbWVudC10ZXh0LXByaW1hcnktZm91clwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKHNlY3Rpb25TY29yZT8uc2tpbGxTY29yZXM/Lmxlbmd0aCA/PyAwKSA+IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTIgdGV4dC1kZWNvcmF0aW9uLXVuZGVybGluZSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7b3BlblNraWxsQWxsb2NhdGlvbkRpYWxvZyhzZWN0aW9uU2NvcmUuc2tpbGxTY29yZXMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5TS0lMTF9BTExPQ0FUSU9OJ119fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIihzZWN0aW9uU2NvcmU/Lm9idGFpbmVkTWFya3MgPz8gLTEpID49MDsgZWxzZSBub3RTY29yZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndoaXRlLXNwYWNlLW5vd3JhcCBhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTE1IG1lLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5TQ09SRSddfX06PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3NlY3Rpb25TY29yZS5vYnRhaW5lZE1hcmtzfX0ve3tzZWN0aW9uU2NvcmUudG90YWxNYXJrc319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90U2NvcmVkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5OT1RfWUVUX1NDT1JFRCddfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlY3Rpb25Db250ZW50OyBjb250ZXh0OiB7IHNlY3Rpb246IHNlY3Rpb24sIGk6IGkgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgICAgICAgICA8L21hdC1hY2NvcmRpb24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhYXNzZXNzbWVudFF1ZXN0aW9uUGFwZXJEYXRhPy5xdWVzdGlvblBhcGVyU2VjdGlvbkxpc3Q/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaC0xMDAgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0zXCI+XHJcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZUNvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULklDT04uTk9fUVVFU1RJT05TJ11cIiBjbGFzcz1cImNvbC1zbS1hdXRvIGNvbC02XCJcclxuICAgICAgICAgICAgICAgIChlcnJvcik9XCJpbWFnZUVycm9ySGFuZGxlcigkZXZlbnQsICdhc3NldHMvY29tbW9ucy1hc3Nlc3NtZW50L2ltYWdlcy9uby1xdWVzdGlvbnMuc3ZnJylcIiAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTE4XCI+e3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk5PX1FVRVNUSU9OUyddfX08L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd092ZXJhbGxSZW1hcmtzICYmIGFzc2Vzc21lbnRRdWVzdGlvblBhcGVyRGF0YT8ucXVlc3Rpb25QYXBlclNlY3Rpb25MaXN0Py5sZW5ndGhcIiBjbGFzcz1cIm10LTNcIj5cclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTE1IG1iLTJcIj57e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuT1ZFUkFMTF9SRU1BUktTJ119fTwvcD5cclxuICAgICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC0xMiBhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMyBhc3Nlc3NtZW50LWlucHV0LWJvcmRlci1vbmUgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LWlucHV0LXBhZGRpbmcgb3V0bGluZS0wIGFzc2Vzc21lbnQtYmctZ3JleS1vbmVcIlxyXG4gICAgICAgICAgICAgICAgcm93cz1cIjNcIiBbZm9ybUNvbnRyb2xdPVwib3ZlcmFsbE5vdGVzQ3RybFwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QTEFDRUhPTERFUi5SRU1BUktTJ11cIj48L3RleHRhcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0Zvb3RlclwiXHJcbiAgICAgICAgY2xhc3M9XCJiZy13aGl0ZSBwLTMgcG9zaXRpb24tc3RpY2t5IGJvdHRvbS0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZCBib3JkZXItdG9wIGdhcC0zIHotaW5kZXgtMVwiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXpvb20tYW5pbWF0aW9uIGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC1idXR0b24tcGFkZGluZy1sYXJnZSBhc3Nlc3NtZW50LWJ0bi1wcmltYXJ5LXRyYW5zcGFyZW50IGFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xM1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJnb0JhY2soKVwiICpuZ0lmPVwic2VsZWN0ZWRUYWJJbmRleCA+IDAgJiYgIXZlcnRpY2FsVmlld1wiPlxyXG4gICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuR09fQkFDSyddfX08L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJpc1N1Ym1pdHRpbmdcIiAoY2xpY2spPVwidmVydGljYWxWaWV3ID8gcHJvY2Vzc1N1Ym1pdCh0cnVlKSA6IGdvTmV4dCgpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LXpvb20tYW5pbWF0aW9uIGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC1idXR0b24tcGFkZGluZy1sYXJnZSBhc3Nlc3NtZW50LWJ0bi1wcmltYXJ5IGFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xMyBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJ7J29wYWNpdHktMCc6IGlzU3VibWl0dGluZ31cIj5cclxuICAgICAgICAgICAgICAgIHt7ICh2ZXJ0aWNhbFZpZXcgfHwgc2VsZWN0ZWRUYWJJbmRleCA9PT0gc2VjdGlvbkZvcm1Hcm91cHMubGVuZ3RoIC0gMSkgP1xyXG4gICAgICAgICAgICAgICAgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5TVUJNSVQnXSA6IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuTkVYVCddIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiaXNTdWJtaXR0aW5nXCIgW2RpYW1ldGVyXT1cIjIwXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdG9wLTUwIHN0YXJ0LTUwIHRyYW5zbGF0ZS1taWRkbGUgYXNzZXNzbWVudC1zcGlubmVyLXdoaXRlXCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbG9hZGVyPlxyXG4gICAgPGRpdiBjbGFzcz1cImgtMTAwIGNvbC0xMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgcHktNVwiPlxyXG4gICAgICAgIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjYwXCIgY2xhc3M9XCJhc3Nlc3NtZW50LXNwaW5uZXItcHJpbWFyeVwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gUmVjdXJzaXZlIFRlbXBsYXRlIGZvciBRdWVzdGlvbnMgJiBDaGlsZCBRdWVzdGlvbnMgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjcXVlc3Rpb25UZW1wbGF0ZSBsZXQtcXVlc3Rpb25JZD1cInF1ZXN0aW9uSWRcIiBsZXQtaXNNYW5kYXRvcnk9XCJpc01hbmRhdG9yeVwiIGxldC1ncm91cEluZGV4PVwiZ3JvdXBJbmRleFwiXHJcbiAgICBsZXQtcGFyZW50T3B0aW9uSWQ9XCJwYXJlbnRPcHRpb25JZFwiIGxldC1zZXF1ZW5jZT1cInNlcXVlbmNlXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2VjdGlvbkZvcm1Hcm91cHNbZ3JvdXBJbmRleF0uZm9ybUdyb3VwXCIgW2Zvcm1Hcm91cF09XCJzZWN0aW9uRm9ybUdyb3Vwc1tncm91cEluZGV4XS5mb3JtR3JvdXBcIlxyXG4gICAgICAgIFtpZF09XCIncXVlc3Rpb24tY29udGFpbmVyLScgKyBxdWVzdGlvbklkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC1iZy13aGl0ZVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncC0zIGFzc2Vzc21lbnQtY2FyZC1ib3JkZXInOiAhcGFyZW50T3B0aW9uSWR9XCIgKm5nSWY9XCJxdWVzdGlvbkJhbmtbcXVlc3Rpb25JZF0gYXMgcXVlc3Rpb25cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LW1kLXJvdyBmbGV4LWNvbHVtbiBnYXAtMiBhbGlnbi1pdGVtcy1zdGFydFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGQtZmxleCBhbGlnbi1pdGVtcy1zdGFydCBnYXAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xNVwiICpuZ0lmPVwic2VxdWVuY2VcIj57e3NlcXVlbmNlfX0uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIGFsaWduLWl0ZW1zLXN0YXJ0IGNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTE1IG1iLTAgZC1mbGV4IGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJxdWVzdGlvbi5xdWVzdGlvblRleHQ/LlswXT8udGV4dFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNNYW5kYXRvcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk1BTkRBVE9SWSddfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIGNvbC0xMlwiICpuZ0lmPVwicXVlc3Rpb24/Lm1lZGlhVXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiVmlkZW9UZW1wbGF0ZTsgY29udGV4dDp7dmlkZW9Vcmw6cXVlc3Rpb24/Lm1lZGlhVXJsfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlc3Rpb24uaGludFRleHQgJiYgIXByZXZpZXdNb2RlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltYWdlQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuSUNPTi5JTkZPJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaW1hZ2VFcnJvckhhbmRsZXIoJGV2ZW50LCAnYXNzZXRzL2NvbW1vbnMtYXNzZXNzbWVudC9pbWFnZXMvaW5mby5zdmcnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka092ZXJsYXlPcmlnaW4gI3RyaWdnZXI9XCJjZGtPdmVybGF5T3JpZ2luXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwidG9vbHRpcFN0YXRlW3F1ZXN0aW9uLmlkIV0gPSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcFN0YXRlW3F1ZXN0aW9uLmlkIV0gPSBmYWxzZVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtDb25uZWN0ZWRPdmVybGF5IFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwidG9vbHRpcFN0YXRlW3F1ZXN0aW9uLmlkIV0gfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJbeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAnY2VudGVyJywgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ2NlbnRlcicsIG9mZnNldFg6IC04LCBvZmZzZXRZOiAwIH0sIHsgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICdjZW50ZXInLCBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICdjZW50ZXInLCBvZmZzZXRYOiA4LCBvZmZzZXRZOiAwIH1dXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3Nlc3NtZW50LWJnLWdyZXktdHdvIGFzc2Vzc21lbnQtdG9vbHRpcC1ib3JkZXIgcC0zIGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC1ib3gtc2hhZG93LXRvb2x0aXAgcXVlc3Rpb24taW5mbyBhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJ0b29sdGlwU3RhdGVbcXVlc3Rpb24uaWQhXSA9IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwidG9vbHRpcFN0YXRlW3F1ZXN0aW9uLmlkIV0gPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInF1ZXN0aW9uLmhpbnRUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGFuc3dlciBmaWVsZCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByZXZpZXdNb2RlXCIgY2xhc3M9XCJkLW1kLWJsb2NrIGQtbm9uZSBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhbnN3ZXJGaWVsZDsgY29udGV4dDoge3F1ZXN0aW9uOiBxdWVzdGlvbixwcmV2aWV3TW9kZTogcHJldmlld01vZGUsaXNNYW5kYXRvcnk6IGlzTWFuZGF0b3J5LGdyb3VwSW5kZXg6IGdyb3VwSW5kZXh9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBhbnN3ZXIgZmllbGQgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGQtbWQtbm9uZSBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImFuc3dlckZpZWxkOyBjb250ZXh0OiB7cXVlc3Rpb246IHF1ZXN0aW9uLHByZXZpZXdNb2RlOiBwcmV2aWV3TW9kZSxpc01hbmRhdG9yeTogaXNNYW5kYXRvcnksZ3JvdXBJbmRleDogZ3JvdXBJbmRleH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gQXNzZXNzb3IgTWFya3MgRHJvcGRvd24gTG9naWMgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzZXNzbWVudC1tYXJrcy1maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJlbmFibGVNYXJrcyAmJiBzaG91bGRTaG93TWFya3NEcm9wZG93bihxdWVzdGlvbikgJiYgc2VjdGlvbkZvcm1Hcm91cHNbZ3JvdXBJbmRleF0uZm9ybUdyb3VwLmdldChxdWVzdGlvbi5pZCArICdfbWFya3MnKSBhcyBtYXJrc0NvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMiBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLk1BUktTJ119fShNYXg6IHt7cXVlc3Rpb24ud2VpZ2h0fX0pPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IChpbnB1dCk9XCJjaGVja01heFZhbCgkZXZlbnQsIG1hcmtzQ29udHJvbCwgcXVlc3Rpb24/LndlaWdodClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC0xMiBhc3Nlc3NtZW50LWlucHV0LWJvcmRlci1vbmUgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBweC0yIHB5LTEgb3V0bGluZS0wIGFzc2Vzc21lbnQtYmctZ3JleS1vbmUgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24uaWQgKyAnX21hcmtzJ1wiIHR5cGU9XCJudW1iZXJcIiAod2hlZWwpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gYW5zd2VyIGZpZWxkIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXByZXZpZXdNb2RlXCIgY2xhc3M9XCJkLW1kLWJsb2NrIGQtbm9uZSBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhbnN3ZXJGaWVsZDsgY29udGV4dDoge3F1ZXN0aW9uOiBxdWVzdGlvbixwcmV2aWV3TW9kZTogcHJldmlld01vZGUsaXNNYW5kYXRvcnk6IGlzTWFuZGF0b3J5LGdyb3VwSW5kZXg6IGdyb3VwSW5kZXh9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBDaGlsZCBRdWVzdGlvbnMgYW5kIFJlbWFya3MgUmVuZGVyaW5nIExvZ2ljIGJhc2VkIG9uIGNoZWNrZWQgZm9ybSBzdGF0ZSAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXN0aW9uLmRlZmF1bHRPcHRpb25zTGlzdD8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcXVlc3Rpb24uZGVmYXVsdE9wdGlvbnNMaXN0XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc09wdGlvblNlbGVjdGVkKHNlY3Rpb25Gb3JtR3JvdXBzW2dyb3VwSW5kZXhdLmZvcm1Hcm91cCwgcXVlc3Rpb24sIG9wdGlvbi5vcHRpb25zPy5pZClcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUkVNQVJLUyBGSUVMRCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24ucmVtYXJrc1JlcXVpcmVkICYmIHNlY3Rpb25Gb3JtR3JvdXBzW2dyb3VwSW5kZXhdLmZvcm1Hcm91cC5nZXQocXVlc3Rpb24uaWQgKyAnX3JlbWFya3NfJyArIG9wdGlvbi5pZCkgYXMgcmVtYXJrc0NvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTUgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5SRU1BUktTJ119fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSAqbmdJZj1cIiFwcmV2aWV3TW9kZVwiIGZvcm1Db250cm9sTmFtZT1cInt7cXVlc3Rpb24uaWR9fV9yZW1hcmtzX3t7b3B0aW9uLmlkfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M9XCIyXCIgW3BsYWNlaG9sZGVyXT1cImxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUExBQ0VIT0xERVIuUkVNQVJLUyddXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyZW1hcmtzQ29udHJvbC5pbnZhbGlkICYmIHJlbWFya3NDb250cm9sLnRvdWNoZWQgPyAnYXNzZXNzbWVudC1pbnB1dC1ib3JkZXItaW52YWxpZCcgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC1pbnB1dC1ib3JkZXItb25lIGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC1pbnB1dC1wYWRkaW5nIG91dGxpbmUtMCBhc3Nlc3NtZW50LWJnLWdyZXktb25lXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcmV2aWV3TW9kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktbmluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByZW1hcmtzQ29udHJvbC52YWx1ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1kYW5nZXIgbXQtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyZW1hcmtzQ29udHJvbC5pbnZhbGlkICYmIHJlbWFya3NDb250cm9sLnRvdWNoZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuRVJST1IuRklFTERfUkVRVUlSRUQnXX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENISUxEIFFVRVNUSU9OUyBSRUNVUlNJT04gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtNCBkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTNcIiAqbmdJZj1cIm9wdGlvbi5jaGlsZFF1ZXN0aW9uTGlzdD8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjaGlsZElkIG9mIG9wdGlvbi5jaGlsZFF1ZXN0aW9uTGlzdDsgbGV0IGNoaWxkSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJxdWVzdGlvblRlbXBsYXRlOyBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbklkOiBjaGlsZElkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNYW5kYXRvcnk6IHF1ZXN0aW9uQmFua1tjaGlsZElkXT8uaXNNYW5kYXRvcnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cEluZGV4OiBncm91cEluZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50T3B0aW9uSWQ6IG9wdGlvbi5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlOiBzZXF1ZW5jZSArICcuJyArIChjaGlsZEluZGV4ICsgMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gYW5zd2VyIGZpZWxkIHRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGUgI2Fuc3dlckZpZWxkIGxldC1xdWVzdGlvbj1cInF1ZXN0aW9uXCIgbGV0LXByZXZpZXdNb2RlPVwicHJldmlld01vZGVcIiBsZXQtaXNNYW5kYXRvcnk9XCJpc01hbmRhdG9yeVwiXHJcbiAgICBsZXQtZ3JvdXBJbmRleD1cImdyb3VwSW5kZXhcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJzZWN0aW9uRm9ybUdyb3Vwc1tncm91cEluZGV4XS5mb3JtR3JvdXBcIiBbZm9ybUdyb3VwXT1cInNlY3Rpb25Gb3JtR3JvdXBzW2dyb3VwSW5kZXhdLmZvcm1Hcm91cFwiXHJcbiAgICAgICAgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJxdWVzdGlvbi5xdWVzdGlvblR5cGU/LmNvZGVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiICpuZ1N3aXRjaENhc2U9XCInUVVFU1RJT05fVFlQRS5TVUJKRUNUSVZFX1NIT1JUJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbi10eXBlLXNob3J0IFtxdWVzdGlvbl09XCJxdWVzdGlvblwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24uaWQhXCIgW3JlcXVpcmVkXT1cImlzTWFuZGF0b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICBbcHJldmlld01vZGVdPVwicHJldmlld01vZGVcIiBbbGFiZWxDb25maWddPVwibGFiZWxDb25maWdcIj48L2xpYi1xdWVzdGlvbi10eXBlLXNob3J0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdTd2l0Y2hDYXNlPVwiJ1FVRVNUSU9OX1RZUEUuU1VCSkVDVElWRV9MT05HJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbi10eXBlLWxvbmcgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5pZCFcIiBbcmVxdWlyZWRdPVwiaXNNYW5kYXRvcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwcmV2aWV3TW9kZV09XCJwcmV2aWV3TW9kZVwiIFtsYWJlbENvbmZpZ109XCJsYWJlbENvbmZpZ1wiPjwvbGliLXF1ZXN0aW9uLXR5cGUtbG9uZz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgKm5nU3dpdGNoQ2FzZT1cIidRVUVTVElPTl9UWVBFLlNVQkpFQ1RJVkVfUklDSF9URVhUJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbi10eXBlLWVkaXRvciBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLmlkIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImlzTWFuZGF0b3J5XCIgW3ByZXZpZXdNb2RlXT1cInByZXZpZXdNb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxDb25maWddPVwibGFiZWxDb25maWdcIj48L2xpYi1xdWVzdGlvbi10eXBlLWVkaXRvcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgKm5nU3dpdGNoQ2FzZT1cIidRVUVTVElPTl9UWVBFLk9CSkVDVElWRSdcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItcXVlc3Rpb24tdHlwZS1vYmplY3RpdmUgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5pZCFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc01hbmRhdG9yeVwiPjwvbGliLXF1ZXN0aW9uLXR5cGUtb2JqZWN0aXZlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdTd2l0Y2hDYXNlPVwiJ1FVRVNUSU9OX1RZUEUuTVVMVElfU0VMRUNUJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbi10eXBlLW11bHRpc2VsZWN0IFtxdWVzdGlvbl09XCJxdWVzdGlvblwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24uaWQhXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNNYW5kYXRvcnlcIj48L2xpYi1xdWVzdGlvbi10eXBlLW11bHRpc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdTd2l0Y2hDYXNlPVwiJ1FVRVNUSU9OX1RZUEUuUFJFRkVSRU5DRSdcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItcXVlc3Rpb24tdHlwZS1wcmVmZXJlbmNlIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24uaWQhXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNNYW5kYXRvcnlcIj48L2xpYi1xdWVzdGlvbi10eXBlLXByZWZlcmVuY2U+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiICpuZ1N3aXRjaENhc2U9XCInUVVFU1RJT05fVFlQRS5OVU1CRVInXCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uLXR5cGUtc2hvcnQgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5pZCFcIiBbcmVxdWlyZWRdPVwiaXNNYW5kYXRvcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwcmV2aWV3TW9kZV09XCJwcmV2aWV3TW9kZVwiIFtsYWJlbENvbmZpZ109XCJsYWJlbENvbmZpZ1wiPjwvbGliLXF1ZXN0aW9uLXR5cGUtc2hvcnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiICpuZ1N3aXRjaENhc2U9XCInUVVFU1RJT05fVFlQRS5FTUFJTCdcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItcXVlc3Rpb24tdHlwZS1zaG9ydCBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIiBbZm9ybUNvbnRyb2xOYW1lXT1cInF1ZXN0aW9uLmlkIVwiIFtyZXF1aXJlZF09XCJpc01hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3ByZXZpZXdNb2RlXT1cInByZXZpZXdNb2RlXCIgW2xhYmVsQ29uZmlnXT1cImxhYmVsQ29uZmlnXCI+PC9saWItcXVlc3Rpb24tdHlwZS1zaG9ydD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgKm5nU3dpdGNoQ2FzZT1cIidRVUVTVElPTl9UWVBFLkNPTlRBQ1RfTlVNQkVSJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbi10eXBlLXNob3J0IFtxdWVzdGlvbl09XCJxdWVzdGlvblwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24uaWQhXCIgW3JlcXVpcmVkXT1cImlzTWFuZGF0b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICBbcHJldmlld01vZGVdPVwicHJldmlld01vZGVcIiBbbGFiZWxDb25maWddPVwibGFiZWxDb25maWdcIj48L2xpYi1xdWVzdGlvbi10eXBlLXNob3J0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdTd2l0Y2hDYXNlPVwiJ1FVRVNUSU9OX1RZUEUuVVJMJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbi10eXBlLXNob3J0IFtxdWVzdGlvbl09XCJxdWVzdGlvblwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXVlc3Rpb24uaWQhXCIgW3JlcXVpcmVkXT1cImlzTWFuZGF0b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICBbcHJldmlld01vZGVdPVwicHJldmlld01vZGVcIiBbbGFiZWxDb25maWddPVwibGFiZWxDb25maWdcIj48L2xpYi1xdWVzdGlvbi10eXBlLXNob3J0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdTd2l0Y2hDYXNlPVwiJ1FVRVNUSU9OX1RZUEUuRklMRV9VUExPQUQnXCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uLXR5cGUtZmlsZS11cGxvYWQgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxdWVzdGlvbi5pZCFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc01hbmRhdG9yeVwiIFtsYWJlbENvbmZpZ109XCJsYWJlbENvbmZpZ1wiIFtpbWFnZUNvbmZpZ109XCJpbWFnZUNvbmZpZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKHNuYWNrYmFyTWVzc2FnZSk9XCJzbmFja2Jhck1lc3NhZ2UuZW1pdCgkZXZlbnQpXCI+PC9saWItcXVlc3Rpb24tdHlwZS1maWxlLXVwbG9hZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gRXJyb3IgTWVzc2FnZXMgYW5kIENoYXJhY3RlciBDb3VudCBDb250YWluZXIgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAqbmdJZj1cIiFwcmV2aWV3TW9kZSAmJiBzZWN0aW9uRm9ybUdyb3Vwc1tncm91cEluZGV4XS5mb3JtR3JvdXAuZ2V0KHF1ZXN0aW9uLmlkPy50b1N0cmluZygpIHx8ICcnKSBhcyBjb250cm9sXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtc3RhcnQgbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1kYW5nZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9ycz8uWydyZXF1aXJlZCddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5FUlJPUi5SRVFVSVJFRF9SRVNQT05TRSddfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1kYW5nZXIgbXQtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e3F1ZXN0aW9uPy52YWxpZGF0aW9uTWVzc2FnZSB8fCBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLklOVkFMSURfRk9STUFUJ119fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtdC0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnM/LlsnbWlubGVuZ3RoJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLk1JTl9DSEFSUyddPy5yZXBsYWNlKCd7e2xlbmd0aH19JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5lcnJvcnM/LlsnbWlubGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGggKyAnJyl9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtdC0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnM/LlsnbWF4bGVuZ3RoJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkVSUk9SLk1BWF9DSEFSUyddPy5yZXBsYWNlKCd7e2xlbmd0aH19JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5lcnJvcnM/LlsnbWF4bGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGggKyAnJyl9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtdC0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnM/LlsnbWluT3B0aW9ucyddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5FUlJPUi5NSU5fT1BUSU9OUyddPy5yZXBsYWNlKCd7e2NvdW50fX0nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLmVycm9ycz8uWydtaW5PcHRpb25zJ10ucmVxdWlyZWQgKyAnJyl9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtdC0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnM/LlsnbWF4T3B0aW9ucyddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5FUlJPUi5NQVhfT1BUSU9OUyddPy5yZXBsYWNlKCd7e2NvdW50fX0nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLmVycm9ycz8uWydtYXhPcHRpb25zJ10ucmVxdWlyZWQgKyAnJyl9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtdC0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnM/LlsnbWF4RmlsZXMnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuRVJST1IuTUFYX0ZJTEVTJ10/LnJlcGxhY2UoJ3t7Y291bnR9fScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZXJyb3JzPy5bJ21heEZpbGVzJ10ucmVxdWlyZWQgKyAnJyl9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtdC0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnM/LlsnbWF4RmlsZVNpemUnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuRVJST1IuTUFYX0ZJTEVfU0laRSddPy5yZXBsYWNlKCd7e3NpemV9fScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuZXJyb3JzPy5bJ21heEZpbGVTaXplJ10ucmVxdWlyZWRTaXplICsgJycpfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gd2hpdGUtc3BhY2Utbm93cmFwIG1zLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0TWF4Q2hhckNvdW50KHF1ZXN0aW9uKSA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBnZXRSZW1haW5pbmdDaGFycyhxdWVzdGlvbiwgY29udHJvbCkgfX1cclxuICAgICAgICAgICAgICAgICAgICB7e2xhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuTEFCRUwuQ0hBUkFDVEVSJ119fXt7Z2V0UmVtYWluaW5nQ2hhcnMocXVlc3Rpb24sIGNvbnRyb2wpICE9PVxyXG4gICAgICAgICAgICAgICAgICAgIDFcclxuICAgICAgICAgICAgICAgICAgICA/ICdzJyA6ICcnfX0ge3tsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULkxBQkVMLlJFTUFJTklORyddfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBSZXVzYWJsZSBTZWN0aW9uIEZvcm0gVGVtcGxhdGUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjc2VjdGlvbkNvbnRlbnQgbGV0LXNlY3Rpb249XCJzZWN0aW9uXCIgbGV0LWk9XCJpXCI+XHJcbiAgICA8Zm9ybSBjbGFzcz1cInctMTAwXCIgKm5nSWY9XCJzZWN0aW9uRm9ybUdyb3Vwc1tpXS5mb3JtR3JvdXBcIiBbZm9ybUdyb3VwXT1cInNlY3Rpb25Gb3JtR3JvdXBzW2ldLmZvcm1Hcm91cFwiXHJcbiAgICAgICAgW25hbWVdPVwiJ3NlY3Rpb25mcm0tJyArIGlcIiBub3ZhbGlkYXRlPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTRcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiFwcmV2aWV3TW9kZSAmJiAoc2VjdGlvbj8ucXBzRGVzYz8uWzBdPy50ZXh0IHx8IHNlY3Rpb24/Lm1lZGlhVXJsKVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xNCBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW5cIj5cclxuICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5UT1RBTF9RVUVTVElPTlMnXX19OiB7eyBzZWN0aW9uPy50b3RhbFF1ZXN0aW9ucyB8fCAwIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib3Blbkluc3RydWN0aW9uc0RpYWxvZyhzZWN0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtem9vbS1hbmltYXRpb24gYXNzZXNzbWVudC1idXR0b24tcGFkZGluZyBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEzIGFzc2Vzc21lbnQtYnRuLXByaW1hcnktdHJhbnNwYXJlbnRcIj5cclxuICAgICAgICAgICAgICAgIHt7bGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5MQUJFTC5WSUVXX0lOU1RSVUNUSU9OUyddfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0zXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNxIG9mIHNlY3Rpb24uc2VjdGlvblF1ZXN0aW9uc0xpc3QgfCBvcmRlckJ5OyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicXVlc3Rpb25UZW1wbGF0ZTsgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgcXVlc3Rpb25JZDogc3EucXVlc3Rpb25JZCxcclxuICAgICAgICAgICAgICAgIGlzTWFuZGF0b3J5OiBxdWVzdGlvbkJhbmtbc3EucXVlc3Rpb25JZF0/LmlzTWFuZGF0b3J5LFxyXG4gICAgICAgICAgICAgICAgZ3JvdXBJbmRleDogaSxcclxuICAgICAgICAgICAgICAgIHBhcmVudE9wdGlvbklkOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgc2VxdWVuY2U6IGogKyAxXHJcbiAgICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIHZpZGVvIHByZXZpZXcgIC0tPlxyXG48bmctdGVtcGxhdGUgbGV0LXZpZGVvVXJsPVwidmlkZW9VcmxcIiAjVmlkZW9UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIG92ZXJmbG93LWhpZGRlbiBjb2wtbWQtMTAgY29sLTEyXCI+XHJcbiAgICAgICAgPHZpZGVvICpuZ0lmPVwidmlkZW9Vcmw/LmluY2x1ZGVzKCcubXA0JykgZWxzZSB5b3V0dWJlVmlkZW9cIiB3aWR0aD1cIjQwMFwiIGNvbnRyb2xzIGNsYXNzPVwibXctMTAwIGQtYmxvY2sgbXgtYXV0b1wiPlxyXG4gICAgICAgICAgICA8c291cmNlIFtzcmNdPVwidmlkZW9VcmxcIiB0eXBlPVwidmlkZW8vbXA0XCI+XHJcbiAgICAgICAgPC92aWRlbz5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI3lvdXR1YmVWaWRlbz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInlvdXR1YmUtdmlkZW8gcG9zaXRpb24tcmVsYXRpdmUgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxpZnJhbWUgW3NyY109XCJhZGRZb3V0dWJlSWZyYW1lU3JjKHZpZGVvVXJsKVwiIHRpdGxlPVwiWW91VHViZSB2aWRlbyBwbGF5ZXJcIiBmcmFtZWJvcmRlcj1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGFsbG93PVwiYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGNsaXBib2FyZC13cml0ZTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZTsgd2ViLXNoYXJlXCJcclxuICAgICAgICAgICAgICAgICAgICBhbGxvd2Z1bGxzY3JlZW4gY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtMCBzdGFydC0wIHctMTAwIGgtMTAwIGQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDwvaWZyYW1lPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19