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.
- package/README.md +409 -0
- package/bundles/emanate-ai-chat-lib.umd.js +1545 -0
- package/bundles/emanate-ai-chat-lib.umd.js.map +1 -0
- package/emanate-ai-chat-lib.d.ts +5 -0
- package/esm2015/emanate-ai-chat-lib.js +5 -0
- package/esm2015/lib/components/ai-chat.component.js +706 -0
- package/esm2015/lib/emanate-ai-chat-lib.component.js +26 -0
- package/esm2015/lib/emanate-ai-chat-lib.module.js +45 -0
- package/esm2015/lib/emanate-ai-chat-lib.service.js +14 -0
- package/esm2015/lib/models/icon-config.interface.js +113 -0
- package/esm2015/lib/services/ai-agent.service.js +86 -0
- package/esm2015/public-api.js +12 -0
- package/fesm2015/emanate-ai-chat-lib.js +985 -0
- package/fesm2015/emanate-ai-chat-lib.js.map +1 -0
- package/lib/components/ai-chat.component.d.ts +131 -0
- package/lib/emanate-ai-chat-lib.component.d.ts +8 -0
- package/lib/emanate-ai-chat-lib.module.d.ts +11 -0
- package/lib/emanate-ai-chat-lib.service.d.ts +6 -0
- package/lib/models/icon-config.interface.d.ts +45 -0
- package/lib/services/ai-agent.service.d.ts +60 -0
- package/package.json +38 -0
- package/public-api.d.ts +6 -0
|
@@ -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=
|