@dytesdk/angular-ui-kit 2.1.4 → 2.1.5

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/dist/README.md ADDED
@@ -0,0 +1,85 @@
1
+ <!-- PROJECT LOGO -->
2
+ <p align="center">
3
+ <a href="https://dyte.io">
4
+ <img src="https://assets.dyte.io/logo-outlined.png" alt="Logo" width="120" />
5
+ </a>
6
+
7
+ <h2 align="center">Angular UI Kit by dyte</h3>
8
+
9
+ <p align="center">
10
+ A set of UI components to truly customize your meeting UI, in Angular
11
+ <br />
12
+ <a href="https://docs.dyte.io"><strong>Explore the docs »</strong></a>
13
+ <br />
14
+ <br />
15
+ <a href="https://app.dyte.io">View Demo</a>
16
+ ·
17
+ <a href="https://community.dyte.io">Report Bug</a>
18
+ ·
19
+ <a href="https://community.dyte.io">Request Feature</a>
20
+ </p>
21
+ </p>
22
+
23
+ <!-- TABLE OF CONTENTS -->
24
+
25
+ ## Table of Contents
26
+
27
+ - [Getting Started](#getting-started)
28
+ - [Usage](#usage)
29
+ - [About](#about)
30
+
31
+ <!-- GETTING STARTED -->
32
+
33
+ ## Getting Started
34
+
35
+ > There are separate UI Kit packages for VanillaJS and React. Check out the links to the packages below
36
+
37
+ > [UI Kit](https://npmjs.com/package/@dytesdk/ui-kit) · [React UI Kit](https://npmjs.com/package/@dytesdk/react-ui-kit)
38
+
39
+ First, you will need to install the ui-kit along with the [web-core](https://npmjs.com/package/@dytesdk/web-core) package:
40
+
41
+ ```sh
42
+ npm i @dytesdk/angular-ui-kit @dytesdk/web-core
43
+ ```
44
+
45
+ The `web-core` package is the package which handles all the low level logic required for a meeting by interating with our servers. Use it to create a meeting object, which you can pass along to the UI Kit components.
46
+
47
+ ## Usage
48
+
49
+ Load the component in your template file (component.html):
50
+
51
+ ```html
52
+ <dyte-meeting #myid></dyte-meeting>
53
+ ```
54
+
55
+ Then initialize and pass the meeting object to the component:
56
+
57
+ ```tsx
58
+ class AppComponent {
59
+ title = 'MyProject';
60
+ @ViewChild('myid') meetingComponent: DyteMeeting;
61
+ dyteMeeting: DyteClient;
62
+
63
+ async ngAfterViewInit() {
64
+ const meeting = await DyteClient.init({
65
+ roomName: '<room-name>',
66
+ authToken: '<auth-token>',
67
+ defaults: {
68
+ video: true,
69
+ audio: true,
70
+ },
71
+ });
72
+ meeting.joinRoom();
73
+ this.dyteMeeting = meeting;
74
+ if (this.meetingComponent) this.meetingComponent.meeting = meeting;
75
+ }
76
+ }
77
+ ```
78
+
79
+ ## About
80
+
81
+ `angular-ui-kit` is created & maintained by Dyte, Inc. You can find us on Twitter - [@dyte_io](https://twitter.com/dyte_io) or write to us at `dev [at] dyte.io`.
82
+
83
+ The names and logos for Dyte are trademarks of Dyte, Inc.
84
+
85
+ We love open source software! See [our other projects](https://github.com/dyte-in) and [our products](https://dyte.io).
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@dytesdk/angular-ui-kit" />
5
+ export * from './public-api';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHl0ZXNkay1hbmd1bGFyLXVpLWtpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9keXRlc2RrLWFuZ3VsYXItdWkta2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -0,0 +1,20 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { defineCustomElements } from '@dytesdk/ui-kit/loader';
3
+ import { DIRECTIVES } from './stencil-generated';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./stencil-generated/components";
6
+ defineCustomElements(window);
7
+ export class DyteComponentsModule {
8
+ }
9
+ DyteComponentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DyteComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ DyteComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DyteComponentsModule, declarations: [i1.DyteAi, i1.DyteAiChat, i1.DyteAiHome, i1.DyteAiToggle, i1.DyteAiTranscriptions, i1.DyteAudioGrid, i1.DyteAudioTile, i1.DyteAudioVisualizer, i1.DyteAvatar, i1.DyteBreakoutRoomManager, i1.DyteBreakoutRoomParticipants, i1.DyteBreakoutRoomsManager, i1.DyteBreakoutRoomsToggle, i1.DyteBroadcastMessageModal, i1.DyteButton, i1.DyteCameraSelector, i1.DyteCameraToggle, i1.DyteCaptionToggle, i1.DyteChannelCreator, i1.DyteChannelDetails, i1.DyteChannelHeader, i1.DyteChannelSelectorUi, i1.DyteChannelSelectorView, i1.DyteChat, i1.DyteChatComposerUi, i1.DyteChatComposerView, i1.DyteChatMessage, i1.DyteChatMessagesUi, i1.DyteChatMessagesUiPaginated, i1.DyteChatSearchResults, i1.DyteChatSelectorUi, i1.DyteChatToggle, i1.DyteClock, i1.DyteConfirmationModal, i1.DyteControlbar, i1.DyteControlbarButton, i1.DyteCounter, i1.DyteDebugger, i1.DyteDebuggerAudio, i1.DyteDebuggerScreenshare, i1.DyteDebuggerSystem, i1.DyteDebuggerToggle, i1.DyteDebuggerVideo, i1.DyteDialog, i1.DyteDialogManager, i1.DyteDraftAttachmentView, i1.DyteEmojiPicker, i1.DyteEmojiPickerButton, i1.DyteEndedScreen, i1.DyteFileDropzone, i1.DyteFileMessage, i1.DyteFileMessageView, i1.DyteFilePickerButton, i1.DyteFullscreenToggle, i1.DyteGrid, i1.DyteGridPagination, i1.DyteHeader, i1.DyteIcon, i1.DyteIdleScreen, i1.DyteImageMessage, i1.DyteImageMessageView, i1.DyteImageViewer, i1.DyteInformationTooltip, i1.DyteJoinStage, i1.DyteLeaveButton, i1.DyteLeaveMeeting, i1.DyteLivestreamIndicator, i1.DyteLivestreamPlayer, i1.DyteLivestreamToggle, i1.DyteLogo, i1.DyteMarkdownView, i1.DyteMeeting, i1.DyteMeetingTitle, i1.DyteMenu, i1.DyteMenuItem, i1.DyteMenuList, i1.DyteMessageListView, i1.DyteMessageView, i1.DyteMicToggle, i1.DyteMicrophoneSelector, i1.DyteMixedGrid, i1.DyteMoreToggle, i1.DyteMuteAllButton, i1.DyteMuteAllConfirmation, i1.DyteNameTag, i1.DyteNetworkIndicator, i1.DyteNotification, i1.DyteNotifications, i1.DyteOverlayModal, i1.DytePaginatedList, i1.DyteParticipant, i1.DyteParticipantCount, i1.DyteParticipantSetup, i1.DyteParticipantTile, i1.DyteParticipants, i1.DyteParticipantsAudio, i1.DyteParticipantsStageList, i1.DyteParticipantsStageQueue, i1.DyteParticipantsToggle, i1.DyteParticipantsViewerList, i1.DyteParticipantsWaitingList, i1.DytePermissionsMessage, i1.DytePipToggle, i1.DytePluginMain, i1.DytePlugins, i1.DytePluginsToggle, i1.DytePoll, i1.DytePollForm, i1.DytePolls, i1.DytePollsToggle, i1.DyteRecordingIndicator, i1.DyteRecordingToggle, i1.DyteScreenShareToggle, i1.DyteScreenshareView, i1.DyteSettings, i1.DyteSettingsAudio, i1.DyteSettingsToggle, i1.DyteSettingsVideo, i1.DyteSetupScreen, i1.DyteSidebar, i1.DyteSidebarUi, i1.DyteSimpleGrid, i1.DyteSpeakerSelector, i1.DyteSpinner, i1.DyteSpotlightGrid, i1.DyteSpotlightIndicator, i1.DyteStage, i1.DyteStageToggle, i1.DyteSwitch, i1.DyteTabBar, i1.DyteTextComposerView, i1.DyteTextField, i1.DyteTextMessage, i1.DyteTextMessageView, i1.DyteTooltip, i1.DyteTranscript, i1.DyteTranscripts, i1.DyteUiProvider, i1.DyteViewerCount, i1.DyteVirtualizedParticipantList, i1.DyteWaitingScreen], exports: [i1.DyteAi, i1.DyteAiChat, i1.DyteAiHome, i1.DyteAiToggle, i1.DyteAiTranscriptions, i1.DyteAudioGrid, i1.DyteAudioTile, i1.DyteAudioVisualizer, i1.DyteAvatar, i1.DyteBreakoutRoomManager, i1.DyteBreakoutRoomParticipants, i1.DyteBreakoutRoomsManager, i1.DyteBreakoutRoomsToggle, i1.DyteBroadcastMessageModal, i1.DyteButton, i1.DyteCameraSelector, i1.DyteCameraToggle, i1.DyteCaptionToggle, i1.DyteChannelCreator, i1.DyteChannelDetails, i1.DyteChannelHeader, i1.DyteChannelSelectorUi, i1.DyteChannelSelectorView, i1.DyteChat, i1.DyteChatComposerUi, i1.DyteChatComposerView, i1.DyteChatMessage, i1.DyteChatMessagesUi, i1.DyteChatMessagesUiPaginated, i1.DyteChatSearchResults, i1.DyteChatSelectorUi, i1.DyteChatToggle, i1.DyteClock, i1.DyteConfirmationModal, i1.DyteControlbar, i1.DyteControlbarButton, i1.DyteCounter, i1.DyteDebugger, i1.DyteDebuggerAudio, i1.DyteDebuggerScreenshare, i1.DyteDebuggerSystem, i1.DyteDebuggerToggle, i1.DyteDebuggerVideo, i1.DyteDialog, i1.DyteDialogManager, i1.DyteDraftAttachmentView, i1.DyteEmojiPicker, i1.DyteEmojiPickerButton, i1.DyteEndedScreen, i1.DyteFileDropzone, i1.DyteFileMessage, i1.DyteFileMessageView, i1.DyteFilePickerButton, i1.DyteFullscreenToggle, i1.DyteGrid, i1.DyteGridPagination, i1.DyteHeader, i1.DyteIcon, i1.DyteIdleScreen, i1.DyteImageMessage, i1.DyteImageMessageView, i1.DyteImageViewer, i1.DyteInformationTooltip, i1.DyteJoinStage, i1.DyteLeaveButton, i1.DyteLeaveMeeting, i1.DyteLivestreamIndicator, i1.DyteLivestreamPlayer, i1.DyteLivestreamToggle, i1.DyteLogo, i1.DyteMarkdownView, i1.DyteMeeting, i1.DyteMeetingTitle, i1.DyteMenu, i1.DyteMenuItem, i1.DyteMenuList, i1.DyteMessageListView, i1.DyteMessageView, i1.DyteMicToggle, i1.DyteMicrophoneSelector, i1.DyteMixedGrid, i1.DyteMoreToggle, i1.DyteMuteAllButton, i1.DyteMuteAllConfirmation, i1.DyteNameTag, i1.DyteNetworkIndicator, i1.DyteNotification, i1.DyteNotifications, i1.DyteOverlayModal, i1.DytePaginatedList, i1.DyteParticipant, i1.DyteParticipantCount, i1.DyteParticipantSetup, i1.DyteParticipantTile, i1.DyteParticipants, i1.DyteParticipantsAudio, i1.DyteParticipantsStageList, i1.DyteParticipantsStageQueue, i1.DyteParticipantsToggle, i1.DyteParticipantsViewerList, i1.DyteParticipantsWaitingList, i1.DytePermissionsMessage, i1.DytePipToggle, i1.DytePluginMain, i1.DytePlugins, i1.DytePluginsToggle, i1.DytePoll, i1.DytePollForm, i1.DytePolls, i1.DytePollsToggle, i1.DyteRecordingIndicator, i1.DyteRecordingToggle, i1.DyteScreenShareToggle, i1.DyteScreenshareView, i1.DyteSettings, i1.DyteSettingsAudio, i1.DyteSettingsToggle, i1.DyteSettingsVideo, i1.DyteSetupScreen, i1.DyteSidebar, i1.DyteSidebarUi, i1.DyteSimpleGrid, i1.DyteSpeakerSelector, i1.DyteSpinner, i1.DyteSpotlightGrid, i1.DyteSpotlightIndicator, i1.DyteStage, i1.DyteStageToggle, i1.DyteSwitch, i1.DyteTabBar, i1.DyteTextComposerView, i1.DyteTextField, i1.DyteTextMessage, i1.DyteTextMessageView, i1.DyteTooltip, i1.DyteTranscript, i1.DyteTranscripts, i1.DyteUiProvider, i1.DyteViewerCount, i1.DyteVirtualizedParticipantList, i1.DyteWaitingScreen] });
11
+ DyteComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DyteComponentsModule, imports: [[]] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DyteComponentsModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ declarations: [...DIRECTIVES],
16
+ imports: [],
17
+ exports: [...DIRECTIVES],
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFFakQsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7QUFPN0IsTUFBTSxPQUFPLG9CQUFvQjs7a0hBQXBCLG9CQUFvQjttSEFBcEIsb0JBQW9CO21IQUFwQixvQkFBb0IsWUFIdEIsRUFBRTs0RkFHQSxvQkFBb0I7a0JBTGhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxFQUFFO29CQUNYLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50cyB9IGZyb20gJ0BkeXRlc2RrL3VpLWtpdC9sb2FkZXInO1xuXG5pbXBvcnQgeyBESVJFQ1RJVkVTIH0gZnJvbSAnLi9zdGVuY2lsLWdlbmVyYXRlZCc7XG5cbmRlZmluZUN1c3RvbUVsZW1lbnRzKHdpbmRvdyk7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogWy4uLkRJUkVDVElWRVNdLFxuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogWy4uLkRJUkVDVElWRVNdLFxufSlcbmV4cG9ydCBjbGFzcyBEeXRlQ29tcG9uZW50c01vZHVsZSB7fVxuIl19
@@ -0,0 +1,53 @@
1
+ /* eslint-disable */
2
+ /* tslint:disable */
3
+ import { fromEvent } from 'rxjs';
4
+ export const proxyInputs = (Cmp, inputs) => {
5
+ const Prototype = Cmp.prototype;
6
+ inputs.forEach(item => {
7
+ Object.defineProperty(Prototype, item, {
8
+ get() {
9
+ return this.el[item];
10
+ },
11
+ set(val) {
12
+ this.z.runOutsideAngular(() => (this.el[item] = val));
13
+ }
14
+ });
15
+ });
16
+ };
17
+ export const proxyMethods = (Cmp, methods) => {
18
+ const Prototype = Cmp.prototype;
19
+ methods.forEach(methodName => {
20
+ Prototype[methodName] = function () {
21
+ const args = arguments;
22
+ return this.z.runOutsideAngular(() => this.el[methodName].apply(this.el, args));
23
+ };
24
+ });
25
+ };
26
+ export const proxyOutputs = (instance, el, events) => {
27
+ events.forEach(eventName => instance[eventName] = fromEvent(el, eventName));
28
+ };
29
+ export const defineCustomElement = (tagName, customElement) => {
30
+ if (customElement !== undefined &&
31
+ typeof customElements !== 'undefined' &&
32
+ !customElements.get(tagName)) {
33
+ customElements.define(tagName, customElement);
34
+ }
35
+ };
36
+ // tslint:disable-next-line: only-arrow-functions
37
+ export function ProxyCmp(opts) {
38
+ const decorator = function (cls) {
39
+ const { defineCustomElementFn, inputs, methods } = opts;
40
+ if (defineCustomElementFn !== undefined) {
41
+ defineCustomElementFn();
42
+ }
43
+ if (inputs) {
44
+ proxyInputs(cls, inputs);
45
+ }
46
+ if (methods) {
47
+ proxyMethods(cls, methods);
48
+ }
49
+ return cls;
50
+ };
51
+ return decorator;
52
+ }
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3N0ZW5jaWwtZ2VuZXJhdGVkL2FuZ3VsYXItY29tcG9uZW50LWxpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBUSxFQUFFLE1BQWdCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDcEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFO1lBQ3JDLEdBQUc7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7WUFDRCxHQUFHLENBQUMsR0FBUTtnQkFDVixJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hELENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQVEsRUFBRSxPQUFpQixFQUFFLEVBQUU7SUFDMUQsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztJQUNoQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQzNCLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRztZQUN0QixNQUFNLElBQUksR0FBRyxTQUFTLENBQUM7WUFDdkIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUNuQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUN6QyxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFhLEVBQUUsRUFBTyxFQUFFLE1BQWdCLEVBQUUsRUFBRTtJQUN2RSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUM5RSxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLE9BQWUsRUFBRSxhQUFrQixFQUFFLEVBQUU7SUFDekUsSUFDRSxhQUFhLEtBQUssU0FBUztRQUMzQixPQUFPLGNBQWMsS0FBSyxXQUFXO1FBQ3JDLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFDNUI7UUFDQSxjQUFjLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztLQUMvQztBQUNILENBQUMsQ0FBQTtBQUVELGlEQUFpRDtBQUNqRCxNQUFNLFVBQVUsUUFBUSxDQUFDLElBQXlFO0lBQ2hHLE1BQU0sU0FBUyxHQUFHLFVBQVUsR0FBUTtRQUNsQyxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztRQUV4RCxJQUFJLHFCQUFxQixLQUFLLFNBQVMsRUFBRTtZQUN2QyxxQkFBcUIsRUFBRSxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxNQUFNLEVBQUU7WUFDVixXQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxPQUFPLEVBQUU7WUFDWCxZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLENBQUM7SUFDRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbi8qIHRzbGludDpkaXNhYmxlICovXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNvbnN0IHByb3h5SW5wdXRzID0gKENtcDogYW55LCBpbnB1dHM6IHN0cmluZ1tdKSA9PiB7XG4gIGNvbnN0IFByb3RvdHlwZSA9IENtcC5wcm90b3R5cGU7XG4gIGlucHV0cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShQcm90b3R5cGUsIGl0ZW0sIHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxbaXRlbV07XG4gICAgICB9LFxuICAgICAgc2V0KHZhbDogYW55KSB7XG4gICAgICAgIHRoaXMuei5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiAodGhpcy5lbFtpdGVtXSA9IHZhbCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBwcm94eU1ldGhvZHMgPSAoQ21wOiBhbnksIG1ldGhvZHM6IHN0cmluZ1tdKSA9PiB7XG4gIGNvbnN0IFByb3RvdHlwZSA9IENtcC5wcm90b3R5cGU7XG4gIG1ldGhvZHMuZm9yRWFjaChtZXRob2ROYW1lID0+IHtcbiAgICBQcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgcmV0dXJuIHRoaXMuei5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICB0aGlzLmVsW21ldGhvZE5hbWVdLmFwcGx5KHRoaXMuZWwsIGFyZ3MpXG4gICAgICApO1xuICAgIH07XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHByb3h5T3V0cHV0cyA9IChpbnN0YW5jZTogYW55LCBlbDogYW55LCBldmVudHM6IHN0cmluZ1tdKSA9PiB7XG4gIGV2ZW50cy5mb3JFYWNoKGV2ZW50TmFtZSA9PiBpbnN0YW5jZVtldmVudE5hbWVdID0gZnJvbUV2ZW50KGVsLCBldmVudE5hbWUpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmluZUN1c3RvbUVsZW1lbnQgPSAodGFnTmFtZTogc3RyaW5nLCBjdXN0b21FbGVtZW50OiBhbnkpID0+IHtcbiAgaWYgKFxuICAgIGN1c3RvbUVsZW1lbnQgIT09IHVuZGVmaW5lZCAmJlxuICAgIHR5cGVvZiBjdXN0b21FbGVtZW50cyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAhY3VzdG9tRWxlbWVudHMuZ2V0KHRhZ05hbWUpXG4gICkge1xuICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSh0YWdOYW1lLCBjdXN0b21FbGVtZW50KTtcbiAgfVxufVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG9ubHktYXJyb3ctZnVuY3Rpb25zXG5leHBvcnQgZnVuY3Rpb24gUHJveHlDbXAob3B0czogeyBkZWZpbmVDdXN0b21FbGVtZW50Rm4/OiAoKSA9PiB2b2lkLCBpbnB1dHM/OiBhbnk7IG1ldGhvZHM/OiBhbnkgfSkge1xuICBjb25zdCBkZWNvcmF0b3IgPSBmdW5jdGlvbiAoY2xzOiBhbnkpIHtcbiAgICBjb25zdCB7IGRlZmluZUN1c3RvbUVsZW1lbnRGbiwgaW5wdXRzLCBtZXRob2RzIH0gPSBvcHRzO1xuXG4gICAgaWYgKGRlZmluZUN1c3RvbUVsZW1lbnRGbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWZpbmVDdXN0b21FbGVtZW50Rm4oKTtcbiAgICB9XG5cbiAgICBpZiAoaW5wdXRzKSB7XG4gICAgICBwcm94eUlucHV0cyhjbHMsIGlucHV0cyk7XG4gICAgfVxuICAgIGlmIChtZXRob2RzKSB7XG4gICAgICBwcm94eU1ldGhvZHMoY2xzLCBtZXRob2RzKTtcbiAgICB9XG4gICAgcmV0dXJuIGNscztcbiAgfTtcbiAgcmV0dXJuIGRlY29yYXRvcjtcbn1cbiJdfQ==