@hivegpt/hiveai-angular 0.0.593 → 0.0.596
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/environments/environment.d.ts.map +1 -1
- package/esm2020/environments/environment.mjs +15 -0
- package/esm2020/hivegpt-hiveai-angular.mjs +5 -0
- package/esm2020/lib/components/NotificationSocket.mjs +45 -0
- package/esm2020/lib/components/bot-html-editor/bot-html-editor.component.mjs +113 -0
- package/esm2020/lib/components/bot.service.mjs +45 -0
- package/esm2020/lib/components/chat-drawer/chat-drawer.component.mjs +3904 -0
- package/esm2020/lib/components/chatbot/chatbot.component.mjs +95 -0
- package/esm2020/lib/components/conversation.service.mjs +58 -0
- package/esm2020/lib/components/socket-service.service.mjs +65 -0
- package/esm2020/lib/components/translations/translation.service.mjs +244 -0
- package/esm2020/lib/components/video-player/video-player.component.mjs +131 -0
- package/esm2020/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.mjs +187 -0
- package/esm2020/lib/components/voice-agent/services/audio-analyzer.service.mjs +127 -0
- package/esm2020/lib/components/voice-agent/services/voice-agent.service.mjs +352 -0
- package/esm2020/lib/components/voice-agent/voice-agent.module.mjs +37 -0
- package/esm2020/lib/components/voice-agent/voice-modal-tokens.mjs +4 -0
- package/esm2020/lib/hivegpt.module.mjs +28 -0
- package/esm2020/lib/models/video.mjs +2 -0
- package/esm2020/lib/pipes/safe-html.pipe.mjs +20 -0
- package/esm2020/lib/services/platform-token-refresh.service.mjs +177 -0
- package/esm2020/lib/utils/utils.mjs +36 -0
- package/esm2020/public-api.mjs +15 -0
- package/fesm2015/hivegpt-hiveai-angular.mjs +5605 -0
- package/fesm2015/hivegpt-hiveai-angular.mjs.map +1 -0
- package/fesm2020/hivegpt-hiveai-angular.mjs +5606 -0
- package/fesm2020/hivegpt-hiveai-angular.mjs.map +1 -0
- package/hivegpt-hiveai-angular.d.ts.map +1 -1
- package/index.d.ts +6 -0
- package/lib/components/NotificationSocket.d.ts +6 -1
- package/lib/components/NotificationSocket.d.ts.map +1 -1
- package/lib/components/bot-html-editor/bot-html-editor.component.d.ts +3 -0
- package/lib/components/bot-html-editor/bot-html-editor.component.d.ts.map +1 -1
- package/lib/components/bot.service.d.ts +5 -1
- package/lib/components/bot.service.d.ts.map +1 -1
- package/lib/components/chat-drawer/chat-drawer.component.d.ts +7 -3
- package/lib/components/chat-drawer/chat-drawer.component.d.ts.map +1 -1
- package/lib/components/chatbot/chatbot.component.d.ts +3 -0
- package/lib/components/chatbot/chatbot.component.d.ts.map +1 -1
- package/lib/components/conversation.service.d.ts +3 -0
- package/lib/components/conversation.service.d.ts.map +1 -1
- package/lib/components/socket-service.service.d.ts +7 -3
- package/lib/components/socket-service.service.d.ts.map +1 -1
- package/lib/components/translations/translation.service.d.ts +3 -0
- package/lib/components/translations/translation.service.d.ts.map +1 -1
- package/lib/components/video-player/video-player.component.d.ts +3 -0
- package/lib/components/video-player/video-player.component.d.ts.map +1 -1
- package/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.d.ts +3 -0
- 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 +3 -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 +4 -1
- package/lib/components/voice-agent/services/voice-agent.service.d.ts.map +1 -1
- package/lib/components/voice-agent/voice-agent.module.d.ts +6 -0
- package/lib/components/voice-agent/voice-agent.module.d.ts.map +1 -1
- package/lib/components/voice-agent/voice-modal-tokens.d.ts.map +1 -1
- package/lib/hivegpt.module.d.ts +16 -0
- package/lib/hivegpt.module.d.ts.map +1 -1
- package/lib/models/video.d.ts.map +1 -1
- package/lib/pipes/safe-html.pipe.d.ts +3 -0
- package/lib/pipes/safe-html.pipe.d.ts.map +1 -1
- package/lib/services/platform-token-refresh.service.d.ts +3 -0
- package/lib/services/platform-token-refresh.service.d.ts.map +1 -1
- package/lib/utils/utils.d.ts.map +1 -1
- package/package.json +24 -12
- package/public-api.d.ts +2 -0
- package/public-api.d.ts.map +1 -1
- package/bundles/hivegpt-hiveai-angular.umd.js +0 -6285
- package/bundles/hivegpt-hiveai-angular.umd.js.map +0 -1
- package/bundles/hivegpt-hiveai-angular.umd.min.js +0 -2
- package/bundles/hivegpt-hiveai-angular.umd.min.js.map +0 -1
- package/esm2015/environments/environment.js +0 -15
- package/esm2015/hivegpt-hiveai-angular.js +0 -13
- package/esm2015/lib/components/NotificationSocket.js +0 -39
- package/esm2015/lib/components/bot-html-editor/bot-html-editor.component.js +0 -112
- package/esm2015/lib/components/bot.service.js +0 -50
- package/esm2015/lib/components/chat-drawer/chat-drawer.component.js +0 -3809
- package/esm2015/lib/components/chatbot/chatbot.component.js +0 -57
- package/esm2015/lib/components/conversation.service.js +0 -57
- package/esm2015/lib/components/socket-service.service.js +0 -79
- package/esm2015/lib/components/translations/translation.service.js +0 -244
- package/esm2015/lib/components/video-player/video-player.component.js +0 -123
- package/esm2015/lib/components/voice-agent/components/voice-agent-modal/voice-agent-modal.component.js +0 -192
- package/esm2015/lib/components/voice-agent/services/audio-analyzer.service.js +0 -125
- package/esm2015/lib/components/voice-agent/services/voice-agent.service.js +0 -364
- package/esm2015/lib/components/voice-agent/voice-agent.module.js +0 -29
- package/esm2015/lib/components/voice-agent/voice-modal-tokens.js +0 -4
- package/esm2015/lib/hivegpt.module.js +0 -23
- package/esm2015/lib/models/video.js +0 -2
- package/esm2015/lib/pipes/safe-html.pipe.js +0 -19
- package/esm2015/lib/services/platform-token-refresh.service.js +0 -173
- package/esm2015/lib/utils/utils.js +0 -38
- package/esm2015/public-api.js +0 -13
- package/fesm2015/hivegpt-hiveai-angular.js +0 -5484
- package/fesm2015/hivegpt-hiveai-angular.js.map +0 -1
- package/hivegpt-hiveai-angular.d.ts +0 -13
- package/hivegpt-hiveai-angular.metadata.json +0 -1
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@angular/material/icon";
|
|
5
|
+
import * as i3 from "../chat-drawer/chat-drawer.component";
|
|
6
|
+
export class ChatBotComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.tokensRefreshed = new EventEmitter();
|
|
9
|
+
this.visible = false;
|
|
10
|
+
}
|
|
11
|
+
toggle() {
|
|
12
|
+
this.visible = !this.visible;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
ChatBotComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ChatBotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16
|
+
ChatBotComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ChatBotComponent, selector: "hivegpt-chatbot", inputs: { userId: "userId", userAvatarUrl: "userAvatarUrl", timezone: "timezone", apiKey: "apiKey", botName: "botName", botSkills: "botSkills", botId: "botId", closeButtonColor: "closeButtonColor", gradientColors: "gradientColors", greeting: "greeting", sendButtonColor: "sendButtonColor", useOpenAi: "useOpenAi", showClose: "showClose", bgGradient: "bgGradient", sendButtonTextColor: "sendButtonTextColor", fullView: "fullView", bgBubbleAi: "bgBubbleAi", bgBubbleUser: "bgBubbleUser", closeButtonbgColor: "closeButtonbgColor", messageTextColorAi: "messageTextColorAi", messageTextColorUser: "messageTextColorUser", dateTimeColor: "dateTimeColor", dateTextColor: "dateTextColor", formFieldBgColor: "formFieldBgColor", formFieldTextColor: "formFieldTextColor", thumbsUpMessage: "thumbsUpMessage", thumbsDownMessages: "thumbsDownMessages", eventName: "eventName", credentials: "credentials", unknownResponses: "unknownResponses", rules: "rules", eventId: "eventId", s27Token: "s27Token", workspaceToken: "workspaceToken", isDev: "isDev", baseUrl: "baseUrl" }, outputs: { tokensRefreshed: "tokensRefreshed" }, ngImport: i0, template: "<button mat-icon-button class=\"chat-button\" color=\"primary\" (click)=\"toggle()\">\n <mat-icon>chat</mat-icon>\n</button>\n\n<ng-container *ngIf=\"visible\">\n <hivegpt-chat-drawer-package\n [apiKey]=\"apiKey\"\n [bgBubbleAi]=\"bgBubbleAi\"\n [bgBubbleUser]=\"bgBubbleUser\"\n [bgGradient]=\"bgGradient\"\n [botName]=\"botName\"\n [closeButtonbgColor]=\"closeButtonbgColor\"\n [closeButtonColor]=\"closeButtonColor\"\n [credentials]=\"credentials\"\n [dateTextColor]=\"dateTextColor\"\n [dateTimeColor]=\"dateTimeColor\"\n [eventId]=\"eventId\"\n [eventName]=\"eventName\"\n [formFieldBgColor]=\"formFieldBgColor\"\n [formFieldTextColor]=\"formFieldTextColor\"\n [fullView]=\"fullView\"\n [greeting]=\"greeting\"\n [gradientColors]=\"gradientColors\"\n [messageTextColorAi]=\"messageTextColorAi\"\n [messageTextColorUser]=\"messageTextColorUser\"\n [sendButtonColor]=\"sendButtonColor\"\n [sendButtonTextColor]=\"sendButtonTextColor\"\n [showClose]=\"showClose\"\n [thumbsDownMessages]=\"thumbsDownMessages\"\n [thumbsUpMessage]=\"thumbsUpMessage\"\n [unknownResponses]=\"unknownResponses\"\n [useOpenAi]=\"useOpenAi\"\n [userId]=\"userId\"\n [userAvatarUrl]=\"userAvatarUrl\"\n [timezone]=\"timezone\"\n [botId]=\"botId\"\n [s27Token]=\"s27Token\"\n (tokensRefreshed)=\"tokensRefreshed.emit($event)\"\n [workspaceToken]=\"workspaceToken\"\n [isDev]=\"isDev\"\n [baseUrl]=\"baseUrl\"\n >\n </hivegpt-chat-drawer-package>\n</ng-container>\n", styles: ["::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#e5ccbc}::-webkit-scrollbar-thumb:hover{background:#e5ccbc}.spinner{display:flex;align-items:center;justify-content:center;gap:2px}.spinner>div{width:5px;height:5px;background-color:#173330;border-radius:100%;display:inline-block;animation:bouncedelay 1.4s ease-in-out infinite;animation-fill-mode:both}.spinner .bounce1{animation-delay:-.32s}.spinner .bounce2{animation-delay:-.16s}@keyframes bouncedelay{0%,80%,to{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}.chat-button{position:fixed;bottom:20px;right:20px;background:#17235B;border:#17235B;border-radius:50%;width:50px;height:50px;font-size:24px;color:#fff;display:inline-flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.ChatDrawerComponent, selector: "hivegpt-chat-drawer-package", inputs: ["copilotName", "firstName", "lastName", "apiKey", "bgBubbleAi", "bgBubbleUser", "bgGradient", "botName", "botSkills", "botId", "orgId", "closeButtonColor", "closeButtonbgColor", "credentials", "dateTimeColor", "dateTextColor", "eventId", "eventUrl", "eventToken", "workspaceToken", "s27Token", "eventName", "botIcon", "userAvatarUrl", "formFieldBgColor", "formFieldTextColor", "fullView", "gradientColors", "greeting", "messageTextColorAi", "messageTextColorUser", "rules", "sendButtonColor", "sendButtonTextColor", "showClose", "thumbsDownMessages", "thumbsUpMessage", "timezone", "unknownResponses", "useOpenAi", "userId", "isDev", "autoScrollOnNewMessage", "baseUrl", "connectionsList", "pendingSentRequestUserIds", "isConnectionsEnabled", "isUnEvent", "againButtonColor", "againButtonTextColor"], outputs: ["feedbackEvent", "onCloseEvent", "openPage", "sessionActions", "sessionActionBlocked", "closeBot", "connectWithUser", "viewSpeakerProfile", "viewBooth", "scheduleMeeting", "refreshToken", "tokensRefreshed", "openSupport"] }] });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ChatBotComponent, decorators: [{
|
|
18
|
+
type: Component,
|
|
19
|
+
args: [{ selector: 'hivegpt-chatbot', template: "<button mat-icon-button class=\"chat-button\" color=\"primary\" (click)=\"toggle()\">\n <mat-icon>chat</mat-icon>\n</button>\n\n<ng-container *ngIf=\"visible\">\n <hivegpt-chat-drawer-package\n [apiKey]=\"apiKey\"\n [bgBubbleAi]=\"bgBubbleAi\"\n [bgBubbleUser]=\"bgBubbleUser\"\n [bgGradient]=\"bgGradient\"\n [botName]=\"botName\"\n [closeButtonbgColor]=\"closeButtonbgColor\"\n [closeButtonColor]=\"closeButtonColor\"\n [credentials]=\"credentials\"\n [dateTextColor]=\"dateTextColor\"\n [dateTimeColor]=\"dateTimeColor\"\n [eventId]=\"eventId\"\n [eventName]=\"eventName\"\n [formFieldBgColor]=\"formFieldBgColor\"\n [formFieldTextColor]=\"formFieldTextColor\"\n [fullView]=\"fullView\"\n [greeting]=\"greeting\"\n [gradientColors]=\"gradientColors\"\n [messageTextColorAi]=\"messageTextColorAi\"\n [messageTextColorUser]=\"messageTextColorUser\"\n [sendButtonColor]=\"sendButtonColor\"\n [sendButtonTextColor]=\"sendButtonTextColor\"\n [showClose]=\"showClose\"\n [thumbsDownMessages]=\"thumbsDownMessages\"\n [thumbsUpMessage]=\"thumbsUpMessage\"\n [unknownResponses]=\"unknownResponses\"\n [useOpenAi]=\"useOpenAi\"\n [userId]=\"userId\"\n [userAvatarUrl]=\"userAvatarUrl\"\n [timezone]=\"timezone\"\n [botId]=\"botId\"\n [s27Token]=\"s27Token\"\n (tokensRefreshed)=\"tokensRefreshed.emit($event)\"\n [workspaceToken]=\"workspaceToken\"\n [isDev]=\"isDev\"\n [baseUrl]=\"baseUrl\"\n >\n </hivegpt-chat-drawer-package>\n</ng-container>\n", styles: ["::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#e5ccbc}::-webkit-scrollbar-thumb:hover{background:#e5ccbc}.spinner{display:flex;align-items:center;justify-content:center;gap:2px}.spinner>div{width:5px;height:5px;background-color:#173330;border-radius:100%;display:inline-block;animation:bouncedelay 1.4s ease-in-out infinite;animation-fill-mode:both}.spinner .bounce1{animation-delay:-.32s}.spinner .bounce2{animation-delay:-.16s}@keyframes bouncedelay{0%,80%,to{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}.chat-button{position:fixed;bottom:20px;right:20px;background:#17235B;border:#17235B;border-radius:50%;width:50px;height:50px;font-size:24px;color:#fff;display:inline-flex;align-items:center;justify-content:center}\n"] }]
|
|
20
|
+
}], propDecorators: { userId: [{
|
|
21
|
+
type: Input
|
|
22
|
+
}], userAvatarUrl: [{
|
|
23
|
+
type: Input
|
|
24
|
+
}], timezone: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}], apiKey: [{
|
|
27
|
+
type: Input
|
|
28
|
+
}], botName: [{
|
|
29
|
+
type: Input
|
|
30
|
+
}], botSkills: [{
|
|
31
|
+
type: Input
|
|
32
|
+
}], botId: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}], closeButtonColor: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}], gradientColors: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], greeting: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], sendButtonColor: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], useOpenAi: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], showClose: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], bgGradient: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], sendButtonTextColor: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], fullView: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], bgBubbleAi: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}], bgBubbleUser: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], closeButtonbgColor: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], messageTextColorAi: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], messageTextColorUser: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], dateTimeColor: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], dateTextColor: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], formFieldBgColor: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], formFieldTextColor: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], thumbsUpMessage: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], thumbsDownMessages: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], eventName: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}], credentials: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}], unknownResponses: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}], rules: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], eventId: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], s27Token: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], tokensRefreshed: [{
|
|
87
|
+
type: Output
|
|
88
|
+
}], workspaceToken: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], isDev: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], baseUrl: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}] } });
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdGJvdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9oaXZlZ3B0L2V2ZW50c2dwdC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9jaGF0Ym90L2NoYXRib3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaGl2ZWdwdC9ldmVudHNncHQtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvY2hhdGJvdC9jaGF0Ym90LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBT3ZFLE1BQU0sT0FBTyxnQkFBZ0I7SUFMN0I7UUF5Q1ksb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBS3BELFlBQU8sR0FBRyxLQUFLLENBQUM7S0FLakI7SUFIQyxNQUFNO1FBQ0osSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDL0IsQ0FBQzs7OEdBN0NVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLDBvQ0NQN0IsMjhDQTRDQTs0RkRyQ2EsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGlCQUFpQjs4QkFLbEIsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRSxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoaXZlZ3B0LWNoYXRib3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhdGJvdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXRib3QuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhdEJvdENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHVzZXJJZCE6IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIHVzZXIgcHJvZmlsZSBpbWFnZSBVUkw7IGlmIG5vdCBzZXQsIHVzZXIgaW5pdGlhbHMgYXJlIHNob3duIGluIGNoYXQuICovXG4gIEBJbnB1dCgpIHVzZXJBdmF0YXJVcmw/OiBzdHJpbmc7XG4gIC8qKiBVc2VyJ3Mgc2VsZWN0ZWQgdGltZXpvbmUgKGUuZy4gJ0FtZXJpY2EvTmV3X1lvcmsnKTsgdXNlZCBmb3IgY2hhdCB0aW1lc3RhbXBzIGFuZCBzZXNzaW9uIGNhcmQgdGltZXMuICovXG4gIEBJbnB1dCgpIHRpbWV6b25lITogc3RyaW5nO1xuICBASW5wdXQoKSBhcGlLZXkhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJvdE5hbWUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJvdFNraWxscyE6IHN0cmluZztcbiAgQElucHV0KCkgYm90SWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNsb3NlQnV0dG9uQ29sb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGdyYWRpZW50Q29sb3JzITogc3RyaW5nW107XG4gIEBJbnB1dCgpIGdyZWV0aW5nITogc3RyaW5nO1xuICBASW5wdXQoKSBzZW5kQnV0dG9uQ29sb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHVzZU9wZW5BaSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNob3dDbG9zZSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGJnR3JhZGllbnQhOiBzdHJpbmdbXTtcbiAgQElucHV0KCkgc2VuZEJ1dHRvblRleHRDb2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgZnVsbFZpZXchOiBib29sZWFuO1xuICBASW5wdXQoKSBiZ0J1YmJsZUFpITogc3RyaW5nO1xuICBASW5wdXQoKSBiZ0J1YmJsZVVzZXIhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNsb3NlQnV0dG9uYmdDb2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgbWVzc2FnZVRleHRDb2xvckFpITogc3RyaW5nO1xuICBASW5wdXQoKSBtZXNzYWdlVGV4dENvbG9yVXNlciE6IHN0cmluZztcbiAgQElucHV0KCkgZGF0ZVRpbWVDb2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgZGF0ZVRleHRDb2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgZm9ybUZpZWxkQmdDb2xvciE6IHN0cmluZztcbiAgQElucHV0KCkgZm9ybUZpZWxkVGV4dENvbG9yITogc3RyaW5nO1xuICBASW5wdXQoKSB0aHVtYnNVcE1lc3NhZ2UhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRodW1ic0Rvd25NZXNzYWdlcyE6IHN0cmluZ1tdO1xuICBASW5wdXQoKSBldmVudE5hbWUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNyZWRlbnRpYWxzITogW107XG4gIEBJbnB1dCgpIHVua25vd25SZXNwb25zZXMhOiBbXTtcbiAgQElucHV0KCkgcnVsZXMhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGV2ZW50SWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHMyN1Rva2VuITogc3RyaW5nO1xuICBAT3V0cHV0KCkgdG9rZW5zUmVmcmVzaGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIHdvcmtzcGFjZVRva2VuITogc3RyaW5nO1xuICBASW5wdXQoKSBpc0RldiE6IGJvb2xlYW47XG4gIC8qKiBPcHRpb25hbCBBUEkgYmFzZSBVUkwgKGUuZy4gbmdyb2spLiBXaGVuIHNldCwgY2hhdC92b2ljZSB1c2UgdGhpcyBpbnN0ZWFkIG9mIGRldi9wcm9kIGRlZmF1bHQuICovXG4gIEBJbnB1dCgpIGJhc2VVcmw/OiBzdHJpbmc7XG4gIHZpc2libGUgPSBmYWxzZTtcblxuICB0b2dnbGUoKSB7XG4gICAgdGhpcy52aXNpYmxlID0gIXRoaXMudmlzaWJsZTtcbiAgfVxufVxuIiwiPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJjaGF0LWJ1dHRvblwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJ0b2dnbGUoKVwiPlxuICA8bWF0LWljb24+Y2hhdDwvbWF0LWljb24+XG48L2J1dHRvbj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpc2libGVcIj5cbiAgPGhpdmVncHQtY2hhdC1kcmF3ZXItcGFja2FnZVxuICBbYXBpS2V5XT1cImFwaUtleVwiXG4gIFtiZ0J1YmJsZUFpXT1cImJnQnViYmxlQWlcIlxuICBbYmdCdWJibGVVc2VyXT1cImJnQnViYmxlVXNlclwiXG4gIFtiZ0dyYWRpZW50XT1cImJnR3JhZGllbnRcIlxuICBbYm90TmFtZV09XCJib3ROYW1lXCJcbiAgW2Nsb3NlQnV0dG9uYmdDb2xvcl09XCJjbG9zZUJ1dHRvbmJnQ29sb3JcIlxuICBbY2xvc2VCdXR0b25Db2xvcl09XCJjbG9zZUJ1dHRvbkNvbG9yXCJcbiAgW2NyZWRlbnRpYWxzXT1cImNyZWRlbnRpYWxzXCJcbiAgW2RhdGVUZXh0Q29sb3JdPVwiZGF0ZVRleHRDb2xvclwiXG4gIFtkYXRlVGltZUNvbG9yXT1cImRhdGVUaW1lQ29sb3JcIlxuICBbZXZlbnRJZF09XCJldmVudElkXCJcbiAgW2V2ZW50TmFtZV09XCJldmVudE5hbWVcIlxuICBbZm9ybUZpZWxkQmdDb2xvcl09XCJmb3JtRmllbGRCZ0NvbG9yXCJcbiAgW2Zvcm1GaWVsZFRleHRDb2xvcl09XCJmb3JtRmllbGRUZXh0Q29sb3JcIlxuICBbZnVsbFZpZXddPVwiZnVsbFZpZXdcIlxuICBbZ3JlZXRpbmddPVwiZ3JlZXRpbmdcIlxuICBbZ3JhZGllbnRDb2xvcnNdPVwiZ3JhZGllbnRDb2xvcnNcIlxuICBbbWVzc2FnZVRleHRDb2xvckFpXT1cIm1lc3NhZ2VUZXh0Q29sb3JBaVwiXG4gIFttZXNzYWdlVGV4dENvbG9yVXNlcl09XCJtZXNzYWdlVGV4dENvbG9yVXNlclwiXG4gIFtzZW5kQnV0dG9uQ29sb3JdPVwic2VuZEJ1dHRvbkNvbG9yXCJcbiAgW3NlbmRCdXR0b25UZXh0Q29sb3JdPVwic2VuZEJ1dHRvblRleHRDb2xvclwiXG4gIFtzaG93Q2xvc2VdPVwic2hvd0Nsb3NlXCJcbiAgW3RodW1ic0Rvd25NZXNzYWdlc109XCJ0aHVtYnNEb3duTWVzc2FnZXNcIlxuICBbdGh1bWJzVXBNZXNzYWdlXT1cInRodW1ic1VwTWVzc2FnZVwiXG4gIFt1bmtub3duUmVzcG9uc2VzXT1cInVua25vd25SZXNwb25zZXNcIlxuICBbdXNlT3BlbkFpXT1cInVzZU9wZW5BaVwiXG4gIFt1c2VySWRdPVwidXNlcklkXCJcbiAgW3VzZXJBdmF0YXJVcmxdPVwidXNlckF2YXRhclVybFwiXG4gIFt0aW1lem9uZV09XCJ0aW1lem9uZVwiXG4gIFtib3RJZF09XCJib3RJZFwiXG4gIFtzMjdUb2tlbl09XCJzMjdUb2tlblwiXG4gICh0b2tlbnNSZWZyZXNoZWQpPVwidG9rZW5zUmVmcmVzaGVkLmVtaXQoJGV2ZW50KVwiXG4gIFt3b3Jrc3BhY2VUb2tlbl09XCJ3b3Jrc3BhY2VUb2tlblwiXG4gIFtpc0Rldl09XCJpc0RldlwiXG4gIFtiYXNlVXJsXT1cImJhc2VVcmxcIlxuICA+XG4gIDwvaGl2ZWdwdC1jaGF0LWRyYXdlci1wYWNrYWdlPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ConversationService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.conversationStorageKeyPrefix = 'conversationKey_';
|
|
7
|
+
this.sessionStorageKeyPrefix = 'sessionKey_';
|
|
8
|
+
this.userSpecificNotification = new Subject();
|
|
9
|
+
}
|
|
10
|
+
generateKey() {
|
|
11
|
+
const timestamp = Math.floor(new Date().getTime() / 1000).toString(16);
|
|
12
|
+
const randomHex = 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, () => {
|
|
13
|
+
return Math.floor(Math.random() * 16).toString(16);
|
|
14
|
+
});
|
|
15
|
+
return timestamp + randomHex;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Returns a stable conversation id persisted in localStorage.
|
|
19
|
+
*
|
|
20
|
+
* IMPORTANT: call-sites should pass an event-specific scope when needed (e.g. eventId)
|
|
21
|
+
* so switching events does not reuse the previous event's conversation thread.
|
|
22
|
+
*/
|
|
23
|
+
getKey(botId, resetKey = false, scope) {
|
|
24
|
+
const normalizedScope = scope != null && String(scope).trim() !== '' ? String(scope).trim() : '';
|
|
25
|
+
const storageKey = `${this.conversationStorageKeyPrefix}${botId}${normalizedScope ? `_${normalizedScope}` : ''}`;
|
|
26
|
+
let value = localStorage.getItem(storageKey);
|
|
27
|
+
if (!value || resetKey) {
|
|
28
|
+
value = this.generateKey();
|
|
29
|
+
localStorage.setItem(storageKey, value);
|
|
30
|
+
}
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
getSessionKey(sessionId, resetKey = false, scope) {
|
|
34
|
+
const normalizedScope = scope != null && String(scope).trim() !== '' ? String(scope).trim() : '';
|
|
35
|
+
const storageKey = `${this.sessionStorageKeyPrefix}${sessionId}${normalizedScope ? `_${normalizedScope}` : ''}`;
|
|
36
|
+
let value = localStorage.getItem(storageKey);
|
|
37
|
+
if (!value || resetKey) {
|
|
38
|
+
value = this.generateKey();
|
|
39
|
+
localStorage.setItem(storageKey, value);
|
|
40
|
+
}
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
sendValidatedUserData(message) {
|
|
44
|
+
this.userSpecificNotification.next(message);
|
|
45
|
+
}
|
|
46
|
+
getUserSpecificNotification() {
|
|
47
|
+
return this.userSpecificNotification.asObservable();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
ConversationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConversationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
51
|
+
ConversationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConversationService, providedIn: 'root' });
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ConversationService, decorators: [{
|
|
53
|
+
type: Injectable,
|
|
54
|
+
args: [{
|
|
55
|
+
providedIn: 'root',
|
|
56
|
+
}]
|
|
57
|
+
}], ctorParameters: function () { return []; } });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9oaXZlZ3B0L2V2ZW50c2dwdC1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9jb252ZXJzYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxtQkFBbUI7SUFNOUI7UUFMUSxpQ0FBNEIsR0FBRyxrQkFBa0IsQ0FBQztRQUNsRCw0QkFBdUIsR0FBRyxhQUFhLENBQUM7UUFFeEMsNkJBQXdCLEdBQWlCLElBQUksT0FBTyxFQUFPLENBQUM7SUFFcEQsQ0FBQztJQUVqQixXQUFXO1FBQ1QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RSxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUN4RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsS0FBYSxFQUFFLFdBQW9CLEtBQUssRUFBRSxLQUFjO1FBQzdELE1BQU0sZUFBZSxHQUNuQixLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNFLE1BQU0sVUFBVSxHQUFHLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixHQUFHLEtBQUssR0FDN0QsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUM1QyxFQUFFLENBQUM7UUFDSCxJQUFJLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTdDLElBQUksQ0FBQyxLQUFLLElBQUksUUFBUSxFQUFFO1lBQ3RCLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxhQUFhLENBQUMsU0FBaUIsRUFBRSxXQUFvQixLQUFLLEVBQUUsS0FBYztRQUN4RSxNQUFNLGVBQWUsR0FDbkIsS0FBSyxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzRSxNQUFNLFVBQVUsR0FBRyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxTQUFTLEdBQzVELGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDNUMsRUFBRSxDQUFDO1FBQ0gsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsS0FBSyxJQUFJLFFBQVEsRUFBRTtZQUN0QixLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzNCLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQscUJBQXFCLENBQUMsT0FBWTtRQUNoQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCwyQkFBMkI7UUFDekIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEQsQ0FBQzs7aUhBNURVLG1CQUFtQjtxSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENvbnZlcnNhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIGNvbnZlcnNhdGlvblN0b3JhZ2VLZXlQcmVmaXggPSAnY29udmVyc2F0aW9uS2V5Xyc7XG4gIHByaXZhdGUgc2Vzc2lvblN0b3JhZ2VLZXlQcmVmaXggPSAnc2Vzc2lvbktleV8nO1xuXG4gIHByaXZhdGUgdXNlclNwZWNpZmljTm90aWZpY2F0aW9uOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBnZW5lcmF0ZUtleSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKS50b1N0cmluZygxNik7XG4gICAgY29uc3QgcmFuZG9tSGV4ID0gJ3h4eHh4eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4XS9nLCAoKSA9PiB7XG4gICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTYpLnRvU3RyaW5nKDE2KTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGltZXN0YW1wICsgcmFuZG9tSGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdGFibGUgY29udmVyc2F0aW9uIGlkIHBlcnNpc3RlZCBpbiBsb2NhbFN0b3JhZ2UuXG4gICAqXG4gICAqIElNUE9SVEFOVDogY2FsbC1zaXRlcyBzaG91bGQgcGFzcyBhbiBldmVudC1zcGVjaWZpYyBzY29wZSB3aGVuIG5lZWRlZCAoZS5nLiBldmVudElkKVxuICAgKiBzbyBzd2l0Y2hpbmcgZXZlbnRzIGRvZXMgbm90IHJldXNlIHRoZSBwcmV2aW91cyBldmVudCdzIGNvbnZlcnNhdGlvbiB0aHJlYWQuXG4gICAqL1xuICBnZXRLZXkoYm90SWQ6IHN0cmluZywgcmVzZXRLZXk6IGJvb2xlYW4gPSBmYWxzZSwgc2NvcGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRTY29wZSA9XG4gICAgICBzY29wZSAhPSBudWxsICYmIFN0cmluZyhzY29wZSkudHJpbSgpICE9PSAnJyA/IFN0cmluZyhzY29wZSkudHJpbSgpIDogJyc7XG4gICAgY29uc3Qgc3RvcmFnZUtleSA9IGAke3RoaXMuY29udmVyc2F0aW9uU3RvcmFnZUtleVByZWZpeH0ke2JvdElkfSR7XG4gICAgICBub3JtYWxpemVkU2NvcGUgPyBgXyR7bm9ybWFsaXplZFNjb3BlfWAgOiAnJ1xuICAgIH1gO1xuICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHN0b3JhZ2VLZXkpO1xuXG4gICAgaWYgKCF2YWx1ZSB8fCByZXNldEtleSkge1xuICAgICAgdmFsdWUgPSB0aGlzLmdlbmVyYXRlS2V5KCk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShzdG9yYWdlS2V5LCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgZ2V0U2Vzc2lvbktleShzZXNzaW9uSWQ6IHN0cmluZywgcmVzZXRLZXk6IGJvb2xlYW4gPSBmYWxzZSwgc2NvcGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRTY29wZSA9XG4gICAgICBzY29wZSAhPSBudWxsICYmIFN0cmluZyhzY29wZSkudHJpbSgpICE9PSAnJyA/IFN0cmluZyhzY29wZSkudHJpbSgpIDogJyc7XG4gICAgY29uc3Qgc3RvcmFnZUtleSA9IGAke3RoaXMuc2Vzc2lvblN0b3JhZ2VLZXlQcmVmaXh9JHtzZXNzaW9uSWR9JHtcbiAgICAgIG5vcm1hbGl6ZWRTY29wZSA/IGBfJHtub3JtYWxpemVkU2NvcGV9YCA6ICcnXG4gICAgfWA7XG4gICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oc3RvcmFnZUtleSk7XG5cbiAgICBpZiAoIXZhbHVlIHx8IHJlc2V0S2V5KSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuZ2VuZXJhdGVLZXkoKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHN0b3JhZ2VLZXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBzZW5kVmFsaWRhdGVkVXNlckRhdGEobWVzc2FnZTogYW55KSB7XG4gICAgdGhpcy51c2VyU3BlY2lmaWNOb3RpZmljYXRpb24ubmV4dChtZXNzYWdlKTtcbiAgfVxuXG4gIGdldFVzZXJTcGVjaWZpY05vdGlmaWNhdGlvbigpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJTcGVjaWZpY05vdGlmaWNhdGlvbi5hc09ic2VydmFibGUoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./conversation.service";
|
|
4
|
+
import * as i2 from "./NotificationSocket";
|
|
5
|
+
export class SocketService {
|
|
6
|
+
constructor(conversationService, notificationSocket) {
|
|
7
|
+
this.conversationService = conversationService;
|
|
8
|
+
this.notificationSocket = notificationSocket;
|
|
9
|
+
this.isCommonSocketInitialized = false;
|
|
10
|
+
this.isUserSpecificSocketInitialized = false;
|
|
11
|
+
this.isUserSpecificEventReleased = true;
|
|
12
|
+
this.messageQueue = [];
|
|
13
|
+
this.releaseInterval = 1000;
|
|
14
|
+
this.releaseIntervalId = null;
|
|
15
|
+
this.startReleasingMessages();
|
|
16
|
+
}
|
|
17
|
+
ngOnDestroy() {
|
|
18
|
+
if (this.releaseIntervalId) {
|
|
19
|
+
clearInterval(this.releaseIntervalId);
|
|
20
|
+
this.releaseIntervalId = null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
isSocketInitialized(isCommon) {
|
|
24
|
+
return isCommon
|
|
25
|
+
? this.isCommonSocketInitialized
|
|
26
|
+
: this.isUserSpecificSocketInitialized &&
|
|
27
|
+
!this.isUserSpecificEventReleased;
|
|
28
|
+
}
|
|
29
|
+
disconnectSocketConnection() {
|
|
30
|
+
this.notificationSocket.disconnect();
|
|
31
|
+
}
|
|
32
|
+
connectSocketConnection() {
|
|
33
|
+
this.notificationSocket.connect();
|
|
34
|
+
}
|
|
35
|
+
registerUserSpecificHiveSocket(botId, conversation_id, org_id) {
|
|
36
|
+
const commonNotification = 'commonNotification';
|
|
37
|
+
const groupId = `Hive_AI_Notifs_${botId}_${conversation_id}`;
|
|
38
|
+
const groupId_org = `Hive_AI_Notifs_${org_id}`;
|
|
39
|
+
this.notificationSocket.emit('joinData', { groupId });
|
|
40
|
+
this.notificationSocket.emit('joinData', { groupId: groupId_org });
|
|
41
|
+
this.notificationSocket.fromEvent(commonNotification).subscribe((res) => {
|
|
42
|
+
this.conversationService.sendValidatedUserData(res);
|
|
43
|
+
}, (error) => {
|
|
44
|
+
console.error('Error receiving commonNotification:', error);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
startReleasingMessages() {
|
|
48
|
+
if (!this.releaseIntervalId) {
|
|
49
|
+
this.releaseIntervalId = setInterval(() => {
|
|
50
|
+
if (this.messageQueue.length > 0) {
|
|
51
|
+
const message = this.messageQueue.shift();
|
|
52
|
+
}
|
|
53
|
+
}, this.releaseInterval);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
SocketService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SocketService, deps: [{ token: i1.ConversationService }, { token: i2.NotificationSocket }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
58
|
+
SocketService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SocketService, providedIn: 'root' });
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SocketService, decorators: [{
|
|
60
|
+
type: Injectable,
|
|
61
|
+
args: [{
|
|
62
|
+
providedIn: 'root',
|
|
63
|
+
}]
|
|
64
|
+
}], ctorParameters: function () { return [{ type: i1.ConversationService }, { type: i2.NotificationSocket }]; } });
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LXNlcnZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2hpdmVncHQvZXZlbnRzZ3B0LWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NvY2tldC1zZXJ2aWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQzs7OztBQVF0RCxNQUFNLE9BQU8sYUFBYTtJQVF4QixZQUNVLG1CQUF3QyxFQUN4QyxrQkFBc0M7UUFEdEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBVHhDLDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUNsQyxvQ0FBK0IsR0FBRyxLQUFLLENBQUM7UUFDeEMsZ0NBQTJCLEdBQUcsSUFBSSxDQUFDO1FBQ25DLGlCQUFZLEdBQVUsRUFBRSxDQUFDO1FBQ3pCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLHNCQUFpQixHQUEwQyxJQUFJLENBQUM7UUFNdEUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxRQUFpQjtRQUNuQyxPQUFPLFFBQVE7WUFDYixDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QjtZQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLCtCQUErQjtnQkFDdEMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUM7SUFDdEMsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELDhCQUE4QixDQUFDLEtBQWEsRUFBRSxlQUF1QixFQUFFLE1BQWM7UUFDbkYsTUFBTSxrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQztRQUNoRCxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsS0FBSyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzdELE1BQU0sV0FBVyxHQUFHLGtCQUFrQixNQUFNLEVBQUUsQ0FBQztRQUUvQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUVuRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUMsU0FBUyxDQUM3RCxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RELENBQUMsRUFDRCxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtnQkFDeEMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQzNDO1lBQ0gsQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUMxQjtJQUNILENBQUM7OzJHQS9EVSxhQUFhOytHQUFiLGFBQWEsY0FGWixNQUFNOzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbnZlcnNhdGlvblNlcnZpY2UgfSBmcm9tICcuL2NvbnZlcnNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNvY2tldCB9IGZyb20gJy4vTm90aWZpY2F0aW9uU29ja2V0JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNvY2tldFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGlzQ29tbW9uU29ja2V0SW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1VzZXJTcGVjaWZpY1NvY2tldEluaXRpYWxpemVkID0gZmFsc2U7XG4gIHByaXZhdGUgaXNVc2VyU3BlY2lmaWNFdmVudFJlbGVhc2VkID0gdHJ1ZTtcbiAgcHJpdmF0ZSBtZXNzYWdlUXVldWU6IGFueVtdID0gW107XG4gIHByaXZhdGUgcmVsZWFzZUludGVydmFsID0gMTAwMDtcbiAgcHJpdmF0ZSByZWxlYXNlSW50ZXJ2YWxJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb252ZXJzYXRpb25TZXJ2aWNlOiBDb252ZXJzYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU29ja2V0OiBOb3RpZmljYXRpb25Tb2NrZXRcbiAgKSB7XG4gICAgdGhpcy5zdGFydFJlbGVhc2luZ01lc3NhZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWxlYXNlSW50ZXJ2YWxJZCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnJlbGVhc2VJbnRlcnZhbElkKTtcbiAgICAgIHRoaXMucmVsZWFzZUludGVydmFsSWQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGlzU29ja2V0SW5pdGlhbGl6ZWQoaXNDb21tb246IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNDb21tb25cbiAgICAgID8gdGhpcy5pc0NvbW1vblNvY2tldEluaXRpYWxpemVkXG4gICAgICA6IHRoaXMuaXNVc2VyU3BlY2lmaWNTb2NrZXRJbml0aWFsaXplZCAmJlxuICAgICAgIXRoaXMuaXNVc2VyU3BlY2lmaWNFdmVudFJlbGVhc2VkO1xuICB9XG5cbiAgZGlzY29ubmVjdFNvY2tldENvbm5lY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25Tb2NrZXQuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgY29ubmVjdFNvY2tldENvbm5lY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25Tb2NrZXQuY29ubmVjdCgpO1xuICB9XG5cbiAgcmVnaXN0ZXJVc2VyU3BlY2lmaWNIaXZlU29ja2V0KGJvdElkOiBzdHJpbmcsIGNvbnZlcnNhdGlvbl9pZDogc3RyaW5nLCBvcmdfaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNvbW1vbk5vdGlmaWNhdGlvbiA9ICdjb21tb25Ob3RpZmljYXRpb24nO1xuICAgIGNvbnN0IGdyb3VwSWQgPSBgSGl2ZV9BSV9Ob3RpZnNfJHtib3RJZH1fJHtjb252ZXJzYXRpb25faWR9YDtcbiAgICBjb25zdCBncm91cElkX29yZyA9IGBIaXZlX0FJX05vdGlmc18ke29yZ19pZH1gO1xuXG4gICAgdGhpcy5ub3RpZmljYXRpb25Tb2NrZXQuZW1pdCgnam9pbkRhdGEnLCB7IGdyb3VwSWQgfSk7XG4gICAgdGhpcy5ub3RpZmljYXRpb25Tb2NrZXQuZW1pdCgnam9pbkRhdGEnLCB7IGdyb3VwSWQ6IGdyb3VwSWRfb3JnIH0pO1xuXG4gICAgdGhpcy5ub3RpZmljYXRpb25Tb2NrZXQuZnJvbUV2ZW50KGNvbW1vbk5vdGlmaWNhdGlvbikuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY29udmVyc2F0aW9uU2VydmljZS5zZW5kVmFsaWRhdGVkVXNlckRhdGEocmVzKTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciByZWNlaXZpbmcgY29tbW9uTm90aWZpY2F0aW9uOicsIGVycm9yKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFJlbGVhc2luZ01lc3NhZ2VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZWxlYXNlSW50ZXJ2YWxJZCkge1xuICAgICAgdGhpcy5yZWxlYXNlSW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubWVzc2FnZVF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5tZXNzYWdlUXVldWUuc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgfSwgdGhpcy5yZWxlYXNlSW50ZXJ2YWwpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class TranslationService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.eventId = null;
|
|
6
|
+
this.translationsData = [
|
|
7
|
+
{
|
|
8
|
+
Key: "Copy",
|
|
9
|
+
DefaultValue: "Copy",
|
|
10
|
+
Translations: {
|
|
11
|
+
en: "Copy",
|
|
12
|
+
fr: "Copier",
|
|
13
|
+
it: "Copia",
|
|
14
|
+
es: "Copiar",
|
|
15
|
+
de: "Kopieren",
|
|
16
|
+
"pt-br": "Copiar",
|
|
17
|
+
ar: "نسخ",
|
|
18
|
+
zh: "复制",
|
|
19
|
+
ru: "Копировать"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
Key: "May I assist you with anything else",
|
|
24
|
+
DefaultValue: "Great. May I assist you with anything else?",
|
|
25
|
+
Translations: {
|
|
26
|
+
en: "Great. May I assist you with anything else?",
|
|
27
|
+
fr: "Parfait. Puis-je vous aider avec autre chose ?",
|
|
28
|
+
it: "Perfetto. Posso aiutarti con qualcos'altro?",
|
|
29
|
+
es: "Genial. ¿Puedo ayudarte con algo más?",
|
|
30
|
+
de: "Super. Kann ich Ihnen noch bei etwas anderem helfen?",
|
|
31
|
+
"pt-br": "Ótimo. Posso ajudar com mais alguma coisa?",
|
|
32
|
+
ar: "رائع. هل يمكنني مساعدتك في أي شيء آخر؟",
|
|
33
|
+
zh: "太好了。还有什么我可以帮您的吗?",
|
|
34
|
+
ru: "Отлично. Могу ли я помочь вам с чем-то ещё?"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
Key: "We are sorry we've not been able to answer your question",
|
|
39
|
+
DefaultValue: "We are sorry we've not been able to answer your question. However, our dedicated support team is happy to help. Please <a href=\"mailto:support@social27.com\">click here</a> and a human agent will assist you as soon as possible.",
|
|
40
|
+
Translations: {
|
|
41
|
+
en: "We are sorry we've not been able to answer your question. However, our dedicated support team is happy to help. Please <a href=\"mailto:support@social27.com\">click here</a> and a human agent will assist you as soon as possible.",
|
|
42
|
+
fr: "Nous sommes désolés de ne pas avoir pu répondre à votre question. Cependant, notre équipe d'assistance se fera un plaisir de vous aider. Veuillez <a href=\"mailto:support@social27.com\">cliquer ici</a> et un agent humain vous assistera dès que possible.",
|
|
43
|
+
it: "Ci dispiace di non essere riusciti a rispondere alla tua domanda. Tuttavia, il nostro team di supporto dedicato sarà lieto di aiutarti. Ti preghiamo di <a href=\"mailto:support@social27.com\">fare clic qui</a> e un operatore umano ti assisterà al più presto.",
|
|
44
|
+
es: "Lamentamos no haber podido responder a tu pregunta. Sin embargo, nuestro equipo de soporte estará encantado de ayudarte. Por favor, <a href=\"mailto:support@social27.com\">haz clic aquí</a> y un agente humano te asistirá lo antes posible.",
|
|
45
|
+
de: "Es tut uns leid, dass wir Ihre Frage nicht beantworten konnten. Unser engagiertes Support-Team hilft Ihnen jedoch gerne weiter. Bitte <a href=\"mailto:support@social27.com\">klicken Sie hier</a>, und ein menschlicher Mitarbeiter wird Ihnen so bald wie möglich helfen.",
|
|
46
|
+
"pt-br": "Lamentamos não ter conseguido responder à sua pergunta. No entanto, nossa equipe de suporte dedicada ficará feliz em ajudar. Por favor, <a href=\"mailto:support@social27.com\">clique aqui</a> e um agente humano o ajudará o mais rápido possível.",
|
|
47
|
+
ar: "نأسف لعدم تمكننا من الإجابة على سؤالك. ومع ذلك، يسعد فريق الدعم المخصص لدينا بمساعدتك. يرجى <a href=\"mailto:support@social27.com\">النقر هنا</a> وسيساعدك أحد الوكلاء البشريين في أقرب وقت ممكن.",
|
|
48
|
+
zh: "很抱歉我们未能回答您的问题。不过,我们的专属支持团队很乐意为您提供帮助。请<a href=\"mailto:support@social27.com\">点击这里</a>,人工客服将尽快为您提供协助。",
|
|
49
|
+
ru: "К сожалению, мы не смогли ответить на ваш вопрос. Однако наша служба поддержки с радостью вам поможет. Пожалуйста, <a href=\"mailto:support@social27.com\">нажмите здесь</a>, и наш оператор свяжется с вами как можно скорее."
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
Key: 'Ask anything',
|
|
54
|
+
DefaultValue: 'Ask anything',
|
|
55
|
+
Translations: {
|
|
56
|
+
en: 'Ask anything',
|
|
57
|
+
fr: 'Demandez ce que vous voulez',
|
|
58
|
+
it: 'Chiedi qualsiasi cosa',
|
|
59
|
+
es: 'Pregunta lo que quieras',
|
|
60
|
+
de: 'Frag alles',
|
|
61
|
+
'pt-br': 'Pergunte qualquer coisa',
|
|
62
|
+
ar: 'اسأل أي شيء',
|
|
63
|
+
zh: '随便问',
|
|
64
|
+
ru: 'Спросите что угодно',
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
Key: 'Assistant',
|
|
69
|
+
DefaultValue: 'Assistant',
|
|
70
|
+
Translations: {
|
|
71
|
+
en: 'Assistant',
|
|
72
|
+
fr: 'Assistant',
|
|
73
|
+
it: 'Assistente',
|
|
74
|
+
es: 'Asistente',
|
|
75
|
+
de: 'Assistent',
|
|
76
|
+
'pt-br': 'Assistente',
|
|
77
|
+
ar: 'مساعد',
|
|
78
|
+
zh: '助手',
|
|
79
|
+
ru: 'Ассистент',
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
Key: 'Your personal or company information is kept private and secure within this chat.',
|
|
84
|
+
DefaultValue: 'Your personal or company information is kept private and secure within this chat.',
|
|
85
|
+
Translations: {
|
|
86
|
+
en: 'Your personal or company information is kept private and secure within this chat.',
|
|
87
|
+
fr: 'Vos informations personnelles ou celles de votre entreprise sont conservées privées et sécurisées dans cette conversation.',
|
|
88
|
+
it: "Le tue informazioni personali o aziendali sono mantenute private e sicure all'interno di questa chat.",
|
|
89
|
+
es: 'Tu información personal o de la empresa se mantiene privada y segura dentro de este chat.',
|
|
90
|
+
de: 'Ihre persönlichen oder geschäftlichen Informationen bleiben in diesem Chat privat und sicher.',
|
|
91
|
+
'pt-br': 'Suas informações pessoais ou da empresa são mantidas privadas e seguras dentro deste chat.',
|
|
92
|
+
ar: 'تظل معلوماتك الشخصية أو معلومات شركتك خاصة وآمنة داخل هذه المحادثة.',
|
|
93
|
+
zh: '您的个人或公司信息在此聊天中保持私密和安全。',
|
|
94
|
+
ru: 'Ваша личная или корпоративная информация остается конфиденциальной и защищенной в этом чате.',
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
Key: 'Send message',
|
|
99
|
+
DefaultValue: 'Send message',
|
|
100
|
+
Translations: {
|
|
101
|
+
en: 'Send message',
|
|
102
|
+
fr: 'Envoyer un message',
|
|
103
|
+
it: 'Invia messaggio',
|
|
104
|
+
es: 'Enviar mensaje',
|
|
105
|
+
de: 'Nachricht senden',
|
|
106
|
+
'pt-br': 'Enviar mensagem',
|
|
107
|
+
ar: 'إرسال رسالة',
|
|
108
|
+
zh: '发送消息',
|
|
109
|
+
ru: 'Отправить сообщение',
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
Key: 'Platform GPT',
|
|
114
|
+
DefaultValue: 'Platform GPT',
|
|
115
|
+
Translations: {
|
|
116
|
+
en: 'Platform GPT',
|
|
117
|
+
fr: 'Plateforme GPT',
|
|
118
|
+
it: 'Piattaforma GPT',
|
|
119
|
+
es: 'Plataforma GPT',
|
|
120
|
+
de: 'Plattform GPT',
|
|
121
|
+
'pt-br': 'Plataforma GPT',
|
|
122
|
+
ar: 'منصة GPT',
|
|
123
|
+
zh: '平台 GPT',
|
|
124
|
+
ru: 'Платформа GPT',
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
Key: 'New Chat',
|
|
129
|
+
DefaultValue: 'New Chat',
|
|
130
|
+
Translations: {
|
|
131
|
+
en: 'New Chat',
|
|
132
|
+
fr: 'Nouvelle conversation',
|
|
133
|
+
it: 'Nuova chat',
|
|
134
|
+
es: 'Nuevo chat',
|
|
135
|
+
de: 'Neuer Chat',
|
|
136
|
+
'pt-br': 'Novo chat',
|
|
137
|
+
ar: 'محادثة جديدة',
|
|
138
|
+
zh: '新聊天',
|
|
139
|
+
ru: 'Новый чат',
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
Key: 'You',
|
|
144
|
+
DefaultValue: 'You',
|
|
145
|
+
Translations: {
|
|
146
|
+
en: 'You',
|
|
147
|
+
fr: 'Vous',
|
|
148
|
+
it: 'Tu',
|
|
149
|
+
es: 'Tú',
|
|
150
|
+
de: 'Du',
|
|
151
|
+
'pt-br': 'Você',
|
|
152
|
+
ar: 'أنت',
|
|
153
|
+
zh: '您',
|
|
154
|
+
ru: 'Вы',
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
Key: 'Write your message',
|
|
159
|
+
DefaultValue: 'Write your message',
|
|
160
|
+
Translations: {
|
|
161
|
+
en: 'Write your message',
|
|
162
|
+
fr: 'Écrivez votre message',
|
|
163
|
+
it: 'Scrivi il tuo messaggio',
|
|
164
|
+
es: 'Escribe tu mensaje',
|
|
165
|
+
de: 'Schreiben Sie Ihre Nachricht',
|
|
166
|
+
'pt-br': 'Escreva sua mensagem',
|
|
167
|
+
ar: 'اكتب رسالتك',
|
|
168
|
+
zh: '写下您的消息',
|
|
169
|
+
ru: 'Напишите ваше сообщение',
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
Key: 'Send',
|
|
174
|
+
DefaultValue: 'Send',
|
|
175
|
+
Translations: {
|
|
176
|
+
en: 'Send',
|
|
177
|
+
fr: 'Envoyer',
|
|
178
|
+
it: 'Invia',
|
|
179
|
+
es: 'Enviar',
|
|
180
|
+
de: 'Senden',
|
|
181
|
+
'pt-br': 'Enviar',
|
|
182
|
+
ar: 'إرسال',
|
|
183
|
+
zh: '发送',
|
|
184
|
+
ru: 'Отправить',
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
Key: 'Call Interface',
|
|
189
|
+
DefaultValue: 'Call Interface',
|
|
190
|
+
Translations: {
|
|
191
|
+
en: 'Call Interface',
|
|
192
|
+
fr: "Interface d'appel",
|
|
193
|
+
it: 'Interfaccia chiamata',
|
|
194
|
+
es: 'Interfaz de llamada',
|
|
195
|
+
de: 'Anrufoberfläche',
|
|
196
|
+
'pt-br': 'Interface de chamada',
|
|
197
|
+
ar: 'واجهة الاتصال',
|
|
198
|
+
zh: '呼叫界面',
|
|
199
|
+
ru: 'Интерфейс звонка',
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
Key: 'Close',
|
|
204
|
+
DefaultValue: 'Close',
|
|
205
|
+
Translations: {
|
|
206
|
+
en: 'Close',
|
|
207
|
+
fr: 'Fermer',
|
|
208
|
+
it: 'Chiudi',
|
|
209
|
+
es: 'Cerrar',
|
|
210
|
+
de: 'Schließen',
|
|
211
|
+
'pt-br': 'Fechar',
|
|
212
|
+
ar: 'إغلاق',
|
|
213
|
+
zh: '关闭',
|
|
214
|
+
ru: 'Закрыть',
|
|
215
|
+
},
|
|
216
|
+
},
|
|
217
|
+
];
|
|
218
|
+
}
|
|
219
|
+
setEventId(id) {
|
|
220
|
+
this.eventId = id;
|
|
221
|
+
}
|
|
222
|
+
getTranslation(key) {
|
|
223
|
+
const lang = (localStorage.getItem('defaultLanguage-' + this.eventId) || 'en').replace(/^"|"$/g, '');
|
|
224
|
+
const entry = this.translationsData.find((item) => item.Key === key);
|
|
225
|
+
if (!entry) {
|
|
226
|
+
return key; // fallback
|
|
227
|
+
}
|
|
228
|
+
return entry.Translations[lang] || entry.DefaultValue || key;
|
|
229
|
+
}
|
|
230
|
+
getLang(eventId) {
|
|
231
|
+
const suffix = eventId ? `-${eventId}` : '';
|
|
232
|
+
const storageKey = `defaultLanguage${suffix}`;
|
|
233
|
+
return localStorage.getItem(storageKey) || 'en';
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
TranslationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
237
|
+
TranslationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TranslationService, providedIn: 'root' });
|
|
238
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TranslationService, decorators: [{
|
|
239
|
+
type: Injectable,
|
|
240
|
+
args: [{
|
|
241
|
+
providedIn: 'root',
|
|
242
|
+
}]
|
|
243
|
+
}] });
|
|
244
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2hpdmVncHQvZXZlbnRzZ3B0LWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3RyYW5zbGF0aW9ucy90cmFuc2xhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxrQkFBa0I7SUFIL0I7UUFJVSxZQUFPLEdBQWtCLElBQUksQ0FBQztRQTJCOUIscUJBQWdCLEdBQVU7WUFDaEM7Z0JBQ0YsR0FBRyxFQUFFLE1BQU07Z0JBQ1gsWUFBWSxFQUFFLE1BQU07Z0JBQ3BCLFlBQVksRUFBRTtvQkFDWixFQUFFLEVBQUUsTUFBTTtvQkFDVixFQUFFLEVBQUUsUUFBUTtvQkFDWixFQUFFLEVBQUUsT0FBTztvQkFDWCxFQUFFLEVBQUUsUUFBUTtvQkFDWixFQUFFLEVBQUUsVUFBVTtvQkFDZCxPQUFPLEVBQUUsUUFBUTtvQkFDakIsRUFBRSxFQUFFLEtBQUs7b0JBQ1QsRUFBRSxFQUFFLElBQUk7b0JBQ1IsRUFBRSxFQUFFLFlBQVk7aUJBQ2pCO2FBQ0Y7WUFFRztnQkFFQSxHQUFHLEVBQUUscUNBQXFDO2dCQUMxQyxZQUFZLEVBQUUsNkNBQTZDO2dCQUMzRCxZQUFZLEVBQUU7b0JBQ1YsRUFBRSxFQUFFLDZDQUE2QztvQkFDakQsRUFBRSxFQUFFLGdEQUFnRDtvQkFDcEQsRUFBRSxFQUFFLDZDQUE2QztvQkFDakQsRUFBRSxFQUFFLHVDQUF1QztvQkFDM0MsRUFBRSxFQUFFLHNEQUFzRDtvQkFDMUQsT0FBTyxFQUFFLDRDQUE0QztvQkFDckQsRUFBRSxFQUFFLHdDQUF3QztvQkFDNUMsRUFBRSxFQUFFLGtCQUFrQjtvQkFDdEIsRUFBRSxFQUFFLDZDQUE2QztpQkFDcEQ7YUFDSjtZQUNHO2dCQUNBLEdB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QUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUVyRSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxHQUFHLENBQUMsQ0FBQyxXQUFXO1NBQ3hCO1FBRUQsT0FBTyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksR0FBRyxDQUFDO0lBQy9ELENBQUM7SUFFTyxPQUFPLENBQUMsT0FBdUI7UUFDckMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDNUMsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLE1BQU0sRUFBRSxDQUFDO1FBRTlDLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDbEQsQ0FBQzs7Z0hBMUJVLGtCQUFrQjtvSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgZXZlbnRJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgc2V0RXZlbnRJZChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5ldmVudElkID0gaWQ7XG4gIH1cblxuICBnZXRUcmFuc2xhdGlvbihrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbGFuZyA9IChcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkZWZhdWx0TGFuZ3VhZ2UtJyArIHRoaXMuZXZlbnRJZCkgfHwgJ2VuJ1xuICAgICkucmVwbGFjZSgvXlwifFwiJC9nLCAnJyk7XG5cbiAgICBjb25zdCBlbnRyeSA9IHRoaXMudHJhbnNsYXRpb25zRGF0YS5maW5kKChpdGVtKSA9PiBpdGVtLktleSA9PT0ga2V5KTtcblxuICAgIGlmICghZW50cnkpIHtcbiAgICAgIHJldHVybiBrZXk7IC8vIGZhbGxiYWNrXG4gICAgfVxuXG4gICAgcmV0dXJuIGVudHJ5LlRyYW5zbGF0aW9uc1tsYW5nXSB8fCBlbnRyeS5EZWZhdWx0VmFsdWUgfHwga2V5O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMYW5nKGV2ZW50SWQ/OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdWZmaXggPSBldmVudElkID8gYC0ke2V2ZW50SWR9YCA6ICcnO1xuICAgIGNvbnN0IHN0b3JhZ2VLZXkgPSBgZGVmYXVsdExhbmd1YWdlJHtzdWZmaXh9YDtcblxuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShzdG9yYWdlS2V5KSB8fCAnZW4nO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2xhdGlvbnNEYXRhOiBhbnlbXSA9IFtcbiAgICB7XG4gIEtleTogXCJDb3B5XCIsXG4gIERlZmF1bHRWYWx1ZTogXCJDb3B5XCIsXG4gIFRyYW5zbGF0aW9uczoge1xuICAgIGVuOiBcIkNvcHlcIixcbiAgICBmcjogXCJDb3BpZXJcIixcbiAgICBpdDogXCJDb3BpYVwiLFxuICAgIGVzOiBcIkNvcGlhclwiLFxuICAgIGRlOiBcIktvcGllcmVuXCIsXG4gICAgXCJwdC1iclwiOiBcIkNvcGlhclwiLFxuICAgIGFyOiBcItmG2LPYrlwiLFxuICAgIHpoOiBcIuWkjeWItlwiLFxuICAgIHJ1OiBcItCa0L7Qv9C40YDQvtCy0LDRgtGMXCJcbiAgfVxufVxuLFxuICAgIHtcblxuICAgIEtleTogXCJNYXkgSSBhc3Npc3QgeW91IHdpdGggYW55dGhpbmcgZWxzZVwiLFxuICAgIERlZmF1bHRWYWx1ZTogXCJHcmVhdC4gTWF5IEkgYXNzaXN0IHlvdSB3aXRoIGFueXRoaW5nIGVsc2U/XCIsXG4gICAgVHJhbnNsYXRpb25zOiB7XG4gICAgICAgIGVuOiBcIkdyZWF0LiBNYXkgSSBhc3Npc3QgeW91IHdpdGggYW55dGhpbmcgZWxzZT9cIixcbiAgICAgICAgZnI6IFwiUGFyZmFpdC4gUHVpcy1qZSB2b3VzIGFpZGVyIGF2ZWMgYXV0cmUgY2hvc2UgP1wiLFxuICAgICAgICBpdDogXCJQZXJmZXR0by4gUG9zc28gYWl1dGFydGkgY29uIHF1YWxjb3MnYWx0cm8/XCIsXG4gICAgICAgIGVzOiBcIkdlbmlhbC4gwr9QdWVkbyBheXVkYXJ0ZSBjb24gYWxnbyBtw6FzP1wiLFxuICAgICAgICBkZTogXCJTdXBlci4gS2FubiBpY2ggSWhuZW4gbm9jaCBiZWkgZXR3YXMgYW5kZXJlbSBoZWxmZW4/XCIsXG4gICAgICAgIFwicHQtYnJcIjogXCLDk3RpbW8uIFBvc3NvIGFqdWRhciBjb20gbWFpcyBhbGd1bWEgY29pc2E/XCIsXG4gICAgICAgIGFyOiBcItix2KfYpti5LiDZh9mEINmK2YXZg9mG2YbZiiDZhdiz2KfYudiv2KrZgyDZgdmKINij2Yog2LTZitihINii2K7YsdifXCIsXG4gICAgICAgIHpoOiBcIuWkquWlveS6huOAgui/mOacieS7gOS5iOaIkeWPr+S7peW4ruaCqOeahOWQl++8n1wiLFxuICAgICAgICBydTogXCLQntGC0LvQuNGH0L3Qvi4g0JzQvtCz0YMg0LvQuCDRjyDQv9C+0LzQvtGH0Ywg0LLQsNC8INGBINGH0LXQvC3RgtC+INC10YnRkT9cIlxuICAgIH1cbn0sXG4gICAge1xuICAgIEtleTogXCJXZSBhcmUgc29ycnkgd2UndmUgbm90IGJlZW4gYWJsZSB0byBhbnN3ZXIgeW91ciBxdWVzdGlvblwiLFxuICAgIERlZmF1bHRWYWx1ZTogXCJXZSBhcmUgc29ycnkgd2UndmUgbm90IGJlZW4gYWJsZSB0byBhbnN3ZXIgeW91ciBxdWVzdGlvbi4gSG93ZXZlciwgb3VyIGRlZGljYXRlZCBzdXBwb3J0IHRlYW0gaXMgaGFwcHkgdG8gaGVscC4gUGxlYXNlIDxhIGhyZWY9XFxcIm1haWx0bzpzdXBwb3J0QHNvY2lhbDI3LmNvbVxcXCI+Y2xpY2sgaGVyZTwvYT4gYW5kIGEgaHVtYW4gYWdlbnQgd2lsbCBhc3Npc3QgeW91IGFzIHNvb24gYXMgcG9zc2libGUuXCIsXG4gICAgVHJhbnNsYXRpb25zOiB7XG4gICAgICAgIGVuOiBcIldlIGFyZSBzb3JyeSB3ZSd2ZSBub3QgYmVlbiBhYmxlIHRvIGFuc3dlciB5b3VyIHF1ZXN0aW9uLiBIb3dldmVyLCBvdXIgZGVkaWNhdGVkIHN1cHBvcnQgdGVhbSBpcyBoYXBweSB0byBoZWxwLiBQbGVhc2UgPGEgaHJlZj1cXFwibWFpbHRvOnN1cHBvcnRAc29jaWFsMjcuY29tXFxcIj5jbGljayBoZXJlPC9hPiBhbmQgYSBodW1hbiBhZ2VudCB3aWxsIGFzc2lzdCB5b3UgYXMgc29vbiBhcyBwb3NzaWJsZS5cIixcbiAgICAgICAgZnI6IFwiTm91cyBzb21tZXMgZMOpc29sw6lzIGRlIG5lIHBhcyBhdm9pciBwdSByw6lwb25kcmUgw6Agdm90cmUgcXVlc3Rpb24uIENlcGVuZGFudCwgbm90cmUgw6lxdWlwZSBkJ2Fzc2lzdGFuY2Ugc2UgZmVyYSB1biBwbGFpc2lyIGRlIHZvdXMgYWlkZXIuIFZldWlsbGV6IDxhIGhyZWY9XFxcIm1haWx0bzpzdXBwb3J0QHNvY2lhbDI3LmNvbVxcXCI+Y2xpcXVlciBpY2k8L2E+IGV0IHVuIGFnZW50IGh1bWFpbiB2b3VzIGFzc2lzdGVyYSBkw6hzIHF1ZSBwb3NzaWJsZS5cIixcbiAgICAgICAgaXQ6IFwiQ2kgZGlzcGlhY2UgZGkgbm9uIGVzc2VyZSByaXVzY2l0aSBhIHJpc3BvbmRlcmUgYWxsYSB0dWEgZG9tYW5kYS4gVHV0dGF2aWEsIGlsIG5vc3RybyB0ZWFtIGRpIHN1cHBvcnRvIGRlZGljYXRvIHNhcsOgIGxpZXRvIGRpIGFpdXRhcnRpLiBUaSBwcmVnaGlhbW8gZGkgPGEgaHJlZj1cXFwibWFpbHRvOnN1cHBvcnRAc29jaWFsMjcuY29tXFxcIj5mYXJlIGNsaWMgcXVpPC9hPiBlIHVuIG9wZXJhdG9yZSB1bWFubyB0aSBhc3Npc3RlcsOgIGFsIHBpw7kgcHJlc3RvLlwiLFxuICAgICAgICBlczogXCJMYW1lbnRhbW9zIG5vIGhhYmVyIHBvZGlkbyByZXNwb25kZXIgYSB0dSBwcmVndW50YS4gU2luIGVtYmFyZ28sIG51ZXN0cm8gZXF1aXBvIGRlIHNvcG9ydGUgZXN0YXLDoSBlbmNhbnRhZG8gZGUgYXl1ZGFydGUuIFBvciBmYXZvciwgPGEgaHJlZj1cXFwibWFpbHRvOnN1cHBvcnRAc29jaWFsMjcuY29tXFxcIj5oYXogY2xpYyBhcXXDrTwvYT4geSB1biBhZ2VudGUgaHVtYW5vIHRlIGFzaXN0aXLDoSBsbyBhbnRlcyBwb3NpYmxlLlwiLFxuICAgICAgICBkZTogXCJFcyB0dXQgdW5zIGxlaWQsIGRhc3Mgd2lyIElocmUgRnJhZ2UgbmljaHQgYmVhbnR3b3J0ZW4ga29ubnRlbi4gVW5zZXIgZW5nYWdpZXJ0ZXMgU3VwcG9ydC1UZWFtIGhpbGZ0IElobmVuIGplZG9jaCBnZXJuZSB3ZWl0ZXIuIEJpdHRlIDxhIGhyZWY9XFxcIm1haWx0bzpzdXBwb3J0QHNvY2lhbDI3LmNvbVxcXCI+a2xpY2tlbiBTaWUgaGllcjwvYT4sIHVuZCBlaW4gbWVuc2NobGljaGVyIE1pdGFyYmVpdGVyIHdpcmQgSWhuZW4gc28gYmFsZCB3aWUgbcO2Z2xpY2ggaGVsZmVuLlwiLFxuICAgICAgICBcInB0LWJyXCI6IFwiTGFtZW50YW1vcyBuw6NvIHRlciBjb25zZWd1aWRvIHJlc3BvbmRlciDDoCBzdWEgcGVyZ3VudGEuIE5vIGVudGFudG8sIG5vc3NhIGVxdWlwZSBkZSBzdXBvcnRlIGRlZGljYWRhIGZpY2Fyw6EgZmVsaXogZW0gYWp1ZGFyLiBQb3IgZmF2b3IsIDxhIGhyZWY9XFxcIm1haWx0bzpzdXBwb3J0QHNvY2lhbDI3LmNvbVxcXCI+Y2xpcXVlIGFxdWk8L2E+IGUgdW0gYWdlbnRlIGh1bWFubyBvIGFqdWRhcsOhIG8gbWFpcyByw6FwaWRvIHBvc3PDrXZlbC5cIixcbiAgICAgICAgYXI6IFwi2YbYo9iz2YEg2YTYudiv2YUg2KrZhdmD2YbZhtinINmF2YYg2KfZhNil2KzYp9io2Kkg2LnZhNmJINiz2KTYp9mE2YMuINmI2YXYuSDYsNmE2YPYjCDZitiz2LnYryDZgdix2YrZgiDYp9mE2K/YudmFINin2YTZhdiu2LXYtSDZhNiv2YrZhtinINio2YXYs9in2LnYr9iq2YMuINmK2LHYrNmJIDxhIGhyZWY9XFxcIm1haWx0bzpzdXBwb3J0QHNvY2lhbDI3LmNvbVxcXCI+2KfZhNmG2YLYsSDZh9mG2Kc8L2E+INmI2LPZitiz2KfYudiv2YMg2KPYrdivINin2YTZiNmD2YTYp9ihINin2YTYqNi02LHZitmK2YYg2YHZiiDYo9mC2LHYqCDZiNmC2Kog2YXZhdmD2YYuXCIsXG4gICAgICAgIHpoOiBcIuW+iOaKseatieaIkeS7rOacquiDveWbnuetlOaCqOeahOmXrumimOOAguS4jei/h++8jOaIkeS7rOeahOS4k+WxnuaUr+aMgeWboumYn+W+iOS5kOaEj+S4uuaCqOaPkOS+m+W4ruWKqeOAguivtzxhIGhyZWY9XFxcIm1haWx0bzpzdXBwb3J0QHNvY2lhbDI3LmNvbVxcXCI+54K55Ye76L+Z6YeMPC9hPu+8jOS6uuW3peWuouacjeWwhuWwveW/q+S4uuaCqOaPkOS+m+WNj+WKqeOAglwiLFxuICAgICAgICBydTogXCLQmiDRgdC+0LbQsNC70LXQvdC40Y4sINC80Ysg0L3QtSDRgdC80L7Qs9C70Lgg0L7RgtCy0LXRgtC40YLRjCDQvdCwINCy0LDRiCDQstC+0L/RgNC+0YEuINCe0LTQvdCw0LrQviDQvdCw0YjQsCDRgdC70YPQttCx0LAg0L/QvtC00LTQtdGA0LbQutC4INGBINGA0LDQtNC+0YHRgtGM0Y4g0LLQsNC8INC/0L7QvNC+0LbQtdGCLiDQn9C+0LbQsNC70YPQudGB0YLQsCwgPGEgaHJlZj1cXFwibWFpbHRvOnN1cHBvcnRAc29jaWFsMjcuY29tXFxcIj7QvdCw0LbQvNC40YLQtSDQt9C00LXRgdGMPC9hPiwg0Lgg0L3QsNGIINC+0L/QtdGA0LDRgtC+0YAg0YHQstGP0LbQtdGC0YHRjyDRgSDQstCw0LzQuCDQutCw0Log0LzQvtC20L3QviDRgdC60L7RgNC10LUuXCJcbiAgICB9XG59LFxuICAgIHtcbiAgICAgIEtleTogJ0FzayBhbnl0aGluZycsXG4gICAgICBEZWZhdWx0VmFsdWU6ICdBc2sgYW55dGhpbmcnLFxuICAgICAgVHJhbnNsYXRpb25zOiB7XG4gICAgICAgIGVuOiAnQXNrIGFueXRoaW5nJyxcbiAgICAgICAgZnI6ICdEZW1hbmRleiBjZSBxdWUgdm91cyB2b3VsZXonLFxuICAgICAgICBpdDogJ0NoaWVkaSBxdWFsc2lhc2kgY29zYScsXG4gICAgICAgIGVzOiAnUHJlZ3VudGEgbG8gcXVlIHF1aWVyYXMnLFxuICAgICAgICBkZTogJ0ZyYWcgYWxsZXMnLFxuICAgICAgICAncHQtYnInOiAnUGVyZ3VudGUgcXVhbHF1ZXIgY29pc2EnLFxuICAgICAgICBhcjogJ9in2LPYo9mEINij2Yog2LTZitihJyxcbiAgICAgICAgemg6ICfpmo/kvr/pl64nLFxuICAgICAgICBydTogJ9Ch0L/RgNC+0YHQuNGC0LUg0YfRgtC+INGD0LPQvtC00L3QvicsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgS2V5OiAnQXNzaXN0YW50JyxcbiAgICAgIERlZmF1bHRWYWx1ZTogJ0Fzc2lzdGFudCcsXG4gICAgICBUcmFuc2xhdGlvbnM6IHtcbiAgICAgICAgZW46ICdBc3Npc3RhbnQnLFxuICAgICAgICBmcjogJ0Fzc2lzdGFudCcsXG4gICAgICAgIGl0OiAnQXNzaXN0ZW50ZScsXG4gICAgICAgIGVzOiAnQXNpc3RlbnRlJyxcbiAgICAgICAgZGU6ICdBc3Npc3RlbnQnLFxuICAgICAgICAncHQtYnInOiAnQXNzaXN0ZW50ZScsXG4gICAgICAgIGFyOiAn2YXYs9in2LnYrycsXG4gICAgICAgIHpoOiAn5Yqp5omLJyxcbiAgICAgICAgcnU6ICfQkNGB0YHQuNGB0YLQtdC90YInLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIEtleTogJ1lvdXIgcGVyc29uYWwgb3IgY29tcGFueSBpbmZvcm1hdGlvbiBpcyBrZXB0IHByaXZhdGUgYW5kIHNlY3VyZSB3aXRoaW4gdGhpcyBjaGF0LicsXG4gICAgICBEZWZhdWx0VmFsdWU6XG4gICAgICAgICdZb3VyIHBlcnNvbmFsIG9yIGNvbXBhbnkgaW5mb3JtYXRpb24gaXMga2VwdCBwcml2YXRlIGFuZCBzZWN1cmUgd2l0aGluIHRoaXMgY2hhdC4nLFxuICAgICAgVHJhbnNsYXRpb25zOiB7XG4gICAgICAgIGVuOiAnWW91ciBwZXJzb25hbCBvciBjb21wYW55IGluZm9ybWF0aW9uIGlzIGtlcHQgcHJpdmF0ZSBhbmQgc2VjdXJlIHdpdGhpbiB0aGlzIGNoYXQuJyxcbiAgICAgICAgZnI6ICdWb3MgaW5mb3JtYXRpb25zIHBlcnNvbm5lbGxlcyBvdSBjZWxsZXMgZGUgdm90cmUgZW50cmVwcmlzZSBzb250IGNvbnNlcnbDqWVzIHByaXbDqWVzIGV0IHPDqWN1cmlzw6llcyBkYW5zIGNldHRlIGNvbnZlcnNhdGlvbi4nLFxuICAgICAgICBpdDogXCJMZSB0dWUgaW5mb3JtYXppb25pIHBlcnNvbmFsaSBvIGF6aWVuZGFsaSBzb25vIG1hbnRlbnV0ZSBwcml2YXRlIGUgc2ljdXJlIGFsbCdpbnRlcm5vIGRpIHF1ZXN0YSBjaGF0LlwiLFxuICAgICAgICBlczogJ1R1IGluZm9ybWFjacOzbiBwZXJzb25hbCBvIGRlIGxhIGVtcHJlc2Egc2UgbWFudGllbmUgcHJpdmFkYSB5IHNlZ3VyYSBkZW50cm8gZGUgZXN0ZSBjaGF0LicsXG4gICAgICAgIGRlOiAnSWhyZSBwZXJzw7ZubGljaGVuIG9kZXIgZ2VzY2jDpGZ0bGljaGVuIEluZm9ybWF0aW9uZW4gYmxlaWJlbiBpbiBkaWVzZW0gQ2hhdCBwcml2YXQgdW5kIHNpY2hlci4nLFxuICAgICAgICAncHQtYnInOlxuICAgICAgICAgICdTdWFzIGluZm9ybWHDp8O1ZXMgcGVzc29haXMgb3UgZGEgZW1wcmVzYSBzw6NvIG1hbnRpZGFzIHByaXZhZGFzIGUgc2VndXJhcyBkZW50cm8gZGVzdGUgY2hhdC4nLFxuICAgICAgICBhcjogJ9iq2LjZhCDZhdi52YTZiNmF2KfYqtmDINin2YTYtNiu2LXZitipINij2Ygg2YXYudmE2YjZhdin2Kog2LTYsdmD2KrZgyDYrtin2LXYqSDZiNii2YXZhtipINiv2KfYrtmEINmH2LDZhyDYp9mE2YXYrdin2K/Yq9ipLicsXG4gICAgICAgIHpoOiAn5oKo55qE5Liq5Lq65oiW5YWs5Y+45L+h5oGv5Zyo5q2k6IGK5aSp5Lit5L+d5oyB56eB5a+G5ZKM5a6J5YWo44CCJyxcbiAgICAgICAgcnU6ICfQktCw0YjQsCDQu9C40YfQvdCw0Y8g0LjQu9C4INC60L7RgNC/0L7RgNCw0YLQuNCy0L3QsNGPINC40L3RhNC+0YDQvNCw0YbQuNGPINC+0YHRgtCw0LXRgtGB0Y8g0LrQvtC90YTQuNC00LXQvdGG0LjQsNC70YzQvdC+0Lkg0Lgg0LfQsNGJ0LjRidC10L3QvdC+0Lkg0LIg0Y3RgtC+0Lwg0YfQsNGC0LUuJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBLZXk6ICdTZW5kIG1lc3NhZ2UnLFxuICAgICAgRGVmYXVsdFZhbHVlOiAnU2VuZCBtZXNzYWdlJyxcbiAgICAgIFRyYW5zbGF0aW9uczoge1xuICAgICAgICBlbjogJ1NlbmQgbWVzc2FnZScsXG4gICAgICAgIGZyOiAnRW52b3llciB1biBtZXNzYWdlJyxcbiAgICAgICAgaXQ6ICdJbnZpYSBtZXNzYWdnaW8nLFxuICAgICAgICBlczogJ0VudmlhciBtZW5zYWplJyxcbiAgICAgICAgZGU6ICdOYWNocmljaHQgc2VuZGVuJyxcbiAgICAgICAgJ3B0LWJyJzogJ0VudmlhciBtZW5zYWdlbScsXG4gICAgICAgIGFyOiAn2KXYsdiz2KfZhCDYsdiz2KfZhNipJyxcbiAgICAgICAgemg6ICflj5HpgIHmtojmga8nLFxuICAgICAgICBydTogJ9Ce0YLQv9GA0LDQstC40YLRjCDRgdC+0L7QsdGJ0LXQvdC40LUnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIEtleTogJ1BsYXRmb3JtIEdQVCcsXG4gICAgICBEZWZhdWx0VmFsdWU6ICdQbGF0Zm9ybSBHUFQnLFxuICAgICAgVHJhbnNsYXRpb25zOiB7XG4gICAgICAgIGVuOiAnUGxhdGZvcm0gR1BUJyxcbiAgICAgICAgZnI6ICdQbGF0ZWZvcm1lIEdQVCcsXG4gICAgICAgIGl0OiAnUGlhdHRhZm9ybWEgR1BUJyxcbiAgICAgICAgZXM6ICdQbGF0YWZvcm1hIEdQVCcsXG4gICAgICAgIGRlOiAnUGxhdHRmb3JtIEdQVCcsXG4gICAgICAgICdwdC1icic6ICdQbGF0YWZvcm1hIEdQVCcsXG4gICAgICAgIGFyOiAn2YXZhti12KkgR1BUJyxcbiAgICAgICAgemg6ICflubPlj7AgR1BUJyxcbiAgICAgICAgcnU6ICfQn9C70LDRgtGE0L7RgNC80LAgR1BUJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBLZXk6ICdOZXcgQ2hhdCcsXG4gICAgICBEZWZhdWx0VmFsdWU6ICdOZXcgQ2hhdCcsXG4gICAgICBUcmFuc2xhdGlvbnM6IHtcbiAgICAgICAgZW46ICdOZXcgQ2hhdCcsXG4gICAgICAgIGZyOiAnTm91dmVsbGUgY29udmVyc2F0aW9uJyxcbiAgICAgICAgaXQ6ICdOdW92YSBjaGF0JyxcbiAgICAgICAgZXM6ICdOdWV2byBjaGF0JyxcbiAgICAgICAgZGU6ICdOZXVlciBDaGF0JyxcbiAgICAgICAgJ3B0LWJyJzogJ05vdm8gY2hhdCcsXG4gICAgICAgIGFyOiAn2YXYrdin2K/Yq9ipINis2K/Zitiv2KknLFxuICAgICAgICB6aDogJ+aWsOiBiuWkqScsXG4gICAgICAgIHJ1OiAn0J3QvtCy0YvQuSDRh9Cw0YInLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIEtleTogJ1lvdScsXG4gICAgICBEZWZhdWx0VmFsdWU6ICdZb3UnLFxuICAgICAgVHJhbnNsYXRpb25zOiB7XG4gICAgICAgIGVuOiAnWW91JyxcbiAgICAgICAgZnI6ICdWb3VzJyxcbiAgICAgICAgaXQ6ICdUdScsXG4gICAgICAgIGVzOiAnVMO6JyxcbiAgICAgICAgZGU6ICdEdScsXG4gICAgICAgICdwdC1icic6ICdWb2PDqicsXG4gICAgICAgIGFyOiAn2KPZhtiqJyxcbiAgICAgICAgemg6ICfmgqgnLFxuICAgICAgICBydTogJ9CS0YsnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIEtleTogJ1dyaXRlIHlvdXIgbWVzc2FnZScsXG4gICAgICBEZWZhdWx0VmFsdWU6ICdXcml0ZSB5b3VyIG1lc3NhZ2UnLFxuICAgICAgVHJhbnNsYXRpb25zOiB7XG4gICAgICAgIGVuOiAnV3JpdGUgeW91ciBtZXNzYWdlJyxcbiAgICAgICAgZnI6ICfDiWNyaXZleiB2b3RyZSBtZXNzYWdlJyxcbiAgICAgICAgaXQ6ICdTY3JpdmkgaWwgdHVvIG1lc3NhZ2dpbycsXG4gICAgICAgIGVzOiAnRXNjcmliZSB0dSBtZW5zYWplJyxcbiAgICAgICAgZGU6ICdTY2hyZWliZW4gU2llIElocmUgTmFjaHJpY2h0JyxcbiAgICAgICAgJ3B0LWJyJzogJ0VzY3JldmEgc3VhIG1lbnNhZ2VtJyxcbiAgICAgICAgYXI6ICfYp9mD2KrYqCDYsdiz2KfZhNiq2YMnLFxuICAgICAgICB6aDogJ+WGmeS4i+aCqOeahOa2iOaBrycsXG4gICAgICAgIHJ1OiAn0J3QsNC/0LjRiNC40YLQtSDQstCw0YjQtSDRgdC+0L7QsdGJ0LXQvdC40LUnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIEtleTogJ1NlbmQnLFxuICAgICAgRGVmYXVsdFZhbHVlOiAnU2VuZCcsXG4gICAgICBUcmFuc2xhdGlvbnM6IHtcbiAgICAgICAgZW46ICdTZW5kJyxcbiAgICAgICAgZnI6ICdFbnZveWVyJyxcbiAgICAgICAgaXQ6ICdJbnZpYScsXG4gICAgICAgIGVzOiAnRW52aWFyJyxcbiAgICAgICAgZGU6ICdTZW5kZW4nLFxuICAgICAgICAncHQtYnInOiAnRW52aWFyJyxcbiAgICAgICAgYXI6ICfYpdix2LPYp9mEJyxcbiAgICAgICAgemg6ICflj5HpgIEnLFxuICAgICAgICBydTogJ9Ce0YLQv9GA0LDQstC40YLRjCcsXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBLZXk6ICdDYWxsIEludGVyZmFjZScsXG4gICAgICBEZWZhdWx0VmFsdWU6ICdDYWxsIEludGVyZmFjZScsXG4gICAgICBUcmFuc2xhdGlvbnM6IHtcbiAgICAgICAgZW46ICdDYWxsIEludGVyZmFjZScsXG4gICAgICAgIGZyOiBcIkludGVyZmFjZSBkJ2FwcGVsXCIsXG4gICAgICAgIGl0OiAnSW50ZXJmYWNjaWEgY2hpYW1hdGEnLFxuICAgICAgICBlczogJ0ludGVyZmF6IGRlIGxsYW1hZGEnLFxuICAgICAgICBkZTogJ0FucnVmb2JlcmZsw6RjaGUnLFxuICAgICAgICAncHQtYnInOiAnSW50ZXJmYWNlIGRlIGNoYW1hZGEnLFxuICAgICAgICBhcjogJ9mI2KfYrNmH2Kkg2KfZhNin2KrYtdin2YQnLFxuICAgICAgICB6aDogJ+WRvOWPq+eVjOmdoicsXG4gICAgICAgIHJ1OiAn0JjQvdGC0LXRgNGE0LXQudGBINC30LLQvtC90LrQsCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgS2V5OiAnQ2xvc2UnLFxuICAgICAgRGVmYXVsdFZhbHVlOiAnQ2xvc2UnLFxuICAgICAgVHJhbnNsYXRpb25zOiB7XG4gICAgICAgIGVuOiAnQ2xvc2UnLFxuICAgICAgICBmcjogJ0Zlcm1lcicsXG4gICAgICAgIGl0OiAnQ2hpdWRpJyxcbiAgICAgICAgZXM6ICdDZXJyYXInLFxuICAgICAgICBkZTogJ1NjaGxpZcOfZW4nLFxuICAgICAgICAncHQtYnInOiAnRmVjaGFyJyxcbiAgICAgICAgYXI6ICfYpdi62YTYp9mCJyxcbiAgICAgICAgemg6ICflhbPpl60nLFxuICAgICAgICBydTogJ9CX0LDQutGA0YvRgtGMJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==
|