valtech-components 4.0.226 → 4.0.227

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.
@@ -65,7 +65,8 @@ export class MessageBubbleComponent {
65
65
  return (parts[0][0] + (parts[1]?.[0] ?? '')).toUpperCase();
66
66
  });
67
67
  this.imageAttachments = computed(() => (this.msg().attachments ?? []).filter(a => a.mimeType?.startsWith('image/')));
68
- this.fileAttachments = computed(() => (this.msg().attachments ?? []).filter(a => !a.mimeType?.startsWith('image/')));
68
+ this.audioAttachments = computed(() => (this.msg().attachments ?? []).filter(a => a.mimeType?.startsWith('audio/')));
69
+ this.fileAttachments = computed(() => (this.msg().attachments ?? []).filter(a => !a.mimeType?.startsWith('image/') && !a.mimeType?.startsWith('audio/')));
69
70
  this.statusIcon = computed(() => {
70
71
  switch (this.msg().status) {
71
72
  case 'sending':
@@ -136,6 +137,13 @@ export class MessageBubbleComponent {
136
137
  }
137
138
  </div>
138
139
  }
140
+ @if (audioAttachments().length > 0) {
141
+ <div class="audios">
142
+ @for (att of audioAttachments(); track att.url) {
143
+ <audio class="att-audio" controls preload="metadata" [src]="att.url"></audio>
144
+ }
145
+ </div>
146
+ }
139
147
  @if (fileAttachments().length > 0) {
140
148
  <div class="files">
141
149
  @for (att of fileAttachments(); track att.url) {
@@ -199,7 +207,7 @@ export class MessageBubbleComponent {
199
207
  }
200
208
  </div>
201
209
  </div>
202
- `, isInline: true, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:1px 0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(78%,520px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:7px 11px;border-radius:16px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));color:var(--ion-text-color, #000);font-size:.9375rem;line-height:1.35;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:5px}.mine .bubble{background:var(--ion-color-primary);border-color:var(--ion-color-primary);color:var(--ion-color-primary-contrast, #fff)}.mine.tail .bubble{border-bottom-right-radius:5px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:.7}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-medium, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
210
+ `, isInline: true, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:1px 0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(78%,520px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:7px 11px;border-radius:16px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));color:var(--ion-text-color, #000);font-size:.9375rem;line-height:1.35;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:5px}.mine .bubble{background:var(--ion-color-primary);border-color:var(--ion-color-primary);color:var(--ion-color-primary-contrast, #fff)}.mine.tail .bubble{border-bottom-right-radius:5px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block}.audios{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-audio{width:240px;max-width:100%;height:40px}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:.7}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-medium, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
203
211
  }
204
212
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessageBubbleComponent, decorators: [{
205
213
  type: Component,
@@ -244,6 +252,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
244
252
  }
245
253
  </div>
246
254
  }
255
+ @if (audioAttachments().length > 0) {
256
+ <div class="audios">
257
+ @for (att of audioAttachments(); track att.url) {
258
+ <audio class="att-audio" controls preload="metadata" [src]="att.url"></audio>
259
+ }
260
+ </div>
261
+ }
247
262
  @if (fileAttachments().length > 0) {
248
263
  <div class="files">
249
264
  @for (att of fileAttachments(); track att.url) {
@@ -307,6 +322,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
307
322
  }
308
323
  </div>
309
324
  </div>
310
- `, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:1px 0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(78%,520px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:7px 11px;border-radius:16px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));color:var(--ion-text-color, #000);font-size:.9375rem;line-height:1.35;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:5px}.mine .bubble{background:var(--ion-color-primary);border-color:var(--ion-color-primary);color:var(--ion-color-primary-contrast, #fff)}.mine.tail .bubble{border-bottom-right-radius:5px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:.7}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-medium, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"] }]
325
+ `, styles: [":host{display:block}.row{display:flex;align-items:flex-end;gap:8px;margin:1px 0}.row.mine{flex-direction:row-reverse}.row.tail{margin-bottom:8px}.avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--ion-color-primary);color:#fff;font-size:.6875rem;font-weight:700}.avatar.hidden{visibility:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.bubble-wrap{position:relative;max-width:min(78%,520px);display:flex;flex-direction:column}.row.mine .bubble-wrap{align-items:flex-end}.bubble{position:relative;padding:7px 11px;border-radius:16px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .08));color:var(--ion-text-color, #000);font-size:.9375rem;line-height:1.35;cursor:pointer;outline:none;word-break:break-word}.row:not(.mine).tail .bubble{border-bottom-left-radius:5px}.mine .bubble{background:var(--ion-color-primary);border-color:var(--ion-color-primary);color:var(--ion-color-primary-contrast, #fff)}.mine.tail .bubble{border-bottom-right-radius:5px}.bubble.deleted{background:transparent;border-style:dashed;cursor:default}.name{display:block;font-size:.75rem;font-weight:700;color:var(--ion-color-primary);margin-bottom:2px}.reply-preview{display:flex;flex-direction:column;gap:1px;padding:4px 8px;margin-bottom:4px;border-left:3px solid currentColor;border-radius:6px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));font-size:.8125rem;opacity:.85}.reply-name{font-weight:700}.reply-body{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}.body{white-space:pre-wrap}.deleted-text{font-style:italic;opacity:.6}.attachments{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-image{max-width:100%;border-radius:10px;display:block}.audios{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.att-audio{width:240px;max-width:100%;height:40px}.files{display:flex;flex-direction:column;gap:4px;margin-bottom:4px}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:inherit;text-decoration:none;font-size:.8125rem}.meta{display:inline-flex;align-items:center;gap:4px;float:right;margin:2px 0 -2px 8px;font-size:.6875rem;opacity:.7}.edited{font-style:italic}.status{font-size:.875rem}.status.read{color:var(--ion-color-secondary, #4fc3f7);opacity:1}.status.failed{color:var(--ion-color-danger, #eb445a);opacity:1}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.reaction{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:999px;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));font-size:.75rem;cursor:pointer;color:var(--ion-text-color, #000)}.reaction.active{border-color:var(--ion-color-primary);background:var(--ion-color-primary-tint, var(--ion-color-primary));color:var(--ion-color-primary-contrast, #fff)}.reaction .count{opacity:.75}.actions{position:absolute;top:-14px;display:flex;gap:2px;padding:2px;border-radius:999px;background:var(--ion-card-background, var(--ion-background-color, #fff));border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));box-shadow:0 2px 8px #0000001f;opacity:0;pointer-events:none;transition:opacity .12s ease;z-index:2}.row.mine .actions{right:0}.row:not(.mine) .actions{left:0}.bubble-wrap:hover .actions,.actions.open{opacity:1;pointer-events:auto}.act{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:50%;background:transparent;color:var(--ion-color-medium, #92949c);cursor:pointer;font-size:1rem}.act:hover{background:var(--ion-color-step-100, rgba(127, 127, 127, .12));color:var(--ion-text-color, #000)}.act.danger:hover{color:var(--ion-color-danger, #eb445a)}\n"] }]
311
326
  }], ctorParameters: () => [] });
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idWJibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9tZXNzYWdlLWJ1YmJsZS9tZXNzYWdlLWJ1YmJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGVBQWUsRUFDZixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxZQUFZLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUdqRSxRQUFRLENBQUM7SUFDUCxXQUFXO0lBQ1gsU0FBUztJQUNULGFBQWE7SUFDYixhQUFhO0lBQ2IsZUFBZTtJQUNmLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLFlBQVk7Q0FDYixDQUFDLENBQUM7QUFFSCxNQUFNLG1CQUFtQixHQUFHO0lBQzFCLEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxXQUFXO1FBQ2xCLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLFVBQVU7UUFDbEIsS0FBSyxFQUFFLFlBQVk7UUFDbkIsT0FBTyxFQUFFLG1CQUFtQjtRQUM1QixN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UyxhQUFhO1FBQ3JCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRVMsSUFBSSxDQUFDLElBQWlDLEVBQUUsS0FBYztRQUM5RCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxDQUFDLENBQUMsR0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7K0dBN0RVLHNCQUFzQjttR0FBdEIsc0JBQXNCLGt1QkF2VnZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdHVCxpMEhBekdTLFlBQVksK0JBQUUsT0FBTzs7NEZBd1ZwQixzQkFBc0I7a0JBM1ZsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQ3RCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdHVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBhbGVydENpcmNsZSxcbiAgY2hlY2ttYXJrLFxuICBjaGVja21hcmtEb25lLFxuICBjcmVhdGVPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG4gIGhhcHB5T3V0bGluZSxcbiAgYXJyb3dVbmRvT3V0bGluZSxcbiAgdGltZU91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgZm9ybWF0Q2xvY2tUaW1lIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL2RhdGV0aW1lJztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGFsZXJ0Q2lyY2xlLFxuICBjaGVja21hcmssXG4gIGNoZWNrbWFya0RvbmUsXG4gIGNyZWF0ZU91dGxpbmUsXG4gIGRvY3VtZW50T3V0bGluZSxcbiAgaGFwcHlPdXRsaW5lLFxuICBhcnJvd1VuZG9PdXRsaW5lLFxuICB0aW1lT3V0bGluZSxcbiAgdHJhc2hPdXRsaW5lLFxufSk7XG5cbmNvbnN0IE1FU1NBR0VfQlVCQkxFX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgcmVwbHk6ICdSZXNwb25kZXInLFxuICAgIGVkaXQ6ICdFZGl0YXInLFxuICAgIGRlbGV0ZTogJ0VsaW1pbmFyJyxcbiAgICByZWFjdDogJ1JlYWNjaW9uYXInLFxuICAgIGRlbGV0ZWQ6ICdNZW5zYWplIGVsaW1pbmFkbycsXG4gICAgZWRpdGVkOiAnZWRpdGFkbycsXG4gIH0sXG4gIGVuOiB7XG4gICAgcmVwbHk6ICdSZXBseScsXG4gICAgZWRpdDogJ0VkaXQnLFxuICAgIGRlbGV0ZTogJ0RlbGV0ZScsXG4gICAgcmVhY3Q6ICdSZWFjdCcsXG4gICAgZGVsZXRlZDogJ01lc3NhZ2UgZGVsZXRlZCcsXG4gICAgZWRpdGVkOiAnZWRpdGVkJyxcbiAgfSxcbn07XG5cbi8qKiBBY2Npw7NuIGRpc3BhcmFkYSBkZXNkZSB1bmEgYnVyYnVqYS4gVW4gc29sbyBvdXRwdXQgdGlwYWRvIGVuIHZleiBkZSA0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlQnViYmxlQWN0aW9uIHtcbiAgdHlwZTogJ3JlcGx5JyB8ICdlZGl0JyB8ICdkZWxldGUnIHwgJ3JlYWN0JztcbiAgbXNnSWQ6IHN0cmluZztcbiAgLyoqIFRva2VuIGRlbCBlbW9qaSwgc29sbyBwYXJhIHR5cGUgJ3JlYWN0Jy4gKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogdmFsLW1lc3NhZ2UtYnViYmxlIOKAlCBidXJidWphIGRlIG1lbnNhamUgcHJlc2VudGFjaW9uYWwgKHNpZ25hbCBpbnB1dHMpLlxuICpcbiAqIFNpbiBsw7NnaWNhIGRlIG5lZ29jaW86IGVsIGNvbnRlbmVkb3IgKGB2YWwtY2hhdC13aW5kb3dgKSBkZWNpZGUgYWdydXBhY2nDs24geVxuICogcGFzYSBmbGFncyAoc2hvd0F2YXRhci9zaG93TmFtZS90YWlsKS4gTGFzIGFjY2lvbmVzIChyZXNwb25kZXIvZWRpdGFyL2JvcnJhci9cbiAqIHJlYWNjaW9uYXIpIE5PIGVzdMOhbiBzaWVtcHJlIHZpc2libGVzOiBzZSByZXZlbGFuIGVuIGhvdmVyIChkZXNrdG9wKSBvIGFsIHRvY2FyXG4gKiBsYSBidXJidWphIChtw7N2aWwpLCB5IHNlIGVtaXRlbiBwb3IgdW4gw7puaWNvIGAoYWN0aW9uKWAgdGlwYWRvLlxuICpcbiAqIFJlYWQgcmVjZWlwdHMgZXN0aWxvIFdoYXRzQXBwOiBzZW5kaW5nIOKGkiByZWxvaiwgc2VudCDihpIg4pyTLCBkZWxpdmVyZWQvcmVhZCDihpIg4pyT4pyTXG4gKiAocmVhZCBlbiBjb2xvciksIGZhaWxlZCDihpIgYWxlcnRhLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbWVzc2FnZS1idWJibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgW2NsYXNzLm1pbmVdPVwibXNnKCkuaXNNaW5lXCIgW2NsYXNzLnRhaWxdPVwidGFpbCgpXCIgW2NsYXNzLndpdGgtYXZhdGFyXT1cInNob3dBdmF0YXIoKVwiPlxuICAgICAgQGlmIChzaG93QXZhdGFyKCkgJiYgIW1zZygpLmlzTWluZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCIgW2NsYXNzLmhpZGRlbl09XCIhdGFpbCgpXCI+XG4gICAgICAgICAgQGlmIChtc2coKS5zZW5kZXJBdmF0YXIpIHtcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJtc2coKS5zZW5kZXJBdmF0YXJcIiBbYWx0XT1cIm1zZygpLnNlbmRlck5hbWVcIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4+e3sgaW5pdGlhbHMoKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYnViYmxlLXdyYXBcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYnViYmxlXCJcbiAgICAgICAgICBbY2xhc3MuZGVsZXRlZF09XCJtc2coKS5pc0RlbGV0ZWRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKHNob3dOYW1lKCkgJiYgIW1zZygpLmlzTWluZSAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWVcIj57eyBtc2coKS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAobXNnKCkucmVwbHlUbyAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwbHktcHJldmlld1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LW5hbWVcIj57eyBtc2coKS5yZXBseVRvIS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LWJvZHlcIj57eyBtc2coKS5yZXBseVRvIS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9keSBkZWxldGVkLXRleHRcIj57eyB0KCdkZWxldGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKGltYWdlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50c1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBpbWFnZUF0dGFjaG1lbnRzKCk7IHRyYWNrIGF0dC51cmwpIHtcbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhdHQtaW1hZ2VcIiBbc3JjXT1cImF0dC51cmxcIiBbYWx0XT1cImF0dC5uYW1lXCIgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChmaWxlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBmaWxlQXR0YWNobWVudHMoKTsgdHJhY2sgYXR0LnVybCkge1xuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmaWxlLWNoaXBcIiBbaHJlZl09XCJhdHQudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYXR0Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAobXNnKCkuYm9keSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvZHlcIj57eyBtc2coKS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YVwiPlxuICAgICAgICAgICAgQGlmIChtc2coKS5pc0VkaXRlZCAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWRpdGVkXCI+e3sgdCgnZWRpdGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVcIj57eyB0aW1lKCkgfX08L3NwYW4+XG4gICAgICAgICAgICBAaWYgKG1zZygpLmlzTWluZSAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RhdHVzXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucmVhZF09XCJtc2coKS5zdGF0dXMgPT09ICdyZWFkJ1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZhaWxlZF09XCJtc2coKS5zdGF0dXMgPT09ICdmYWlsZWQnXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzdGF0dXNJY29uKClcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKG1zZygpLnJlYWN0aW9ucyAmJiBtc2coKS5yZWFjdGlvbnMhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhY3Rpb25zXCI+XG4gICAgICAgICAgICBAZm9yIChyIG9mIG1zZygpLnJlYWN0aW9ucyE7IHRyYWNrIHIudG9rZW4pIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlYWN0aW9uXCIgW2NsYXNzLmFjdGl2ZV09XCJyLmFjdGl2ZVwiIChjbGljayk9XCJlbWl0KCdyZWFjdCcsIHIudG9rZW4pXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgci50b2tlbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50XCI+e3sgci5jb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCFtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiIFtjbGFzcy5vcGVuXT1cImFjdGlvbnNPcGVuKClcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlYWN0JylcIiAoY2xpY2spPVwiZW1pdCgncmVhY3QnLCAn8J+RjScpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiaGFwcHktb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlcGx5JylcIiAoY2xpY2spPVwiZW1pdCgncmVwbHknKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFycm93LXVuZG8tb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIEBpZiAobXNnKCkuaXNNaW5lKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2VkaXQnKVwiIChjbGljayk9XCJlbWl0KCdlZGl0JylcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNyZWF0ZS1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3QgZGFuZ2VyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdkZWxldGUnKVwiIChjbGljayk9XCJlbWl0KCdkZWxldGUnKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW46IDFweCAwO1xuICAgICAgfVxuICAgICAgLnJvdy5taW5lIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgICAgfVxuICAgICAgLnJvdy50YWlsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgfVxuICAgICAgLmF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cbiAgICAgIC5hdmF0YXIuaGlkZGVuIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgfVxuICAgICAgLmF2YXRhciBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIH1cbiAgICAgIC5idWJibGUtd3JhcCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oNzglLCA1MjBweCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG4gICAgICAucm93Lm1pbmUgLmJ1YmJsZS13cmFwIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgfVxuICAgICAgLmJ1YmJsZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZzogN3B4IDExcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICAgIH1cbiAgICAgIC5yb3c6bm90KC5taW5lKS50YWlsIC5idWJibGUge1xuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7XG4gICAgICB9XG4gICAgICAubWluZSAuYnViYmxlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgIH1cbiAgICAgIC5taW5lLnRhaWwgLmJ1YmJsZSB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7XG4gICAgICB9XG4gICAgICAuYnViYmxlLmRlbGV0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgIH1cbiAgICAgIC5uYW1lIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgICAgfVxuICAgICAgLnJlcGx5LXByZXZpZXcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDFweDtcbiAgICAgICAgcGFkZGluZzogNHB4IDhweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xMikpO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgb3BhY2l0eTogMC44NTtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1ib2R5IHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIG1heC13aWR0aDogMjQwcHg7XG4gICAgICB9XG4gICAgICAuYm9keSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgIH1cbiAgICAgIC5kZWxldGVkLXRleHQge1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgIH1cbiAgICAgIC5hdHRhY2htZW50cyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuYXR0LWltYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5maWxlcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuZmlsZS1jaGlwIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBwYWRkaW5nOiA2cHggMTBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xMikpO1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgIH1cbiAgICAgIC5tZXRhIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIG1hcmdpbjogMnB4IDAgLTJweCA4cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42ODc1cmVtO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICB9XG4gICAgICAuZWRpdGVkIHtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgfVxuICAgICAgLnN0YXR1cyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICB9XG4gICAgICAuc3RhdHVzLnJlYWQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXNlY29uZGFyeSwgIzRmYzNmNyk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgICAuc3RhdHVzLmZhaWxlZCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyLCAjZWI0NDVhKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICAgIC5yZWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAzcHg7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAzcHg7XG4gICAgICAgIHBhZGRpbmc6IDFweCA3cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC5yZWFjdGlvbi5hY3RpdmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXByaW1hcnktdGludCwgdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgIH1cbiAgICAgIC5yZWFjdGlvbiAuY291bnQge1xuICAgICAgICBvcGFjaXR5OiAwLjc1O1xuICAgICAgfVxuICAgICAgLmFjdGlvbnMge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTE0cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgICBwYWRkaW5nOiAycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xMnMgZWFzZTtcbiAgICAgICAgei1pbmRleDogMjtcbiAgICAgIH1cbiAgICAgIC5yb3cubWluZSAuYWN0aW9ucyB7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgfVxuICAgICAgLnJvdzpub3QoLm1pbmUpIC5hY3Rpb25zIHtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgIH1cbiAgICAgIC5idWJibGUtd3JhcDpob3ZlciAuYWN0aW9ucyxcbiAgICAgIC5hY3Rpb25zLm9wZW4ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAgIH1cbiAgICAgIC5hY3Qge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgIH1cbiAgICAgIC5hY3Q6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xMikpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgfVxuICAgICAgLmFjdC5kYW5nZXI6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUJ1YmJsZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgbXNnID0gaW5wdXQucmVxdWlyZWQ8TWVzc2FnZUJ1YmJsZU1ldGFkYXRhPigpO1xuICByZWFkb25seSBzaG93QXZhdGFyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaG93TmFtZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgdGFpbCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBsb2NhbGUgPSBpbnB1dDxzdHJpbmc+KCdlcy1DTCcpO1xuXG4gIHJlYWRvbmx5IGFjdGlvbiA9IG91dHB1dDxNZXNzYWdlQnViYmxlQWN0aW9uPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBhY3Rpb25zT3BlbiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ01lc3NhZ2VCdWJibGUnLCBNRVNTQUdFX0JVQkJMRV9JMThOKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSB0aW1lID0gY29tcHV0ZWQoKCkgPT4gZm9ybWF0Q2xvY2tUaW1lKHRoaXMubXNnKCkuY3JlYXRlZEF0LCB0aGlzLmxvY2FsZSgpKSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGluaXRpYWxzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLm1zZygpLnNlbmRlck5hbWU/LnRyaW0oKSA/PyAnJztcbiAgICBpZiAoIW5hbWUpIHJldHVybiAnPyc7XG4gICAgY29uc3QgcGFydHMgPSBuYW1lLnNwbGl0KC9cXHMrLyk7XG4gICAgcmV0dXJuIChwYXJ0c1swXVswXSArIChwYXJ0c1sxXT8uWzBdID8/ICcnKSkudG9VcHBlckNhc2UoKTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGltYWdlQXR0YWNobWVudHMgPSBjb21wdXRlZCgoKSA9PlxuICAgICh0aGlzLm1zZygpLmF0dGFjaG1lbnRzID8/IFtdKS5maWx0ZXIoYSA9PiBhLm1pbWVUeXBlPy5zdGFydHNXaXRoKCdpbWFnZS8nKSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsZUF0dGFjaG1lbnRzID0gY29tcHV0ZWQoKCkgPT5cbiAgICAodGhpcy5tc2coKS5hdHRhY2htZW50cyA/PyBbXSkuZmlsdGVyKGEgPT4gIWEubWltZVR5cGU/LnN0YXJ0c1dpdGgoJ2ltYWdlLycpKVxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzdGF0dXNJY29uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHN3aXRjaCAodGhpcy5tc2coKS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgJ3NlbmRpbmcnOlxuICAgICAgICByZXR1cm4gJ3RpbWUtb3V0bGluZSc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gJ2FsZXJ0LWNpcmNsZSc7XG4gICAgICBjYXNlICdkZWxpdmVyZWQnOlxuICAgICAgY2FzZSAncmVhZCc6XG4gICAgICAgIHJldHVybiAnY2hlY2ttYXJrLWRvbmUnO1xuICAgICAgY2FzZSAnc2VudCc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2NoZWNrbWFyayc7XG4gICAgfVxuICB9KTtcblxuICBwcm90ZWN0ZWQgdG9nZ2xlQWN0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tc2coKS5pc0RlbGV0ZWQpIHJldHVybjtcbiAgICB0aGlzLmFjdGlvbnNPcGVuLnVwZGF0ZSh2ID0+ICF2KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0KHR5cGU6IE1lc3NhZ2VCdWJibGVBY3Rpb25bJ3R5cGUnXSwgdG9rZW4/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGlvbnNPcGVuLnNldChmYWxzZSk7XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh7IHR5cGUsIG1zZ0lkOiB0aGlzLm1zZygpLm1zZ0lkLCB0b2tlbiB9KTtcbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdNZXNzYWdlQnViYmxlJyk7XG4gIH1cbn1cbiJdfQ==
327
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idWJibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9tZXNzYWdlLWJ1YmJsZS9tZXNzYWdlLWJ1YmJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGVBQWUsRUFDZixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxZQUFZLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUdqRSxRQUFRLENBQUM7SUFDUCxXQUFXO0lBQ1gsU0FBUztJQUNULGFBQWE7SUFDYixhQUFhO0lBQ2IsZUFBZTtJQUNmLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLFlBQVk7Q0FDYixDQUFDLENBQUM7QUFFSCxNQUFNLG1CQUFtQixHQUFHO0lBQzFCLEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxXQUFXO1FBQ2xCLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFLFVBQVU7UUFDbEIsS0FBSyxFQUFFLFlBQVk7UUFDbkIsT0FBTyxFQUFFLG1CQUFtQjtRQUM1QixN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QW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStHVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBhbGVydENpcmNsZSxcbiAgY2hlY2ttYXJrLFxuICBjaGVja21hcmtEb25lLFxuICBjcmVhdGVPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG4gIGhhcHB5T3V0bGluZSxcbiAgYXJyb3dVbmRvT3V0bGluZSxcbiAgdGltZU91dGxpbmUsXG4gIHRyYXNoT3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgZm9ybWF0Q2xvY2tUaW1lIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL2RhdGV0aW1lJztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGFsZXJ0Q2lyY2xlLFxuICBjaGVja21hcmssXG4gIGNoZWNrbWFya0RvbmUsXG4gIGNyZWF0ZU91dGxpbmUsXG4gIGRvY3VtZW50T3V0bGluZSxcbiAgaGFwcHlPdXRsaW5lLFxuICBhcnJvd1VuZG9PdXRsaW5lLFxuICB0aW1lT3V0bGluZSxcbiAgdHJhc2hPdXRsaW5lLFxufSk7XG5cbmNvbnN0IE1FU1NBR0VfQlVCQkxFX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgcmVwbHk6ICdSZXNwb25kZXInLFxuICAgIGVkaXQ6ICdFZGl0YXInLFxuICAgIGRlbGV0ZTogJ0VsaW1pbmFyJyxcbiAgICByZWFjdDogJ1JlYWNjaW9uYXInLFxuICAgIGRlbGV0ZWQ6ICdNZW5zYWplIGVsaW1pbmFkbycsXG4gICAgZWRpdGVkOiAnZWRpdGFkbycsXG4gIH0sXG4gIGVuOiB7XG4gICAgcmVwbHk6ICdSZXBseScsXG4gICAgZWRpdDogJ0VkaXQnLFxuICAgIGRlbGV0ZTogJ0RlbGV0ZScsXG4gICAgcmVhY3Q6ICdSZWFjdCcsXG4gICAgZGVsZXRlZDogJ01lc3NhZ2UgZGVsZXRlZCcsXG4gICAgZWRpdGVkOiAnZWRpdGVkJyxcbiAgfSxcbn07XG5cbi8qKiBBY2Npw7NuIGRpc3BhcmFkYSBkZXNkZSB1bmEgYnVyYnVqYS4gVW4gc29sbyBvdXRwdXQgdGlwYWRvIGVuIHZleiBkZSA0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlQnViYmxlQWN0aW9uIHtcbiAgdHlwZTogJ3JlcGx5JyB8ICdlZGl0JyB8ICdkZWxldGUnIHwgJ3JlYWN0JztcbiAgbXNnSWQ6IHN0cmluZztcbiAgLyoqIFRva2VuIGRlbCBlbW9qaSwgc29sbyBwYXJhIHR5cGUgJ3JlYWN0Jy4gKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogdmFsLW1lc3NhZ2UtYnViYmxlIOKAlCBidXJidWphIGRlIG1lbnNhamUgcHJlc2VudGFjaW9uYWwgKHNpZ25hbCBpbnB1dHMpLlxuICpcbiAqIFNpbiBsw7NnaWNhIGRlIG5lZ29jaW86IGVsIGNvbnRlbmVkb3IgKGB2YWwtY2hhdC13aW5kb3dgKSBkZWNpZGUgYWdydXBhY2nDs24geVxuICogcGFzYSBmbGFncyAoc2hvd0F2YXRhci9zaG93TmFtZS90YWlsKS4gTGFzIGFjY2lvbmVzIChyZXNwb25kZXIvZWRpdGFyL2JvcnJhci9cbiAqIHJlYWNjaW9uYXIpIE5PIGVzdMOhbiBzaWVtcHJlIHZpc2libGVzOiBzZSByZXZlbGFuIGVuIGhvdmVyIChkZXNrdG9wKSBvIGFsIHRvY2FyXG4gKiBsYSBidXJidWphIChtw7N2aWwpLCB5IHNlIGVtaXRlbiBwb3IgdW4gw7puaWNvIGAoYWN0aW9uKWAgdGlwYWRvLlxuICpcbiAqIFJlYWQgcmVjZWlwdHMgZXN0aWxvIFdoYXRzQXBwOiBzZW5kaW5nIOKGkiByZWxvaiwgc2VudCDihpIg4pyTLCBkZWxpdmVyZWQvcmVhZCDihpIg4pyT4pyTXG4gKiAocmVhZCBlbiBjb2xvciksIGZhaWxlZCDihpIgYWxlcnRhLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbWVzc2FnZS1idWJibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgW2NsYXNzLm1pbmVdPVwibXNnKCkuaXNNaW5lXCIgW2NsYXNzLnRhaWxdPVwidGFpbCgpXCIgW2NsYXNzLndpdGgtYXZhdGFyXT1cInNob3dBdmF0YXIoKVwiPlxuICAgICAgQGlmIChzaG93QXZhdGFyKCkgJiYgIW1zZygpLmlzTWluZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCIgW2NsYXNzLmhpZGRlbl09XCIhdGFpbCgpXCI+XG4gICAgICAgICAgQGlmIChtc2coKS5zZW5kZXJBdmF0YXIpIHtcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJtc2coKS5zZW5kZXJBdmF0YXJcIiBbYWx0XT1cIm1zZygpLnNlbmRlck5hbWVcIiAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4+e3sgaW5pdGlhbHMoKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYnViYmxlLXdyYXBcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYnViYmxlXCJcbiAgICAgICAgICBbY2xhc3MuZGVsZXRlZF09XCJtc2coKS5pc0RlbGV0ZWRcIlxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVBY3Rpb25zKClcIlxuICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKHNob3dOYW1lKCkgJiYgIW1zZygpLmlzTWluZSAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWVcIj57eyBtc2coKS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAobXNnKCkucmVwbHlUbyAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVwbHktcHJldmlld1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LW5hbWVcIj57eyBtc2coKS5yZXBseVRvIS5zZW5kZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcGx5LWJvZHlcIj57eyBtc2coKS5yZXBseVRvIS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9keSBkZWxldGVkLXRleHRcIj57eyB0KCdkZWxldGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKGltYWdlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50c1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBpbWFnZUF0dGFjaG1lbnRzKCk7IHRyYWNrIGF0dC51cmwpIHtcbiAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhdHQtaW1hZ2VcIiBbc3JjXT1cImF0dC51cmxcIiBbYWx0XT1cImF0dC5uYW1lXCIgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChhdWRpb0F0dGFjaG1lbnRzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXVkaW9zXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoYXR0IG9mIGF1ZGlvQXR0YWNobWVudHMoKTsgdHJhY2sgYXR0LnVybCkge1xuICAgICAgICAgICAgICAgICAgPGF1ZGlvIGNsYXNzPVwiYXR0LWF1ZGlvXCIgY29udHJvbHMgcHJlbG9hZD1cIm1ldGFkYXRhXCIgW3NyY109XCJhdHQudXJsXCI+PC9hdWRpbz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChmaWxlQXR0YWNobWVudHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGF0dCBvZiBmaWxlQXR0YWNobWVudHMoKTsgdHJhY2sgYXR0LnVybCkge1xuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmaWxlLWNoaXBcIiBbaHJlZl09XCJhdHQudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYXR0Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAobXNnKCkuYm9keSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvZHlcIj57eyBtc2coKS5ib2R5IH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWV0YVwiPlxuICAgICAgICAgICAgQGlmIChtc2coKS5pc0VkaXRlZCAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWRpdGVkXCI+e3sgdCgnZWRpdGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVcIj57eyB0aW1lKCkgfX08L3NwYW4+XG4gICAgICAgICAgICBAaWYgKG1zZygpLmlzTWluZSAmJiAhbXNnKCkuaXNEZWxldGVkKSB7XG4gICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RhdHVzXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucmVhZF09XCJtc2coKS5zdGF0dXMgPT09ICdyZWFkJ1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZhaWxlZF09XCJtc2coKS5zdGF0dXMgPT09ICdmYWlsZWQnXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzdGF0dXNJY29uKClcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKG1zZygpLnJlYWN0aW9ucyAmJiBtc2coKS5yZWFjdGlvbnMhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhY3Rpb25zXCI+XG4gICAgICAgICAgICBAZm9yIChyIG9mIG1zZygpLnJlYWN0aW9ucyE7IHRyYWNrIHIudG9rZW4pIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlYWN0aW9uXCIgW2NsYXNzLmFjdGl2ZV09XCJyLmFjdGl2ZVwiIChjbGljayk9XCJlbWl0KCdyZWFjdCcsIHIudG9rZW4pXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgci50b2tlbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50XCI+e3sgci5jb3VudCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCFtc2coKS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiIFtjbGFzcy5vcGVuXT1cImFjdGlvbnNPcGVuKClcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlYWN0JylcIiAoY2xpY2spPVwiZW1pdCgncmVhY3QnLCAn8J+RjScpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiaGFwcHktb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ3JlcGx5JylcIiAoY2xpY2spPVwiZW1pdCgncmVwbHknKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFycm93LXVuZG8tb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIEBpZiAobXNnKCkuaXNNaW5lKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInQoJ2VkaXQnKVwiIChjbGljayk9XCJlbWl0KCdlZGl0JylcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNyZWF0ZS1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3QgZGFuZ2VyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdkZWxldGUnKVwiIChjbGljayk9XCJlbWl0KCdkZWxldGUnKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW46IDFweCAwO1xuICAgICAgfVxuICAgICAgLnJvdy5taW5lIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgICAgfVxuICAgICAgLnJvdy50YWlsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgfVxuICAgICAgLmF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cbiAgICAgIC5hdmF0YXIuaGlkZGVuIHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgfVxuICAgICAgLmF2YXRhciBpbWcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIH1cbiAgICAgIC5idWJibGUtd3JhcCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWF4LXdpZHRoOiBtaW4oNzglLCA1MjBweCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG4gICAgICAucm93Lm1pbmUgLmJ1YmJsZS13cmFwIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgfVxuICAgICAgLmJ1YmJsZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZzogN3B4IDExcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICAgIH1cbiAgICAgIC5yb3c6bm90KC5taW5lKS50YWlsIC5idWJibGUge1xuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7XG4gICAgICB9XG4gICAgICAubWluZSAuYnViYmxlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LWNvbnRyYXN0LCAjZmZmKTtcbiAgICAgIH1cbiAgICAgIC5taW5lLnRhaWwgLmJ1YmJsZSB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7XG4gICAgICB9XG4gICAgICAuYnViYmxlLmRlbGV0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgIH1cbiAgICAgIC5uYW1lIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgICAgfVxuICAgICAgLnJlcGx5LXByZXZpZXcge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDFweDtcbiAgICAgICAgcGFkZGluZzogNHB4IDhweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc3RlcC0xMDAsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4xMikpO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgb3BhY2l0eTogMC44NTtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cbiAgICAgIC5yZXBseS1ib2R5IHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIG1heC13aWR0aDogMjQwcHg7XG4gICAgICB9XG4gICAgICAuYm9keSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgIH1cbiAgICAgIC5kZWxldGVkLXRleHQge1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgIH1cbiAgICAgIC5hdHRhY2htZW50cyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuYXR0LWltYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIC5hdWRpb3Mge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuICAgICAgLmF0dC1hdWRpbyB7XG4gICAgICAgIHdpZHRoOiAyNDBweDtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICB9XG4gICAgICAuZmlsZXMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuICAgICAgLmZpbGUtY2hpcCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgcGFkZGluZzogNnB4IDEwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMTIpKTtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICB9XG4gICAgICAubWV0YSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBtYXJnaW46IDJweCAwIC0ycHggOHB4O1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgfVxuICAgICAgLmVkaXRlZCB7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIH1cbiAgICAgIC5zdGF0dXMge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgfVxuICAgICAgLnN0YXR1cy5yZWFkIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnksICM0ZmMzZjcpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgICAgLnN0YXR1cy5mYWlsZWQge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2ViNDQ1YSk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgbWFyZ2luLXRvcDogM3B4O1xuICAgICAgfVxuICAgICAgLnJlYWN0aW9uIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogM3B4O1xuICAgICAgICBwYWRkaW5nOiAxcHggN3B4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tdGV4dC1jb2xvciwgIzAwMCk7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb24uYWN0aXZlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXRpbnQsIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS1jb250cmFzdCwgI2ZmZik7XG4gICAgICB9XG4gICAgICAucmVhY3Rpb24gLmNvdW50IHtcbiAgICAgICAgb3BhY2l0eTogMC43NTtcbiAgICAgIH1cbiAgICAgIC5hY3Rpb25zIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0xNHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgICAgcGFkZGluZzogMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taW9uLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTJzIGVhc2U7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgICB9XG4gICAgICAucm93Lm1pbmUgLmFjdGlvbnMge1xuICAgICAgICByaWdodDogMDtcbiAgICAgIH1cbiAgICAgIC5yb3c6bm90KC5taW5lKSAuYWN0aW9ucyB7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICB9XG4gICAgICAuYnViYmxlLXdyYXA6aG92ZXIgLmFjdGlvbnMsXG4gICAgICAuYWN0aW9ucy5vcGVuIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgICB9XG4gICAgICAuYWN0IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG4gICAgICAuYWN0OmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXN0ZXAtMTAwLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMTIpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi10ZXh0LWNvbG9yLCAjMDAwKTtcbiAgICAgIH1cbiAgICAgIC5hY3QuZGFuZ2VyOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNlYjQ0NWEpO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VCdWJibGVDb21wb25lbnQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IG1zZyA9IGlucHV0LnJlcXVpcmVkPE1lc3NhZ2VCdWJibGVNZXRhZGF0YT4oKTtcbiAgcmVhZG9ubHkgc2hvd0F2YXRhciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd05hbWUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHRhaWwgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgbG9jYWxlID0gaW5wdXQ8c3RyaW5nPignZXMtQ0wnKTtcblxuICByZWFkb25seSBhY3Rpb24gPSBvdXRwdXQ8TWVzc2FnZUJ1YmJsZUFjdGlvbj4oKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aW9uc09wZW4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKCdNZXNzYWdlQnViYmxlJywgTUVTU0FHRV9CVUJCTEVfSTE4Tik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGltZSA9IGNvbXB1dGVkKCgpID0+IGZvcm1hdENsb2NrVGltZSh0aGlzLm1zZygpLmNyZWF0ZWRBdCwgdGhpcy5sb2NhbGUoKSkpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpbml0aWFscyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5tc2coKS5zZW5kZXJOYW1lPy50cmltKCkgPz8gJyc7XG4gICAgaWYgKCFuYW1lKSByZXR1cm4gJz8nO1xuICAgIGNvbnN0IHBhcnRzID0gbmFtZS5zcGxpdCgvXFxzKy8pO1xuICAgIHJldHVybiAocGFydHNbMF1bMF0gKyAocGFydHNbMV0/LlswXSA/PyAnJykpLnRvVXBwZXJDYXNlKCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpbWFnZUF0dGFjaG1lbnRzID0gY29tcHV0ZWQoKCkgPT5cbiAgICAodGhpcy5tc2coKS5hdHRhY2htZW50cyA/PyBbXSkuZmlsdGVyKGEgPT4gYS5taW1lVHlwZT8uc3RhcnRzV2l0aCgnaW1hZ2UvJykpXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGF1ZGlvQXR0YWNobWVudHMgPSBjb21wdXRlZCgoKSA9PlxuICAgICh0aGlzLm1zZygpLmF0dGFjaG1lbnRzID8/IFtdKS5maWx0ZXIoYSA9PiBhLm1pbWVUeXBlPy5zdGFydHNXaXRoKCdhdWRpby8nKSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsZUF0dGFjaG1lbnRzID0gY29tcHV0ZWQoKCkgPT5cbiAgICAodGhpcy5tc2coKS5hdHRhY2htZW50cyA/PyBbXSkuZmlsdGVyKGEgPT4gIWEubWltZVR5cGU/LnN0YXJ0c1dpdGgoJ2ltYWdlLycpICYmICFhLm1pbWVUeXBlPy5zdGFydHNXaXRoKCdhdWRpby8nKSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RhdHVzSWNvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBzd2l0Y2ggKHRoaXMubXNnKCkuc3RhdHVzKSB7XG4gICAgICBjYXNlICdzZW5kaW5nJzpcbiAgICAgICAgcmV0dXJuICd0aW1lLW91dGxpbmUnO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuICdhbGVydC1jaXJjbGUnO1xuICAgICAgY2FzZSAnZGVsaXZlcmVkJzpcbiAgICAgIGNhc2UgJ3JlYWQnOlxuICAgICAgICByZXR1cm4gJ2NoZWNrbWFyay1kb25lJztcbiAgICAgIGNhc2UgJ3NlbnQnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdjaGVja21hcmsnO1xuICAgIH1cbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZUFjdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXNnKCkuaXNEZWxldGVkKSByZXR1cm47XG4gICAgdGhpcy5hY3Rpb25zT3Blbi51cGRhdGUodiA9PiAhdik7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdCh0eXBlOiBNZXNzYWdlQnViYmxlQWN0aW9uWyd0eXBlJ10sIHRva2VuPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb25zT3Blbi5zZXQoZmFsc2UpO1xuICAgIHRoaXMuYWN0aW9uLmVtaXQoeyB0eXBlLCBtc2dJZDogdGhpcy5tc2coKS5tc2dJZCwgdG9rZW4gfSk7XG4gIH1cblxuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnTWVzc2FnZUJ1YmJsZScpO1xuICB9XG59XG4iXX0=
@@ -122,10 +122,21 @@ export class ConversationService {
122
122
  return this.http.delete(`${this.baseUrl}/conversations/${convId}/participants/${userId}`);
123
123
  }
124
124
  /**
125
- * Envia un mensaje a una conversacion.
125
+ * Envia un mensaje a una conversacion, opcionalmente con adjuntos.
126
+ * El backend espera `attachments: { url, type, name, size }[]` (key `type` = MIME),
127
+ * mientras que el front usa `mimeType` — se mapea aqui.
126
128
  */
127
- sendMessage(convId, body) {
128
- return this.http.post(`${this.baseUrl}/conversations/${convId}/messages`, { body });
129
+ sendMessage(convId, body, attachments) {
130
+ const payload = { body };
131
+ if (attachments?.length) {
132
+ payload['attachments'] = attachments.map(a => ({
133
+ url: a.url,
134
+ type: a.mimeType,
135
+ name: a.name,
136
+ size: a.size ?? 0,
137
+ }));
138
+ }
139
+ return this.http.post(`${this.baseUrl}/conversations/${convId}/messages`, payload);
129
140
  }
130
141
  /**
131
142
  * Elimina (marca como eliminado) un mensaje.
@@ -283,4 +294,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
283
294
  type: Injectable,
284
295
  args: [{ providedIn: 'root' }]
285
296
  }], ctorParameters: () => [] });
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2NoYXQvY29udmVyc2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXBELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQVcvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFakU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBTTlCO1FBTFEsV0FBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEUsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUd4RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1lB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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNlcnZlclRpbWVzdGFtcCwgZGVsZXRlRG9jLCBkb2MsIHNldERvYywgdXBkYXRlRG9jIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9maXJlc3RvcmUnO1xuaW1wb3J0IHsgRmlyZXN0b3JlIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9maXJlc3RvcmUnO1xuXG5pbXBvcnQgeyBWQUxURUNIX0NIQVRfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtcbiAgQ29udmVyc2F0aW9uLFxuICBDb252ZXJzYXRpb25SZXNwb25zZSxcbiAgQ29udmVyc2F0aW9uVHlwZSxcbiAgQ3JlYXRlQ29udmVyc2F0aW9uUmVxdWVzdCxcbiAgTGlzdENvbnZlcnNhdGlvbnNSZXNwb25zZSxcbiAgTWVzc2FnZSxcbiAgVXBkYXRlQ29udmVyc2F0aW9uUmVxdWVzdCxcbiAgVHlwaW5nRG9jdW1lbnQsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgRmlyZXN0b3JlU2VydmljZSB9IGZyb20gJy4uL2ZpcmViYXNlL2ZpcmVzdG9yZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBDb252ZXJzYXRpb25TZXJ2aWNlXG4gKlxuICogR2VzdGlvbmEgY29udmVyc2FjaW9uZXMgeSBtZW5zYWplcyBkZWwgY2hhdC5cbiAqXG4gKiBEb3MgY2FwYXM6XG4gKiAgIC0gSFRUUCAodmlhIGJhY2tlbmQgL3YyL2NoYXQvKik6IG9wZXJhY2lvbmVzIGRlIGVzY3JpdHVyYSB5IGNvbnN1bHRhLlxuICogICAtIEZpcmVzdG9yZSByZWFsLXRpbWUgKGRpcmVjdGEpOiBlc2N1Y2hhIG1lbnNhamVzIHkgZXN0YWRvIGRlIGVzY3JpdHVyYS5cbiAqXG4gKiBQYXRocyBGaXJlc3RvcmU6XG4gKiAgIC9hcHBzL3thcHBJZH0vb3Jncy97b3JnSWR9L2NvbnZlcnNhdGlvbnMve2NvbnZJZH0vbWVzc2FnZXMve21zZ0lkfVxuICogICAvYXBwcy97YXBwSWR9L29yZ3Mve29yZ0lkfS9jb252ZXJzYXRpb25zL3tjb252SWR9L3R5cGluZy97dXNlcklkfVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFbnZpYXIgeSBlc2N1Y2hhciBtZW5zYWplc1xuICogY29uc3Qgc3ZjID0gaW5qZWN0KENvbnZlcnNhdGlvblNlcnZpY2UpO1xuICpcbiAqIC8vIEVudmlhciAoSFRUUClcbiAqIHN2Yy5zZW5kTWVzc2FnZShjb252SWQsICdIb2xhIScpLnN1YnNjcmliZSgpO1xuICpcbiAqIC8vIEVzY3VjaGFyIGVuIHRpZW1wbyByZWFsIChGaXJlc3RvcmUpXG4gKiBzdmMud2F0Y2hNZXNzYWdlcyhjb252SWQsIG9yZ0lkLCBhcHBJZCkuc3Vic2NyaWJlKG1zZ3MgPT4gdGhpcy5tZXNzYWdlcy5zZXQobXNncykpO1xuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENvbnZlcnNhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChWQUxURUNIX0NIQVRfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHByaXZhdGUgZmlyZXN0b3JlU2VydmljZSA9IGluamVjdChGaXJlc3RvcmVTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIGZpcmVzdG9yZSA9IGluamVjdChGaXJlc3RvcmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZyAmJiBpc0Rldk1vZGUoKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnW3ZhbHRlY2gtY29tcG9uZW50c10gQ29udmVyc2F0aW9uU2VydmljZTogcHJvdmlkZVZhbHRlY2hDaGF0KCkgbm8gZXN0YSBlbiBtYWluLnRzLiAnICtcbiAgICAgICAgICAnRWwgY2hhdCBubyBmdW5jaW9uYXJhLidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEhUVFAg4oCUIG9wZXJhY2lvbmVzIGRlIGVzY3JpdHVyYSB5IGNvbnN1bHRhIGFsIGJhY2tlbmRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgcHJpdmF0ZSBnZXQgYmFzZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmNvbmZpZz8uYXBpVXJsfSR7dGhpcy5jb25maWc/LmNoYXRQcmVmaXggPz8gJy92Mi9jaGF0J31gO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWEgdW5hIG51ZXZhIGNvbnZlcnNhY2lvbi5cbiAgICogRWwgYmFja2VuZCByZXNwb25kZSBjb24gdW4gZW52ZWxvcGUgeyBvcGVyYXRpb25JZCwgY29udmVyc2F0aW9uIH0g4oCUIGxvXG4gICAqIGRlc2Vudm9sdmVtb3MgcGFyYSBkZXZvbHZlciBsYSBDb252ZXJzYXRpb24gZGlyZWN0YS5cbiAgICovXG4gIGNyZWF0ZUNvbnZlcnNhdGlvbihyZXE6IENyZWF0ZUNvbnZlcnNhdGlvblJlcXVlc3QpOiBPYnNlcnZhYmxlPENvbnZlcnNhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PENvbnZlcnNhdGlvblJlc3BvbnNlPihgJHt0aGlzLmJhc2VVcmx9L2NvbnZlcnNhdGlvbnNgLCByZXEpXG4gICAgICAucGlwZShtYXAociA9PiByLmNvbnZlcnNhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbyBjcmVhIHVuYSBjb252ZXJzYWNpb24gYXNvY2lhZGEgYSB1bmEgZW50aWRhZCAocG9zdCwgcmVxdWVzdCwgb3JnLCBldGMuKS5cbiAgICogVXNhIGVsIHBhdHJvbiB1cHNlcnQgZGVsIGJhY2tlbmQ6IHNpIHlhIGV4aXN0ZSB1bmEgY29udmVyc2FjaW9uIHBhcmEgZXNhIGVudGlkYWQsXG4gICAqIGxhIGRldnVlbHZlOyBzaSBubywgbGEgY3JlYS5cbiAgICpcbiAgICogRWwgYmFja2VuZCBlc3BlcmEgeyBlbnRpdHlSZWY6IHsgdHlwZSwgaWQgfSwgdHlwZSB9IHkgcmVzcG9uZGUgY29uIHVuIGVudmVsb3BlXG4gICAqIHsgb3BlcmF0aW9uSWQsIGNvbnZlcnNhdGlvbiwgY3JlYXRlZCB9LlxuICAgKi9cbiAgZ2V0T3JDcmVhdGVGb3JFbnRpdHkoXG4gICAgZW50aXR5VHlwZTogc3RyaW5nLFxuICAgIGVudGl0eUlkOiBzdHJpbmcsXG4gICAgdHlwZTogQ29udmVyc2F0aW9uVHlwZSA9ICd0aHJlYWQnXG4gICk6IE9ic2VydmFibGU8Q29udmVyc2F0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8Q29udmVyc2F0aW9uUmVzcG9uc2U+KGAke3RoaXMuYmFzZVVybH0vZW50aXR5LWNvbnZlcnNhdGlvbnNgLCB7XG4gICAgICAgIGVudGl0eVJlZjogeyB0eXBlOiBlbnRpdHlUeXBlLCBpZDogZW50aXR5SWQgfSxcbiAgICAgICAgdHlwZSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAociA9PiByLmNvbnZlcnNhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RhIGxhcyBjb252ZXJzYWNpb25lcyBkZWwgdXN1YXJpbyBhdXRlbnRpY2Fkby5cbiAgICovXG4gIGxpc3RDb252ZXJzYXRpb25zKGN1cnNvcj86IHN0cmluZyk6IE9ic2VydmFibGU8TGlzdENvbnZlcnNhdGlvbnNSZXNwb25zZT4ge1xuICAgIGNvbnN0IHBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgIGlmIChjdXJzb3IpIHBhcmFtc1snY3Vyc29yJ10gPSBjdXJzb3I7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TGlzdENvbnZlcnNhdGlvbnNSZXNwb25zZT4oYCR7dGhpcy5iYXNlVXJsfS9jb252ZXJzYXRpb25zYCwgeyBwYXJhbXMgfSk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSB1bmEgY29udmVyc2FjaW9uIHBvciBJRC5cbiAgICovXG4gIGdldENvbnZlcnNhdGlvbihjb252SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q29udmVyc2F0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxDb252ZXJzYXRpb25SZXNwb25zZT4oYCR7dGhpcy5iYXNlVXJsfS9jb252ZXJzYXRpb25zLyR7Y29udklkfWApXG4gICAgICAucGlwZShtYXAociA9PiByLmNvbnZlcnNhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdHVhbGl6YSBlbCBub21icmUgbyBzZXR0aW5ncyBkZSB1bmEgY29udmVyc2FjaW9uLlxuICAgKi9cbiAgdXBkYXRlQ29udmVyc2F0aW9uKGNvbnZJZDogc3RyaW5nLCByZXE6IFVwZGF0ZUNvbnZlcnNhdGlvblJlcXVlc3QpOiBPYnNlcnZhYmxlPENvbnZlcnNhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wYXRjaDxDb252ZXJzYXRpb25SZXNwb25zZT4oYCR7dGhpcy5iYXNlVXJsfS9jb252ZXJzYXRpb25zLyR7Y29udklkfWAsIHJlcSlcbiAgICAgIC5waXBlKG1hcChyID0+IHIuY29udmVyc2F0aW9uKSk7XG4gIH1cblxuICAvKipcbiAgICogQWJyZSB1bmEgY29udmVyc2FjaW9uIGNlcnJhZGEuXG4gICAqL1xuICBvcGVuQ29udmVyc2F0aW9uKGNvbnZJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHZvaWQ+KGAke3RoaXMuYmFzZVVybH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vb3BlbmAsIHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaWVycmEgdW5hIGNvbnZlcnNhY2lvbi5cbiAgICovXG4gIGNsb3NlQ29udmVyc2F0aW9uKGNvbnZJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHZvaWQ+KGAke3RoaXMuYmFzZVVybH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vY2xvc2VgLCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQWdyZWdhIHVuIHBhcnRpY2lwYW50ZSBhIGxhIGNvbnZlcnNhY2lvbi5cbiAgICovXG4gIGFkZFBhcnRpY2lwYW50KGNvbnZJZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDx2b2lkPihgJHt0aGlzLmJhc2VVcmx9L2NvbnZlcnNhdGlvbnMvJHtjb252SWR9L3BhcnRpY2lwYW50c2AsIHsgdXNlcklkIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgdW4gcGFydGljaXBhbnRlIGRlIGxhIGNvbnZlcnNhY2lvbi5cbiAgICovXG4gIHJlbW92ZVBhcnRpY2lwYW50KGNvbnZJZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPHZvaWQ+KGAke3RoaXMuYmFzZVVybH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vcGFydGljaXBhbnRzLyR7dXNlcklkfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudmlhIHVuIG1lbnNhamUgYSB1bmEgY29udmVyc2FjaW9uLlxuICAgKi9cbiAgc2VuZE1lc3NhZ2UoY29udklkOiBzdHJpbmcsIGJvZHk6IHN0cmluZyk6IE9ic2VydmFibGU8TWVzc2FnZT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxNZXNzYWdlPihgJHt0aGlzLmJhc2VVcmx9L2NvbnZlcnNhdGlvbnMvJHtjb252SWR9L21lc3NhZ2VzYCwgeyBib2R5IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgKG1hcmNhIGNvbW8gZWxpbWluYWRvKSB1biBtZW5zYWplLlxuICAgKi9cbiAgZGVsZXRlTWVzc2FnZShjb252SWQ6IHN0cmluZywgbXNnSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPHZvaWQ+KGAke3RoaXMuYmFzZVVybH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vbWVzc2FnZXMvJHttc2dJZH1gKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBGaXJlc3RvcmUg4oCUIGVzY3VjaGEgZW4gdGllbXBvIHJlYWwgKHNpbiBwYXNhciBwb3IgZWwgYmFja2VuZClcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIENvbnN0cnV5ZSBlbCBwYXRoIGJhc2UgcGFyYSBsb3MgZGF0b3MgZGUgdW5hIGNvbnZlcnNhY2lvbi5cbiAgICogTm90YTogdXNhbW9zIGVsIHBhdGggY29tcGxldG8gY29uIHNraXBQcmVmaXggcG9ycXVlIGVsIHBhdGggeWEgaW5jbHV5ZVxuICAgKiBhcHBzL3thcHBJZH0vb3Jncy97b3JnSWR9IHF1ZSBlbCBGaXJlc3RvcmVTZXJ2aWNlIHByZWZpamFyaWEgZGUgbnVldm8uXG4gICAqIEVuIGNhbWJpbyBhcm1hbW9zIGVsIHBhdGggY29tbyBzdWItY29sZWNjaW9uIGRpcmVjdGFtZW50ZS5cbiAgICovXG4gIHByaXZhdGUgY29udk1lc3NhZ2VzUGF0aChjb252SWQ6IHN0cmluZywgb3JnSWQ6IHN0cmluZywgYXBwSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBhcHBzLyR7YXBwSWR9L29yZ3MvJHtvcmdJZH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vbWVzc2FnZXNgO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252VHlwaW5nUGF0aChjb252SWQ6IHN0cmluZywgb3JnSWQ6IHN0cmluZywgYXBwSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBhcHBzLyR7YXBwSWR9L29yZ3MvJHtvcmdJZH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vdHlwaW5nYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFc2N1Y2hhIGxvcyBtZW5zYWplcyBkZSB1bmEgY29udmVyc2FjaW9uIGVuIHRpZW1wbyByZWFsLlxuICAgKlxuICAgKiBAcGFyYW0gY29udklkIC0gSUQgZGUgbGEgY29udmVyc2FjaW9uXG4gICAqIEBwYXJhbSBvcmdJZCAtIElEIGRlIGxhIG9yZ2FuaXphY2lvblxuICAgKiBAcGFyYW0gYXBwSWQgLSBJRCBkZSBsYSBhcGxpY2FjaW9uXG4gICAqIEBwYXJhbSBsaW1pdCAtIENhbnRpZGFkIG1heGltYSBkZSBtZW5zYWplcyBhIGNhcmdhciAoZGVmYXVsdCA1MClcbiAgICovXG4gIHdhdGNoTWVzc2FnZXMoXG4gICAgY29udklkOiBzdHJpbmcsXG4gICAgb3JnSWQ6IHN0cmluZyxcbiAgICBhcHBJZDogc3RyaW5nLFxuICAgIGxpbWl0OiBudW1iZXIgPSA1MFxuICApOiBPYnNlcnZhYmxlPE1lc3NhZ2VbXT4ge1xuICAgIGlmICghdGhpcy5maXJlc3RvcmVTZXJ2aWNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdbQ29udmVyc2F0aW9uU2VydmljZV0gRmlyZXN0b3JlU2VydmljZSBubyBkaXNwb25pYmxlLiBBc2VndXJhdGUgZGUgcHJvdmlkZVZhbHRlY2hGaXJlYmFzZSgpLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVXNhbW9zIEFCU19QQVRIX1NFTlRJTkVMIHBhcmEgZXZpdGFyIHF1ZSBGaXJlc3RvcmVTZXJ2aWNlIGFudGVwb25nYSBlbCBwcmVmaWpvXG4gICAgLy8gcG9ycXVlIGVsIHBhdGggeWEgY29udGllbmUgbGEgcnV0YSBjb21wbGV0YSBjb24gYXBwSWQvb3JnSWQuXG4gICAgY29uc3QgeyBBQlNfUEFUSF9TRU5USU5FTCB9ID0gdGhpcy5nZXRBYnNQYXRoU2VudGluZWwoKTtcbiAgICBjb25zdCBjb2xsZWN0aW9uUGF0aCA9IGAke0FCU19QQVRIX1NFTlRJTkVMfSR7dGhpcy5jb252TWVzc2FnZXNQYXRoKGNvbnZJZCwgb3JnSWQsIGFwcElkKX1gO1xuXG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlU2VydmljZS5jb2xsZWN0aW9uQ2hhbmdlczxNZXNzYWdlPihjb2xsZWN0aW9uUGF0aCwge1xuICAgICAgb3JkZXJCeTogW3sgZmllbGQ6ICdjcmVhdGVkQXQnLCBkaXJlY3Rpb246ICdhc2MnIH1dLFxuICAgICAgbGltaXQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRXNjdWNoYSBsb3MgdXN1YXJpb3MgcXVlIGVzdGFuIGVzY3JpYmllbmRvIGVuIHVuYSBjb252ZXJzYWNpb24uXG4gICAqIERldnVlbHZlIHVuIGFycmF5IGRlIGRpc3BsYXlOYW1lcy5cbiAgICpcbiAgICogQHBhcmFtIGNvbnZJZCAtIElEIGRlIGxhIGNvbnZlcnNhY2lvblxuICAgKiBAcGFyYW0gb3JnSWQgLSBJRCBkZSBsYSBvcmdhbml6YWNpb25cbiAgICogQHBhcmFtIGFwcElkIC0gSUQgZGUgbGEgYXBsaWNhY2lvblxuICAgKi9cbiAgd2F0Y2hUeXBpbmcoY29udklkOiBzdHJpbmcsIG9yZ0lkOiBzdHJpbmcsIGFwcElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgaWYgKCF0aGlzLmZpcmVzdG9yZVNlcnZpY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1tDb252ZXJzYXRpb25TZXJ2aWNlXSBGaXJlc3RvcmVTZXJ2aWNlIG5vIGRpc3BvbmlibGUuIEFzZWd1cmF0ZSBkZSBwcm92aWRlVmFsdGVjaEZpcmViYXNlKCkuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IEFCU19QQVRIX1NFTlRJTkVMIH0gPSB0aGlzLmdldEFic1BhdGhTZW50aW5lbCgpO1xuICAgIGNvbnN0IGNvbGxlY3Rpb25QYXRoID0gYCR7QUJTX1BBVEhfU0VOVElORUx9JHt0aGlzLmNvbnZUeXBpbmdQYXRoKGNvbnZJZCwgb3JnSWQsIGFwcElkKX1gO1xuXG4gICAgcmV0dXJuIHRoaXMuZmlyZXN0b3JlU2VydmljZVxuICAgICAgLmNvbGxlY3Rpb25DaGFuZ2VzPFR5cGluZ0RvY3VtZW50Pihjb2xsZWN0aW9uUGF0aClcbiAgICAgIC5waXBlKG1hcChkb2NzID0+IGRvY3MubWFwKGQgPT4gZC5kaXNwbGF5TmFtZSkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSBxdWUgZWwgdXN1YXJpbyBhY3R1YWwgZXN0YSBlc2NyaWJpZW5kby5cbiAgICogRWwgZG9jdW1lbnRvIHNlIHNvYnJlZXNjcmliZSBwYXJhIGFjdHVhbGl6YXIgZWwgdGltZXN0YW1wLlxuICAgKiBEZWJlIGxsYW1hcnNlIGNvbiB1biBUVEwvY2xlYW51cCAodmVyIHN0b3BUeXBpbmcpLlxuICAgKlxuICAgKiBAcGFyYW0gY29udklkIC0gSUQgZGUgbGEgY29udmVyc2FjaW9uXG4gICAqIEBwYXJhbSBvcmdJZCAtIElEIGRlIGxhIG9yZ2FuaXphY2lvblxuICAgKiBAcGFyYW0gYXBwSWQgLSBJRCBkZSBsYSBhcGxpY2FjaW9uXG4gICAqIEBwYXJhbSBkaXNwbGF5TmFtZSAtIE5vbWJyZSB2aXNpYmxlIGRlbCB1c3VhcmlvXG4gICAqL1xuICBzdGFydFR5cGluZyhjb252SWQ6IHN0cmluZywgb3JnSWQ6IHN0cmluZywgYXBwSWQ6IHN0cmluZywgZGlzcGxheU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5maXJlc3RvcmUpIHJldHVybjtcblxuICAgIGNvbnN0IHVzZXJJZCA9IHRoaXMuZ2V0Q3VycmVudFVzZXJJZCgpO1xuICAgIGlmICghdXNlcklkKSByZXR1cm47XG5cbiAgICBjb25zdCBwYXRoID0gYCR7dGhpcy5jb252VHlwaW5nUGF0aChjb252SWQsIG9yZ0lkLCBhcHBJZCl9LyR7dXNlcklkfWA7XG4gICAgY29uc3QgZG9jUmVmID0gZG9jKHRoaXMuZmlyZXN0b3JlLCBwYXRoKTtcblxuICAgIHZvaWQgc2V0RG9jKGRvY1JlZiwge1xuICAgICAgZGlzcGxheU5hbWUsXG4gICAgICB1cGRhdGVkQXQ6IHNlcnZlclRpbWVzdGFtcCgpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgZWwgZG9jdW1lbnRvIGRlIFwiZXNjcmliaWVuZG9cIiBkZWwgdXN1YXJpbyBhY3R1YWwuXG4gICAqXG4gICAqIEBwYXJhbSBjb252SWQgLSBJRCBkZSBsYSBjb252ZXJzYWNpb25cbiAgICogQHBhcmFtIG9yZ0lkIC0gSUQgZGUgbGEgb3JnYW5pemFjaW9uXG4gICAqIEBwYXJhbSBhcHBJZCAtIElEIGRlIGxhIGFwbGljYWNpb25cbiAgICovXG4gIHN0b3BUeXBpbmcoY29udklkOiBzdHJpbmcsIG9yZ0lkOiBzdHJpbmcsIGFwcElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZmlyZXN0b3JlKSByZXR1cm47XG5cbiAgICBjb25zdCB1c2VySWQgPSB0aGlzLmdldEN1cnJlbnRVc2VySWQoKTtcbiAgICBpZiAoIXVzZXJJZCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcGF0aCA9IGAke3RoaXMuY29udlR5cGluZ1BhdGgoY29udklkLCBvcmdJZCwgYXBwSWQpfS8ke3VzZXJJZH1gO1xuICAgIGNvbnN0IGRvY1JlZiA9IGRvYyh0aGlzLmZpcmVzdG9yZSwgcGF0aCk7XG5cbiAgICB2b2lkIGRlbGV0ZURvYyhkb2NSZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmNhIHVuIG1lbnNhamUgY29tbyBsZWlkbyBwb3IgZWwgdXN1YXJpbyBhY3R1YWwuXG4gICAqIEVzY3JpYmUgZGlyZWN0YW1lbnRlIGVuIEZpcmVzdG9yZSBzaW4gcGFzYXIgcG9yIGVsIGJhY2tlbmQuXG4gICAqXG4gICAqIEBwYXJhbSBjb252SWQgLSBJRCBkZSBsYSBjb252ZXJzYWNpb25cbiAgICogQHBhcmFtIG1zZ0lkIC0gSUQgZGVsIHVsdGltbyBtZW5zYWplIGxlaWRvXG4gICAqIEBwYXJhbSBvcmdJZCAtIElEIGRlIGxhIG9yZ2FuaXphY2lvblxuICAgKiBAcGFyYW0gYXBwSWQgLSBJRCBkZSBsYSBhcGxpY2FjaW9uXG4gICAqL1xuICBtYXJrUmVhZChjb252SWQ6IHN0cmluZywgbXNnSWQ6IHN0cmluZywgb3JnSWQ6IHN0cmluZywgYXBwSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5maXJlc3RvcmUpIHJldHVybjtcblxuICAgIGNvbnN0IHVzZXJJZCA9IHRoaXMuZ2V0Q3VycmVudFVzZXJJZCgpO1xuICAgIGlmICghdXNlcklkKSByZXR1cm47XG5cbiAgICBjb25zdCBjb252UGF0aCA9IGBhcHBzLyR7YXBwSWR9L29yZ3MvJHtvcmdJZH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH1gO1xuICAgIGNvbnN0IGNvbnZSZWYgPSBkb2ModGhpcy5maXJlc3RvcmUsIGNvbnZQYXRoKTtcblxuICAgIC8vIFVzYSBkb3Qtbm90YXRpb24gZGUgRmlyZXN0b3JlIHBhcmEgYWN0dWFsaXphciBzb2xvIGVsIGNhbXBvIGRlbCB1c3VhcmlvXG4gICAgY29uc3QgdXBkYXRlRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICBbYHBhcnRpY2lwYW50c19yZWFkTWFwLiR7dXNlcklkfWBdOiBtc2dJZCxcbiAgICAgIHVwZGF0ZWRBdDogc2VydmVyVGltZXN0YW1wKCksXG4gICAgfTtcblxuICAgIHZvaWQgdXBkYXRlRG9jKGNvbnZSZWYsIHVwZGF0ZURhdGEpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEhlbHBlcnMgcHJpdmFkb3NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEltcG9ydGEgQUJTX1BBVEhfU0VOVElORUwgZGUgZm9ybWEgbGF6eSBwYXJhIGV2aXRhciBkZXBlbmRlbmNpYXMgY2lyY3VsYXJlcy5cbiAgICovXG4gIHByaXZhdGUgZ2V0QWJzUGF0aFNlbnRpbmVsKCk6IHsgQUJTX1BBVEhfU0VOVElORUw6IHN0cmluZyB9IHtcbiAgICAvLyBMYSBzZW50aW5lbCBzZSBkZWZpbmUgZW4gZmlyZXN0b3JlLnNlcnZpY2UudHMg4oCUIHJlcGxpY2Ftb3MgZWwgdmFsb3IgYXF1aVxuICAgIC8vIHBhcmEgbm8gY3JlYXIgdW5hIGRlcGVuZGVuY2lhIGNpcmN1bGFyIGVuIGVsIGltcG9ydCBlc3RhdGljby5cbiAgICByZXR1cm4geyBBQlNfUEFUSF9TRU5USU5FTDogJ19fYWJzX186JyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgdXNlcklkIGRlbCB1c3VhcmlvIGFjdHVhbCBkZXNkZSBzZXNzaW9uU3RvcmFnZSAvIGxvY2FsU3RvcmFnZVxuICAgKiBjb21vIGZhbGxiYWNrIG5vLURJIHBhcmEgZWwgY29udGV4dG8gZGUgZXNjcml0dXJhIGRlIEZpcmVzdG9yZS5cbiAgICogRW4gcHJvZCwgZWwgQXV0aFNlcnZpY2UgYWN0dWFsaXphIGVsIHVzZXJJZCBlbiBlbCBjb250ZXh0byBkZSBsYSBhcHAuXG4gICAqL1xuICBwcml2YXRlIGdldEN1cnJlbnRVc2VySWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgLy8gSW50ZW50YXIgb2J0ZW5lcmxvIGRlc2RlIHNlc3Npb25TdG9yYWdlIChlbCBBdXRoU2VydmljZSBsbyBndWFyZGEgYWhpKVxuICAgIGlmICh0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zdCB1aWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd1aWQnKSA/PyBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd1c2VySWQnKTtcbiAgICAgIGlmICh1aWQpIHJldHVybiB1aWQ7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
297
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2NoYXQvY29udmVyc2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXBELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQVkvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFakU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBTTlCO1FBTFEsV0FBTSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEUsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUd4RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1lB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QUN0Qix5RUFBeUU7UUFDekUsSUFBSSxPQUFPLGNBQWMsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUMxQyxNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUUsSUFBSSxHQUFHO2dCQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBblRVLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRE4sTUFBTTs7NEZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2VydmVyVGltZXN0YW1wLCBkZWxldGVEb2MsIGRvYywgc2V0RG9jLCB1cGRhdGVEb2MgfSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSc7XG5pbXBvcnQgeyBGaXJlc3RvcmUgfSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSc7XG5cbmltcG9ydCB7IFZBTFRFQ0hfQ0hBVF9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQge1xuICBDb252ZXJzYXRpb24sXG4gIENvbnZlcnNhdGlvblJlc3BvbnNlLFxuICBDb252ZXJzYXRpb25UeXBlLFxuICBDcmVhdGVDb252ZXJzYXRpb25SZXF1ZXN0LFxuICBMaXN0Q29udmVyc2F0aW9uc1Jlc3BvbnNlLFxuICBNZXNzYWdlLFxuICBNZXNzYWdlQXR0YWNobWVudCxcbiAgVXBkYXRlQ29udmVyc2F0aW9uUmVxdWVzdCxcbiAgVHlwaW5nRG9jdW1lbnQsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgRmlyZXN0b3JlU2VydmljZSB9IGZyb20gJy4uL2ZpcmViYXNlL2ZpcmVzdG9yZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBDb252ZXJzYXRpb25TZXJ2aWNlXG4gKlxuICogR2VzdGlvbmEgY29udmVyc2FjaW9uZXMgeSBtZW5zYWplcyBkZWwgY2hhdC5cbiAqXG4gKiBEb3MgY2FwYXM6XG4gKiAgIC0gSFRUUCAodmlhIGJhY2tlbmQgL3YyL2NoYXQvKik6IG9wZXJhY2lvbmVzIGRlIGVzY3JpdHVyYSB5IGNvbnN1bHRhLlxuICogICAtIEZpcmVzdG9yZSByZWFsLXRpbWUgKGRpcmVjdGEpOiBlc2N1Y2hhIG1lbnNhamVzIHkgZXN0YWRvIGRlIGVzY3JpdHVyYS5cbiAqXG4gKiBQYXRocyBGaXJlc3RvcmU6XG4gKiAgIC9hcHBzL3thcHBJZH0vb3Jncy97b3JnSWR9L2NvbnZlcnNhdGlvbnMve2NvbnZJZH0vbWVzc2FnZXMve21zZ0lkfVxuICogICAvYXBwcy97YXBwSWR9L29yZ3Mve29yZ0lkfS9jb252ZXJzYXRpb25zL3tjb252SWR9L3R5cGluZy97dXNlcklkfVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFbnZpYXIgeSBlc2N1Y2hhciBtZW5zYWplc1xuICogY29uc3Qgc3ZjID0gaW5qZWN0KENvbnZlcnNhdGlvblNlcnZpY2UpO1xuICpcbiAqIC8vIEVudmlhciAoSFRUUClcbiAqIHN2Yy5zZW5kTWVzc2FnZShjb252SWQsICdIb2xhIScpLnN1YnNjcmliZSgpO1xuICpcbiAqIC8vIEVzY3VjaGFyIGVuIHRpZW1wbyByZWFsIChGaXJlc3RvcmUpXG4gKiBzdmMud2F0Y2hNZXNzYWdlcyhjb252SWQsIG9yZ0lkLCBhcHBJZCkuc3Vic2NyaWJlKG1zZ3MgPT4gdGhpcy5tZXNzYWdlcy5zZXQobXNncykpO1xuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENvbnZlcnNhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChWQUxURUNIX0NIQVRfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHByaXZhdGUgZmlyZXN0b3JlU2VydmljZSA9IGluamVjdChGaXJlc3RvcmVTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIGZpcmVzdG9yZSA9IGluamVjdChGaXJlc3RvcmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZyAmJiBpc0Rldk1vZGUoKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnW3ZhbHRlY2gtY29tcG9uZW50c10gQ29udmVyc2F0aW9uU2VydmljZTogcHJvdmlkZVZhbHRlY2hDaGF0KCkgbm8gZXN0YSBlbiBtYWluLnRzLiAnICtcbiAgICAgICAgICAnRWwgY2hhdCBubyBmdW5jaW9uYXJhLidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEhUVFAg4oCUIG9wZXJhY2lvbmVzIGRlIGVzY3JpdHVyYSB5IGNvbnN1bHRhIGFsIGJhY2tlbmRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgcHJpdmF0ZSBnZXQgYmFzZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmNvbmZpZz8uYXBpVXJsfSR7dGhpcy5jb25maWc/LmNoYXRQcmVmaXggPz8gJy92Mi9jaGF0J31gO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWEgdW5hIG51ZXZhIGNvbnZlcnNhY2lvbi5cbiAgICogRWwgYmFja2VuZCByZXNwb25kZSBjb24gdW4gZW52ZWxvcGUgeyBvcGVyYXRpb25JZCwgY29udmVyc2F0aW9uIH0g4oCUIGxvXG4gICAqIGRlc2Vudm9sdmVtb3MgcGFyYSBkZXZvbHZlciBsYSBDb252ZXJzYXRpb24gZGlyZWN0YS5cbiAgICovXG4gIGNyZWF0ZUNvbnZlcnNhdGlvbihyZXE6IENyZWF0ZUNvbnZlcnNhdGlvblJlcXVlc3QpOiBPYnNlcnZhYmxlPENvbnZlcnNhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PENvbnZlcnNhdGlvblJlc3BvbnNlPihgJHt0aGlzLmJhc2VVcmx9L2NvbnZlcnNhdGlvbnNgLCByZXEpXG4gICAgICAucGlwZShtYXAociA9PiByLmNvbnZlcnNhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbyBjcmVhIHVuYSBjb252ZXJzYWNpb24gYXNvY2lhZGEgYSB1bmEgZW50aWRhZCAocG9zdCwgcmVxdWVzdCwgb3JnLCBldGMuKS5cbiAgICogVXNhIGVsIHBhdHJvbiB1cHNlcnQgZGVsIGJhY2tlbmQ6IHNpIHlhIGV4aXN0ZSB1bmEgY29udmVyc2FjaW9uIHBhcmEgZXNhIGVudGlkYWQsXG4gICAqIGxhIGRldnVlbHZlOyBzaSBubywgbGEgY3JlYS5cbiAgICpcbiAgICogRWwgYmFja2VuZCBlc3BlcmEgeyBlbnRpdHlSZWY6IHsgdHlwZSwgaWQgfSwgdHlwZSB9IHkgcmVzcG9uZGUgY29uIHVuIGVudmVsb3BlXG4gICAqIHsgb3BlcmF0aW9uSWQsIGNvbnZlcnNhdGlvbiwgY3JlYXRlZCB9LlxuICAgKi9cbiAgZ2V0T3JDcmVhdGVGb3JFbnRpdHkoXG4gICAgZW50aXR5VHlwZTogc3RyaW5nLFxuICAgIGVudGl0eUlkOiBzdHJpbmcsXG4gICAgdHlwZTogQ29udmVyc2F0aW9uVHlwZSA9ICd0aHJlYWQnXG4gICk6IE9ic2VydmFibGU8Q29udmVyc2F0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8Q29udmVyc2F0aW9uUmVzcG9uc2U+KGAke3RoaXMuYmFzZVVybH0vZW50aXR5LWNvbnZlcnNhdGlvbnNgLCB7XG4gICAgICAgIGVudGl0eVJlZjogeyB0eXBlOiBlbnRpdHlUeXBlLCBpZDogZW50aXR5SWQgfSxcbiAgICAgICAgdHlwZSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAociA9PiByLmNvbnZlcnNhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RhIGxhcyBjb252ZXJzYWNpb25lcyBkZWwgdXN1YXJpbyBhdXRlbnRpY2Fkby5cbiAgICovXG4gIGxpc3RDb252ZXJzYXRpb25zKGN1cnNvcj86IHN0cmluZyk6IE9ic2VydmFibGU8TGlzdENvbnZlcnNhdGlvbnNSZXNwb25zZT4ge1xuICAgIGNvbnN0IHBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgIGlmIChjdXJzb3IpIHBhcmFtc1snY3Vyc29yJ10gPSBjdXJzb3I7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TGlzdENvbnZlcnNhdGlvbnNSZXNwb25zZT4oYCR7dGhpcy5iYXNlVXJsfS9jb252ZXJzYXRpb25zYCwgeyBwYXJhbXMgfSk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSB1bmEgY29udmVyc2FjaW9uIHBvciBJRC5cbiAgICovXG4gIGdldENvbnZlcnNhdGlvbihjb252SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q29udmVyc2F0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxDb252ZXJzYXRpb25SZXNwb25zZT4oYCR7dGhpcy5iYXNlVXJsfS9jb252ZXJzYXRpb25zLyR7Y29udklkfWApXG4gICAgICAucGlwZShtYXAociA9PiByLmNvbnZlcnNhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdHVhbGl6YSBlbCBub21icmUgbyBzZXR0aW5ncyBkZSB1bmEgY29udmVyc2FjaW9uLlxuICAgKi9cbiAgdXBkYXRlQ29udmVyc2F0aW9uKGNvbnZJZDogc3RyaW5nLCByZXE6IFVwZGF0ZUNvbnZlcnNhdGlvblJlcXVlc3QpOiBPYnNlcnZhYmxlPENvbnZlcnNhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wYXRjaDxDb252ZXJzYXRpb25SZXNwb25zZT4oYCR7dGhpcy5iYXNlVXJsfS9jb252ZXJzYXRpb25zLyR7Y29udklkfWAsIHJlcSlcbiAgICAgIC5waXBlKG1hcChyID0+IHIuY29udmVyc2F0aW9uKSk7XG4gIH1cblxuICAvKipcbiAgICogQWJyZSB1bmEgY29udmVyc2FjaW9uIGNlcnJhZGEuXG4gICAqL1xuICBvcGVuQ29udmVyc2F0aW9uKGNvbnZJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHZvaWQ+KGAke3RoaXMuYmFzZVVybH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vb3BlbmAsIHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaWVycmEgdW5hIGNvbnZlcnNhY2lvbi5cbiAgICovXG4gIGNsb3NlQ29udmVyc2F0aW9uKGNvbnZJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHZvaWQ+KGAke3RoaXMuYmFzZVVybH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vY2xvc2VgLCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQWdyZWdhIHVuIHBhcnRpY2lwYW50ZSBhIGxhIGNvbnZlcnNhY2lvbi5cbiAgICovXG4gIGFkZFBhcnRpY2lwYW50KGNvbnZJZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDx2b2lkPihgJHt0aGlzLmJhc2VVcmx9L2NvbnZlcnNhdGlvbnMvJHtjb252SWR9L3BhcnRpY2lwYW50c2AsIHsgdXNlcklkIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVsaW1pbmEgdW4gcGFydGljaXBhbnRlIGRlIGxhIGNvbnZlcnNhY2lvbi5cbiAgICovXG4gIHJlbW92ZVBhcnRpY2lwYW50KGNvbnZJZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPHZvaWQ+KGAke3RoaXMuYmFzZVVybH0vY29udmVyc2F0aW9ucy8ke2NvbnZJZH0vcGFydGljaXBhbnRzLyR7dXNlcklkfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudmlhIHVuIG1lbnNhamUgYSB1bmEgY29udmVyc2FjaW9uLCBvcGNpb25hbG1lbnRlIGNvbiBhZGp1bnRvcy5cbiAgICogRWwgYmFja2VuZCBlc3BlcmEgYGF0dGFjaG1lbnRzOiB7IHVybCwgdHlwZSwgbmFtZSwgc2l6ZSB9W11gIChrZXkgYHR5cGVgID0gTUlNRSksXG4gICAqIG1pZW50cmFzIHF1ZSBlbCBmcm9udCB1c2EgYG1pbWVUeXBlYCDigJQgc2UgbWFwZWEgYXF1aS5cbiAgICovXG4gIHNlbmRNZXNzYWdlKFxuICAgIGNvbnZJZDogc3RyaW5nLFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBhdHRhY2htZW50cz86IE1lc3NhZ2VBdHRhY2htZW50W11cbiAgKTogT2JzZXJ2YWJsZTxNZXNzYWdlPiB7XG4gICAgY29uc3QgcGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7IGJvZHkgfTtcbiAgICBpZiAoYXR0YWNobWVudHM/Lmxlbmd0aCkge1xuICAgICAgcGF5bG9hZFsnYXR0YWNobWVudHMnXSA9IGF0dGFjaG1lbnRzLm1hcChhID0+ICh7XG4gICAgICAgIHVybDogYS51cmwsXG4gICAgICAgIHR5cGU6IGEubWltZVR5cGUsXG4gICAgICAgIG5hbWU6IGEubmFtZSxcbiAgICAgICAgc2l6ZTogYS5zaXplID8/IDAsXG4gICAgICB9KSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxNZXNzYWdlPihgJHt0aGlzLmJhc2VVcmx9L2NvbnZlcnNhdGlvbnMvJHtjb252SWR9L21lc3NhZ2VzYCwgcGF5bG9hZCk7XG4gIH1cblxuICAvKipcbiAgICogRWxpbWluYSAobWFyY2EgY29tbyBlbGltaW5hZG8pIHVuIG1lbnNhamUuXG4gICAqL1xuICBkZWxldGVNZXNzYWdlKGNvbnZJZDogc3RyaW5nLCBtc2dJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8dm9pZD4oYCR7dGhpcy5iYXNlVXJsfS9jb252ZXJzYXRpb25zLyR7Y29udklkfS9tZXNzYWdlcy8ke21zZ0lkfWApO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEZpcmVzdG9yZSDigJQgZXNjdWNoYSBlbiB0aWVtcG8gcmVhbCAoc2luIHBhc2FyIHBvciBlbCBiYWNrZW5kKVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQ29uc3RydXllIGVsIHBhdGggYmFzZSBwYXJhIGxvcyBkYXRvcyBkZSB1bmEgY29udmVyc2FjaW9uLlxuICAgKiBOb3RhOiB1c2Ftb3MgZWwgcGF0aCBjb21wbGV0byBjb24gc2tpcFByZWZpeCBwb3JxdWUgZWwgcGF0aCB5YSBpbmNsdXllXG4gICAqIGFwcHMve2FwcElkfS9vcmdzL3tvcmdJZH0gcXVlIGVsIEZpcmVzdG9yZVNlcnZpY2UgcHJlZmlqYXJpYSBkZSBudWV2by5cbiAgICogRW4gY2FtYmlvIGFybWFtb3MgZWwgcGF0aCBjb21vIHN1Yi1jb2xlY2Npb24gZGlyZWN0YW1lbnRlLlxuICAgKi9cbiAgcHJpdmF0ZSBjb252TWVzc2FnZXNQYXRoKGNvbnZJZDogc3RyaW5nLCBvcmdJZDogc3RyaW5nLCBhcHBJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGFwcHMvJHthcHBJZH0vb3Jncy8ke29yZ0lkfS9jb252ZXJzYXRpb25zLyR7Y29udklkfS9tZXNzYWdlc2A7XG4gIH1cblxuICBwcml2YXRlIGNvbnZUeXBpbmdQYXRoKGNvbnZJZDogc3RyaW5nLCBvcmdJZDogc3RyaW5nLCBhcHBJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGFwcHMvJHthcHBJZH0vb3Jncy8ke29yZ0lkfS9jb252ZXJzYXRpb25zLyR7Y29udklkfS90eXBpbmdgO1xuICB9XG5cbiAgLyoqXG4gICAqIEVzY3VjaGEgbG9zIG1lbnNhamVzIGRlIHVuYSBjb252ZXJzYWNpb24gZW4gdGllbXBvIHJlYWwuXG4gICAqXG4gICAqIEBwYXJhbSBjb252SWQgLSBJRCBkZSBsYSBjb252ZXJzYWNpb25cbiAgICogQHBhcmFtIG9yZ0lkIC0gSUQgZGUgbGEgb3JnYW5pemFjaW9uXG4gICAqIEBwYXJhbSBhcHBJZCAtIElEIGRlIGxhIGFwbGljYWNpb25cbiAgICogQHBhcmFtIGxpbWl0IC0gQ2FudGlkYWQgbWF4aW1hIGRlIG1lbnNhamVzIGEgY2FyZ2FyIChkZWZhdWx0IDUwKVxuICAgKi9cbiAgd2F0Y2hNZXNzYWdlcyhcbiAgICBjb252SWQ6IHN0cmluZyxcbiAgICBvcmdJZDogc3RyaW5nLFxuICAgIGFwcElkOiBzdHJpbmcsXG4gICAgbGltaXQ6IG51bWJlciA9IDUwXG4gICk6IE9ic2VydmFibGU8TWVzc2FnZVtdPiB7XG4gICAgaWYgKCF0aGlzLmZpcmVzdG9yZVNlcnZpY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1tDb252ZXJzYXRpb25TZXJ2aWNlXSBGaXJlc3RvcmVTZXJ2aWNlIG5vIGRpc3BvbmlibGUuIEFzZWd1cmF0ZSBkZSBwcm92aWRlVmFsdGVjaEZpcmViYXNlKCkuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBVc2Ftb3MgQUJTX1BBVEhfU0VOVElORUwgcGFyYSBldml0YXIgcXVlIEZpcmVzdG9yZVNlcnZpY2UgYW50ZXBvbmdhIGVsIHByZWZpam9cbiAgICAvLyBwb3JxdWUgZWwgcGF0aCB5YSBjb250aWVuZSBsYSBydXRhIGNvbXBsZXRhIGNvbiBhcHBJZC9vcmdJZC5cbiAgICBjb25zdCB7IEFCU19QQVRIX1NFTlRJTkVMIH0gPSB0aGlzLmdldEFic1BhdGhTZW50aW5lbCgpO1xuICAgIGNvbnN0IGNvbGxlY3Rpb25QYXRoID0gYCR7QUJTX1BBVEhfU0VOVElORUx9JHt0aGlzLmNvbnZNZXNzYWdlc1BhdGgoY29udklkLCBvcmdJZCwgYXBwSWQpfWA7XG5cbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmVTZXJ2aWNlLmNvbGxlY3Rpb25DaGFuZ2VzPE1lc3NhZ2U+KGNvbGxlY3Rpb25QYXRoLCB7XG4gICAgICBvcmRlckJ5OiBbeyBmaWVsZDogJ2NyZWF0ZWRBdCcsIGRpcmVjdGlvbjogJ2FzYycgfV0sXG4gICAgICBsaW1pdCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFc2N1Y2hhIGxvcyB1c3VhcmlvcyBxdWUgZXN0YW4gZXNjcmliaWVuZG8gZW4gdW5hIGNvbnZlcnNhY2lvbi5cbiAgICogRGV2dWVsdmUgdW4gYXJyYXkgZGUgZGlzcGxheU5hbWVzLlxuICAgKlxuICAgKiBAcGFyYW0gY29udklkIC0gSUQgZGUgbGEgY29udmVyc2FjaW9uXG4gICAqIEBwYXJhbSBvcmdJZCAtIElEIGRlIGxhIG9yZ2FuaXphY2lvblxuICAgKiBAcGFyYW0gYXBwSWQgLSBJRCBkZSBsYSBhcGxpY2FjaW9uXG4gICAqL1xuICB3YXRjaFR5cGluZyhjb252SWQ6IHN0cmluZywgb3JnSWQ6IHN0cmluZywgYXBwSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nW10+IHtcbiAgICBpZiAoIXRoaXMuZmlyZXN0b3JlU2VydmljZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnW0NvbnZlcnNhdGlvblNlcnZpY2VdIEZpcmVzdG9yZVNlcnZpY2Ugbm8gZGlzcG9uaWJsZS4gQXNlZ3VyYXRlIGRlIHByb3ZpZGVWYWx0ZWNoRmlyZWJhc2UoKS4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHsgQUJTX1BBVEhfU0VOVElORUwgfSA9IHRoaXMuZ2V0QWJzUGF0aFNlbnRpbmVsKCk7XG4gICAgY29uc3QgY29sbGVjdGlvblBhdGggPSBgJHtBQlNfUEFUSF9TRU5USU5FTH0ke3RoaXMuY29udlR5cGluZ1BhdGgoY29udklkLCBvcmdJZCwgYXBwSWQpfWA7XG5cbiAgICByZXR1cm4gdGhpcy5maXJlc3RvcmVTZXJ2aWNlXG4gICAgICAuY29sbGVjdGlvbkNoYW5nZXM8VHlwaW5nRG9jdW1lbnQ+KGNvbGxlY3Rpb25QYXRoKVxuICAgICAgLnBpcGUobWFwKGRvY3MgPT4gZG9jcy5tYXAoZCA9PiBkLmRpc3BsYXlOYW1lKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIHF1ZSBlbCB1c3VhcmlvIGFjdHVhbCBlc3RhIGVzY3JpYmllbmRvLlxuICAgKiBFbCBkb2N1bWVudG8gc2Ugc29icmVlc2NyaWJlIHBhcmEgYWN0dWFsaXphciBlbCB0aW1lc3RhbXAuXG4gICAqIERlYmUgbGxhbWFyc2UgY29uIHVuIFRUTC9jbGVhbnVwICh2ZXIgc3RvcFR5cGluZykuXG4gICAqXG4gICAqIEBwYXJhbSBjb252SWQgLSBJRCBkZSBsYSBjb252ZXJzYWNpb25cbiAgICogQHBhcmFtIG9yZ0lkIC0gSUQgZGUgbGEgb3JnYW5pemFjaW9uXG4gICAqIEBwYXJhbSBhcHBJZCAtIElEIGRlIGxhIGFwbGljYWNpb25cbiAgICogQHBhcmFtIGRpc3BsYXlOYW1lIC0gTm9tYnJlIHZpc2libGUgZGVsIHVzdWFyaW9cbiAgICovXG4gIHN0YXJ0VHlwaW5nKGNvbnZJZDogc3RyaW5nLCBvcmdJZDogc3RyaW5nLCBhcHBJZDogc3RyaW5nLCBkaXNwbGF5TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZpcmVzdG9yZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgdXNlcklkID0gdGhpcy5nZXRDdXJyZW50VXNlcklkKCk7XG4gICAgaWYgKCF1c2VySWQpIHJldHVybjtcblxuICAgIGNvbnN0IHBhdGggPSBgJHt0aGlzLmNvbnZUeXBpbmdQYXRoKGNvbnZJZCwgb3JnSWQsIGFwcElkKX0vJHt1c2VySWR9YDtcbiAgICBjb25zdCBkb2NSZWYgPSBkb2ModGhpcy5maXJlc3RvcmUsIHBhdGgpO1xuXG4gICAgdm9pZCBzZXREb2MoZG9jUmVmLCB7XG4gICAgICBkaXNwbGF5TmFtZSxcbiAgICAgIHVwZGF0ZWRBdDogc2VydmVyVGltZXN0YW1wKCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRWxpbWluYSBlbCBkb2N1bWVudG8gZGUgXCJlc2NyaWJpZW5kb1wiIGRlbCB1c3VhcmlvIGFjdHVhbC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnZJZCAtIElEIGRlIGxhIGNvbnZlcnNhY2lvblxuICAgKiBAcGFyYW0gb3JnSWQgLSBJRCBkZSBsYSBvcmdhbml6YWNpb25cbiAgICogQHBhcmFtIGFwcElkIC0gSUQgZGUgbGEgYXBsaWNhY2lvblxuICAgKi9cbiAgc3RvcFR5cGluZyhjb252SWQ6IHN0cmluZywgb3JnSWQ6IHN0cmluZywgYXBwSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5maXJlc3RvcmUpIHJldHVybjtcblxuICAgIGNvbnN0IHVzZXJJZCA9IHRoaXMuZ2V0Q3VycmVudFVzZXJJZCgpO1xuICAgIGlmICghdXNlcklkKSByZXR1cm47XG5cbiAgICBjb25zdCBwYXRoID0gYCR7dGhpcy5jb252VHlwaW5nUGF0aChjb252SWQsIG9yZ0lkLCBhcHBJZCl9LyR7dXNlcklkfWA7XG4gICAgY29uc3QgZG9jUmVmID0gZG9jKHRoaXMuZmlyZXN0b3JlLCBwYXRoKTtcblxuICAgIHZvaWQgZGVsZXRlRG9jKGRvY1JlZik7XG4gIH1cblxuICAvKipcbiAgICogTWFyY2EgdW4gbWVuc2FqZSBjb21vIGxlaWRvIHBvciBlbCB1c3VhcmlvIGFjdHVhbC5cbiAgICogRXNjcmliZSBkaXJlY3RhbWVudGUgZW4gRmlyZXN0b3JlIHNpbiBwYXNhciBwb3IgZWwgYmFja2VuZC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnZJZCAtIElEIGRlIGxhIGNvbnZlcnNhY2lvblxuICAgKiBAcGFyYW0gbXNnSWQgLSBJRCBkZWwgdWx0aW1vIG1lbnNhamUgbGVpZG9cbiAgICogQHBhcmFtIG9yZ0lkIC0gSUQgZGUgbGEgb3JnYW5pemFjaW9uXG4gICAqIEBwYXJhbSBhcHBJZCAtIElEIGRlIGxhIGFwbGljYWNpb25cbiAgICovXG4gIG1hcmtSZWFkKGNvbnZJZDogc3RyaW5nLCBtc2dJZDogc3RyaW5nLCBvcmdJZDogc3RyaW5nLCBhcHBJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZpcmVzdG9yZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgdXNlcklkID0gdGhpcy5nZXRDdXJyZW50VXNlcklkKCk7XG4gICAgaWYgKCF1c2VySWQpIHJldHVybjtcblxuICAgIGNvbnN0IGNvbnZQYXRoID0gYGFwcHMvJHthcHBJZH0vb3Jncy8ke29yZ0lkfS9jb252ZXJzYXRpb25zLyR7Y29udklkfWA7XG4gICAgY29uc3QgY29udlJlZiA9IGRvYyh0aGlzLmZpcmVzdG9yZSwgY29udlBhdGgpO1xuXG4gICAgLy8gVXNhIGRvdC1ub3RhdGlvbiBkZSBGaXJlc3RvcmUgcGFyYSBhY3R1YWxpemFyIHNvbG8gZWwgY2FtcG8gZGVsIHVzdWFyaW9cbiAgICBjb25zdCB1cGRhdGVEYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgIFtgcGFydGljaXBhbnRzX3JlYWRNYXAuJHt1c2VySWR9YF06IG1zZ0lkLFxuICAgICAgdXBkYXRlZEF0OiBzZXJ2ZXJUaW1lc3RhbXAoKSxcbiAgICB9O1xuXG4gICAgdm9pZCB1cGRhdGVEb2MoY29udlJlZiwgdXBkYXRlRGF0YSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gSGVscGVycyBwcml2YWRvc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogSW1wb3J0YSBBQlNfUEFUSF9TRU5USU5FTCBkZSBmb3JtYSBsYXp5IHBhcmEgZXZpdGFyIGRlcGVuZGVuY2lhcyBjaXJjdWxhcmVzLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBYnNQYXRoU2VudGluZWwoKTogeyBBQlNfUEFUSF9TRU5USU5FTDogc3RyaW5nIH0ge1xuICAgIC8vIExhIHNlbnRpbmVsIHNlIGRlZmluZSBlbiBmaXJlc3RvcmUuc2VydmljZS50cyDigJQgcmVwbGljYW1vcyBlbCB2YWxvciBhcXVpXG4gICAgLy8gcGFyYSBubyBjcmVhciB1bmEgZGVwZW5kZW5jaWEgY2lyY3VsYXIgZW4gZWwgaW1wb3J0IGVzdGF0aWNvLlxuICAgIHJldHVybiB7IEFCU19QQVRIX1NFTlRJTkVMOiAnX19hYnNfXzonIH07XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBlbCB1c2VySWQgZGVsIHVzdWFyaW8gYWN0dWFsIGRlc2RlIHNlc3Npb25TdG9yYWdlIC8gbG9jYWxTdG9yYWdlXG4gICAqIGNvbW8gZmFsbGJhY2sgbm8tREkgcGFyYSBlbCBjb250ZXh0byBkZSBlc2NyaXR1cmEgZGUgRmlyZXN0b3JlLlxuICAgKiBFbiBwcm9kLCBlbCBBdXRoU2VydmljZSBhY3R1YWxpemEgZWwgdXNlcklkIGVuIGVsIGNvbnRleHRvIGRlIGxhIGFwcC5cbiAgICovXG4gIHByaXZhdGUgZ2V0Q3VycmVudFVzZXJJZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAvLyBJbnRlbnRhciBvYnRlbmVybG8gZGVzZGUgc2Vzc2lvblN0b3JhZ2UgKGVsIEF1dGhTZXJ2aWNlIGxvIGd1YXJkYSBhaGkpXG4gICAgaWYgKHR5cGVvZiBzZXNzaW9uU3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IHVpZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3VpZCcpID8/IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3VzZXJJZCcpO1xuICAgICAgaWYgKHVpZCkgcmV0dXJuIHVpZDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '4.0.226';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4yMjYnO1xuIl19
5
+ export const VERSION = '4.0.227';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4yMjcnO1xuIl19