@hivegpt/hiveai-angular 0.0.589 → 0.0.590
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 +26 -0
- package/bundles/hivegpt-hiveai-angular.umd.js +3146 -534
- package/bundles/hivegpt-hiveai-angular.umd.js.map +1 -1
- package/bundles/hivegpt-hiveai-angular.umd.min.js +1 -1
- package/bundles/hivegpt-hiveai-angular.umd.min.js.map +1 -1
- package/esm2015/hivegpt-hiveai-angular.js +6 -5
- package/esm2015/lib/components/NotificationSocket.js +29 -22
- package/esm2015/lib/components/bot.service.js +18 -12
- package/esm2015/lib/components/chat-drawer/chat-drawer.component.js +2429 -214
- package/esm2015/lib/components/chatbot/chatbot.component.js +9 -5
- package/esm2015/lib/components/conversation.service.js +13 -5
- package/esm2015/lib/components/socket-service.service.js +21 -11
- package/esm2015/lib/components/translations/translation.service.js +38 -36
- package/esm2015/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.js +46 -35
- package/esm2015/lib/components/voice-agent/services/audio-analyzer.service.js +11 -5
- package/esm2015/lib/components/voice-agent/services/voice-agent.service.js +226 -151
- package/esm2015/lib/components/voice-agent/voice-agent.module.js +6 -2
- package/esm2015/lib/components/voice-agent/voice-modal-tokens.js +1 -1
- package/esm2015/lib/services/platform-token-refresh.service.js +173 -0
- package/esm2015/lib/utils/utils.js +4 -2
- package/esm2015/public-api.js +2 -3
- package/fesm2015/hivegpt-hiveai-angular.js +2996 -486
- package/fesm2015/hivegpt-hiveai-angular.js.map +1 -1
- package/hivegpt-hiveai-angular.d.ts +5 -4
- package/hivegpt-hiveai-angular.d.ts.map +1 -1
- package/hivegpt-hiveai-angular.metadata.json +1 -1
- package/lib/components/NotificationSocket.d.ts +1 -3
- package/lib/components/NotificationSocket.d.ts.map +1 -1
- package/lib/components/bot.service.d.ts +1 -2
- package/lib/components/bot.service.d.ts.map +1 -1
- package/lib/components/chat-drawer/chat-drawer.component.d.ts +285 -52
- package/lib/components/chat-drawer/chat-drawer.component.d.ts.map +1 -1
- package/lib/components/chatbot/chatbot.component.d.ts +8 -1
- package/lib/components/chatbot/chatbot.component.d.ts.map +1 -1
- package/lib/components/conversation.service.d.ts +8 -2
- package/lib/components/conversation.service.d.ts.map +1 -1
- package/lib/components/socket-service.service.d.ts +3 -4
- package/lib/components/socket-service.service.d.ts.map +1 -1
- package/lib/components/translations/translation.service.d.ts.map +1 -1
- package/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.d.ts +15 -6
- package/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.d.ts.map +1 -1
- package/lib/components/voice-agent/services/audio-analyzer.service.d.ts +5 -0
- package/lib/components/voice-agent/services/audio-analyzer.service.d.ts.map +1 -1
- package/lib/components/voice-agent/services/voice-agent.service.d.ts +39 -10
- package/lib/components/voice-agent/services/voice-agent.service.d.ts.map +1 -1
- package/lib/components/voice-agent/voice-agent.module.d.ts +4 -0
- package/lib/components/voice-agent/voice-agent.module.d.ts.map +1 -1
- package/lib/components/voice-agent/voice-modal-tokens.d.ts +4 -0
- package/lib/components/voice-agent/voice-modal-tokens.d.ts.map +1 -1
- package/lib/services/platform-token-refresh.service.d.ts +59 -0
- package/lib/services/platform-token-refresh.service.d.ts.map +1 -0
- package/lib/utils/utils.d.ts +1 -1
- package/lib/utils/utils.d.ts.map +1 -1
- package/package.json +4 -2
- package/public-api.d.ts +1 -2
- package/public-api.d.ts.map +1 -1
- package/esm2015/lib/models/chat.js +0 -2
- package/lib/models/chat.d.ts +0 -134
- package/lib/models/chat.d.ts.map +0 -1
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
* Generated bundle index. Do not edit.
|
|
3
3
|
*/
|
|
4
4
|
export * from './public-api';
|
|
5
|
-
export {
|
|
5
|
+
export { NotificationSocket as ɵd } from './lib/components/NotificationSocket';
|
|
6
|
+
export { BotHtmlEditorComponent as ɵh } from './lib/components/bot-html-editor/bot-html-editor.component';
|
|
6
7
|
export { BotsService as ɵa } from './lib/components/bot.service';
|
|
7
8
|
export { ConversationService as ɵc } from './lib/components/conversation.service';
|
|
8
9
|
export { SocketService as ɵb } from './lib/components/socket-service.service';
|
|
9
|
-
export { TranslationService as
|
|
10
|
-
export { VideoPlayerComponent as
|
|
11
|
-
export { SafeHtmlPipe as
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
export { TranslationService as ɵe } from './lib/components/translations/translation.service';
|
|
11
|
+
export { VideoPlayerComponent as ɵf } from './lib/components/video-player/video-player.component';
|
|
12
|
+
export { SafeHtmlPipe as ɵg } from './lib/pipes/safe-html.pipe';
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl2ZWdwdC1oaXZlYWktYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvcm9oaXR0aGFrdXIvaGl2ZS1ncHQvSGl2ZUFJLVBhY2thZ2VzL0FuZ3VsYXIvcHJvamVjdHMvaGl2ZWdwdC9ldmVudHNncHQtYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJoaXZlZ3B0LWhpdmVhaS1hbmd1bGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLGtCQUFrQixJQUFJLEVBQUUsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxzQkFBc0IsSUFBSSxFQUFFLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUN4RyxPQUFPLEVBQUMsV0FBVyxJQUFJLEVBQUUsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUMsYUFBYSxJQUFJLEVBQUUsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUMzRixPQUFPLEVBQUMsb0JBQW9CLElBQUksRUFBRSxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDaEcsT0FBTyxFQUFDLFlBQVksSUFBSSxFQUFFLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcblxuZXhwb3J0IHtOb3RpZmljYXRpb25Tb2NrZXQgYXMgybVkfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL05vdGlmaWNhdGlvblNvY2tldCc7XG5leHBvcnQge0JvdEh0bWxFZGl0b3JDb21wb25lbnQgYXMgybVofSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JvdC1odG1sLWVkaXRvci9ib3QtaHRtbC1lZGl0b3IuY29tcG9uZW50JztcbmV4cG9ydCB7Qm90c1NlcnZpY2UgYXMgybVhfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JvdC5zZXJ2aWNlJztcbmV4cG9ydCB7Q29udmVyc2F0aW9uU2VydmljZSBhcyDJtWN9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29udmVyc2F0aW9uLnNlcnZpY2UnO1xuZXhwb3J0IHtTb2NrZXRTZXJ2aWNlIGFzIMm1Yn0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9zb2NrZXQtc2VydmljZS5zZXJ2aWNlJztcbmV4cG9ydCB7VHJhbnNsYXRpb25TZXJ2aWNlIGFzIMm1ZX0gZnJvbSAnLi9saWIvY29tcG9uZW50cy90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb24uc2VydmljZSc7XG5leHBvcnQge1ZpZGVvUGxheWVyQ29tcG9uZW50IGFzIMm1Zn0gZnJvbSAnLi9saWIvY29tcG9uZW50cy92aWRlby1wbGF5ZXIvdmlkZW8tcGxheWVyLmNvbXBvbmVudCc7XG5leHBvcnQge1NhZmVIdG1sUGlwZSBhcyDJtWd9IGZyb20gJy4vbGliL3BpcGVzL3NhZmUtaHRtbC5waXBlJzsiXX0=
|
|
@@ -1,32 +1,39 @@
|
|
|
1
|
-
import { Injectable
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
2
|
import { Socket } from 'ngx-socket-io';
|
|
3
3
|
import { prod_environment } from '../../environments/environment';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
export const SOCKET_URL_TOKEN = new InjectionToken('SOCKET_URL');
|
|
6
5
|
export class NotificationSocket extends Socket {
|
|
7
|
-
constructor(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
};
|
|
20
|
-
super(config);
|
|
6
|
+
constructor() {
|
|
7
|
+
super(socketConfig);
|
|
8
|
+
// Log connection status
|
|
9
|
+
this.on('connect', () => {
|
|
10
|
+
console.log('Socket connected');
|
|
11
|
+
});
|
|
12
|
+
this.on('disconnect', () => {
|
|
13
|
+
console.warn('Socket disconnected');
|
|
14
|
+
});
|
|
15
|
+
this.on('connect_error', (err) => {
|
|
16
|
+
console.error('Socket connection error:', err);
|
|
17
|
+
});
|
|
21
18
|
}
|
|
22
19
|
}
|
|
23
|
-
NotificationSocket.ɵprov = i0.ɵɵdefineInjectable({ factory: function NotificationSocket_Factory() { return new NotificationSocket(
|
|
20
|
+
NotificationSocket.ɵprov = i0.ɵɵdefineInjectable({ factory: function NotificationSocket_Factory() { return new NotificationSocket(); }, token: NotificationSocket, providedIn: "root" });
|
|
24
21
|
NotificationSocket.decorators = [
|
|
25
22
|
{ type: Injectable, args: [{
|
|
26
|
-
providedIn: 'root'
|
|
23
|
+
providedIn: 'root' // This ensures the service is available across the application
|
|
27
24
|
},] }
|
|
28
25
|
];
|
|
29
|
-
NotificationSocket.ctorParameters = () => [
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
NotificationSocket.ctorParameters = () => [];
|
|
27
|
+
const socketConfig = {
|
|
28
|
+
url: prod_environment.SocketUrl,
|
|
29
|
+
options: {
|
|
30
|
+
transports: ['websocket', 'polling'],
|
|
31
|
+
reconnection: true,
|
|
32
|
+
autoConnect: true,
|
|
33
|
+
upgrade: true,
|
|
34
|
+
reconnectionDelay: 1000,
|
|
35
|
+
reconnectionDelayMax: 5000,
|
|
36
|
+
reconnectionAttempts: Infinity
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm90aWZpY2F0aW9uU29ja2V0LmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9yb2hpdHRoYWt1ci9oaXZlLWdwdC9IaXZlQUktUGFja2FnZXMvQW5ndWxhci9wcm9qZWN0cy9oaXZlZ3B0L2V2ZW50c2dwdC1hbmd1bGFyL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL05vdGlmaWNhdGlvblNvY2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUtsRSxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsTUFBTTtJQUM1QztRQUNFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVwQix3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtZQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQy9CLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7O1lBbkJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTSxDQUFFLCtEQUErRDthQUNwRjs7O0FBb0JELE1BQU0sWUFBWSxHQUFtQjtJQUNuQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsU0FBUztJQUMvQixPQUFPLEVBQUU7UUFDUCxVQUFVLEVBQUUsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDO1FBQ3BDLFlBQVksRUFBRSxJQUFJO1FBQ2xCLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsaUJBQWlCLEVBQUUsSUFBSTtRQUN2QixvQkFBb0IsRUFBRSxJQUFJO1FBQzFCLG9CQUFvQixFQUFFLFFBQVE7S0FDL0I7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU29ja2V0LCBTb2NrZXRJb0NvbmZpZyB9IGZyb20gJ25neC1zb2NrZXQtaW8nO1xuaW1wb3J0IHsgcHJvZF9lbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnICAvLyBUaGlzIGVuc3VyZXMgdGhlIHNlcnZpY2UgaXMgYXZhaWxhYmxlIGFjcm9zcyB0aGUgYXBwbGljYXRpb25cbn0pXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uU29ja2V0IGV4dGVuZHMgU29ja2V0IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoc29ja2V0Q29uZmlnKTtcblxuICAgIC8vIExvZyBjb25uZWN0aW9uIHN0YXR1c1xuICAgIHRoaXMub24oJ2Nvbm5lY3QnLCAoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnU29ja2V0IGNvbm5lY3RlZCcpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vbignZGlzY29ubmVjdCcsICgpID0+IHtcbiAgICAgIGNvbnNvbGUud2FybignU29ja2V0IGRpc2Nvbm5lY3RlZCcpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vbignY29ubmVjdF9lcnJvcicsIChlcnIpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1NvY2tldCBjb25uZWN0aW9uIGVycm9yOicsIGVycik7XG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3Qgc29ja2V0Q29uZmlnOiBTb2NrZXRJb0NvbmZpZyA9IHtcbiAgdXJsOiBwcm9kX2Vudmlyb25tZW50LlNvY2tldFVybCxcbiAgb3B0aW9uczoge1xuICAgIHRyYW5zcG9ydHM6IFsnd2Vic29ja2V0JywgJ3BvbGxpbmcnXSxcbiAgICByZWNvbm5lY3Rpb246IHRydWUsXG4gICAgYXV0b0Nvbm5lY3Q6IHRydWUsXG4gICAgdXBncmFkZTogdHJ1ZSxcbiAgICByZWNvbm5lY3Rpb25EZWxheTogMTAwMCxcbiAgICByZWNvbm5lY3Rpb25EZWxheU1heDogNTAwMCxcbiAgICByZWNvbm5lY3Rpb25BdHRlbXB0czogSW5maW5pdHlcbiAgfVxufTsiXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { HttpClient
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
3
|
import { map } from 'rxjs/operators';
|
|
4
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
4
5
|
import { Subject } from 'rxjs';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "@angular/common/http";
|
|
@@ -8,10 +9,7 @@ export class BotsService {
|
|
|
8
9
|
constructor(http) {
|
|
9
10
|
this.http = http;
|
|
10
11
|
this.eventDescription = new Subject();
|
|
11
|
-
this.bot_api = '';
|
|
12
|
-
}
|
|
13
|
-
setBaseUrl(url) {
|
|
14
|
-
this.bot_api = url.replace(/\/$/, '') + '/';
|
|
12
|
+
this.bot_api = 'https://agent-api.hivegpt.ai/';
|
|
15
13
|
}
|
|
16
14
|
fetchSpeechAuthorizationToken(botId, apiKey, domain) {
|
|
17
15
|
const headers = new HttpHeaders({
|
|
@@ -20,16 +18,24 @@ export class BotsService {
|
|
|
20
18
|
'hive-bot-id': botId,
|
|
21
19
|
'domain-authority': domain
|
|
22
20
|
});
|
|
23
|
-
const
|
|
24
|
-
|
|
21
|
+
const apiUrl = `${this.bot_api}speech/issue_token`;
|
|
22
|
+
const url = `${apiUrl}`;
|
|
23
|
+
return this.http.get(url, { headers }).pipe(map((resp) => {
|
|
24
|
+
return resp.token;
|
|
25
|
+
}));
|
|
25
26
|
}
|
|
26
27
|
getWorkflowsByOrgId(orgId) {
|
|
27
|
-
const
|
|
28
|
-
|
|
28
|
+
const apiUrl = `${this.bot_api}workflows`;
|
|
29
|
+
const url = `${apiUrl}?org_id=${orgId}`;
|
|
30
|
+
return this.http.get(url).pipe(map((resp) => {
|
|
31
|
+
return resp;
|
|
32
|
+
}));
|
|
29
33
|
}
|
|
30
34
|
getWorkflowExecutionById(executionId) {
|
|
31
|
-
const
|
|
32
|
-
return this.http.get(
|
|
35
|
+
const apiUrl = `${this.bot_api}workflows/execution/${executionId}`;
|
|
36
|
+
return this.http.get(apiUrl).pipe(map((resp) => {
|
|
37
|
+
return resp;
|
|
38
|
+
}));
|
|
33
39
|
}
|
|
34
40
|
}
|
|
35
41
|
BotsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function BotsService_Factory() { return new BotsService(i0.ɵɵinject(i1.HttpClient)); }, token: BotsService, providedIn: "root" });
|
|
@@ -41,4 +47,4 @@ BotsService.decorators = [
|
|
|
41
47
|
BotsService.ctorParameters = () => [
|
|
42
48
|
{ type: HttpClient }
|
|
43
49
|
];
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL3JvaGl0dGhha3VyL2hpdmUtZ3B0L0hpdmVBSS1QYWNrYWdlcy9Bbmd1bGFyL3Byb2plY3RzL2hpdmVncHQvZXZlbnRzZ3B0LWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYm90LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFLM0MsTUFBTSxPQUFPLFdBQVc7SUFHcEIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUZwQyxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLFlBQU8sR0FBRywrQkFBK0IsQ0FBQztJQUNGLENBQUM7SUFFekMsNkJBQTZCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDO1lBQzVCLGNBQWMsRUFBRSxrQkFBa0I7WUFDbEMsV0FBVyxFQUFFLE1BQU07WUFDbkIsYUFBYSxFQUFFLEtBQUs7WUFDcEIsa0JBQWtCLEVBQUUsTUFBTTtTQUM3QixDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLG9CQUFvQixDQUFDO1FBQ25ELE1BQU0sR0FBRyxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDdkMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFhO1FBQzdCLE1BQU0sTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sV0FBVyxDQUFDO1FBQzFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsTUFBTSxXQUFXLEtBQUssRUFBRSxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMxQixHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQsd0JBQXdCLENBQUMsV0FBbUI7UUFDeEMsTUFBTSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyx1QkFBdUIsV0FBVyxFQUFFLENBQUM7UUFDbkUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQzdCLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ2QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7Ozs7WUExQ0osVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOzs7WUFUUSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEJvdHNTZXJ2aWNlIHtcbiAgICBldmVudERlc2NyaXB0aW9uID0gbmV3IFN1YmplY3QoKTtcbiAgICBib3RfYXBpID0gJ2h0dHBzOi8vYWdlbnQtYXBpLmhpdmVncHQuYWkvJztcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHsgfVxuXG4gICAgZmV0Y2hTcGVlY2hBdXRob3JpemF0aW9uVG9rZW4oYm90SWQsIGFwaUtleSwgZG9tYWluKSB7XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICd4LWFwaS1rZXknOiBhcGlLZXksXG4gICAgICAgICAgICAnaGl2ZS1ib3QtaWQnOiBib3RJZCxcbiAgICAgICAgICAgICdkb21haW4tYXV0aG9yaXR5JzogZG9tYWluXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuYm90X2FwaX1zcGVlY2gvaXNzdWVfdG9rZW5gO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHthcGlVcmx9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7IGhlYWRlcnMgfSkucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3AudG9rZW47XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldFdvcmtmbG93c0J5T3JnSWQob3JnSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuYm90X2FwaX13b3JrZmxvd3NgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHthcGlVcmx9P29yZ19pZD0ke29yZ0lkfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCkucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3A7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldFdvcmtmbG93RXhlY3V0aW9uQnlJZChleGVjdXRpb25JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgY29uc3QgYXBpVXJsID0gYCR7dGhpcy5ib3RfYXBpfXdvcmtmbG93cy9leGVjdXRpb24vJHtleGVjdXRpb25JZH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChhcGlVcmwpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59Il19
|