@hivegpt/hiveai-angular 0.0.283 → 0.0.287

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.
@@ -7,16 +7,32 @@ export class BotHtmlEditorComponent {
7
7
  constructor(cdr, http) {
8
8
  this.cdr = cdr;
9
9
  this.http = http;
10
- this.documentName = 'doc name';
10
+ this.documentName = '';
11
11
  this.quillConfig = {
12
- toolbar: [
13
- [{ header: '1' }, { header: '2' }, { font: [] }],
14
- [{ list: 'ordered' }, { list: 'bullet' }],
15
- ['bold', 'italic', 'underline'],
16
- ['link'],
17
- ['clean'],
18
- ],
12
+ toolbar: {
13
+ container: [
14
+ [{ header: '1' }, { header: '2' }, { font: [] }],
15
+ [{ list: 'ordered' }, { list: 'bullet' }],
16
+ ['bold', 'italic', 'underline'],
17
+ ['link'],
18
+ ['clean'],
19
+ ['undo', 'redo'],
20
+ ],
21
+ handlers: {
22
+ undo: () => this.quillEditor.history.undo(),
23
+ redo: () => this.quillEditor.history.redo(),
24
+ },
25
+ },
26
+ history: {
27
+ delay: 1000,
28
+ maxStack: 100,
29
+ userOnly: true,
30
+ },
19
31
  };
32
+ this.isShowSaved = true;
33
+ }
34
+ onEditorCreated(editorInstance) {
35
+ this.quillEditor = editorInstance;
20
36
  }
21
37
  ngOnInit() {
22
38
  this.environment = prod_environment;
@@ -30,6 +46,15 @@ export class BotHtmlEditorComponent {
30
46
  }
31
47
  }, 2500);
32
48
  }
49
+ ngOnChanges(changes) {
50
+ var _a, _b;
51
+ if (changes.editorContent) {
52
+ if (this.documentContent && ((_a = this.documentContent) === null || _a === void 0 ? void 0 : _a.content)) {
53
+ this.editorContent =
54
+ ((_b = this.documentContent) === null || _b === void 0 ? void 0 : _b.content) + '<br />' + this.editorContent;
55
+ }
56
+ }
57
+ }
33
58
  filldataInForm() {
34
59
  var _a, _b;
35
60
  if (this.documentContent) {
@@ -58,12 +83,14 @@ export class BotHtmlEditorComponent {
58
83
  content: this.editorContent,
59
84
  };
60
85
  return this.http.post(url, data, { headers }).pipe(switchMap((res) => {
86
+ this.isShowSaved = true;
61
87
  if (res) {
62
88
  // alert('Saved Successfully');
63
89
  }
64
90
  this.cdr.markForCheck();
65
91
  return of(res);
66
92
  }), catchError((error) => {
93
+ this.isShowSaved = true;
67
94
  console.error('Error fetching chatbot config: ', error);
68
95
  return of(null);
69
96
  }));
@@ -80,19 +107,21 @@ export class BotHtmlEditorComponent {
80
107
  content: this.editorContent,
81
108
  };
82
109
  return this.http.put(url, data, { headers }).pipe(switchMap((res) => {
110
+ this.isShowSaved = true;
83
111
  if (res) {
84
112
  // alert('Updated Successfully');
85
113
  }
86
114
  this.cdr.markForCheck();
87
115
  return of(res);
88
116
  }), catchError((error) => {
117
+ this.isShowSaved = true;
89
118
  console.error('Error fetching chatbot config: ', error);
90
119
  return of(null);
91
120
  }));
92
121
  }
93
122
  // Function that gets called on editor content change
94
123
  onEditorContentChanged(event) {
95
- console.log("On Editor changed call");
124
+ this.isShowSaved = false;
96
125
  // Clear the previous timeout if the function is called again before the delay
97
126
  if (this.timeout) {
98
127
  clearTimeout(this.timeout);
@@ -104,14 +133,14 @@ export class BotHtmlEditorComponent {
104
133
  }
105
134
  // Function to be called after delay
106
135
  handleEditorChange() {
136
+ console.log('Editor content changed after delay:', this.editorContent);
107
137
  this.saveContent();
108
- // Add your function logic here
109
138
  }
110
139
  }
111
140
  BotHtmlEditorComponent.decorators = [
112
141
  { type: Component, args: [{
113
142
  selector: 'lib-bot-html-editor',
114
- template: "<div style=\"padding: 12px\">\r\n <div style=\"margin-top: 42px\" class=\"form-group\">\r\n <input [(ngModel)]=\"documentName\" class=\"form-control\" type=\"text\" />\r\n <button (click)=\"saveContent()\" class=\"save-btn\">Save</button>\r\n </div>\r\n\r\n <quill-editor [(ngModel)]=\"editorContent\" [modules]=\"quillConfig\" (onContentChanged)=\"onEditorContentChanged($event)\"\r\n placeholder=\"Start typing or paste to get started...\"></quill-editor>\r\n\r\n</div>",
143
+ template: "<div style=\"padding: 12px\">\r\n <div style=\"margin-top: 42px\" class=\"form-group\">\r\n <input [(ngModel)]=\"documentName\" (blur)=\"saveContent()\" class=\"form-control\" placeholder=\"Type document name...\"\r\n type=\"text\" />\r\n <button *ngIf=\"isShowSaved\" (click)=\"saveContent()\" class=\"save-btn\">\r\n Saved\r\n </button>\r\n\r\n <button *ngIf=\"!isShowSaved\" class=\"save-btn\">Unsaved</button>\r\n </div>\r\n\r\n <quill-editor [(ngModel)]=\"editorContent\" [modules]=\"quillConfig\" (onContentChanged)=\"onEditorContentChanged($event)\"\r\n placeholder=\"Start typing or paste to get started...\"></quill-editor>\r\n</div>",
115
144
  styles: [".save-btn{background-color:#f0f0f0;border:none;color:#333;margin-top:22px;position:absolute;right:16px;width:56px}"]
116
145
  },] }
117
146
  ];
@@ -126,4 +155,4 @@ BotHtmlEditorComponent.propDecorators = {
126
155
  conversationId: [{ type: Input }],
127
156
  botId: [{ type: Input }]
128
157
  };
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90LWh0bWwtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJEOi9oaXZlR1BULUFJLXBhY2thZ2VzL0hpdmVBSS1QYWNrYWdlcy9wcm9qZWN0cy9oaXZlZ3B0L2V2ZW50c2dwdC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2JvdC1odG1sLWVkaXRvci9ib3QtaHRtbC1lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBR1QsS0FBSyxHQVNOLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsT0FBTyxFQUVMLGdCQUFnQixHQUNqQixNQUFNLG1DQUFtQyxDQUFDO0FBVTNDLE1BQU0sT0FBTyxzQkFBc0I7SUF3QmpDLFlBQW9CLEdBQXNCLEVBQVUsSUFBZ0I7UUFBaEQsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBakJwRSxpQkFBWSxHQUFRLFVBQVUsQ0FBQztRQVEvQixnQkFBVyxHQUFHO1lBQ1osT0FBTyxFQUFFO2dCQUNQLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7Z0JBQ2hELENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7Z0JBQ3pDLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUM7Z0JBQy9CLENBQUMsTUFBTSxDQUFD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QkFBaUI7WUFIVixVQUFVOzs7NEJBb0NoQixLQUFLOzhCQUNMLEtBQUs7OEJBQ0wsS0FBSzs2QkFDTCxLQUFLO29CQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERyYXdlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBmb3JtYXROb3csIGZvcm1hdFRpbWVTdGFtcHMgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7XHJcbiAgZGV2X2Vudmlyb25tZW50LFxyXG4gIHByb2RfZW52aXJvbm1lbnQsXHJcbn0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcclxuaW1wb3J0IHsgQ29udmVyc2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2NvbnZlcnNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTb2NrZXRTZXJ2aWNlIH0gZnJvbSAnLi4vc29ja2V0LXNlcnZpY2Uuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1ib3QtaHRtbC1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ib3QtaHRtbC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2JvdC1odG1sLWVkaXRvci5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCb3RIdG1sRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBlZGl0b3JDb250ZW50OiBPYnNlcnZhYmxlPHN0cmluZz47XHJcbiAgQElucHV0KCkgaXNEb2NJbkVkaXRNb2RlOiBhbnk7XHJcbiAgQElucHV0KCkgZG9jdW1lbnRDb250ZW50OiBhbnk7XHJcbiAgQElucHV0KCkgY29udmVyc2F0aW9uSWQ6IGFueTtcclxuICBASW5wdXQoKSBib3RJZDogYW55O1xyXG5cclxuICBkb2N1bWVudE5hbWU6IGFueSA9ICdkb2MgbmFtZSc7XHJcblxyXG4gIGVudmlyb25tZW50OiB7XHJcbiAgICBVU0VSU19BUEk7XHJcbiAgICBCQVNFX1VSTDtcclxuICAgIEFHRU5UU19BUEk7XHJcbiAgfTtcclxuXHJcbiAgcXVpbGxDb25maWcgPSB7XHJcbiAgICB0b29sYmFyOiBbXHJcbiAgICAgIFt7IGhlYWRlcjogJzEnIH0sIHsgaGVhZGVyOiAnMicgfSwgeyBmb250OiBbXSB9XSxcclxuICAgICAgW3sgbGlzdDogJ29yZGVyZWQnIH0sIHsgbGlzdDogJ2J1bGxldCcgfV0sXHJcbiAgICAgIFsnYm9sZCcsICdpdGFsaWMnLCAndW5kZXJsaW5lJ10sXHJcbiAgICAgIFsnbGluayddLFxyXG4gICAgICBbJ2NsZWFuJ10sXHJcbiAgICBdLFxyXG4gIH07XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBwcm9kX2Vudmlyb25tZW50O1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0RvY0luRWRpdE1vZGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnSW4gRWRpdCBtb2RlJyk7XHJcbiAgICAgICAgdGhpcy5maWxsZGF0YUluRm9ybSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdJbiBzYXZlIG1vZGUnKTtcclxuICAgICAgfVxyXG4gICAgfSwgMjUwMCk7XHJcbiAgfVxyXG5cclxuICBmaWxsZGF0YUluRm9ybSgpIHtcclxuICAgIGlmICh0aGlzLmRvY3VtZW50Q29udGVudCkge1xyXG4gICAgICB0aGlzLmRvY3VtZW50TmFtZSA9IHRoaXMuZG9jdW1lbnRDb250ZW50Py5uYW1lO1xyXG4gICAgICB0aGlzLmVkaXRvckNvbnRlbnQgPSB0aGlzLmRvY3VtZW50Q29udGVudD8uY29udGVudDtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2F2ZUNvbnRlbnQoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNEb2NJbkVkaXRNb2RlKSB7XHJcbiAgICAgIHRoaXMuc2F2ZUNvbnRlbnRfaHR0cCgpLnN1YnNjcmliZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zYXZlQ29udGVudF9odHRwKCkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzYXZlQ29udGVudF9odHRwKCkge1xyXG4gICAgY29uc29sZS5sb2coJ0FQSSBjYWxsIGZ1bmN0aW9uJyk7XHJcblxyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5lbnZpcm9ubWVudC5BR0VOVFNfQVBJfS9Db252ZXJzYXRpb25Eb2N1bWVudHM/Y29udmVyc2F0aW9uSWQ9JHt0aGlzLmNvbnZlcnNhdGlvbklkfSZib3RJZD0ke3RoaXMuYm90SWR9YDtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICBhcGlLZXk6ICdXSXovcUFtK0VFbWZPa0ZhVUEvd2VBPT0nLFxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgIG5hbWU6IHRoaXMuZG9jdW1lbnROYW1lLFxyXG4gICAgICBjb250ZW50OiB0aGlzLmVkaXRvckNvbnRlbnQsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIGRhdGEsIHsgaGVhZGVycyB9KS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgLy8gIGFsZXJ0KCdTYXZlZCBTdWNjZXNzZnVsbHknKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgICAgIHJldHVybiBvZihyZXMpO1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBjaGF0Ym90IGNvbmZpZzogJywgZXJyb3IpO1xyXG5cclxuICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ29udGVudF9odHRwKCkge1xyXG4gICAgY29uc29sZS5sb2coJ0FQSSBjYWxsIGZ1bmN0aW9uJyk7XHJcblxyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5lbnZpcm9ubWVudC5BR0VOVFNfQVBJfS9Db252ZXJzYXRpb25Eb2N1bWVudHMvcmVuYW1lP2NvbnZlcnNhdGlvbklkPSR7dGhpcy5jb252ZXJzYXRpb25JZH0mYm90SWQ9JHt0aGlzLmJvdElkfWA7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgYXBpS2V5OiAnV0l6L3FBbStFRW1mT2tGYVVBL3dlQT09JyxcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBuYW1lOiB0aGlzLmRvY3VtZW50TmFtZSxcclxuICAgICAgY29udGVudDogdGhpcy5lZGl0b3JDb250ZW50LFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh1cmwsIGRhdGEsIHsgaGVhZGVycyB9KS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgLy8gYWxlcnQoJ1VwZGF0ZWQgU3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuICAgICAgICByZXR1cm4gb2YocmVzKTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY2hhdGJvdCBjb25maWc6ICcsIGVycm9yKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHRpbWVvdXQ6IGFueTtcclxuXHJcbiAgLy8gRnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBvbiBlZGl0b3IgY29udGVudCBjaGFuZ2VcclxuXHJcbiAgb25FZGl0b3JDb250ZW50Q2hhbmdlZChldmVudDogYW55KSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCJPbiBFZGl0b3IgY2hhbmdlZCBjYWxsXCIpO1xyXG5cclxuICAgIC8vIENsZWFyIHRoZSBwcmV2aW91cyB0aW1lb3V0IGlmIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgYWdhaW4gYmVmb3JlIHRoZSBkZWxheVxyXG5cclxuICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcclxuXHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXQgYSBuZXcgdGltZW91dCBmb3IgMi0zIHNlY29uZHMgZGVsYXlcclxuXHJcbiAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuaGFuZGxlRWRpdG9yQ2hhbmdlKCk7XHJcblxyXG4gICAgfSwgMjAwMCk7IC8vIDIwMDBtcyA9IDIgc2Vjb25kcyAoYWRqdXN0IHRvIDMwMDAgZm9yIDMgc2Vjb25kcylcclxuXHJcbiAgfVxyXG5cclxuICAvLyBGdW5jdGlvbiB0byBiZSBjYWxsZWQgYWZ0ZXIgZGVsYXlcclxuXHJcbiAgaGFuZGxlRWRpdG9yQ2hhbmdlKCkge1xyXG5cclxuICAgIHRoaXMuc2F2ZUNvbnRlbnQoKTtcclxuXHJcbiAgICAvLyBBZGQgeW91ciBmdW5jdGlvbiBsb2dpYyBoZXJlXHJcblxyXG4gIH1cclxufVxyXG4iXX0=
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90LWh0bWwtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJEOi9oaXZlR1BULUFJLXBhY2thZ2VzL0hpdmVBSS1QYWNrYWdlcy9wcm9qZWN0cy9oaXZlZ3B0L2V2ZW50c2dwdC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2JvdC1odG1sLWVkaXRvci9ib3QtaHRtbC1lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBR1QsS0FBSyxHQVNOLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsT0FBTyxFQUVMLGdCQUFnQixHQUNqQixNQUFNLG1DQUFtQyxDQUFDO0FBVTNDLE1BQU0sT0FBTyxzQkFBc0I7SUEwQ2pDLFlBQW9CLEdBQXNCLEVBQVUsSUFBZ0I7UUFBaEQsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBbkNwRSxpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQVF2QixnQkFBVyxHQUFHO1lBQ1osT0FBTyxFQUFFO2dCQUNQLFNBQVMsRUFBRTtvQkFDVCxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO29CQUNoRCxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO29CQUN6QyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDO29CQUMvQixDQUFDLE1BQU0sQ0FBQztvQkFDUixDQUFDLE9BQU8sQ0FBQztvQkFDVCxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7aUJBQ2pCO2dCQUNELFFBQVEsRUFBRTtvQkFDUixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO29CQUMzQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO2lCQUM1QzthQUNGO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxJQUFJO2dCQUNYLFFBQVEsRUFBRSxHQUFHO2dCQUNiLFFBQVEsRUFBRSxJQUFJO2FBQ2Y7U0FDRixDQUFDO1FBdUNGLGdCQUFXLEdBQUcsSUFBSSxDQUFDO0lBaENxRCxDQUFDO0lBSHpFLGVBQWUsQ0FBQyxjQUFtQjtRQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQztJQUNwQyxDQUFDO0lBR0QsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUM7UUFFcEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3ZCO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDN0I7UUFDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCOztRQUNoQyxJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUU7WUFDekIsSUFBSSxJQUFJLENBQUMsZUFBZSxXQUFJLElBQUksQ0FBQyxlQUFlLDBDQUFFLE9BQU8sQ0FBQSxFQUFFO2dCQUN6RCxJQUFJLENBQUMsYUFBYTtvQkFDaEIsT0FBQSxJQUFJLENBQUMsZUFBZSwwQ0FBRSxPQUFPLElBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7YUFDakU7U0FDRjtJQUNILENBQUM7SUFFRCxjQUFjOztRQUNaLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLENBQUMsWUFBWSxTQUFHLElBQUksQ0FBQyxlQUFlLDBDQUFFLElBQUksQ0FBQztZQUMvQyxJQUFJLENBQUMsYUFBYSxTQUFHLElBQUksQ0FBQyxlQUFlLDBDQUFFLE9BQU8sQ0FBQztZQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUlELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN6QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNyQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRWpDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLHlDQUF5QyxJQUFJLENBQUMsY0FBYyxVQUFVLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3SCxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUM5QixjQUFjLEVBQUUsa0JBQWtCO1lBQ2xDLE1BQU0sRUFBRSwwQkFBMEI7U0FDbkMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLEdBQUc7WUFDVCxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDdkIsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQzVCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDaEQsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsZ0NBQWdDO2FBQ2pDO1lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUV4QixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXhELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUVqQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxnREFBZ0QsSUFBSSxDQUFDLGNBQWMsVUFBVSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEksTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDOUIsY0FBYyxFQUFFLGtCQUFrQjtZQUNsQyxNQUFNLEVBQUUsMEJBQTBCO1NBQ25DLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxHQUFHO1lBQ1QsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQ3ZCLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYTtTQUM1QixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQy9DLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksR0FBRyxFQUFFO2dCQUNQLGlDQUFpQzthQUNsQztZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFeEIsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUV4RCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUlELHFEQUFxRDtJQUNyRCxzQkFBc0IsQ0FBQyxLQUFVO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLDhFQUE4RTtRQUM5RSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM1QjtRQUVELDBDQUEwQztRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsb0RBQW9EO0lBQ2hFLENBQUM7SUFFRCxvQ0FBb0M7SUFDcEMsa0JBQWtCO1FBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMscUNBQXFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDOzs7WUEvS0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLDBxQkFBK0M7O2FBRWhEOzs7WUEvQkMsaUJBQWlCO1lBSFYsVUFBVTs7OzRCQW9DaEIsS0FBSzs4QkFDTCxLQUFLOzhCQUNMLEtBQUs7NkJBQ0wsS0FBSztvQkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREcmF3ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgZm9ybWF0Tm93LCBmb3JtYXRUaW1lU3RhbXBzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xyXG5pbXBvcnQge1xyXG4gIGRldl9lbnZpcm9ubWVudCxcclxuICBwcm9kX2Vudmlyb25tZW50LFxyXG59IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7IENvbnZlcnNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9jb252ZXJzYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU29ja2V0U2VydmljZSB9IGZyb20gJy4uL3NvY2tldC1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYm90LWh0bWwtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYm90LWh0bWwtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ib3QtaHRtbC1lZGl0b3IuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQm90SHRtbEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBlZGl0b3JDb250ZW50OiBhbnk7XHJcbiAgQElucHV0KCkgaXNEb2NJbkVkaXRNb2RlOiBhbnk7XHJcbiAgQElucHV0KCkgZG9jdW1lbnRDb250ZW50OiBhbnk7XHJcbiAgQElucHV0KCkgY29udmVyc2F0aW9uSWQ6IGFueTtcclxuICBASW5wdXQoKSBib3RJZDogYW55O1xyXG5cclxuICBkb2N1bWVudE5hbWU6IGFueSA9ICcnO1xyXG5cclxuICBlbnZpcm9ubWVudDoge1xyXG4gICAgVVNFUlNfQVBJO1xyXG4gICAgQkFTRV9VUkw7XHJcbiAgICBBR0VOVFNfQVBJO1xyXG4gIH07XHJcblxyXG4gIHF1aWxsQ29uZmlnID0ge1xyXG4gICAgdG9vbGJhcjoge1xyXG4gICAgICBjb250YWluZXI6IFtcclxuICAgICAgICBbeyBoZWFkZXI6ICcxJyB9LCB7IGhlYWRlcjogJzInIH0sIHsgZm9udDogW10gfV0sXHJcbiAgICAgICAgW3sgbGlzdDogJ29yZGVyZWQnIH0sIHsgbGlzdDogJ2J1bGxldCcgfV0sXHJcbiAgICAgICAgWydib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnXSxcclxuICAgICAgICBbJ2xpbmsnXSxcclxuICAgICAgICBbJ2NsZWFuJ10sXHJcbiAgICAgICAgWyd1bmRvJywgJ3JlZG8nXSwgLy8gQWRkIHVuZG8vcmVkbyBidXR0b25zXHJcbiAgICAgIF0sXHJcbiAgICAgIGhhbmRsZXJzOiB7XHJcbiAgICAgICAgdW5kbzogKCkgPT4gdGhpcy5xdWlsbEVkaXRvci5oaXN0b3J5LnVuZG8oKSxcclxuICAgICAgICByZWRvOiAoKSA9PiB0aGlzLnF1aWxsRWRpdG9yLmhpc3RvcnkucmVkbygpLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGhpc3Rvcnk6IHtcclxuICAgICAgZGVsYXk6IDEwMDAsXHJcbiAgICAgIG1heFN0YWNrOiAxMDAsXHJcbiAgICAgIHVzZXJPbmx5OiB0cnVlLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBxdWlsbEVkaXRvcjogYW55O1xyXG5cclxuICBvbkVkaXRvckNyZWF0ZWQoZWRpdG9ySW5zdGFuY2U6IGFueSkge1xyXG4gICAgdGhpcy5xdWlsbEVkaXRvciA9IGVkaXRvckluc3RhbmNlO1xyXG4gIH1cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IHByb2RfZW52aXJvbm1lbnQ7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmlzRG9jSW5FZGl0TW9kZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdJbiBFZGl0IG1vZGUnKTtcclxuICAgICAgICB0aGlzLmZpbGxkYXRhSW5Gb3JtKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0luIHNhdmUgbW9kZScpO1xyXG4gICAgICB9XHJcbiAgICB9LCAyNTAwKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzLmVkaXRvckNvbnRlbnQpIHtcclxuICAgICAgaWYgKHRoaXMuZG9jdW1lbnRDb250ZW50ICYmIHRoaXMuZG9jdW1lbnRDb250ZW50Py5jb250ZW50KSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JDb250ZW50ID1cclxuICAgICAgICAgIHRoaXMuZG9jdW1lbnRDb250ZW50Py5jb250ZW50ICsgJzxiciAvPicgKyB0aGlzLmVkaXRvckNvbnRlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZpbGxkYXRhSW5Gb3JtKCkge1xyXG4gICAgaWYgKHRoaXMuZG9jdW1lbnRDb250ZW50KSB7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnROYW1lID0gdGhpcy5kb2N1bWVudENvbnRlbnQ/Lm5hbWU7XHJcbiAgICAgIHRoaXMuZWRpdG9yQ29udGVudCA9IHRoaXMuZG9jdW1lbnRDb250ZW50Py5jb250ZW50O1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc1Nob3dTYXZlZCA9IHRydWU7XHJcblxyXG4gIHNhdmVDb250ZW50KCkge1xyXG4gICAgaWYgKCF0aGlzLmlzRG9jSW5FZGl0TW9kZSkge1xyXG4gICAgICB0aGlzLnNhdmVDb250ZW50X2h0dHAoKS5zdWJzY3JpYmUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2F2ZUNvbnRlbnRfaHR0cCgpLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2F2ZUNvbnRlbnRfaHR0cCgpIHtcclxuICAgIGNvbnNvbGUubG9nKCdBUEkgY2FsbCBmdW5jdGlvbicpO1xyXG5cclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZW52aXJvbm1lbnQuQUdFTlRTX0FQSX0vQ29udmVyc2F0aW9uRG9jdW1lbnRzP2NvbnZlcnNhdGlvbklkPSR7dGhpcy5jb252ZXJzYXRpb25JZH0mYm90SWQ9JHt0aGlzLmJvdElkfWA7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgYXBpS2V5OiAnV0l6L3FBbStFRW1mT2tGYVVBL3dlQT09JyxcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBuYW1lOiB0aGlzLmRvY3VtZW50TmFtZSxcclxuICAgICAgY29udGVudDogdGhpcy5lZGl0b3JDb250ZW50LFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCBkYXRhLCB7IGhlYWRlcnMgfSkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNTaG93U2F2ZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIC8vICBhbGVydCgnU2F2ZWQgU3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuICAgICAgICByZXR1cm4gb2YocmVzKTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1Nob3dTYXZlZCA9IHRydWU7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY2hhdGJvdCBjb25maWc6ICcsIGVycm9yKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNvbnRlbnRfaHR0cCgpIHtcclxuICAgIGNvbnNvbGUubG9nKCdBUEkgY2FsbCBmdW5jdGlvbicpO1xyXG5cclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZW52aXJvbm1lbnQuQUdFTlRTX0FQSX0vQ29udmVyc2F0aW9uRG9jdW1lbnRzL3JlbmFtZT9jb252ZXJzYXRpb25JZD0ke3RoaXMuY29udmVyc2F0aW9uSWR9JmJvdElkPSR7dGhpcy5ib3RJZH1gO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgIGFwaUtleTogJ1dJei9xQW0rRUVtZk9rRmFVQS93ZUE9PScsXHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgbmFtZTogdGhpcy5kb2N1bWVudE5hbWUsXHJcbiAgICAgIGNvbnRlbnQ6IHRoaXMuZWRpdG9yQ29udGVudCxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodXJsLCBkYXRhLCB7IGhlYWRlcnMgfSkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNTaG93U2F2ZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIC8vIGFsZXJ0KCdVcGRhdGVkIFN1Y2Nlc3NmdWxseScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG9mKHJlcyk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNTaG93U2F2ZWQgPSB0cnVlO1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNoYXRib3QgY29uZmlnOiAnLCBlcnJvcik7XHJcblxyXG4gICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRpbWVvdXQ6IGFueTtcclxuXHJcbiAgLy8gRnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBvbiBlZGl0b3IgY29udGVudCBjaGFuZ2VcclxuICBvbkVkaXRvckNvbnRlbnRDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuaXNTaG93U2F2ZWQgPSBmYWxzZTtcclxuICAgIC8vIENsZWFyIHRoZSBwcmV2aW91cyB0aW1lb3V0IGlmIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgYWdhaW4gYmVmb3JlIHRoZSBkZWxheVxyXG4gICAgaWYgKHRoaXMudGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXQgYSBuZXcgdGltZW91dCBmb3IgMi0zIHNlY29uZHMgZGVsYXlcclxuICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmhhbmRsZUVkaXRvckNoYW5nZSgpO1xyXG4gICAgfSwgMjAwMCk7IC8vIDIwMDBtcyA9IDIgc2Vjb25kcyAoYWRqdXN0IHRvIDMwMDAgZm9yIDMgc2Vjb25kcylcclxuICB9XHJcblxyXG4gIC8vIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhZnRlciBkZWxheVxyXG4gIGhhbmRsZUVkaXRvckNoYW5nZSgpIHtcclxuICAgIGNvbnNvbGUubG9nKCdFZGl0b3IgY29udGVudCBjaGFuZ2VkIGFmdGVyIGRlbGF5OicsIHRoaXMuZWRpdG9yQ29udGVudCk7XHJcbiAgICB0aGlzLnNhdmVDb250ZW50KCk7XHJcbiAgfVxyXG59Il19