@dicdikshaorg/video-player-v9
Version:
Contains Video player library components powered by angular. These components are designed to be used in sunbird consumption platforms *(mobile app, web portal, offline desktop app)* to drive reusability, maintainability hence reducing the redundant devel
269 lines • 22.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/sunbird-video-player.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import * as _ from 'lodash-es';
import { UtilService } from './services/util.service';
import { CsTelemetryModule } from '@project-sunbird/client-services/telemetry';
import * as i0 from "@angular/core";
import * as i1 from "./services/util.service";
var SunbirdVideoPlayerService = /** @class */ (function () {
function SunbirdVideoPlayerService(utilService) {
this.utilService = utilService;
this.contentSessionId = this.utilService.uniqueId();
}
/**
* @param {?} __0
* @return {?}
*/
SunbirdVideoPlayerService.prototype.initialize = /**
* @param {?} __0
* @return {?}
*/
function (_a) {
var context = _a.context, config = _a.config, metadata = _a.metadata;
this.context = context;
this.config = config;
this.playSessionId = this.utilService.uniqueId();
if (!CsTelemetryModule.instance.isInitialised) {
CsTelemetryModule.instance.init({});
CsTelemetryModule.instance.telemetryService.initTelemetry({
config: {
pdata: context.pdata,
env: 'contentplayer',
channel: context.channel,
did: context.did,
authtoken: context.authToken || '',
uid: context.uid || '',
sid: context.sid,
batchsize: 20,
mode: context.mode,
host: context.host || '',
endpoint: context.endpoint || '/data/v3/telemetry',
tags: context.tags,
cdata: [{ id: this.contentSessionId, type: 'ContentSession' },
{ id: this.playSessionId, type: 'PlaySession' },
{ id: '2.0', type: 'PlayerVersion' }]
},
userOrgDetails: {}
});
}
this.telemetryObject = {
id: metadata.identifier,
type: 'Content',
ver: metadata.pkgVersion + '',
rollup: context.objectRollup || {}
};
};
/**
* @param {?} duration
* @return {?}
*/
SunbirdVideoPlayerService.prototype.start = /**
* @param {?} duration
* @return {?}
*/
function (duration) {
CsTelemetryModule.instance.telemetryService.raiseStartTelemetry({
options: this.getEventOptions(),
edata: { type: 'content', mode: 'play', pageid: '', duration: Number((duration / 1e3).toFixed(2)) }
});
};
/**
* @param {?} duration
* @param {?} totallength
* @param {?} currentlength
* @param {?} endpageseen
* @param {?} totalseekedlength
* @param {?} visitedlength
* @param {?} score
* @return {?}
*/
SunbirdVideoPlayerService.prototype.end = /**
* @param {?} duration
* @param {?} totallength
* @param {?} currentlength
* @param {?} endpageseen
* @param {?} totalseekedlength
* @param {?} visitedlength
* @param {?} score
* @return {?}
*/
function (duration, totallength, currentlength, endpageseen, totalseekedlength, visitedlength, score) {
/** @type {?} */
var durationSec = Number((duration / 1e3).toFixed(2));
CsTelemetryModule.instance.telemetryService.raiseEndTelemetry({
edata: {
type: 'content',
mode: 'play',
pageid: 'sunbird-player-Endpage',
summary: [
{
progress: Number(((currentlength / totallength) * 100).toFixed(0))
},
{
totallength: totallength
},
{
visitedlength: visitedlength
},
{
visitedcontentend: (totallength === currentlength)
},
{
totalseekedlength: totalseekedlength
},
{
endpageseen: endpageseen
},
{
score: score
}
],
duration: durationSec
},
options: this.getEventOptions()
});
};
/**
* @param {?} id
* @param {?} currentPage
* @param {?=} extraValues
* @return {?}
*/
SunbirdVideoPlayerService.prototype.interact = /**
* @param {?} id
* @param {?} currentPage
* @param {?=} extraValues
* @return {?}
*/
function (id, currentPage, extraValues) {
CsTelemetryModule.instance.telemetryService.raiseInteractTelemetry({
options: this.getEventOptions(),
edata: { type: 'TOUCH', subtype: '', id: id, pageid: currentPage + '', extra: extraValues }
});
};
/**
* @param {?} data
* @return {?}
*/
SunbirdVideoPlayerService.prototype.heartBeat = /**
* @param {?} data
* @return {?}
*/
function (data) {
CsTelemetryModule.instance.playerTelemetryService.onHeartBeatEvent(data, {});
};
/**
* @param {?} currentPage
* @param {?=} cdata
* @return {?}
*/
SunbirdVideoPlayerService.prototype.impression = /**
* @param {?} currentPage
* @param {?=} cdata
* @return {?}
*/
function (currentPage, cdata) {
if (cdata === void 0) { cdata = {}; }
/** @type {?} */
var impressionEvent = {
options: this.getEventOptions(),
edata: { type: 'workflow', subtype: '', pageid: currentPage + '', uri: '' }
};
if (!_.isEmpty(cdata)) {
impressionEvent.options.context.cdata.push(cdata);
}
CsTelemetryModule.instance.telemetryService.raiseImpressionTelemetry(impressionEvent);
};
/**
* @param {?} errorCode
* @param {?} errorType
* @param {?=} stacktrace
* @return {?}
*/
SunbirdVideoPlayerService.prototype.error = /**
* @param {?} errorCode
* @param {?} errorType
* @param {?=} stacktrace
* @return {?}
*/
function (errorCode, errorType, stacktrace) {
CsTelemetryModule.instance.telemetryService.raiseErrorTelemetry({
options: this.getEventOptions(),
edata: {
err: errorCode,
errtype: errorType,
stacktrace: (stacktrace && stacktrace.toString()) || ''
}
});
};
/**
* @private
* @return {?}
*/
SunbirdVideoPlayerService.prototype.getEventOptions = /**
* @private
* @return {?}
*/
function () {
return ({
object: this.telemetryObject,
context: {
channel: this.context.channel,
pdata: this.context.pdata,
env: 'contentplayer',
sid: this.context.sid,
uid: this.context.uid,
cdata: [{ id: this.contentSessionId, type: 'ContentSession' },
{ id: this.playSessionId, type: 'PlaySession' },
{ id: '2.0', type: 'PlayerVersion' }],
rollup: this.context.contextRollup || {}
}
});
};
SunbirdVideoPlayerService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
SunbirdVideoPlayerService.ctorParameters = function () { return [
{ type: UtilService }
]; };
/** @nocollapse */ SunbirdVideoPlayerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SunbirdVideoPlayerService_Factory() { return new SunbirdVideoPlayerService(i0.ɵɵinject(i1.UtilService)); }, token: SunbirdVideoPlayerService, providedIn: "root" });
return SunbirdVideoPlayerService;
}());
export { SunbirdVideoPlayerService };
if (false) {
/**
* @type {?}
* @private
*/
SunbirdVideoPlayerService.prototype.contentSessionId;
/**
* @type {?}
* @private
*/
SunbirdVideoPlayerService.prototype.playSessionId;
/**
* @type {?}
* @private
*/
SunbirdVideoPlayerService.prototype.telemetryObject;
/**
* @type {?}
* @private
*/
SunbirdVideoPlayerService.prototype.context;
/** @type {?} */
SunbirdVideoPlayerService.prototype.config;
/**
* @type {?}
* @private
*/
SunbirdVideoPlayerService.prototype.utilService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VuYmlyZC12aWRlby1wbGF5ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkaWNkaWtzaGFvcmcvdmlkZW8tcGxheWVyLXY5LyIsInNvdXJjZXMiOlsibGliL3N1bmJpcmQtdmlkZW8tcGxheWVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxDQUFDLE1BQU0sV0FBVyxDQUFDO0FBRS9CLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7O0FBRS9FO0lBV0UsbUNBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RELENBQUM7Ozs7O0lBRU0sOENBQVU7Ozs7SUFBakIsVUFBa0IsRUFBMkM7WUFBekMsb0JBQU8sRUFBRSxrQkFBTSxFQUFFLHNCQUFRO1FBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRTtZQUM3QyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQ3ZEO2dCQUNFLE1BQU0sRUFBRTtvQkFDTixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7b0JBQ3BCLEdBQUcsRUFBRSxlQUFlO29C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Qjs7OztnQkFMUSxXQUFXOzs7b0NBSHBCO0NBNkpDLEFBdkpELElBdUpDO1NBcEpZLHlCQUF5Qjs7Ozs7O0lBRXBDLHFEQUFpQzs7Ozs7SUFDakMsa0RBQThCOzs7OztJQUM5QixvREFBNkI7Ozs7O0lBQzdCLDRDQUFnQjs7SUFDaEIsMkNBQWM7Ozs7O0lBRUYsZ0RBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCB7IFBsYXllckNvbmZpZyB9IGZyb20gJy4vcGxheWVySW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91dGlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDc1RlbGVtZXRyeU1vZHVsZSB9IGZyb20gJ0Bwcm9qZWN0LXN1bmJpcmQvY2xpZW50LXNlcnZpY2VzL3RlbGVtZXRyeSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdW5iaXJkVmlkZW9QbGF5ZXJTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBjb250ZW50U2Vzc2lvbklkOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBwbGF5U2Vzc2lvbklkOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSB0ZWxlbWV0cnlPYmplY3Q6IGFueTtcclxuICBwcml2YXRlIGNvbnRleHQ7XHJcbiAgcHVibGljIGNvbmZpZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1dGlsU2VydmljZTogVXRpbFNlcnZpY2UpIHtcclxuICAgIHRoaXMuY29udGVudFNlc3Npb25JZCA9IHRoaXMudXRpbFNlcnZpY2UudW5pcXVlSWQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0aWFsaXplKHsgY29udGV4dCwgY29uZmlnLCBtZXRhZGF0YSB9OiBQbGF5ZXJDb25maWcpIHtcclxuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XHJcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcclxuICAgIHRoaXMucGxheVNlc3Npb25JZCA9IHRoaXMudXRpbFNlcnZpY2UudW5pcXVlSWQoKTtcclxuXHJcbiAgICBpZiAoIUNzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLmlzSW5pdGlhbGlzZWQpIHtcclxuICAgICAgQ3NUZWxlbWV0cnlNb2R1bGUuaW5zdGFuY2UuaW5pdCh7fSk7XHJcbiAgICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UuaW5pdFRlbGVtZXRyeShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb25maWc6IHtcclxuICAgICAgICAgICAgcGRhdGE6IGNvbnRleHQucGRhdGEsXHJcbiAgICAgICAgICAgIGVudjogJ2NvbnRlbnRwbGF5ZXInLFxyXG4gICAgICAgICAgICBjaGFubmVsOiBjb250ZXh0LmNoYW5uZWwsXHJcbiAgICAgICAgICAgIGRpZDogY29udGV4dC5kaWQsXHJcbiAgICAgICAgICAgIGF1dGh0b2tlbjogY29udGV4dC5hdXRoVG9rZW4gfHwgJycsXHJcbiAgICAgICAgICAgIHVpZDogY29udGV4dC51aWQgfHwgJycsXHJcbiAgICAgICAgICAgIHNpZDogY29udGV4dC5zaWQsXHJcbiAgICAgICAgICAgIGJhdGNoc2l6ZTogMjAsXHJcbiAgICAgICAgICAgIG1vZGU6IGNvbnRleHQubW9kZSxcclxuICAgICAgICAgICAgaG9zdDogY29udGV4dC5ob3N0IHx8ICcnLFxyXG4gICAgICAgICAgICBlbmRwb2ludDogY29udGV4dC5lbmRwb2ludCB8fCAnL2RhdGEvdjMvdGVsZW1ldHJ5JyxcclxuICAgICAgICAgICAgdGFnczogY29udGV4dC50YWdzLFxyXG4gICAgICAgICAgICBjZGF0YTogW3sgaWQ6IHRoaXMuY29udGVudFNlc3Npb25JZCwgdHlwZTogJ0NvbnRlbnRTZXNzaW9uJyB9LFxyXG4gICAgICAgICAgICB7IGlkOiB0aGlzLnBsYXlTZXNzaW9uSWQsIHR5cGU6ICdQbGF5U2Vzc2lvbicgfSxcclxuICAgICAgICAgICAge2lkOiAnMi4wJyAsIHR5cGU6ICdQbGF5ZXJWZXJzaW9uJ31dXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdXNlck9yZ0RldGFpbHM6IHt9XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGVsZW1ldHJ5T2JqZWN0ID0ge1xyXG4gICAgICBpZDogbWV0YWRhdGEuaWRlbnRpZmllcixcclxuICAgICAgdHlwZTogJ0NvbnRlbnQnLFxyXG4gICAgICB2ZXI6IG1ldGFkYXRhLnBrZ1ZlcnNpb24gKyAnJyxcclxuICAgICAgcm9sbHVwOiBjb250ZXh0Lm9iamVjdFJvbGx1cCB8fCB7fVxyXG4gICAgfTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgc3RhcnQoZHVyYXRpb24pIHtcclxuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VTdGFydFRlbGVtZXRyeShcclxuICAgICAge1xyXG4gICAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKCksXHJcbiAgICAgICAgZWRhdGE6IHsgdHlwZTogJ2NvbnRlbnQnLCBtb2RlOiAncGxheScsIHBhZ2VpZDogJycsIGR1cmF0aW9uOiBOdW1iZXIoKGR1cmF0aW9uIC8gMWUzKS50b0ZpeGVkKDIpKSB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGVuZChkdXJhdGlvbiwgdG90YWxsZW5ndGgsIGN1cnJlbnRsZW5ndGgsIGVuZHBhZ2VzZWVuLCB0b3RhbHNlZWtlZGxlbmd0aCwgdmlzaXRlZGxlbmd0aCwgc2NvcmUpIHtcclxuICAgIGNvbnN0IGR1cmF0aW9uU2VjID0gTnVtYmVyKChkdXJhdGlvbiAvIDFlMykudG9GaXhlZCgyKSk7XHJcbiAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS50ZWxlbWV0cnlTZXJ2aWNlLnJhaXNlRW5kVGVsZW1ldHJ5KHtcclxuICAgICAgZWRhdGE6IHtcclxuICAgICAgICB0eXBlOiAnY29udGVudCcsXHJcbiAgICAgICAgbW9kZTogJ3BsYXknLFxyXG4gICAgICAgIHBhZ2VpZDogJ3N1bmJpcmQtcGxheWVyLUVuZHBhZ2UnLFxyXG4gICAgICAgIHN1bW1hcnk6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgcHJvZ3Jlc3M6IE51bWJlcigoKGN1cnJlbnRsZW5ndGggLyB0b3RhbGxlbmd0aCkgKiAxMDApLnRvRml4ZWQoMCkpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0b3RhbGxlbmd0aFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmlzaXRlZGxlbmd0aFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmlzaXRlZGNvbnRlbnRlbmQ6ICh0b3RhbGxlbmd0aCA9PT0gY3VycmVudGxlbmd0aClcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHRvdGFsc2Vla2VkbGVuZ3RoXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBlbmRwYWdlc2VlblxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgc2NvcmVcclxuICAgICAgICAgIH1cclxuICAgICAgICBdLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblNlY1xyXG4gICAgICB9LFxyXG4gICAgICBvcHRpb25zOiB0aGlzLmdldEV2ZW50T3B0aW9ucygpXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW50ZXJhY3QoaWQsIGN1cnJlbnRQYWdlLCBleHRyYVZhbHVlcz8pIHtcclxuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VJbnRlcmFjdFRlbGVtZXRyeSh7XHJcbiAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKCksXHJcbiAgICAgIGVkYXRhOiB7IHR5cGU6ICdUT1VDSCcsIHN1YnR5cGU6ICcnLCBpZCwgcGFnZWlkOiBjdXJyZW50UGFnZSArICcnICwgZXh0cmE6IGV4dHJhVmFsdWVzIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhlYXJ0QmVhdChkYXRhKSB7XHJcbiAgICBDc1RlbGVtZXRyeU1vZHVsZS5pbnN0YW5jZS5wbGF5ZXJUZWxlbWV0cnlTZXJ2aWNlLm9uSGVhcnRCZWF0RXZlbnQoZGF0YSwge30pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGltcHJlc3Npb24oY3VycmVudFBhZ2UsIGNkYXRhOiBhbnkgPSB7fSkge1xyXG4gICAgY29uc3QgaW1wcmVzc2lvbkV2ZW50ID0ge1xyXG4gICAgICBvcHRpb25zOiB0aGlzLmdldEV2ZW50T3B0aW9ucygpLFxyXG4gICAgICBlZGF0YTogeyB0eXBlOiAnd29ya2Zsb3cnLCBzdWJ0eXBlOiAnJywgcGFnZWlkOiBjdXJyZW50UGFnZSArICcnLCB1cmk6ICcnIH1cclxuICAgIH07XHJcbiAgICBpZiAoIV8uaXNFbXB0eShjZGF0YSkpIHtcclxuICAgICAgaW1wcmVzc2lvbkV2ZW50Lm9wdGlvbnMuY29udGV4dC5jZGF0YS5wdXNoKGNkYXRhKTtcclxuICAgIH1cclxuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VJbXByZXNzaW9uVGVsZW1ldHJ5KGltcHJlc3Npb25FdmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXJyb3IoZXJyb3JDb2RlOiBzdHJpbmcgLCBlcnJvclR5cGU6IHN0cmluZyAsICBzdGFja3RyYWNlPzogRXJyb3IpIHtcclxuICAgIENzVGVsZW1ldHJ5TW9kdWxlLmluc3RhbmNlLnRlbGVtZXRyeVNlcnZpY2UucmFpc2VFcnJvclRlbGVtZXRyeSh7XHJcbiAgICAgIG9wdGlvbnM6IHRoaXMuZ2V0RXZlbnRPcHRpb25zKCksXHJcbiAgICAgIGVkYXRhOiB7XHJcbiAgICAgICAgZXJyOiBlcnJvckNvZGUsXHJcbiAgICAgICAgZXJydHlwZTogZXJyb3JUeXBlLFxyXG4gICAgICAgIHN0YWNrdHJhY2U6IChzdGFja3RyYWNlICYmIHN0YWNrdHJhY2UudG9TdHJpbmcoKSkgfHwgJydcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEV2ZW50T3B0aW9ucygpIHtcclxuICAgIHJldHVybiAoe1xyXG4gICAgICBvYmplY3Q6IHRoaXMudGVsZW1ldHJ5T2JqZWN0LFxyXG4gICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgY2hhbm5lbDogdGhpcy5jb250ZXh0LmNoYW5uZWwsXHJcbiAgICAgICAgcGRhdGE6IHRoaXMuY29udGV4dC5wZGF0YSxcclxuICAgICAgICBlbnY6ICdjb250ZW50cGxheWVyJyxcclxuICAgICAgICBzaWQ6IHRoaXMuY29udGV4dC5zaWQsXHJcbiAgICAgICAgdWlkOiB0aGlzLmNvbnRleHQudWlkLFxyXG4gICAgICAgIGNkYXRhOiBbeyBpZDogdGhpcy5jb250ZW50U2Vzc2lvbklkLCB0eXBlOiAnQ29udGVudFNlc3Npb24nIH0sXHJcbiAgICAgICAgeyBpZDogdGhpcy5wbGF5U2Vzc2lvbklkLCB0eXBlOiAnUGxheVNlc3Npb24nIH0sXHJcbiAgICAgICAge2lkOiAnMi4wJyAsIHR5cGU6ICdQbGF5ZXJWZXJzaW9uJ31dLFxyXG4gICAgICAgIHJvbGx1cDogdGhpcy5jb250ZXh0LmNvbnRleHRSb2xsdXAgfHwge31cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==