emanate-ai-chat-lib 0.1.1

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.
@@ -0,0 +1,26 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class EmanateAiChatLibComponent {
4
+ constructor() { }
5
+ ngOnInit() {
6
+ }
7
+ }
8
+ EmanateAiChatLibComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EmanateAiChatLibComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
+ EmanateAiChatLibComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: EmanateAiChatLibComponent, selector: "lib-emanate-ai-chat-lib", ngImport: i0, template: `
10
+ <p>
11
+ Emanate AI Chat Library v1.0.0 - Use lib-ai-chat component directly
12
+ </p>
13
+ `, isInline: true });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EmanateAiChatLibComponent, decorators: [{
15
+ type: Component,
16
+ args: [{
17
+ selector: 'lib-emanate-ai-chat-lib',
18
+ template: `
19
+ <p>
20
+ Emanate AI Chat Library v1.0.0 - Use lib-ai-chat component directly
21
+ </p>
22
+ `,
23
+ styles: []
24
+ }]
25
+ }], ctorParameters: function () { return []; } });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1hbmF0ZS1haS1jaGF0LWxpYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9lbWFuYXRlLWFpLWNoYXQtbGliL3NyYy9saWIvZW1hbmF0ZS1haS1jaGF0LWxpYi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFXbEQsTUFBTSxPQUFPLHlCQUF5QjtJQUVwQyxnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzs7dUhBTFUseUJBQXlCOzJHQUF6Qix5QkFBeUIsK0RBUDFCOzs7O0dBSVQ7NEZBR1UseUJBQXlCO2tCQVRyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRTs7OztHQUlUO29CQUNELE1BQU0sRUFBRSxFQUFFO2lCQUNYIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWVtYW5hdGUtYWktY2hhdC1saWInLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8cD5cclxuICAgICAgRW1hbmF0ZSBBSSBDaGF0IExpYnJhcnkgdjEuMC4wIC0gVXNlIGxpYi1haS1jaGF0IGNvbXBvbmVudCBkaXJlY3RseVxyXG4gICAgPC9wPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW1hbmF0ZUFpQ2hhdExpYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -0,0 +1,45 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { HttpClientModule } from '@angular/common/http';
5
+ import { EmanateAiChatLibComponent } from './emanate-ai-chat-lib.component';
6
+ import { AiChatComponent } from './components/ai-chat.component';
7
+ import { AiAgentService } from './services/ai-agent.service';
8
+ import * as i0 from "@angular/core";
9
+ export class EmanateAiChatLibModule {
10
+ }
11
+ EmanateAiChatLibModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EmanateAiChatLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
+ EmanateAiChatLibModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EmanateAiChatLibModule, declarations: [EmanateAiChatLibComponent,
13
+ AiChatComponent], imports: [CommonModule,
14
+ FormsModule,
15
+ HttpClientModule], exports: [EmanateAiChatLibComponent,
16
+ AiChatComponent] });
17
+ EmanateAiChatLibModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EmanateAiChatLibModule, providers: [
18
+ AiAgentService
19
+ ], imports: [[
20
+ CommonModule,
21
+ FormsModule,
22
+ HttpClientModule
23
+ ]] });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EmanateAiChatLibModule, decorators: [{
25
+ type: NgModule,
26
+ args: [{
27
+ declarations: [
28
+ EmanateAiChatLibComponent,
29
+ AiChatComponent
30
+ ],
31
+ imports: [
32
+ CommonModule,
33
+ FormsModule,
34
+ HttpClientModule
35
+ ],
36
+ providers: [
37
+ AiAgentService
38
+ ],
39
+ exports: [
40
+ EmanateAiChatLibComponent,
41
+ AiChatComponent
42
+ ]
43
+ }]
44
+ }] });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1hbmF0ZS1haS1jaGF0LWxpYi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9lbWFuYXRlLWFpLWNoYXQtbGliL3NyYy9saWIvZW1hbmF0ZS1haS1jaGF0LWxpYi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBb0I3RCxNQUFNLE9BQU8sc0JBQXNCOztvSEFBdEIsc0JBQXNCO3FIQUF0QixzQkFBc0IsaUJBaEIvQix5QkFBeUI7UUFDekIsZUFBZSxhQUdmLFlBQVk7UUFDWixXQUFXO1FBQ1gsZ0JBQWdCLGFBTWhCLHlCQUF5QjtRQUN6QixlQUFlO3FIQUdOLHNCQUFzQixhQVJ0QjtRQUNULGNBQWM7S0FDZixZQVBRO1lBQ1AsWUFBWTtZQUNaLFdBQVc7WUFDWCxnQkFBZ0I7U0FDakI7NEZBU1Usc0JBQXNCO2tCQWxCbEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1oseUJBQXlCO3dCQUN6QixlQUFlO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGdCQUFnQjtxQkFDakI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULGNBQWM7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHlCQUF5Qjt3QkFDekIsZUFBZTtxQkFDaEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRW1hbmF0ZUFpQ2hhdExpYkNvbXBvbmVudCB9IGZyb20gJy4vZW1hbmF0ZS1haS1jaGF0LWxpYi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBaUNoYXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWktY2hhdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBaUFnZW50U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYWktYWdlbnQuc2VydmljZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgRW1hbmF0ZUFpQ2hhdExpYkNvbXBvbmVudCxcclxuICAgIEFpQ2hhdENvbXBvbmVudFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBIdHRwQ2xpZW50TW9kdWxlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIEFpQWdlbnRTZXJ2aWNlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBFbWFuYXRlQWlDaGF0TGliQ29tcG9uZW50LFxyXG4gICAgQWlDaGF0Q29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW1hbmF0ZUFpQ2hhdExpYk1vZHVsZSB7IH1cclxuIl19
@@ -0,0 +1,14 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class EmanateAiChatLibService {
4
+ constructor() { }
5
+ }
6
+ EmanateAiChatLibService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EmanateAiChatLibService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7
+ EmanateAiChatLibService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EmanateAiChatLibService, providedIn: 'root' });
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EmanateAiChatLibService, decorators: [{
9
+ type: Injectable,
10
+ args: [{
11
+ providedIn: 'root'
12
+ }]
13
+ }], ctorParameters: function () { return []; } });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1hbmF0ZS1haS1jaGF0LWxpYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZW1hbmF0ZS1haS1jaGF0LWxpYi9zcmMvbGliL2VtYW5hdGUtYWktY2hhdC1saWIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sdUJBQXVCO0lBRWxDLGdCQUFnQixDQUFDOztxSEFGTix1QkFBdUI7eUhBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzRGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbWFuYXRlQWlDaGF0TGliU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbn1cclxuIl19
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Icon configuration interfaces for the chat component
3
+ */
4
+ /**
5
+ * Feather Icons - Default icon set
6
+ * Clean, minimal, professional
7
+ */
8
+ export const FEATHER_ICONS = {
9
+ compactView: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="5" y="2" width="14" height="20" rx="2" ry="2"></rect></svg>',
10
+ defaultView: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect><line x1="8" y1="21" x2="16" y2="21"></line><line x1="12" y1="17" x2="12" y2="21"></line></svg>',
11
+ expandedView: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="20" rx="2.18" ry="2.18"></rect><line x1="7" y1="2" x2="7" y2="22"></line><line x1="17" y1="2" x2="17" y2="22"></line><line x1="2" y1="12" x2="22" y2="12"></line><line x1="2" y1="7" x2="7" y2="7"></line><line x1="2" y1="17" x2="7" y2="17"></line><line x1="17" y1="17" x2="22" y2="17"></line><line x1="17" y1="7" x2="22" y2="7"></line></svg>',
12
+ send: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon></svg>',
13
+ sendLoading: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="2" x2="12" y2="6"></line><line x1="12" y1="18" x2="12" y2="22"></line><line x1="4.93" y1="4.93" x2="7.76" y2="7.76"></line><line x1="16.24" y1="16.24" x2="19.07" y2="19.07"></line><line x1="2" y1="12" x2="6" y2="12"></line><line x1="18" y1="12" x2="22" y2="12"></line><line x1="4.93" y1="19.07" x2="7.76" y2="16.24"></line><line x1="16.24" y1="7.76" x2="19.07" y2="4.93"></line></svg>',
14
+ userAvatar: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>',
15
+ aiAvatar: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"></rect><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path></svg>',
16
+ loadingAvatar: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="2" x2="12" y2="6"></line><line x1="12" y1="18" x2="12" y2="22"></line><line x1="4.93" y1="4.93" x2="7.76" y2="7.76"></line><line x1="16.24" y1="16.24" x2="19.07" y2="19.07"></line><line x1="2" y1="12" x2="6" y2="12"></line><line x1="18" y1="12" x2="22" y2="12"></line><line x1="4.93" y1="19.07" x2="7.76" y2="16.24"></line><line x1="16.24" y1="7.76" x2="19.07" y2="4.93"></line></svg>',
17
+ imageUpload: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline></svg>',
18
+ fileUpload: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"></path></svg>'
19
+ };
20
+ /**
21
+ * Material Icons - Google's Material Design
22
+ * Rounded, friendly, modern
23
+ */
24
+ export const MATERIAL_ICONS = {
25
+ compactView: '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M17 19H7V5h10m0-2H7c-1.11 0-2 .89-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2z"/></svg>',
26
+ defaultView: '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M21 2H3c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h7v2H8v2h8v-2h-2v-2h7c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H3V4h18v12z"/></svg>',
27
+ expandedView: '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M3 5v4h2V5h4V3H5c-1.1 0-2 .9-2 2zm2 10H3v4c0 1.1.9 2 2 2h4v-2H5v-4zm14 4h-4v2h4c1.1 0 2-.9 2-2v-4h-2v4zm0-16h-4v2h4v4h2V5c0-1.1-.9-2-2-2z"/></svg>',
28
+ send: '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"/></svg>',
29
+ sendLoading: '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z"/></svg>',
30
+ userAvatar: '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg>',
31
+ aiAvatar: '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M20 9V7c0-1.1-.9-2-2-2h-3c0-1.66-1.34-3-3-3S9 3.34 9 5H6c-1.1 0-2 .9-2 2v2c-1.66 0-3 1.34-3 3s1.34 3 3 3v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c1.66 0 3-1.34 3-3s-1.34-3-3-3zM6 19V7h12v12H6zm3-6c-.83 0-1.5-.67-1.5-1.5S8.17 10 9 10s1.5.67 1.5 1.5S9.83 13 9 13zm7.5-1.5c0 .83-.67 1.5-1.5 1.5s-1.5-.67-1.5-1.5.67-1.5 1.5-1.5 1.5.67 1.5 1.5zM8 15h8v2H8v-2z"/></svg>',
32
+ loadingAvatar: '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z"/></svg>',
33
+ imageUpload: '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z"/></svg>',
34
+ fileUpload: '<svg viewBox="0 0 24 24" fill="currentColor"><path d="M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5a2.5 2.5 0 0 1 5 0v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5a2.5 2.5 0 0 0 5 0V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z"/></svg>'
35
+ };
36
+ /**
37
+ * Heroicons - By Tailwind CSS team
38
+ * Bold, clear, professional
39
+ */
40
+ export const HEROICONS = {
41
+ compactView: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="5" y="2" width="14" height="20" rx="2" ry="2"></rect><path d="M9 22V12h6v10"></path></svg>',
42
+ defaultView: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect><line x1="8" y1="21" x2="16" y2="21"></line><line x1="12" y1="17" x2="12" y2="21"></line></svg>',
43
+ expandedView: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>',
44
+ send: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon></svg>',
45
+ sendLoading: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>',
46
+ userAvatar: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>',
47
+ aiAvatar: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"></path><rect x="2" y="8" width="20" height="12" rx="2" ry="2"></rect><circle cx="8" cy="14" r="2"></circle><circle cx="16" cy="14" r="2"></circle></svg>',
48
+ loadingAvatar: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>',
49
+ imageUpload: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline></svg>',
50
+ fileUpload: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline></svg>'
51
+ };
52
+ /**
53
+ * Lucide Icons - Community-driven Feather fork
54
+ * Similar to Feather but more extensive
55
+ */
56
+ export const LUCIDE_ICONS = {
57
+ compactView: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="20" x="5" y="2" rx="2" ry="2"></rect><path d="M12.667 8 10 12h4l-2.667 4"></path></svg>',
58
+ defaultView: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="14" x="2" y="3" rx="2"></rect><line x1="8" x2="16" y1="21" y2="21"></line><line x1="12" x2="12" y1="17" y2="21"></line></svg>',
59
+ expandedView: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="M15 3v18"></path><path d="M3 9h18"></path><path d="M3 15h18"></path></svg>',
60
+ send: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m22 2-7 20-4-9-9-4Z"></path><path d="M22 2 11 13"></path></svg>',
61
+ sendLoading: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>',
62
+ userAvatar: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="5"></circle><path d="M20 21a8 8 0 1 0-16 0"></path></svg>',
63
+ aiAvatar: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"></path><rect width="16" height="12" x="4" y="8" rx="2"></rect><path d="M2 14h2"></path><path d="M20 14h2"></path><path d="M15 13v2"></path><path d="M9 13v2"></path></svg>',
64
+ loadingAvatar: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>',
65
+ imageUpload: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"></rect><circle cx="9" cy="9" r="2"></circle><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"></path></svg>',
66
+ fileUpload: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"></path><polyline points="14 2 14 8 20 8"></polyline></svg>'
67
+ };
68
+ /**
69
+ * Bootstrap Icons - Clean and versatile
70
+ * Familiar, simple, widely used
71
+ */
72
+ export const BOOTSTRAP_ICONS = {
73
+ compactView: '<svg viewBox="0 0 16 16" fill="currentColor"><path d="M11 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h6zM5 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H5z"/><path d="M8 14a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></svg>',
74
+ defaultView: '<svg viewBox="0 0 16 16" fill="currentColor"><path d="M0 1.5A.5.5 0 0 1 .5 1H2a.5.5 0 0 1 .485.379L2.89 3H14.5a.5.5 0 0 1 .49.598l-1 5a.5.5 0 0 1-.465.401l-9.397.472L4.415 11H13a.5.5 0 0 1 0 1H4a.5.5 0 0 1-.491-.408L2.01 3.607 1.61 2H.5a.5.5 0 0 1-.5-.5zM3.102 4l.84 4.479 9.144-.459L13.89 4H3.102zM5 12a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm7 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm-7 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm7 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/></svg>',
75
+ expandedView: '<svg viewBox="0 0 16 16" fill="currentColor"><path d="M0 2.5A.5.5 0 0 1 .5 2H2a.5.5 0 0 1 .485.379L2.89 4H14.5a.5.5 0 0 1 .485.621l-1.5 6A.5.5 0 0 1 13 11H4a.5.5 0 0 1-.485-.379L1.61 3H.5a.5.5 0 0 1-.5-.5zM3.14 5l1.25 5h8.22l1.25-5H3.14zM5 13a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0zm9-1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-2 1a2 2 0 1 1 4 0 2 2 0 0 1-4 0z"/></svg>',
76
+ send: '<svg viewBox="0 0 16 16" fill="currentColor"><path d="M15.854.146a.5.5 0 0 1 .11.54l-5.819 14.547a.75.75 0 0 1-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM6.636 10.07l2.761 4.338L14.13 2.576 6.636 10.07Zm6.787-8.201L1.591 6.602l4.339 2.76 7.494-7.493Z"/></svg>',
77
+ sendLoading: '<svg viewBox="0 0 16 16" fill="currentColor"><path d="M11.534 7h3.932a.25.25 0 0 1 .192.41l-1.966 2.36a.25.25 0 0 1-.384 0l-1.966-2.36a.25.25 0 0 1 .192-.41zm-11 2h3.932a.25.25 0 0 0 .192-.41L2.692 6.23a.25.25 0 0 0-.384 0L.342 8.59A.25.25 0 0 0 .534 9z"/><path fill-rule="evenodd" d="M8 3c-1.552 0-2.94.707-3.857 1.818a.5.5 0 1 1-.771-.636A6.002 6.002 0 0 1 13.917 7H12.9A5.002 5.002 0 0 0 8 3zM3.1 9a5.002 5.002 0 0 0 8.757 2.182.5.5 0 1 1 .771.636A6.002 6.002 0 0 1 2.083 9H3.1z"/></svg>',
78
+ userAvatar: '<svg viewBox="0 0 16 16" fill="currentColor"><path d="M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0z"/><path fill-rule="evenodd" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm8-7a7 7 0 0 0-5.468 11.37C3.242 11.226 4.805 10 8 10s4.757 1.225 5.468 2.37A7 7 0 0 0 8 1z"/></svg>',
79
+ aiAvatar: '<svg viewBox="0 0 16 16" fill="currentColor"><path d="M6 10.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z"/></svg>',
80
+ loadingAvatar: '<svg viewBox="0 0 16 16" fill="currentColor"><path d="M11.534 7h3.932a.25.25 0 0 1 .192.41l-1.966 2.36a.25.25 0 0 1-.384 0l-1.966-2.36a.25.25 0 0 1 .192-.41zm-11 2h3.932a.25.25 0 0 0 .192-.41L2.692 6.23a.25.25 0 0 0-.384 0L.342 8.59A.25.25 0 0 0 .534 9z"/></svg>',
81
+ imageUpload: '<svg viewBox="0 0 16 16" fill="currentColor"><path d="M6.002 5.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z"/><path d="M2.002 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2h-12zm12 1a1 1 0 0 1 1 1v6.5l-3.777-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12V3a1 1 0 0 1 1-1h12z"/></svg>',
82
+ fileUpload: '<svg viewBox="0 0 16 16" fill="currentColor"><path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2z"/></svg>'
83
+ };
84
+ /**
85
+ * Get icon configuration by type
86
+ */
87
+ export function getIconSet(iconSetType, customIcons) {
88
+ let baseIcons;
89
+ switch (iconSetType) {
90
+ case 'material':
91
+ baseIcons = MATERIAL_ICONS;
92
+ break;
93
+ case 'heroicons':
94
+ baseIcons = HEROICONS;
95
+ break;
96
+ case 'lucide':
97
+ baseIcons = LUCIDE_ICONS;
98
+ break;
99
+ case 'bootstrap':
100
+ baseIcons = BOOTSTRAP_ICONS;
101
+ break;
102
+ case 'custom':
103
+ baseIcons = FEATHER_ICONS; // Fallback to Feather for missing custom icons
104
+ break;
105
+ case 'feather':
106
+ default:
107
+ baseIcons = FEATHER_ICONS;
108
+ break;
109
+ }
110
+ // Merge custom icons if provided
111
+ return customIcons ? Object.assign(Object.assign({}, baseIcons), customIcons) : baseIcons;
112
+ }
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1jb25maWcuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW1hbmF0ZS1haS1jaGF0LWxpYi9zcmMvbGliL21vZGVscy9pY29uLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUF3Qkg7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFtQjtJQUMzQyxXQUFXLEVBQUUsaU1BQWlNO0lBQzlNLFdBQVcsRUFBRSwwUkFBMFI7SUFDdlMsWUFBWSxFQUFFLHFmQUFxZjtJQUNuZ0IsSUFBSSxFQUFFLHFPQUFxTztJQUMzTyxXQUFXLEVBQUUsK2dCQUErZ0I7SUFDNWhCLFVBQVUsRUFBRSxvT0FBb087SUFDaFAsUUFBUSxFQUFFLDZQQUE2UDtJQUN2USxhQUFhLEVBQUUsK2dCQUErZ0I7SUFDOWhCLFdBQVcsRUFBRSwyUkFBMlI7SUFDeFMsVUFBVSxFQUFFLHNRQUFzUTtDQUNuUixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFtQjtJQUM1QyxXQUFXLEVBQUUseUpBQXlKO0lBQ3RLLFdBQVcsRUFBRSwrS0FBK0s7SUFDNUwsWUFBWSxFQUFFLDBNQUEwTTtJQUN4TixJQUFJLEVBQUUsc0dBQXNHO0lBQzVHLFdBQVcsRUFBRSxnU0FBZ1M7SUFDN1MsVUFBVSxFQUFFLDhLQUE4SztJQUMxTCxRQUFRLEVBQUUsK1pBQStaO0lBQ3phLGFBQWEsRUFBRSxnU0FBZ1M7SUFDL1MsV0FBVyxFQUFFLHlMQUF5TDtJQUN0TSxVQUFVLEVBQUUsK1FBQStRO0NBQzVSLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQW1CO0lBQ3ZDLFdBQVcsRUFBRSxnT0FBZ087SUFDN08sV0FBVyxFQUFFLDBSQUEwUjtJQUN2UyxZQUFZLEVBQUUscVJBQXFSO0lBQ25TLElBQUksRUFBRSxxT0FBcU87SUFDM08sV0FBVyxFQUFFLGdMQUFnTDtJQUM3TCxVQUFVLEVBQUUsb09BQW9PO0lBQ2hQLFFBQVEsRUFBRSx5U0FBeVM7SUFDblQsYUFBYSxFQUFFLGdMQUFnTDtJQUMvTCxXQUFXLEVBQUUsMlJBQTJSO0lBQ3hTLFVBQVUsRUFBRSw0UEFBNFA7Q0FDelEsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBbUI7SUFDMUMsV0FBVyxFQUFFLDZPQUE2TztJQUMxUCxXQUFXLEVBQUUsbVJBQW1SO0lBQ2hTLFlBQVksRUFBRSxnU0FBZ1M7SUFDOVMsSUFBSSxFQUFFLHFNQUFxTTtJQUMzTSxXQUFXLEVBQUUsZ0xBQWdMO0lBQzdMLFVBQVUsRUFBRSxnTkFBZ047SUFDNU4sUUFBUSxFQUFFLDJUQUEyVDtJQUNyVSxhQUFhLEVBQUUsZ0xBQWdMO0lBQy9MLFdBQVcsRUFBRSxpU0FBaVM7SUFDOVMsVUFBVSxFQUFFLHVRQUF1UTtDQUNwUixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFtQjtJQUM3QyxXQUFXLEVBQUUsNFBBQTRQO0lBQ3pRLFdBQVcsRUFBRSwyYkFBMmI7SUFDeGMsWUFBWSxFQUFFLCtYQUErWDtJQUM3WSxJQUFJLEVBQUUsaVRBQWlUO0lBQ3ZULFdBQVcsRUFBRSw0ZUFBNGU7SUFDemYsVUFBVSxFQUFFLGdRQUFnUTtJQUM1USxRQUFRLEVBQUUseVBBQXlQO0lBQ25RLGFBQWEsRUFBRSx3UUFBd1E7SUFDdlIsV0FBVyxFQUFFLHVVQUF1VTtJQUNwVixVQUFVLEVBQUUseU5BQXlOO0NBQ3RPLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsV0FBd0IsRUFBRSxXQUFxQztJQUN4RixJQUFJLFNBQXlCLENBQUM7SUFFOUIsUUFBUSxXQUFXLEVBQUU7UUFDbkIsS0FBSyxVQUFVO1lBQ2IsU0FBUyxHQUFHLGNBQWMsQ0FBQztZQUMzQixNQUFNO1FBQ1IsS0FBSyxXQUFXO1lBQ2QsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUN0QixNQUFNO1FBQ1IsS0FBSyxRQUFRO1lBQ1gsU0FBUyxHQUFHLFlBQVksQ0FBQztZQUN6QixNQUFNO1FBQ1IsS0FBSyxXQUFXO1lBQ2QsU0FBUyxHQUFHLGVBQWUsQ0FBQztZQUM1QixNQUFNO1FBQ1IsS0FBSyxRQUFRO1lBQ1gsU0FBUyxHQUFHLGFBQWEsQ0FBQyxDQUFDLCtDQUErQztZQUMxRSxNQUFNO1FBQ1IsS0FBSyxTQUFTLENBQUM7UUFDZjtZQUNFLFNBQVMsR0FBRyxhQUFhLENBQUM7WUFDMUIsTUFBTTtLQUNUO0lBRUQsaUNBQWlDO0lBQ2pDLE9BQU8sV0FBVyxDQUFDLENBQUMsaUNBQU0sU0FBUyxHQUFLLFdBQVcsRUFBRyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogSWNvbiBjb25maWd1cmF0aW9uIGludGVyZmFjZXMgZm9yIHRoZSBjaGF0IGNvbXBvbmVudFxyXG4gKi9cclxuXHJcbmV4cG9ydCB0eXBlIEljb25TZXRUeXBlID0gJ2ZlYXRoZXInIHwgJ21hdGVyaWFsJyB8ICdoZXJvaWNvbnMnIHwgJ2x1Y2lkZScgfCAnYm9vdHN0cmFwJyB8ICdjdXN0b20nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGF0SWNvbkNvbmZpZyB7XHJcbiAgLy8gVmlldyBjb250cm9sIGljb25zXHJcbiAgY29tcGFjdFZpZXc/OiBzdHJpbmc7XHJcbiAgZGVmYXVsdFZpZXc/OiBzdHJpbmc7XHJcbiAgZXhwYW5kZWRWaWV3Pzogc3RyaW5nO1xyXG4gIFxyXG4gIC8vIEFjdGlvbiBpY29uc1xyXG4gIHNlbmQ/OiBzdHJpbmc7XHJcbiAgc2VuZExvYWRpbmc/OiBzdHJpbmc7XHJcbiAgXHJcbiAgLy8gQXZhdGFyIGljb25zXHJcbiAgdXNlckF2YXRhcj86IHN0cmluZztcclxuICBhaUF2YXRhcj86IHN0cmluZztcclxuICBsb2FkaW5nQXZhdGFyPzogc3RyaW5nO1xyXG4gIFxyXG4gIC8vIFVwbG9hZCBpY29ucyAoaWYgZW5hYmxlZClcclxuICBpbWFnZVVwbG9hZD86IHN0cmluZztcclxuICBmaWxlVXBsb2FkPzogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogRmVhdGhlciBJY29ucyAtIERlZmF1bHQgaWNvbiBzZXRcclxuICogQ2xlYW4sIG1pbmltYWwsIHByb2Zlc3Npb25hbFxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IEZFQVRIRVJfSUNPTlM6IENoYXRJY29uQ29uZmlnID0ge1xyXG4gIGNvbXBhY3RWaWV3OiAnPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PHJlY3QgeD1cIjVcIiB5PVwiMlwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIyMFwiIHJ4PVwiMlwiIHJ5PVwiMlwiPjwvcmVjdD48L3N2Zz4nLFxyXG4gIGRlZmF1bHRWaWV3OiAnPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PHJlY3QgeD1cIjJcIiB5PVwiM1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNFwiIHJ4PVwiMlwiIHJ5PVwiMlwiPjwvcmVjdD48bGluZSB4MT1cIjhcIiB5MT1cIjIxXCIgeDI9XCIxNlwiIHkyPVwiMjFcIj48L2xpbmU+PGxpbmUgeDE9XCIxMlwiIHkxPVwiMTdcIiB4Mj1cIjEyXCIgeTI9XCIyMVwiPjwvbGluZT48L3N2Zz4nLFxyXG4gIGV4cGFuZGVkVmlldzogJzxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjxyZWN0IHg9XCIyXCIgeT1cIjJcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiByeD1cIjIuMThcIiByeT1cIjIuMThcIj48L3JlY3Q+PGxpbmUgeDE9XCI3XCIgeTE9XCIyXCIgeDI9XCI3XCIgeTI9XCIyMlwiPjwvbGluZT48bGluZSB4MT1cIjE3XCIgeTE9XCIyXCIgeDI9XCIxN1wiIHkyPVwiMjJcIj48L2xpbmU+PGxpbmUgeDE9XCIyXCIgeTE9XCIxMlwiIHgyPVwiMjJcIiB5Mj1cIjEyXCI+PC9saW5lPjxsaW5lIHgxPVwiMlwiIHkxPVwiN1wiIHgyPVwiN1wiIHkyPVwiN1wiPjwvbGluZT48bGluZSB4MT1cIjJcIiB5MT1cIjE3XCIgeDI9XCI3XCIgeTI9XCIxN1wiPjwvbGluZT48bGluZSB4MT1cIjE3XCIgeTE9XCIxN1wiIHgyPVwiMjJcIiB5Mj1cIjE3XCI+PC9saW5lPjxsaW5lIHgxPVwiMTdcIiB5MT1cIjdcIiB4Mj1cIjIyXCIgeTI9XCI3XCI+PC9saW5lPjwvc3ZnPicsXHJcbiAgc2VuZDogJzxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjxsaW5lIHgxPVwiMjJcIiB5MT1cIjJcIiB4Mj1cIjExXCIgeTI9XCIxM1wiPjwvbGluZT48cG9seWdvbiBwb2ludHM9XCIyMiAyIDE1IDIyIDExIDEzIDIgOSAyMiAyXCI+PC9wb2x5Z29uPjwvc3ZnPicsXHJcbiAgc2VuZExvYWRpbmc6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48bGluZSB4MT1cIjEyXCIgeTE9XCIyXCIgeDI9XCIxMlwiIHkyPVwiNlwiPjwvbGluZT48bGluZSB4MT1cIjEyXCIgeTE9XCIxOFwiIHgyPVwiMTJcIiB5Mj1cIjIyXCI+PC9saW5lPjxsaW5lIHgxPVwiNC45M1wiIHkxPVwiNC45M1wiIHgyPVwiNy43NlwiIHkyPVwiNy43NlwiPjwvbGluZT48bGluZSB4MT1cIjE2LjI0XCIgeTE9XCIxNi4yNFwiIHgyPVwiMTkuMDdcIiB5Mj1cIjE5LjA3XCI+PC9saW5lPjxsaW5lIHgxPVwiMlwiIHkxPVwiMTJcIiB4Mj1cIjZcIiB5Mj1cIjEyXCI+PC9saW5lPjxsaW5lIHgxPVwiMThcIiB5MT1cIjEyXCIgeDI9XCIyMlwiIHkyPVwiMTJcIj48L2xpbmU+PGxpbmUgeDE9XCI0LjkzXCIgeTE9XCIxOS4wN1wiIHgyPVwiNy43NlwiIHkyPVwiMTYuMjRcIj48L2xpbmU+PGxpbmUgeDE9XCIxNi4yNFwiIHkxPVwiNy43NlwiIHgyPVwiMTkuMDdcIiB5Mj1cIjQuOTNcIj48L2xpbmU+PC9zdmc+JyxcclxuICB1c2VyQXZhdGFyOiAnPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PHBhdGggZD1cIk0yMCAyMXYtMmE0IDQgMCAwIDAtNC00SDhhNCA0IDAgMCAwLTQgNHYyXCI+PC9wYXRoPjxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiN1wiIHI9XCI0XCI+PC9jaXJjbGU+PC9zdmc+JyxcclxuICBhaUF2YXRhcjogJzxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjxyZWN0IHg9XCIyXCIgeT1cIjdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTRcIiByeD1cIjJcIiByeT1cIjJcIj48L3JlY3Q+PHBhdGggZD1cIk0xNiAyMVY1YTIgMiAwIDAgMC0yLTJoLTRhMiAyIDAgMCAwLTIgMnYxNlwiPjwvcGF0aD48L3N2Zz4nLFxyXG4gIGxvYWRpbmdBdmF0YXI6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48bGluZSB4MT1cIjEyXCIgeTE9XCIyXCIgeDI9XCIxMlwiIHkyPVwiNlwiPjwvbGluZT48bGluZSB4MT1cIjEyXCIgeTE9XCIxOFwiIHgyPVwiMTJcIiB5Mj1cIjIyXCI+PC9saW5lPjxsaW5lIHgxPVwiNC45M1wiIHkxPVwiNC45M1wiIHgyPVwiNy43NlwiIHkyPVwiNy43NlwiPjwvbGluZT48bGluZSB4MT1cIjE2LjI0XCIgeTE9XCIxNi4yNFwiIHgyPVwiMTkuMDdcIiB5Mj1cIjE5LjA3XCI+PC9saW5lPjxsaW5lIHgxPVwiMlwiIHkxPVwiMTJcIiB4Mj1cIjZcIiB5Mj1cIjEyXCI+PC9saW5lPjxsaW5lIHgxPVwiMThcIiB5MT1cIjEyXCIgeDI9XCIyMlwiIHkyPVwiMTJcIj48L2xpbmU+PGxpbmUgeDE9XCI0LjkzXCIgeTE9XCIxOS4wN1wiIHgyPVwiNy43NlwiIHkyPVwiMTYuMjRcIj48L2xpbmU+PGxpbmUgeDE9XCIxNi4yNFwiIHkxPVwiNy43NlwiIHgyPVwiMTkuMDdcIiB5Mj1cIjQuOTNcIj48L2xpbmU+PC9zdmc+JyxcclxuICBpbWFnZVVwbG9hZDogJzxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiByeD1cIjJcIiByeT1cIjJcIj48L3JlY3Q+PGNpcmNsZSBjeD1cIjguNVwiIGN5PVwiOC41XCIgcj1cIjEuNVwiPjwvY2lyY2xlPjxwb2x5bGluZSBwb2ludHM9XCIyMSAxNSAxNiAxMCA1IDIxXCI+PC9wb2x5bGluZT48L3N2Zz4nLFxyXG4gIGZpbGVVcGxvYWQ6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48cGF0aCBkPVwiTTIxLjQ0IDExLjA1bC05LjE5IDkuMTlhNiA2IDAgMCAxLTguNDktOC40OWw5LjE5LTkuMTlhNCA0IDAgMCAxIDUuNjYgNS42NmwtOS4yIDkuMTlhMiAyIDAgMCAxLTIuODMtMi44M2w4LjQ5LTguNDhcIj48L3BhdGg+PC9zdmc+J1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIE1hdGVyaWFsIEljb25zIC0gR29vZ2xlJ3MgTWF0ZXJpYWwgRGVzaWduXHJcbiAqIFJvdW5kZWQsIGZyaWVuZGx5LCBtb2Rlcm5cclxuICovXHJcbmV4cG9ydCBjb25zdCBNQVRFUklBTF9JQ09OUzogQ2hhdEljb25Db25maWcgPSB7XHJcbiAgY29tcGFjdFZpZXc6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PHBhdGggZD1cIk0xNyAxOUg3VjVoMTBtMC0ySDdjLTEuMTEgMC0yIC44OS0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxMGEyIDIgMCAwIDAgMi0yVjVhMiAyIDAgMCAwLTItMnpcIi8+PC9zdmc+JyxcclxuICBkZWZhdWx0VmlldzogJzxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48cGF0aCBkPVwiTTIxIDJIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg3djJIOHYyaDh2LTJoLTJ2LTJoN2MxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0wIDE0SDNWNGgxOHYxMnpcIi8+PC9zdmc+JyxcclxuICBleHBhbmRlZFZpZXc6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PHBhdGggZD1cIk0zIDV2NGgyVjVoNFYzSDVjLTEuMSAwLTIgLjktMiAyem0yIDEwSDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHptMTQgNGgtNHYyaDRjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2NHptMC0xNmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6XCIvPjwvc3ZnPicsXHJcbiAgc2VuZDogJzxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48cGF0aCBkPVwiTTIuMDEgMjFMMjMgMTIgMi4wMSAzIDIgMTBsMTUgMi0xNSAyelwiLz48L3N2Zz4nLFxyXG4gIHNlbmRMb2FkaW5nOiAnPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjxwYXRoIGQ9XCJNMTIgNFYxTDggNWw0IDRWNmMzLjMxIDAgNiAyLjY5IDYgNiAwIDEuMDEtLjI1IDEuOTctLjcgMi44bDEuNDYgMS40NkMxOS41NCAxNS4wMyAyMCAxMy41NyAyMCAxMmMwLTQuNDItMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTYgMC0xLjAxLjI1LTEuOTcuNy0yLjhMNS4yNCA3Ljc0QzQuNDYgOC45NyA0IDEwLjQzIDQgMTJjMCA0LjQyIDMuNTggOCA4IDh2M2w0LTQtNC00djN6XCIvPjwvc3ZnPicsXHJcbiAgdXNlckF2YXRhcjogJzxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48cGF0aCBkPVwiTTEyIDEyYzIuMjEgMCA0LTEuNzkgNC00cy0xLjc5LTQtNC00LTQgMS43OS00IDQgMS43OSA0IDQgNHptMCAyYy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00elwiLz48L3N2Zz4nLFxyXG4gIGFpQXZhdGFyOiAnPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjxwYXRoIGQ9XCJNMjAgOVY3YzAtMS4xLS45LTItMi0yaC0zYzAtMS42Ni0xLjM0LTMtMy0zUzkgMy4zNCA5IDVINmMtMS4xIDAtMiAuOS0yIDJ2MmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgM3Y0YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ2LTRjMS42NiAwIDMtMS4zNCAzLTNzLTEuMzQtMy0zLTN6TTYgMTlWN2gxMnYxMkg2em0zLTZjLS44MyAwLTEuNS0uNjctMS41LTEuNVM4LjE3IDEwIDkgMTBzMS41LjY3IDEuNSAxLjVTOS44MyAxMyA5IDEzem03LjUtMS41YzAgLjgzLS42NyAxLjUtMS41IDEuNXMtMS41LS42Ny0xLjUtMS41LjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41ek04IDE1aDh2Mkg4di0yelwiLz48L3N2Zz4nLFxyXG4gIGxvYWRpbmdBdmF0YXI6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PHBhdGggZD1cIk0xMiA0VjFMOCA1bDQgNFY2YzMuMzEgMCA2IDIuNjkgNiA2IDAgMS4wMS0uMjUgMS45Ny0uNyAyLjhsMS40NiAxLjQ2QzE5LjU0IDE1LjAzIDIwIDEzLjU3IDIwIDEyYzAtNC40Mi0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNiAwLTEuMDEuMjUtMS45Ny43LTIuOEw1LjI0IDcuNzRDNC40NiA4Ljk3IDQgMTAuNDMgNCAxMmMwIDQuNDIgMy41OCA4IDggOHYzbDQtNC00LTR2M3pcIi8+PC9zdmc+JyxcclxuICBpbWFnZVVwbG9hZDogJzxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48cGF0aCBkPVwiTTIxIDE5VjVjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnpNOC41IDEzLjVsMi41IDMuMDFMMTQuNSAxMmw0LjUgNkg1bDMuNS00LjV6XCIvPjwvc3ZnPicsXHJcbiAgZmlsZVVwbG9hZDogJzxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48cGF0aCBkPVwiTTE2LjUgNnYxMS41YzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00VjVhMi41IDIuNSAwIDAgMSA1IDB2MTAuNWMwIC41NS0uNDUgMS0xIDFzLTEtLjQ1LTEtMVY2SDEwdjkuNWEyLjUgMi41IDAgMCAwIDUgMFY1YzAtMi4yMS0xLjc5LTQtNC00UzcgMi43OSA3IDV2MTIuNWMwIDMuMDQgMi40NiA1LjUgNS41IDUuNXM1LjUtMi40NiA1LjUtNS41VjZoLTEuNXpcIi8+PC9zdmc+J1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEhlcm9pY29ucyAtIEJ5IFRhaWx3aW5kIENTUyB0ZWFtXHJcbiAqIEJvbGQsIGNsZWFyLCBwcm9mZXNzaW9uYWxcclxuICovXHJcbmV4cG9ydCBjb25zdCBIRVJPSUNPTlM6IENoYXRJY29uQ29uZmlnID0ge1xyXG4gIGNvbXBhY3RWaWV3OiAnPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PHJlY3QgeD1cIjVcIiB5PVwiMlwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIyMFwiIHJ4PVwiMlwiIHJ5PVwiMlwiPjwvcmVjdD48cGF0aCBkPVwiTTkgMjJWMTJoNnYxMFwiPjwvcGF0aD48L3N2Zz4nLFxyXG4gIGRlZmF1bHRWaWV3OiAnPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PHJlY3QgeD1cIjJcIiB5PVwiM1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIxNFwiIHJ4PVwiMlwiIHJ5PVwiMlwiPjwvcmVjdD48bGluZSB4MT1cIjhcIiB5MT1cIjIxXCIgeDI9XCIxNlwiIHkyPVwiMjFcIj48L2xpbmU+PGxpbmUgeDE9XCIxMlwiIHkxPVwiMTdcIiB4Mj1cIjEyXCIgeTI9XCIyMVwiPjwvbGluZT48L3N2Zz4nLFxyXG4gIGV4cGFuZGVkVmlldzogJzxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiByeD1cIjJcIiByeT1cIjJcIj48L3JlY3Q+PGxpbmUgeDE9XCIzXCIgeTE9XCI5XCIgeDI9XCIyMVwiIHkyPVwiOVwiPjwvbGluZT48bGluZSB4MT1cIjlcIiB5MT1cIjIxXCIgeDI9XCI5XCIgeTI9XCI5XCI+PC9saW5lPjwvc3ZnPicsXHJcbiAgc2VuZDogJzxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjxsaW5lIHgxPVwiMjJcIiB5MT1cIjJcIiB4Mj1cIjExXCIgeTI9XCIxM1wiPjwvbGluZT48cG9seWdvbiBwb2ludHM9XCIyMiAyIDE1IDIyIDExIDEzIDIgOSAyMiAyXCI+PC9wb2x5Z29uPjwvc3ZnPicsXHJcbiAgc2VuZExvYWRpbmc6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48cGF0aCBkPVwiTTIxIDEyYTkgOSAwIDEgMS02LjIxOS04LjU2XCI+PC9wYXRoPjwvc3ZnPicsXHJcbiAgdXNlckF2YXRhcjogJzxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjxwYXRoIGQ9XCJNMjAgMjF2LTJhNCA0IDAgMCAwLTQtNEg4YTQgNCAwIDAgMC00IDR2MlwiPjwvcGF0aD48Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjdcIiByPVwiNFwiPjwvY2lyY2xlPjwvc3ZnPicsXHJcbiAgYWlBdmF0YXI6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48cGF0aCBkPVwiTTEyIDhWNEg4XCI+PC9wYXRoPjxyZWN0IHg9XCIyXCIgeT1cIjhcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTJcIiByeD1cIjJcIiByeT1cIjJcIj48L3JlY3Q+PGNpcmNsZSBjeD1cIjhcIiBjeT1cIjE0XCIgcj1cIjJcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjE0XCIgcj1cIjJcIj48L2NpcmNsZT48L3N2Zz4nLFxyXG4gIGxvYWRpbmdBdmF0YXI6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48cGF0aCBkPVwiTTIxIDEyYTkgOSAwIDEgMS02LjIxOS04LjU2XCI+PC9wYXRoPjwvc3ZnPicsXHJcbiAgaW1hZ2VVcGxvYWQ6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgcng9XCIyXCIgcnk9XCIyXCI+PC9yZWN0PjxjaXJjbGUgY3g9XCI4LjVcIiBjeT1cIjguNVwiIHI9XCIxLjVcIj48L2NpcmNsZT48cG9seWxpbmUgcG9pbnRzPVwiMjEgMTUgMTYgMTAgNSAyMVwiPjwvcG9seWxpbmU+PC9zdmc+JyxcclxuICBmaWxlVXBsb2FkOiAnPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PHBhdGggZD1cIk0xMyAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOXpcIj48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz1cIjEzIDIgMTMgOSAyMCA5XCI+PC9wb2x5bGluZT48L3N2Zz4nXHJcbn07XHJcblxyXG4vKipcclxuICogTHVjaWRlIEljb25zIC0gQ29tbXVuaXR5LWRyaXZlbiBGZWF0aGVyIGZvcmtcclxuICogU2ltaWxhciB0byBGZWF0aGVyIGJ1dCBtb3JlIGV4dGVuc2l2ZVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IExVQ0lERV9JQ09OUzogQ2hhdEljb25Db25maWcgPSB7XHJcbiAgY29tcGFjdFZpZXc6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48cmVjdCB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMjBcIiB4PVwiNVwiIHk9XCIyXCIgcng9XCIyXCIgcnk9XCIyXCI+PC9yZWN0PjxwYXRoIGQ9XCJNMTIuNjY3IDggMTAgMTJoNGwtMi42NjcgNFwiPjwvcGF0aD48L3N2Zz4nLFxyXG4gIGRlZmF1bHRWaWV3OiAnPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjE0XCIgeD1cIjJcIiB5PVwiM1wiIHJ4PVwiMlwiPjwvcmVjdD48bGluZSB4MT1cIjhcIiB4Mj1cIjE2XCIgeTE9XCIyMVwiIHkyPVwiMjFcIj48L2xpbmU+PGxpbmUgeDE9XCIxMlwiIHgyPVwiMTJcIiB5MT1cIjE3XCIgeTI9XCIyMVwiPjwvbGluZT48L3N2Zz4nLFxyXG4gIGV4cGFuZGVkVmlldzogJzxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjxyZWN0IHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHg9XCIzXCIgeT1cIjNcIiByeD1cIjJcIj48L3JlY3Q+PHBhdGggZD1cIk05IDN2MThcIj48L3BhdGg+PHBhdGggZD1cIk0xNSAzdjE4XCI+PC9wYXRoPjxwYXRoIGQ9XCJNMyA5aDE4XCI+PC9wYXRoPjxwYXRoIGQ9XCJNMyAxNWgxOFwiPjwvcGF0aD48L3N2Zz4nLFxyXG4gIHNlbmQ6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48cGF0aCBkPVwibTIyIDItNyAyMC00LTktOS00WlwiPjwvcGF0aD48cGF0aCBkPVwiTTIyIDIgMTEgMTNcIj48L3BhdGg+PC9zdmc+JyxcclxuICBzZW5kTG9hZGluZzogJzxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjxwYXRoIGQ9XCJNMjEgMTJhOSA5IDAgMSAxLTYuMjE5LTguNTZcIj48L3BhdGg+PC9zdmc+JyxcclxuICB1c2VyQXZhdGFyOiAnPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PGNpcmNsZSBjeD1cIjEyXCIgY3k9XCI4XCIgcj1cIjVcIj48L2NpcmNsZT48cGF0aCBkPVwiTTIwIDIxYTggOCAwIDEgMC0xNiAwXCI+PC9wYXRoPjwvc3ZnPicsXHJcbiAgYWlBdmF0YXI6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48cGF0aCBkPVwiTTEyIDhWNEg4XCI+PC9wYXRoPjxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxMlwiIHg9XCI0XCIgeT1cIjhcIiByeD1cIjJcIj48L3JlY3Q+PHBhdGggZD1cIk0yIDE0aDJcIj48L3BhdGg+PHBhdGggZD1cIk0yMCAxNGgyXCI+PC9wYXRoPjxwYXRoIGQ9XCJNMTUgMTN2MlwiPjwvcGF0aD48cGF0aCBkPVwiTTkgMTN2MlwiPjwvcGF0aD48L3N2Zz4nLFxyXG4gIGxvYWRpbmdBdmF0YXI6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48cGF0aCBkPVwiTTIxIDEyYTkgOSAwIDEgMS02LjIxOS04LjU2XCI+PC9wYXRoPjwvc3ZnPicsXHJcbiAgaW1hZ2VVcGxvYWQ6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48cmVjdCB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB4PVwiM1wiIHk9XCIzXCIgcng9XCIyXCIgcnk9XCIyXCI+PC9yZWN0PjxjaXJjbGUgY3g9XCI5XCIgY3k9XCI5XCIgcj1cIjJcIj48L2NpcmNsZT48cGF0aCBkPVwibTIxIDE1LTMuMDg2LTMuMDg2YTIgMiAwIDAgMC0yLjgyOCAwTDYgMjFcIj48L3BhdGg+PC9zdmc+JyxcclxuICBmaWxlVXBsb2FkOiAnPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PHBhdGggZD1cIk0xNC41IDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY3LjVMMTQuNSAyelwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVwiMTQgMiAxNCA4IDIwIDhcIj48L3BvbHlsaW5lPjwvc3ZnPidcclxufTtcclxuXHJcbi8qKlxyXG4gKiBCb290c3RyYXAgSWNvbnMgLSBDbGVhbiBhbmQgdmVyc2F0aWxlXHJcbiAqIEZhbWlsaWFyLCBzaW1wbGUsIHdpZGVseSB1c2VkXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgQk9PVFNUUkFQX0lDT05TOiBDaGF0SWNvbkNvbmZpZyA9IHtcclxuICBjb21wYWN0VmlldzogJzxzdmcgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48cGF0aCBkPVwiTTExIDFhMSAxIDAgMCAxIDEgMXYxMmExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFoNnpNNSAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg2YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDV6XCIvPjxwYXRoIGQ9XCJNOCAxNGExIDEgMCAxIDAgMC0yIDEgMSAwIDAgMCAwIDJ6XCIvPjwvc3ZnPicsXHJcbiAgZGVmYXVsdFZpZXc6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PHBhdGggZD1cIk0wIDEuNUEuNS41IDAgMCAxIC41IDFIMmEuNS41IDAgMCAxIC40ODUuMzc5TDIuODkgM0gxNC41YS41LjUgMCAwIDEgLjQ5LjU5OGwtMSA1YS41LjUgMCAwIDEtLjQ2NS40MDFsLTkuMzk3LjQ3Mkw0LjQxNSAxMUgxM2EuNS41IDAgMCAxIDAgMUg0YS41LjUgMCAwIDEtLjQ5MS0uNDA4TDIuMDEgMy42MDcgMS42MSAySC41YS41LjUgMCAwIDEtLjUtLjV6TTMuMTAyIDRsLjg0IDQuNDc5IDkuMTQ0LS40NTlMMTMuODkgNEgzLjEwMnpNNSAxMmEyIDIgMCAxIDAgMCA0IDIgMiAwIDAgMCAwLTR6bTcgMGEyIDIgMCAxIDAgMCA0IDIgMiAwIDAgMCAwLTR6bS03IDFhMSAxIDAgMSAxIDAgMiAxIDEgMCAwIDEgMC0yem03IDBhMSAxIDAgMSAxIDAgMiAxIDEgMCAwIDEgMC0yelwiLz48L3N2Zz4nLFxyXG4gIGV4cGFuZGVkVmlldzogJzxzdmcgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48cGF0aCBkPVwiTTAgMi41QS41LjUgMCAwIDEgLjUgMkgyYS41LjUgMCAwIDEgLjQ4NS4zNzlMMi44OSA0SDE0LjVhLjUuNSAwIDAgMSAuNDg1LjYyMWwtMS41IDZBLjUuNSAwIDAgMSAxMyAxMUg0YS41LjUgMCAwIDEtLjQ4NS0uMzc5TDEuNjEgM0guNWEuNS41IDAgMCAxLS41LS41ek0zLjE0IDVsMS4yNSA1aDguMjJsMS4yNS01SDMuMTR6TTUgMTNhMSAxIDAgMSAwIDAgMiAxIDEgMCAwIDAgMC0yem0tMiAxYTIgMiAwIDEgMSA0IDAgMiAyIDAgMCAxLTQgMHptOS0xYTEgMSAwIDEgMCAwIDIgMSAxIDAgMCAwIDAtMnptLTIgMWEyIDIgMCAxIDEgNCAwIDIgMiAwIDAgMS00IDB6XCIvPjwvc3ZnPicsXHJcbiAgc2VuZDogJzxzdmcgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48cGF0aCBkPVwiTTE1Ljg1NC4xNDZhLjUuNSAwIDAgMSAuMTEuNTRsLTUuODE5IDE0LjU0N2EuNzUuNzUgMCAwIDEtMS4zMjkuMTI0bC0zLjE3OC00Ljk5NUwuNjQzIDcuMTg0YS43NS43NSAwIDAgMSAuMTI0LTEuMzNMMTUuMzE0LjAzN2EuNS41IDAgMCAxIC41NC4xMVpNNi42MzYgMTAuMDdsMi43NjEgNC4zMzhMMTQuMTMgMi41NzYgNi42MzYgMTAuMDdabTYuNzg3LTguMjAxTDEuNTkxIDYuNjAybDQuMzM5IDIuNzYgNy40OTQtNy40OTNaXCIvPjwvc3ZnPicsXHJcbiAgc2VuZExvYWRpbmc6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PHBhdGggZD1cIk0xMS41MzQgN2gzLjkzMmEuMjUuMjUgMCAwIDEgLjE5Mi40MWwtMS45NjYgMi4zNmEuMjUuMjUgMCAwIDEtLjM4NCAwbC0xLjk2Ni0yLjM2YS4yNS4yNSAwIDAgMSAuMTkyLS40MXptLTExIDJoMy45MzJhLjI1LjI1IDAgMCAwIC4xOTItLjQxTDIuNjkyIDYuMjNhLjI1LjI1IDAgMCAwLS4zODQgMEwuMzQyIDguNTlBLjI1LjI1IDAgMCAwIC41MzQgOXpcIi8+PHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNOCAzYy0xLjU1MiAwLTIuOTQuNzA3LTMuODU3IDEuODE4YS41LjUgMCAxIDEtLjc3MS0uNjM2QTYuMDAyIDYuMDAyIDAgMCAxIDEzLjkxNyA3SDEyLjlBNS4wMDIgNS4wMDIgMCAwIDAgOCAzek0zLjEgOWE1LjAwMiA1LjAwMiAwIDAgMCA4Ljc1NyAyLjE4Mi41LjUgMCAxIDEgLjc3MS42MzZBNi4wMDIgNi4wMDIgMCAwIDEgMi4wODMgOUgzLjF6XCIvPjwvc3ZnPicsXHJcbiAgdXNlckF2YXRhcjogJzxzdmcgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48cGF0aCBkPVwiTTExIDZhMyAzIDAgMSAxLTYgMCAzIDMgMCAwIDEgNiAwelwiLz48cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0wIDhhOCA4IDAgMSAxIDE2IDBBOCA4IDAgMCAxIDAgOHptOC03YTcgNyAwIDAgMC01LjQ2OCAxMS4zN0MzLjI0MiAxMS4yMjYgNC44MDUgMTAgOCAxMHM0Ljc1NyAxLjIyNSA1LjQ2OCAyLjM3QTcgNyAwIDAgMCA4IDF6XCIvPjwvc3ZnPicsXHJcbiAgYWlBdmF0YXI6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PHBhdGggZD1cIk02IDEwLjVhLjUuNSAwIDAgMSAuNS0uNWgzYS41LjUgMCAwIDEgMCAxaC0zYS41LjUgMCAwIDEtLjUtLjV6bS0yLTNhLjUuNSAwIDAgMSAuNS0uNWg3YS41LjUgMCAwIDEgMCAxaC03YS41LjUgMCAwIDEtLjUtLjV6bS0yLTNhLjUuNSAwIDAgMSAuNS0uNWgxMWEuNS41IDAgMCAxIDAgMWgtMTFhLjUuNSAwIDAgMS0uNS0uNXpcIi8+PC9zdmc+JyxcclxuICBsb2FkaW5nQXZhdGFyOiAnPHN2ZyB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjxwYXRoIGQ9XCJNMTEuNTM0IDdoMy45MzJhLjI1LjI1IDAgMCAxIC4xOTIuNDFsLTEuOTY2IDIuMzZhLjI1LjI1IDAgMCAxLS4zODQgMGwtMS45NjYtMi4zNmEuMjUuMjUgMCAwIDEgLjE5Mi0uNDF6bS0xMSAyaDMuOTMyYS4yNS4yNSAwIDAgMCAuMTkyLS40MUwyLjY5MiA2LjIzYS4yNS4yNSAwIDAgMC0uMzg0IDBMLjM0MiA4LjU5QS4yNS4yNSAwIDAgMCAuNTM0IDl6XCIvPjwvc3ZnPicsXHJcbiAgaW1hZ2VVcGxvYWQ6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PHBhdGggZD1cIk02LjAwMiA1LjVhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6XCIvPjxwYXRoIGQ9XCJNMi4wMDIgMWEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYzYTIgMiAwIDAgMC0yLTJoLTEyem0xMiAxYTEgMSAwIDAgMSAxIDF2Ni41bC0zLjc3Ny0xLjk0N2EuNS41IDAgMCAwLS41NzcuMDkzbC0zLjcxIDMuNzEtMi42Ni0xLjc3MmEuNS41IDAgMCAwLS42My4wNjJMMS4wMDIgMTJWM2ExIDEgMCAwIDEgMS0xaDEyelwiLz48L3N2Zz4nLFxyXG4gIGZpbGVVcGxvYWQ6ICc8c3ZnIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+PHBhdGggZD1cIk0xNCA0LjVWMTRhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yaDUuNUwxNCA0LjV6bS0zIDBBMS41IDEuNSAwIDAgMSA5LjUgM1YxSDRhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxaDhhMSAxIDAgMCAwIDEtMVY0LjVoLTJ6XCIvPjwvc3ZnPidcclxufTtcclxuXHJcbi8qKlxyXG4gKiBHZXQgaWNvbiBjb25maWd1cmF0aW9uIGJ5IHR5cGVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRJY29uU2V0KGljb25TZXRUeXBlOiBJY29uU2V0VHlwZSwgY3VzdG9tSWNvbnM/OiBQYXJ0aWFsPENoYXRJY29uQ29uZmlnPik6IENoYXRJY29uQ29uZmlnIHtcclxuICBsZXQgYmFzZUljb25zOiBDaGF0SWNvbkNvbmZpZztcclxuICBcclxuICBzd2l0Y2ggKGljb25TZXRUeXBlKSB7XHJcbiAgICBjYXNlICdtYXRlcmlhbCc6XHJcbiAgICAgIGJhc2VJY29ucyA9IE1BVEVSSUFMX0lDT05TO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2hlcm9pY29ucyc6XHJcbiAgICAgIGJhc2VJY29ucyA9IEhFUk9JQ09OUztcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdsdWNpZGUnOlxyXG4gICAgICBiYXNlSWNvbnMgPSBMVUNJREVfSUNPTlM7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnYm9vdHN0cmFwJzpcclxuICAgICAgYmFzZUljb25zID0gQk9PVFNUUkFQX0lDT05TO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2N1c3RvbSc6XHJcbiAgICAgIGJhc2VJY29ucyA9IEZFQVRIRVJfSUNPTlM7IC8vIEZhbGxiYWNrIHRvIEZlYXRoZXIgZm9yIG1pc3NpbmcgY3VzdG9tIGljb25zXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnZmVhdGhlcic6XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICBiYXNlSWNvbnMgPSBGRUFUSEVSX0lDT05TO1xyXG4gICAgICBicmVhaztcclxuICB9XHJcbiAgXHJcbiAgLy8gTWVyZ2UgY3VzdG9tIGljb25zIGlmIHByb3ZpZGVkXHJcbiAgcmV0dXJuIGN1c3RvbUljb25zID8geyAuLi5iYXNlSWNvbnMsIC4uLmN1c3RvbUljb25zIH0gOiBiYXNlSWNvbnM7XHJcbn1cclxuIl19
@@ -0,0 +1,86 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpHeaders } from '@angular/common/http';
3
+ import { Observable, throwError } from 'rxjs';
4
+ import { catchError, timeout } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ export class AiAgentService {
8
+ constructor(http) {
9
+ this.http = http;
10
+ this.defaultConfig = {
11
+ apiUrl: 'https://localhost:7237/api/AIAgent',
12
+ timeout: 30000,
13
+ retries: 3
14
+ };
15
+ this.config = Object.assign({}, this.defaultConfig);
16
+ }
17
+ configure(config) {
18
+ this.config = Object.assign(Object.assign({}, this.defaultConfig), config);
19
+ }
20
+ testConfiguration() {
21
+ // For development purposes, simulate a successful connection
22
+ // when the backend is not available
23
+ console.log('Testing configuration at:', `${this.config.apiUrl}/TestConfiguration`);
24
+ const headers = new HttpHeaders(Object.assign({ 'Content-Type': 'application/json' }, (this.config.appKey && { 'x-api-key': this.config.appKey })));
25
+ return this.http.get(`${this.config.apiUrl}/TestConfiguration`, { headers })
26
+ .pipe(timeout(this.config.timeout || 30000), catchError((error) => {
27
+ console.log('Backend API not available, running in demo mode:', error);
28
+ // Return a mock successful response for demo purposes
29
+ return throwError({
30
+ success: false,
31
+ error: 'Backend API not available (Demo Mode)'
32
+ });
33
+ }));
34
+ }
35
+ processInquiry(request) {
36
+ const headers = new HttpHeaders(Object.assign({ 'Content-Type': 'application/json' }, (this.config.appKey && { 'x-api-key': this.config.appKey })));
37
+ return this.http.post(`${this.config.apiUrl}/ProcessInquiry`, request, { headers })
38
+ .pipe(timeout(this.config.timeout || 30000), catchError((error) => {
39
+ console.log('ProcessInquiry API not available, returning demo response:', error);
40
+ // Return a mock response for demo purposes
41
+ const mockResponse = {
42
+ answer: `Demo Mode: I received your query "${request.query}". The backend API is currently not available, but the UI is working correctly!`,
43
+ contents: [{
44
+ content: `Demo Mode: I received your query "${request.query}". The backend API is currently not available, but the UI is working correctly!`,
45
+ role: 'assistant',
46
+ authorName: 'Maestro (Demo)'
47
+ }]
48
+ };
49
+ // Return the mock response as an Observable
50
+ return new Observable(observer => {
51
+ setTimeout(() => {
52
+ observer.next(mockResponse);
53
+ observer.complete();
54
+ }, 1000); // Simulate network delay
55
+ });
56
+ }));
57
+ }
58
+ handleError(error) {
59
+ let errorMessage = 'An error occurred while processing your request.';
60
+ if (error.error instanceof ErrorEvent) {
61
+ // Client-side error
62
+ errorMessage = `Client Error: ${error.error.message}`;
63
+ }
64
+ else {
65
+ // Server-side error
66
+ errorMessage = `Server Error: ${error.status} - ${error.message}`;
67
+ if (error.error && error.error.message) {
68
+ errorMessage += ` - ${error.error.message}`;
69
+ }
70
+ }
71
+ console.error('AiAgentService Error:', error);
72
+ return throwError({
73
+ success: false,
74
+ error: errorMessage
75
+ });
76
+ }
77
+ }
78
+ AiAgentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AiAgentService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
79
+ AiAgentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AiAgentService, providedIn: 'root' });
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AiAgentService, decorators: [{
81
+ type: Injectable,
82
+ args: [{
83
+ providedIn: 'root'
84
+ }]
85
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktYWdlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VtYW5hdGUtYWktY2hhdC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9haS1hZ2VudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLFdBQVcsRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUEwRHJELE1BQU0sT0FBTyxjQUFjO0lBU3pCLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFSbkIsa0JBQWEsR0FBaUI7WUFDN0MsTUFBTSxFQUFFLG9DQUFvQztZQUM1QyxPQUFPLEVBQUUsS0FBSztZQUNkLE9BQU8sRUFBRSxDQUFDO1NBQ1gsQ0FBQztRQUVNLFdBQU0scUJBQXNCLElBQUksQ0FBQyxhQUFhLEVBQUc7SUFFbEIsQ0FBQztJQUV4QyxTQUFTLENBQUMsTUFBNkI7UUFDckMsSUFBSSxDQUFDLE1BQU0sbUNBQVEsSUFBSSxDQUFDLGFBQWEsR0FBSyxNQUFNLENBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsNkRBQTZEO1FBQzdELG9DQUFvQztRQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixDQUFDLENBQUM7UUFFcEYsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLGlCQUM3QixjQUFjLEVBQUUsa0JBQWtCLElBQy9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUM5RCxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQzthQUN4RixJQUFJLENBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxFQUNyQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixPQUFPLENBQUMsR0FBRyxDQUFDLGtEQUFrRCxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXZFLHNEQUFzRDtZQUN0RCxPQUFPLFVBQVUsQ0FBQztnQkFDaEIsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsS0FBSyxFQUFFLHVDQUF1QzthQUM5QixDQUFDLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBMEI7UUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLGlCQUM3QixjQUFjLEVBQUUsa0JBQWtCLElBQy9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUM5RCxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBcUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUM7YUFDcEcsSUFBSSxDQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsRUFDckMsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0REFBNEQsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVqRiwyQ0FBMkM7WUFDM0MsTUFBTSxZQUFZLEdBQXVCO2dCQUN2QyxNQUFNLEVBQUUscUNBQXFDLE9BQU8sQ0FBQyxLQUFLLGlGQUFpRjtnQkFDM0ksUUFBUSxFQUFFLENBQUM7d0JBQ1QsT0FBTyxFQUFFLHFDQUFxQyxPQUFPLENBQUMsS0FBSyxpRkFBaUY7d0JBQzVJLElBQUksRUFBRSxXQUFXO3dCQUNqQixVQUFVLEVBQUUsZ0JBQWdCO3FCQUM3QixDQUFDO2FBQ0gsQ0FBQztZQUVGLDRDQUE0QztZQUM1QyxPQUFPLElBQUksVUFBVSxDQUFxQixRQUFRLENBQUMsRUFBRTtnQkFDbkQsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUM1QixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3RCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtZQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQXdCO1FBQzFDLElBQUksWUFBWSxHQUFHLGtEQUFrRCxDQUFDO1FBRXRFLElBQUksS0FBSyxDQUFDLEtBQUssWUFBWSxVQUFVLEVBQUU7WUFDckMsb0JBQW9CO1lBQ3BCLFlBQVksR0FBRyxpQkFBaUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUN2RDthQUFNO1lBQ0wsb0JBQW9CO1lBQ3BCLFlBQVksR0FBRyxpQkFBaUIsS0FBSyxDQUFDLE1BQU0sTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEUsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO2dCQUN0QyxZQUFZLElBQUksTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQzdDO1NBQ0Y7UUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTlDLE9BQU8sVUFBVSxDQUFDO1lBQ2hCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsS0FBSyxFQUFFLFlBQVk7U0FDSCxDQUFDLENBQUM7SUFDdEIsQ0FBQzs7NEdBN0ZVLGNBQWM7Z0hBQWQsY0FBYyxjQUZiLE1BQU07NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCB0aW1lb3V0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbnF1aXJ5UmVxdWVzdCB7XHJcbiAgaW5xdWlyeTogc3RyaW5nO1xyXG4gIGFkZGl0aW9uYWxJbnB1dHM/OiBzdHJpbmdbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdXBwb3J0Qm90UmVxdWVzdCB7XHJcbiAgcXVlcnk/OiBzdHJpbmc7XHJcbiAgY2hhdEhpc3Rvcnk/OiBTdXBwb3J0Qm90Q2hhdEhpc3RvcnlJdGVtW107XHJcbiAgdXNlcklkPzogc3RyaW5nO1xyXG4gIHVzZXJOYW1lPzogc3RyaW5nO1xyXG4gIGFwcFNvdXJjZT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdXBwb3J0Qm90Q2hhdEhpc3RvcnlJdGVtIHtcclxuICBxdWVyeT86IHN0cmluZztcclxuICByZXNwb25zZT86IFN1cHBvcnRCb3RSZXNwb25zZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdXBwb3J0Qm90UmVzcG9uc2Uge1xyXG4gIGFuc3dlcj86IHN0cmluZztcclxuICBzZWFyY2hJbnRlbnQ/OiBzdHJpbmc7XHJcbiAgY29udGVudHM/OiBDaGF0Q29udGVudFtdO1xyXG4gIHJlZmVyZW5jZXM/OiBLbm93bGVkZ2VCYXNlSXRlbVtdO1xyXG4gIHNlYXJjaERvY3VtZW50cz86IEtub3dsZWRnZUJhc2VJdGVtW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdENvbnRlbnQge1xyXG4gIHJvbGU/OiBzdHJpbmc7XHJcbiAgY29udGVudD86IHN0cmluZztcclxuICBhdXRob3JOYW1lPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEtub3dsZWRnZUJhc2VJdGVtIHtcclxuICBmaWxlVVJMPzogc3RyaW5nO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGNvbnRlbnQ/OiBzdHJpbmc7XHJcbiAgc2NvcmU6IG51bWJlcjtcclxuICBrZXk/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRSZXNwb25zZSB7XHJcbiAgc3VjY2VzczogYm9vbGVhbjtcclxuICByZXN1bHQ/OiBzdHJpbmc7XHJcbiAgZXJyb3I/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWlDaGF0Q29uZmlnIHtcclxuICBhcGlVcmw/OiBzdHJpbmc7XHJcbiAgYXBwS2V5Pzogc3RyaW5nO1xyXG4gIHRpbWVvdXQ/OiBudW1iZXI7XHJcbiAgcmV0cmllcz86IG51bWJlcjtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQWlBZ2VudFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdENvbmZpZzogQWlDaGF0Q29uZmlnID0ge1xyXG4gICAgYXBpVXJsOiAnaHR0cHM6Ly9sb2NhbGhvc3Q6NzIzNy9hcGkvQUlBZ2VudCcsXHJcbiAgICB0aW1lb3V0OiAzMDAwMCxcclxuICAgIHJldHJpZXM6IDNcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGNvbmZpZzogQWlDaGF0Q29uZmlnID0geyAuLi50aGlzLmRlZmF1bHRDb25maWcgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxyXG5cclxuICBjb25maWd1cmUoY29uZmlnOiBQYXJ0aWFsPEFpQ2hhdENvbmZpZz4pOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlnID0geyAuLi50aGlzLmRlZmF1bHRDb25maWcsIC4uLmNvbmZpZyB9O1xyXG4gIH1cclxuXHJcbiAgdGVzdENvbmZpZ3VyYXRpb24oKTogT2JzZXJ2YWJsZTxBZ2VudFJlc3BvbnNlPiB7XHJcbiAgICAvLyBGb3IgZGV2ZWxvcG1lbnQgcHVycG9zZXMsIHNpbXVsYXRlIGEgc3VjY2Vzc2Z1bCBjb25uZWN0aW9uXHJcbiAgICAvLyB3aGVuIHRoZSBiYWNrZW5kIGlzIG5vdCBhdmFpbGFibGVcclxuICAgIGNvbnNvbGUubG9nKCdUZXN0aW5nIGNvbmZpZ3VyYXRpb24gYXQ6JywgYCR7dGhpcy5jb25maWcuYXBpVXJsfS9UZXN0Q29uZmlndXJhdGlvbmApO1xyXG4gICAgXHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgLi4uKHRoaXMuY29uZmlnLmFwcEtleSAmJiB7ICd4LWFwaS1rZXknOiB0aGlzLmNvbmZpZy5hcHBLZXkgfSlcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFnZW50UmVzcG9uc2U+KGAke3RoaXMuY29uZmlnLmFwaVVybH0vVGVzdENvbmZpZ3VyYXRpb25gLCB7IGhlYWRlcnMgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGltZW91dCh0aGlzLmNvbmZpZy50aW1lb3V0IHx8IDMwMDAwKSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0JhY2tlbmQgQVBJIG5vdCBhdmFpbGFibGUsIHJ1bm5pbmcgaW4gZGVtbyBtb2RlOicsIGVycm9yKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8gUmV0dXJuIGEgbW9jayBzdWNjZXNzZnVsIHJlc3BvbnNlIGZvciBkZW1vIHB1cnBvc2VzXHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih7XHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxyXG4gICAgICAgICAgICBlcnJvcjogJ0JhY2tlbmQgQVBJIG5vdCBhdmFpbGFibGUgKERlbW8gTW9kZSknXHJcbiAgICAgICAgICB9IGFzIEFnZW50UmVzcG9uc2UpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzSW5xdWlyeShyZXF1ZXN0OiBTdXBwb3J0Qm90UmVxdWVzdCk6IE9ic2VydmFibGU8U3VwcG9ydEJvdFJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgLi4uKHRoaXMuY29uZmlnLmFwcEtleSAmJiB7ICd4LWFwaS1rZXknOiB0aGlzLmNvbmZpZy5hcHBLZXkgfSlcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxTdXBwb3J0Qm90UmVzcG9uc2U+KGAke3RoaXMuY29uZmlnLmFwaVVybH0vUHJvY2Vzc0lucXVpcnlgLCByZXF1ZXN0LCB7IGhlYWRlcnMgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGltZW91dCh0aGlzLmNvbmZpZy50aW1lb3V0IHx8IDMwMDAwKSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ1Byb2Nlc3NJbnF1aXJ5IEFQSSBub3QgYXZhaWxhYmxlLCByZXR1cm5pbmcgZGVtbyByZXNwb25zZTonLCBlcnJvcik7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIFJldHVybiBhIG1vY2sgcmVzcG9uc2UgZm9yIGRlbW8gcHVycG9zZXNcclxuICAgICAgICAgIGNvbnN0IG1vY2tSZXNwb25zZTogU3VwcG9ydEJvdFJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICBhbnN3ZXI6IGBEZW1vIE1vZGU6IEkgcmVjZWl2ZWQgeW91ciBxdWVyeSBcIiR7cmVxdWVzdC5xdWVyeX1cIi4gVGhlIGJhY2tlbmQgQVBJIGlzIGN1cnJlbnRseSBub3QgYXZhaWxhYmxlLCBidXQgdGhlIFVJIGlzIHdvcmtpbmcgY29ycmVjdGx5IWAsXHJcbiAgICAgICAgICAgIGNvbnRlbnRzOiBbe1xyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IGBEZW1vIE1vZGU6IEkgcmVjZWl2ZWQgeW91ciBxdWVyeSBcIiR7cmVxdWVzdC5xdWVyeX1cIi4gVGhlIGJhY2tlbmQgQVBJIGlzIGN1cnJlbnRseSBub3QgYXZhaWxhYmxlLCBidXQgdGhlIFVJIGlzIHdvcmtpbmcgY29ycmVjdGx5IWAsXHJcbiAgICAgICAgICAgICAgcm9sZTogJ2Fzc2lzdGFudCcsXHJcbiAgICAgICAgICAgICAgYXV0aG9yTmFtZTogJ01hZXN0cm8gKERlbW8pJ1xyXG4gICAgICAgICAgICB9XVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8gUmV0dXJuIHRoZSBtb2NrIHJlc3BvbnNlIGFzIGFuIE9ic2VydmFibGVcclxuICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxTdXBwb3J0Qm90UmVzcG9uc2U+KG9ic2VydmVyID0+IHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChtb2NrUmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH0sIDEwMDApOyAvLyBTaW11bGF0ZSBuZXR3b3JrIGRlbGF5XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiBPYnNlcnZhYmxlPEFnZW50UmVzcG9uc2U+IHtcclxuICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyB5b3VyIHJlcXVlc3QuJztcclxuICAgIFxyXG4gICAgaWYgKGVycm9yLmVycm9yIGluc3RhbmNlb2YgRXJyb3JFdmVudCkge1xyXG4gICAgICAvLyBDbGllbnQtc2lkZSBlcnJvclxyXG4gICAgICBlcnJvck1lc3NhZ2UgPSBgQ2xpZW50IEVycm9yOiAke2Vycm9yLmVycm9yLm1lc3NhZ2V9YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIFNlcnZlci1zaWRlIGVycm9yXHJcbiAgICAgIGVycm9yTWVzc2FnZSA9IGBTZXJ2ZXIgRXJyb3I6ICR7ZXJyb3Iuc3RhdHVzfSAtICR7ZXJyb3IubWVzc2FnZX1gO1xyXG4gICAgICBpZiAoZXJyb3IuZXJyb3IgJiYgZXJyb3IuZXJyb3IubWVzc2FnZSkge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZSArPSBgIC0gJHtlcnJvci5lcnJvci5tZXNzYWdlfWA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLmVycm9yKCdBaUFnZW50U2VydmljZSBFcnJvcjonLCBlcnJvcik7XHJcbiAgICBcclxuICAgIHJldHVybiB0aHJvd0Vycm9yKHtcclxuICAgICAgc3VjY2VzczogZmFsc2UsXHJcbiAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2VcclxuICAgIH0gYXMgQWdlbnRSZXNwb25zZSk7XHJcbiAgfVxyXG59Il19
@@ -0,0 +1,12 @@
1
+ /*
2
+ * Public API Surface of emanate-ai-chat-lib
3
+ */
4
+ export * from './lib/emanate-ai-chat-lib.service';
5
+ export * from './lib/emanate-ai-chat-lib.component';
6
+ export * from './lib/emanate-ai-chat-lib.module';
7
+ // Export the main AI Chat component and service
8
+ export * from './lib/components/ai-chat.component';
9
+ export * from './lib/services/ai-agent.service';
10
+ // Export icon configuration
11
+ export * from './lib/models/icon-config.interface';
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2VtYW5hdGUtYWktY2hhdC1saWIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUVqRCxnREFBZ0Q7QUFDaEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGlDQUFpQyxDQUFDO0FBRWhELDRCQUE0QjtBQUM1QixjQUFjLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGVtYW5hdGUtYWktY2hhdC1saWJcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbWFuYXRlLWFpLWNoYXQtbGliLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbWFuYXRlLWFpLWNoYXQtbGliLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VtYW5hdGUtYWktY2hhdC1saWIubW9kdWxlJztcclxuXHJcbi8vIEV4cG9ydCB0aGUgbWFpbiBBSSBDaGF0IGNvbXBvbmVudCBhbmQgc2VydmljZVxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FpLWNoYXQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvYWktYWdlbnQuc2VydmljZSc7XHJcblxyXG4vLyBFeHBvcnQgaWNvbiBjb25maWd1cmF0aW9uXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9pY29uLWNvbmZpZy5pbnRlcmZhY2UnO1xyXG4iXX0=