@copilotkitnext/angular 1.52.0-next.5 → 1.52.0-next.7

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.
@@ -110,7 +110,7 @@ export class CopilotChatAssistantMessage {
110
110
  this.regenerate.emit({ message: this.message() });
111
111
  }
112
112
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatAssistantMessage, deps: [{ token: CopilotChatViewHandlers, optional: true }], target: i0.ɵɵFactoryTarget.Component });
113
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatAssistantMessage, isStandalone: true, selector: "copilot-chat-assistant-message", inputs: { markdownRendererClass: { classPropertyName: "markdownRendererClass", publicName: "markdownRendererClass", isSignal: true, isRequired: false, transformFunction: null }, toolbarClass: { classPropertyName: "toolbarClass", publicName: "toolbarClass", isSignal: true, isRequired: false, transformFunction: null }, copyButtonClass: { classPropertyName: "copyButtonClass", publicName: "copyButtonClass", isSignal: true, isRequired: false, transformFunction: null }, thumbsUpButtonClass: { classPropertyName: "thumbsUpButtonClass", publicName: "thumbsUpButtonClass", isSignal: true, isRequired: false, transformFunction: null }, thumbsDownButtonClass: { classPropertyName: "thumbsDownButtonClass", publicName: "thumbsDownButtonClass", isSignal: true, isRequired: false, transformFunction: null }, readAloudButtonClass: { classPropertyName: "readAloudButtonClass", publicName: "readAloudButtonClass", isSignal: true, isRequired: false, transformFunction: null }, regenerateButtonClass: { classPropertyName: "regenerateButtonClass", publicName: "regenerateButtonClass", isSignal: true, isRequired: false, transformFunction: null }, toolCallsViewClass: { classPropertyName: "toolCallsViewClass", publicName: "toolCallsViewClass", isSignal: true, isRequired: false, transformFunction: null }, markdownRendererComponent: { classPropertyName: "markdownRendererComponent", publicName: "markdownRendererComponent", isSignal: true, isRequired: false, transformFunction: null }, toolbarComponent: { classPropertyName: "toolbarComponent", publicName: "toolbarComponent", isSignal: true, isRequired: false, transformFunction: null }, copyButtonComponent: { classPropertyName: "copyButtonComponent", publicName: "copyButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, thumbsUpButtonComponent: { classPropertyName: "thumbsUpButtonComponent", publicName: "thumbsUpButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, thumbsDownButtonComponent: { classPropertyName: "thumbsDownButtonComponent", publicName: "thumbsDownButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, readAloudButtonComponent: { classPropertyName: "readAloudButtonComponent", publicName: "readAloudButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, regenerateButtonComponent: { classPropertyName: "regenerateButtonComponent", publicName: "regenerateButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, toolCallsViewComponent: { classPropertyName: "toolCallsViewComponent", publicName: "toolCallsViewComponent", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, additionalToolbarItems: { classPropertyName: "additionalToolbarItems", publicName: "additionalToolbarItems", isSignal: true, isRequired: false, transformFunction: null }, toolbarVisible: { classPropertyName: "toolbarVisible", publicName: "toolbarVisible", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thumbsUp: "thumbsUp", thumbsDown: "thumbsDown", readAloud: "readAloud", regenerate: "regenerate" }, queries: [{ propertyName: "markdownRendererTemplate", first: true, predicate: ["markdownRenderer"], descendants: true, read: TemplateRef }, { propertyName: "toolbarTemplate", first: true, predicate: ["toolbar"], descendants: true, read: TemplateRef }, { propertyName: "copyButtonTemplate", first: true, predicate: ["copyButton"], descendants: true, read: TemplateRef }, { propertyName: "thumbsUpButtonTemplate", first: true, predicate: ["thumbsUpButton"], descendants: true, read: TemplateRef }, { propertyName: "thumbsDownButtonTemplate", first: true, predicate: ["thumbsDownButton"], descendants: true, read: TemplateRef }, { propertyName: "readAloudButtonTemplate", first: true, predicate: ["readAloudButton"], descendants: true, read: TemplateRef }, { propertyName: "regenerateButtonTemplate", first: true, predicate: ["regenerateButton"], descendants: true, read: TemplateRef }, { propertyName: "toolCallsViewTemplate", first: true, predicate: ["toolCallsView"], descendants: true, read: TemplateRef }], ngImport: i0, template: `
113
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatAssistantMessage, isStandalone: true, selector: "copilot-chat-assistant-message", inputs: { markdownRendererClass: { classPropertyName: "markdownRendererClass", publicName: "markdownRendererClass", isSignal: true, isRequired: false, transformFunction: null }, toolbarClass: { classPropertyName: "toolbarClass", publicName: "toolbarClass", isSignal: true, isRequired: false, transformFunction: null }, copyButtonClass: { classPropertyName: "copyButtonClass", publicName: "copyButtonClass", isSignal: true, isRequired: false, transformFunction: null }, thumbsUpButtonClass: { classPropertyName: "thumbsUpButtonClass", publicName: "thumbsUpButtonClass", isSignal: true, isRequired: false, transformFunction: null }, thumbsDownButtonClass: { classPropertyName: "thumbsDownButtonClass", publicName: "thumbsDownButtonClass", isSignal: true, isRequired: false, transformFunction: null }, readAloudButtonClass: { classPropertyName: "readAloudButtonClass", publicName: "readAloudButtonClass", isSignal: true, isRequired: false, transformFunction: null }, regenerateButtonClass: { classPropertyName: "regenerateButtonClass", publicName: "regenerateButtonClass", isSignal: true, isRequired: false, transformFunction: null }, toolCallsViewClass: { classPropertyName: "toolCallsViewClass", publicName: "toolCallsViewClass", isSignal: true, isRequired: false, transformFunction: null }, markdownRendererComponent: { classPropertyName: "markdownRendererComponent", publicName: "markdownRendererComponent", isSignal: true, isRequired: false, transformFunction: null }, toolbarComponent: { classPropertyName: "toolbarComponent", publicName: "toolbarComponent", isSignal: true, isRequired: false, transformFunction: null }, copyButtonComponent: { classPropertyName: "copyButtonComponent", publicName: "copyButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, thumbsUpButtonComponent: { classPropertyName: "thumbsUpButtonComponent", publicName: "thumbsUpButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, thumbsDownButtonComponent: { classPropertyName: "thumbsDownButtonComponent", publicName: "thumbsDownButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, readAloudButtonComponent: { classPropertyName: "readAloudButtonComponent", publicName: "readAloudButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, regenerateButtonComponent: { classPropertyName: "regenerateButtonComponent", publicName: "regenerateButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, toolCallsViewComponent: { classPropertyName: "toolCallsViewComponent", publicName: "toolCallsViewComponent", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, additionalToolbarItems: { classPropertyName: "additionalToolbarItems", publicName: "additionalToolbarItems", isSignal: true, isRequired: false, transformFunction: null }, toolbarVisible: { classPropertyName: "toolbarVisible", publicName: "toolbarVisible", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thumbsUp: "thumbsUp", thumbsDown: "thumbsDown", readAloud: "readAloud", regenerate: "regenerate" }, host: { attributes: { "data-copilotkit": "" } }, queries: [{ propertyName: "markdownRendererTemplate", first: true, predicate: ["markdownRenderer"], descendants: true, read: TemplateRef }, { propertyName: "toolbarTemplate", first: true, predicate: ["toolbar"], descendants: true, read: TemplateRef }, { propertyName: "copyButtonTemplate", first: true, predicate: ["copyButton"], descendants: true, read: TemplateRef }, { propertyName: "thumbsUpButtonTemplate", first: true, predicate: ["thumbsUpButton"], descendants: true, read: TemplateRef }, { propertyName: "thumbsDownButtonTemplate", first: true, predicate: ["thumbsDownButton"], descendants: true, read: TemplateRef }, { propertyName: "readAloudButtonTemplate", first: true, predicate: ["readAloudButton"], descendants: true, read: TemplateRef }, { propertyName: "regenerateButtonTemplate", first: true, predicate: ["regenerateButton"], descendants: true, read: TemplateRef }, { propertyName: "toolCallsViewTemplate", first: true, predicate: ["toolCallsView"], descendants: true, read: TemplateRef }], ngImport: i0, template: `
114
114
  <div [class]="computedClass()" [attr.data-message-id]="message().id">
115
115
  <!-- Markdown Renderer -->
116
116
  @if (markdownRendererTemplate || markdownRendererComponent()) {
@@ -244,7 +244,7 @@ export class CopilotChatAssistantMessage {
244
244
  }
245
245
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatAssistantMessage, decorators: [{
246
246
  type: Component,
247
- args: [{ standalone: true, selector: "copilot-chat-assistant-message", imports: [
247
+ args: [{ standalone: true, selector: "copilot-chat-assistant-message", host: { "data-copilotkit": "" }, imports: [
248
248
  CommonModule,
249
249
  CopilotSlot,
250
250
  CopilotChatAssistantMessageRenderer,
@@ -412,4 +412,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
412
412
  type: ContentChild,
413
413
  args: ["toolCallsView", { read: TemplateRef }]
414
414
  }] } });
415
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUVSLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFnQjFFLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hHLE9BQU8sRUFDTCxxQ0FBcUMsRUFDckMseUNBQXlDLEVBQ3pDLDJDQUEyQyxHQUM1QyxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7QUE4VHZFLE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsNENBQTRDO0lBRTVDLHdCQUF3QixDQUF3RDtJQUVoRixlQUFlLENBQStDO0lBRTlELGtCQUFrQixDQUFrRDtJQUVwRSxzQkFBc0IsQ0FBc0M7SUFFNUQsd0JBQXdCLENBQXdDO0lBRWhFLHVCQUF1QixDQUF1QztJQUU5RCx3QkFBd0IsQ0FBd0M7SUFFaEUscUJBQXFCLENBQW9CO0lB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aW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBUZW1wbGF0ZVJlZixcbiAgQ29udGVudENoaWxkLFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBUeXBlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIE9wdGlvbmFsLFxuICBJbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDb3BpbG90U2xvdCB9IGZyb20gXCIuLi8uLi9zbG90cy9jb3BpbG90LXNsb3RcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0VG9vbENhbGxzVmlldyB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC10b29sLWNhbGxzLXZpZXdcIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZSB9IGZyb20gXCJAYWctdWkvY29yZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBBc3Npc3RhbnRNZXNzYWdlLFxuICB0eXBlIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uVGh1bWJzVXBQcm9wcyxcbiAgdHlwZSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblRodW1ic0Rvd25Qcm9wcyxcbiAgdHlwZSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblJlYWRBbG91ZFByb3BzLFxuICB0eXBlIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uUmVnZW5lcmF0ZVByb3BzLFxuICB0eXBlIEFzc2lzdGFudE1lc3NhZ2VNYXJrZG93blJlbmRlcmVyQ29udGV4dCxcbiAgdHlwZSBBc3Npc3RhbnRNZXNzYWdlQ29weUJ1dHRvbkNvbnRleHQsXG4gIHR5cGUgVGh1bWJzVXBCdXR0b25Db250ZXh0LFxuICB0eXBlIFRodW1ic0Rvd25CdXR0b25Db250ZXh0LFxuICB0eXBlIFJlYWRBbG91ZEJ1dHRvbkNvbnRleHQsXG4gIHR5cGUgUmVnZW5lcmF0ZUJ1dHRvbkNvbnRleHQsXG4gIHR5cGUgQXNzaXN0YW50TWVzc2FnZVRvb2xiYXJDb250ZXh0LFxufSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UudHlwZXNcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVJlbmRlcmVyIH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyXCI7XG5pbXBvcnQge1xuICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VDb3B5QnV0dG9uLFxuICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUaHVtYnNVcEJ1dHRvbixcbiAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVGh1bWJzRG93bkJ1dHRvbixcbn0gZnJvbSBcIi4vY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLWJ1dHRvbnNcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRvb2xiYXIgfSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtdG9vbGJhclwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0Vmlld0hhbmRsZXJzIH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LXZpZXctaGFuZGxlcnNcIjtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZVwiLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvcGlsb3RTbG90LFxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVJlbmRlcmVyLFxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZUNvcHlCdXR0b24sXG4gICAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVG9vbGJhcixcbiAgICBDb3BpbG90Q2hhdFRvb2xDYWxsc1ZpZXcsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3MoKVwiIFthdHRyLmRhdGEtbWVzc2FnZS1pZF09XCJtZXNzYWdlKCkuaWRcIj5cbiAgICAgIDwhLS0gTWFya2Rvd24gUmVuZGVyZXIgLS0+XG4gICAgICBAaWYgKG1hcmtkb3duUmVuZGVyZXJUZW1wbGF0ZSB8fCBtYXJrZG93blJlbmRlcmVyQ29tcG9uZW50KCkpIHtcbiAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgIFtzbG90XT1cIm1hcmtkb3duUmVuZGVyZXJUZW1wbGF0ZSB8fCBtYXJrZG93blJlbmRlcmVyQ29tcG9uZW50KClcIlxuICAgICAgICAgIFtjb250ZXh0XT1cIm1hcmtkb3duUmVuZGVyZXJDb250ZXh0KClcIlxuICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVJlbmRlcmVyXCJcbiAgICAgICAgPlxuICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8Y29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyXG4gICAgICAgICAgW2NvbnRlbnRdPVwibWVzc2FnZSgpLmNvbnRlbnQgfHwgJydcIlxuICAgICAgICAgIFtpbnB1dENsYXNzXT1cIm1hcmtkb3duUmVuZGVyZXJDbGFzcygpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2NvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlcj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBUb29sIENhbGxzIFZpZXcgLS0+XG4gICAgICBAaWYgKHRvb2xDYWxsc1ZpZXdUZW1wbGF0ZSB8fCB0b29sQ2FsbHNWaWV3Q29tcG9uZW50KCkpIHtcbiAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgIFtzbG90XT1cInRvb2xDYWxsc1ZpZXdUZW1wbGF0ZSB8fCB0b29sQ2FsbHNWaWV3Q29tcG9uZW50KClcIlxuICAgICAgICAgIFtjb250ZXh0XT1cInRvb2xDYWxsc1ZpZXdDb250ZXh0KClcIlxuICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0VG9vbENhbGxzVmlld1wiXG4gICAgICAgID5cbiAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICB9IEBlbHNlIGlmIChtZXNzYWdlKCkudG9vbENhbGxzICYmIG1lc3NhZ2UoKSEudG9vbENhbGxzIS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxjb3BpbG90LWNoYXQtdG9vbC1jYWxscy12aWV3XG4gICAgICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZSgpIVwiXG4gICAgICAgICAgW21lc3NhZ2VzXT1cIm1lc3NhZ2VzKClcIlxuICAgICAgICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nKClcIlxuICAgICAgICA+XG4gICAgICAgIDwvY29waWxvdC1jaGF0LXRvb2wtY2FsbHMtdmlldz5cbiAgICAgIH1cblxuICAgICAgPCEtLSBUb29sYmFyOiBzaG93IG9ubHkgd2hlbiB0aGVyZSBpcyBhc3Npc3RhbnQgdGV4dCBjb250ZW50IC0tPlxuICAgICAgQGlmICh0b29sYmFyVmlzaWJsZSgpICYmIGhhc01lc3NhZ2VDb250ZW50KCkpIHtcbiAgICAgICAgQGlmICh0b29sYmFyVGVtcGxhdGUgfHwgdG9vbGJhckNvbXBvbmVudCgpKSB7XG4gICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgW3Nsb3RdPVwidG9vbGJhclRlbXBsYXRlIHx8IHRvb2xiYXJDb21wb25lbnQoKVwiXG4gICAgICAgICAgICBbY29udGV4dF09XCJ0b29sYmFyQ29udGV4dCgpXCJcbiAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRvb2xiYXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyIFtpbnB1dENsYXNzXT1cInRvb2xiYXJDbGFzcygpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgPCEtLSBDb3B5IGJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgQGlmIChjb3B5QnV0dG9uVGVtcGxhdGUgfHwgY29weUJ1dHRvbkNvbXBvbmVudCgpKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwiY29weUJ1dHRvblRlbXBsYXRlIHx8IGNvcHlCdXR0b25Db21wb25lbnQoKVwiXG4gICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJ7IGNvbnRlbnQ6IG1lc3NhZ2UoKS5jb250ZW50IHx8ICcnIH1cIlxuICAgICAgICAgICAgICAgICAgW2RlZmF1bHRDb21wb25lbnRdPVwiQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlQ29weUJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJjb3B5QnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLWNvcHktYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbY29udGVudF09XCJtZXNzYWdlKCkuY29udGVudFwiXG4gICAgICAgICAgICAgICAgICBbaW5wdXRDbGFzc109XCJjb3B5QnV0dG9uQ2xhc3MoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJoYW5kbGVDb3B5KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1jb3B5LWJ1dHRvbj5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gVGh1bWJzIHVwIGJ1dHRvbiAtIHNob3cgaWYgY3VzdG9tIHNsb3QgcHJvdmlkZWQgT1IgaWYgaGFuZGxlciBhdmFpbGFibGUgYXQgdG9wIGxldmVsIC0tPlxuICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgIHRodW1ic1VwQnV0dG9uQ29tcG9uZW50KCkgfHxcbiAgICAgICAgICAgICAgICB0aHVtYnNVcEJ1dHRvblRlbXBsYXRlIHx8XG4gICAgICAgICAgICAgICAgaGFuZGxlcnMuaGFzQXNzaXN0YW50VGh1bWJzVXBIYW5kbGVyKClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwidGh1bWJzVXBCdXR0b25UZW1wbGF0ZSB8fCB0aHVtYnNVcEJ1dHRvbkNvbXBvbmVudCgpXCJcbiAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInt9XCJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cImRlZmF1bHRUaHVtYnNVcEJ1dHRvbkNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJ0aHVtYnNVcEJ1dHRvbk91dHB1dHNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gVGh1bWJzIGRvd24gYnV0dG9uIC0gc2hvdyBpZiBjdXN0b20gc2xvdCBwcm92aWRlZCBPUiBpZiBoYW5kbGVyIGF2YWlsYWJsZSBhdCB0b3AgbGV2ZWwgLS0+XG4gICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgdGh1bWJzRG93bkJ1dHRvbkNvbXBvbmVudCgpIHx8XG4gICAgICAgICAgICAgICAgdGh1bWJzRG93bkJ1dHRvblRlbXBsYXRlIHx8XG4gICAgICAgICAgICAgICAgaGFuZGxlcnMuaGFzQXNzaXN0YW50VGh1bWJzRG93bkhhbmRsZXIoKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICAgICAgICBbc2xvdF09XCJcbiAgICAgICAgICAgICAgICAgICAgdGh1bWJzRG93bkJ1dHRvblRlbXBsYXRlIHx8IHRodW1ic0Rvd25CdXR0b25Db21wb25lbnQoKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInt9XCJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cImRlZmF1bHRUaHVtYnNEb3duQnV0dG9uQ29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgIFtvdXRwdXRzXT1cInRodW1ic0Rvd25CdXR0b25PdXRwdXRzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICA8IS0tIFJlYWQgYWxvdWQgYnV0dG9uIC0gb25seSBzaG93IGlmIGN1c3RvbSBzbG90IHByb3ZpZGVkIC0tPlxuICAgICAgICAgICAgICBAaWYgKHJlYWRBbG91ZEJ1dHRvbkNvbXBvbmVudCgpIHx8IHJlYWRBbG91ZEJ1dHRvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwicmVhZEFsb3VkQnV0dG9uVGVtcGxhdGUgfHwgcmVhZEFsb3VkQnV0dG9uQ29tcG9uZW50KClcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwie31cIlxuICAgICAgICAgICAgICAgICAgW291dHB1dHNdPVwicmVhZEFsb3VkQnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPCEtLSBSZWdlbmVyYXRlIGJ1dHRvbiAtIG9ubHkgc2hvdyBpZiBjdXN0b20gc2xvdCBwcm92aWRlZCAtLT5cbiAgICAgICAgICAgICAgQGlmIChyZWdlbmVyYXRlQnV0dG9uQ29tcG9uZW50KCkgfHwgcmVnZW5lcmF0ZUJ1dHRvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwiXG4gICAgICAgICAgICAgICAgICAgIHJlZ2VuZXJhdGVCdXR0b25UZW1wbGF0ZSB8fCByZWdlbmVyYXRlQnV0dG9uQ29tcG9uZW50KClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJ7fVwiXG4gICAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJyZWdlbmVyYXRlQnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPCEtLSBBZGRpdGlvbmFsIHRvb2xiYXIgaXRlbXMgLS0+XG4gICAgICAgICAgICAgIEBpZiAoYWRkaXRpb25hbFRvb2xiYXJJdGVtcygpKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkaXRpb25hbFRvb2xiYXJJdGVtcygpIHx8IG51bGxcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLyogSW1wb3J0IEthVGVYIHN0eWxlcyAqL1xuICAgICAgQGltcG9ydCBcImthdGV4L2Rpc3Qva2F0ZXgubWluLmNzc1wiO1xuXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLyogQXRvbSBPbmUgTGlnaHQgdGhlbWUgZm9yIGhpZ2hsaWdodC5qcyAqL1xuICAgICAgLmhsanMge1xuICAgICAgICBjb2xvcjogcmdiKDU2LCA1OCwgNjYpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLmhsanMtY29tbWVudCxcbiAgICAgIC5obGpzLXF1b3RlIHtcbiAgICAgICAgY29sb3I6ICNhMGExYTc7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIH1cblxuICAgICAgLmhsanMtZG9jdGFnLFxuICAgICAgLmhsanMtZm9ybXVsYSxcbiAgICAgIC5obGpzLWtleXdvcmQge1xuICAgICAgICBjb2xvcjogI2E2MjZhNDtcbiAgICAgIH1cblxuICAgICAgLmhsanMtZGVsZXRpb24sXG4gICAgICAuaGxqcy1uYW1lLFxuICAgICAgLmhsanMtc2VjdGlvbixcbiAgICAgIC5obGpzLXNlbGVjdG9yLXRhZyxcbiAgICAgIC5obGpzLXN1YnN0IHtcbiAgICAgICAgY29sb3I6ICNlNDU2NDk7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLWxpdGVyYWwge1xuICAgICAgICBjb2xvcjogIzAxODRiYjtcbiAgICAgIH1cblxuICAgICAgLmhsanMtYWRkaXRpb24sXG4gICAgICAuaGxqcy1hdHRyaWJ1dGUsXG4gICAgICAuaGxqcy1tZXRhIC5obGpzLXN0cmluZyxcbiAgICAgIC5obGpzLXJlZ2V4cCxcbiAgICAgIC5obGpzLXN0cmluZyB7XG4gICAgICAgIGNvbG9yOiAjNTBhMTRmO1xuICAgICAgfVxuXG4gICAgICAuaGxqcy1hdHRyLFxuICAgICAgLmhsanMtbnVtYmVyLFxuICAgICAgLmhsanMtc2VsZWN0b3ItYXR0cixcbiAgICAgIC5obGpzLXNlbGVjdG9yLWNsYXNzLFxuICAgICAgLmhsanMtc2VsZWN0b3ItcHNldWRvLFxuICAgICAgLmhsanMtdGVtcGxhdGUtdmFyaWFibGUsXG4gICAgICAuaGxqcy10eXBlLFxuICAgICAgLmhsanMtdmFyaWFibGUge1xuICAgICAgICBjb2xvcjogIzk4NjgwMTtcbiAgICAgIH1cblxuICAgICAgLmhsanMtcGFyYW1zIHtcbiAgICAgICAgY29sb3I6IHJnYig1NiwgNTgsIDY2KTtcbiAgICAgIH1cblxuICAgICAgLmhsanMtYnVsbGV0LFxuICAgICAgLmhsanMtbGluayxcbiAgICAgIC5obGpzLW1ldGEsXG4gICAgICAuaGxqcy1zZWxlY3Rvci1pZCxcbiAgICAgIC5obGpzLXN5bWJvbCxcbiAgICAgIC5obGpzLXRpdGxlIHtcbiAgICAgICAgY29sb3I6ICM0MDc4ZjI7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLWJ1aWx0X2luLFxuICAgICAgLmhsanMtY2xhc3MgLmhsanMtdGl0bGUsXG4gICAgICAuaGxqcy10aXRsZS5jbGFzc18ge1xuICAgICAgICBjb2xvcjogI2MxODQwMTtcbiAgICAgIH1cblxuICAgICAgLmhsanMtZW1waGFzaXMge1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLXN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLWxpbmsge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgIH1cblxuICAgICAgLyogQXRvbSBPbmUgRGFyayB0aGVtZSBmb3IgaGlnaGxpZ2h0LmpzICovXG4gICAgICAuZGFyayAuaGxqcyB7XG4gICAgICAgIGNvbG9yOiAjYWJiMmJmO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtY29tbWVudCxcbiAgICAgIC5kYXJrIC5obGpzLXF1b3RlIHtcbiAgICAgICAgY29sb3I6ICM1YzYzNzA7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtZG9jdGFnLFxuICAgICAgLmRhcmsgLmhsanMtZm9ybXVsYSxcbiAgICAgIC5kYXJrIC5obGpzLWtleXdvcmQge1xuICAgICAgICBjb2xvcjogI2M2NzhkZDtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtZGVsZXRpb24sXG4gICAgICAuZGFyayAuaGxqcy1uYW1lLFxuICAgICAgLmRhcmsgLmhsanMtc2VjdGlvbixcbiAgICAgIC5kYXJrIC5obGpzLXNlbGVjdG9yLXRhZyxcbiAgICAgIC5kYXJrIC5obGpzLXN1YnN0IHtcbiAgICAgICAgY29sb3I6ICNlMDZjNzU7XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIC5obGpzLWxpdGVyYWwge1xuICAgICAgICBjb2xvcjogIzU2YjZjMjtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtYWRkaXRpb24sXG4gICAgICAuZGFyayAuaGxqcy1hdHRyaWJ1dGUsXG4gICAgICAuZGFyayAuaGxqcy1tZXRhIC5obGpzLXN0cmluZyxcbiAgICAgIC5kYXJrIC5obGpzLXJlZ2V4cCxcbiAgICAgIC5kYXJrIC5obGpzLXN0cmluZyB7XG4gICAgICAgIGNvbG9yOiAjOThjMzc5O1xuICAgICAgfVxuXG4gICAgICAuZGFyayAuaGxqcy1hdHRyLFxuICAgICAgLmRhcmsgLmhsanMtbnVtYmVyLFxuICAgICAgLmRhcmsgLmhsanMtc2VsZWN0b3ItYXR0cixcbiAgICAgIC5kYXJrIC5obGpzLXNlbGVjdG9yLWNsYXNzLFxuICAgICAgLmRhcmsgLmhsanMtc2VsZWN0b3ItcHNldWRvLFxuICAgICAgLmRhcmsgLmhsanMtdGVtcGxhdGUtdmFyaWFibGUsXG4gICAgICAuZGFyayAuaGxqcy10eXBlLFxuICAgICAgLmRhcmsgLmhsanMtdmFyaWFibGUge1xuICAgICAgICBjb2xvcjogI2QxOWE2NjtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtYnVsbGV0LFxuICAgICAgLmRhcmsgLmhsanMtbGluayxcbiAgICAgIC5kYXJrIC5obGpzLW1ldGEsXG4gICAgICAuZGFyayAuaGxqcy1zZWxlY3Rvci1pZCxcbiAgICAgIC5kYXJrIC5obGpzLXN5bWJvbCxcbiAgICAgIC5kYXJrIC5obGpzLXRpdGxlIHtcbiAgICAgICAgY29sb3I6ICM2MWFlZWU7XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIC5obGpzLWJ1aWx0X2luLFxuICAgICAgLmRhcmsgLmhsanMtY2xhc3MgLmhsanMtdGl0bGUsXG4gICAgICAuZGFyayAuaGxqcy10aXRsZS5jbGFzc18ge1xuICAgICAgICBjb2xvcjogI2U2YzA3YjtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtcGFyYW1zIHtcbiAgICAgICAgY29sb3I6ICNhYmIyYmY7IC8qIHNhbWUgYXMgcmVndWxhciB0ZXh0ICovXG4gICAgICB9XG5cbiAgICAgIC5kYXJrIC5obGpzLWVtcGhhc2lzIHtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgfVxuXG4gICAgICAuZGFyayAuaGxqcy1zdHJvbmcge1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgfVxuXG4gICAgICAuZGFyayAuaGxqcy1saW5rIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlIHtcbiAgLy8gQ2FwdHVyZSB0ZW1wbGF0ZXMgZnJvbSBjb250ZW50IHByb2plY3Rpb25cbiAgQENvbnRlbnRDaGlsZChcIm1hcmtkb3duUmVuZGVyZXJcIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBtYXJrZG93blJlbmRlcmVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxBc3Npc3RhbnRNZXNzYWdlTWFya2Rvd25SZW5kZXJlckNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKFwidG9vbGJhclwiLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHRvb2xiYXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoXCJjb3B5QnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgY29weUJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8QXNzaXN0YW50TWVzc2FnZUNvcHlCdXR0b25Db250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZChcInRodW1ic1VwQnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgdGh1bWJzVXBCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPFRodW1ic1VwQnV0dG9uQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoXCJ0aHVtYnNEb3duQnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgdGh1bWJzRG93bkJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8VGh1bWJzRG93bkJ1dHRvbkNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKFwicmVhZEFsb3VkQnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcmVhZEFsb3VkQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxSZWFkQWxvdWRCdXR0b25Db250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZChcInJlZ2VuZXJhdGVCdXR0b25cIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICByZWdlbmVyYXRlQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxSZWdlbmVyYXRlQnV0dG9uQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoXCJ0b29sQ2FsbHNWaWV3XCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgdG9vbENhbGxzVmlld1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvLyBDbGFzcyBpbnB1dHMgZm9yIHN0eWxpbmcgZGVmYXVsdCBjb21wb25lbnRzXG4gIHJlYWRvbmx5IG1hcmtkb3duUmVuZGVyZXJDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdG9vbGJhckNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjb3B5QnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHRodW1ic1VwQnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHRodW1ic0Rvd25CdXR0b25DbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmVhZEFsb3VkQnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHJlZ2VuZXJhdGVCdXR0b25DbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdG9vbENhbGxzVmlld0NsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vIENvbXBvbmVudCBpbnB1dHMgZm9yIG92ZXJyaWRlc1xuICByZWFkb25seSBtYXJrZG93blJlbmRlcmVyQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB0b29sYmFyQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjb3B5QnV0dG9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB0aHVtYnNVcEJ1dHRvbkNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdGh1bWJzRG93bkJ1dHRvbkNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmVhZEFsb3VkQnV0dG9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSByZWdlbmVyYXRlQnV0dG9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB0b29sQ2FsbHNWaWV3Q29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vIFJlZ3VsYXIgaW5wdXRzXG4gIHJlYWRvbmx5IG1lc3NhZ2UgPSBpbnB1dC5yZXF1aXJlZDxBc3Npc3RhbnRNZXNzYWdlPigpO1xuICByZWFkb25seSBtZXNzYWdlcyA9IGlucHV0PE1lc3NhZ2VbXT4oW10pO1xuICByZWFkb25seSBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxUb29sYmFySXRlbXMgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWQsXG4gICk7XG4gIHJlYWRvbmx5IHRvb2xiYXJWaXNpYmxlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IGlucHV0Q2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLy8gREkgc2VydmljZSBleHBvc2VzIGhhbmRsZXIgYXZhaWxhYmlsaXR5IHNjb3BlZCB0byBDb3BpbG90Q2hhdFZpZXdcbiAgLy8gTWFrZSBpdCBvcHRpb25hbCB3aXRoIGEgZGVmYXVsdCBmYWxsYmFjayBmb3IgdGVzdGluZ1xuICBoYW5kbGVyczogQ29waWxvdENoYXRWaWV3SGFuZGxlcnM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KENvcGlsb3RDaGF0Vmlld0hhbmRsZXJzKVxuICAgIGhhbmRsZXJzPzogQ29waWxvdENoYXRWaWV3SGFuZGxlcnMgfCBudWxsLFxuICApIHtcbiAgICB0aGlzLmhhbmRsZXJzID0gaGFuZGxlcnMgfHwgbmV3IENvcGlsb3RDaGF0Vmlld0hhbmRsZXJzKCk7XG4gIH1cblxuICAvLyBPdXRwdXQgZXZlbnRzXG4gIHRodW1ic1VwID0gb3V0cHV0PENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uVGh1bWJzVXBQcm9wcz4oKTtcbiAgdGh1bWJzRG93biA9IG91dHB1dDxDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblRodW1ic0Rvd25Qcm9wcz4oKTtcbiAgcmVhZEFsb3VkID0gb3V0cHV0PENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uUmVhZEFsb3VkUHJvcHM+KCk7XG4gIHJlZ2VuZXJhdGUgPSBvdXRwdXQ8Q29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlT25SZWdlbmVyYXRlUHJvcHM+KCk7XG5cbiAgLy8gU2lnbmFsc1xuICBjdXN0b21DbGFzcyA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLy8gQ29tcHV0ZWQgdmFsdWVzXG4gIGNvbXB1dGVkQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgXCJwcm9zZSBtYXgtdy1mdWxsIGJyZWFrLXdvcmRzIGRhcms6cHJvc2UtaW52ZXJ0XCIsXG4gICAgICB0aGlzLmN1c3RvbUNsYXNzKCksXG4gICAgKTtcbiAgfSk7XG5cbiAgLy8gRGVmYXVsdCBjb21wb25lbnRzXG4gIHByb3RlY3RlZCByZWFkb25seSBkZWZhdWx0VGh1bWJzVXBCdXR0b25Db21wb25lbnQgPVxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRodW1ic1VwQnV0dG9uO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFRodW1ic0Rvd25CdXR0b25Db21wb25lbnQgPVxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRodW1ic0Rvd25CdXR0b247XG4gIHByb3RlY3RlZCByZWFkb25seSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VSZW5kZXJlciA9XG4gICAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlUmVuZGVyZXI7XG4gIHByb3RlY3RlZCByZWFkb25seSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyID1cbiAgICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlQ29weUJ1dHRvbiA9XG4gICAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlQ29weUJ1dHRvbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IENvcGlsb3RDaGF0VG9vbENhbGxzVmlldyA9IENvcGlsb3RDaGF0VG9vbENhbGxzVmlldztcblxuICAvLyBDb250ZXh0IGZvciBzbG90cyAocmVhY3RpdmUgdmlhIHNpZ25hbHMpXG4gIG1hcmtkb3duUmVuZGVyZXJDb250ZXh0ID0gY29tcHV0ZWQ8QXNzaXN0YW50TWVzc2FnZU1hcmtkb3duUmVuZGVyZXJDb250ZXh0PihcbiAgICAoKSA9PiAoe1xuICAgICAgY29udGVudDogdGhpcy5tZXNzYWdlKCk/LmNvbnRlbnQgfHwgXCJcIixcbiAgICB9KSxcbiAgKTtcblxuICAvLyBPdXRwdXQgbWFwcyBmb3Igc2xvdHNcbiAgY29weUJ1dHRvbk91dHB1dHMgPSB7IGNsaWNrZWQ6ICgpID0+IHRoaXMuaGFuZGxlQ29weSgpIH07XG4gIHRodW1ic1VwQnV0dG9uT3V0cHV0cyA9IHsgY2xpY2tlZDogKCkgPT4gdGhpcy5oYW5kbGVUaHVtYnNVcCgpIH07XG4gIHRodW1ic0Rvd25CdXR0b25PdXRwdXRzID0geyBjbGlja2VkOiAoKSA9PiB0aGlzLmhhbmRsZVRodW1ic0Rvd24oKSB9O1xuICByZWFkQWxvdWRCdXR0b25PdXRwdXRzID0geyBjbGlja2VkOiAoKSA9PiB0aGlzLmhhbmRsZVJlYWRBbG91ZCgpIH07XG4gIHJlZ2VuZXJhdGVCdXR0b25PdXRwdXRzID0geyBjbGlja2VkOiAoKSA9PiB0aGlzLmhhbmRsZVJlZ2VuZXJhdGUoKSB9O1xuXG4gIHRvb2xiYXJDb250ZXh0ID0gY29tcHV0ZWQ8QXNzaXN0YW50TWVzc2FnZVRvb2xiYXJDb250ZXh0PigoKSA9PiAoe1xuICAgIGNoaWxkcmVuOiBudWxsLCAvLyBXaWxsIGJlIHBvcHVsYXRlZCBieSB0aGUgdG9vbGJhciBjb250ZW50XG4gIH0pKTtcblxuICAvLyBSZXR1cm4gdHJ1ZSBpZiBhc3Npc3RhbnQgbWVzc2FnZSBoYXMgbm9uLWVtcHR5IHRleHQgY29udGVudFxuICBoYXNNZXNzYWdlQ29udGVudCgpOiBib29sZWFuIHtcbiAgICBjb25zdCByYXcgPSAodGhpcy5tZXNzYWdlKCk/LmNvbnRlbnQgPz8gXCJcIikgYXMgYW55O1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0eXBlb2YgcmF3ID09PSBcInN0cmluZ1wiID8gcmF3IDogU3RyaW5nKHJhdyA/PyBcIlwiKTtcbiAgICByZXR1cm4gY29udGVudC50cmltKCkubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHRvb2xDYWxsc1ZpZXdDb250ZXh0ID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UoKSxcbiAgICBtZXNzYWdlczogdGhpcy5tZXNzYWdlcygpLFxuICAgIGlzTG9hZGluZzogdGhpcy5pc0xvYWRpbmcoKSxcbiAgfSkpO1xuXG4gIGhhbmRsZUNvcHkoKTogdm9pZCB7XG4gICAgLy8gQ29weSBpcyBoYW5kbGVkIGJ5IHRoZSBidXR0b24gY29tcG9uZW50IGl0c2VsZlxuICAgIC8vIFRoaXMgaXMganVzdCBmb3IgYW55IGFkZGl0aW9uYWwgbG9naWMgaWYgbmVlZGVkXG4gIH1cblxuICBoYW5kbGVUaHVtYnNVcCgpOiB2b2lkIHtcbiAgICB0aGlzLnRodW1ic1VwLmVtaXQoeyBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UoKSB9KTtcbiAgfVxuXG4gIGhhbmRsZVRodW1ic0Rvd24oKTogdm9pZCB7XG4gICAgdGhpcy50aHVtYnNEb3duLmVtaXQoeyBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UoKSB9KTtcbiAgfVxuXG4gIGhhbmRsZVJlYWRBbG91ZCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlYWRBbG91ZC5lbWl0KHsgbWVzc2FnZTogdGhpcy5tZXNzYWdlKCkgfSk7XG4gIH1cblxuICBoYW5kbGVSZWdlbmVyYXRlKCk6IHZvaWQge1xuICAgIHRoaXMucmVnZW5lcmF0ZS5lbWl0KHsgbWVzc2FnZTogdGhpcy5tZXNzYWdlKCkgfSk7XG4gIH1cbn1cbiJdfQ==
415
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUVSLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFnQjFFLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hHLE9BQU8sRUFDTCxxQ0FBcUMsRUFDckMseUNBQXlDLEVBQ3pDLDJDQUEyQyxHQUM1QyxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7QUErVHZFLE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsNENBQTRDO0lBRTVDLHdCQUF3QixDQUF3RDtJQUVoRixlQUFlLENBQStDO0lBRTlELGtCQUFrQixDQUFrRDtJQUVwRSxzQkFBc0IsQ0FBc0M7SUFFNUQsd0JBQXdCLENBQXdDO0lBRWhFLHVCQUF1QixDQUF1QztJQUU5RCx3QkFBd0IsQ0FBd0M7SUFFaEUscUJBQXFCLENBQW9CO0lB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QUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBUZW1wbGF0ZVJlZixcbiAgQ29udGVudENoaWxkLFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBUeXBlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIE9wdGlvbmFsLFxuICBJbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDb3BpbG90U2xvdCB9IGZyb20gXCIuLi8uLi9zbG90cy9jb3BpbG90LXNsb3RcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0VG9vbENhbGxzVmlldyB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC10b29sLWNhbGxzLXZpZXdcIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZSB9IGZyb20gXCJAYWctdWkvY29yZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBBc3Npc3RhbnRNZXNzYWdlLFxuICB0eXBlIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uVGh1bWJzVXBQcm9wcyxcbiAgdHlwZSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblRodW1ic0Rvd25Qcm9wcyxcbiAgdHlwZSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblJlYWRBbG91ZFByb3BzLFxuICB0eXBlIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uUmVnZW5lcmF0ZVByb3BzLFxuICB0eXBlIEFzc2lzdGFudE1lc3NhZ2VNYXJrZG93blJlbmRlcmVyQ29udGV4dCxcbiAgdHlwZSBBc3Npc3RhbnRNZXNzYWdlQ29weUJ1dHRvbkNvbnRleHQsXG4gIHR5cGUgVGh1bWJzVXBCdXR0b25Db250ZXh0LFxuICB0eXBlIFRodW1ic0Rvd25CdXR0b25Db250ZXh0LFxuICB0eXBlIFJlYWRBbG91ZEJ1dHRvbkNvbnRleHQsXG4gIHR5cGUgUmVnZW5lcmF0ZUJ1dHRvbkNvbnRleHQsXG4gIHR5cGUgQXNzaXN0YW50TWVzc2FnZVRvb2xiYXJDb250ZXh0LFxufSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UudHlwZXNcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVJlbmRlcmVyIH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyXCI7XG5pbXBvcnQge1xuICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VDb3B5QnV0dG9uLFxuICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUaHVtYnNVcEJ1dHRvbixcbiAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVGh1bWJzRG93bkJ1dHRvbixcbn0gZnJvbSBcIi4vY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLWJ1dHRvbnNcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRvb2xiYXIgfSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtdG9vbGJhclwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0Vmlld0hhbmRsZXJzIH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LXZpZXctaGFuZGxlcnNcIjtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZVwiLFxuICBob3N0OiB7IFwiZGF0YS1jb3BpbG90a2l0XCI6IFwiXCIgfSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBDb3BpbG90U2xvdCxcbiAgICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VSZW5kZXJlcixcbiAgICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VDb3B5QnV0dG9uLFxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRvb2xiYXIsXG4gICAgQ29waWxvdENoYXRUb29sQ2FsbHNWaWV3LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzc109XCJjb21wdXRlZENsYXNzKClcIiBbYXR0ci5kYXRhLW1lc3NhZ2UtaWRdPVwibWVzc2FnZSgpLmlkXCI+XG4gICAgICA8IS0tIE1hcmtkb3duIFJlbmRlcmVyIC0tPlxuICAgICAgQGlmIChtYXJrZG93blJlbmRlcmVyVGVtcGxhdGUgfHwgbWFya2Rvd25SZW5kZXJlckNvbXBvbmVudCgpKSB7XG4gICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICBbc2xvdF09XCJtYXJrZG93blJlbmRlcmVyVGVtcGxhdGUgfHwgbWFya2Rvd25SZW5kZXJlckNvbXBvbmVudCgpXCJcbiAgICAgICAgICBbY29udGV4dF09XCJtYXJrZG93blJlbmRlcmVyQ29udGV4dCgpXCJcbiAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VSZW5kZXJlclwiXG4gICAgICAgID5cbiAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlclxuICAgICAgICAgIFtjb250ZW50XT1cIm1lc3NhZ2UoKS5jb250ZW50IHx8ICcnXCJcbiAgICAgICAgICBbaW5wdXRDbGFzc109XCJtYXJrZG93blJlbmRlcmVyQ2xhc3MoKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9jb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXI+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gVG9vbCBDYWxscyBWaWV3IC0tPlxuICAgICAgQGlmICh0b29sQ2FsbHNWaWV3VGVtcGxhdGUgfHwgdG9vbENhbGxzVmlld0NvbXBvbmVudCgpKSB7XG4gICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICBbc2xvdF09XCJ0b29sQ2FsbHNWaWV3VGVtcGxhdGUgfHwgdG9vbENhbGxzVmlld0NvbXBvbmVudCgpXCJcbiAgICAgICAgICBbY29udGV4dF09XCJ0b29sQ2FsbHNWaWV3Q29udGV4dCgpXCJcbiAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJDb3BpbG90Q2hhdFRvb2xDYWxsc1ZpZXdcIlxuICAgICAgICA+XG4gICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgfSBAZWxzZSBpZiAobWVzc2FnZSgpLnRvb2xDYWxscyAmJiBtZXNzYWdlKCkhLnRvb2xDYWxscyEubGVuZ3RoID4gMCkge1xuICAgICAgICA8Y29waWxvdC1jaGF0LXRvb2wtY2FsbHMtdmlld1xuICAgICAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2UoKSFcIlxuICAgICAgICAgIFttZXNzYWdlc109XCJtZXNzYWdlcygpXCJcbiAgICAgICAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZygpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2NvcGlsb3QtY2hhdC10b29sLWNhbGxzLXZpZXc+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gVG9vbGJhcjogc2hvdyBvbmx5IHdoZW4gdGhlcmUgaXMgYXNzaXN0YW50IHRleHQgY29udGVudCAtLT5cbiAgICAgIEBpZiAodG9vbGJhclZpc2libGUoKSAmJiBoYXNNZXNzYWdlQ29udGVudCgpKSB7XG4gICAgICAgIEBpZiAodG9vbGJhclRlbXBsYXRlIHx8IHRvb2xiYXJDb21wb25lbnQoKSkge1xuICAgICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICAgIFtzbG90XT1cInRvb2xiYXJUZW1wbGF0ZSB8fCB0b29sYmFyQ29tcG9uZW50KClcIlxuICAgICAgICAgICAgW2NvbnRleHRdPVwidG9vbGJhckNvbnRleHQoKVwiXG4gICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVG9vbGJhciBbaW5wdXRDbGFzc109XCJ0b29sYmFyQ2xhc3MoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgICAgICAgIDwhLS0gQ29weSBidXR0b24gLS0+XG4gICAgICAgICAgICAgIEBpZiAoY29weUJ1dHRvblRlbXBsYXRlIHx8IGNvcHlCdXR0b25Db21wb25lbnQoKSkge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICAgICAgICAgIFtzbG90XT1cImNvcHlCdXR0b25UZW1wbGF0ZSB8fCBjb3B5QnV0dG9uQ29tcG9uZW50KClcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwieyBjb250ZW50OiBtZXNzYWdlKCkuY29udGVudCB8fCAnJyB9XCJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZUNvcHlCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgW291dHB1dHNdPVwiY29weUJ1dHRvbk91dHB1dHNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1jb3B5LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwibWVzc2FnZSgpLmNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgW2lucHV0Q2xhc3NdPVwiY29weUJ1dHRvbkNsYXNzKClcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwiaGFuZGxlQ29weSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtY29weS1idXR0b24+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICA8IS0tIFRodW1icyB1cCBidXR0b24gLSBzaG93IGlmIGN1c3RvbSBzbG90IHByb3ZpZGVkIE9SIGlmIGhhbmRsZXIgYXZhaWxhYmxlIGF0IHRvcCBsZXZlbCAtLT5cbiAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICB0aHVtYnNVcEJ1dHRvbkNvbXBvbmVudCgpIHx8XG4gICAgICAgICAgICAgICAgdGh1bWJzVXBCdXR0b25UZW1wbGF0ZSB8fFxuICAgICAgICAgICAgICAgIGhhbmRsZXJzLmhhc0Fzc2lzdGFudFRodW1ic1VwSGFuZGxlcigpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICAgICAgICAgIFtzbG90XT1cInRodW1ic1VwQnV0dG9uVGVtcGxhdGUgfHwgdGh1bWJzVXBCdXR0b25Db21wb25lbnQoKVwiXG4gICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJ7fVwiXG4gICAgICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJkZWZhdWx0VGh1bWJzVXBCdXR0b25Db21wb25lbnRcIlxuICAgICAgICAgICAgICAgICAgW291dHB1dHNdPVwidGh1bWJzVXBCdXR0b25PdXRwdXRzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICA8IS0tIFRodW1icyBkb3duIGJ1dHRvbiAtIHNob3cgaWYgY3VzdG9tIHNsb3QgcHJvdmlkZWQgT1IgaWYgaGFuZGxlciBhdmFpbGFibGUgYXQgdG9wIGxldmVsIC0tPlxuICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgIHRodW1ic0Rvd25CdXR0b25Db21wb25lbnQoKSB8fFxuICAgICAgICAgICAgICAgIHRodW1ic0Rvd25CdXR0b25UZW1wbGF0ZSB8fFxuICAgICAgICAgICAgICAgIGhhbmRsZXJzLmhhc0Fzc2lzdGFudFRodW1ic0Rvd25IYW5kbGVyKClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwiXG4gICAgICAgICAgICAgICAgICAgIHRodW1ic0Rvd25CdXR0b25UZW1wbGF0ZSB8fCB0aHVtYnNEb3duQnV0dG9uQ29tcG9uZW50KClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJ7fVwiXG4gICAgICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJkZWZhdWx0VGh1bWJzRG93bkJ1dHRvbkNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJ0aHVtYnNEb3duQnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPCEtLSBSZWFkIGFsb3VkIGJ1dHRvbiAtIG9ubHkgc2hvdyBpZiBjdXN0b20gc2xvdCBwcm92aWRlZCAtLT5cbiAgICAgICAgICAgICAgQGlmIChyZWFkQWxvdWRCdXR0b25Db21wb25lbnQoKSB8fCByZWFkQWxvdWRCdXR0b25UZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICAgICAgICAgIFtzbG90XT1cInJlYWRBbG91ZEJ1dHRvblRlbXBsYXRlIHx8IHJlYWRBbG91ZEJ1dHRvbkNvbXBvbmVudCgpXCJcbiAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInt9XCJcbiAgICAgICAgICAgICAgICAgIFtvdXRwdXRzXT1cInJlYWRBbG91ZEJ1dHRvbk91dHB1dHNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gUmVnZW5lcmF0ZSBidXR0b24gLSBvbmx5IHNob3cgaWYgY3VzdG9tIHNsb3QgcHJvdmlkZWQgLS0+XG4gICAgICAgICAgICAgIEBpZiAocmVnZW5lcmF0ZUJ1dHRvbkNvbXBvbmVudCgpIHx8IHJlZ2VuZXJhdGVCdXR0b25UZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICAgICAgICAgIFtzbG90XT1cIlxuICAgICAgICAgICAgICAgICAgICByZWdlbmVyYXRlQnV0dG9uVGVtcGxhdGUgfHwgcmVnZW5lcmF0ZUJ1dHRvbkNvbXBvbmVudCgpXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwie31cIlxuICAgICAgICAgICAgICAgICAgW291dHB1dHNdPVwicmVnZW5lcmF0ZUJ1dHRvbk91dHB1dHNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gQWRkaXRpb25hbCB0b29sYmFyIGl0ZW1zIC0tPlxuICAgICAgICAgICAgICBAaWYgKGFkZGl0aW9uYWxUb29sYmFySXRlbXMoKSkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFkZGl0aW9uYWxUb29sYmFySXRlbXMoKSB8fCBudWxsXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC8qIEltcG9ydCBLYVRlWCBzdHlsZXMgKi9cbiAgICAgIEBpbXBvcnQgXCJrYXRleC9kaXN0L2thdGV4Lm1pbi5jc3NcIjtcblxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC8qIEF0b20gT25lIExpZ2h0IHRoZW1lIGZvciBoaWdobGlnaHQuanMgKi9cbiAgICAgIC5obGpzIHtcbiAgICAgICAgY29sb3I6IHJnYig1NiwgNTgsIDY2KTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLWNvbW1lbnQsXG4gICAgICAuaGxqcy1xdW90ZSB7XG4gICAgICAgIGNvbG9yOiAjYTBhMWE3O1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLWRvY3RhZyxcbiAgICAgIC5obGpzLWZvcm11bGEsXG4gICAgICAuaGxqcy1rZXl3b3JkIHtcbiAgICAgICAgY29sb3I6ICNhNjI2YTQ7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLWRlbGV0aW9uLFxuICAgICAgLmhsanMtbmFtZSxcbiAgICAgIC5obGpzLXNlY3Rpb24sXG4gICAgICAuaGxqcy1zZWxlY3Rvci10YWcsXG4gICAgICAuaGxqcy1zdWJzdCB7XG4gICAgICAgIGNvbG9yOiAjZTQ1NjQ5O1xuICAgICAgfVxuXG4gICAgICAuaGxqcy1saXRlcmFsIHtcbiAgICAgICAgY29sb3I6ICMwMTg0YmI7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLWFkZGl0aW9uLFxuICAgICAgLmhsanMtYXR0cmlidXRlLFxuICAgICAgLmhsanMtbWV0YSAuaGxqcy1zdHJpbmcsXG4gICAgICAuaGxqcy1yZWdleHAsXG4gICAgICAuaGxqcy1zdHJpbmcge1xuICAgICAgICBjb2xvcjogIzUwYTE0ZjtcbiAgICAgIH1cblxuICAgICAgLmhsanMtYXR0cixcbiAgICAgIC5obGpzLW51bWJlcixcbiAgICAgIC5obGpzLXNlbGVjdG9yLWF0dHIsXG4gICAgICAuaGxqcy1zZWxlY3Rvci1jbGFzcyxcbiAgICAgIC5obGpzLXNlbGVjdG9yLXBzZXVkbyxcbiAgICAgIC5obGpzLXRlbXBsYXRlLXZhcmlhYmxlLFxuICAgICAgLmhsanMtdHlwZSxcbiAgICAgIC5obGpzLXZhcmlhYmxlIHtcbiAgICAgICAgY29sb3I6ICM5ODY4MDE7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLXBhcmFtcyB7XG4gICAgICAgIGNvbG9yOiByZ2IoNTYsIDU4LCA2Nik7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLWJ1bGxldCxcbiAgICAgIC5obGpzLWxpbmssXG4gICAgICAuaGxqcy1tZXRhLFxuICAgICAgLmhsanMtc2VsZWN0b3ItaWQsXG4gICAgICAuaGxqcy1zeW1ib2wsXG4gICAgICAuaGxqcy10aXRsZSB7XG4gICAgICAgIGNvbG9yOiAjNDA3OGYyO1xuICAgICAgfVxuXG4gICAgICAuaGxqcy1idWlsdF9pbixcbiAgICAgIC5obGpzLWNsYXNzIC5obGpzLXRpdGxlLFxuICAgICAgLmhsanMtdGl0bGUuY2xhc3NfIHtcbiAgICAgICAgY29sb3I6ICNjMTg0MDE7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLWVtcGhhc2lzIHtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgfVxuXG4gICAgICAuaGxqcy1zdHJvbmcge1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgfVxuXG4gICAgICAuaGxqcy1saW5rIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICB9XG5cbiAgICAgIC8qIEF0b20gT25lIERhcmsgdGhlbWUgZm9yIGhpZ2hsaWdodC5qcyAqL1xuICAgICAgLmRhcmsgLmhsanMge1xuICAgICAgICBjb2xvcjogI2FiYjJiZjtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIC5obGpzLWNvbW1lbnQsXG4gICAgICAuZGFyayAuaGxqcy1xdW90ZSB7XG4gICAgICAgIGNvbG9yOiAjNWM2MzcwO1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIC5obGpzLWRvY3RhZyxcbiAgICAgIC5kYXJrIC5obGpzLWZvcm11bGEsXG4gICAgICAuZGFyayAuaGxqcy1rZXl3b3JkIHtcbiAgICAgICAgY29sb3I6ICNjNjc4ZGQ7XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIC5obGpzLWRlbGV0aW9uLFxuICAgICAgLmRhcmsgLmhsanMtbmFtZSxcbiAgICAgIC5kYXJrIC5obGpzLXNlY3Rpb24sXG4gICAgICAuZGFyayAuaGxqcy1zZWxlY3Rvci10YWcsXG4gICAgICAuZGFyayAuaGxqcy1zdWJzdCB7XG4gICAgICAgIGNvbG9yOiAjZTA2Yzc1O1xuICAgICAgfVxuXG4gICAgICAuZGFyayAuaGxqcy1saXRlcmFsIHtcbiAgICAgICAgY29sb3I6ICM1NmI2YzI7XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIC5obGpzLWFkZGl0aW9uLFxuICAgICAgLmRhcmsgLmhsanMtYXR0cmlidXRlLFxuICAgICAgLmRhcmsgLmhsanMtbWV0YSAuaGxqcy1zdHJpbmcsXG4gICAgICAuZGFyayAuaGxqcy1yZWdleHAsXG4gICAgICAuZGFyayAuaGxqcy1zdHJpbmcge1xuICAgICAgICBjb2xvcjogIzk4YzM3OTtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtYXR0cixcbiAgICAgIC5kYXJrIC5obGpzLW51bWJlcixcbiAgICAgIC5kYXJrIC5obGpzLXNlbGVjdG9yLWF0dHIsXG4gICAgICAuZGFyayAuaGxqcy1zZWxlY3Rvci1jbGFzcyxcbiAgICAgIC5kYXJrIC5obGpzLXNlbGVjdG9yLXBzZXVkbyxcbiAgICAgIC5kYXJrIC5obGpzLXRlbXBsYXRlLXZhcmlhYmxlLFxuICAgICAgLmRhcmsgLmhsanMtdHlwZSxcbiAgICAgIC5kYXJrIC5obGpzLXZhcmlhYmxlIHtcbiAgICAgICAgY29sb3I6ICNkMTlhNjY7XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIC5obGpzLWJ1bGxldCxcbiAgICAgIC5kYXJrIC5obGpzLWxpbmssXG4gICAgICAuZGFyayAuaGxqcy1tZXRhLFxuICAgICAgLmRhcmsgLmhsanMtc2VsZWN0b3ItaWQsXG4gICAgICAuZGFyayAuaGxqcy1zeW1ib2wsXG4gICAgICAuZGFyayAuaGxqcy10aXRsZSB7XG4gICAgICAgIGNvbG9yOiAjNjFhZWVlO1xuICAgICAgfVxuXG4gICAgICAuZGFyayAuaGxqcy1idWlsdF9pbixcbiAgICAgIC5kYXJrIC5obGpzLWNsYXNzIC5obGpzLXRpdGxlLFxuICAgICAgLmRhcmsgLmhsanMtdGl0bGUuY2xhc3NfIHtcbiAgICAgICAgY29sb3I6ICNlNmMwN2I7XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIC5obGpzLXBhcmFtcyB7XG4gICAgICAgIGNvbG9yOiAjYWJiMmJmOyAvKiBzYW1lIGFzIHJlZ3VsYXIgdGV4dCAqL1xuICAgICAgfVxuXG4gICAgICAuZGFyayAuaGxqcy1lbXBoYXNpcyB7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtc3Ryb25nIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtbGluayB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZSB7XG4gIC8vIENhcHR1cmUgdGVtcGxhdGVzIGZyb20gY29udGVudCBwcm9qZWN0aW9uXG4gIEBDb250ZW50Q2hpbGQoXCJtYXJrZG93blJlbmRlcmVyXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgbWFya2Rvd25SZW5kZXJlclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8QXNzaXN0YW50TWVzc2FnZU1hcmtkb3duUmVuZGVyZXJDb250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZChcInRvb2xiYXJcIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICB0b29sYmFyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxBc3Npc3RhbnRNZXNzYWdlVG9vbGJhckNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKFwiY29weUJ1dHRvblwiLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGNvcHlCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEFzc2lzdGFudE1lc3NhZ2VDb3B5QnV0dG9uQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoXCJ0aHVtYnNVcEJ1dHRvblwiLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHRodW1ic1VwQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxUaHVtYnNVcEJ1dHRvbkNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKFwidGh1bWJzRG93bkJ1dHRvblwiLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHRodW1ic0Rvd25CdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPFRodW1ic0Rvd25CdXR0b25Db250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZChcInJlYWRBbG91ZEJ1dHRvblwiLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHJlYWRBbG91ZEJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8UmVhZEFsb3VkQnV0dG9uQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoXCJyZWdlbmVyYXRlQnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcmVnZW5lcmF0ZUJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8UmVnZW5lcmF0ZUJ1dHRvbkNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKFwidG9vbENhbGxzVmlld1wiLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHRvb2xDYWxsc1ZpZXdUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLy8gQ2xhc3MgaW5wdXRzIGZvciBzdHlsaW5nIGRlZmF1bHQgY29tcG9uZW50c1xuICByZWFkb25seSBtYXJrZG93blJlbmRlcmVyQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHRvb2xiYXJDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY29weUJ1dHRvbkNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB0aHVtYnNVcEJ1dHRvbkNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB0aHVtYnNEb3duQnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHJlYWRBbG91ZEJ1dHRvbkNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSByZWdlbmVyYXRlQnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHRvb2xDYWxsc1ZpZXdDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvLyBDb21wb25lbnQgaW5wdXRzIGZvciBvdmVycmlkZXNcbiAgcmVhZG9ubHkgbWFya2Rvd25SZW5kZXJlckNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdG9vbGJhckNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgY29weUJ1dHRvbkNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdGh1bWJzVXBCdXR0b25Db21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHRodW1ic0Rvd25CdXR0b25Db21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHJlYWRBbG91ZEJ1dHRvbkNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmVnZW5lcmF0ZUJ1dHRvbkNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdG9vbENhbGxzVmlld0NvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvLyBSZWd1bGFyIGlucHV0c1xuICByZWFkb25seSBtZXNzYWdlID0gaW5wdXQucmVxdWlyZWQ8QXNzaXN0YW50TWVzc2FnZT4oKTtcbiAgcmVhZG9ubHkgbWVzc2FnZXMgPSBpbnB1dDxNZXNzYWdlW10+KFtdKTtcbiAgcmVhZG9ubHkgaXNMb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBhZGRpdGlvbmFsVG9vbGJhckl0ZW1zID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuICByZWFkb25seSB0b29sYmFyVmlzaWJsZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vIERJIHNlcnZpY2UgZXhwb3NlcyBoYW5kbGVyIGF2YWlsYWJpbGl0eSBzY29wZWQgdG8gQ29waWxvdENoYXRWaWV3XG4gIC8vIE1ha2UgaXQgb3B0aW9uYWwgd2l0aCBhIGRlZmF1bHQgZmFsbGJhY2sgZm9yIHRlc3RpbmdcbiAgaGFuZGxlcnM6IENvcGlsb3RDaGF0Vmlld0hhbmRsZXJzO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChDb3BpbG90Q2hhdFZpZXdIYW5kbGVycylcbiAgICBoYW5kbGVycz86IENvcGlsb3RDaGF0Vmlld0hhbmRsZXJzIHwgbnVsbCxcbiAgKSB7XG4gICAgdGhpcy5oYW5kbGVycyA9IGhhbmRsZXJzIHx8IG5ldyBDb3BpbG90Q2hhdFZpZXdIYW5kbGVycygpO1xuICB9XG5cbiAgLy8gT3V0cHV0IGV2ZW50c1xuICB0aHVtYnNVcCA9IG91dHB1dDxDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblRodW1ic1VwUHJvcHM+KCk7XG4gIHRodW1ic0Rvd24gPSBvdXRwdXQ8Q29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlT25UaHVtYnNEb3duUHJvcHM+KCk7XG4gIHJlYWRBbG91ZCA9IG91dHB1dDxDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblJlYWRBbG91ZFByb3BzPigpO1xuICByZWdlbmVyYXRlID0gb3V0cHV0PENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uUmVnZW5lcmF0ZVByb3BzPigpO1xuXG4gIC8vIFNpZ25hbHNcbiAgY3VzdG9tQ2xhc3MgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vIENvbXB1dGVkIHZhbHVlc1xuICBjb21wdXRlZENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBjbihcbiAgICAgIFwicHJvc2UgbWF4LXctZnVsbCBicmVhay13b3JkcyBkYXJrOnByb3NlLWludmVydFwiLFxuICAgICAgdGhpcy5jdXN0b21DbGFzcygpLFxuICAgICk7XG4gIH0pO1xuXG4gIC8vIERlZmF1bHQgY29tcG9uZW50c1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFRodW1ic1VwQnV0dG9uQ29tcG9uZW50ID1cbiAgICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUaHVtYnNVcEJ1dHRvbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlZmF1bHRUaHVtYnNEb3duQnV0dG9uQ29tcG9uZW50ID1cbiAgICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUaHVtYnNEb3duQnV0dG9uO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlUmVuZGVyZXIgPVxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVJlbmRlcmVyO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVG9vbGJhciA9XG4gICAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVG9vbGJhcjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZUNvcHlCdXR0b24gPVxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZUNvcHlCdXR0b247XG4gIHByb3RlY3RlZCByZWFkb25seSBDb3BpbG90Q2hhdFRvb2xDYWxsc1ZpZXcgPSBDb3BpbG90Q2hhdFRvb2xDYWxsc1ZpZXc7XG5cbiAgLy8gQ29udGV4dCBmb3Igc2xvdHMgKHJlYWN0aXZlIHZpYSBzaWduYWxzKVxuICBtYXJrZG93blJlbmRlcmVyQ29udGV4dCA9IGNvbXB1dGVkPEFzc2lzdGFudE1lc3NhZ2VNYXJrZG93blJlbmRlcmVyQ29udGV4dD4oXG4gICAgKCkgPT4gKHtcbiAgICAgIGNvbnRlbnQ6IHRoaXMubWVzc2FnZSgpPy5jb250ZW50IHx8IFwiXCIsXG4gICAgfSksXG4gICk7XG5cbiAgLy8gT3V0cHV0IG1hcHMgZm9yIHNsb3RzXG4gIGNvcHlCdXR0b25PdXRwdXRzID0geyBjbGlja2VkOiAoKSA9PiB0aGlzLmhhbmRsZUNvcHkoKSB9O1xuICB0aHVtYnNVcEJ1dHRvbk91dHB1dHMgPSB7IGNsaWNrZWQ6ICgpID0+IHRoaXMuaGFuZGxlVGh1bWJzVXAoKSB9O1xuICB0aHVtYnNEb3duQnV0dG9uT3V0cHV0cyA9IHsgY2xpY2tlZDogKCkgPT4gdGhpcy5oYW5kbGVUaHVtYnNEb3duKCkgfTtcbiAgcmVhZEFsb3VkQnV0dG9uT3V0cHV0cyA9IHsgY2xpY2tlZDogKCkgPT4gdGhpcy5oYW5kbGVSZWFkQWxvdWQoKSB9O1xuICByZWdlbmVyYXRlQnV0dG9uT3V0cHV0cyA9IHsgY2xpY2tlZDogKCkgPT4gdGhpcy5oYW5kbGVSZWdlbmVyYXRlKCkgfTtcblxuICB0b29sYmFyQ29udGV4dCA9IGNvbXB1dGVkPEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyQ29udGV4dD4oKCkgPT4gKHtcbiAgICBjaGlsZHJlbjogbnVsbCwgLy8gV2lsbCBiZSBwb3B1bGF0ZWQgYnkgdGhlIHRvb2xiYXIgY29udGVudFxuICB9KSk7XG5cbiAgLy8gUmV0dXJuIHRydWUgaWYgYXNzaXN0YW50IG1lc3NhZ2UgaGFzIG5vbi1lbXB0eSB0ZXh0IGNvbnRlbnRcbiAgaGFzTWVzc2FnZUNvbnRlbnQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmF3ID0gKHRoaXMubWVzc2FnZSgpPy5jb250ZW50ID8/IFwiXCIpIGFzIGFueTtcbiAgICBjb25zdCBjb250ZW50ID0gdHlwZW9mIHJhdyA9PT0gXCJzdHJpbmdcIiA/IHJhdyA6IFN0cmluZyhyYXcgPz8gXCJcIik7XG4gICAgcmV0dXJuIGNvbnRlbnQudHJpbSgpLmxlbmd0aCA+IDA7XG4gIH1cblxuICB0b29sQ2FsbHNWaWV3Q29udGV4dCA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlKCksXG4gICAgbWVzc2FnZXM6IHRoaXMubWVzc2FnZXMoKSxcbiAgICBpc0xvYWRpbmc6IHRoaXMuaXNMb2FkaW5nKCksXG4gIH0pKTtcblxuICBoYW5kbGVDb3B5KCk6IHZvaWQge1xuICAgIC8vIENvcHkgaXMgaGFuZGxlZCBieSB0aGUgYnV0dG9uIGNvbXBvbmVudCBpdHNlbGZcbiAgICAvLyBUaGlzIGlzIGp1c3QgZm9yIGFueSBhZGRpdGlvbmFsIGxvZ2ljIGlmIG5lZWRlZFxuICB9XG5cbiAgaGFuZGxlVGh1bWJzVXAoKTogdm9pZCB7XG4gICAgdGhpcy50aHVtYnNVcC5lbWl0KHsgbWVzc2FnZTogdGhpcy5tZXNzYWdlKCkgfSk7XG4gIH1cblxuICBoYW5kbGVUaHVtYnNEb3duKCk6IHZvaWQge1xuICAgIHRoaXMudGh1bWJzRG93bi5lbWl0KHsgbWVzc2FnZTogdGhpcy5tZXNzYWdlKCkgfSk7XG4gIH1cblxuICBoYW5kbGVSZWFkQWxvdWQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWFkQWxvdWQuZW1pdCh7IG1lc3NhZ2U6IHRoaXMubWVzc2FnZSgpIH0pO1xuICB9XG5cbiAgaGFuZGxlUmVnZW5lcmF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2VuZXJhdGUuZW1pdCh7IG1lc3NhZ2U6IHRoaXMubWVzc2FnZSgpIH0pO1xuICB9XG59XG4iXX0=
@@ -224,7 +224,7 @@ export class CopilotChatInput {
224
224
  this.addFile.emit();
225
225
  }
226
226
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
227
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatInput, isStandalone: true, selector: "copilot-chat-input", inputs: { sendButtonClass: { classPropertyName: "sendButtonClass", publicName: "sendButtonClass", isSignal: true, isRequired: false, transformFunction: null }, toolbarClass: { classPropertyName: "toolbarClass", publicName: "toolbarClass", isSignal: true, isRequired: false, transformFunction: null }, textAreaClass: { classPropertyName: "textAreaClass", publicName: "textAreaClass", isSignal: true, isRequired: false, transformFunction: null }, textAreaMaxRows: { classPropertyName: "textAreaMaxRows", publicName: "textAreaMaxRows", isSignal: true, isRequired: false, transformFunction: null }, textAreaPlaceholder: { classPropertyName: "textAreaPlaceholder", publicName: "textAreaPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, audioRecorderClass: { classPropertyName: "audioRecorderClass", publicName: "audioRecorderClass", isSignal: true, isRequired: false, transformFunction: null }, startTranscribeButtonClass: { classPropertyName: "startTranscribeButtonClass", publicName: "startTranscribeButtonClass", isSignal: true, isRequired: false, transformFunction: null }, cancelTranscribeButtonClass: { classPropertyName: "cancelTranscribeButtonClass", publicName: "cancelTranscribeButtonClass", isSignal: true, isRequired: false, transformFunction: null }, finishTranscribeButtonClass: { classPropertyName: "finishTranscribeButtonClass", publicName: "finishTranscribeButtonClass", isSignal: true, isRequired: false, transformFunction: null }, addFileButtonClass: { classPropertyName: "addFileButtonClass", publicName: "addFileButtonClass", isSignal: true, isRequired: false, transformFunction: null }, toolsButtonClass: { classPropertyName: "toolsButtonClass", publicName: "toolsButtonClass", isSignal: true, isRequired: false, transformFunction: null }, sendButtonComponent: { classPropertyName: "sendButtonComponent", publicName: "sendButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, toolbarComponent: { classPropertyName: "toolbarComponent", publicName: "toolbarComponent", isSignal: true, isRequired: false, transformFunction: null }, textAreaComponent: { classPropertyName: "textAreaComponent", publicName: "textAreaComponent", isSignal: true, isRequired: false, transformFunction: null }, audioRecorderComponent: { classPropertyName: "audioRecorderComponent", publicName: "audioRecorderComponent", isSignal: true, isRequired: false, transformFunction: null }, startTranscribeButtonComponent: { classPropertyName: "startTranscribeButtonComponent", publicName: "startTranscribeButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, cancelTranscribeButtonComponent: { classPropertyName: "cancelTranscribeButtonComponent", publicName: "cancelTranscribeButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, finishTranscribeButtonComponent: { classPropertyName: "finishTranscribeButtonComponent", publicName: "finishTranscribeButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, addFileButtonComponent: { classPropertyName: "addFileButtonComponent", publicName: "addFileButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, toolsButtonComponent: { classPropertyName: "toolsButtonComponent", publicName: "toolsButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, toolsMenu: { classPropertyName: "toolsMenu", publicName: "toolsMenu", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, additionalToolbarItems: { classPropertyName: "additionalToolbarItems", publicName: "additionalToolbarItems", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { submitMessage: "submitMessage", startTranscribe: "startTranscribe", cancelTranscribe: "cancelTranscribe", finishTranscribe: "finishTranscribe", addFile: "addFile", valueChange: "valueChange" }, queries: [{ propertyName: "sendButtonTemplate", first: true, predicate: ["sendButton"], descendants: true, read: TemplateRef }, { propertyName: "toolbarTemplate", first: true, predicate: ["toolbar"], descendants: true, read: TemplateRef }, { propertyName: "textAreaTemplate", first: true, predicate: ["textArea"], descendants: true, read: TemplateRef }, { propertyName: "audioRecorderTemplate", first: true, predicate: ["audioRecorder"], descendants: true, read: TemplateRef }, { propertyName: "startTranscribeButtonTemplate", first: true, predicate: ["startTranscribeButton"], descendants: true, read: TemplateRef }, { propertyName: "cancelTranscribeButtonTemplate", first: true, predicate: ["cancelTranscribeButton"], descendants: true, read: TemplateRef }, { propertyName: "finishTranscribeButtonTemplate", first: true, predicate: ["finishTranscribeButton"], descendants: true, read: TemplateRef }, { propertyName: "addFileButtonTemplate", first: true, predicate: ["addFileButton"], descendants: true, read: TemplateRef }, { propertyName: "toolsButtonTemplate", first: true, predicate: ["toolsButton"], descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "textAreaRef", first: true, predicate: CopilotChatTextarea, descendants: true, read: CopilotChatTextarea }, { propertyName: "audioRecorderRef", first: true, predicate: CopilotChatAudioRecorder, descendants: true }], ngImport: i0, template: `
227
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatInput, isStandalone: true, selector: "copilot-chat-input", inputs: { sendButtonClass: { classPropertyName: "sendButtonClass", publicName: "sendButtonClass", isSignal: true, isRequired: false, transformFunction: null }, toolbarClass: { classPropertyName: "toolbarClass", publicName: "toolbarClass", isSignal: true, isRequired: false, transformFunction: null }, textAreaClass: { classPropertyName: "textAreaClass", publicName: "textAreaClass", isSignal: true, isRequired: false, transformFunction: null }, textAreaMaxRows: { classPropertyName: "textAreaMaxRows", publicName: "textAreaMaxRows", isSignal: true, isRequired: false, transformFunction: null }, textAreaPlaceholder: { classPropertyName: "textAreaPlaceholder", publicName: "textAreaPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, audioRecorderClass: { classPropertyName: "audioRecorderClass", publicName: "audioRecorderClass", isSignal: true, isRequired: false, transformFunction: null }, startTranscribeButtonClass: { classPropertyName: "startTranscribeButtonClass", publicName: "startTranscribeButtonClass", isSignal: true, isRequired: false, transformFunction: null }, cancelTranscribeButtonClass: { classPropertyName: "cancelTranscribeButtonClass", publicName: "cancelTranscribeButtonClass", isSignal: true, isRequired: false, transformFunction: null }, finishTranscribeButtonClass: { classPropertyName: "finishTranscribeButtonClass", publicName: "finishTranscribeButtonClass", isSignal: true, isRequired: false, transformFunction: null }, addFileButtonClass: { classPropertyName: "addFileButtonClass", publicName: "addFileButtonClass", isSignal: true, isRequired: false, transformFunction: null }, toolsButtonClass: { classPropertyName: "toolsButtonClass", publicName: "toolsButtonClass", isSignal: true, isRequired: false, transformFunction: null }, sendButtonComponent: { classPropertyName: "sendButtonComponent", publicName: "sendButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, toolbarComponent: { classPropertyName: "toolbarComponent", publicName: "toolbarComponent", isSignal: true, isRequired: false, transformFunction: null }, textAreaComponent: { classPropertyName: "textAreaComponent", publicName: "textAreaComponent", isSignal: true, isRequired: false, transformFunction: null }, audioRecorderComponent: { classPropertyName: "audioRecorderComponent", publicName: "audioRecorderComponent", isSignal: true, isRequired: false, transformFunction: null }, startTranscribeButtonComponent: { classPropertyName: "startTranscribeButtonComponent", publicName: "startTranscribeButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, cancelTranscribeButtonComponent: { classPropertyName: "cancelTranscribeButtonComponent", publicName: "cancelTranscribeButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, finishTranscribeButtonComponent: { classPropertyName: "finishTranscribeButtonComponent", publicName: "finishTranscribeButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, addFileButtonComponent: { classPropertyName: "addFileButtonComponent", publicName: "addFileButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, toolsButtonComponent: { classPropertyName: "toolsButtonComponent", publicName: "toolsButtonComponent", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, toolsMenu: { classPropertyName: "toolsMenu", publicName: "toolsMenu", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, additionalToolbarItems: { classPropertyName: "additionalToolbarItems", publicName: "additionalToolbarItems", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { submitMessage: "submitMessage", startTranscribe: "startTranscribe", cancelTranscribe: "cancelTranscribe", finishTranscribe: "finishTranscribe", addFile: "addFile", valueChange: "valueChange" }, host: { attributes: { "data-copilotkit": "" } }, queries: [{ propertyName: "sendButtonTemplate", first: true, predicate: ["sendButton"], descendants: true, read: TemplateRef }, { propertyName: "toolbarTemplate", first: true, predicate: ["toolbar"], descendants: true, read: TemplateRef }, { propertyName: "textAreaTemplate", first: true, predicate: ["textArea"], descendants: true, read: TemplateRef }, { propertyName: "audioRecorderTemplate", first: true, predicate: ["audioRecorder"], descendants: true, read: TemplateRef }, { propertyName: "startTranscribeButtonTemplate", first: true, predicate: ["startTranscribeButton"], descendants: true, read: TemplateRef }, { propertyName: "cancelTranscribeButtonTemplate", first: true, predicate: ["cancelTranscribeButton"], descendants: true, read: TemplateRef }, { propertyName: "finishTranscribeButtonTemplate", first: true, predicate: ["finishTranscribeButton"], descendants: true, read: TemplateRef }, { propertyName: "addFileButtonTemplate", first: true, predicate: ["addFileButton"], descendants: true, read: TemplateRef }, { propertyName: "toolsButtonTemplate", first: true, predicate: ["toolsButton"], descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "textAreaRef", first: true, predicate: CopilotChatTextarea, descendants: true, read: CopilotChatTextarea }, { propertyName: "audioRecorderRef", first: true, predicate: CopilotChatAudioRecorder, descendants: true }], ngImport: i0, template: `
228
228
  <div [class]="computedClass()">
229
229
  <!-- Main input area: either textarea or audio recorder -->
230
230
  @if (computedMode() === "transcribe") {
@@ -406,7 +406,7 @@ export class CopilotChatInput {
406
406
  }
407
407
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatInput, decorators: [{
408
408
  type: Component,
409
- args: [{ standalone: true, selector: "copilot-chat-input", imports: [
409
+ args: [{ standalone: true, selector: "copilot-chat-input", host: { "data-copilotkit": "" }, imports: [
410
410
  CommonModule,
411
411
  CopilotSlot,
412
412
  LucideAngularModule,
@@ -631,4 +631,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
631
631
  type: ContentChild,
632
632
  args: ["toolsButton", { read: TemplateRef }]
633
633
  }] } });
634
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLHVCQUF1QixFQUl2QixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFDTCxnQ0FBZ0MsRUFDaEMsaUNBQWlDLEVBQ2pDLGlDQUFpQyxFQUNqQyx3QkFBd0IsR0FDekIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUtqRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQW1PbkQsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixXQUFXLENBQXVCO0lBR2xDLGdCQUFnQixDQUE0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QkFBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzVELDhCQUE4QjtzQkFEN0IsWUFBWTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzdELDhCQUE4QjtzQkFEN0IsWUFBWTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzdELHFCQUFxQjtzQkFEcEIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUdwRCxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVGVtcGxhdGVSZWYsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIEFmdGVyVmlld0luaXQsXG4gIE9uRGVzdHJveSxcbiAgVHlwZSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIENvbnRlbnRDaGlsZCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ29waWxvdFNsb3QgfSBmcm9tIFwiLi4vLi4vc2xvdHMvY29waWxvdC1zbG90XCI7XG5pbXBvcnQgeyBpbmplY3RDaGF0TGFiZWxzIH0gZnJvbSBcIi4uLy4uL2NoYXQtY29uZmlnXCI7XG5pbXBvcnQgeyBMdWNpZGVBbmd1bGFyTW9kdWxlLCBBcnJvd1VwIH0gZnJvbSBcImx1Y2lkZS1hbmd1bGFyXCI7XG5pbXBvcnQgeyBDb3BpbG90Q2hhdFRleHRhcmVhIH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LXRleHRhcmVhXCI7XG5pbXBvcnQgeyBDb3BpbG90Q2hhdEF1ZGlvUmVjb3JkZXIgfSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtYXVkaW8tcmVjb3JkZXJcIjtcbmltcG9ydCB7XG4gIENvcGlsb3RDaGF0U3RhcnRUcmFuc2NyaWJlQnV0dG9uLFxuICBDb3BpbG90Q2hhdENhbmNlbFRyYW5zY3JpYmVCdXR0b24sXG4gIENvcGlsb3RDaGF0RmluaXNoVHJhbnNjcmliZUJ1dHRvbixcbiAgQ29waWxvdENoYXRBZGRGaWxlQnV0dG9uLFxufSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtYnV0dG9uc1wiO1xuaW1wb3J0IHsgQ29waWxvdENoYXRUb29sYmFyIH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LXRvb2xiYXJcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0VG9vbHNNZW51IH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LXRvb2xzLW1lbnVcIjtcbmltcG9ydCB0eXBlIHtcbiAgQ29waWxvdENoYXRJbnB1dE1vZGUsXG4gIFRvb2xzTWVudUl0ZW0sXG59IGZyb20gXCIuL2NvcGlsb3QtY2hhdC1pbnB1dC50eXBlc1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IGluamVjdENoYXRTdGF0ZSB9IGZyb20gXCIuLi8uLi9jaGF0LXN0YXRlXCI7XG5cbi8qKlxuICogQ29udGV4dCBwcm92aWRlZCB0byBzbG90IHRlbXBsYXRlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbmRCdXR0b25Db250ZXh0IHtcbiAgc2VuZDogKCkgPT4gdm9pZDtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbGJhckNvbnRleHQge1xuICBtb2RlOiBDb3BpbG90Q2hhdElucHV0TW9kZTtcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdC1pbnB1dFwiLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvcGlsb3RTbG90LFxuICAgIEx1Y2lkZUFuZ3VsYXJNb2R1bGUsXG4gICAgQ29waWxvdENoYXRUZXh0YXJlYSxcbiAgICBDb3BpbG90Q2hhdEF1ZGlvUmVjb3JkZXIsXG4gICAgQ29waWxvdENoYXRTdGFydFRyYW5zY3JpYmVCdXR0b24sXG4gICAgQ29waWxvdENoYXRDYW5jZWxUcmFuc2NyaWJlQnV0dG9uLFxuICAgIENvcGlsb3RDaGF0RmluaXNoVHJhbnNjcmliZUJ1dHRvbixcbiAgICBDb3BpbG90Q2hhdEFkZEZpbGVCdXR0b24sXG4gICAgQ29waWxvdENoYXRUb29sYmFyLFxuICAgIENvcGlsb3RDaGF0VG9vbHNNZW51LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzc109XCJjb21wdXRlZENsYXNzKClcIj5cbiAgICAgIDwhLS0gTWFpbiBpbnB1dCBhcmVhOiBlaXRoZXIgdGV4dGFyZWEgb3IgYXVkaW8gcmVjb3JkZXIgLS0+XG4gICAgICBAaWYgKGNvbXB1dGVkTW9kZSgpID09PSBcInRyYW5zY3JpYmVcIikge1xuICAgICAgICBAaWYgKGF1ZGlvUmVjb3JkZXJUZW1wbGF0ZSB8fCBhdWRpb1JlY29yZGVyQ29tcG9uZW50KCkpIHtcbiAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICBbc2xvdF09XCJhdWRpb1JlY29yZGVyVGVtcGxhdGUgfHwgYXVkaW9SZWNvcmRlckNvbXBvbmVudCgpXCJcbiAgICAgICAgICAgIFtjb250ZXh0XT1cImF1ZGlvUmVjb3JkZXJDb250ZXh0KClcIlxuICAgICAgICAgICAgW2RlZmF1bHRDb21wb25lbnRdPVwiZGVmYXVsdEF1ZGlvUmVjb3JkZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGNvcGlsb3QtY2hhdC1hdWRpby1yZWNvcmRlciBbaW5wdXRTaG93Q29udHJvbHNdPVwidHJ1ZVwiPlxuICAgICAgICAgIDwvY29waWxvdC1jaGF0LWF1ZGlvLXJlY29yZGVyPlxuICAgICAgICB9XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGlmICh0ZXh0QXJlYVRlbXBsYXRlIHx8IHRleHRBcmVhQ29tcG9uZW50KCkpIHtcbiAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICBbc2xvdF09XCJ0ZXh0QXJlYVRlbXBsYXRlIHx8IHRleHRBcmVhQ29tcG9uZW50KClcIlxuICAgICAgICAgICAgW2NvbnRleHRdPVwidGV4dEFyZWFDb250ZXh0KClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICBjb3BpbG90Q2hhdFRleHRhcmVhXG4gICAgICAgICAgICBbaW5wdXRWYWx1ZV09XCJjb21wdXRlZFZhbHVlKClcIlxuICAgICAgICAgICAgW2lucHV0QXV0b0ZvY3VzXT1cImNvbXB1dGVkQXV0b0ZvY3VzKClcIlxuICAgICAgICAgICAgW2lucHV0RGlzYWJsZWRdPVwiY29tcHV0ZWRNb2RlKCkgPT09ICdwcm9jZXNzaW5nJ1wiXG4gICAgICAgICAgICBbaW5wdXRDbGFzc109XCJ0ZXh0QXJlYUNsYXNzKClcIlxuICAgICAgICAgICAgW2lucHV0TWF4Um93c109XCJ0ZXh0QXJlYU1heFJvd3MoKVwiXG4gICAgICAgICAgICBbaW5wdXRQbGFjZWhvbGRlcl09XCJ0ZXh0QXJlYVBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgKGtleURvd24pPVwiaGFuZGxlS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVWYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICA8IS0tIFRvb2xiYXIgLS0+XG4gICAgICBAaWYgKHRvb2xiYXJUZW1wbGF0ZSB8fCB0b29sYmFyQ29tcG9uZW50KCkpIHtcbiAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgIFtzbG90XT1cInRvb2xiYXJUZW1wbGF0ZSB8fCB0b29sYmFyQ29tcG9uZW50KClcIlxuICAgICAgICAgIFtjb250ZXh0XT1cInRvb2xiYXJDb250ZXh0KClcIlxuICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0VG9vbGJhclwiXG4gICAgICAgID5cbiAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjb3BpbG90Q2hhdFRvb2xiYXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICBAaWYgKGFkZEZpbGVCdXR0b25UZW1wbGF0ZSB8fCBhZGRGaWxlQnV0dG9uQ29tcG9uZW50KCkpIHtcbiAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgIFtzbG90XT1cImFkZEZpbGVCdXR0b25UZW1wbGF0ZSB8fCBhZGRGaWxlQnV0dG9uQ29tcG9uZW50KClcIlxuICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInsgaW5wdXREaXNhYmxlZDogY29tcHV0ZWRNb2RlKCkgPT09ICd0cmFuc2NyaWJlJyB9XCJcbiAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJhZGRGaWxlQnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgW2RlZmF1bHRDb21wb25lbnRdPVwiQ29waWxvdENoYXRBZGRGaWxlQnV0dG9uXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8Y29waWxvdC1jaGF0LWFkZC1maWxlLWJ1dHRvblxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZE1vZGUoKSA9PT0gJ3RyYW5zY3JpYmUnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJoYW5kbGVBZGRGaWxlKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvY29waWxvdC1jaGF0LWFkZC1maWxlLWJ1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoY29tcHV0ZWRUb29sc01lbnUoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIEBpZiAodG9vbHNCdXR0b25UZW1wbGF0ZSB8fCB0b29sc0J1dHRvbkNvbXBvbmVudCgpKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwidG9vbHNCdXR0b25UZW1wbGF0ZSB8fCB0b29sc0J1dHRvbkNvbXBvbmVudCgpXCJcbiAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInRvb2xzQ29udGV4dCgpXCJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0VG9vbHNNZW51XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LWNoYXQtdG9vbHMtbWVudVxuICAgICAgICAgICAgICAgICAgW2lucHV0VG9vbHNNZW51XT1cImNvbXB1dGVkVG9vbHNNZW51KClcIlxuICAgICAgICAgICAgICAgICAgW2lucHV0RGlzYWJsZWRdPVwiY29tcHV0ZWRNb2RlKCkgPT09ICd0cmFuc2NyaWJlJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1jaGF0LXRvb2xzLW1lbnU+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoYWRkaXRpb25hbFRvb2xiYXJJdGVtcygpKSB7XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJhZGRpdGlvbmFsVG9vbGJhckl0ZW1zKCkgfHwgbnVsbFwiXG4gICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIEBpZiAoY29tcHV0ZWRNb2RlKCkgPT09IFwidHJhbnNjcmliZVwiKSB7XG4gICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgY2FuY2VsVHJhbnNjcmliZUJ1dHRvblRlbXBsYXRlIHx8XG4gICAgICAgICAgICAgICAgY2FuY2VsVHJhbnNjcmliZUJ1dHRvbkNvbXBvbmVudCgpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICAgICAgICAgIFtzbG90XT1cIlxuICAgICAgICAgICAgICAgICAgICBjYW5jZWxUcmFuc2NyaWJlQnV0dG9uVGVtcGxhdGUgfHxcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsVHJhbnNjcmliZUJ1dHRvbkNvbXBvbmVudCgpXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwie31cIlxuICAgICAgICAgICAgICAgICAgW291dHB1dHNdPVwiY2FuY2VsVHJhbnNjcmliZUJ1dHRvbk91dHB1dHNcIlxuICAgICAgICAgICAgICAgICAgW2RlZmF1bHRDb21wb25lbnRdPVwiQ29waWxvdENoYXRDYW5jZWxUcmFuc2NyaWJlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LWNoYXQtY2FuY2VsLXRyYW5zY3JpYmUtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJoYW5kbGVDYW5jZWxUcmFuc2NyaWJlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3QtY2hhdC1jYW5jZWwtdHJhbnNjcmliZS1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICBmaW5pc2hUcmFuc2NyaWJlQnV0dG9uVGVtcGxhdGUgfHxcbiAgICAgICAgICAgICAgICBmaW5pc2hUcmFuc2NyaWJlQnV0dG9uQ29tcG9uZW50KClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwiXG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaFRyYW5zY3JpYmVCdXR0b25UZW1wbGF0ZSB8fFxuICAgICAgICAgICAgICAgICAgICBmaW5pc2hUcmFuc2NyaWJlQnV0dG9uQ29tcG9uZW50KClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJ7fVwiXG4gICAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJmaW5pc2hUcmFuc2NyaWJlQnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJDb3BpbG90Q2hhdEZpbmlzaFRyYW5zY3JpYmVCdXR0b25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3QtY2hhdC1maW5pc2gtdHJhbnNjcmliZS1idXR0b25cbiAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cImhhbmRsZUZpbmlzaFRyYW5zY3JpYmUoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1jaGF0LWZpbmlzaC10cmFuc2NyaWJlLWJ1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgc3RhcnRUcmFuc2NyaWJlQnV0dG9uVGVtcGxhdGUgfHxcbiAgICAgICAgICAgICAgICBzdGFydFRyYW5zY3JpYmVCdXR0b25Db21wb25lbnQoKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICAgICAgICBbc2xvdF09XCJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRUcmFuc2NyaWJlQnV0dG9uVGVtcGxhdGUgfHxcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRUcmFuc2NyaWJlQnV0dG9uQ29tcG9uZW50KClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJ7fVwiXG4gICAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJzdGFydFRyYW5zY3JpYmVCdXR0b25PdXRwdXRzXCJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0U3RhcnRUcmFuc2NyaWJlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LWNoYXQtc3RhcnQtdHJhbnNjcmliZS1idXR0b25cbiAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cImhhbmRsZVN0YXJ0VHJhbnNjcmliZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LWNoYXQtc3RhcnQtdHJhbnNjcmliZS1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLSBTZW5kIGJ1dHRvbiB3aXRoIHNsb3QgLS0+XG4gICAgICAgICAgICAgIEBpZiAoc2VuZEJ1dHRvblRlbXBsYXRlIHx8IHNlbmRCdXR0b25Db21wb25lbnQoKSkge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICAgICAgICAgIFtzbG90XT1cInNlbmRCdXR0b25UZW1wbGF0ZSB8fCBzZW5kQnV0dG9uQ29tcG9uZW50KClcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwic2VuZEJ1dHRvbkNvbnRleHQoKVwiXG4gICAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJzZW5kQnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXItWzEwcHhdXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwic2VuZEJ1dHRvbkNsYXNzKCkgfHwgZGVmYXVsdEJ1dHRvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICFjb21wdXRlZFZhbHVlKCkudHJpbSgpIHx8IGNvbXB1dGVkTW9kZSgpID09PSAncHJvY2Vzc2luZydcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbmQoKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxsdWNpZGUtYW5ndWxhclxuICAgICAgICAgICAgICAgICAgICAgIFtpbWddPVwiQXJyb3dVcEljb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIjE4XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbHVjaWRlLWFuZ3VsYXI+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgICAuc2hhZG93LVxcXFxbMF80cHhfNHB4XzBfXFxcXCMwMDAwMDAwYVxcXFwyY18wXzBfMXB4XzBfXFxcXCMwMDAwMDA5ZVxcXFxdIHtcbiAgICAgICAgYm94LXNoYWRvdzpcbiAgICAgICAgICAwIDRweCA0cHggMCAjMDAwMDAwMGEsXG4gICAgICAgICAgMCAwIDFweCAwICMwMDAwMDA5ZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0SW5wdXQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKENvcGlsb3RDaGF0VGV4dGFyZWEsIHsgcmVhZDogQ29waWxvdENoYXRUZXh0YXJlYSB9KVxuICB0ZXh0QXJlYVJlZj86IENvcGlsb3RDaGF0VGV4dGFyZWE7XG5cbiAgQFZpZXdDaGlsZChDb3BpbG90Q2hhdEF1ZGlvUmVjb3JkZXIpXG4gIGF1ZGlvUmVjb3JkZXJSZWY/OiBDb3BpbG90Q2hhdEF1ZGlvUmVjb3JkZXI7XG5cbiAgLy8gQ2FwdHVyZSB0ZW1wbGF0ZXMgZnJvbSBjb250ZW50IHByb2plY3Rpb25cbiAgQENvbnRlbnRDaGlsZChcInNlbmRCdXR0b25cIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBzZW5kQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxTZW5kQnV0dG9uQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoXCJ0b29sYmFyXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgdG9vbGJhclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8VG9vbGJhckNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKFwidGV4dEFyZWFcIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICB0ZXh0QXJlYVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChcImF1ZGlvUmVjb3JkZXJcIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBhdWRpb1JlY29yZGVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkKFwic3RhcnRUcmFuc2NyaWJlQnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgc3RhcnRUcmFuc2NyaWJlQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkKFwiY2FuY2VsVHJhbnNjcmliZUJ1dHRvblwiLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGNhbmNlbFRyYW5zY3JpYmVCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoXCJmaW5pc2hUcmFuc2NyaWJlQnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgZmluaXNoVHJhbnNjcmliZUJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChcImFkZEZpbGVCdXR0b25cIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBhZGRGaWxlQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkKFwidG9vbHNCdXR0b25cIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICB0b29sc0J1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvLyBDbGFzcyBpbnB1dHMgZm9yIHN0eWxpbmcgZGVmYXVsdCBjb21wb25lbnRzXG4gIHNlbmRCdXR0b25DbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgdG9vbGJhckNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICB0ZXh0QXJlYUNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICB0ZXh0QXJlYU1heFJvd3MgPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHRleHRBcmVhUGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGF1ZGlvUmVjb3JkZXJDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgc3RhcnRUcmFuc2NyaWJlQnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNhbmNlbFRyYW5zY3JpYmVCdXR0b25DbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgZmluaXNoVHJhbnNjcmliZUJ1dHRvbkNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBhZGRGaWxlQnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHRvb2xzQnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLy8gQ29tcG9uZW50IGlucHV0cyBmb3Igb3ZlcnJpZGVzXG4gIHNlbmRCdXR0b25Db21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHRvb2xiYXJDb21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHRleHRBcmVhQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBhdWRpb1JlY29yZGVyQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBzdGFydFRyYW5zY3JpYmVCdXR0b25Db21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNhbmNlbFRyYW5zY3JpYmVCdXR0b25Db21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGZpbmlzaFRyYW5zY3JpYmVCdXR0b25Db21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGFkZEZpbGVCdXR0b25Db21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHRvb2xzQnV0dG9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vIFJlZ3VsYXIgaW5wdXRzXG4gIG1vZGUgPSBpbnB1dDxDb3BpbG90Q2hhdElucHV0TW9kZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgdG9vbHNNZW51ID0gaW5wdXQ8KFRvb2xzTWVudUl0ZW0gfCBcIi1cIilbXSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgYXV0b0ZvY3VzID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgdmFsdWUgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGlucHV0Q2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIC8vIE5vdGU6IFByZWZlciBob3N0IGBjbGFzc2AgZm9yIHN0eWxpbmcgdGhpcyBjb21wb25lbnQ7XG4gIC8vIGtlZXAgb25seSBgaW5wdXRDbGFzc2AgdG8gc3R5bGUgdGhlIGludGVybmFsIHdyYXBwZXIgaWYgbmVlZGVkLlxuICBhZGRpdGlvbmFsVG9vbGJhckl0ZW1zID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvLyBPdXRwdXQgZXZlbnRzXG4gIHN1Ym1pdE1lc3NhZ2UgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICBzdGFydFRyYW5zY3JpYmUgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgY2FuY2VsVHJhbnNjcmliZSA9IG91dHB1dDx2b2lkPigpO1xuICBmaW5pc2hUcmFuc2NyaWJlID0gb3V0cHV0PHZvaWQ+KCk7XG4gIGFkZEZpbGUgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgdmFsdWVDaGFuZ2UgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gIC8vIEljb25zIGFuZCBkZWZhdWx0IGNsYXNzZXNcbiAgcmVhZG9ubHkgQXJyb3dVcEljb24gPSBBcnJvd1VwO1xuICByZWFkb25seSBkZWZhdWx0QnV0dG9uQ2xhc3MgPSBjbihcbiAgICAvLyBCYXNlIGJ1dHRvbiBzdHlsZXNcbiAgICBcImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMiB3aGl0ZXNwYWNlLW5vd3JhcCByb3VuZGVkLW1kIHRleHQtc20gZm9udC1tZWRpdW1cIixcbiAgICBcInRyYW5zaXRpb24tYWxsIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6b3BhY2l0eS01MFwiLFxuICAgIFwic2hyaW5rLTAgb3V0bGluZS1ub25lXCIsXG4gICAgXCJmb2N1cy12aXNpYmxlOmJvcmRlci1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwIGZvY3VzLXZpc2libGU6cmluZy1bM3B4XVwiLFxuICAgIC8vIGNoYXRJbnB1dFRvb2xiYXJQcmltYXJ5IHZhcmlhbnRcbiAgICBcImN1cnNvci1wb2ludGVyXCIsXG4gICAgXCJiZy1ibGFjayB0ZXh0LXdoaXRlXCIsXG4gICAgXCJkYXJrOmJnLXdoaXRlIGRhcms6dGV4dC1ibGFjayBkYXJrOmZvY3VzLXZpc2libGU6b3V0bGluZS13aGl0ZVwiLFxuICAgIFwicm91bmRlZC1mdWxsIGgtOSB3LTlcIixcbiAgICBcInRyYW5zaXRpb24tY29sb3JzXCIsXG4gICAgXCJmb2N1czpvdXRsaW5lLW5vbmVcIixcbiAgICBcImhvdmVyOm9wYWNpdHktNzAgZGlzYWJsZWQ6aG92ZXI6b3BhY2l0eS0xMDBcIixcbiAgICBcImRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpiZy1bIzAwMDAwMDE0XSBkaXNhYmxlZDp0ZXh0LVtyZ2IoMTMsMTMsMTMpXVwiLFxuICAgIFwiZGFyazpkaXNhYmxlZDpiZy1bIzQ1NDU0NV0gZGFyazpkaXNhYmxlZDp0ZXh0LXdoaXRlXCIsXG4gICk7XG5cbiAgLy8gU2VydmljZXNcbiAgcmVhZG9ubHkgbGFiZWxzID0gaW5qZWN0Q2hhdExhYmVscygpO1xuICAvLyByZWFkb25seSBjaGF0Q29uZmlnID0gaW5qZWN0Q2hhdENvbmZpZygpO1xuICByZWFkb25seSBjaGF0U3RhdGUgPSBpbmplY3RDaGF0U3RhdGUoKTtcblxuICAvLyBTaWduYWxzXG4gIG1vZGVTaWduYWwgPSBzaWduYWw8Q29waWxvdENoYXRJbnB1dE1vZGU+KFwiaW5wdXRcIik7XG4gIHRvb2xzTWVudVNpZ25hbCA9IHNpZ25hbDwoVG9vbHNNZW51SXRlbSB8IFwiLVwiKVtdPihbXSk7XG4gIGF1dG9Gb2N1c1NpZ25hbCA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcbiAgY3VzdG9tQ2xhc3MgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vIERlZmF1bHQgY29tcG9uZW50c1xuICAvLyBOb3RlOiBDb3BpbG90Q2hhdFRleHRhcmVhIHVzZXMgYXR0cmlidXRlIHNlbGVjdG9yIGJ1dCBpcyBhIGNvbXBvbmVudFxuICBkZWZhdWx0QXVkaW9SZWNvcmRlciA9IENvcGlsb3RDaGF0QXVkaW9SZWNvcmRlcjtcbiAgZGVmYXVsdFNlbmRCdXR0b246IGFueSA9IG51bGw7IC8vIFdpbGwgYmUgc2V0IHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3lcbiAgQ29waWxvdENoYXRUb29sYmFyID0gQ29waWxvdENoYXRUb29sYmFyO1xuICBDb3BpbG90Q2hhdEFkZEZpbGVCdXR0b24gPSBDb3BpbG90Q2hhdEFkZEZpbGVCdXR0b247XG4gIENvcGlsb3RDaGF0VG9vbHNNZW51ID0gQ29waWxvdENoYXRUb29sc01lbnU7XG4gIENvcGlsb3RDaGF0Q2FuY2VsVHJhbnNjcmliZUJ1dHRvbiA9IENvcGlsb3RDaGF0Q2FuY2VsVHJhbnNjcmliZUJ1dHRvbjtcbiAgQ29waWxvdENoYXRGaW5pc2hUcmFuc2NyaWJlQnV0dG9uID0gQ29waWxvdENoYXRGaW5pc2hUcmFuc2NyaWJlQnV0dG9uO1xuICBDb3BpbG90Q2hhdFN0YXJ0VHJhbnNjcmliZUJ1dHRvbiA9IENvcGlsb3RDaGF0U3RhcnRUcmFuc2NyaWJlQnV0dG9uO1xuXG4gIC8vIENvbXB1dGVkIHZhbHVlc1xuICBjb21wdXRlZE1vZGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1vZGVTaWduYWwoKSk7XG4gIGNvbXB1dGVkVG9vbHNNZW51ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50b29sc01lbnUoKSA/PyBbXSk7XG4gIGNvbXB1dGVkQXV0b0ZvY3VzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hdXRvRm9jdXMoKSA/PyB0cnVlKTtcbiAgY29tcHV0ZWRWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjdXN0b21WYWx1ZSA9IHRoaXMudmFsdWUoKSA/PyBcIlwiO1xuICAgIGNvbnN0IGNvbmZpZ1ZhbHVlID0gdGhpcy5jaGF0U3RhdGUuaW5wdXRWYWx1ZSgpO1xuICAgIHJldHVybiBjdXN0b21WYWx1ZSB8fCBjb25maWdWYWx1ZSB8fCBcIlwiO1xuICB9KTtcblxuICBjb21wdXRlZENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGJhc2VDbGFzc2VzID0gY24oXG4gICAgICAvLyBMYXlvdXRcbiAgICAgIFwiZmxleCB3LWZ1bGwgZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCIsXG4gICAgICAvLyBJbnRlcmFjdGlvblxuICAgICAgXCJjdXJzb3ItdGV4dFwiLFxuICAgICAgLy8gT3ZlcmZsb3cgYW5kIGNsaXBwaW5nXG4gICAgICBcIm92ZXJmbG93LXZpc2libGUgYmctY2xpcC1wYWRkaW5nIGNvbnRhaW4taW5saW5lLXNpemVcIixcbiAgICAgIC8vIEJhY2tncm91bmRcbiAgICAgIFwiYmctd2hpdGUgZGFyazpiZy1bIzMwMzAzMF1cIixcbiAgICAgIC8vIFZpc3VhbCBlZmZlY3RzXG4gICAgICBcInNoYWRvdy1bMF80cHhfNHB4XzBfIzAwMDAwMDBhLDBfMF8xcHhfMF8jMDAwMDAwOWVdIHJvdW5kZWQtWzI4cHhdXCIsXG4gICAgKTtcbiAgICByZXR1cm4gY24oYmFzZUNsYXNzZXMsIHRoaXMuY3VzdG9tQ2xhc3MoKSk7XG4gIH0pO1xuXG4gIC8vIENvbnRleHQgZm9yIHNsb3RzIChyZWFjdGl2ZSB2aWEgc2lnbmFscylcbiAgc2VuZEJ1dHRvbkNvbnRleHQgPSBjb21wdXRlZDxTZW5kQnV0dG9uQ29udGV4dD4oKCkgPT4gKHtcbiAgICBzZW5kOiAoKSA9PiB0aGlzLnNlbmQoKSxcbiAgICBkaXNhYmxlZDpcbiAgICAgICF0aGlzLmNvbXB1dGVkVmFsdWUoKS50cmltKCkgfHwgdGhpcy5jb21wdXRlZE1vZGUoKSA9PT0gXCJwcm9jZXNzaW5nXCIsXG4gICAgdmFsdWU6IHRoaXMuY29tcHV0ZWRWYWx1ZSgpLFxuICB9KSk7XG5cbiAgdG9vbGJhckNvbnRleHQgPSBjb21wdXRlZDxUb29sYmFyQ29udGV4dD4oKCkgPT4gKHtcbiAgICBtb2RlOiB0aGlzLmNvbXB1dGVkTW9kZSgpLFxuICAgIHZhbHVlOiB0aGlzLmNvbXB1dGVkVmFsdWUoKSxcbiAgfSkpO1xuXG4gIHRleHRBcmVhQ29udGV4dCA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgdmFsdWU6IHRoaXMuY29tcHV0ZWRWYWx1ZSgpLFxuICAgIGF1dG9Gb2N1czogdGhpcy5jb21wdXRlZEF1dG9Gb2N1cygpLFxuICAgIGRpc2FibGVkOiB0aGlzLmNvbXB1dGVkTW9kZSgpID09PSBcInByb2Nlc3NpbmdcIixcbiAgICBtYXhSb3dzOiB0aGlzLnRleHRBcmVhTWF4Um93cygpLFxuICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRleHRBcmVhUGxhY2Vob2xkZXIoKSxcbiAgICBpbnB1dENsYXNzOiB0aGlzLnRleHRBcmVhQ2xhc3MoKSxcbiAgICBvbktleURvd246IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5oYW5kbGVLZXlEb3duKGV2ZW50KSxcbiAgICBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHRoaXMuaGFuZGxlVmFsdWVDaGFuZ2UodmFsdWUpLFxuICB9KSk7XG5cbiAgYXVkaW9SZWNvcmRlckNvbnRleHQgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIGlucHV0U2hvd0NvbnRyb2xzOiB0cnVlLFxuICB9KSk7XG5cbiAgLy8gQnV0dG9uIGNvbnRleHRzIHJlbW92ZWQgLSBub3cgdXNpbmcgb3V0cHV0cyBtYXAgZm9yIGNsaWNrIGhhbmRsZXJzXG5cbiAgdG9vbHNDb250ZXh0ID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICBpbnB1dFRvb2xzTWVudTogdGhpcy5jb21wdXRlZFRvb2xzTWVudSgpLFxuICAgIGlucHV0RGlzYWJsZWQ6IHRoaXMuY29tcHV0ZWRNb2RlKCkgPT09IFwidHJhbnNjcmliZVwiLFxuICB9KSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gRWZmZWN0IHRvIGhhbmRsZSBtb2RlIGNoYW5nZXMgKG5vIHNpZ25hbCB3cml0ZXMpXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRNb2RlID0gdGhpcy5jb21wdXRlZE1vZGUoKTtcbiAgICAgIGlmIChjdXJyZW50TW9kZSA9PT0gXCJ0cmFuc2NyaWJlXCIgJiYgdGhpcy5hdWRpb1JlY29yZGVyUmVmKSB7XG4gICAgICAgIHRoaXMuYXVkaW9SZWNvcmRlclJlZi5zdGFydCgpLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmF1ZGlvUmVjb3JkZXJSZWY/LmdldFN0YXRlKCkgPT09IFwicmVjb3JkaW5nXCIpIHtcbiAgICAgICAgdGhpcy5hdWRpb1JlY29yZGVyUmVmLnN0b3AoKS5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIE91dHB1dCBtYXBzIGZvciBzbG90c1xuICBhZGRGaWxlQnV0dG9uT3V0cHV0cyA9IHsgY2xpY2tlZDogKCkgPT4gdGhpcy5oYW5kbGVBZGRGaWxlKCkgfTtcbiAgY2FuY2VsVHJhbnNjcmliZUJ1dHRvbk91dHB1dHMgPSB7XG4gICAgY2xpY2tlZDogKCkgPT4gdGhpcy5oYW5kbGVDYW5jZWxUcmFuc2NyaWJlKCksXG4gIH07XG4gIGZpbmlzaFRyYW5zY3JpYmVCdXR0b25PdXRwdXRzID0ge1xuICAgIGNsaWNrZWQ6ICgpID0+IHRoaXMuaGFuZGxlRmluaXNoVHJhbnNjcmliZSgpLFxuICB9O1xuICBzdGFydFRyYW5zY3JpYmVCdXR0b25PdXRwdXRzID0ge1xuICAgIGNsaWNrZWQ6ICgpID0+IHRoaXMuaGFuZGxlU3RhcnRUcmFuc2NyaWJlKCksXG4gIH07XG4gIC8vIFN1cHBvcnQgYm90aCBgY2xpY2tlZGAgKGlkaW9tYXRpYyBpbiBvdXIgc2xvdHMpIGFuZCBgY2xpY2tgIChsZWdhY3kpXG4gIHNlbmRCdXR0b25PdXRwdXRzID0geyBjbGlja2VkOiAoKSA9PiB0aGlzLnNlbmQoKSwgY2xpY2s6ICgpID0+IHRoaXMuc2VuZCgpIH07XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIEF1dG8tZm9jdXMgaWYgbmVlZGVkXG4gICAgaWYgKHRoaXMuY29tcHV0ZWRBdXRvRm9jdXMoKSAmJiB0aGlzLnRleHRBcmVhUmVmKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy50ZXh0QXJlYVJlZj8uZm9jdXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIENsZWFuIHVwIGFueSByZXNvdXJjZXNcbiAgICBpZiAodGhpcy5hdWRpb1JlY29yZGVyUmVmPy5nZXRTdGF0ZSgpID09PSBcInJlY29yZGluZ1wiKSB7XG4gICAgICB0aGlzLmF1ZGlvUmVjb3JkZXJSZWY/LnN0b3AoKS5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiICYmICFldmVudC5zaGlmdEtleSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2VuZCgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVZhbHVlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIGlmICh0aGlzLmNoYXRTdGF0ZSkgdGhpcy5jaGF0U3RhdGUuY2hhbmdlSW5wdXQodmFsdWUpO1xuICB9XG5cbiAgc2VuZCgpOiB2b2lkIHtcbiAgICBjb25zdCB0cmltbWVkID0gdGhpcy5jb21wdXRlZFZhbHVlKCkudHJpbSgpO1xuICAgIGlmICh0cmltbWVkKSB7XG4gICAgICB0aGlzLnN1Ym1pdE1lc3NhZ2UuZW1pdCh0cmltbWVkKTtcblxuICAgICAgdGhpcy5jaGF0U3RhdGUuc3VibWl0SW5wdXQodHJpbW1lZCk7XG5cbiAgICAgIGlmICh0aGlzLmNoYXRTdGF0ZSkgdGhpcy5jaGF0U3RhdGUuY2hhbmdlSW5wdXQoXCJcIik7XG4gICAgICBpZiAodGhpcy50ZXh0QXJlYVJlZikgdGhpcy50ZXh0QXJlYVJlZi5zZXRWYWx1ZShcIlwiKTtcblxuICAgICAgLy8gUmVmb2N1cyBpbnB1dFxuICAgICAgaWYgKHRoaXMudGV4dEFyZWFSZWYpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50ZXh0QXJlYVJlZj8uZm9jdXMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU3RhcnRUcmFuc2NyaWJlKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRUcmFuc2NyaWJlLmVtaXQoKTtcbiAgICB0aGlzLm1vZGVTaWduYWwuc2V0KFwidHJhbnNjcmliZVwiKTtcbiAgfVxuXG4gIGhhbmRsZUNhbmNlbFRyYW5zY3JpYmUoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWxUcmFuc2NyaWJlLmVtaXQoKTtcbiAgICB0aGlzLm1vZGVTaWduYWwuc2V0KFwiaW5wdXRcIik7XG4gIH1cblxuICBoYW5kbGVGaW5pc2hUcmFuc2NyaWJlKCk6IHZvaWQge1xuICAgIHRoaXMuZmluaXNoVHJhbnNjcmliZS5lbWl0KCk7XG4gICAgdGhpcy5tb2RlU2lnbmFsLnNldChcImlucHV0XCIpO1xuICB9XG5cbiAgaGFuZGxlQWRkRmlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEZpbGUuZW1pdCgpO1xuICB9XG59XG4iXX0=
634
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLHVCQUF1QixFQUl2QixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFDTCxnQ0FBZ0MsRUFDaEMsaUNBQWlDLEVBQ2pDLGlDQUFpQyxFQUNqQyx3QkFBd0IsR0FDekIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUtqRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQW9PbkQsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixXQUFXLENBQXVCO0lBR2xDLGdCQUFnQixDQUE0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LEVBQUU7Z0JBR3BELDZCQUE2QjtzQkFENUIsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzVELDhCQUE4QjtzQkFEN0IsWUFBWTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzdELDhCQUE4QjtzQkFEN0IsWUFBWTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzdELHFCQUFxQjtzQkFEcEIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUdwRCxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVGVtcGxhdGVSZWYsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIEFmdGVyVmlld0luaXQsXG4gIE9uRGVzdHJveSxcbiAgVHlwZSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIENvbnRlbnRDaGlsZCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ29waWxvdFNsb3QgfSBmcm9tIFwiLi4vLi4vc2xvdHMvY29waWxvdC1zbG90XCI7XG5pbXBvcnQgeyBpbmplY3RDaGF0TGFiZWxzIH0gZnJvbSBcIi4uLy4uL2NoYXQtY29uZmlnXCI7XG5pbXBvcnQgeyBMdWNpZGVBbmd1bGFyTW9kdWxlLCBBcnJvd1VwIH0gZnJvbSBcImx1Y2lkZS1hbmd1bGFyXCI7XG5pbXBvcnQgeyBDb3BpbG90Q2hhdFRleHRhcmVhIH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LXRleHRhcmVhXCI7XG5pbXBvcnQgeyBDb3BpbG90Q2hhdEF1ZGlvUmVjb3JkZXIgfSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtYXVkaW8tcmVjb3JkZXJcIjtcbmltcG9ydCB7XG4gIENvcGlsb3RDaGF0U3RhcnRUcmFuc2NyaWJlQnV0dG9uLFxuICBDb3BpbG90Q2hhdENhbmNlbFRyYW5zY3JpYmVCdXR0b24sXG4gIENvcGlsb3RDaGF0RmluaXNoVHJhbnNjcmliZUJ1dHRvbixcbiAgQ29waWxvdENoYXRBZGRGaWxlQnV0dG9uLFxufSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtYnV0dG9uc1wiO1xuaW1wb3J0IHsgQ29waWxvdENoYXRUb29sYmFyIH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LXRvb2xiYXJcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0VG9vbHNNZW51IH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LXRvb2xzLW1lbnVcIjtcbmltcG9ydCB0eXBlIHtcbiAgQ29waWxvdENoYXRJbnB1dE1vZGUsXG4gIFRvb2xzTWVudUl0ZW0sXG59IGZyb20gXCIuL2NvcGlsb3QtY2hhdC1pbnB1dC50eXBlc1wiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IGluamVjdENoYXRTdGF0ZSB9IGZyb20gXCIuLi8uLi9jaGF0LXN0YXRlXCI7XG5cbi8qKlxuICogQ29udGV4dCBwcm92aWRlZCB0byBzbG90IHRlbXBsYXRlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbmRCdXR0b25Db250ZXh0IHtcbiAgc2VuZDogKCkgPT4gdm9pZDtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbGJhckNvbnRleHQge1xuICBtb2RlOiBDb3BpbG90Q2hhdElucHV0TW9kZTtcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdC1pbnB1dFwiLFxuICBob3N0OiB7IFwiZGF0YS1jb3BpbG90a2l0XCI6IFwiXCIgfSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBDb3BpbG90U2xvdCxcbiAgICBMdWNpZGVBbmd1bGFyTW9kdWxlLFxuICAgIENvcGlsb3RDaGF0VGV4dGFyZWEsXG4gICAgQ29waWxvdENoYXRBdWRpb1JlY29yZGVyLFxuICAgIENvcGlsb3RDaGF0U3RhcnRUcmFuc2NyaWJlQnV0dG9uLFxuICAgIENvcGlsb3RDaGF0Q2FuY2VsVHJhbnNjcmliZUJ1dHRvbixcbiAgICBDb3BpbG90Q2hhdEZpbmlzaFRyYW5zY3JpYmVCdXR0b24sXG4gICAgQ29waWxvdENoYXRBZGRGaWxlQnV0dG9uLFxuICAgIENvcGlsb3RDaGF0VG9vbGJhcixcbiAgICBDb3BpbG90Q2hhdFRvb2xzTWVudSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbY2xhc3NdPVwiY29tcHV0ZWRDbGFzcygpXCI+XG4gICAgICA8IS0tIE1haW4gaW5wdXQgYXJlYTogZWl0aGVyIHRleHRhcmVhIG9yIGF1ZGlvIHJlY29yZGVyIC0tPlxuICAgICAgQGlmIChjb21wdXRlZE1vZGUoKSA9PT0gXCJ0cmFuc2NyaWJlXCIpIHtcbiAgICAgICAgQGlmIChhdWRpb1JlY29yZGVyVGVtcGxhdGUgfHwgYXVkaW9SZWNvcmRlckNvbXBvbmVudCgpKSB7XG4gICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgW3Nsb3RdPVwiYXVkaW9SZWNvcmRlclRlbXBsYXRlIHx8IGF1ZGlvUmVjb3JkZXJDb21wb25lbnQoKVwiXG4gICAgICAgICAgICBbY29udGV4dF09XCJhdWRpb1JlY29yZGVyQ29udGV4dCgpXCJcbiAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cImRlZmF1bHRBdWRpb1JlY29yZGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxjb3BpbG90LWNoYXQtYXVkaW8tcmVjb3JkZXIgW2lucHV0U2hvd0NvbnRyb2xzXT1cInRydWVcIj5cbiAgICAgICAgICA8L2NvcGlsb3QtY2hhdC1hdWRpby1yZWNvcmRlcj5cbiAgICAgICAgfVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpZiAodGV4dEFyZWFUZW1wbGF0ZSB8fCB0ZXh0QXJlYUNvbXBvbmVudCgpKSB7XG4gICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgW3Nsb3RdPVwidGV4dEFyZWFUZW1wbGF0ZSB8fCB0ZXh0QXJlYUNvbXBvbmVudCgpXCJcbiAgICAgICAgICAgIFtjb250ZXh0XT1cInRleHRBcmVhQ29udGV4dCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgY29waWxvdENoYXRUZXh0YXJlYVxuICAgICAgICAgICAgW2lucHV0VmFsdWVdPVwiY29tcHV0ZWRWYWx1ZSgpXCJcbiAgICAgICAgICAgIFtpbnB1dEF1dG9Gb2N1c109XCJjb21wdXRlZEF1dG9Gb2N1cygpXCJcbiAgICAgICAgICAgIFtpbnB1dERpc2FibGVkXT1cImNvbXB1dGVkTW9kZSgpID09PSAncHJvY2Vzc2luZydcIlxuICAgICAgICAgICAgW2lucHV0Q2xhc3NdPVwidGV4dEFyZWFDbGFzcygpXCJcbiAgICAgICAgICAgIFtpbnB1dE1heFJvd3NdPVwidGV4dEFyZWFNYXhSb3dzKClcIlxuICAgICAgICAgICAgW2lucHV0UGxhY2Vob2xkZXJdPVwidGV4dEFyZWFQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICAgIChrZXlEb3duKT1cImhhbmRsZUtleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgPCEtLSBUb29sYmFyIC0tPlxuICAgICAgQGlmICh0b29sYmFyVGVtcGxhdGUgfHwgdG9vbGJhckNvbXBvbmVudCgpKSB7XG4gICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICBbc2xvdF09XCJ0b29sYmFyVGVtcGxhdGUgfHwgdG9vbGJhckNvbXBvbmVudCgpXCJcbiAgICAgICAgICBbY29udGV4dF09XCJ0b29sYmFyQ29udGV4dCgpXCJcbiAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJDb3BpbG90Q2hhdFRvb2xiYXJcIlxuICAgICAgICA+XG4gICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY29waWxvdENoYXRUb29sYmFyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgQGlmIChhZGRGaWxlQnV0dG9uVGVtcGxhdGUgfHwgYWRkRmlsZUJ1dHRvbkNvbXBvbmVudCgpKSB7XG4gICAgICAgICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICAgICAgICBbc2xvdF09XCJhZGRGaWxlQnV0dG9uVGVtcGxhdGUgfHwgYWRkRmlsZUJ1dHRvbkNvbXBvbmVudCgpXCJcbiAgICAgICAgICAgICAgICBbY29udGV4dF09XCJ7IGlucHV0RGlzYWJsZWQ6IGNvbXB1dGVkTW9kZSgpID09PSAndHJhbnNjcmliZScgfVwiXG4gICAgICAgICAgICAgICAgW291dHB1dHNdPVwiYWRkRmlsZUJ1dHRvbk91dHB1dHNcIlxuICAgICAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0QWRkRmlsZUJ1dHRvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGNvcGlsb3QtY2hhdC1hZGQtZmlsZS1idXR0b25cbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29tcHV0ZWRNb2RlKCkgPT09ICd0cmFuc2NyaWJlJ1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwiaGFuZGxlQWRkRmlsZSgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2NvcGlsb3QtY2hhdC1hZGQtZmlsZS1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGNvbXB1dGVkVG9vbHNNZW51KCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBAaWYgKHRvb2xzQnV0dG9uVGVtcGxhdGUgfHwgdG9vbHNCdXR0b25Db21wb25lbnQoKSkge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICAgICAgICAgIFtzbG90XT1cInRvb2xzQnV0dG9uVGVtcGxhdGUgfHwgdG9vbHNCdXR0b25Db21wb25lbnQoKVwiXG4gICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJ0b29sc0NvbnRleHQoKVwiXG4gICAgICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJDb3BpbG90Q2hhdFRvb2xzTWVudVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1jaGF0LXRvb2xzLW1lbnVcbiAgICAgICAgICAgICAgICAgIFtpbnB1dFRvb2xzTWVudV09XCJjb21wdXRlZFRvb2xzTWVudSgpXCJcbiAgICAgICAgICAgICAgICAgIFtpbnB1dERpc2FibGVkXT1cImNvbXB1dGVkTW9kZSgpID09PSAndHJhbnNjcmliZSdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3QtY2hhdC10b29scy1tZW51PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGFkZGl0aW9uYWxUb29sYmFySXRlbXMoKSkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkaXRpb25hbFRvb2xiYXJJdGVtcygpIHx8IG51bGxcIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICBAaWYgKGNvbXB1dGVkTW9kZSgpID09PSBcInRyYW5zY3JpYmVcIikge1xuICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgIGNhbmNlbFRyYW5zY3JpYmVCdXR0b25UZW1wbGF0ZSB8fFxuICAgICAgICAgICAgICAgIGNhbmNlbFRyYW5zY3JpYmVCdXR0b25Db21wb25lbnQoKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICAgICAgICBbc2xvdF09XCJcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsVHJhbnNjcmliZUJ1dHRvblRlbXBsYXRlIHx8XG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbFRyYW5zY3JpYmVCdXR0b25Db21wb25lbnQoKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInt9XCJcbiAgICAgICAgICAgICAgICAgIFtvdXRwdXRzXT1cImNhbmNlbFRyYW5zY3JpYmVCdXR0b25PdXRwdXRzXCJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0Q2FuY2VsVHJhbnNjcmliZUJ1dHRvblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1jaGF0LWNhbmNlbC10cmFuc2NyaWJlLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwiaGFuZGxlQ2FuY2VsVHJhbnNjcmliZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LWNoYXQtY2FuY2VsLXRyYW5zY3JpYmUtYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgZmluaXNoVHJhbnNjcmliZUJ1dHRvblRlbXBsYXRlIHx8XG4gICAgICAgICAgICAgICAgZmluaXNoVHJhbnNjcmliZUJ1dHRvbkNvbXBvbmVudCgpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LXNsb3RcbiAgICAgICAgICAgICAgICAgIFtzbG90XT1cIlxuICAgICAgICAgICAgICAgICAgICBmaW5pc2hUcmFuc2NyaWJlQnV0dG9uVGVtcGxhdGUgfHxcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoVHJhbnNjcmliZUJ1dHRvbkNvbXBvbmVudCgpXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwie31cIlxuICAgICAgICAgICAgICAgICAgW291dHB1dHNdPVwiZmluaXNoVHJhbnNjcmliZUJ1dHRvbk91dHB1dHNcIlxuICAgICAgICAgICAgICAgICAgW2RlZmF1bHRDb21wb25lbnRdPVwiQ29waWxvdENoYXRGaW5pc2hUcmFuc2NyaWJlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxjb3BpbG90LWNoYXQtZmluaXNoLXRyYW5zY3JpYmUtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJoYW5kbGVGaW5pc2hUcmFuc2NyaWJlKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3QtY2hhdC1maW5pc2gtdHJhbnNjcmliZS1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgIHN0YXJ0VHJhbnNjcmliZUJ1dHRvblRlbXBsYXRlIHx8XG4gICAgICAgICAgICAgICAgc3RhcnRUcmFuc2NyaWJlQnV0dG9uQ29tcG9uZW50KClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwiXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0VHJhbnNjcmliZUJ1dHRvblRlbXBsYXRlIHx8XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0VHJhbnNjcmliZUJ1dHRvbkNvbXBvbmVudCgpXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwie31cIlxuICAgICAgICAgICAgICAgICAgW291dHB1dHNdPVwic3RhcnRUcmFuc2NyaWJlQnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJDb3BpbG90Q2hhdFN0YXJ0VHJhbnNjcmliZUJ1dHRvblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1jaGF0LXN0YXJ0LXRyYW5zY3JpYmUtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJoYW5kbGVTdGFydFRyYW5zY3JpYmUoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1jaGF0LXN0YXJ0LXRyYW5zY3JpYmUtYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwhLS0gU2VuZCBidXR0b24gd2l0aCBzbG90IC0tPlxuICAgICAgICAgICAgICBAaWYgKHNlbmRCdXR0b25UZW1wbGF0ZSB8fCBzZW5kQnV0dG9uQ29tcG9uZW50KCkpIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICAgICAgICBbc2xvdF09XCJzZW5kQnV0dG9uVGVtcGxhdGUgfHwgc2VuZEJ1dHRvbkNvbXBvbmVudCgpXCJcbiAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInNlbmRCdXR0b25Db250ZXh0KClcIlxuICAgICAgICAgICAgICAgICAgW291dHB1dHNdPVwic2VuZEJ1dHRvbk91dHB1dHNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yLVsxMHB4XVwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInNlbmRCdXR0b25DbGFzcygpIHx8IGRlZmF1bHRCdXR0b25DbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAhY29tcHV0ZWRWYWx1ZSgpLnRyaW0oKSB8fCBjb21wdXRlZE1vZGUoKSA9PT0gJ3Byb2Nlc3NpbmcnXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZW5kKClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bHVjaWRlLWFuZ3VsYXJcbiAgICAgICAgICAgICAgICAgICAgICBbaW1nXT1cIkFycm93VXBJY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCIxOFwiXG4gICAgICAgICAgICAgICAgICAgID48L2x1Y2lkZS1hbmd1bGFyPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgICAgLnNoYWRvdy1cXFxcWzBfNHB4XzRweF8wX1xcXFwjMDAwMDAwMGFcXFxcMmNfMF8wXzFweF8wX1xcXFwjMDAwMDAwOWVcXFxcXSB7XG4gICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgMCA0cHggNHB4IDAgIzAwMDAwMDBhLFxuICAgICAgICAgIDAgMCAxcHggMCAjMDAwMDAwOWUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdElucHV0IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChDb3BpbG90Q2hhdFRleHRhcmVhLCB7IHJlYWQ6IENvcGlsb3RDaGF0VGV4dGFyZWEgfSlcbiAgdGV4dEFyZWFSZWY/OiBDb3BpbG90Q2hhdFRleHRhcmVhO1xuXG4gIEBWaWV3Q2hpbGQoQ29waWxvdENoYXRBdWRpb1JlY29yZGVyKVxuICBhdWRpb1JlY29yZGVyUmVmPzogQ29waWxvdENoYXRBdWRpb1JlY29yZGVyO1xuXG4gIC8vIENhcHR1cmUgdGVtcGxhdGVzIGZyb20gY29udGVudCBwcm9qZWN0aW9uXG4gIEBDb250ZW50Q2hpbGQoXCJzZW5kQnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgc2VuZEJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8U2VuZEJ1dHRvbkNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKFwidG9vbGJhclwiLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHRvb2xiYXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPFRvb2xiYXJDb250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZChcInRleHRBcmVhXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgdGV4dEFyZWFUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoXCJhdWRpb1JlY29yZGVyXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgYXVkaW9SZWNvcmRlclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChcInN0YXJ0VHJhbnNjcmliZUJ1dHRvblwiLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHN0YXJ0VHJhbnNjcmliZUJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChcImNhbmNlbFRyYW5zY3JpYmVCdXR0b25cIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBjYW5jZWxUcmFuc2NyaWJlQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkKFwiZmluaXNoVHJhbnNjcmliZUJ1dHRvblwiLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGZpbmlzaFRyYW5zY3JpYmVCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoXCJhZGRGaWxlQnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgYWRkRmlsZUJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChcInRvb2xzQnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgdG9vbHNCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLy8gQ2xhc3MgaW5wdXRzIGZvciBzdHlsaW5nIGRlZmF1bHQgY29tcG9uZW50c1xuICBzZW5kQnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHRvb2xiYXJDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgdGV4dEFyZWFDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgdGV4dEFyZWFNYXhSb3dzID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICB0ZXh0QXJlYVBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBhdWRpb1JlY29yZGVyQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHN0YXJ0VHJhbnNjcmliZUJ1dHRvbkNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjYW5jZWxUcmFuc2NyaWJlQnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGZpbmlzaFRyYW5zY3JpYmVCdXR0b25DbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgYWRkRmlsZUJ1dHRvbkNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICB0b29sc0J1dHRvbkNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vIENvbXBvbmVudCBpbnB1dHMgZm9yIG92ZXJyaWRlc1xuICBzZW5kQnV0dG9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICB0b29sYmFyQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICB0ZXh0QXJlYUNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgYXVkaW9SZWNvcmRlckNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgc3RhcnRUcmFuc2NyaWJlQnV0dG9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjYW5jZWxUcmFuc2NyaWJlQnV0dG9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBmaW5pc2hUcmFuc2NyaWJlQnV0dG9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBhZGRGaWxlQnV0dG9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICB0b29sc0J1dHRvbkNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvLyBSZWd1bGFyIGlucHV0c1xuICBtb2RlID0gaW5wdXQ8Q29waWxvdENoYXRJbnB1dE1vZGUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHRvb2xzTWVudSA9IGlucHV0PChUb29sc01lbnVJdGVtIHwgXCItXCIpW10gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGF1dG9Gb2N1cyA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHZhbHVlID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAvLyBOb3RlOiBQcmVmZXIgaG9zdCBgY2xhc3NgIGZvciBzdHlsaW5nIHRoaXMgY29tcG9uZW50O1xuICAvLyBrZWVwIG9ubHkgYGlucHV0Q2xhc3NgIHRvIHN0eWxlIHRoZSBpbnRlcm5hbCB3cmFwcGVyIGlmIG5lZWRlZC5cbiAgYWRkaXRpb25hbFRvb2xiYXJJdGVtcyA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLy8gT3V0cHV0IGV2ZW50c1xuICBzdWJtaXRNZXNzYWdlID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgc3RhcnRUcmFuc2NyaWJlID0gb3V0cHV0PHZvaWQ+KCk7XG4gIGNhbmNlbFRyYW5zY3JpYmUgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgZmluaXNoVHJhbnNjcmliZSA9IG91dHB1dDx2b2lkPigpO1xuICBhZGRGaWxlID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHZhbHVlQ2hhbmdlID0gb3V0cHV0PHN0cmluZz4oKTtcblxuICAvLyBJY29ucyBhbmQgZGVmYXVsdCBjbGFzc2VzXG4gIHJlYWRvbmx5IEFycm93VXBJY29uID0gQXJyb3dVcDtcbiAgcmVhZG9ubHkgZGVmYXVsdEJ1dHRvbkNsYXNzID0gY24oXG4gICAgLy8gQmFzZSBidXR0b24gc3R5bGVzXG4gICAgXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC1tZCB0ZXh0LXNtIGZvbnQtbWVkaXVtXCIsXG4gICAgXCJ0cmFuc2l0aW9uLWFsbCBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOm9wYWNpdHktNTBcIixcbiAgICBcInNocmluay0wIG91dGxpbmUtbm9uZVwiLFxuICAgIFwiZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBmb2N1cy12aXNpYmxlOnJpbmctWzNweF1cIixcbiAgICAvLyBjaGF0SW5wdXRUb29sYmFyUHJpbWFyeSB2YXJpYW50XG4gICAgXCJjdXJzb3ItcG9pbnRlclwiLFxuICAgIFwiYmctYmxhY2sgdGV4dC13aGl0ZVwiLFxuICAgIFwiZGFyazpiZy13aGl0ZSBkYXJrOnRleHQtYmxhY2sgZGFyazpmb2N1cy12aXNpYmxlOm91dGxpbmUtd2hpdGVcIixcbiAgICBcInJvdW5kZWQtZnVsbCBoLTkgdy05XCIsXG4gICAgXCJ0cmFuc2l0aW9uLWNvbG9yc1wiLFxuICAgIFwiZm9jdXM6b3V0bGluZS1ub25lXCIsXG4gICAgXCJob3ZlcjpvcGFjaXR5LTcwIGRpc2FibGVkOmhvdmVyOm9wYWNpdHktMTAwXCIsXG4gICAgXCJkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6YmctWyMwMDAwMDAxNF0gZGlzYWJsZWQ6dGV4dC1bcmdiKDEzLDEzLDEzKV1cIixcbiAgICBcImRhcms6ZGlzYWJsZWQ6YmctWyM0NTQ1NDVdIGRhcms6ZGlzYWJsZWQ6dGV4dC13aGl0ZVwiLFxuICApO1xuXG4gIC8vIFNlcnZpY2VzXG4gIHJlYWRvbmx5IGxhYmVscyA9IGluamVjdENoYXRMYWJlbHMoKTtcbiAgLy8gcmVhZG9ubHkgY2hhdENvbmZpZyA9IGluamVjdENoYXRDb25maWcoKTtcbiAgcmVhZG9ubHkgY2hhdFN0YXRlID0gaW5qZWN0Q2hhdFN0YXRlKCk7XG5cbiAgLy8gU2lnbmFsc1xuICBtb2RlU2lnbmFsID0gc2lnbmFsPENvcGlsb3RDaGF0SW5wdXRNb2RlPihcImlucHV0XCIpO1xuICB0b29sc01lbnVTaWduYWwgPSBzaWduYWw8KFRvb2xzTWVudUl0ZW0gfCBcIi1cIilbXT4oW10pO1xuICBhdXRvRm9jdXNTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIGN1c3RvbUNsYXNzID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvLyBEZWZhdWx0IGNvbXBvbmVudHNcbiAgLy8gTm90ZTogQ29waWxvdENoYXRUZXh0YXJlYSB1c2VzIGF0dHJpYnV0ZSBzZWxlY3RvciBidXQgaXMgYSBjb21wb25lbnRcbiAgZGVmYXVsdEF1ZGlvUmVjb3JkZXIgPSBDb3BpbG90Q2hhdEF1ZGlvUmVjb3JkZXI7XG4gIGRlZmF1bHRTZW5kQnV0dG9uOiBhbnkgPSBudWxsOyAvLyBXaWxsIGJlIHNldCB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5XG4gIENvcGlsb3RDaGF0VG9vbGJhciA9IENvcGlsb3RDaGF0VG9vbGJhcjtcbiAgQ29waWxvdENoYXRBZGRGaWxlQnV0dG9uID0gQ29waWxvdENoYXRBZGRGaWxlQnV0dG9uO1xuICBDb3BpbG90Q2hhdFRvb2xzTWVudSA9IENvcGlsb3RDaGF0VG9vbHNNZW51O1xuICBDb3BpbG90Q2hhdENhbmNlbFRyYW5zY3JpYmVCdXR0b24gPSBDb3BpbG90Q2hhdENhbmNlbFRyYW5zY3JpYmVCdXR0b247XG4gIENvcGlsb3RDaGF0RmluaXNoVHJhbnNjcmliZUJ1dHRvbiA9IENvcGlsb3RDaGF0RmluaXNoVHJhbnNjcmliZUJ1dHRvbjtcbiAgQ29waWxvdENoYXRTdGFydFRyYW5zY3JpYmVCdXR0b24gPSBDb3BpbG90Q2hhdFN0YXJ0VHJhbnNjcmliZUJ1dHRvbjtcblxuICAvLyBDb21wdXRlZCB2YWx1ZXNcbiAgY29tcHV0ZWRNb2RlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tb2RlU2lnbmFsKCkpO1xuICBjb21wdXRlZFRvb2xzTWVudSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudG9vbHNNZW51KCkgPz8gW10pO1xuICBjb21wdXRlZEF1dG9Gb2N1cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYXV0b0ZvY3VzKCkgPz8gdHJ1ZSk7XG4gIGNvbXB1dGVkVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VzdG9tVmFsdWUgPSB0aGlzLnZhbHVlKCkgPz8gXCJcIjtcbiAgICBjb25zdCBjb25maWdWYWx1ZSA9IHRoaXMuY2hhdFN0YXRlLmlucHV0VmFsdWUoKTtcbiAgICByZXR1cm4gY3VzdG9tVmFsdWUgfHwgY29uZmlnVmFsdWUgfHwgXCJcIjtcbiAgfSk7XG5cbiAgY29tcHV0ZWRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBiYXNlQ2xhc3NlcyA9IGNuKFxuICAgICAgLy8gTGF5b3V0XG4gICAgICBcImZsZXggdy1mdWxsIGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiLFxuICAgICAgLy8gSW50ZXJhY3Rpb25cbiAgICAgIFwiY3Vyc29yLXRleHRcIixcbiAgICAgIC8vIE92ZXJmbG93IGFuZCBjbGlwcGluZ1xuICAgICAgXCJvdmVyZmxvdy12aXNpYmxlIGJnLWNsaXAtcGFkZGluZyBjb250YWluLWlubGluZS1zaXplXCIsXG4gICAgICAvLyBCYWNrZ3JvdW5kXG4gICAgICBcImJnLXdoaXRlIGRhcms6YmctWyMzMDMwMzBdXCIsXG4gICAgICAvLyBWaXN1YWwgZWZmZWN0c1xuICAgICAgXCJzaGFkb3ctWzBfNHB4XzRweF8wXyMwMDAwMDAwYSwwXzBfMXB4XzBfIzAwMDAwMDllXSByb3VuZGVkLVsyOHB4XVwiLFxuICAgICk7XG4gICAgcmV0dXJuIGNuKGJhc2VDbGFzc2VzLCB0aGlzLmN1c3RvbUNsYXNzKCkpO1xuICB9KTtcblxuICAvLyBDb250ZXh0IGZvciBzbG90cyAocmVhY3RpdmUgdmlhIHNpZ25hbHMpXG4gIHNlbmRCdXR0b25Db250ZXh0ID0gY29tcHV0ZWQ8U2VuZEJ1dHRvbkNvbnRleHQ+KCgpID0+ICh7XG4gICAgc2VuZDogKCkgPT4gdGhpcy5zZW5kKCksXG4gICAgZGlzYWJsZWQ6XG4gICAgICAhdGhpcy5jb21wdXRlZFZhbHVlKCkudHJpbSgpIHx8IHRoaXMuY29tcHV0ZWRNb2RlKCkgPT09IFwicHJvY2Vzc2luZ1wiLFxuICAgIHZhbHVlOiB0aGlzLmNvbXB1dGVkVmFsdWUoKSxcbiAgfSkpO1xuXG4gIHRvb2xiYXJDb250ZXh0ID0gY29tcHV0ZWQ8VG9vbGJhckNvbnRleHQ+KCgpID0+ICh7XG4gICAgbW9kZTogdGhpcy5jb21wdXRlZE1vZGUoKSxcbiAgICB2YWx1ZTogdGhpcy5jb21wdXRlZFZhbHVlKCksXG4gIH0pKTtcblxuICB0ZXh0QXJlYUNvbnRleHQgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIHZhbHVlOiB0aGlzLmNvbXB1dGVkVmFsdWUoKSxcbiAgICBhdXRvRm9jdXM6IHRoaXMuY29tcHV0ZWRBdXRvRm9jdXMoKSxcbiAgICBkaXNhYmxlZDogdGhpcy5jb21wdXRlZE1vZGUoKSA9PT0gXCJwcm9jZXNzaW5nXCIsXG4gICAgbWF4Um93czogdGhpcy50ZXh0QXJlYU1heFJvd3MoKSxcbiAgICBwbGFjZWhvbGRlcjogdGhpcy50ZXh0QXJlYVBsYWNlaG9sZGVyKCksXG4gICAgaW5wdXRDbGFzczogdGhpcy50ZXh0QXJlYUNsYXNzKCksXG4gICAgb25LZXlEb3duOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMuaGFuZGxlS2V5RG93bihldmVudCksXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB0aGlzLmhhbmRsZVZhbHVlQ2hhbmdlKHZhbHVlKSxcbiAgfSkpO1xuXG4gIGF1ZGlvUmVjb3JkZXJDb250ZXh0ID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICBpbnB1dFNob3dDb250cm9sczogdHJ1ZSxcbiAgfSkpO1xuXG4gIC8vIEJ1dHRvbiBjb250ZXh0cyByZW1vdmVkIC0gbm93IHVzaW5nIG91dHB1dHMgbWFwIGZvciBjbGljayBoYW5kbGVyc1xuXG4gIHRvb2xzQ29udGV4dCA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgaW5wdXRUb29sc01lbnU6IHRoaXMuY29tcHV0ZWRUb29sc01lbnUoKSxcbiAgICBpbnB1dERpc2FibGVkOiB0aGlzLmNvbXB1dGVkTW9kZSgpID09PSBcInRyYW5zY3JpYmVcIixcbiAgfSkpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIEVmZmVjdCB0byBoYW5kbGUgbW9kZSBjaGFuZ2VzIChubyBzaWduYWwgd3JpdGVzKVxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50TW9kZSA9IHRoaXMuY29tcHV0ZWRNb2RlKCk7XG4gICAgICBpZiAoY3VycmVudE1vZGUgPT09IFwidHJhbnNjcmliZVwiICYmIHRoaXMuYXVkaW9SZWNvcmRlclJlZikge1xuICAgICAgICB0aGlzLmF1ZGlvUmVjb3JkZXJSZWYuc3RhcnQoKS5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hdWRpb1JlY29yZGVyUmVmPy5nZXRTdGF0ZSgpID09PSBcInJlY29yZGluZ1wiKSB7XG4gICAgICAgIHRoaXMuYXVkaW9SZWNvcmRlclJlZi5zdG9wKCkuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBPdXRwdXQgbWFwcyBmb3Igc2xvdHNcbiAgYWRkRmlsZUJ1dHRvbk91dHB1dHMgPSB7IGNsaWNrZWQ6ICgpID0+IHRoaXMuaGFuZGxlQWRkRmlsZSgpIH07XG4gIGNhbmNlbFRyYW5zY3JpYmVCdXR0b25PdXRwdXRzID0ge1xuICAgIGNsaWNrZWQ6ICgpID0+IHRoaXMuaGFuZGxlQ2FuY2VsVHJhbnNjcmliZSgpLFxuICB9O1xuICBmaW5pc2hUcmFuc2NyaWJlQnV0dG9uT3V0cHV0cyA9IHtcbiAgICBjbGlja2VkOiAoKSA9PiB0aGlzLmhhbmRsZUZpbmlzaFRyYW5zY3JpYmUoKSxcbiAgfTtcbiAgc3RhcnRUcmFuc2NyaWJlQnV0dG9uT3V0cHV0cyA9IHtcbiAgICBjbGlja2VkOiAoKSA9PiB0aGlzLmhhbmRsZVN0YXJ0VHJhbnNjcmliZSgpLFxuICB9O1xuICAvLyBTdXBwb3J0IGJvdGggYGNsaWNrZWRgIChpZGlvbWF0aWMgaW4gb3VyIHNsb3RzKSBhbmQgYGNsaWNrYCAobGVnYWN5KVxuICBzZW5kQnV0dG9uT3V0cHV0cyA9IHsgY2xpY2tlZDogKCkgPT4gdGhpcy5zZW5kKCksIGNsaWNrOiAoKSA9PiB0aGlzLnNlbmQoKSB9O1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBBdXRvLWZvY3VzIGlmIG5lZWRlZFxuICAgIGlmICh0aGlzLmNvbXB1dGVkQXV0b0ZvY3VzKCkgJiYgdGhpcy50ZXh0QXJlYVJlZikge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudGV4dEFyZWFSZWY/LmZvY3VzKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBDbGVhbiB1cCBhbnkgcmVzb3VyY2VzXG4gICAgaWYgKHRoaXMuYXVkaW9SZWNvcmRlclJlZj8uZ2V0U3RhdGUoKSA9PT0gXCJyZWNvcmRpbmdcIikge1xuICAgICAgdGhpcy5hdWRpb1JlY29yZGVyUmVmPy5zdG9wKCkuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09IFwiRW50ZXJcIiAmJiAhZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNlbmQoKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVWYWx1ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICBpZiAodGhpcy5jaGF0U3RhdGUpIHRoaXMuY2hhdFN0YXRlLmNoYW5nZUlucHV0KHZhbHVlKTtcbiAgfVxuXG4gIHNlbmQoKTogdm9pZCB7XG4gICAgY29uc3QgdHJpbW1lZCA9IHRoaXMuY29tcHV0ZWRWYWx1ZSgpLnRyaW0oKTtcbiAgICBpZiAodHJpbW1lZCkge1xuICAgICAgdGhpcy5zdWJtaXRNZXNzYWdlLmVtaXQodHJpbW1lZCk7XG5cbiAgICAgIHRoaXMuY2hhdFN0YXRlLnN1Ym1pdElucHV0KHRyaW1tZWQpO1xuXG4gICAgICBpZiAodGhpcy5jaGF0U3RhdGUpIHRoaXMuY2hhdFN0YXRlLmNoYW5nZUlucHV0KFwiXCIpO1xuICAgICAgaWYgKHRoaXMudGV4dEFyZWFSZWYpIHRoaXMudGV4dEFyZWFSZWYuc2V0VmFsdWUoXCJcIik7XG5cbiAgICAgIC8vIFJlZm9jdXMgaW5wdXRcbiAgICAgIGlmICh0aGlzLnRleHRBcmVhUmVmKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudGV4dEFyZWFSZWY/LmZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0YXJ0VHJhbnNjcmliZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0VHJhbnNjcmliZS5lbWl0KCk7XG4gICAgdGhpcy5tb2RlU2lnbmFsLnNldChcInRyYW5zY3JpYmVcIik7XG4gIH1cblxuICBoYW5kbGVDYW5jZWxUcmFuc2NyaWJlKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsVHJhbnNjcmliZS5lbWl0KCk7XG4gICAgdGhpcy5tb2RlU2lnbmFsLnNldChcImlucHV0XCIpO1xuICB9XG5cbiAgaGFuZGxlRmluaXNoVHJhbnNjcmliZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbmlzaFRyYW5zY3JpYmUuZW1pdCgpO1xuICAgIHRoaXMubW9kZVNpZ25hbC5zZXQoXCJpbnB1dFwiKTtcbiAgfVxuXG4gIGhhbmRsZUFkZEZpbGUoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRGaWxlLmVtaXQoKTtcbiAgfVxufVxuIl19
@@ -95,7 +95,7 @@ export class CopilotChatMessageView {
95
95
  this.assistantMessageRegenerate.emit(event);
96
96
  }
97
97
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CopilotChatMessageView, deps: [], target: i0.ɵɵFactoryTarget.Component });
98
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatMessageView, isStandalone: true, selector: "copilot-chat-message-view", inputs: { messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, showCursor: { classPropertyName: "showCursor", publicName: "showCursor", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageComponent: { classPropertyName: "assistantMessageComponent", publicName: "assistantMessageComponent", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageTemplate: { classPropertyName: "assistantMessageTemplate", publicName: "assistantMessageTemplate", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageClass: { classPropertyName: "assistantMessageClass", publicName: "assistantMessageClass", isSignal: true, isRequired: false, transformFunction: null }, userMessageComponent: { classPropertyName: "userMessageComponent", publicName: "userMessageComponent", isSignal: true, isRequired: false, transformFunction: null }, userMessageTemplate: { classPropertyName: "userMessageTemplate", publicName: "userMessageTemplate", isSignal: true, isRequired: false, transformFunction: null }, userMessageClass: { classPropertyName: "userMessageClass", publicName: "userMessageClass", isSignal: true, isRequired: false, transformFunction: null }, cursorComponent: { classPropertyName: "cursorComponent", publicName: "cursorComponent", isSignal: true, isRequired: false, transformFunction: null }, cursorTemplate: { classPropertyName: "cursorTemplate", publicName: "cursorTemplate", isSignal: true, isRequired: false, transformFunction: null }, cursorClass: { classPropertyName: "cursorClass", publicName: "cursorClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { assistantMessageThumbsUp: "assistantMessageThumbsUp", assistantMessageThumbsDown: "assistantMessageThumbsDown", assistantMessageReadAloud: "assistantMessageReadAloud", assistantMessageRegenerate: "assistantMessageRegenerate", userMessageCopy: "userMessageCopy", userMessageEdit: "userMessageEdit" }, queries: [{ propertyName: "customLayoutTemplate", first: true, predicate: ["customLayout"], descendants: true }], ngImport: i0, template: `
98
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CopilotChatMessageView, isStandalone: true, selector: "copilot-chat-message-view", inputs: { messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, showCursor: { classPropertyName: "showCursor", publicName: "showCursor", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageComponent: { classPropertyName: "assistantMessageComponent", publicName: "assistantMessageComponent", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageTemplate: { classPropertyName: "assistantMessageTemplate", publicName: "assistantMessageTemplate", isSignal: true, isRequired: false, transformFunction: null }, assistantMessageClass: { classPropertyName: "assistantMessageClass", publicName: "assistantMessageClass", isSignal: true, isRequired: false, transformFunction: null }, userMessageComponent: { classPropertyName: "userMessageComponent", publicName: "userMessageComponent", isSignal: true, isRequired: false, transformFunction: null }, userMessageTemplate: { classPropertyName: "userMessageTemplate", publicName: "userMessageTemplate", isSignal: true, isRequired: false, transformFunction: null }, userMessageClass: { classPropertyName: "userMessageClass", publicName: "userMessageClass", isSignal: true, isRequired: false, transformFunction: null }, cursorComponent: { classPropertyName: "cursorComponent", publicName: "cursorComponent", isSignal: true, isRequired: false, transformFunction: null }, cursorTemplate: { classPropertyName: "cursorTemplate", publicName: "cursorTemplate", isSignal: true, isRequired: false, transformFunction: null }, cursorClass: { classPropertyName: "cursorClass", publicName: "cursorClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { assistantMessageThumbsUp: "assistantMessageThumbsUp", assistantMessageThumbsDown: "assistantMessageThumbsDown", assistantMessageReadAloud: "assistantMessageReadAloud", assistantMessageRegenerate: "assistantMessageRegenerate", userMessageCopy: "userMessageCopy", userMessageEdit: "userMessageEdit" }, host: { attributes: { "data-copilotkit": "" } }, queries: [{ propertyName: "customLayoutTemplate", first: true, predicate: ["customLayout"], descendants: true }], ngImport: i0, template: `
99
99
  <!-- Custom layout template support (render prop pattern) -->
100
100
  @if (customLayoutTemplate) {
101
101
  <ng-container
@@ -176,6 +176,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
176
176
  args: [{
177
177
  selector: "copilot-chat-message-view",
178
178
  standalone: true,
179
+ host: { "data-copilotkit": "" },
179
180
  imports: [
180
181
  CommonModule,
181
182
  CopilotSlot,
@@ -265,4 +266,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
265
266
  type: ContentChild,
266
267
  args: ["customLayout"]
267
268
  }] } });
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LW1lc3NhZ2Utdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC1tZXNzYWdlLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFHWix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQUVqQzs7OztHQUlHO0FBeUZILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsbUNBQW1DO0lBQ25DLFFBQVEsR0FBRyxLQUFLLENBQVksRUFBRSxDQUFDLENBQUM7SUFDaEMsVUFBVSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNuQyxTQUFTLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLFVBQVUsR0FBRyxLQUFLLEVBQXNCLENBQUM7SUFFekMsOENBQThDO0lBRTlDLGdDQUFnQztJQUNoQyx5QkFBeUIsR0FBRyxLQUFLLEVBQXlCLENBQUM7SUFDM0Qsd0JBQXdCLEdBQUcsS0FBSyxFQUFnQyxDQUFDO0lBQ2pFLHFCQUFxQixHQUFHLEtBQUssRUFBc0IsQ0FBQztJQUVwRCwyQkFBMkI7SUFDM0Isb0JBQW9C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YUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwRVQ7aUJBQ0Y7d0RBMEIrQixvQkFBb0I7c0JBQWpELFlBQVk7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgQ29udGVudENoaWxkLFxuICBUZW1wbGF0ZVJlZixcbiAgVHlwZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb21wdXRlZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvcGlsb3RTbG90IH0gZnJvbSBcIi4uLy4uL3Nsb3RzL2NvcGlsb3Qtc2xvdFwiO1xuaW1wb3J0IHR5cGUgeyBNZXNzYWdlIH0gZnJvbSBcIkBhZy11aS9jb3JlXCI7XG5pbXBvcnQgeyBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2UgfSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2VcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0VXNlck1lc3NhZ2UgfSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtdXNlci1tZXNzYWdlXCI7XG5pbXBvcnQgeyBDb3BpbG90Q2hhdE1lc3NhZ2VWaWV3Q3Vyc29yIH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LW1lc3NhZ2Utdmlldy1jdXJzb3JcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbi8qKlxuICogQ29waWxvdENoYXRNZXNzYWdlVmlldyBjb21wb25lbnQgLSBBbmd1bGFyIHBvcnQgb2YgdGhlIFJlYWN0IGNvbXBvbmVudC5cbiAqIFJlbmRlcnMgYSBsaXN0IG9mIGNoYXQgbWVzc2FnZXMgd2l0aCBzdXBwb3J0IGZvciBjdXN0b20gc2xvdHMgYW5kIGxheW91dHMuXG4gKiBET00gc3RydWN0dXJlIGFuZCBUYWlsd2luZCBjbGFzc2VzIG1hdGNoIHRoZSBSZWFjdCBpbXBsZW1lbnRhdGlvbiBleGFjdGx5LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY29waWxvdC1jaGF0LW1lc3NhZ2Utdmlld1wiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvcGlsb3RTbG90LFxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZSxcbiAgICBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlLFxuICAgIENvcGlsb3RDaGF0TWVzc2FnZVZpZXdDdXJzb3IsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDwhLS0gQ3VzdG9tIGxheW91dCB0ZW1wbGF0ZSBzdXBwb3J0IChyZW5kZXIgcHJvcCBwYXR0ZXJuKSAtLT5cbiAgICBAaWYgKGN1c3RvbUxheW91dFRlbXBsYXRlKSB7XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUxheW91dFRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImxheW91dENvbnRleHQoKVwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8IS0tIERlZmF1bHQgbGF5b3V0IC0gZXhhY3QgUmVhY3QgRE9NIHN0cnVjdHVyZTogZGl2IHdpdGggXCJmbGV4IGZsZXgtY29sXCIgY2xhc3NlcyAtLT5cbiAgICAgIDxkaXYgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3MoKVwiPlxuICAgICAgICA8IS0tIE1lc3NhZ2UgaXRlcmF0aW9uIC0gc2ltcGxpZmllZCB3aXRob3V0IHRvb2wgY2FsbHMgLS0+XG4gICAgICAgIEBmb3IgKFxuICAgICAgICAgIG1lc3NhZ2Ugb2YgbWVzc2FnZXNWYWx1ZSgpO1xuICAgICAgICAgIHRyYWNrIHRyYWNrQnlNZXNzYWdlSWQoJGluZGV4LCBtZXNzYWdlKVxuICAgICAgICApIHtcbiAgICAgICAgICBAaWYgKG1lc3NhZ2UgJiYgbWVzc2FnZS5yb2xlID09PSBcImFzc2lzdGFudFwiKSB7XG4gICAgICAgICAgICA8IS0tIEFzc2lzdGFudCBtZXNzYWdlIHdpdGggc2xvdCBzdXBwb3J0IC0tPlxuICAgICAgICAgICAgQGlmIChhc3Npc3RhbnRNZXNzYWdlQ29tcG9uZW50KCkgfHwgYXNzaXN0YW50TWVzc2FnZVRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgIFtzbG90XT1cIlxuICAgICAgICAgICAgICAgICAgYXNzaXN0YW50TWVzc2FnZVRlbXBsYXRlKCkgfHwgYXNzaXN0YW50TWVzc2FnZUNvbXBvbmVudCgpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbY29udGV4dF09XCJtZXJnZUFzc2lzdGFudFByb3BzKG1lc3NhZ2UpXCJcbiAgICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJkZWZhdWx0QXNzaXN0YW50Q29tcG9uZW50XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8Y29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlXG4gICAgICAgICAgICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgW21lc3NhZ2VzXT1cIm1lc3NhZ2VzVmFsdWUoKVwiXG4gICAgICAgICAgICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdWYWx1ZSgpXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRDbGFzc109XCJhc3Npc3RhbnRNZXNzYWdlQ2xhc3MoKVwiXG4gICAgICAgICAgICAgICAgKHRodW1ic1VwKT1cImhhbmRsZUFzc2lzdGFudFRodW1ic1VwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICh0aHVtYnNEb3duKT1cImhhbmRsZUFzc2lzdGFudFRodW1ic0Rvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHJlYWRBbG91ZCk9XCJoYW5kbGVBc3Npc3RhbnRSZWFkQWxvdWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHJlZ2VuZXJhdGUpPVwiaGFuZGxlQXNzaXN0YW50UmVnZW5lcmF0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2NvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IEBlbHNlIGlmIChtZXNzYWdlICYmIG1lc3NhZ2Uucm9sZSA9PT0gXCJ1c2VyXCIpIHtcbiAgICAgICAgICAgIDwhLS0gVXNlciBtZXNzYWdlIHdpdGggc2xvdCBzdXBwb3J0IC0tPlxuICAgICAgICAgICAgQGlmICh1c2VyTWVzc2FnZUNvbXBvbmVudCgpIHx8IHVzZXJNZXNzYWdlVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICAgICAgW3Nsb3RdPVwidXNlck1lc3NhZ2VUZW1wbGF0ZSgpIHx8IHVzZXJNZXNzYWdlQ29tcG9uZW50KClcIlxuICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cIm1lcmdlVXNlclByb3BzKG1lc3NhZ2UpXCJcbiAgICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJkZWZhdWx0VXNlckNvbXBvbmVudFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGNvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2VcbiAgICAgICAgICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRDbGFzc109XCJ1c2VyTWVzc2FnZUNsYXNzKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIEN1cnNvciAtIGV4YWN0bHkgbGlrZSBSZWFjdCdzIGNvbmRpdGlvbmFsIHJlbmRlcmluZyAtLT5cbiAgICAgICAgQGlmIChzaG93Q3Vyc29yVmFsdWUoKSkge1xuICAgICAgICAgIEBpZiAoY3Vyc29yQ29tcG9uZW50KCkgfHwgY3Vyc29yVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICBbc2xvdF09XCJjdXJzb3JUZW1wbGF0ZSgpIHx8IGN1cnNvckNvbXBvbmVudCgpXCJcbiAgICAgICAgICAgICAgW2NvbnRleHRdPVwieyBpbnB1dENsYXNzOiBjdXJzb3JDbGFzcygpIH1cIlxuICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJkZWZhdWx0Q3Vyc29yQ29tcG9uZW50XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGNvcGlsb3QtY2hhdC1tZXNzYWdlLXZpZXctY3Vyc29yIFtpbnB1dENsYXNzXT1cImN1cnNvckNsYXNzKClcIj5cbiAgICAgICAgICAgIDwvY29waWxvdC1jaGF0LW1lc3NhZ2Utdmlldy1jdXJzb3I+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0TWVzc2FnZVZpZXcge1xuICAvLyBDb3JlIGlucHV0cyBtYXRjaGluZyBSZWFjdCBwcm9wc1xuICBtZXNzYWdlcyA9IGlucHV0PE1lc3NhZ2VbXT4oW10pO1xuICBzaG93Q3Vyc29yID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIGlucHV0Q2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgLy8gSGFuZGxlciBhdmFpbGFiaWxpdHkgaGFuZGxlZCB2aWEgREkgc2VydmljZVxuXG4gIC8vIEFzc2lzdGFudCBtZXNzYWdlIHNsb3QgaW5wdXRzXG4gIGFzc2lzdGFudE1lc3NhZ2VDb21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIGFzc2lzdGFudE1lc3NhZ2VUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIGFzc2lzdGFudE1lc3NhZ2VDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICAvLyBVc2VyIG1lc3NhZ2Ugc2xvdCBpbnB1dHNcbiAgdXNlck1lc3NhZ2VDb21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIHVzZXJNZXNzYWdlVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkPigpO1xuICB1c2VyTWVzc2FnZUNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gIC8vIEN1cnNvciBzbG90IGlucHV0c1xuICBjdXJzb3JDb21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIGN1cnNvclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZD4oKTtcbiAgY3Vyc29yQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgLy8gQ3VzdG9tIGxheW91dCB0ZW1wbGF0ZSAocmVuZGVyIHByb3AgcGF0dGVybilcbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbUxheW91dFwiKSBjdXN0b21MYXlvdXRUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLy8gT3V0cHV0IGV2ZW50cyAoYnViYmxlZCBmcm9tIGNoaWxkIGNvbXBvbmVudHMpXG4gIGFzc2lzdGFudE1lc3NhZ2VUaHVtYnNVcCA9IG91dHB1dDx7IG1lc3NhZ2U6IE1lc3NhZ2UgfT4oKTtcbiAgYXNzaXN0YW50TWVzc2FnZVRodW1ic0Rvd24gPSBvdXRwdXQ8eyBtZXNzYWdlOiBNZXNzYWdlIH0+KCk7XG4gIGFzc2lzdGFudE1lc3NhZ2VSZWFkQWxvdWQgPSBvdXRwdXQ8eyBtZXNzYWdlOiBNZXNzYWdlIH0+KCk7XG4gIGFzc2lzdGFudE1lc3NhZ2VSZWdlbmVyYXRlID0gb3V0cHV0PHsgbWVzc2FnZTogTWVzc2FnZSB9PigpO1xuICB1c2VyTWVzc2FnZUNvcHkgPSBvdXRwdXQ8eyBtZXNzYWdlOiBNZXNzYWdlIH0+KCk7XG4gIHVzZXJNZXNzYWdlRWRpdCA9IG91dHB1dDx7IG1lc3NhZ2U6IE1lc3NhZ2UgfT4oKTtcblxuICAvLyBEZWZhdWx0IGNvbXBvbmVudHMgZm9yIHNsb3RzXG4gIHByb3RlY3RlZCByZWFkb25seSBkZWZhdWx0QXNzaXN0YW50Q29tcG9uZW50ID0gQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFVzZXJDb21wb25lbnQgPSBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdEN1cnNvckNvbXBvbmVudCA9IENvcGlsb3RDaGF0TWVzc2FnZVZpZXdDdXJzb3I7XG5cbiAgLy8gRGVyaXZlZCB2YWx1ZXMgZnJvbSBpbnB1dHNcbiAgcHJvdGVjdGVkIG1lc3NhZ2VzVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1lc3NhZ2VzKCkpO1xuICBwcm90ZWN0ZWQgc2hvd0N1cnNvclZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zaG93Q3Vyc29yKCkpO1xuICBwcm90ZWN0ZWQgaXNMb2FkaW5nVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlzTG9hZGluZygpKTtcblxuICAvLyBDb21wdXRlZCBjbGFzcyBtYXRjaGluZyBSZWFjdDogdHdNZXJnZShcImZsZXggZmxleC1jb2xcIiwgY2xhc3NOYW1lKVxuICBjb21wdXRlZENsYXNzID0gY29tcHV0ZWQoKCkgPT4gY24oXCJmbGV4IGZsZXgtY29sXCIsIHRoaXMuaW5wdXRDbGFzcygpKSk7XG5cbiAgLy8gTGF5b3V0IGNvbnRleHQgZm9yIGN1c3RvbSB0ZW1wbGF0ZXMgKHJlbmRlciBwcm9wIHBhdHRlcm4pXG4gIGxheW91dENvbnRleHQgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIGlzTG9hZGluZzogdGhpcy5pc0xvYWRpbmdWYWx1ZSgpLFxuICAgIG1lc3NhZ2VzOiB0aGlzLm1lc3NhZ2VzVmFsdWUoKSxcbiAgICBzaG93Q3Vyc29yOiB0aGlzLnNob3dDdXJzb3JWYWx1ZSgpLFxuICAgIG1lc3NhZ2VFbGVtZW50czogdGhpcy5tZXNzYWdlc1ZhbHVlKCkuZmlsdGVyKFxuICAgICAgKG0pID0+IG0gJiYgKG0ucm9sZSA9PT0gXCJhc3Npc3RhbnRcIiB8fCBtLnJvbGUgPT09IFwidXNlclwiKSxcbiAgICApLFxuICB9KSk7XG5cbiAgLy8gU2xvdCByZXNvbHV0aW9uIGNvbXB1dGVkIHNpZ25hbHNcbiAgYXNzaXN0YW50TWVzc2FnZVNsb3QgPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLmFzc2lzdGFudE1lc3NhZ2VDb21wb25lbnQoKSB8fCB0aGlzLmFzc2lzdGFudE1lc3NhZ2VDbGFzcygpLFxuICApO1xuXG4gIHVzZXJNZXNzYWdlU2xvdCA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMudXNlck1lc3NhZ2VDb21wb25lbnQoKSB8fCB0aGlzLnVzZXJNZXNzYWdlQ2xhc3MoKSxcbiAgKTtcblxuICBjdXJzb3JTbG90ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jdXJzb3JDb21wb25lbnQoKSB8fCB0aGlzLmN1cnNvckNsYXNzKCkpO1xuXG4gIC8vIFByb3BzIG1lcmdpbmcgaGVscGVyc1xuICBtZXJnZUFzc2lzdGFudFByb3BzKG1lc3NhZ2U6IE1lc3NhZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZSxcbiAgICAgIG1lc3NhZ2VzOiB0aGlzLm1lc3NhZ2VzVmFsdWUoKSxcbiAgICAgIGlzTG9hZGluZzogdGhpcy5pc0xvYWRpbmdWYWx1ZSgpLFxuICAgICAgaW5wdXRDbGFzczogdGhpcy5hc3Npc3RhbnRNZXNzYWdlQ2xhc3MoKSxcbiAgICB9O1xuICB9XG5cbiAgbWVyZ2VVc2VyUHJvcHMobWVzc2FnZTogTWVzc2FnZSkge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlLFxuICAgICAgaW5wdXRDbGFzczogdGhpcy51c2VyTWVzc2FnZUNsYXNzKCksXG4gICAgfTtcbiAgfVxuXG4gIC8vIFRyYWNrQnkgZnVuY3Rpb24gZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvblxuICB0cmFja0J5TWVzc2FnZUlkKGluZGV4OiBudW1iZXIsIG1lc3NhZ2U6IE1lc3NhZ2UpOiBzdHJpbmcge1xuICAgIHJldHVybiBtZXNzYWdlPy5pZCB8fCBgaW5kZXgtJHtpbmRleH1gO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8vIEV2ZW50IGhhbmRsZXJzIC0ganVzdCBwYXNzIHRoZW0gdGhyb3VnaFxuICBoYW5kbGVBc3Npc3RhbnRUaHVtYnNVcChldmVudDogeyBtZXNzYWdlOiBNZXNzYWdlIH0pOiB2b2lkIHtcbiAgICB0aGlzLmFzc2lzdGFudE1lc3NhZ2VUaHVtYnNVcC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZUFzc2lzdGFudFRodW1ic0Rvd24oZXZlbnQ6IHsgbWVzc2FnZTogTWVzc2FnZSB9KTogdm9pZCB7XG4gICAgdGhpcy5hc3Npc3RhbnRNZXNzYWdlVGh1bWJzRG93bi5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZUFzc2lzdGFudFJlYWRBbG91ZChldmVudDogeyBtZXNzYWdlOiBNZXNzYWdlIH0pOiB2b2lkIHtcbiAgICB0aGlzLmFzc2lzdGFudE1lc3NhZ2VSZWFkQWxvdWQuZW1pdChldmVudCk7XG4gIH1cblxuICBoYW5kbGVBc3Npc3RhbnRSZWdlbmVyYXRlKGV2ZW50OiB7IG1lc3NhZ2U6IE1lc3NhZ2UgfSk6IHZvaWQge1xuICAgIHRoaXMuYXNzaXN0YW50TWVzc2FnZVJlZ2VuZXJhdGUuZW1pdChldmVudCk7XG4gIH1cbn1cbiJdfQ==
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LW1lc3NhZ2Utdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jaGF0L2NvcGlsb3QtY2hhdC1tZXNzYWdlLXZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFHWix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQUVqQzs7OztHQUlHO0FBMEZILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsbUNBQW1DO0lBQ25DLFFBQVEsR0FBRyxLQUFLLENBQVksRUFBRSxDQUFDLENBQUM7SUFDaEMsVUFBVSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNuQyxTQUFTLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLFVBQVUsR0FBRyxLQUFLLEVBQXNCLENBQUM7SUFFekMsOENBQThDO0lBRTlDLGdDQUFnQztJQUNoQyx5QkFBeUIsR0FBRyxLQUFLLEVBQXlCLENBQUM7SUFDM0Qsd0JBQXdCLEdBQUcsS0FBSyxFQUFnQyxDQUFDO0lBQ2pFLHFCQUFxQixHQUFHLEtBQUssRUFBc0IsQ0FBQztJQUVwRCwyQkFBMkI7SUFDM0Isb0JBQW9C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QzdCO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBFVDtpQkFDRjt3REEwQitCLG9CQUFvQjtzQkFBakQsWUFBWTt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBDb250ZW50Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ29waWxvdFNsb3QgfSBmcm9tIFwiLi4vLi4vc2xvdHMvY29waWxvdC1zbG90XCI7XG5pbXBvcnQgdHlwZSB7IE1lc3NhZ2UgfSBmcm9tIFwiQGFnLXVpL2NvcmVcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZSB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZVwiO1xuaW1wb3J0IHsgQ29waWxvdENoYXRVc2VyTWVzc2FnZSB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2VcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0TWVzc2FnZVZpZXdDdXJzb3IgfSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtbWVzc2FnZS12aWV3LWN1cnNvclwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuLyoqXG4gKiBDb3BpbG90Q2hhdE1lc3NhZ2VWaWV3IGNvbXBvbmVudCAtIEFuZ3VsYXIgcG9ydCBvZiB0aGUgUmVhY3QgY29tcG9uZW50LlxuICogUmVuZGVycyBhIGxpc3Qgb2YgY2hhdCBtZXNzYWdlcyB3aXRoIHN1cHBvcnQgZm9yIGN1c3RvbSBzbG90cyBhbmQgbGF5b3V0cy5cbiAqIERPTSBzdHJ1Y3R1cmUgYW5kIFRhaWx3aW5kIGNsYXNzZXMgbWF0Y2ggdGhlIFJlYWN0IGltcGxlbWVudGF0aW9uIGV4YWN0bHkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb3BpbG90LWNoYXQtbWVzc2FnZS12aWV3XCIsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHsgXCJkYXRhLWNvcGlsb3RraXRcIjogXCJcIiB9LFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvcGlsb3RTbG90LFxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZSxcbiAgICBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlLFxuICAgIENvcGlsb3RDaGF0TWVzc2FnZVZpZXdDdXJzb3IsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDwhLS0gQ3VzdG9tIGxheW91dCB0ZW1wbGF0ZSBzdXBwb3J0IChyZW5kZXIgcHJvcCBwYXR0ZXJuKSAtLT5cbiAgICBAaWYgKGN1c3RvbUxheW91dFRlbXBsYXRlKSB7XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUxheW91dFRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImxheW91dENvbnRleHQoKVwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8IS0tIERlZmF1bHQgbGF5b3V0IC0gZXhhY3QgUmVhY3QgRE9NIHN0cnVjdHVyZTogZGl2IHdpdGggXCJmbGV4IGZsZXgtY29sXCIgY2xhc3NlcyAtLT5cbiAgICAgIDxkaXYgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3MoKVwiPlxuICAgICAgICA8IS0tIE1lc3NhZ2UgaXRlcmF0aW9uIC0gc2ltcGxpZmllZCB3aXRob3V0IHRvb2wgY2FsbHMgLS0+XG4gICAgICAgIEBmb3IgKFxuICAgICAgICAgIG1lc3NhZ2Ugb2YgbWVzc2FnZXNWYWx1ZSgpO1xuICAgICAgICAgIHRyYWNrIHRyYWNrQnlNZXNzYWdlSWQoJGluZGV4LCBtZXNzYWdlKVxuICAgICAgICApIHtcbiAgICAgICAgICBAaWYgKG1lc3NhZ2UgJiYgbWVzc2FnZS5yb2xlID09PSBcImFzc2lzdGFudFwiKSB7XG4gICAgICAgICAgICA8IS0tIEFzc2lzdGFudCBtZXNzYWdlIHdpdGggc2xvdCBzdXBwb3J0IC0tPlxuICAgICAgICAgICAgQGlmIChhc3Npc3RhbnRNZXNzYWdlQ29tcG9uZW50KCkgfHwgYXNzaXN0YW50TWVzc2FnZVRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgIFtzbG90XT1cIlxuICAgICAgICAgICAgICAgICAgYXNzaXN0YW50TWVzc2FnZVRlbXBsYXRlKCkgfHwgYXNzaXN0YW50TWVzc2FnZUNvbXBvbmVudCgpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbY29udGV4dF09XCJtZXJnZUFzc2lzdGFudFByb3BzKG1lc3NhZ2UpXCJcbiAgICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJkZWZhdWx0QXNzaXN0YW50Q29tcG9uZW50XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8Y29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlXG4gICAgICAgICAgICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgW21lc3NhZ2VzXT1cIm1lc3NhZ2VzVmFsdWUoKVwiXG4gICAgICAgICAgICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdWYWx1ZSgpXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRDbGFzc109XCJhc3Npc3RhbnRNZXNzYWdlQ2xhc3MoKVwiXG4gICAgICAgICAgICAgICAgKHRodW1ic1VwKT1cImhhbmRsZUFzc2lzdGFudFRodW1ic1VwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICh0aHVtYnNEb3duKT1cImhhbmRsZUFzc2lzdGFudFRodW1ic0Rvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHJlYWRBbG91ZCk9XCJoYW5kbGVBc3Npc3RhbnRSZWFkQWxvdWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHJlZ2VuZXJhdGUpPVwiaGFuZGxlQXNzaXN0YW50UmVnZW5lcmF0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2NvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IEBlbHNlIGlmIChtZXNzYWdlICYmIG1lc3NhZ2Uucm9sZSA9PT0gXCJ1c2VyXCIpIHtcbiAgICAgICAgICAgIDwhLS0gVXNlciBtZXNzYWdlIHdpdGggc2xvdCBzdXBwb3J0IC0tPlxuICAgICAgICAgICAgQGlmICh1c2VyTWVzc2FnZUNvbXBvbmVudCgpIHx8IHVzZXJNZXNzYWdlVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICAgICAgW3Nsb3RdPVwidXNlck1lc3NhZ2VUZW1wbGF0ZSgpIHx8IHVzZXJNZXNzYWdlQ29tcG9uZW50KClcIlxuICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cIm1lcmdlVXNlclByb3BzKG1lc3NhZ2UpXCJcbiAgICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJkZWZhdWx0VXNlckNvbXBvbmVudFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPGNvcGlsb3QtY2hhdC11c2VyLW1lc3NhZ2VcbiAgICAgICAgICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRDbGFzc109XCJ1c2VyTWVzc2FnZUNsYXNzKClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvY29waWxvdC1jaGF0LXVzZXItbWVzc2FnZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIEN1cnNvciAtIGV4YWN0bHkgbGlrZSBSZWFjdCdzIGNvbmRpdGlvbmFsIHJlbmRlcmluZyAtLT5cbiAgICAgICAgQGlmIChzaG93Q3Vyc29yVmFsdWUoKSkge1xuICAgICAgICAgIEBpZiAoY3Vyc29yQ29tcG9uZW50KCkgfHwgY3Vyc29yVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICBbc2xvdF09XCJjdXJzb3JUZW1wbGF0ZSgpIHx8IGN1cnNvckNvbXBvbmVudCgpXCJcbiAgICAgICAgICAgICAgW2NvbnRleHRdPVwieyBpbnB1dENsYXNzOiBjdXJzb3JDbGFzcygpIH1cIlxuICAgICAgICAgICAgICBbZGVmYXVsdENvbXBvbmVudF09XCJkZWZhdWx0Q3Vyc29yQ29tcG9uZW50XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGNvcGlsb3QtY2hhdC1tZXNzYWdlLXZpZXctY3Vyc29yIFtpbnB1dENsYXNzXT1cImN1cnNvckNsYXNzKClcIj5cbiAgICAgICAgICAgIDwvY29waWxvdC1jaGF0LW1lc3NhZ2Utdmlldy1jdXJzb3I+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0TWVzc2FnZVZpZXcge1xuICAvLyBDb3JlIGlucHV0cyBtYXRjaGluZyBSZWFjdCBwcm9wc1xuICBtZXNzYWdlcyA9IGlucHV0PE1lc3NhZ2VbXT4oW10pO1xuICBzaG93Q3Vyc29yID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIGlucHV0Q2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgLy8gSGFuZGxlciBhdmFpbGFiaWxpdHkgaGFuZGxlZCB2aWEgREkgc2VydmljZVxuXG4gIC8vIEFzc2lzdGFudCBtZXNzYWdlIHNsb3QgaW5wdXRzXG4gIGFzc2lzdGFudE1lc3NhZ2VDb21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIGFzc2lzdGFudE1lc3NhZ2VUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIGFzc2lzdGFudE1lc3NhZ2VDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICAvLyBVc2VyIG1lc3NhZ2Ugc2xvdCBpbnB1dHNcbiAgdXNlck1lc3NhZ2VDb21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIHVzZXJNZXNzYWdlVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkPigpO1xuICB1c2VyTWVzc2FnZUNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gIC8vIEN1cnNvciBzbG90IGlucHV0c1xuICBjdXJzb3JDb21wb25lbnQgPSBpbnB1dDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIGN1cnNvclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZD4oKTtcbiAgY3Vyc29yQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgLy8gQ3VzdG9tIGxheW91dCB0ZW1wbGF0ZSAocmVuZGVyIHByb3AgcGF0dGVybilcbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbUxheW91dFwiKSBjdXN0b21MYXlvdXRUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLy8gT3V0cHV0IGV2ZW50cyAoYnViYmxlZCBmcm9tIGNoaWxkIGNvbXBvbmVudHMpXG4gIGFzc2lzdGFudE1lc3NhZ2VUaHVtYnNVcCA9IG91dHB1dDx7IG1lc3NhZ2U6IE1lc3NhZ2UgfT4oKTtcbiAgYXNzaXN0YW50TWVzc2FnZVRodW1ic0Rvd24gPSBvdXRwdXQ8eyBtZXNzYWdlOiBNZXNzYWdlIH0+KCk7XG4gIGFzc2lzdGFudE1lc3NhZ2VSZWFkQWxvdWQgPSBvdXRwdXQ8eyBtZXNzYWdlOiBNZXNzYWdlIH0+KCk7XG4gIGFzc2lzdGFudE1lc3NhZ2VSZWdlbmVyYXRlID0gb3V0cHV0PHsgbWVzc2FnZTogTWVzc2FnZSB9PigpO1xuICB1c2VyTWVzc2FnZUNvcHkgPSBvdXRwdXQ8eyBtZXNzYWdlOiBNZXNzYWdlIH0+KCk7XG4gIHVzZXJNZXNzYWdlRWRpdCA9IG91dHB1dDx7IG1lc3NhZ2U6IE1lc3NhZ2UgfT4oKTtcblxuICAvLyBEZWZhdWx0IGNvbXBvbmVudHMgZm9yIHNsb3RzXG4gIHByb3RlY3RlZCByZWFkb25seSBkZWZhdWx0QXNzaXN0YW50Q29tcG9uZW50ID0gQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFVzZXJDb21wb25lbnQgPSBDb3BpbG90Q2hhdFVzZXJNZXNzYWdlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdEN1cnNvckNvbXBvbmVudCA9IENvcGlsb3RDaGF0TWVzc2FnZVZpZXdDdXJzb3I7XG5cbiAgLy8gRGVyaXZlZCB2YWx1ZXMgZnJvbSBpbnB1dHNcbiAgcHJvdGVjdGVkIG1lc3NhZ2VzVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1lc3NhZ2VzKCkpO1xuICBwcm90ZWN0ZWQgc2hvd0N1cnNvclZhbHVlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zaG93Q3Vyc29yKCkpO1xuICBwcm90ZWN0ZWQgaXNMb2FkaW5nVmFsdWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlzTG9hZGluZygpKTtcblxuICAvLyBDb21wdXRlZCBjbGFzcyBtYXRjaGluZyBSZWFjdDogdHdNZXJnZShcImZsZXggZmxleC1jb2xcIiwgY2xhc3NOYW1lKVxuICBjb21wdXRlZENsYXNzID0gY29tcHV0ZWQoKCkgPT4gY24oXCJmbGV4IGZsZXgtY29sXCIsIHRoaXMuaW5wdXRDbGFzcygpKSk7XG5cbiAgLy8gTGF5b3V0IGNvbnRleHQgZm9yIGN1c3RvbSB0ZW1wbGF0ZXMgKHJlbmRlciBwcm9wIHBhdHRlcm4pXG4gIGxheW91dENvbnRleHQgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIGlzTG9hZGluZzogdGhpcy5pc0xvYWRpbmdWYWx1ZSgpLFxuICAgIG1lc3NhZ2VzOiB0aGlzLm1lc3NhZ2VzVmFsdWUoKSxcbiAgICBzaG93Q3Vyc29yOiB0aGlzLnNob3dDdXJzb3JWYWx1ZSgpLFxuICAgIG1lc3NhZ2VFbGVtZW50czogdGhpcy5tZXNzYWdlc1ZhbHVlKCkuZmlsdGVyKFxuICAgICAgKG0pID0+IG0gJiYgKG0ucm9sZSA9PT0gXCJhc3Npc3RhbnRcIiB8fCBtLnJvbGUgPT09IFwidXNlclwiKSxcbiAgICApLFxuICB9KSk7XG5cbiAgLy8gU2xvdCByZXNvbHV0aW9uIGNvbXB1dGVkIHNpZ25hbHNcbiAgYXNzaXN0YW50TWVzc2FnZVNsb3QgPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLmFzc2lzdGFudE1lc3NhZ2VDb21wb25lbnQoKSB8fCB0aGlzLmFzc2lzdGFudE1lc3NhZ2VDbGFzcygpLFxuICApO1xuXG4gIHVzZXJNZXNzYWdlU2xvdCA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMudXNlck1lc3NhZ2VDb21wb25lbnQoKSB8fCB0aGlzLnVzZXJNZXNzYWdlQ2xhc3MoKSxcbiAgKTtcblxuICBjdXJzb3JTbG90ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jdXJzb3JDb21wb25lbnQoKSB8fCB0aGlzLmN1cnNvckNsYXNzKCkpO1xuXG4gIC8vIFByb3BzIG1lcmdpbmcgaGVscGVyc1xuICBtZXJnZUFzc2lzdGFudFByb3BzKG1lc3NhZ2U6IE1lc3NhZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZSxcbiAgICAgIG1lc3NhZ2VzOiB0aGlzLm1lc3NhZ2VzVmFsdWUoKSxcbiAgICAgIGlzTG9hZGluZzogdGhpcy5pc0xvYWRpbmdWYWx1ZSgpLFxuICAgICAgaW5wdXRDbGFzczogdGhpcy5hc3Npc3RhbnRNZXNzYWdlQ2xhc3MoKSxcbiAgICB9O1xuICB9XG5cbiAgbWVyZ2VVc2VyUHJvcHMobWVzc2FnZTogTWVzc2FnZSkge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlLFxuICAgICAgaW5wdXRDbGFzczogdGhpcy51c2VyTWVzc2FnZUNsYXNzKCksXG4gICAgfTtcbiAgfVxuXG4gIC8vIFRyYWNrQnkgZnVuY3Rpb24gZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvblxuICB0cmFja0J5TWVzc2FnZUlkKGluZGV4OiBudW1iZXIsIG1lc3NhZ2U6IE1lc3NhZ2UpOiBzdHJpbmcge1xuICAgIHJldHVybiBtZXNzYWdlPy5pZCB8fCBgaW5kZXgtJHtpbmRleH1gO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8vIEV2ZW50IGhhbmRsZXJzIC0ganVzdCBwYXNzIHRoZW0gdGhyb3VnaFxuICBoYW5kbGVBc3Npc3RhbnRUaHVtYnNVcChldmVudDogeyBtZXNzYWdlOiBNZXNzYWdlIH0pOiB2b2lkIHtcbiAgICB0aGlzLmFzc2lzdGFudE1lc3NhZ2VUaHVtYnNVcC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZUFzc2lzdGFudFRodW1ic0Rvd24oZXZlbnQ6IHsgbWVzc2FnZTogTWVzc2FnZSB9KTogdm9pZCB7XG4gICAgdGhpcy5hc3Npc3RhbnRNZXNzYWdlVGh1bWJzRG93bi5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZUFzc2lzdGFudFJlYWRBbG91ZChldmVudDogeyBtZXNzYWdlOiBNZXNzYWdlIH0pOiB2b2lkIHtcbiAgICB0aGlzLmFzc2lzdGFudE1lc3NhZ2VSZWFkQWxvdWQuZW1pdChldmVudCk7XG4gIH1cblxuICBoYW5kbGVBc3Npc3RhbnRSZWdlbmVyYXRlKGV2ZW50OiB7IG1lc3NhZ2U6IE1lc3NhZ2UgfSk6IHZvaWQge1xuICAgIHRoaXMuYXNzaXN0YW50TWVzc2FnZVJlZ2VuZXJhdGUuZW1pdChldmVudCk7XG4gIH1cbn1cbiJdfQ==