diff --git a/dist/playkit-analytics-service.js b/dist/playkit-analytics-service.js index 512345b0..cbfef138 100644 --- a/dist/playkit-analytics-service.js +++ b/dist/playkit-analytics-service.js @@ -3,5 +3,5 @@ * Jonny Reeves, http://jonnyreeves.co.uk/ * js-logger may be freely distributed under the MIT license. */ -!function(i){"use strict";var u={};u.VERSION="1.4.1";var a,c={},s=function(e,t){return function(){return t.apply(e,arguments)}},l=function(){var e,t,n=arguments,r=n[0];for(t=1;t=t.value},debug:function(){this.invoke(u.DEBUG,arguments)},info:function(){this.invoke(u.INFO,arguments)},warn:function(){this.invoke(u.WARN,arguments)},error:function(){this.invoke(u.ERROR,arguments)},time:function(e){"string"==typeof e&&e.length>0&&this.invoke(u.TIME,[e,"start"])},timeEnd:function(e){"string"==typeof e&&e.length>0&&this.invoke(u.TIME,[e,"end"])},invoke:function(e,t){a&&this.enabledFor(e)&&a(t,l({level:e},this.context))}};var v=new p({filterLevel:u.OFF});!function(){var e=u;e.enabledFor=s(v,v.enabledFor),e.debug=s(v,v.debug),e.time=s(v,v.time),e.timeEnd=s(v,v.timeEnd),e.info=s(v,v.info),e.warn=s(v,v.warn),e.error=s(v,v.error),e.log=e.info}(),u.setHandler=function(e){a=e},u.setLevel=function(e){v.setLevel(e);for(var t in c)c.hasOwnProperty(t)&&c[t].setLevel(e)},u.getLevel=function(){return v.getLevel()},u.get=function(e){return c[e]||(c[e]=new p(l({name:e},v.context)))},u.createDefaultHandler=function(e){e=e||{},e.formatter=e.formatter||function(e,t){t.name&&e.unshift("["+t.name+"]")};var t={},n=function(e,t){Function.prototype.apply.call(e,console,t)};return"undefined"==typeof console?function(){}:function(r,o){r=Array.prototype.slice.call(r);var i,a=console.log;o.level===u.TIME?(i=(o.name?"["+o.name+"] ":"")+r[0],"start"===r[1]?console.time?console.time(i):t[i]=(new Date).getTime():console.timeEnd?console.timeEnd(i):n(a,[i+": "+((new Date).getTime()-t[i])+"ms"])):(o.level===u.WARN&&console.warn?a=console.warn:o.level===u.ERROR&&console.error?a=console.error:o.level===u.INFO&&console.info?a=console.info:o.level===u.DEBUG&&console.debug&&(a=console.debug),e.formatter(r,o),n(a,r))}},u.useDefaults=function(e){u.setLevel(e&&e.defaultLevel||u.DEBUG),u.setHandler(u.createDefaultHandler(e))},r=u,void 0!==(o="function"==typeof r?r.call(t,n,t,e):r)&&(e.exports=o)}()},,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n=t.value},debug:function(){this.invoke(u.DEBUG,arguments)},info:function(){this.invoke(u.INFO,arguments)},warn:function(){this.invoke(u.WARN,arguments)},error:function(){this.invoke(u.ERROR,arguments)},time:function(e){"string"==typeof e&&e.length>0&&this.invoke(u.TIME,[e,"start"])},timeEnd:function(e){"string"==typeof e&&e.length>0&&this.invoke(u.TIME,[e,"end"])},invoke:function(e,t){a&&this.enabledFor(e)&&a(t,l({level:e},this.context))}};var v=new p({filterLevel:u.OFF});!function(){var e=u;e.enabledFor=s(v,v.enabledFor),e.debug=s(v,v.debug),e.time=s(v,v.time),e.timeEnd=s(v,v.timeEnd),e.info=s(v,v.info),e.warn=s(v,v.warn),e.error=s(v,v.error),e.log=e.info}(),u.setHandler=function(e){a=e},u.setLevel=function(e){v.setLevel(e);for(var t in c)c.hasOwnProperty(t)&&c[t].setLevel(e)},u.getLevel=function(){return v.getLevel()},u.get=function(e){return c[e]||(c[e]=new p(l({name:e},v.context)))},u.createDefaultHandler=function(e){e=e||{},e.formatter=e.formatter||function(e,t){t.name&&e.unshift("["+t.name+"]")};var t={},n=function(e,t){Function.prototype.apply.call(e,console,t)};return"undefined"==typeof console?function(){}:function(r,o){r=Array.prototype.slice.call(r);var i,a=console.log;o.level===u.TIME?(i=(o.name?"["+o.name+"] ":"")+r[0],"start"===r[1]?console.time?console.time(i):t[i]=(new Date).getTime():console.timeEnd?console.timeEnd(i):n(a,[i+": "+((new Date).getTime()-t[i])+"ms"])):(o.level===u.WARN&&console.warn?a=console.warn:o.level===u.ERROR&&console.error?a=console.error:o.level===u.INFO&&console.info?a=console.info:o.level===u.DEBUG&&console.debug&&(a=console.debug),e.formatter(r,o),n(a,r))}},u.useDefaults=function(e){u.setLevel(e&&e.defaultLevel||u.DEBUG),u.setHandler(u.createDefaultHandler(e))},r=u,void 0!==(o="function"==typeof r?r.call(t,n,t,e):r)&&(e.exports=o)}()},,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n} headers The request headers\n */\n\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n\n /**\n * @member - Service headers\n * @type {Map}\n */\n\n /**\n * @member - Service action\n * @type {string}\n */\n function RequestBuilder() {\n var headers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map();\n\n _classCallCheck(this, RequestBuilder);\n\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n\n /**\n * @member - Service tag\n * @type {string}\n */\n\n /**\n * @member - Service URL\n * @type {string}\n */\n\n /**\n * @member - Service params\n * @type {any}\n */\n\n /**\n * @member - Service name\n * @type {string}\n */\n\n\n _createClass(RequestBuilder, [{\n key: 'getUrl',\n value: function getUrl(serviceUrl) {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n\n }, {\n key: 'doHttpRequest',\n value: function doHttpRequest() {\n var _this = this;\n\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n var request = new XMLHttpRequest();\n return new Promise(function (resolve, reject) {\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n var jsonResponse = void 0;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(e.message + ', ' + request.responseText);\n }\n if (jsonResponse && (typeof jsonResponse === 'undefined' ? 'undefined' : _typeof(jsonResponse)) === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(_this.method, _this.url);\n _this.headers.forEach(function (value, key) {\n request.setRequestHeader(key, value);\n });\n request.send(_this.params);\n });\n }\n }]);\n\n return RequestBuilder;\n}();\n\nexports.default = RequestBuilder;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OVPConfiguration = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(4);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultConfig = {\n serviceUrl: 'https://cdnapisec.kaltura.com/api_v3',\n cdnUrl: '//cdnapisec.kaltura.com',\n serviceParams: {\n apiVersion: '3.3.0',\n format: 1\n }\n};\n\nvar OVPConfiguration = function () {\n function OVPConfiguration() {\n _classCallCheck(this, OVPConfiguration);\n }\n\n _createClass(OVPConfiguration, null, [{\n key: 'set',\n value: function set(clientConfig) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n }, {\n key: 'get',\n value: function get() {\n return (0, _clone.clone)(defaultConfig);\n }\n }]);\n\n return OVPConfiguration;\n}();\n\nexports.default = OVPConfiguration;\nexports.OVPConfiguration = OVPConfiguration;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ServiceResult =\n\n/**\n * @constructor\n * @param {Object} response - Service response\n */\n\n/**\n * @member - The service error\n * @type {ServiceError}\n */\n\n/**\n * @member - The service result data\n * @type {Object}\n */\nfunction ServiceResult(response) {\n _classCallCheck(this, ServiceResult);\n\n this.hasError = false;\n\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n}\n/**\n * @member - Is service returned an error\n * @type {boolean}\n */\n;\n\nexports.default = ServiceResult;\n\nvar ServiceError =\n\n/**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n\n/**\n * @member - The error code\n * @type {string}\n */\nfunction ServiceError(code, message) {\n _classCallCheck(this, ServiceError);\n\n this.code = code;\n this.message = message;\n}\n/**\n * @member - The error message\n * @type {string}\n */\n;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MultiRequestResult = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _logger = __webpack_require__(5);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MultiRequestBuilder = function (_RequestBuilder) {\n _inherits(MultiRequestBuilder, _RequestBuilder);\n\n function MultiRequestBuilder() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, MultiRequestBuilder);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = MultiRequestBuilder.__proto__ || Object.getPrototypeOf(MultiRequestBuilder)).call.apply(_ref, [this].concat(args))), _this), _this.requests = [], _temp), _possibleConstructorReturn(_this, _ret);\n }\n /**\n * @member - Array of requests\n * @type {Array}\n */\n\n\n _createClass(MultiRequestBuilder, [{\n key: 'add',\n\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n value: function add(request) {\n this.requests.push(request);\n var requestParams = {};\n var serviceDef = { service: request.service, action: request.action };\n Object.assign(requestParams, _defineProperty({}, this.requests.length, Object.assign(serviceDef, request.params)));\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n\n }, {\n key: 'execute',\n value: function execute() {\n var _this2 = this;\n\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error('' + err.message);\n }\n return new Promise(function (resolve, reject) {\n _this2.doHttpRequest().then(function (data) {\n resolve(new MultiRequestResult(data));\n }, function (err) {\n var errorText = 'Error on multiRequest execution, error <' + err + '>.';\n reject(errorText);\n });\n });\n }\n }]);\n\n return MultiRequestBuilder;\n}(_requestBuilder2.default);\n\nMultiRequestBuilder._logger = (0, _logger2.default)('MultiRequestBuilder');\nexports.default = MultiRequestBuilder;\n\nvar MultiRequestResult =\n\n/**\n * @constructor\n * @param {Object} response data\n */\nexports.MultiRequestResult = function MultiRequestResult(response) {\n var _this3 = this;\n\n _classCallCheck(this, MultiRequestResult);\n\n this.results = [];\n\n this.success = true;\n var responseArr = response.result ? response.result : response;\n responseArr.forEach(function (result) {\n var serviceResult = new _baseServiceResult2.default(result);\n _this3.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error('Service returned an error with error code: ' + serviceResult.error.code + ' and message: ' + serviceResult.error.message + '.');\n _this3.success = false;\n return;\n }\n });\n}\n/**\n * @member - Multi request response data\n * @type {Object}\n */\n\n/**\n * @member - Is success\n * @type {boolean}\n */\n;\n\nMultiRequestResult._logger = (0, _logger2.default)('MultiRequestResult');\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar clone = function clone(data) {\n var node = void 0;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach(function (e, i) {\n if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object' && e !== {} || Array.isArray(e) && e.length > 0) {\n node[i] = clone(e);\n }\n });\n } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(function (key) {\n if (_typeof(node[key]) === 'object' && node[key] !== {} || Array.isArray(node[key]) && node[key].length > 0) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexports.clone = clone;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setLogLevel = exports.getLogLevel = exports.LogLevel = undefined;\n\nvar _jsLogger = __webpack_require__(6);\n\nvar JsLogger = _interopRequireWildcard(_jsLogger);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar LogLevel = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\n\nJsLogger.useDefaults({ defaultLevel: JsLogger.ERROR });\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name) {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name) {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level, name) {\n getLogger(name).setLevel(level);\n}\n\nexports.default = getLogger;\nexports.LogLevel = LogLevel;\nexports.getLogLevel = getLogLevel;\nexports.setLogLevel = setLogLevel;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (true) {\r\n\t\t!(__WEBPACK_AMD_DEFINE_FACTORY__ = (Logger),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n/***/ }),\n/* 7 */,\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _multiRequestBuilder = __webpack_require__(3);\n\nvar _multiRequestBuilder2 = _interopRequireDefault(_multiRequestBuilder);\n\nvar _config = __webpack_require__(1);\n\nvar _config2 = _interopRequireDefault(_config);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar SERVICE_NAME = 'multirequest';\n\nvar OVPService = function () {\n function OVPService() {\n _classCallCheck(this, OVPService);\n }\n\n _createClass(OVPService, null, [{\n key: 'getMultiRequest',\n\n /**\n * Gets a new instance of MultiRequestBuilder with ovp params\n * @function getMultiRequest\n * @param {string} playerVersion The player version\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n value: function getMultiRequest(playerVersion, ks, partnerId) {\n var config = _config2.default.get();\n var ovpParams = config.serviceParams;\n Object.assign(ovpParams, { ks: ks, clientTag: 'html5:v' + playerVersion });\n if (partnerId) {\n Object.assign(ovpParams, { partnerId: partnerId });\n }\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var multiReq = new _multiRequestBuilder2.default(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ovpParams;\n return multiReq;\n }\n }]);\n\n return OVPService;\n}();\n\nexports.default = OVPService;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar param = function param(a) {\n var s = [],\n rbracket = /\\[\\]$/,\n isArray = function isArray(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n },\n add = function add(k, v) {\n v = typeof v === 'function' ? v() : v === null ? '' : v === undefined ? '' : v;\n s[s.length] = encodeURIComponent(k) + '=' + encodeURIComponent(v);\n },\n buildParams = function buildParams(prefix, obj) {\n var i = void 0,\n len = void 0,\n key = void 0;\n\n if (prefix) {\n if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n if (rbracket.test(prefix)) {\n add(prefix, obj[i]);\n } else {\n buildParams(prefix + ':' + (_typeof(obj[i]) === 'object' ? i : ''), obj[i]);\n }\n }\n } else if (obj && String(obj) === '[object Object]') {\n for (key in obj) {\n buildParams(prefix + ':' + key, obj[key]);\n }\n } else {\n add(prefix, obj);\n }\n } else if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n add(obj[i].name, obj[i].value);\n }\n } else {\n for (key in obj) {\n buildParams(key, obj[key]);\n }\n }\n return s;\n };\n\n return buildParams('', a).join('&').replace(/%20/g, '+');\n};\n\nexports.param = param;\n\n/***/ }),\n/* 10 */,\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ovpService = __webpack_require__(8);\n\nvar _ovpService2 = _interopRequireDefault(_ovpService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _config = __webpack_require__(1);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _param = __webpack_require__(9);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'analytics';\n\nvar OVPAnalyticsService = function (_OVPService) {\n _inherits(OVPAnalyticsService, _OVPService);\n\n function OVPAnalyticsService() {\n _classCallCheck(this, OVPAnalyticsService);\n\n return _possibleConstructorReturn(this, (OVPAnalyticsService.__proto__ || Object.getPrototypeOf(OVPAnalyticsService)).apply(this, arguments));\n }\n\n _createClass(OVPAnalyticsService, null, [{\n key: 'trackEvent',\n\n /**\n * Creates an instance of RequestBuilder for analytics.trackEvent\n * @function trackEvent\n * @param {string} serviceUrl - The service base url\n * @param {Object} params - The event params\n * @returns {RequestBuilder} - The request builder\n * @static\n */\n value: function trackEvent(serviceUrl, params) {\n var ovpParams = _config2.default.get();\n var serviceParams = {};\n Object.assign(serviceParams, ovpParams.serviceParams, params);\n var request = new _requestBuilder2.default();\n request.service = SERVICE_NAME;\n request.action = 'trackEvent';\n request.method = 'GET';\n request.tag = 'analytics-trackEvent';\n request.params = serviceParams;\n request.url = serviceUrl + '?service=' + request.service + '&action=' + request.action + '&' + (0, _param.param)(request.params);\n return request;\n }\n }]);\n\n return OVPAnalyticsService;\n}(_ovpService2.default);\n\nexports.default = OVPAnalyticsService;\n\n/***/ }),\n/* 12 */,\n/* 13 */,\n/* 14 */,\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VERSION = exports.NAME = exports.RequestBuilder = exports.OVPConfiguration = exports.OVPAnalyticsService = undefined;\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _config = __webpack_require__(1);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _analyticsService = __webpack_require__(11);\n\nvar _analyticsService2 = _interopRequireDefault(_analyticsService);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NAME = \"playkit-js-providers\" + '-analytics-service';\n\nvar VERSION = \"2.9.0\";\n\nexports.OVPAnalyticsService = _analyticsService2.default;\nexports.OVPConfiguration = _config2.default;\nexports.RequestBuilder = _requestBuilder2.default;\nexports.NAME = NAME;\nexports.VERSION = VERSION;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// playkit-analytics-service.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 15);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap c1625b18c43e6562ec1c","//@flow\nexport default class RequestBuilder {\n /**\n * @member - Service name\n * @type {string}\n */\n service: string;\n /**\n * @member - Service action\n * @type {string}\n */\n action: string;\n /**\n * @member - Service params\n * @type {any}\n */\n params: any;\n /**\n * @member - Service headers\n * @type {Map}\n */\n headers: Map;\n /**\n * @member - Service URL\n * @type {string}\n */\n url: string;\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n method: string;\n /**\n * @member - Service tag\n * @type {string}\n */\n tag: string;\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n constructor(headers: Map = new Map()) {\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n getUrl(serviceUrl: string): string {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n doHttpRequest(): Promise {\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n let request = new XMLHttpRequest();\n return new Promise((resolve, reject) => {\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.status === 200) {\n let jsonResponse;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(`${e.message}, ${request.responseText}`);\n }\n if (jsonResponse && typeof jsonResponse === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);\n else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(this.method, this.url);\n this.headers.forEach((value, key) => {\n request.setRequestHeader(key, value);\n });\n request.send(this.params);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./util/request-builder.js","//@flow\nimport {clone} from '../../util/clone';\n\nconst defaultConfig: Object = {\n serviceUrl: 'https://cdnapisec.kaltura.com/api_v3',\n cdnUrl: '//cdnapisec.kaltura.com',\n serviceParams: {\n apiVersion: '3.3.0',\n format: 1\n }\n};\n\nexport default class OVPConfiguration {\n static set(clientConfig?: ProviderEnvConfigObject) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n static get(): Object {\n return clone(defaultConfig);\n }\n}\n\nexport {OVPConfiguration};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/config.js","//@flow\nexport default class ServiceResult {\n /**\n * @member - Is service returned an error\n * @type {boolean}\n */\n hasError: boolean = false;\n /**\n * @member - The service error\n * @type {ServiceError}\n */\n error: ServiceError;\n /**\n * @member - The service result data\n * @type {Object}\n */\n data: Object;\n\n /**\n * @constructor\n * @param {Object} response - Service response\n */\n constructor(response: Object) {\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n }\n}\n\nclass ServiceError {\n /**\n * @member - The error code\n * @type {string}\n */\n code: string;\n /**\n * @member - The error message\n * @type {string}\n */\n message: string;\n\n /**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n constructor(code: string, message: string) {\n this.code = code;\n this.message = message;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-service-result.js","//@flow\nimport RequestBuilder from '../../util/request-builder';\nimport getLogger from '../../util/logger';\nimport ServiceResult from './base-service-result';\n\nexport default class MultiRequestBuilder extends RequestBuilder {\n static _logger = getLogger('MultiRequestBuilder');\n /**\n * @member - Array of requests\n * @type {Array}\n */\n requests: Array = [];\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n add(request: RequestBuilder): MultiRequestBuilder {\n this.requests.push(request);\n const requestParams = {};\n const serviceDef: Object = {service: request.service, action: request.action};\n Object.assign(requestParams, {[this.requests.length]: Object.assign(serviceDef, request.params)});\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n execute(): Promise {\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error(`${err.message}`);\n }\n return new Promise((resolve, reject) => {\n this.doHttpRequest().then(\n data => {\n resolve(new MultiRequestResult(data));\n },\n err => {\n const errorText: string = `Error on multiRequest execution, error <${err}>.`;\n reject(errorText);\n }\n );\n });\n }\n}\n\nexport class MultiRequestResult {\n static _logger = getLogger('MultiRequestResult');\n /**\n * @member - Is success\n * @type {boolean}\n */\n success: boolean;\n /**\n * @member - Multi request response data\n * @type {Object}\n */\n results: Array = [];\n\n /**\n * @constructor\n * @param {Object} response data\n */\n constructor(response: Object) {\n this.success = true;\n const responseArr = response.result ? response.result : response;\n responseArr.forEach(result => {\n const serviceResult: ServiceResult = new ServiceResult(result);\n this.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error(\n `Service returned an error with error code: ${serviceResult.error.code} and message: ${serviceResult.error.message}.`\n );\n this.success = false;\n return;\n }\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/multi-request-builder.js","const clone = data => {\n let node;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach((e, i) => {\n if ((typeof e === 'object' && e !== {}) || (Array.isArray(e) && e.length > 0)) {\n node[i] = clone(e);\n }\n });\n } else if (typeof data === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(key => {\n if ((typeof node[key] === 'object' && node[key] !== {}) || (Array.isArray(node[key]) && node[key].length > 0)) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexport {clone};\n\n\n\n// WEBPACK FOOTER //\n// ./util/clone.js","//@flow\nimport * as JsLogger from 'js-logger';\n\nexport type LogLevelObject = {value: number, name: string};\nexport type LogLevelType = {[level: string]: LogLevelObject};\n\nconst LogLevel: LogLevelType = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\nJsLogger.useDefaults({defaultLevel: JsLogger.ERROR});\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name?: string): Object {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name?: string): LogLevelObject {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level: LogLevelObject, name?: string): void {\n getLogger(name).setLevel(level);\n}\n\nexport default getLogger;\nexport {LogLevel, getLogLevel, setLogLevel};\n\n\n\n// WEBPACK FOOTER //\n// ./util/logger.js","/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine(Logger);\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/js-logger/src/logger.js\n// module id = 6\n// module chunks = 0 1 2","//@flow\nimport MultiRequestBuilder from '../../common/multi-request-builder';\nimport OVPConfiguration from '../config';\n\nconst SERVICE_NAME: string = 'multirequest';\n\nexport default class OVPService {\n /**\n * Gets a new instance of MultiRequestBuilder with ovp params\n * @function getMultiRequest\n * @param {string} playerVersion The player version\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n static getMultiRequest(playerVersion: string, ks: string, partnerId?: number): MultiRequestBuilder {\n const config = OVPConfiguration.get();\n const ovpParams = config.serviceParams;\n Object.assign(ovpParams, {ks: ks, clientTag: 'html5:v' + playerVersion});\n if (partnerId) {\n Object.assign(ovpParams, {partnerId: partnerId});\n }\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const multiReq = new MultiRequestBuilder(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ovpParams;\n return multiReq;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/ovp-service.js","const param = a => {\n let s = [],\n rbracket = /\\[\\]$/,\n isArray = function(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n },\n add = function(k, v) {\n v = typeof v === 'function' ? v() : v === null ? '' : v === undefined ? '' : v;\n s[s.length] = encodeURIComponent(k) + '=' + encodeURIComponent(v);\n },\n buildParams = function(prefix, obj) {\n let i, len, key;\n\n if (prefix) {\n if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n if (rbracket.test(prefix)) {\n add(prefix, obj[i]);\n } else {\n buildParams(prefix + ':' + (typeof obj[i] === 'object' ? i : ''), obj[i]);\n }\n }\n } else if (obj && String(obj) === '[object Object]') {\n for (key in obj) {\n buildParams(prefix + ':' + key, obj[key]);\n }\n } else {\n add(prefix, obj);\n }\n } else if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n add(obj[i].name, obj[i].value);\n }\n } else {\n for (key in obj) {\n buildParams(key, obj[key]);\n }\n }\n return s;\n };\n\n return buildParams('', a)\n .join('&')\n .replace(/%20/g, '+');\n};\n\nexport {param};\n\n\n\n// WEBPACK FOOTER //\n// ./util/param.js","//@flow\nimport OVPService from '../ovp-service';\nimport RequestBuilder from '../../../../util/request-builder';\nimport OVPConfiguration from '../../config';\nimport {param} from '../../../../util/param';\n\nconst SERVICE_NAME: string = 'analytics';\n\nexport default class OVPAnalyticsService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for analytics.trackEvent\n * @function trackEvent\n * @param {string} serviceUrl - The service base url\n * @param {Object} params - The event params\n * @returns {RequestBuilder} - The request builder\n * @static\n */\n static trackEvent(serviceUrl: string, params: Object): RequestBuilder {\n const ovpParams = OVPConfiguration.get();\n const serviceParams = {};\n Object.assign(serviceParams, ovpParams.serviceParams, params);\n const request = new RequestBuilder();\n request.service = SERVICE_NAME;\n request.action = 'trackEvent';\n request.method = 'GET';\n request.tag = 'analytics-trackEvent';\n request.params = serviceParams;\n request.url = serviceUrl + '?service=' + request.service + '&action=' + request.action + '&' + param(request.params);\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/analytics/analytics-service.js","// @flow\nimport RequestBuilder from '../../../../util/request-builder';\nimport OVPConfiguration from '../../config';\nimport OVPAnalyticsService from './analytics-service';\n\ndeclare var __VERSION__: string;\ndeclare var __NAME__: string;\n\nconst NAME = __NAME__ + '-analytics-service';\nconst VERSION = __VERSION__;\n\nexport {OVPAnalyticsService, OVPConfiguration, RequestBuilder, NAME, VERSION};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/analytics/index.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition?5ca6","./providers/playkit-analytics-service.js","webpack:///webpack/bootstrap 3d59ede3457363cdaf17?69f4","webpack:///./util/request-builder.js?3e89","webpack:///./k-provider/ovp/config.js?e6e3","webpack:///./k-provider/common/base-service-result.js?3ffa","webpack:///./k-provider/common/multi-request-builder.js?9930","webpack:///./util/clone.js?3f6f","webpack:///./util/logger.js?8c6e","webpack:///../~/js-logger/src/logger.js?779b","webpack:///./k-provider/ovp/services/ovp-service.js?fc9d","webpack:///./util/param.js?d6e4","./providers/./k-provider/ovp/services/analytics/analytics-service.js","./providers/./k-provider/ovp/services/analytics/index.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","_classCallCheck","instance","Constructor","TypeError","_typeof","Symbol","iterator","obj","constructor","_createClass","defineProperties","target","props","length","descriptor","writable","key","protoProps","staticProps","RequestBuilder","headers","arguments","undefined","Map","serviceUrl","service","action","_this","url","Error","request","XMLHttpRequest","Promise","resolve","reject","onreadystatechange","readyState","status","jsonResponse","JSON","parse","responseText","e","message","code","open","method","forEach","setRequestHeader","send","params","default","OVPConfiguration","_clone","defaultConfig","cdnUrl","serviceParams","apiVersion","format","clientConfig","assign","clone","ServiceResult","response","hasError","objectType","error","ServiceError","data","_interopRequireDefault","_defineProperty","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","MultiRequestResult","_requestBuilder","_requestBuilder2","_logger","_logger2","_baseServiceResult","_baseServiceResult2","MultiRequestBuilder","_RequestBuilder","_ref","_temp","_ret","_len","args","Array","_key","getPrototypeOf","apply","concat","requests","push","requestParams","serviceDef","_this2","stringify","err","doHttpRequest","then","errorText","_this3","results","success","result","serviceResult","node","isArray","slice","keys","getLogger","JsLogger","getLogLevel","getLevel","setLogLevel","level","setLevel","LogLevel","_jsLogger","newObj","DEBUG","INFO","TIME","WARN","ERROR","OFF","useDefaults","defaultLevel","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","global","Logger","VERSION","logHandler","contextualLoggersByNameMap","bind","scope","func","merge","defineLogLevel","ContextualLogger","defaultContext","context","filterLevel","log","info","newLevel","enabledFor","lvl","debug","invoke","warn","time","label","timeEnd","msgArgs","globalLogger","L","setHandler","createDefaultHandler","options","formatter","messages","unshift","timerStartTimeByLabelMap","invokeConsoleMethod","hdlr","Function","console","timerLabel","Date","getTime","_multiRequestBuilder","_multiRequestBuilder2","_config","_config2","OVPService","playerVersion","ks","partnerId","config","ovpParams","clientTag","set","multiReq","getUrl","param","a","rbracket","toString","add","k","v","encodeURIComponent","buildParams","prefix","len","test","String","join","replace","_ovpService","_ovpService2","_param","OVPAnalyticsService","_OVPService","tag","NAME","_analyticsService","_analyticsService2"],"mappings":"CAAA,SAAAA,EAAAC,GACA,gBAAAC,UAAA,gBAAAC,QACAA,OAAAD,QAAAD,IACA,kBAAAG,gBAAAC,IACAD,UAAAH,GACA,gBAAAC,SACAA,QAAA,UAAAD,KAEAD,EAAA,QAAAA,EAAA,YAAyCA,EAAA,iBAAAA,EAAA,qBAAiEA,EAAA,2BAAAC,MACzGK,KAAA,WACD,MCAgB,UAAUC,GCN1B,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAP,OAGA,IAAAC,GAAAO,EAAAD,IACAE,EAAAF,EACAG,GAAA,EACAV,WAUA,OANAK,GAAAE,GAAAI,KAAAV,EAAAD,QAAAC,IAAAD,QAAAM,GAGAL,EAAAS,GAAA,EAGAT,EAAAD,QAvBA,GAAAQ,KA+DA,OAnCAF,GAAAM,EAAAP,EAGAC,EAAAO,EAAAL,EAGAF,EAAAG,EAAA,SAAAK,GAA2C,MAAAA,IAG3CR,EAAAS,EAAA,SAAAf,EAAAgB,EAAAC,GACAX,EAAAY,EAAAlB,EAAAgB,IACAG,OAAAC,eAAApB,EAAAgB,GACAK,cAAA,EACAC,YAAA,EACAC,IAAAN,KAMAX,EAAAkB,EAAA,SAAAvB,GACA,GAAAgB,GAAAhB,KAAAwB,WACA,WAA2B,MAAAxB,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAK,GAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAQ,EAAAC,GAAsD,MAAAR,QAAAS,UAAAC,eAAAlB,KAAAe,EAAAC,IAGtDrB,EAAAwB,EAAA,GAGAxB,IAAAyB,EAAA,MDgBM,SAAU9B,EAAQD,EAASM,GAEjC,YAWA,SAAS0B,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCARhHhB,OAAOC,eAAepB,EAAS,cAC7Bc,OAAO,GAGT,IAAIsB,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,QAAUE,IAAQF,OAAOT,UAAY,eAAkBW,IAElQE,EAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInC,GAAI,EAAGA,EAAImC,EAAMC,OAAQpC,IAAK,CAAE,GAAIqC,GAAaF,EAAMnC,EAAIqC,GAAWxB,WAAawB,EAAWxB,aAAc,EAAOwB,EAAWzB,cAAe,EAAU,SAAWyB,KAAYA,EAAWC,UAAW,GAAM5B,OAAOC,eAAeuB,EAAQG,EAAWE,IAAKF,IAAiB,MAAO,UAAUZ,EAAae,EAAYC,GAAiJ,MAA9HD,IAAYP,EAAiBR,EAAYN,UAAWqB,GAAiBC,GAAaR,EAAiBR,EAAagB,GAAqBhB,ME1F3gBiB,EF8FA,WErDnB,QAAAA,KAAsD,GAA1CC,GAA0CC,UAAAR,OAAA,OAAAS,KAAAD,UAAA,GAAAA,UAAA,GAAX,GAAIE,IAAOvB,GAAA5B,KAAA+C,GACpD/C,KAAKgD,QAAUA,EF2JjB,MA9CAX,GAAaU,IACXH,IAAK,SACLlC,MAAO,SEtGF0C,GACL,MAAOA,GAAa,YAAcpD,KAAKqD,SAAWrD,KAAKsD,OAAS,WAAatD,KAAKsD,OAAS,OFgH3FV,IAAK,gBACLlC,MAAO,WEzGqB,GAAA6C,GAAAvD,IAC5B,KAAKA,KAAKwD,IACR,KAAM,IAAIC,OAAM,8CAElB,IAAIC,GAAU,GAAIC,eAClB,OAAO,IAAIC,SAAQ,SAACC,EAASC,GAC3BJ,EAAQK,mBAAqB,WAC3B,GAA2B,IAAvBL,EAAQM,WACV,GAAuB,MAAnBN,EAAQO,OAAgB,CAC1B,GAAIC,SACJ,KACEA,EAAeC,KAAKC,MAAMV,EAAQW,cAClC,MAAOC,GACP,MAAOR,GAAUQ,EAAEC,QAAZ,KAAwBb,EAAQW,cAErCH,GAAwC,gBAAxB,KAAOA,EAAP,YAAAlC,EAAOkC,KAA6BA,EAAaM,MAAQN,EAAaK,QAAST,EAAOI,GACrGL,EAAQK,OAEbJ,GAAOJ,EAAQW,eAIrBX,EAAQe,KAAKlB,EAAKmB,OAAQnB,EAAKC,KAC/BD,EAAKP,QAAQ2B,QAAQ,SAACjE,EAAOkC,GAC3Bc,EAAQkB,iBAAiBhC,EAAKlC,KAEhCgD,EAAQmB,KAAKtB,EAAKuB,cF+Gf/B,IAGTnD,GAAQmF,QExMahC,GF4Mf,SAAUlD,EAAQD,EAASM,GAEjC,YAYA,SAAS0B,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAThHhB,OAAOC,eAAepB,EAAS,cAC7Bc,OAAO,IAETd,EAAQoF,qBAAmB9B,EAE3B,IAAIb,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInC,GAAI,EAAGA,EAAImC,EAAMC,OAAQpC,IAAK,CAAE,GAAIqC,GAAaF,EAAMnC,EAAIqC,GAAWxB,WAAawB,EAAWxB,aAAc,EAAOwB,EAAWzB,cAAe,EAAU,SAAWyB,KAAYA,EAAWC,UAAW,GAAM5B,OAAOC,eAAeuB,EAAQG,EAAWE,IAAKF,IAAiB,MAAO,UAAUZ,EAAae,EAAYC,GAAiJ,MAA9HD,IAAYP,EAAiBR,EAAYN,UAAWqB,GAAiBC,GAAaR,EAAiBR,EAAagB,GAAqBhB,MGtNhiBmD,EAAA/E,EAAA,GAEMgF,GACJ9B,WAAY,uCACZ+B,OAAQ,0BACRC,eACEC,WAAY,QACZC,OAAQ,IAISN,EH0NE,WACrB,QAASA,KACPpD,EAAgB5B,KAAMgF,GAiBxB,MAdA3C,GAAa2C,EAAkB,OAC7BpC,IAAK,MACLlC,MAAO,SGhOE6E,GACLA,GACFxE,OAAOyE,OAAON,EAAeK,MHoO/B3C,IAAK,MACLlC,MAAO,WGhOP,OAAO,EAAAuE,EAAAQ,OAAMP,OHqORF,IAGTpF,GAAQmF,QGhPaC,EHiPrBpF,EGrOQoF,oBHyOF,SAAUnF,EAAQD,EAASM,GAEjC,YAOA,SAAS0B,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAJhHhB,OAAOC,eAAepB,EAAS,cAC7Bc,OAAO,GAKT,II3QqBgF,GAqBnB,QAAAA,GAAYC,GAAkB/D,EAAA5B,KAAA0F,GAAA1F,KAhB9B4F,UAAoB,EAiBU,wBAAxBD,EAASE,YACX7F,KAAK4F,UAAW,EAChB5F,KAAK8F,MAAQ,GAAIC,GAAaJ,EAASnB,KAAMmB,EAASpB,UAC7CoB,EAASG,OAAuC,wBAA9BH,EAASG,MAAMD,YAC1C7F,KAAK4F,UAAW,EAChB5F,KAAK8F,MAAQ,GAAIC,GAAaJ,EAASG,MAAMtB,KAAMmB,EAASG,MAAMvB,UAElEvE,KAAKgG,KAAOL,EJmRlB/F,GAAQmF,QIhTaW,CJkTrB,IIhRMK,GAiBJ,QAAAA,GAAYvB,EAAcD,GAAiB3C,EAAA5B,KAAA+F,GACzC/F,KAAKwE,KAAOA,EACZxE,KAAKuE,QAAUA,IJuRb,SAAU1E,EAAQD,EAASM,GAEjC,YAsBA,SAAS+F,GAAuB9D,GAAO,MAAOA,IAAOA,EAAId,WAAac,GAAQ4C,QAAS5C,GAEvF,QAAS+D,GAAgB/D,EAAKS,EAAKlC,GAAiK,MAApJkC,KAAOT,GAAOpB,OAAOC,eAAemB,EAAKS,GAAOlC,MAAOA,EAAOQ,YAAY,EAAMD,cAAc,EAAM0B,UAAU,IAAkBR,EAAIS,GAAOlC,EAAgByB,EAE3M,QAASP,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASoE,GAA2BC,EAAM7F,GAAQ,IAAK6F,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO9F,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B6F,EAAP7F,EAElO,QAAS+F,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIzE,WAAU,iEAAoEyE,GAAeD,GAAS/E,UAAYT,OAAO0F,OAAOD,GAAcA,EAAWhF,WAAaY,aAAe1B,MAAO6F,EAAUrF,YAAY,EAAOyB,UAAU,EAAM1B,cAAc,KAAeuF,IAAYzF,OAAO2F,eAAiB3F,OAAO2F,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GA3BjezF,OAAOC,eAAepB,EAAS,cAC7Bc,OAAO,IAETd,EAAQgH,uBAAqB1D,EAE7B,IAAIb,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInC,GAAI,EAAGA,EAAImC,EAAMC,OAAQpC,IAAK,CAAE,GAAIqC,GAAaF,EAAMnC,EAAIqC,GAAWxB,WAAawB,EAAWxB,aAAc,EAAOwB,EAAWzB,cAAe,EAAU,SAAWyB,KAAYA,EAAWC,UAAW,GAAM5B,OAAOC,eAAeuB,EAAQG,EAAWE,IAAKF,IAAiB,MAAO,UAAUZ,EAAae,EAAYC,GAAiJ,MAA9HD,IAAYP,EAAiBR,EAAYN,UAAWqB,GAAiBC,GAAaR,EAAiBR,EAAagB,GAAqBhB,MKtVhiB+E,EAAA3G,EAAA,GL0VI4G,EAAmBb,EAAuBY,GKzV9CE,EAAA7G,EAAA,GL6VI8G,EAAWf,EAAuBc,GK5VtCE,EAAA/G,EAAA,GLgWIgH,EAAsBjB,EAAuBgB,GK9V5BE,EL0WK,SAAUC,GAGlC,QAASD,KACP,GAAIE,GAEAC,EAAO/D,EAAOgE,CAElB3F,GAAgB5B,KAAMmH,EAEtB,KAAK,GAAIK,GAAOvE,UAAUR,OAAQgF,EAAOC,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EF,EAAKE,GAAQ1E,UAAU0E,EAGzB,OAAeL,GAAS/D,EAAQ4C,EAA2BnG,MAAOqH,EAAOF,EAAoBR,WAAa5F,OAAO6G,eAAeT,IAAsB5G,KAAKsH,MAAMR,GAAOrH,MAAM8H,OAAOL,KAAiBlE,EKlXxMwE,YLkXSR,EAAoND,EAAQnB,EAA2B5C,EAAOgE,GAuDvQ,MApEAjB,GAAUa,EAAqBC,GAqB/B/E,EAAa8E,IACXvE,IAAK,MASLlC,MAAO,SK5XLgD,GACF1D,KAAK+H,SAASC,KAAKtE,EACnB,IAAMuE,MACAC,GAAsB7E,QAASK,EAAQL,QAASC,OAAQI,EAAQJ,OAItE,OAHAvC,QAAOyE,OAAOyC,EAAd/B,KAA+BlG,KAAK+H,SAAStF,OAAS1B,OAAOyE,OAAO0C,EAAYxE,EAAQoB,UACxF/D,OAAOyE,OAAOyC,EAAejI,KAAK8E,QAClC9E,KAAK8E,OAASmD,EACPjI,QLsYP4C,IAAK,UACLlC,MAAO,WK/XkB,GAAAyH,GAAAnI,IACzB,KACEA,KAAK8E,OAASX,KAAKiE,UAAUpI,KAAK8E,QAClC,MAAOuD,GACPlB,EAAoBJ,QAAQjB,MAA5B,GAAqCuC,EAAI9D,SAE3C,MAAO,IAAIX,SAAQ,SAACC,EAASC,GAC3BqE,EAAKG,gBAAgBC,KACnB,SAAAvC,GACEnC,EAAQ,GAAI+C,GAAmBZ,KAEjC,SAAAqC,GAEEvE,EADM0E,2CAA+DH,EAA/D,cLsYPlB,GACPL,EAAiB/B,QKhbEoC,GACZJ,SAAU,EAAAC,EAAAjC,SAAU,uBLkb7BnF,EAAQmF,QKnbaoC,CLqbrB,IKpYaP,GL0YbhH,EK1YagH,mBAiBX,QAAAA,GAAYjB,GAAkB,GAAA8C,GAAAzI,IAAA4B,GAAA5B,KAAA4G,GAAA5G,KAN9B0I,WAOE1I,KAAK2I,SAAU,GACKhD,EAASiD,OAASjD,EAASiD,OAASjD,GAC5ChB,QAAQ,SAAAiE,GAClB,GAAMC,GAA+B,GAAA3B,GAAAnC,QAAkB6D,EAEvD,IADAH,EAAKC,QAAQV,KAAKa,GACdA,EAAcjD,SAKhB,MAJAgB,GAAmBG,QAAQjB,MAA3B,8CACgD+C,EAAc/C,MAAMtB,KADpE,iBACyFqE,EAAc/C,MAAMvB,QAD7G,UAGAkE,EAAKE,SAAU,KA3BV/B,GACJG,SAAU,EAAAC,EAAAjC,SAAU,uBL2avB,SAAUlF,EAAQD,EAASM,GAEjC,YAGAa,QAAOC,eAAepB,EAAS,cAC7Bc,OAAO,GAGT,IAAIsB,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,QAAUE,IAAQF,OAAOT,UAAY,eAAkBW,IM3ehQsD,EAAQ,QAARA,GAAQO,GACZ,GAAI8C,SAkBJ,OAjBIpB,OAAMqB,QAAQ/C,IAChB8C,EAAO9C,EAAKvD,OAAS,EAAIuD,EAAKgD,MAAM,MACpCF,EAAKnE,QAAQ,SAACL,EAAGjE,IACG,gBAAb,KAAOiE,EAAP,YAAAtC,EAAOsC,KAAkBA,QAAcoD,MAAMqB,QAAQzE,IAAMA,EAAE7B,OAAS,KACzEqG,EAAKzI,GAAKoF,EAAMnB,OAGK,gBAAhB,KAAO0B,EAAP,YAAAhE,EAAOgE,KAChB8C,EAAO/H,OAAOyE,UAAWQ,GACzBjF,OAAOkI,KAAKH,GAAMnE,QAAQ,SAAA/B,IACE,WAArBZ,EAAO8G,EAAKlG,KAAqBkG,EAAKlG,SAAiB8E,MAAMqB,QAAQD,EAAKlG,KAASkG,EAAKlG,GAAKH,OAAS,KACzGqG,EAAKlG,GAAO6C,EAAMqD,EAAKlG,QAI3BkG,EAAO9C,EAEF8C,ENgfTlJ,GM7eQ6F,SNifF,SAAU5F,EAAQD,EAASM,GAEjC,YOnfA,SAASgJ,GAAUtI,GACjB,MAAKA,GAGEuI,EAAShI,IAAIP,GAFXuI,EAUX,QAASC,GAAYxI,GACnB,MAAOsI,GAAUtI,GAAMyI,WASzB,QAASC,GAAYC,EAAuB3I,GAC1CsI,EAAUtI,GAAM4I,SAASD,GP+d3BxI,OAAOC,eAAepB,EAAS,cAC7Bc,OAAO,IAETd,EAAQ0J,YAAc1J,EAAQwJ,YAAcxJ,EAAQ6J,aAAWvG,EO9gB/D,IAAAwG,GAAAxJ,EAAA,GAAYiJ,EPohBZ,SAAiChH,GAAO,GAAIA,GAAOA,EAAId,WAAc,MAAOc,EAAc,IAAIwH,KAAa,IAAW,MAAPxH,EAAe,IAAK,GAAIS,KAAOT,GAAWpB,OAAOS,UAAUC,eAAelB,KAAK4B,EAAKS,KAAM+G,EAAO/G,GAAOT,EAAIS,GAAgC,OAAtB+G,GAAO5E,QAAU5C,EAAYwH,GAF3ND,GO7gBjCD,GACJG,MAAOT,EAASS,MAChBC,KAAMV,EAASU,KACfC,KAAMX,EAASW,KACfC,KAAMZ,EAASY,KACfC,MAAOb,EAASa,MAChBC,IAAKd,EAASc,IAGhBd,GAASe,aAAaC,aAAchB,EAASa,QPmjB7CpK,EAAQmF,QOlhBOmE,EPmhBftJ,EOlhBQ6J,WPmhBR7J,EOnhBkBwJ,cPohBlBxJ,EOphB+B0J,ePwhBzB,SAAUzJ,EAAQD,EAASM,GQzkBjC,GAAAkK,GAAAC;;;;;CAKA,SAAAC,GACA,YAGA,IAAAC,KAGAA,GAAAC,QAAA,OAGA,IAAAC,GAGAC,KAGAC,EAAA,SAAAC,EAAAC,GACA,kBACA,MAAAA,GAAAhD,MAAA+C,EAAA3H,aAKA6H,EAAA,WACA,GAAAlI,GAAAvC,EAAAoH,EAAAxE,UAAAV,EAAAkF,EAAA,EACA,KAAApH,EAAA,EAAaA,EAAAoH,EAAAhF,OAAiBpC,IAC9B,IAAAuC,IAAA6E,GAAApH,GACAuC,IAAAL,KAAAkF,EAAApH,GAAAoB,eAAAmB,KACAL,EAAAK,GAAA6E,EAAApH,GAAAuC,GAIA,OAAAL,IAIAwI,EAAA,SAAArK,EAAAE,GACA,OAAUF,QAAAE,QAIV2J,GAAAX,MAAAmB,EAAA,WACAR,EAAAV,KAAAkB,EAAA,UACAR,EAAAT,KAAAiB,EAAA,UACAR,EAAAR,KAAAgB,EAAA,UACAR,EAAAP,MAAAe,EAAA,WACAR,EAAAN,IAAAc,EAAA,SAIA,IAAAC,GAAA,SAAAC,GACAjL,KAAAkL,QAAAD,EACAjL,KAAAwJ,SAAAyB,EAAAE,aACAnL,KAAAoL,IAAApL,KAAAqL,KAGAL,GAAAxJ,WAEAgI,SAAA,SAAA8B,GAEAA,GAAA,SAAAA,KACAtL,KAAAkL,QAAAC,YAAAG,IAKAjC,SAAA,WACA,MAAArJ,MAAAkL,QAAAC,aAIAI,WAAA,SAAAC,GACA,GAAAL,GAAAnL,KAAAkL,QAAAC,WACA,OAAAK,GAAA9K,OAAAyK,EAAAzK,OAGA+K,MAAA,WACAzL,KAAA0L,OAAAnB,EAAAX,MAAA3G,YAGAoI,KAAA,WACArL,KAAA0L,OAAAnB,EAAAV,KAAA5G,YAGA0I,KAAA,WACA3L,KAAA0L,OAAAnB,EAAAR,KAAA9G,YAGA6C,MAAA,WACA9F,KAAA0L,OAAAnB,EAAAP,MAAA/G,YAGA2I,KAAA,SAAAC,GACA,gBAAAA,MAAApJ,OAAA,GACAzC,KAAA0L,OAAAnB,EAAAT,MAAA+B,EAAA,WAIAC,QAAA,SAAAD,GACA,gBAAAA,MAAApJ,OAAA,GACAzC,KAAA0L,OAAAnB,EAAAT,MAAA+B,EAAA,SAKAH,OAAA,SAAAnC,EAAAwC,GACAtB,GAAAzK,KAAAuL,WAAAhC,IACAkB,EAAAsB,EAAAjB,GAA+BvB,SAAevJ,KAAAkL,WAM9C,IAAAc,GAAA,GAAAhB,IAA0CG,YAAAZ,EAAAN,OAG1C,WAEA,GAAAgC,GAAA1B,CAEA0B,GAAAV,WAAAZ,EAAAqB,IAAAT,YACAU,EAAAR,MAAAd,EAAAqB,IAAAP,OACAQ,EAAAL,KAAAjB,EAAAqB,IAAAJ,MACAK,EAAAH,QAAAnB,EAAAqB,IAAAF,SACAG,EAAAZ,KAAAV,EAAAqB,IAAAX,MACAY,EAAAN,KAAAhB,EAAAqB,IAAAL,MACAM,EAAAnG,MAAA6E,EAAAqB,IAAAlG,OAGAmG,EAAAb,IAAAa,EAAAZ,QAMAd,EAAA2B,WAAA,SAAArB,GACAJ,EAAAI,GAKAN,EAAAf,SAAA,SAAAD,GAEAyC,EAAAxC,SAAAD,EAGA,QAAA3G,KAAA8H,GACAA,EAAAjJ,eAAAmB,IACA8H,EAAA9H,GAAA4G,SAAAD,IAMAgB,EAAAlB,SAAA,WACA,MAAA2C,GAAA3C,YAKAkB,EAAApJ,IAAA,SAAAP,GAEA,MAAA8J,GAAA9J,KACA8J,EAAA9J,GAAA,GAAAoK,GAAAF,GAAmElK,QAAaoL,EAAAd,YAMhFX,EAAA4B,qBAAA,SAAAC,GACAA,QAEAA,EAAAC,UAAAD,EAAAC,WAAA,SAAAC,EAAApB,GAEAA,EAAAtK,MACA0L,EAAAC,QAAA,IAAArB,EAAAtK,KAAA,KAMA,IAAA4L,MAGAC,EAAA,SAAAC,EAAAJ,GACAK,SAAAnL,UAAAqG,MAAAtH,KAAAmM,EAAAE,QAAAN,GAIA,0BAAAM,SACA,aAGA,SAAAN,EAAApB,GAEAoB,EAAA5E,MAAAlG,UAAAwH,MAAAzI,KAAA+L,EAEA,IACAO,GADAH,EAAAE,QAAAxB,GAGAF,GAAA3B,QAAAgB,EAAAT,MACA+C,GAAA3B,EAAAtK,KAAA,IAAAsK,EAAAtK,KAAA,SAAA0L,EAAA,GAEA,UAAAA,EAAA,GACAM,QAAAhB,KACAgB,QAAAhB,KAAAiB,GAGAL,EAAAK,IAAA,GAAAC,OAAAC,UAIAH,QAAAd,QACAc,QAAAd,QAAAe,GAGAJ,EAAAC,GAAAG,EAAA,OACA,GAAAC,OAAAC,UAAAP,EAAAK,IAAA,SAMA3B,EAAA3B,QAAAgB,EAAAR,MAAA6C,QAAAjB,KACAe,EAAAE,QAAAjB,KACKT,EAAA3B,QAAAgB,EAAAP,OAAA4C,QAAA9G,MACL4G,EAAAE,QAAA9G,MACKoF,EAAA3B,QAAAgB,EAAAV,MAAA+C,QAAAvB,KACLqB,EAAAE,QAAAvB,KACKH,EAAA3B,QAAAgB,EAAAX,OAAAgD,QAAAnB,QACLiB,EAAAE,QAAAnB,OAGAW,EAAAC,UAAAC,EAAApB,GACAuB,EAAAC,EAAAJ,MAOA/B,EAAAL,YAAA,SAAAkC,GACA7B,EAAAf,SAAA4C,KAAAjC,cAAAI,EAAAX,OACAW,EAAA2B,WAAA3B,EAAA4B,qBAAAC,KAKAhC,EAAA,MAAAlH,MAAAmH,EAAA,kBAAAD,KAAA7J,KAAAX,EAAAM,EAAAN,EAAAC,GAAAuK,KAAAvK,EAAAD,QAAAyK,ORkmBO,CAED,SAAUxK,EAAQD,EAASM,GAEjC,YAiBA,SAAS+F,GAAuB9D,GAAO,MAAOA,IAAOA,EAAId,WAAac,GAAQ4C,QAAS5C,GAEvF,QAASP,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAhBhHhB,OAAOC,eAAepB,EAAS,cAC7Bc,OAAO,GAGT,IAAI2B,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInC,GAAI,EAAGA,EAAImC,EAAMC,OAAQpC,IAAK,CAAE,GAAIqC,GAAaF,EAAMnC,EAAIqC,GAAWxB,WAAawB,EAAWxB,aAAc,EAAOwB,EAAWzB,cAAe,EAAU,SAAWyB,KAAYA,EAAWC,UAAW,GAAM5B,OAAOC,eAAeuB,EAAQG,EAAWE,IAAKF,IAAiB,MAAO,UAAUZ,EAAae,EAAYC,GAAiJ,MAA9HD,IAAYP,EAAiBR,EAAYN,UAAWqB,GAAiBC,GAAaR,EAAiBR,EAAagB,GAAqBhB,MSz2BhiBkL,EAAA9M,EAAA,GT62BI+M,EAAwBhH,EAAuB+G,GS52BnDE,EAAAhN,EAAA,GTg3BIiN,EAAWlH,EAAuBiH,GS52BjBE,ETo3BJ,WACf,QAASA,KACPxL,EAAgB5B,KAAMoN,GAiCxB,MA9BA/K,GAAa+K,EAAY,OACvBxK,IAAK,kBAWLlC,MAAO,SS33Bc2M,EAAuBC,EAAYC,GACxD,GAAMC,GAASL,EAAApI,QAAiB5D,MAC1BsM,EAAYD,EAAOpI,aACzBrE,QAAOyE,OAAOiI,GAAYH,GAAIA,EAAII,UAAW,UAAYL,IACrDE,GACFxM,OAAOyE,OAAOiI,GAAYF,UAAWA,GAEvC,IAAMvK,GAA+B,GAAIG,IACzCH,GAAQ2K,IAAI,eAAgB,mBAC5B,IAAMC,GAAW,GAAAX,GAAAlI,QAAwB/B,EAKzC,OAJA4K,GAASlJ,OAAS,OAClBkJ,EAASvK,QAvBgB,eAwBzBuK,EAASpK,IAAMoK,EAASC,OAAOL,EAAOpK,YACtCwK,EAAS9I,OAAS2I,EACXG,MT+3BFR,IAGTxN,GAAQmF,QS15BaqI,GT85Bf,SAAUvN,EAAQD,EAASM,GAEjC,YAGAa,QAAOC,eAAepB,EAAS,cAC7Bc,OAAO,GAGT,IAAIsB,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXF,SAAyBE,EAAIC,cAAgBH,QAAUE,IAAQF,OAAOT,UAAY,eAAkBW,IU76BhQ2L,EAAQ,SAAAC,GACZ,GAAIpM,MACFqM,EAAW,QACXjF,EAAU,SAAS5G,GACjB,MAA+C,mBAAxCpB,OAAOS,UAAUyM,SAAS1N,KAAK4B,IAExC+L,EAAM,SAASC,EAAGC,GAChBA,EAAiB,kBAANA,GAAmBA,IAAY,OAANA,EAAa,OAAWlL,KAANkL,EAAkB,GAAKA,EAC7EzM,EAAEA,EAAEc,QAAU4L,mBAAmBF,GAAK,IAAME,mBAAmBD,GAiCnE,OA/BgB,SAAdE,GAAuBC,EAAQpM,GAC7B,GAAI9B,UAAGmO,SAAK5L,QAEZ,IAAI2L,EACF,GAAIxF,EAAQ5G,GACV,IAAK9B,EAAI,EAAGmO,EAAMrM,EAAIM,OAAQpC,EAAImO,EAAKnO,IACjC2N,EAASS,KAAKF,GAChBL,EAAIK,EAAQpM,EAAI9B,IAEhBiO,EAAYC,EAAS,KAAyB,WAAlBvM,EAAOG,EAAI9B,IAAkBA,EAAI,IAAK8B,EAAI9B,QAGrE,IAAI8B,GAAuB,oBAAhBuM,OAAOvM,GACvB,IAAKS,IAAOT,GACVmM,EAAYC,EAAS,IAAM3L,EAAKT,EAAIS,QAGtCsL,GAAIK,EAAQpM,OAET,IAAI4G,EAAQ5G,GACjB,IAAK9B,EAAI,EAAGmO,EAAMrM,EAAIM,OAAQpC,EAAImO,EAAKnO,IACrC6N,EAAI/L,EAAI9B,GAAGO,KAAMuB,EAAI9B,GAAGK,WAG1B,KAAKkC,IAAOT,GACVmM,EAAY1L,EAAKT,EAAIS,GAGzB,OAAOjB,IAGQ,GAAIoM,GACpBY,KAAK,KACLC,QAAQ,OAAQ,KVk7BrBhP,GU/6BQkO,SVk7BA,CAEF,SAAUjO,EAAQD,EAASM,GAEjC,YAuBA,SAAS+F,GAAuB9D,GAAO,MAAOA,IAAOA,EAAId,WAAac,GAAQ4C,QAAS5C,GAEvF,QAASP,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAASoE,GAA2BC,EAAM7F,GAAQ,IAAK6F,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO9F,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B6F,EAAP7F,EAElO,QAAS+F,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIzE,WAAU,iEAAoEyE,GAAeD,GAAS/E,UAAYT,OAAO0F,OAAOD,GAAcA,EAAWhF,WAAaY,aAAe1B,MAAO6F,EAAUrF,YAAY,EAAOyB,UAAU,EAAM1B,cAAc,KAAeuF,IAAYzF,OAAO2F,eAAiB3F,OAAO2F,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GA1BjezF,OAAOC,eAAepB,EAAS,cAC7Bc,OAAO,GAGT,IAAI2B,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInC,GAAI,EAAGA,EAAImC,EAAMC,OAAQpC,IAAK,CAAE,GAAIqC,GAAaF,EAAMnC,EAAIqC,GAAWxB,WAAawB,EAAWxB,aAAc,EAAOwB,EAAWzB,cAAe,EAAU,SAAWyB,KAAYA,EAAWC,UAAW,GAAM5B,OAAOC,eAAeuB,EAAQG,EAAWE,IAAKF,IAAiB,MAAO,UAAUZ,EAAae,EAAYC,GAAiJ,MAA9HD,IAAYP,EAAiBR,EAAYN,UAAWqB,GAAiBC,GAAaR,EAAiBR,EAAagB,GAAqBhB,MW1+BhiB+M,EAAA3O,EAAA,GX8+BI4O,EAAe7I,EAAuB4I,GW7+B1ChI,EAAA3G,EAAA,GXi/BI4G,EAAmBb,EAAuBY,GWh/B9CqG,EAAAhN,EAAA,GXo/BIiN,EAAWlH,EAAuBiH,GWn/BtC6B,EAAA7O,EAAA,GAIqB8O,EX6/BK,SAAUC,GAGlC,QAASD,KAGP,MAFApN,GAAgB5B,KAAMgP,GAEf7I,EAA2BnG,MAAOgP,EAAoBrI,WAAa5F,OAAO6G,eAAeoH,IAAsBnH,MAAM7H,KAAMiD,YA6BpI,MAlCAqD,GAAU0I,EAAqBC,GAQ/B5M,EAAa2M,EAAqB,OAChCpM,IAAK,aAULlC,MAAO,SWxgCS0C,EAAoB0B,GACpC,GAAM2I,GAAYN,EAAApI,QAAiB5D,MAC7BiE,IACNrE,QAAOyE,OAAOJ,EAAeqI,EAAUrI,cAAeN,EACtD,IAAMpB,GAAU,GAAAoD,GAAA/B,OAOhB,OANArB,GAAQL,QAhBiB,YAiBzBK,EAAQJ,OAAS,aACjBI,EAAQgB,OAAS,MACjBhB,EAAQwL,IAAM,uBACdxL,EAAQoB,OAASM,EACjB1B,EAAQF,IAAMJ,EAAa,YAAcM,EAAQL,QAAU,WAAaK,EAAQJ,OAAS,KAAM,EAAAyL,EAAAjB,OAAMpK,EAAQoB,QACtGpB,MX4gCFsL,GACPF,EAAa/J,QAEfnF,GAAQmF,QWniCaiK,GXsiCb,CACA,CACA,CAEF,SAAUnP,EAAQD,EAASM,GAEjC,YAoBA,SAAS+F,GAAuB9D,GAAO,MAAOA,IAAOA,EAAId,WAAac,GAAQ4C,QAAS5C,GAjBvFpB,OAAOC,eAAepB,EAAS,cAC7Bc,OAAO,IAETd,EAAQ4K,QAAU5K,EAAQuP,KAAOvP,EAAQmD,eAAiBnD,EAAQoF,iBAAmBpF,EAAQoP,wBAAsB9L,EYzjCnH,IAAA2D,GAAA3G,EAAA,GZ6jCI4G,EAAmBb,EAAuBY,GY5jC9CqG,EAAAhN,EAAA,GZgkCIiN,EAAWlH,EAAuBiH,GY/jCtCkC,EAAAlP,EAAA,IZmkCImP,EAAqBpJ,EAAuBmJ,EAQhDxP,GYnkCQoP,oBZmkCsBK,EAAmBtK,QACjDnF,EYpkC6BoF,iBZokCFmI,EAASpI,QACpCnF,EYrkC+CmD,eZqkCtB+D,EAAiB/B,QAC1CnF,EYtkC+DuP,KAHlD,yCZ0kCbvP,EYvkCqE4K,QAFrD","file":"playkit-analytics-service.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"analytics\"] = factory();\n\telse\n\t\troot[\"playkit\"] = root[\"playkit\"] || {}, root[\"playkit\"][\"services\"] = root[\"playkit\"][\"services\"] || {}, root[\"playkit\"][\"services\"][\"analytics\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"analytics\"] = factory();\n\telse\n\t\troot[\"playkit\"] = root[\"playkit\"] || {}, root[\"playkit\"][\"services\"] = root[\"playkit\"][\"services\"] || {}, root[\"playkit\"][\"services\"][\"analytics\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 15);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar RequestBuilder = function () {\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n\n /**\n * @member - Service headers\n * @type {Map}\n */\n\n /**\n * @member - Service action\n * @type {string}\n */\n function RequestBuilder() {\n var headers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map();\n\n _classCallCheck(this, RequestBuilder);\n\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n\n /**\n * @member - Service tag\n * @type {string}\n */\n\n /**\n * @member - Service URL\n * @type {string}\n */\n\n /**\n * @member - Service params\n * @type {any}\n */\n\n /**\n * @member - Service name\n * @type {string}\n */\n\n\n _createClass(RequestBuilder, [{\n key: 'getUrl',\n value: function getUrl(serviceUrl) {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n\n }, {\n key: 'doHttpRequest',\n value: function doHttpRequest() {\n var _this = this;\n\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n var request = new XMLHttpRequest();\n return new Promise(function (resolve, reject) {\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n var jsonResponse = void 0;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(e.message + ', ' + request.responseText);\n }\n if (jsonResponse && (typeof jsonResponse === 'undefined' ? 'undefined' : _typeof(jsonResponse)) === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(_this.method, _this.url);\n _this.headers.forEach(function (value, key) {\n request.setRequestHeader(key, value);\n });\n request.send(_this.params);\n });\n }\n }]);\n\n return RequestBuilder;\n}();\n\nexports.default = RequestBuilder;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OVPConfiguration = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(4);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultConfig = {\n serviceUrl: 'https://cdnapisec.kaltura.com/api_v3',\n cdnUrl: '//cdnapisec.kaltura.com',\n serviceParams: {\n apiVersion: '3.3.0',\n format: 1\n }\n};\n\nvar OVPConfiguration = function () {\n function OVPConfiguration() {\n _classCallCheck(this, OVPConfiguration);\n }\n\n _createClass(OVPConfiguration, null, [{\n key: 'set',\n value: function set(clientConfig) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n }, {\n key: 'get',\n value: function get() {\n return (0, _clone.clone)(defaultConfig);\n }\n }]);\n\n return OVPConfiguration;\n}();\n\nexports.default = OVPConfiguration;\nexports.OVPConfiguration = OVPConfiguration;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ServiceResult =\n\n/**\n * @constructor\n * @param {Object} response - Service response\n */\n\n/**\n * @member - The service error\n * @type {ServiceError}\n */\n\n/**\n * @member - The service result data\n * @type {Object}\n */\nfunction ServiceResult(response) {\n _classCallCheck(this, ServiceResult);\n\n this.hasError = false;\n\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n}\n/**\n * @member - Is service returned an error\n * @type {boolean}\n */\n;\n\nexports.default = ServiceResult;\n\nvar ServiceError =\n\n/**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n\n/**\n * @member - The error code\n * @type {string}\n */\nfunction ServiceError(code, message) {\n _classCallCheck(this, ServiceError);\n\n this.code = code;\n this.message = message;\n}\n/**\n * @member - The error message\n * @type {string}\n */\n;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MultiRequestResult = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _logger = __webpack_require__(5);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MultiRequestBuilder = function (_RequestBuilder) {\n _inherits(MultiRequestBuilder, _RequestBuilder);\n\n function MultiRequestBuilder() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, MultiRequestBuilder);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = MultiRequestBuilder.__proto__ || Object.getPrototypeOf(MultiRequestBuilder)).call.apply(_ref, [this].concat(args))), _this), _this.requests = [], _temp), _possibleConstructorReturn(_this, _ret);\n }\n /**\n * @member - Array of requests\n * @type {Array}\n */\n\n\n _createClass(MultiRequestBuilder, [{\n key: 'add',\n\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n value: function add(request) {\n this.requests.push(request);\n var requestParams = {};\n var serviceDef = { service: request.service, action: request.action };\n Object.assign(requestParams, _defineProperty({}, this.requests.length, Object.assign(serviceDef, request.params)));\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n\n }, {\n key: 'execute',\n value: function execute() {\n var _this2 = this;\n\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error('' + err.message);\n }\n return new Promise(function (resolve, reject) {\n _this2.doHttpRequest().then(function (data) {\n resolve(new MultiRequestResult(data));\n }, function (err) {\n var errorText = 'Error on multiRequest execution, error <' + err + '>.';\n reject(errorText);\n });\n });\n }\n }]);\n\n return MultiRequestBuilder;\n}(_requestBuilder2.default);\n\nMultiRequestBuilder._logger = (0, _logger2.default)('MultiRequestBuilder');\nexports.default = MultiRequestBuilder;\n\nvar MultiRequestResult =\n\n/**\n * @constructor\n * @param {Object} response data\n */\nexports.MultiRequestResult = function MultiRequestResult(response) {\n var _this3 = this;\n\n _classCallCheck(this, MultiRequestResult);\n\n this.results = [];\n\n this.success = true;\n var responseArr = response.result ? response.result : response;\n responseArr.forEach(function (result) {\n var serviceResult = new _baseServiceResult2.default(result);\n _this3.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error('Service returned an error with error code: ' + serviceResult.error.code + ' and message: ' + serviceResult.error.message + '.');\n _this3.success = false;\n return;\n }\n });\n}\n/**\n * @member - Multi request response data\n * @type {Object}\n */\n\n/**\n * @member - Is success\n * @type {boolean}\n */\n;\n\nMultiRequestResult._logger = (0, _logger2.default)('MultiRequestResult');\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar clone = function clone(data) {\n var node = void 0;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach(function (e, i) {\n if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object' && e !== {} || Array.isArray(e) && e.length > 0) {\n node[i] = clone(e);\n }\n });\n } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(function (key) {\n if (_typeof(node[key]) === 'object' && node[key] !== {} || Array.isArray(node[key]) && node[key].length > 0) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexports.clone = clone;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setLogLevel = exports.getLogLevel = exports.LogLevel = undefined;\n\nvar _jsLogger = __webpack_require__(6);\n\nvar JsLogger = _interopRequireWildcard(_jsLogger);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar LogLevel = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\n\nJsLogger.useDefaults({ defaultLevel: JsLogger.ERROR });\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name) {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name) {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level, name) {\n getLogger(name).setLevel(level);\n}\n\nexports.default = getLogger;\nexports.LogLevel = LogLevel;\nexports.getLogLevel = getLogLevel;\nexports.setLogLevel = setLogLevel;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (true) {\r\n\t\t!(__WEBPACK_AMD_DEFINE_FACTORY__ = (Logger),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n/***/ }),\n/* 7 */,\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _multiRequestBuilder = __webpack_require__(3);\n\nvar _multiRequestBuilder2 = _interopRequireDefault(_multiRequestBuilder);\n\nvar _config = __webpack_require__(1);\n\nvar _config2 = _interopRequireDefault(_config);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar SERVICE_NAME = 'multirequest';\n\nvar OVPService = function () {\n function OVPService() {\n _classCallCheck(this, OVPService);\n }\n\n _createClass(OVPService, null, [{\n key: 'getMultiRequest',\n\n /**\n * Gets a new instance of MultiRequestBuilder with ovp params\n * @function getMultiRequest\n * @param {string} playerVersion The player version\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n value: function getMultiRequest(playerVersion, ks, partnerId) {\n var config = _config2.default.get();\n var ovpParams = config.serviceParams;\n Object.assign(ovpParams, { ks: ks, clientTag: 'html5:v' + playerVersion });\n if (partnerId) {\n Object.assign(ovpParams, { partnerId: partnerId });\n }\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var multiReq = new _multiRequestBuilder2.default(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ovpParams;\n return multiReq;\n }\n }]);\n\n return OVPService;\n}();\n\nexports.default = OVPService;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar param = function param(a) {\n var s = [],\n rbracket = /\\[\\]$/,\n isArray = function isArray(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n },\n add = function add(k, v) {\n v = typeof v === 'function' ? v() : v === null ? '' : v === undefined ? '' : v;\n s[s.length] = encodeURIComponent(k) + '=' + encodeURIComponent(v);\n },\n buildParams = function buildParams(prefix, obj) {\n var i = void 0,\n len = void 0,\n key = void 0;\n\n if (prefix) {\n if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n if (rbracket.test(prefix)) {\n add(prefix, obj[i]);\n } else {\n buildParams(prefix + ':' + (_typeof(obj[i]) === 'object' ? i : ''), obj[i]);\n }\n }\n } else if (obj && String(obj) === '[object Object]') {\n for (key in obj) {\n buildParams(prefix + ':' + key, obj[key]);\n }\n } else {\n add(prefix, obj);\n }\n } else if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n add(obj[i].name, obj[i].value);\n }\n } else {\n for (key in obj) {\n buildParams(key, obj[key]);\n }\n }\n return s;\n };\n\n return buildParams('', a).join('&').replace(/%20/g, '+');\n};\n\nexports.param = param;\n\n/***/ }),\n/* 10 */,\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ovpService = __webpack_require__(8);\n\nvar _ovpService2 = _interopRequireDefault(_ovpService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _config = __webpack_require__(1);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _param = __webpack_require__(9);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'analytics';\n\nvar OVPAnalyticsService = function (_OVPService) {\n _inherits(OVPAnalyticsService, _OVPService);\n\n function OVPAnalyticsService() {\n _classCallCheck(this, OVPAnalyticsService);\n\n return _possibleConstructorReturn(this, (OVPAnalyticsService.__proto__ || Object.getPrototypeOf(OVPAnalyticsService)).apply(this, arguments));\n }\n\n _createClass(OVPAnalyticsService, null, [{\n key: 'trackEvent',\n\n /**\n * Creates an instance of RequestBuilder for analytics.trackEvent\n * @function trackEvent\n * @param {string} serviceUrl - The service base url\n * @param {Object} params - The event params\n * @returns {RequestBuilder} - The request builder\n * @static\n */\n value: function trackEvent(serviceUrl, params) {\n var ovpParams = _config2.default.get();\n var serviceParams = {};\n Object.assign(serviceParams, ovpParams.serviceParams, params);\n var request = new _requestBuilder2.default();\n request.service = SERVICE_NAME;\n request.action = 'trackEvent';\n request.method = 'GET';\n request.tag = 'analytics-trackEvent';\n request.params = serviceParams;\n request.url = serviceUrl + '?service=' + request.service + '&action=' + request.action + '&' + (0, _param.param)(request.params);\n return request;\n }\n }]);\n\n return OVPAnalyticsService;\n}(_ovpService2.default);\n\nexports.default = OVPAnalyticsService;\n\n/***/ }),\n/* 12 */,\n/* 13 */,\n/* 14 */,\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VERSION = exports.NAME = exports.RequestBuilder = exports.OVPConfiguration = exports.OVPAnalyticsService = undefined;\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _config = __webpack_require__(1);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _analyticsService = __webpack_require__(11);\n\nvar _analyticsService2 = _interopRequireDefault(_analyticsService);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NAME = \"playkit-js-providers\" + '-analytics-service';\n\nvar VERSION = \"2.8.0\";\n\nexports.OVPAnalyticsService = _analyticsService2.default;\nexports.OVPConfiguration = _config2.default;\nexports.RequestBuilder = _requestBuilder2.default;\nexports.NAME = NAME;\nexports.VERSION = VERSION;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// playkit-analytics-service.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 15);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 3d59ede3457363cdaf17","//@flow\nexport default class RequestBuilder {\n /**\n * @member - Service name\n * @type {string}\n */\n service: string;\n /**\n * @member - Service action\n * @type {string}\n */\n action: string;\n /**\n * @member - Service params\n * @type {any}\n */\n params: any;\n /**\n * @member - Service headers\n * @type {Map}\n */\n headers: Map;\n /**\n * @member - Service URL\n * @type {string}\n */\n url: string;\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n method: string;\n /**\n * @member - Service tag\n * @type {string}\n */\n tag: string;\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n constructor(headers: Map = new Map()) {\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n getUrl(serviceUrl: string): string {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n doHttpRequest(): Promise {\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n let request = new XMLHttpRequest();\n return new Promise((resolve, reject) => {\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.status === 200) {\n let jsonResponse;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(`${e.message}, ${request.responseText}`);\n }\n if (jsonResponse && typeof jsonResponse === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);\n else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(this.method, this.url);\n this.headers.forEach((value, key) => {\n request.setRequestHeader(key, value);\n });\n request.send(this.params);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./util/request-builder.js","//@flow\nimport {clone} from '../../util/clone';\n\nconst defaultConfig: Object = {\n serviceUrl: 'https://cdnapisec.kaltura.com/api_v3',\n cdnUrl: '//cdnapisec.kaltura.com',\n serviceParams: {\n apiVersion: '3.3.0',\n format: 1\n }\n};\n\nexport default class OVPConfiguration {\n static set(clientConfig?: ProviderEnvConfigObject) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n static get(): Object {\n return clone(defaultConfig);\n }\n}\n\nexport {OVPConfiguration};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/config.js","//@flow\nexport default class ServiceResult {\n /**\n * @member - Is service returned an error\n * @type {boolean}\n */\n hasError: boolean = false;\n /**\n * @member - The service error\n * @type {ServiceError}\n */\n error: ServiceError;\n /**\n * @member - The service result data\n * @type {Object}\n */\n data: Object;\n\n /**\n * @constructor\n * @param {Object} response - Service response\n */\n constructor(response: Object) {\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n }\n}\n\nclass ServiceError {\n /**\n * @member - The error code\n * @type {string}\n */\n code: string;\n /**\n * @member - The error message\n * @type {string}\n */\n message: string;\n\n /**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n constructor(code: string, message: string) {\n this.code = code;\n this.message = message;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-service-result.js","//@flow\nimport RequestBuilder from '../../util/request-builder';\nimport getLogger from '../../util/logger';\nimport ServiceResult from './base-service-result';\n\nexport default class MultiRequestBuilder extends RequestBuilder {\n static _logger = getLogger('MultiRequestBuilder');\n /**\n * @member - Array of requests\n * @type {Array}\n */\n requests: Array = [];\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n add(request: RequestBuilder): MultiRequestBuilder {\n this.requests.push(request);\n const requestParams = {};\n const serviceDef: Object = {service: request.service, action: request.action};\n Object.assign(requestParams, {[this.requests.length]: Object.assign(serviceDef, request.params)});\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n execute(): Promise {\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error(`${err.message}`);\n }\n return new Promise((resolve, reject) => {\n this.doHttpRequest().then(\n data => {\n resolve(new MultiRequestResult(data));\n },\n err => {\n const errorText: string = `Error on multiRequest execution, error <${err}>.`;\n reject(errorText);\n }\n );\n });\n }\n}\n\nexport class MultiRequestResult {\n static _logger = getLogger('MultiRequestResult');\n /**\n * @member - Is success\n * @type {boolean}\n */\n success: boolean;\n /**\n * @member - Multi request response data\n * @type {Object}\n */\n results: Array = [];\n\n /**\n * @constructor\n * @param {Object} response data\n */\n constructor(response: Object) {\n this.success = true;\n const responseArr = response.result ? response.result : response;\n responseArr.forEach(result => {\n const serviceResult: ServiceResult = new ServiceResult(result);\n this.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error(\n `Service returned an error with error code: ${serviceResult.error.code} and message: ${serviceResult.error.message}.`\n );\n this.success = false;\n return;\n }\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/multi-request-builder.js","const clone = data => {\n let node;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach((e, i) => {\n if ((typeof e === 'object' && e !== {}) || (Array.isArray(e) && e.length > 0)) {\n node[i] = clone(e);\n }\n });\n } else if (typeof data === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(key => {\n if ((typeof node[key] === 'object' && node[key] !== {}) || (Array.isArray(node[key]) && node[key].length > 0)) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexport {clone};\n\n\n\n// WEBPACK FOOTER //\n// ./util/clone.js","//@flow\nimport * as JsLogger from 'js-logger';\n\nexport type LogLevelObject = {value: number, name: string};\nexport type LogLevelType = {[level: string]: LogLevelObject};\n\nconst LogLevel: LogLevelType = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\nJsLogger.useDefaults({defaultLevel: JsLogger.ERROR});\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name?: string): Object {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name?: string): LogLevelObject {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level: LogLevelObject, name?: string): void {\n getLogger(name).setLevel(level);\n}\n\nexport default getLogger;\nexport {LogLevel, getLogLevel, setLogLevel};\n\n\n\n// WEBPACK FOOTER //\n// ./util/logger.js","/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine(Logger);\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/js-logger/src/logger.js\n// module id = 6\n// module chunks = 0 1 2","//@flow\nimport MultiRequestBuilder from '../../common/multi-request-builder';\nimport OVPConfiguration from '../config';\n\nconst SERVICE_NAME: string = 'multirequest';\n\nexport default class OVPService {\n /**\n * Gets a new instance of MultiRequestBuilder with ovp params\n * @function getMultiRequest\n * @param {string} playerVersion The player version\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n static getMultiRequest(playerVersion: string, ks: string, partnerId?: number): MultiRequestBuilder {\n const config = OVPConfiguration.get();\n const ovpParams = config.serviceParams;\n Object.assign(ovpParams, {ks: ks, clientTag: 'html5:v' + playerVersion});\n if (partnerId) {\n Object.assign(ovpParams, {partnerId: partnerId});\n }\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const multiReq = new MultiRequestBuilder(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ovpParams;\n return multiReq;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/ovp-service.js","const param = a => {\n let s = [],\n rbracket = /\\[\\]$/,\n isArray = function(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n },\n add = function(k, v) {\n v = typeof v === 'function' ? v() : v === null ? '' : v === undefined ? '' : v;\n s[s.length] = encodeURIComponent(k) + '=' + encodeURIComponent(v);\n },\n buildParams = function(prefix, obj) {\n let i, len, key;\n\n if (prefix) {\n if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n if (rbracket.test(prefix)) {\n add(prefix, obj[i]);\n } else {\n buildParams(prefix + ':' + (typeof obj[i] === 'object' ? i : ''), obj[i]);\n }\n }\n } else if (obj && String(obj) === '[object Object]') {\n for (key in obj) {\n buildParams(prefix + ':' + key, obj[key]);\n }\n } else {\n add(prefix, obj);\n }\n } else if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n add(obj[i].name, obj[i].value);\n }\n } else {\n for (key in obj) {\n buildParams(key, obj[key]);\n }\n }\n return s;\n };\n\n return buildParams('', a)\n .join('&')\n .replace(/%20/g, '+');\n};\n\nexport {param};\n\n\n\n// WEBPACK FOOTER //\n// ./util/param.js","//@flow\nimport OVPService from '../ovp-service';\nimport RequestBuilder from '../../../../util/request-builder';\nimport OVPConfiguration from '../../config';\nimport {param} from '../../../../util/param';\n\nconst SERVICE_NAME: string = 'analytics';\n\nexport default class OVPAnalyticsService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for analytics.trackEvent\n * @function trackEvent\n * @param {string} serviceUrl - The service base url\n * @param {Object} params - The event params\n * @returns {RequestBuilder} - The request builder\n * @static\n */\n static trackEvent(serviceUrl: string, params: Object): RequestBuilder {\n const ovpParams = OVPConfiguration.get();\n const serviceParams = {};\n Object.assign(serviceParams, ovpParams.serviceParams, params);\n const request = new RequestBuilder();\n request.service = SERVICE_NAME;\n request.action = 'trackEvent';\n request.method = 'GET';\n request.tag = 'analytics-trackEvent';\n request.params = serviceParams;\n request.url = serviceUrl + '?service=' + request.service + '&action=' + request.action + '&' + param(request.params);\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/analytics/analytics-service.js","// @flow\nimport RequestBuilder from '../../../../util/request-builder';\nimport OVPConfiguration from '../../config';\nimport OVPAnalyticsService from './analytics-service';\n\ndeclare var __VERSION__: string;\ndeclare var __NAME__: string;\n\nconst NAME = __NAME__ + '-analytics-service';\nconst VERSION = __VERSION__;\n\nexport {OVPAnalyticsService, OVPConfiguration, RequestBuilder, NAME, VERSION};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/analytics/index.js"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/playkit-bookmark-service.js b/dist/playkit-bookmark-service.js index b5f45d2b..eb2be451 100644 --- a/dist/playkit-bookmark-service.js +++ b/dist/playkit-bookmark-service.js @@ -3,5 +3,5 @@ * Jonny Reeves, http://jonnyreeves.co.uk/ * js-logger may be freely distributed under the MIT license. */ -!function(i){"use strict";var a={};a.VERSION="1.4.1";var u,s={},c=function(e,t){return function(){return t.apply(e,arguments)}},l=function(){var e,t,n=arguments,r=n[0];for(t=1;t=t.value},debug:function(){this.invoke(a.DEBUG,arguments)},info:function(){this.invoke(a.INFO,arguments)},warn:function(){this.invoke(a.WARN,arguments)},error:function(){this.invoke(a.ERROR,arguments)},time:function(e){"string"==typeof e&&e.length>0&&this.invoke(a.TIME,[e,"start"])},timeEnd:function(e){"string"==typeof e&&e.length>0&&this.invoke(a.TIME,[e,"end"])},invoke:function(e,t){u&&this.enabledFor(e)&&u(t,l({level:e},this.context))}};var v=new p({filterLevel:a.OFF});!function(){var e=a;e.enabledFor=c(v,v.enabledFor),e.debug=c(v,v.debug),e.time=c(v,v.time),e.timeEnd=c(v,v.timeEnd),e.info=c(v,v.info),e.warn=c(v,v.warn),e.error=c(v,v.error),e.log=e.info}(),a.setHandler=function(e){u=e},a.setLevel=function(e){v.setLevel(e);for(var t in s)s.hasOwnProperty(t)&&s[t].setLevel(e)},a.getLevel=function(){return v.getLevel()},a.get=function(e){return s[e]||(s[e]=new p(l({name:e},v.context)))},a.createDefaultHandler=function(e){e=e||{},e.formatter=e.formatter||function(e,t){t.name&&e.unshift("["+t.name+"]")};var t={},n=function(e,t){Function.prototype.apply.call(e,console,t)};return"undefined"==typeof console?function(){}:function(r,o){r=Array.prototype.slice.call(r);var i,u=console.log;o.level===a.TIME?(i=(o.name?"["+o.name+"] ":"")+r[0],"start"===r[1]?console.time?console.time(i):t[i]=(new Date).getTime():console.timeEnd?console.timeEnd(i):n(u,[i+": "+((new Date).getTime()-t[i])+"ms"])):(o.level===a.WARN&&console.warn?u=console.warn:o.level===a.ERROR&&console.error?u=console.error:o.level===a.INFO&&console.info?u=console.info:o.level===a.DEBUG&&console.debug&&(u=console.debug),e.formatter(r,o),n(u,r))}},a.useDefaults=function(e){a.setLevel(e&&e.defaultLevel||a.DEBUG),a.setHandler(a.createDefaultHandler(e))},r=a,void 0!==(o="function"==typeof r?r.call(t,n,t,e):r)&&(e.exports=o)}()},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0}),t.OTTConfiguration=void 0;var o=function(){function e(e,t){for(var n=0;n=t.value},debug:function(){this.invoke(a.DEBUG,arguments)},info:function(){this.invoke(a.INFO,arguments)},warn:function(){this.invoke(a.WARN,arguments)},error:function(){this.invoke(a.ERROR,arguments)},time:function(e){"string"==typeof e&&e.length>0&&this.invoke(a.TIME,[e,"start"])},timeEnd:function(e){"string"==typeof e&&e.length>0&&this.invoke(a.TIME,[e,"end"])},invoke:function(e,t){u&&this.enabledFor(e)&&u(t,l({level:e},this.context))}};var v=new p({filterLevel:a.OFF});!function(){var e=a;e.enabledFor=c(v,v.enabledFor),e.debug=c(v,v.debug),e.time=c(v,v.time),e.timeEnd=c(v,v.timeEnd),e.info=c(v,v.info),e.warn=c(v,v.warn),e.error=c(v,v.error),e.log=e.info}(),a.setHandler=function(e){u=e},a.setLevel=function(e){v.setLevel(e);for(var t in s)s.hasOwnProperty(t)&&s[t].setLevel(e)},a.getLevel=function(){return v.getLevel()},a.get=function(e){return s[e]||(s[e]=new p(l({name:e},v.context)))},a.createDefaultHandler=function(e){e=e||{},e.formatter=e.formatter||function(e,t){t.name&&e.unshift("["+t.name+"]")};var t={},n=function(e,t){Function.prototype.apply.call(e,console,t)};return"undefined"==typeof console?function(){}:function(r,o){r=Array.prototype.slice.call(r);var i,u=console.log;o.level===a.TIME?(i=(o.name?"["+o.name+"] ":"")+r[0],"start"===r[1]?console.time?console.time(i):t[i]=(new Date).getTime():console.timeEnd?console.timeEnd(i):n(u,[i+": "+((new Date).getTime()-t[i])+"ms"])):(o.level===a.WARN&&console.warn?u=console.warn:o.level===a.ERROR&&console.error?u=console.error:o.level===a.INFO&&console.info?u=console.info:o.level===a.DEBUG&&console.debug&&(u=console.debug),e.formatter(r,o),n(u,r))}},a.useDefaults=function(e){a.setLevel(e&&e.defaultLevel||a.DEBUG),a.setHandler(a.createDefaultHandler(e))},r=a,void 0!==(o="function"==typeof r?r.call(t,n,t,e):r)&&(e.exports=o)}()},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0}),t.OTTConfiguration=void 0;var o=function(){function e(e,t){for(var n=0;n} headers The request headers\n */\n\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n\n /**\n * @member - Service headers\n * @type {Map}\n */\n\n /**\n * @member - Service action\n * @type {string}\n */\n function RequestBuilder() {\n var headers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map();\n\n _classCallCheck(this, RequestBuilder);\n\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n\n /**\n * @member - Service tag\n * @type {string}\n */\n\n /**\n * @member - Service URL\n * @type {string}\n */\n\n /**\n * @member - Service params\n * @type {any}\n */\n\n /**\n * @member - Service name\n * @type {string}\n */\n\n\n _createClass(RequestBuilder, [{\n key: 'getUrl',\n value: function getUrl(serviceUrl) {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n\n }, {\n key: 'doHttpRequest',\n value: function doHttpRequest() {\n var _this = this;\n\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n var request = new XMLHttpRequest();\n return new Promise(function (resolve, reject) {\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n var jsonResponse = void 0;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(e.message + ', ' + request.responseText);\n }\n if (jsonResponse && (typeof jsonResponse === 'undefined' ? 'undefined' : _typeof(jsonResponse)) === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(_this.method, _this.url);\n _this.headers.forEach(function (value, key) {\n request.setRequestHeader(key, value);\n });\n request.send(_this.params);\n });\n }\n }]);\n\n return RequestBuilder;\n}();\n\nexports.default = RequestBuilder;\n\n/***/ }),\n/* 1 */,\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ServiceResult =\n\n/**\n * @constructor\n * @param {Object} response - Service response\n */\n\n/**\n * @member - The service error\n * @type {ServiceError}\n */\n\n/**\n * @member - The service result data\n * @type {Object}\n */\nfunction ServiceResult(response) {\n _classCallCheck(this, ServiceResult);\n\n this.hasError = false;\n\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n}\n/**\n * @member - Is service returned an error\n * @type {boolean}\n */\n;\n\nexports.default = ServiceResult;\n\nvar ServiceError =\n\n/**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n\n/**\n * @member - The error code\n * @type {string}\n */\nfunction ServiceError(code, message) {\n _classCallCheck(this, ServiceError);\n\n this.code = code;\n this.message = message;\n}\n/**\n * @member - The error message\n * @type {string}\n */\n;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MultiRequestResult = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _logger = __webpack_require__(5);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MultiRequestBuilder = function (_RequestBuilder) {\n _inherits(MultiRequestBuilder, _RequestBuilder);\n\n function MultiRequestBuilder() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, MultiRequestBuilder);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = MultiRequestBuilder.__proto__ || Object.getPrototypeOf(MultiRequestBuilder)).call.apply(_ref, [this].concat(args))), _this), _this.requests = [], _temp), _possibleConstructorReturn(_this, _ret);\n }\n /**\n * @member - Array of requests\n * @type {Array}\n */\n\n\n _createClass(MultiRequestBuilder, [{\n key: 'add',\n\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n value: function add(request) {\n this.requests.push(request);\n var requestParams = {};\n var serviceDef = { service: request.service, action: request.action };\n Object.assign(requestParams, _defineProperty({}, this.requests.length, Object.assign(serviceDef, request.params)));\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n\n }, {\n key: 'execute',\n value: function execute() {\n var _this2 = this;\n\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error('' + err.message);\n }\n return new Promise(function (resolve, reject) {\n _this2.doHttpRequest().then(function (data) {\n resolve(new MultiRequestResult(data));\n }, function (err) {\n var errorText = 'Error on multiRequest execution, error <' + err + '>.';\n reject(errorText);\n });\n });\n }\n }]);\n\n return MultiRequestBuilder;\n}(_requestBuilder2.default);\n\nMultiRequestBuilder._logger = (0, _logger2.default)('MultiRequestBuilder');\nexports.default = MultiRequestBuilder;\n\nvar MultiRequestResult =\n\n/**\n * @constructor\n * @param {Object} response data\n */\nexports.MultiRequestResult = function MultiRequestResult(response) {\n var _this3 = this;\n\n _classCallCheck(this, MultiRequestResult);\n\n this.results = [];\n\n this.success = true;\n var responseArr = response.result ? response.result : response;\n responseArr.forEach(function (result) {\n var serviceResult = new _baseServiceResult2.default(result);\n _this3.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error('Service returned an error with error code: ' + serviceResult.error.code + ' and message: ' + serviceResult.error.message + '.');\n _this3.success = false;\n return;\n }\n });\n}\n/**\n * @member - Multi request response data\n * @type {Object}\n */\n\n/**\n * @member - Is success\n * @type {boolean}\n */\n;\n\nMultiRequestResult._logger = (0, _logger2.default)('MultiRequestResult');\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar clone = function clone(data) {\n var node = void 0;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach(function (e, i) {\n if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object' && e !== {} || Array.isArray(e) && e.length > 0) {\n node[i] = clone(e);\n }\n });\n } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(function (key) {\n if (_typeof(node[key]) === 'object' && node[key] !== {} || Array.isArray(node[key]) && node[key].length > 0) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexports.clone = clone;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setLogLevel = exports.getLogLevel = exports.LogLevel = undefined;\n\nvar _jsLogger = __webpack_require__(6);\n\nvar JsLogger = _interopRequireWildcard(_jsLogger);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar LogLevel = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\n\nJsLogger.useDefaults({ defaultLevel: JsLogger.ERROR });\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name) {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name) {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level, name) {\n getLogger(name).setLevel(level);\n}\n\nexports.default = getLogger;\nexports.LogLevel = LogLevel;\nexports.getLogLevel = getLogLevel;\nexports.setLogLevel = setLogLevel;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (true) {\r\n\t\t!(__WEBPACK_AMD_DEFINE_FACTORY__ = (Logger),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OTTConfiguration = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(4);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultConfig = {\n serviceParams: {\n apiVersion: '4.7.1'\n }\n};\n\nvar OTTConfiguration = function () {\n function OTTConfiguration() {\n _classCallCheck(this, OTTConfiguration);\n }\n\n _createClass(OTTConfiguration, null, [{\n key: 'set',\n value: function set(clientConfig) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n }, {\n key: 'get',\n value: function get() {\n return (0, _clone.clone)(defaultConfig);\n }\n }]);\n\n return OTTConfiguration;\n}();\n\nexports.default = OTTConfiguration;\nexports.OTTConfiguration = OTTConfiguration;\n\n/***/ }),\n/* 8 */,\n/* 9 */,\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ottService = __webpack_require__(14);\n\nvar _ottService2 = _interopRequireDefault(_ottService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _config = __webpack_require__(7);\n\nvar _config2 = _interopRequireDefault(_config);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'bookmark';\n\nvar OTTBookmarkService = function (_OTTService) {\n _inherits(OTTBookmarkService, _OTTService);\n\n function OTTBookmarkService() {\n _classCallCheck(this, OTTBookmarkService);\n\n return _possibleConstructorReturn(this, (OTTBookmarkService.__proto__ || Object.getPrototypeOf(OTTBookmarkService)).apply(this, arguments));\n }\n\n _createClass(OTTBookmarkService, null, [{\n key: 'add',\n\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function add\n * @param {string} serviceUrl - The service url\n * @param {string} ks - The ks\n * @param {Object} bookmark - The udid\n * @returns {RequestBuilder} - The request builder\n * @static\n */\n value: function add(serviceUrl, ks, bookmark) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'add';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n var playerData = {\n objectType: 'KalturaBookmarkPlayerData',\n action: bookmark.playerData.action,\n averageBitrate: bookmark.playerData.averageBitrate,\n totalBitrate: bookmark.playerData.totalBitrate,\n currentBitrate: bookmark.playerData.currentBitrate,\n fileId: bookmark.playerData.fileId\n };\n var bookmarkServiceParams = {\n objectType: 'KalturaBookmark',\n type: bookmark.type,\n id: bookmark.id,\n position: bookmark.position,\n playerData: playerData\n };\n var config = _config2.default.get();\n var serviceParams = config.serviceParams;\n Object.assign(serviceParams, { bookmark: bookmarkServiceParams, ks: ks });\n request.params = JSON.stringify(serviceParams);\n return request;\n }\n }]);\n\n return OTTBookmarkService;\n}(_ottService2.default);\n\nexports.default = OTTBookmarkService;\n\n/***/ }),\n/* 11 */,\n/* 12 */,\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VERSION = exports.NAME = exports.RequestBuilder = exports.OTTConfiguration = exports.OTTBookmarkService = undefined;\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _config = __webpack_require__(7);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _bookmarkService = __webpack_require__(10);\n\nvar _bookmarkService2 = _interopRequireDefault(_bookmarkService);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NAME = \"playkit-js-providers\" + '-bookmark-service';\n\nvar VERSION = \"2.9.0\";\n\nexports.OTTBookmarkService = _bookmarkService2.default;\nexports.OTTConfiguration = _config2.default;\nexports.RequestBuilder = _requestBuilder2.default;\nexports.NAME = NAME;\nexports.VERSION = VERSION;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _multiRequestBuilder = __webpack_require__(3);\n\nvar _multiRequestBuilder2 = _interopRequireDefault(_multiRequestBuilder);\n\nvar _config = __webpack_require__(7);\n\nvar _config2 = _interopRequireDefault(_config);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar SERVICE_NAME = 'multirequest';\n\nvar OTTService = function () {\n function OTTService() {\n _classCallCheck(this, OTTService);\n }\n\n _createClass(OTTService, null, [{\n key: 'getMultiRequest',\n\n /**\n * Gets a new instance of MultiRequestBuilder with ott params\n * @function getMultiRequest\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n value: function getMultiRequest(ks, partnerId) {\n var config = _config2.default.get();\n var ottParams = config.serviceParams;\n if (ks) {\n Object.assign(ottParams, { ks: ks });\n }\n if (partnerId) {\n Object.assign(ottParams, { partnerId: partnerId });\n }\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var multiReq = new _multiRequestBuilder2.default(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ottParams;\n return multiReq;\n }\n }]);\n\n return OTTService;\n}();\n\nexports.default = OTTService;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// playkit-bookmark-service.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap c1625b18c43e6562ec1c","//@flow\nexport default class RequestBuilder {\n /**\n * @member - Service name\n * @type {string}\n */\n service: string;\n /**\n * @member - Service action\n * @type {string}\n */\n action: string;\n /**\n * @member - Service params\n * @type {any}\n */\n params: any;\n /**\n * @member - Service headers\n * @type {Map}\n */\n headers: Map;\n /**\n * @member - Service URL\n * @type {string}\n */\n url: string;\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n method: string;\n /**\n * @member - Service tag\n * @type {string}\n */\n tag: string;\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n constructor(headers: Map = new Map()) {\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n getUrl(serviceUrl: string): string {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n doHttpRequest(): Promise {\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n let request = new XMLHttpRequest();\n return new Promise((resolve, reject) => {\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.status === 200) {\n let jsonResponse;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(`${e.message}, ${request.responseText}`);\n }\n if (jsonResponse && typeof jsonResponse === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);\n else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(this.method, this.url);\n this.headers.forEach((value, key) => {\n request.setRequestHeader(key, value);\n });\n request.send(this.params);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./util/request-builder.js","//@flow\nexport default class ServiceResult {\n /**\n * @member - Is service returned an error\n * @type {boolean}\n */\n hasError: boolean = false;\n /**\n * @member - The service error\n * @type {ServiceError}\n */\n error: ServiceError;\n /**\n * @member - The service result data\n * @type {Object}\n */\n data: Object;\n\n /**\n * @constructor\n * @param {Object} response - Service response\n */\n constructor(response: Object) {\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n }\n}\n\nclass ServiceError {\n /**\n * @member - The error code\n * @type {string}\n */\n code: string;\n /**\n * @member - The error message\n * @type {string}\n */\n message: string;\n\n /**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n constructor(code: string, message: string) {\n this.code = code;\n this.message = message;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-service-result.js","//@flow\nimport RequestBuilder from '../../util/request-builder';\nimport getLogger from '../../util/logger';\nimport ServiceResult from './base-service-result';\n\nexport default class MultiRequestBuilder extends RequestBuilder {\n static _logger = getLogger('MultiRequestBuilder');\n /**\n * @member - Array of requests\n * @type {Array}\n */\n requests: Array = [];\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n add(request: RequestBuilder): MultiRequestBuilder {\n this.requests.push(request);\n const requestParams = {};\n const serviceDef: Object = {service: request.service, action: request.action};\n Object.assign(requestParams, {[this.requests.length]: Object.assign(serviceDef, request.params)});\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n execute(): Promise {\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error(`${err.message}`);\n }\n return new Promise((resolve, reject) => {\n this.doHttpRequest().then(\n data => {\n resolve(new MultiRequestResult(data));\n },\n err => {\n const errorText: string = `Error on multiRequest execution, error <${err}>.`;\n reject(errorText);\n }\n );\n });\n }\n}\n\nexport class MultiRequestResult {\n static _logger = getLogger('MultiRequestResult');\n /**\n * @member - Is success\n * @type {boolean}\n */\n success: boolean;\n /**\n * @member - Multi request response data\n * @type {Object}\n */\n results: Array = [];\n\n /**\n * @constructor\n * @param {Object} response data\n */\n constructor(response: Object) {\n this.success = true;\n const responseArr = response.result ? response.result : response;\n responseArr.forEach(result => {\n const serviceResult: ServiceResult = new ServiceResult(result);\n this.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error(\n `Service returned an error with error code: ${serviceResult.error.code} and message: ${serviceResult.error.message}.`\n );\n this.success = false;\n return;\n }\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/multi-request-builder.js","const clone = data => {\n let node;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach((e, i) => {\n if ((typeof e === 'object' && e !== {}) || (Array.isArray(e) && e.length > 0)) {\n node[i] = clone(e);\n }\n });\n } else if (typeof data === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(key => {\n if ((typeof node[key] === 'object' && node[key] !== {}) || (Array.isArray(node[key]) && node[key].length > 0)) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexport {clone};\n\n\n\n// WEBPACK FOOTER //\n// ./util/clone.js","//@flow\nimport * as JsLogger from 'js-logger';\n\nexport type LogLevelObject = {value: number, name: string};\nexport type LogLevelType = {[level: string]: LogLevelObject};\n\nconst LogLevel: LogLevelType = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\nJsLogger.useDefaults({defaultLevel: JsLogger.ERROR});\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name?: string): Object {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name?: string): LogLevelObject {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level: LogLevelObject, name?: string): void {\n getLogger(name).setLevel(level);\n}\n\nexport default getLogger;\nexport {LogLevel, getLogLevel, setLogLevel};\n\n\n\n// WEBPACK FOOTER //\n// ./util/logger.js","/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine(Logger);\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/js-logger/src/logger.js\n// module id = 6\n// module chunks = 0 1 2","//@flow\nimport {clone} from '../../util/clone';\n\nconst defaultConfig: Object = {\n serviceParams: {\n apiVersion: '4.7.1'\n }\n};\n\nexport default class OTTConfiguration {\n static set(clientConfig?: ProviderEnvConfigObject) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n static get(): Object {\n return clone(defaultConfig);\n }\n}\n\nexport {OTTConfiguration};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/config.js","//@flow\nimport OTTService from '../ott-service';\nimport RequestBuilder from '../../../../util/request-builder';\nimport OTTConfiguration from '../../config';\n\nconst SERVICE_NAME: string = 'bookmark';\n\nexport default class OTTBookmarkService extends OTTService {\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function add\n * @param {string} serviceUrl - The service url\n * @param {string} ks - The ks\n * @param {Object} bookmark - The udid\n * @returns {RequestBuilder} - The request builder\n * @static\n */\n static add(serviceUrl: string, ks: string, bookmark: Object): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'add';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n const playerData: Object = {\n objectType: 'KalturaBookmarkPlayerData',\n action: bookmark.playerData.action,\n averageBitrate: bookmark.playerData.averageBitrate,\n totalBitrate: bookmark.playerData.totalBitrate,\n currentBitrate: bookmark.playerData.currentBitrate,\n fileId: bookmark.playerData.fileId\n };\n const bookmarkServiceParams: Object = {\n objectType: 'KalturaBookmark',\n type: bookmark.type,\n id: bookmark.id,\n position: bookmark.position,\n playerData: playerData\n };\n const config = OTTConfiguration.get();\n const serviceParams = config.serviceParams;\n Object.assign(serviceParams, {bookmark: bookmarkServiceParams, ks: ks});\n request.params = JSON.stringify(serviceParams);\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/services/bookmark/bookmark-service.js","// @flow\nimport RequestBuilder from '../../../../util/request-builder';\nimport OTTConfiguration from '../../config';\nimport OTTBookmarkService from './bookmark-service';\n\ndeclare var __VERSION__: string;\ndeclare var __NAME__: string;\n\nconst NAME = __NAME__ + '-bookmark-service';\nconst VERSION = __VERSION__;\n\nexport {OTTBookmarkService, OTTConfiguration, RequestBuilder, NAME, VERSION};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/services/bookmark/index.js","//@flow\nimport MultiRequestBuilder from '../../common/multi-request-builder';\nimport OTTConfiguration from '../config';\n\nconst SERVICE_NAME: string = 'multirequest';\n\nexport default class OTTService {\n /**\n * Gets a new instance of MultiRequestBuilder with ott params\n * @function getMultiRequest\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n static getMultiRequest(ks: string, partnerId?: number): MultiRequestBuilder {\n const config = OTTConfiguration.get();\n const ottParams = config.serviceParams;\n if (ks) {\n Object.assign(ottParams, {ks: ks});\n }\n if (partnerId) {\n Object.assign(ottParams, {partnerId: partnerId});\n }\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const multiReq = new MultiRequestBuilder(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ottParams;\n return multiReq;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/services/ott-service.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition?5ca6*","./providers/playkit-bookmark-service.js","webpack:///webpack/bootstrap 3d59ede3457363cdaf17?69f4*","webpack:///./util/request-builder.js?3e89*","webpack:///./k-provider/common/base-service-result.js?3ffa*","webpack:///./k-provider/common/multi-request-builder.js?9930*","webpack:///./util/clone.js?3f6f*","webpack:///./util/logger.js?8c6e*","webpack:///../~/js-logger/src/logger.js?779b*","./providers/./k-provider/ott/config.js","./providers/./k-provider/ott/services/bookmark/bookmark-service.js","./providers/./k-provider/ott/services/bookmark/index.js","./providers/./k-provider/ott/services/ott-service.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","_classCallCheck","instance","Constructor","TypeError","_typeof","Symbol","iterator","obj","constructor","_createClass","defineProperties","target","props","length","descriptor","writable","key","protoProps","staticProps","RequestBuilder","headers","arguments","undefined","Map","serviceUrl","service","action","_this","url","Error","request","XMLHttpRequest","Promise","resolve","reject","onreadystatechange","readyState","status","jsonResponse","JSON","parse","responseText","e","message","code","open","method","forEach","setRequestHeader","send","params","default","ServiceResult","response","hasError","objectType","error","ServiceError","data","_interopRequireDefault","_defineProperty","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","MultiRequestResult","_requestBuilder","_requestBuilder2","_logger","_logger2","_baseServiceResult","_baseServiceResult2","MultiRequestBuilder","_RequestBuilder","_ref","_temp","_ret","_len","args","Array","_key","getPrototypeOf","apply","concat","requests","push","requestParams","serviceDef","assign","_this2","stringify","err","doHttpRequest","then","errorText","_this3","results","success","result","serviceResult","clone","node","isArray","slice","keys","getLogger","JsLogger","getLogLevel","getLevel","setLogLevel","level","setLevel","LogLevel","_jsLogger","newObj","DEBUG","INFO","TIME","WARN","ERROR","OFF","useDefaults","defaultLevel","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","global","Logger","VERSION","logHandler","contextualLoggersByNameMap","bind","scope","func","merge","defineLogLevel","ContextualLogger","defaultContext","context","filterLevel","log","info","newLevel","enabledFor","lvl","debug","invoke","warn","time","label","timeEnd","msgArgs","globalLogger","L","setHandler","createDefaultHandler","options","formatter","messages","unshift","timerStartTimeByLabelMap","invokeConsoleMethod","hdlr","Function","console","timerLabel","Date","getTime","OTTConfiguration","_clone","defaultConfig","serviceParams","apiVersion","clientConfig","_ottService","_ottService2","_config","_config2","OTTBookmarkService","_OTTService","ks","bookmark","set","getUrl","playerData","averageBitrate","totalBitrate","currentBitrate","fileId","bookmarkServiceParams","type","id","position","config","NAME","_bookmarkService","_bookmarkService2","_multiRequestBuilder","_multiRequestBuilder2","OTTService","partnerId","ottParams","multiReq"],"mappings":"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","file":"playkit-bookmark-service.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"bookmark\"] = factory();\n\telse\n\t\troot[\"playkit\"] = root[\"playkit\"] || {}, root[\"playkit\"][\"services\"] = root[\"playkit\"][\"services\"] || {}, root[\"playkit\"][\"services\"][\"bookmark\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"bookmark\"] = factory();\n\telse\n\t\troot[\"playkit\"] = root[\"playkit\"] || {}, root[\"playkit\"][\"services\"] = root[\"playkit\"][\"services\"] || {}, root[\"playkit\"][\"services\"][\"bookmark\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 13);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar RequestBuilder = function () {\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n\n /**\n * @member - Service headers\n * @type {Map}\n */\n\n /**\n * @member - Service action\n * @type {string}\n */\n function RequestBuilder() {\n var headers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map();\n\n _classCallCheck(this, RequestBuilder);\n\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n\n /**\n * @member - Service tag\n * @type {string}\n */\n\n /**\n * @member - Service URL\n * @type {string}\n */\n\n /**\n * @member - Service params\n * @type {any}\n */\n\n /**\n * @member - Service name\n * @type {string}\n */\n\n\n _createClass(RequestBuilder, [{\n key: 'getUrl',\n value: function getUrl(serviceUrl) {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n\n }, {\n key: 'doHttpRequest',\n value: function doHttpRequest() {\n var _this = this;\n\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n var request = new XMLHttpRequest();\n return new Promise(function (resolve, reject) {\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n var jsonResponse = void 0;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(e.message + ', ' + request.responseText);\n }\n if (jsonResponse && (typeof jsonResponse === 'undefined' ? 'undefined' : _typeof(jsonResponse)) === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(_this.method, _this.url);\n _this.headers.forEach(function (value, key) {\n request.setRequestHeader(key, value);\n });\n request.send(_this.params);\n });\n }\n }]);\n\n return RequestBuilder;\n}();\n\nexports.default = RequestBuilder;\n\n/***/ }),\n/* 1 */,\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ServiceResult =\n\n/**\n * @constructor\n * @param {Object} response - Service response\n */\n\n/**\n * @member - The service error\n * @type {ServiceError}\n */\n\n/**\n * @member - The service result data\n * @type {Object}\n */\nfunction ServiceResult(response) {\n _classCallCheck(this, ServiceResult);\n\n this.hasError = false;\n\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n}\n/**\n * @member - Is service returned an error\n * @type {boolean}\n */\n;\n\nexports.default = ServiceResult;\n\nvar ServiceError =\n\n/**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n\n/**\n * @member - The error code\n * @type {string}\n */\nfunction ServiceError(code, message) {\n _classCallCheck(this, ServiceError);\n\n this.code = code;\n this.message = message;\n}\n/**\n * @member - The error message\n * @type {string}\n */\n;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MultiRequestResult = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _logger = __webpack_require__(5);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MultiRequestBuilder = function (_RequestBuilder) {\n _inherits(MultiRequestBuilder, _RequestBuilder);\n\n function MultiRequestBuilder() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, MultiRequestBuilder);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = MultiRequestBuilder.__proto__ || Object.getPrototypeOf(MultiRequestBuilder)).call.apply(_ref, [this].concat(args))), _this), _this.requests = [], _temp), _possibleConstructorReturn(_this, _ret);\n }\n /**\n * @member - Array of requests\n * @type {Array}\n */\n\n\n _createClass(MultiRequestBuilder, [{\n key: 'add',\n\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n value: function add(request) {\n this.requests.push(request);\n var requestParams = {};\n var serviceDef = { service: request.service, action: request.action };\n Object.assign(requestParams, _defineProperty({}, this.requests.length, Object.assign(serviceDef, request.params)));\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n\n }, {\n key: 'execute',\n value: function execute() {\n var _this2 = this;\n\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error('' + err.message);\n }\n return new Promise(function (resolve, reject) {\n _this2.doHttpRequest().then(function (data) {\n resolve(new MultiRequestResult(data));\n }, function (err) {\n var errorText = 'Error on multiRequest execution, error <' + err + '>.';\n reject(errorText);\n });\n });\n }\n }]);\n\n return MultiRequestBuilder;\n}(_requestBuilder2.default);\n\nMultiRequestBuilder._logger = (0, _logger2.default)('MultiRequestBuilder');\nexports.default = MultiRequestBuilder;\n\nvar MultiRequestResult =\n\n/**\n * @constructor\n * @param {Object} response data\n */\nexports.MultiRequestResult = function MultiRequestResult(response) {\n var _this3 = this;\n\n _classCallCheck(this, MultiRequestResult);\n\n this.results = [];\n\n this.success = true;\n var responseArr = response.result ? response.result : response;\n responseArr.forEach(function (result) {\n var serviceResult = new _baseServiceResult2.default(result);\n _this3.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error('Service returned an error with error code: ' + serviceResult.error.code + ' and message: ' + serviceResult.error.message + '.');\n _this3.success = false;\n return;\n }\n });\n}\n/**\n * @member - Multi request response data\n * @type {Object}\n */\n\n/**\n * @member - Is success\n * @type {boolean}\n */\n;\n\nMultiRequestResult._logger = (0, _logger2.default)('MultiRequestResult');\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar clone = function clone(data) {\n var node = void 0;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach(function (e, i) {\n if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object' && e !== {} || Array.isArray(e) && e.length > 0) {\n node[i] = clone(e);\n }\n });\n } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(function (key) {\n if (_typeof(node[key]) === 'object' && node[key] !== {} || Array.isArray(node[key]) && node[key].length > 0) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexports.clone = clone;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setLogLevel = exports.getLogLevel = exports.LogLevel = undefined;\n\nvar _jsLogger = __webpack_require__(6);\n\nvar JsLogger = _interopRequireWildcard(_jsLogger);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar LogLevel = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\n\nJsLogger.useDefaults({ defaultLevel: JsLogger.ERROR });\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name) {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name) {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level, name) {\n getLogger(name).setLevel(level);\n}\n\nexports.default = getLogger;\nexports.LogLevel = LogLevel;\nexports.getLogLevel = getLogLevel;\nexports.setLogLevel = setLogLevel;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (true) {\r\n\t\t!(__WEBPACK_AMD_DEFINE_FACTORY__ = (Logger),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OTTConfiguration = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(4);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultConfig = {\n serviceParams: {\n apiVersion: '4.7.1'\n }\n};\n\nvar OTTConfiguration = function () {\n function OTTConfiguration() {\n _classCallCheck(this, OTTConfiguration);\n }\n\n _createClass(OTTConfiguration, null, [{\n key: 'set',\n value: function set(clientConfig) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n }, {\n key: 'get',\n value: function get() {\n return (0, _clone.clone)(defaultConfig);\n }\n }]);\n\n return OTTConfiguration;\n}();\n\nexports.default = OTTConfiguration;\nexports.OTTConfiguration = OTTConfiguration;\n\n/***/ }),\n/* 8 */,\n/* 9 */,\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ottService = __webpack_require__(14);\n\nvar _ottService2 = _interopRequireDefault(_ottService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _config = __webpack_require__(7);\n\nvar _config2 = _interopRequireDefault(_config);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'bookmark';\n\nvar OTTBookmarkService = function (_OTTService) {\n _inherits(OTTBookmarkService, _OTTService);\n\n function OTTBookmarkService() {\n _classCallCheck(this, OTTBookmarkService);\n\n return _possibleConstructorReturn(this, (OTTBookmarkService.__proto__ || Object.getPrototypeOf(OTTBookmarkService)).apply(this, arguments));\n }\n\n _createClass(OTTBookmarkService, null, [{\n key: 'add',\n\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function add\n * @param {string} serviceUrl - The service url\n * @param {string} ks - The ks\n * @param {Object} bookmark - The udid\n * @returns {RequestBuilder} - The request builder\n * @static\n */\n value: function add(serviceUrl, ks, bookmark) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'add';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n var playerData = {\n objectType: 'KalturaBookmarkPlayerData',\n action: bookmark.playerData.action,\n averageBitrate: bookmark.playerData.averageBitrate,\n totalBitrate: bookmark.playerData.totalBitrate,\n currentBitrate: bookmark.playerData.currentBitrate,\n fileId: bookmark.playerData.fileId\n };\n var bookmarkServiceParams = {\n objectType: 'KalturaBookmark',\n type: bookmark.type,\n id: bookmark.id,\n position: bookmark.position,\n playerData: playerData\n };\n var config = _config2.default.get();\n var serviceParams = config.serviceParams;\n Object.assign(serviceParams, { bookmark: bookmarkServiceParams, ks: ks });\n request.params = JSON.stringify(serviceParams);\n return request;\n }\n }]);\n\n return OTTBookmarkService;\n}(_ottService2.default);\n\nexports.default = OTTBookmarkService;\n\n/***/ }),\n/* 11 */,\n/* 12 */,\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VERSION = exports.NAME = exports.RequestBuilder = exports.OTTConfiguration = exports.OTTBookmarkService = undefined;\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _config = __webpack_require__(7);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _bookmarkService = __webpack_require__(10);\n\nvar _bookmarkService2 = _interopRequireDefault(_bookmarkService);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NAME = \"playkit-js-providers\" + '-bookmark-service';\n\nvar VERSION = \"2.8.0\";\n\nexports.OTTBookmarkService = _bookmarkService2.default;\nexports.OTTConfiguration = _config2.default;\nexports.RequestBuilder = _requestBuilder2.default;\nexports.NAME = NAME;\nexports.VERSION = VERSION;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _multiRequestBuilder = __webpack_require__(3);\n\nvar _multiRequestBuilder2 = _interopRequireDefault(_multiRequestBuilder);\n\nvar _config = __webpack_require__(7);\n\nvar _config2 = _interopRequireDefault(_config);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar SERVICE_NAME = 'multirequest';\n\nvar OTTService = function () {\n function OTTService() {\n _classCallCheck(this, OTTService);\n }\n\n _createClass(OTTService, null, [{\n key: 'getMultiRequest',\n\n /**\n * Gets a new instance of MultiRequestBuilder with ott params\n * @function getMultiRequest\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n value: function getMultiRequest(ks, partnerId) {\n var config = _config2.default.get();\n var ottParams = config.serviceParams;\n if (ks) {\n Object.assign(ottParams, { ks: ks });\n }\n if (partnerId) {\n Object.assign(ottParams, { partnerId: partnerId });\n }\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var multiReq = new _multiRequestBuilder2.default(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ottParams;\n return multiReq;\n }\n }]);\n\n return OTTService;\n}();\n\nexports.default = OTTService;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// playkit-bookmark-service.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 3d59ede3457363cdaf17","//@flow\nexport default class RequestBuilder {\n /**\n * @member - Service name\n * @type {string}\n */\n service: string;\n /**\n * @member - Service action\n * @type {string}\n */\n action: string;\n /**\n * @member - Service params\n * @type {any}\n */\n params: any;\n /**\n * @member - Service headers\n * @type {Map}\n */\n headers: Map;\n /**\n * @member - Service URL\n * @type {string}\n */\n url: string;\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n method: string;\n /**\n * @member - Service tag\n * @type {string}\n */\n tag: string;\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n constructor(headers: Map = new Map()) {\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n getUrl(serviceUrl: string): string {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n doHttpRequest(): Promise {\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n let request = new XMLHttpRequest();\n return new Promise((resolve, reject) => {\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.status === 200) {\n let jsonResponse;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(`${e.message}, ${request.responseText}`);\n }\n if (jsonResponse && typeof jsonResponse === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);\n else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(this.method, this.url);\n this.headers.forEach((value, key) => {\n request.setRequestHeader(key, value);\n });\n request.send(this.params);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./util/request-builder.js","//@flow\nexport default class ServiceResult {\n /**\n * @member - Is service returned an error\n * @type {boolean}\n */\n hasError: boolean = false;\n /**\n * @member - The service error\n * @type {ServiceError}\n */\n error: ServiceError;\n /**\n * @member - The service result data\n * @type {Object}\n */\n data: Object;\n\n /**\n * @constructor\n * @param {Object} response - Service response\n */\n constructor(response: Object) {\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n }\n}\n\nclass ServiceError {\n /**\n * @member - The error code\n * @type {string}\n */\n code: string;\n /**\n * @member - The error message\n * @type {string}\n */\n message: string;\n\n /**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n constructor(code: string, message: string) {\n this.code = code;\n this.message = message;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-service-result.js","//@flow\nimport RequestBuilder from '../../util/request-builder';\nimport getLogger from '../../util/logger';\nimport ServiceResult from './base-service-result';\n\nexport default class MultiRequestBuilder extends RequestBuilder {\n static _logger = getLogger('MultiRequestBuilder');\n /**\n * @member - Array of requests\n * @type {Array}\n */\n requests: Array = [];\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n add(request: RequestBuilder): MultiRequestBuilder {\n this.requests.push(request);\n const requestParams = {};\n const serviceDef: Object = {service: request.service, action: request.action};\n Object.assign(requestParams, {[this.requests.length]: Object.assign(serviceDef, request.params)});\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n execute(): Promise {\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error(`${err.message}`);\n }\n return new Promise((resolve, reject) => {\n this.doHttpRequest().then(\n data => {\n resolve(new MultiRequestResult(data));\n },\n err => {\n const errorText: string = `Error on multiRequest execution, error <${err}>.`;\n reject(errorText);\n }\n );\n });\n }\n}\n\nexport class MultiRequestResult {\n static _logger = getLogger('MultiRequestResult');\n /**\n * @member - Is success\n * @type {boolean}\n */\n success: boolean;\n /**\n * @member - Multi request response data\n * @type {Object}\n */\n results: Array = [];\n\n /**\n * @constructor\n * @param {Object} response data\n */\n constructor(response: Object) {\n this.success = true;\n const responseArr = response.result ? response.result : response;\n responseArr.forEach(result => {\n const serviceResult: ServiceResult = new ServiceResult(result);\n this.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error(\n `Service returned an error with error code: ${serviceResult.error.code} and message: ${serviceResult.error.message}.`\n );\n this.success = false;\n return;\n }\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/multi-request-builder.js","const clone = data => {\n let node;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach((e, i) => {\n if ((typeof e === 'object' && e !== {}) || (Array.isArray(e) && e.length > 0)) {\n node[i] = clone(e);\n }\n });\n } else if (typeof data === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(key => {\n if ((typeof node[key] === 'object' && node[key] !== {}) || (Array.isArray(node[key]) && node[key].length > 0)) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexport {clone};\n\n\n\n// WEBPACK FOOTER //\n// ./util/clone.js","//@flow\nimport * as JsLogger from 'js-logger';\n\nexport type LogLevelObject = {value: number, name: string};\nexport type LogLevelType = {[level: string]: LogLevelObject};\n\nconst LogLevel: LogLevelType = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\nJsLogger.useDefaults({defaultLevel: JsLogger.ERROR});\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name?: string): Object {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name?: string): LogLevelObject {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level: LogLevelObject, name?: string): void {\n getLogger(name).setLevel(level);\n}\n\nexport default getLogger;\nexport {LogLevel, getLogLevel, setLogLevel};\n\n\n\n// WEBPACK FOOTER //\n// ./util/logger.js","/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine(Logger);\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/js-logger/src/logger.js\n// module id = 6\n// module chunks = 0 1 2","//@flow\nimport {clone} from '../../util/clone';\n\nconst defaultConfig: Object = {\n serviceParams: {\n apiVersion: '4.7.1'\n }\n};\n\nexport default class OTTConfiguration {\n static set(clientConfig?: ProviderEnvConfigObject) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n static get(): Object {\n return clone(defaultConfig);\n }\n}\n\nexport {OTTConfiguration};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/config.js","//@flow\nimport OTTService from '../ott-service';\nimport RequestBuilder from '../../../../util/request-builder';\nimport OTTConfiguration from '../../config';\n\nconst SERVICE_NAME: string = 'bookmark';\n\nexport default class OTTBookmarkService extends OTTService {\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function add\n * @param {string} serviceUrl - The service url\n * @param {string} ks - The ks\n * @param {Object} bookmark - The udid\n * @returns {RequestBuilder} - The request builder\n * @static\n */\n static add(serviceUrl: string, ks: string, bookmark: Object): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'add';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n const playerData: Object = {\n objectType: 'KalturaBookmarkPlayerData',\n action: bookmark.playerData.action,\n averageBitrate: bookmark.playerData.averageBitrate,\n totalBitrate: bookmark.playerData.totalBitrate,\n currentBitrate: bookmark.playerData.currentBitrate,\n fileId: bookmark.playerData.fileId\n };\n const bookmarkServiceParams: Object = {\n objectType: 'KalturaBookmark',\n type: bookmark.type,\n id: bookmark.id,\n position: bookmark.position,\n playerData: playerData\n };\n const config = OTTConfiguration.get();\n const serviceParams = config.serviceParams;\n Object.assign(serviceParams, {bookmark: bookmarkServiceParams, ks: ks});\n request.params = JSON.stringify(serviceParams);\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/services/bookmark/bookmark-service.js","// @flow\nimport RequestBuilder from '../../../../util/request-builder';\nimport OTTConfiguration from '../../config';\nimport OTTBookmarkService from './bookmark-service';\n\ndeclare var __VERSION__: string;\ndeclare var __NAME__: string;\n\nconst NAME = __NAME__ + '-bookmark-service';\nconst VERSION = __VERSION__;\n\nexport {OTTBookmarkService, OTTConfiguration, RequestBuilder, NAME, VERSION};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/services/bookmark/index.js","//@flow\nimport MultiRequestBuilder from '../../common/multi-request-builder';\nimport OTTConfiguration from '../config';\n\nconst SERVICE_NAME: string = 'multirequest';\n\nexport default class OTTService {\n /**\n * Gets a new instance of MultiRequestBuilder with ott params\n * @function getMultiRequest\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n static getMultiRequest(ks: string, partnerId?: number): MultiRequestBuilder {\n const config = OTTConfiguration.get();\n const ottParams = config.serviceParams;\n if (ks) {\n Object.assign(ottParams, {ks: ks});\n }\n if (partnerId) {\n Object.assign(ottParams, {partnerId: partnerId});\n }\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const multiReq = new MultiRequestBuilder(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ottParams;\n return multiReq;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/services/ott-service.js"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/playkit-ott-provider.js b/dist/playkit-ott-provider.js index 732ca685..c5d4e465 100644 --- a/dist/playkit-ott-provider.js +++ b/dist/playkit-ott-provider.js @@ -3,5 +3,5 @@ * Jonny Reeves, http://jonnyreeves.co.uk/ * js-logger may be freely distributed under the MIT license. */ -!function(a){"use strict";var i={};i.VERSION="1.4.1";var u,s={},c=function(e,t){return function(){return t.apply(e,arguments)}},l=function(){var e,t,n=arguments,r=n[0];for(t=1;t=t.value},debug:function(){this.invoke(i.DEBUG,arguments)},info:function(){this.invoke(i.INFO,arguments)},warn:function(){this.invoke(i.WARN,arguments)},error:function(){this.invoke(i.ERROR,arguments)},time:function(e){"string"==typeof e&&e.length>0&&this.invoke(i.TIME,[e,"start"])},timeEnd:function(e){"string"==typeof e&&e.length>0&&this.invoke(i.TIME,[e,"end"])},invoke:function(e,t){u&&this.enabledFor(e)&&u(t,l({level:e},this.context))}};var d=new p({filterLevel:i.OFF});!function(){var e=i;e.enabledFor=c(d,d.enabledFor),e.debug=c(d,d.debug),e.time=c(d,d.time),e.timeEnd=c(d,d.timeEnd),e.info=c(d,d.info),e.warn=c(d,d.warn),e.error=c(d,d.error),e.log=e.info}(),i.setHandler=function(e){u=e},i.setLevel=function(e){d.setLevel(e);for(var t in s)s.hasOwnProperty(t)&&s[t].setLevel(e)},i.getLevel=function(){return d.getLevel()},i.get=function(e){return s[e]||(s[e]=new p(l({name:e},d.context)))},i.createDefaultHandler=function(e){e=e||{},e.formatter=e.formatter||function(e,t){t.name&&e.unshift("["+t.name+"]")};var t={},n=function(e,t){Function.prototype.apply.call(e,console,t)};return"undefined"==typeof console?function(){}:function(r,o){r=Array.prototype.slice.call(r);var a,u=console.log;o.level===i.TIME?(a=(o.name?"["+o.name+"] ":"")+r[0],"start"===r[1]?console.time?console.time(a):t[a]=(new Date).getTime():console.timeEnd?console.timeEnd(a):n(u,[a+": "+((new Date).getTime()-t[a])+"ms"])):(o.level===i.WARN&&console.warn?u=console.warn:o.level===i.ERROR&&console.error?u=console.error:o.level===i.INFO&&console.info?u=console.info:o.level===i.DEBUG&&console.debug&&(u=console.debug),e.formatter(r,o),n(u,r))}},i.useDefaults=function(e){i.setLevel(e&&e.defaultLevel||i.DEBUG),i.setHandler(i.createDefaultHandler(e))},r=i,void 0!==(o="function"==typeof r?r.call(t,n,t,e):r)&&(e.exports=o)}()},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n0}},{key:"getProtocol",value:function(e){var t="";if(this.protocols&&this.protocols.length>0){this.protocols.split(",").forEach(function(n){n===e&&(t=n)})}else if("http"===e)return e;return t}}]),e}();t.default=u},,,,,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=function(){function e(e,t){for(var n=0;n-1&&(n.sources.vr={}),Object.assign(n.sources.metadata,u.metadata)}}}return this._logger.debug("Data parsing finished",n),n}}]),t}(c.default);t.default=M},,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=t.NAME=t.MediaType=t.ContextType=t.Provider=void 0;var o=n(31),a=r(o),i=n(14),u=r(i),s=n(13),c=r(s),l=u.default.Type,f=c.default.Type;t.Provider=a.default,t.ContextType=l,t.MediaType=f,t.NAME="playkit-js-providers-ott",t.VERSION="2.9.0"},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"";o(this,t);var r=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r._multiRequest=l.default.getMultiRequest(n,e),r}return i(t,e),t}(s.default);t.default=f},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n0||"KalturaLiveAsset"===e.objectType?{type:_.default.Type.LIVE,dvrStatus:0}:{type:_.default.Type.VOD}}),s)),u(l,b.default.Type.EPG,(c={},u(c,v.default.Type.CATCHUP,function(){return{type:_.default.Type.VOD}}),u(c,v.default.Type.START_OVER,function(){return{type:_.default.Type.LIVE,dvrStatus:1}}),c)),u(l,b.default.Type.RECORDING,u({},v.default.Type.PLAYBACK,function(){return{type:_.default.Type.VOD}})),l),A=function(e){function t(){return o(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return i(t,e),f(t,null,[{key:"getMediaEntry",value:function(e,n){var r=new _.default,o=e.playBackContextResult,a=e.mediaDataResult,i=o.sources,u=t.reconstructMetadata(a);u.description=a.description,u.name=a.name,r.metadata=u,r.poster=t._getPoster(a.pictures),r.id=a.id;var s=t._filterSourcesByFormats(i,n.formats);r.sources=t._getParsedSources(s);var c=t._getMediaType(a.data,n.mediaType,n.contextType);return r.type=c.type,r.dvrStatus=c.dvrStatus,r.duration=Math.max.apply(Math,i.map(function(e){return e.duration})),r}},{key:"reconstructMetadata",value:function(e){return{metas:t.addToMetaObject(e.metas),tags:t.addToMetaObject(e.tags)}}},{key:"addToMetaObject",value:function(e){var t={};return e&&e.forEach(function(e){t[e.key]=e.value}),t}},{key:"_getPoster",value:function(e){if(e&&e.length>0){var t=e[0],n=t.url;return/.*\/thumbnail\/.*(?:width|height)\/\d+\/(?:height|width)\/\d+/.test(n)?n:e.map(function(e){return{url:e.url,width:e.width,height:e.height}})}return""}},{key:"_getMediaType",value:function(e,t,n){var r={type:_.default.Type.UNKNOWN};return S[t]&&S[t][n]&&(r=S[t][n](e)),r}},{key:"_filterSourcesByFormats",value:function(e,t){return t.length>0&&(e=e.filter(function(e){return t.includes(e.type)})),e}},{key:"_getParsedSources",value:function(e){var n=new k.default,r=function(e){var r=t._parseAdaptiveSource(e),o=j.SupportedStreamFormat.get(e.format);n.map(r,o)};return e&&e.length>0&&(function(){e.filter(function(e){return!t._isProgressiveSource(e)}).forEach(r)}(),function(){e.filter(function(e){return t._isProgressiveSource(e)}).forEach(r)}()),n}},{key:"_parseAdaptiveSource",value:function(e){var n=new T.default;if(e){var r=e.url,o=j.SupportedStreamFormat.get(e.format);if(o&&(n.mimetype=o.mimeType),""===r)return t._logger.error("failed to create play url from source, discarding source: ("+e.fileId+"), "+e.format+"."),n;if(n.url=r,n.id=e.fileId+","+e.format,e.hasDrmData()){var a=[];e.drm.forEach(function(e){a.push(new w.default(e.licenseURL,R.default.Scheme[e.scheme],e.certificate))}),n.drmData=a}}return n}}]),t}(I.default);A._logger=(0,d.default)("OTTProviderParser"),t.default=A},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=function(){function e(e,t){for(var n=0;n=t.value},debug:function(){this.invoke(i.DEBUG,arguments)},info:function(){this.invoke(i.INFO,arguments)},warn:function(){this.invoke(i.WARN,arguments)},error:function(){this.invoke(i.ERROR,arguments)},time:function(e){"string"==typeof e&&e.length>0&&this.invoke(i.TIME,[e,"start"])},timeEnd:function(e){"string"==typeof e&&e.length>0&&this.invoke(i.TIME,[e,"end"])},invoke:function(e,t){u&&this.enabledFor(e)&&u(t,l({level:e},this.context))}};var d=new p({filterLevel:i.OFF});!function(){var e=i;e.enabledFor=c(d,d.enabledFor),e.debug=c(d,d.debug),e.time=c(d,d.time),e.timeEnd=c(d,d.timeEnd),e.info=c(d,d.info),e.warn=c(d,d.warn),e.error=c(d,d.error),e.log=e.info}(),i.setHandler=function(e){u=e},i.setLevel=function(e){d.setLevel(e);for(var t in s)s.hasOwnProperty(t)&&s[t].setLevel(e)},i.getLevel=function(){return d.getLevel()},i.get=function(e){return s[e]||(s[e]=new p(l({name:e},d.context)))},i.createDefaultHandler=function(e){e=e||{},e.formatter=e.formatter||function(e,t){t.name&&e.unshift("["+t.name+"]")};var t={},n=function(e,t){Function.prototype.apply.call(e,console,t)};return"undefined"==typeof console?function(){}:function(r,o){r=Array.prototype.slice.call(r);var a,u=console.log;o.level===i.TIME?(a=(o.name?"["+o.name+"] ":"")+r[0],"start"===r[1]?console.time?console.time(a):t[a]=(new Date).getTime():console.timeEnd?console.timeEnd(a):n(u,[a+": "+((new Date).getTime()-t[a])+"ms"])):(o.level===i.WARN&&console.warn?u=console.warn:o.level===i.ERROR&&console.error?u=console.error:o.level===i.INFO&&console.info?u=console.info:o.level===i.DEBUG&&console.debug&&(u=console.debug),e.formatter(r,o),n(u,r))}},i.useDefaults=function(e){i.setLevel(e&&e.defaultLevel||i.DEBUG),i.setHandler(i.createDefaultHandler(e))},r=i,void 0!==(o="function"==typeof r?r.call(t,n,t,e):r)&&(e.exports=o)}()},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n0}},{key:"getProtocol",value:function(e){var t="";if(this.protocols&&this.protocols.length>0){this.protocols.split(",").forEach(function(n){n===e&&(t=n)})}else if("http"===e)return e;return t}}]),e}();t.default=u},,,,,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=function(){function e(e,t){for(var n=0;n-1&&(n.sources.vr={}),Object.assign(n.sources.metadata,u.metadata)}}}return this._logger.debug("Data parsing finished",n),n}}]),t}(c.default);t.default=M},,,,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=t.NAME=t.MediaType=t.ContextType=t.Provider=void 0;var o=n(31),a=r(o),i=n(14),u=r(i),s=n(13),c=r(s),l=u.default.Type,f=c.default.Type;t.Provider=a.default,t.ContextType=l,t.MediaType=f,t.NAME="playkit-js-providers-ott",t.VERSION="2.8.0"},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"";o(this,t);var r=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r._multiRequest=l.default.getMultiRequest(n,e),r}return i(t,e),t}(s.default);t.default=f},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n0||"KalturaLiveAsset"===e.objectType?{type:_.default.Type.LIVE,dvrStatus:0}:{type:_.default.Type.VOD}}),s)),u(l,b.default.Type.EPG,(c={},u(c,v.default.Type.CATCHUP,function(){return{type:_.default.Type.VOD}}),u(c,v.default.Type.START_OVER,function(){return{type:_.default.Type.LIVE,dvrStatus:1}}),c)),u(l,b.default.Type.RECORDING,u({},v.default.Type.PLAYBACK,function(){return{type:_.default.Type.VOD}})),l),A=function(e){function t(){return o(this,t),a(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return i(t,e),f(t,null,[{key:"getMediaEntry",value:function(e,n){var r=new _.default,o=e.playBackContextResult,a=e.mediaDataResult,i=o.sources,u=t.reconstructMetadata(a);u.description=a.description,u.name=a.name,r.metadata=u,r.poster=t._getPoster(a.pictures),r.id=a.id;var s=t._filterSourcesByFormats(i,n.formats);r.sources=t._getParsedSources(s);var c=t._getMediaType(a.data,n.mediaType,n.contextType);return r.type=c.type,r.dvrStatus=c.dvrStatus,r.duration=Math.max.apply(Math,i.map(function(e){return e.duration})),r}},{key:"reconstructMetadata",value:function(e){return{metas:t.addToMetaObject(e.metas),tags:t.addToMetaObject(e.tags)}}},{key:"addToMetaObject",value:function(e){var t={};return e&&e.forEach(function(e){t[e.key]=e.value}),t}},{key:"_getPoster",value:function(e){if(e&&e.length>0){var t=e[0],n=t.url;return/.*\/thumbnail\/.*(?:width|height)\/\d+\/(?:height|width)\/\d+/.test(n)?n:e.map(function(e){return{url:e.url,width:e.width,height:e.height}})}return""}},{key:"_getMediaType",value:function(e,t,n){var r={type:_.default.Type.UNKNOWN};return S[t]&&S[t][n]&&(r=S[t][n](e)),r}},{key:"_filterSourcesByFormats",value:function(e,t){return t.length>0&&(e=e.filter(function(e){return t.includes(e.type)})),e}},{key:"_getParsedSources",value:function(e){var n=new k.default,r=function(e){var r=t._parseAdaptiveSource(e),o=j.SupportedStreamFormat.get(e.format);n.map(r,o)};return e&&e.length>0&&(function(){e.filter(function(e){return!t._isProgressiveSource(e)}).forEach(r)}(),function(){e.filter(function(e){return t._isProgressiveSource(e)}).forEach(r)}()),n}},{key:"_parseAdaptiveSource",value:function(e){var n=new T.default;if(e){var r=e.url,o=j.SupportedStreamFormat.get(e.format);if(o&&(n.mimetype=o.mimeType),""===r)return t._logger.error("failed to create play url from source, discarding source: ("+e.fileId+"), "+e.format+"."),n;if(n.url=r,n.id=e.fileId+","+e.format,e.hasDrmData()){var a=[];e.drm.forEach(function(e){a.push(new w.default(e.licenseURL,R.default.Scheme[e.scheme],e.certificate))}),n.drmData=a}}return n}}]),t}(I.default);A._logger=(0,d.default)("OTTProviderParser"),t.default=A},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=function(){function e(e,t){for(var n=0;n} headers The request headers\n */\n\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n\n /**\n * @member - Service headers\n * @type {Map}\n */\n\n /**\n * @member - Service action\n * @type {string}\n */\n function RequestBuilder() {\n var headers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map();\n\n _classCallCheck(this, RequestBuilder);\n\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n\n /**\n * @member - Service tag\n * @type {string}\n */\n\n /**\n * @member - Service URL\n * @type {string}\n */\n\n /**\n * @member - Service params\n * @type {any}\n */\n\n /**\n * @member - Service name\n * @type {string}\n */\n\n\n _createClass(RequestBuilder, [{\n key: 'getUrl',\n value: function getUrl(serviceUrl) {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n\n }, {\n key: 'doHttpRequest',\n value: function doHttpRequest() {\n var _this = this;\n\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n var request = new XMLHttpRequest();\n return new Promise(function (resolve, reject) {\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n var jsonResponse = void 0;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(e.message + ', ' + request.responseText);\n }\n if (jsonResponse && (typeof jsonResponse === 'undefined' ? 'undefined' : _typeof(jsonResponse)) === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(_this.method, _this.url);\n _this.headers.forEach(function (value, key) {\n request.setRequestHeader(key, value);\n });\n request.send(_this.params);\n });\n }\n }]);\n\n return RequestBuilder;\n}();\n\nexports.default = RequestBuilder;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _mediaSources = __webpack_require__(7);\n\nvar _mediaSources2 = _interopRequireDefault(_mediaSources);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MediaEntry = function () {\n\n /**\n * @constructor\n */\n\n\n /**\n * @member - entry id\n * @type {string}\n */\n\n /**\n * @member - entry name\n * @type {string}\n */\n\n /**\n * @member - entry sources\n * @type {MediaSources}\n */\n\n /**\n * @member - entry duration\n * @type {number}\n */\n\n /**\n * @member - entry type\n * @type {string}\n */\n\n /**\n * @member - entry metadata\n * @type {Object}\n */\n\n /**\n * @member - DVR status\n * @type {number}\n */\n\n /**\n * @member - media poster\n * @type {string | Array}\n */\n\n\n /**\n * @member - assetReferenceType\n * @type {string }\n */\n function MediaEntry() {\n _classCallCheck(this, MediaEntry);\n\n this.metadata = new Map();\n this.sources = new _mediaSources2.default();\n this.type = MediaEntry.Type.UNKNOWN;\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaEntryObject} - The json class object.\n */\n\n\n _createClass(MediaEntry, [{\n key: 'toJSON',\n value: function toJSON() {\n return {\n id: this.id,\n name: this.name,\n sources: this.sources.toJSON(),\n duration: this.duration,\n dvrStatus: this.dvrStatus,\n metadata: this.metadata,\n type: this.type,\n poster: this.poster,\n assetReferenceType: this.assetReferenceType\n };\n }\n }]);\n\n return MediaEntry;\n}();\n\nMediaEntry.Type = {\n VOD: 'Vod',\n LIVE: 'Live',\n IMAGE: 'Image',\n AUDIO: 'Audio',\n UNKNOWN: 'Unknown'\n};\nexports.default = MediaEntry;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ServiceResult =\n\n/**\n * @constructor\n * @param {Object} response - Service response\n */\n\n/**\n * @member - The service error\n * @type {ServiceError}\n */\n\n/**\n * @member - The service result data\n * @type {Object}\n */\nfunction ServiceResult(response) {\n _classCallCheck(this, ServiceResult);\n\n this.hasError = false;\n\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n}\n/**\n * @member - Is service returned an error\n * @type {boolean}\n */\n;\n\nexports.default = ServiceResult;\n\nvar ServiceError =\n\n/**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n\n/**\n * @member - The error code\n * @type {string}\n */\nfunction ServiceError(code, message) {\n _classCallCheck(this, ServiceError);\n\n this.code = code;\n this.message = message;\n}\n/**\n * @member - The error message\n * @type {string}\n */\n;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setLogLevel = exports.getLogLevel = exports.LogLevel = undefined;\n\nvar _jsLogger = __webpack_require__(23);\n\nvar JsLogger = _interopRequireWildcard(_jsLogger);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar LogLevel = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\n\nJsLogger.useDefaults({ defaultLevel: JsLogger.ERROR });\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name) {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name) {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level, name) {\n getLogger(name).setLevel(level);\n}\n\nexports.default = getLogger;\nexports.LogLevel = LogLevel;\nexports.getLogLevel = getLogLevel;\nexports.setLogLevel = setLogLevel;\n\n/***/ }),\n/* 4 */,\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar MediaFormat = exports.MediaFormat = {\n DASH: {\n name: 'dash',\n mimeType: 'application/dash+xml',\n pathExt: 'mpd'\n },\n HLS: {\n name: 'hls',\n mimeType: 'application/x-mpegURL',\n pathExt: 'm3u8'\n },\n WVM: {\n name: 'wvm',\n mimeType: 'video/wvm',\n pathExt: 'wvm'\n },\n MP4: {\n name: 'mp4',\n mimeType: 'video/mp4',\n pathExt: 'mp4'\n },\n MP3: {\n name: 'mp3',\n mimeType: 'audio/mpeg',\n pathExt: 'mp3'\n }\n};\n\nvar SupportedStreamFormat = exports.SupportedStreamFormat = new Map([['mpegdash', MediaFormat.DASH], ['applehttp', MediaFormat.HLS], ['url', MediaFormat.MP4]]);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _drm = __webpack_require__(8);\n\nvar _drm2 = _interopRequireDefault(_drm);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MediaSource = function () {\n function MediaSource() {\n _classCallCheck(this, MediaSource);\n }\n\n _createClass(MediaSource, [{\n key: 'toJSON',\n\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourceObject} - The json class object.\n */\n\n /**\n * @member - media source height\n * @type {number}\n */\n\n /**\n * @member - media source bandwidth\n * @type {number}\n */\n\n /**\n * @member - media source mimetype\n * @type {string}\n */\n\n /**\n * @member - media source id\n * @type {string}\n */\n value: function toJSON() {\n var response = {\n id: this.id,\n url: this.url,\n mimetype: this.mimetype\n };\n if (this.bandwidth) response.bandwidth = this.bandwidth;\n if (this.width) response.width = this.width;\n if (this.height) response.height = this.height;\n if (this.label) response.label = this.label;\n if (this.drmData && this.drmData.length > 0) {\n response.drmData = [];\n this.drmData.forEach(function (d) {\n if (Array.isArray(response.drmData)) {\n response.drmData.push(d.toJSON());\n }\n });\n }\n return response;\n }\n /**\n * @member - media source label\n * @type {string}\n */\n\n /**\n * @member - media source width\n * @type {number}\n */\n\n /**\n * @member - media source drm data\n * @type {Array}\n */\n\n /**\n * @member - media source url\n * @type {string}\n */\n\n }]);\n\n return MediaSource;\n}();\n\nexports.default = MediaSource;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _mediaSource = __webpack_require__(6);\n\nvar _mediaSource2 = _interopRequireDefault(_mediaSource);\n\nvar _mediaFormat = __webpack_require__(5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MediaSources = function () {\n\n /**\n * @constructor\n */\n\n /**\n * Dash media sources container.\n * @type {Array}\n * @public\n */\n function MediaSources() {\n _classCallCheck(this, MediaSources);\n\n this.progressive = [];\n this.dash = [];\n this.hls = [];\n }\n\n /**\n * Maps the source to one of the containers according to his media format.\n * @param {MediaSource} source - The source to add to one of the containers.\n * @param {MediaFormat} mediaFormat - The media format of the source.\n * @returns {void}\n */\n\n /**\n * Hls media sources container.\n * @type {Array}\n * @public\n */\n\n /**\n * Progressive download media sources container.\n * @type {Array}\n * @public\n */\n\n\n _createClass(MediaSources, [{\n key: 'map',\n value: function map(source, mediaFormat) {\n if (mediaFormat) {\n switch (mediaFormat.name) {\n case _mediaFormat.MediaFormat.MP4.name:\n this.progressive.push(source);\n break;\n case _mediaFormat.MediaFormat.DASH.name:\n this.dash.push(source);\n break;\n case _mediaFormat.MediaFormat.HLS.name:\n this.hls.push(source);\n break;\n default:\n break;\n }\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourcesObject} - The json class object.\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var response = {\n progressive: [],\n dash: [],\n hls: []\n };\n this.progressive.forEach(function (p) {\n return response.progressive.push(p.toJSON());\n });\n this.hls.forEach(function (h) {\n return response.hls.push(h.toJSON());\n });\n this.dash.forEach(function (d) {\n return response.dash.push(d.toJSON());\n });\n return response;\n }\n }]);\n\n return MediaSources;\n}();\n\nexports.default = MediaSources;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Drm = function () {\n\n /**\n * @constructor\n * @param {string} licenseUrl - the license url\n * @param {string} scheme - the drm scheme\n * @param {?string} certificate - the drm certificate\n */\n\n /**\n * @member - drm scheme\n * @type {string}\n */\n function Drm(licenseUrl, scheme, certificate) {\n _classCallCheck(this, Drm);\n\n this.licenseUrl = licenseUrl;\n this.scheme = scheme;\n if (certificate) {\n this.certificate = certificate;\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderDrmDataObject} - The json class object.\n */\n\n\n /**\n * @member - drm certificate\n * @type {string}\n */\n\n /**\n * @member - license url\n * @type {string}\n */\n\n\n _createClass(Drm, [{\n key: \"toJSON\",\n value: function toJSON() {\n var response = {\n licenseUrl: this.licenseUrl,\n scheme: this.scheme\n };\n if (this.certificate) response.certificate = this.certificate;\n return response;\n }\n }]);\n\n return Drm;\n}();\n\nexports.default = Drm;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _multiRequestBuilder = __webpack_require__(10);\n\nvar _multiRequestBuilder2 = _interopRequireDefault(_multiRequestBuilder);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DataLoaderManager = function () {\n function DataLoaderManager() {\n _classCallCheck(this, DataLoaderManager);\n\n this._loaders = new Map();\n }\n /**\n * @member - Loaders response map index\n * @type {Map>}\n * @private\n * @static\n */\n\n /**\n * @member - Loaders to execute\n * @type {Map}\n * @private\n */\n\n /**\n * @member - Loaders multi request\n * @type {MultiRequestBuilder}\n * @protected\n */\n\n /**\n * @member - Loaders multi response\n * @type {MultiRequestResult}\n * @private\n */\n\n\n _createClass(DataLoaderManager, [{\n key: 'add',\n\n\n /**\n * Add loader too execution loaders map\n * @function\n * @param {Function} loader Loader to add\n * @param {Object} params Loader params\n * @returns {void}\n */\n value: function add(loader, params) {\n var _this = this;\n\n var execution_loader = new loader(params);\n if (execution_loader.isValid()) {\n this._loaders.set(loader.id, execution_loader);\n // Get the start index from the multiReqeust before adding current execution_loader requests\n var startIndex = this._multiRequest.requests.length;\n // Get the requests\n var requests = execution_loader.requests;\n // Add requests to muktiRequest queue\n requests.forEach(function (request) {\n _this._multiRequest.add(request);\n });\n // Create range array of current execution_loader requests\n var executionLoaderResponseMap = Array.from(new Array(requests.length), function (val, index) {\n return index + startIndex;\n });\n // Add to map\n DataLoaderManager._loadersResponseMap.set(loader.id, executionLoaderResponseMap);\n }\n }\n\n /**\n * Get data from all loaders using multi request\n * @function\n * @returns {Promise} Promise\n */\n\n }, {\n key: 'fetchData',\n value: function fetchData() {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n _this2._multiRequest.execute().then(function (response) {\n _this2._multiResponse = response;\n if (!response.success) {\n reject(response);\n } else {\n var preparedData = _this2.prepareData(response);\n if (preparedData.success) {\n resolve(_this2._loaders);\n } else {\n reject({ success: false, data: preparedData.error });\n }\n }\n }, function (err) {\n reject(err);\n });\n });\n }\n\n /**\n * Prepare fetched data\n * @function\n * @param {MultiRequestResult} response - The multi request result\n * @returns {Object} - The prepared data\n */\n\n }, {\n key: 'prepareData',\n value: function prepareData(response) {\n this._loaders.forEach(function (loader, name) {\n var loaderDataIndexes = DataLoaderManager._loadersResponseMap.get(name);\n try {\n if (loaderDataIndexes && loaderDataIndexes.length > 0) {\n loader.response = response.results.slice(loaderDataIndexes[0], loaderDataIndexes[loaderDataIndexes.length - 1] + 1);\n }\n } catch (err) {\n return { success: false, error: err };\n }\n });\n return { success: true, data: this._loaders };\n }\n }]);\n\n return DataLoaderManager;\n}();\n\nDataLoaderManager._loadersResponseMap = new Map();\nexports.default = DataLoaderManager;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MultiRequestResult = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _logger = __webpack_require__(3);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MultiRequestBuilder = function (_RequestBuilder) {\n _inherits(MultiRequestBuilder, _RequestBuilder);\n\n function MultiRequestBuilder() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, MultiRequestBuilder);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = MultiRequestBuilder.__proto__ || Object.getPrototypeOf(MultiRequestBuilder)).call.apply(_ref, [this].concat(args))), _this), _this.requests = [], _temp), _possibleConstructorReturn(_this, _ret);\n }\n /**\n * @member - Array of requests\n * @type {Array}\n */\n\n\n _createClass(MultiRequestBuilder, [{\n key: 'add',\n\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n value: function add(request) {\n this.requests.push(request);\n var requestParams = {};\n var serviceDef = { service: request.service, action: request.action };\n Object.assign(requestParams, _defineProperty({}, this.requests.length, Object.assign(serviceDef, request.params)));\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n\n }, {\n key: 'execute',\n value: function execute() {\n var _this2 = this;\n\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error('' + err.message);\n }\n return new Promise(function (resolve, reject) {\n _this2.doHttpRequest().then(function (data) {\n resolve(new MultiRequestResult(data));\n }, function (err) {\n var errorText = 'Error on multiRequest execution, error <' + err + '>.';\n reject(errorText);\n });\n });\n }\n }]);\n\n return MultiRequestBuilder;\n}(_requestBuilder2.default);\n\nMultiRequestBuilder._logger = (0, _logger2.default)('MultiRequestBuilder');\nexports.default = MultiRequestBuilder;\n\nvar MultiRequestResult =\n\n/**\n * @constructor\n * @param {Object} response data\n */\nexports.MultiRequestResult = function MultiRequestResult(response) {\n var _this3 = this;\n\n _classCallCheck(this, MultiRequestResult);\n\n this.results = [];\n\n this.success = true;\n var responseArr = response.result ? response.result : response;\n responseArr.forEach(function (result) {\n var serviceResult = new _baseServiceResult2.default(result);\n _this3.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error('Service returned an error with error code: ' + serviceResult.error.code + ' and message: ' + serviceResult.error.message + '.');\n _this3.success = false;\n return;\n }\n });\n}\n/**\n * @member - Multi request response data\n * @type {Object}\n */\n\n/**\n * @member - Is success\n * @type {boolean}\n */\n;\n\nMultiRequestResult._logger = (0, _logger2.default)('MultiRequestResult');\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaDrmPlaybackPluginData =\n\n/**\n * @constructor\n * @param {Object} drm The json response\n */\n\n\n/**\n * @member - The drm scheme\n * @type {string}\n */\n\n\n/**\n * @member - The license URL\n * @type {string}\n */\n\n\n/**\n * @member - The drm certificate\n * @type {?string}\n */\nfunction KalturaDrmPlaybackPluginData(drm) {\n _classCallCheck(this, KalturaDrmPlaybackPluginData);\n\n this.scheme = drm.scheme;\n this.licenseURL = drm.licenseURL;\n this.certificate = drm.certificate;\n};\n\nKalturaDrmPlaybackPluginData.Scheme = {\n 'drm.PLAYREADY_CENC': 'com.microsoft.playready',\n 'drm.WIDEVINE_CENC': 'com.widevine.alpha',\n 'fairplay.FAIRPLAY': 'com.apple.fairplay',\n WIDEVINE_CENC: 'com.widevine.alpha',\n PLAYREADY_CENC: 'com.microsoft.playready',\n FAIRPLAY: 'com.apple.fairplay'\n};\nexports.default = KalturaDrmPlaybackPluginData;\n\n/***/ }),\n/* 12 */,\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar KalturaAsset = function (_ServiceResult) {\n _inherits(KalturaAsset, _ServiceResult);\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n\n /**\n * @member - The asset metas\n * @type {Array}\n */\n\n /**\n * @member - The asset name description\n * @type {string}\n */\n function KalturaAsset(response) {\n _classCallCheck(this, KalturaAsset);\n\n var _this = _possibleConstructorReturn(this, (KalturaAsset.__proto__ || Object.getPrototypeOf(KalturaAsset)).call(this, response));\n\n _this.name = '';\n _this.description = '';\n _this.tags = [];\n _this.metas = [];\n _this.pictures = [];\n\n if (!_this.hasError) {\n _this.id = response.id;\n _this.name = response.name;\n _this.description = response.description;\n _this.metas = _this._formatTagsMetas(response.metas);\n _this.tags = _this._formatTagsMetas(response.tags);\n _this.pictures = response.images;\n }\n return _this;\n }\n /**\n * @member - The asset images\n * @type {Array}\n */\n\n /**\n * @member - The asset tags\n * @type {Array}\n */\n\n /**\n * @member - The asset name\n * @type {string}\n */\n\n /**\n * @member - The asset id\n * @type {number}\n */\n\n\n _createClass(KalturaAsset, [{\n key: '_formatTagsMetas',\n value: function _formatTagsMetas(objectToParse) {\n var parsed = [];\n Object.keys(objectToParse).forEach(function (key) {\n if (objectToParse[key].objects) {\n var value = '';\n objectToParse[key].objects.forEach(function (object) {\n value += object.value + '|';\n });\n parsed.push({ key: key, value: value });\n } else {\n parsed.push({ key: key, value: objectToParse[key].value });\n }\n });\n return parsed;\n }\n }]);\n\n return KalturaAsset;\n}(_baseServiceResult2.default);\n\nKalturaAsset.Type = {\n MEDIA: 'media',\n RECORDING: 'recording',\n EPG: 'epg'\n};\nKalturaAsset.AssetReferenceType = {\n MEDIA: 'media',\n EPG_INTERNAL: 'epg_internal',\n EPG_EXTERNAL: 'epg_external'\n};\nexports.default = KalturaAsset;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nvar _kalturaAccessControlMessage = __webpack_require__(18);\n\nvar _kalturaAccessControlMessage2 = _interopRequireDefault(_kalturaAccessControlMessage);\n\nvar _kalturaRuleAction = __webpack_require__(19);\n\nvar _kalturaRuleAction2 = _interopRequireDefault(_kalturaRuleAction);\n\nvar _kalturaPlaybackSource = __webpack_require__(24);\n\nvar _kalturaPlaybackSource2 = _interopRequireDefault(_kalturaPlaybackSource);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar KalturaPlaybackContext = function (_ServiceResult) {\n _inherits(KalturaPlaybackContext, _ServiceResult);\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n function KalturaPlaybackContext(response) {\n _classCallCheck(this, KalturaPlaybackContext);\n\n var _this = _possibleConstructorReturn(this, (KalturaPlaybackContext.__proto__ || Object.getPrototypeOf(KalturaPlaybackContext)).call(this, response));\n\n _this.sources = [];\n _this.actions = [];\n _this.messages = [];\n\n if (!_this.hasError) {\n var messages = response.messages;\n if (messages) {\n messages.map(function (message) {\n return _this.messages.push(new _kalturaAccessControlMessage2.default(message));\n });\n }\n var actions = response.actions;\n if (actions) {\n actions.map(function (action) {\n return _this.actions.push(new _kalturaRuleAction2.default(action));\n });\n }\n var sources = response.sources;\n if (sources) {\n sources.map(function (source) {\n return _this.sources.push(new _kalturaPlaybackSource2.default(source));\n });\n }\n }\n return _this;\n }\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n\n /**\n * @member - The playback sources\n * @type {Array}\n */\n\n\n return KalturaPlaybackContext;\n}(_baseServiceResult2.default);\n\nKalturaPlaybackContext.Type = {\n TRAILER: 'TRAILER',\n CATCHUP: 'CATCHUP',\n START_OVER: 'START_OVER',\n PLAYBACK: 'PLAYBACK'\n};\nexports.default = KalturaPlaybackContext;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OTTConfiguration = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(22);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultConfig = {\n serviceParams: {\n apiVersion: '4.7.1'\n }\n};\n\nvar OTTConfiguration = function () {\n function OTTConfiguration() {\n _classCallCheck(this, OTTConfiguration);\n }\n\n _createClass(OTTConfiguration, null, [{\n key: 'set',\n value: function set(clientConfig) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n }, {\n key: 'get',\n value: function get() {\n return (0, _clone.clone)(defaultConfig);\n }\n }]);\n\n return OTTConfiguration;\n}();\n\nexports.default = OTTConfiguration;\nexports.OTTConfiguration = OTTConfiguration;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _mediaFormat = __webpack_require__(5);\n\nvar _mediaEntry = __webpack_require__(1);\n\nvar _mediaEntry2 = _interopRequireDefault(_mediaEntry);\n\nvar _mediaSources = __webpack_require__(7);\n\nvar _mediaSources2 = _interopRequireDefault(_mediaSources);\n\nvar _mediaSource = __webpack_require__(6);\n\nvar _mediaSource2 = _interopRequireDefault(_mediaSource);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BaseProviderParser = function () {\n function BaseProviderParser() {\n _classCallCheck(this, BaseProviderParser);\n }\n\n _createClass(BaseProviderParser, null, [{\n key: 'getMediaEntry',\n\n // eslint-disable-next-line no-unused-vars\n value: function getMediaEntry() {\n throw new TypeError('getMediaEntry method must be implement by the derived class');\n }\n\n // eslint-disable-next-line no-unused-vars\n\n }, {\n key: '_getParsedSources',\n value: function _getParsedSources() {\n throw new TypeError('_getParsedSources method must be implement by the derived class');\n }\n\n // eslint-disable-next-line no-unused-vars\n\n }, {\n key: '_parseAdaptiveSource',\n value: function _parseAdaptiveSource() {\n throw new TypeError('_parseAdaptiveSource method must be implement by the derived class');\n }\n }, {\n key: '_isProgressiveSource',\n value: function _isProgressiveSource(source) {\n var sourceFormat = _mediaFormat.SupportedStreamFormat.get(source.format);\n return !!sourceFormat && sourceFormat.name === 'mp4';\n }\n }, {\n key: 'hasBlockActions',\n value: function hasBlockActions(assetResponse) {\n if (assetResponse && assetResponse.playBackContextResult) {\n var playbackContext = assetResponse.playBackContextResult;\n for (var actionIndex = 0; actionIndex < playbackContext.actions.length; actionIndex++) {\n if (playbackContext.actions[actionIndex].type === 'BLOCK') {\n return playbackContext.actions[actionIndex];\n }\n }\n }\n return null;\n }\n }, {\n key: 'hasErrorMessage',\n value: function hasErrorMessage(assetResponse) {\n var messages = assetResponse.playBackContextResult.messages;\n for (var messagesIndex = 0; messagesIndex < messages.length; messagesIndex++) {\n if (messages[messagesIndex].code !== 'OK') {\n return messages[messagesIndex];\n }\n }\n return null;\n }\n }]);\n\n return BaseProviderParser;\n}();\n\nexports.default = BaseProviderParser;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _logger = __webpack_require__(3);\n\nvar _dataLoaderManager = __webpack_require__(9);\n\nvar _dataLoaderManager2 = _interopRequireDefault(_dataLoaderManager);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BaseProvider = function () {\n _createClass(BaseProvider, [{\n key: 'partnerId',\n get: function get() {\n return this._partnerId;\n }\n }, {\n key: 'uiConfId',\n get: function get() {\n return this._uiConfId;\n }\n }, {\n key: 'ks',\n get: function get() {\n return this._ks;\n },\n set: function set(value) {\n this._ks = value;\n }\n }, {\n key: 'playerVersion',\n get: function get() {\n return this._playerVersion;\n }\n }, {\n key: 'isAnonymous',\n get: function get() {\n return this._isAnonymous;\n }\n }]);\n\n function BaseProvider(options, playerVersion) {\n _classCallCheck(this, BaseProvider);\n\n this._partnerId = options.partnerId;\n this._uiConfId = options.uiConfId;\n this._isAnonymous = !options.ks;\n this._ks = options.ks || '';\n this._playerVersion = playerVersion;\n if (options.logLevel && this.LogLevel[options.logLevel]) {\n (0, _logger.setLogLevel)(this.LogLevel[options.logLevel]);\n }\n }\n\n // eslint-disable-next-line no-unused-vars\n\n\n _createClass(BaseProvider, [{\n key: 'getMediaConfig',\n value: function getMediaConfig(mediaInfo) {\n throw new TypeError('getMediaConfig method must be implement by the derived class');\n }\n\n // eslint-disable-next-line no-unused-vars\n\n }, {\n key: '_parseDataFromResponse',\n value: function _parseDataFromResponse(data) {\n throw new TypeError('_parseDataFromResponse method must be implement by the derived class');\n }\n }, {\n key: 'getLogLevel',\n value: function getLogLevel(name) {\n return (0, _logger.getLogLevel)(name);\n }\n }, {\n key: 'setLogLevel',\n value: function setLogLevel(level, name) {\n (0, _logger.setLogLevel)(level, name);\n }\n }, {\n key: 'LogLevel',\n get: function get() {\n return _logger.LogLevel;\n }\n }]);\n\n return BaseProvider;\n}();\n\nexports.default = BaseProvider;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaAccessControlMessage =\n\n/**\n * @constructor\n * @param {Object} data The json response\n */\n\n/**\n * @member - The access control message\n * @type {string}\n */\nfunction KalturaAccessControlMessage(data) {\n _classCallCheck(this, KalturaAccessControlMessage);\n\n this.message = data.message;\n this.code = data.code;\n}\n/**\n * @member - The access control message code\n * @@type {string}\n */\n;\n\nexports.default = KalturaAccessControlMessage;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaRuleAction =\n\n/**\n * @constructor\n * @param {Object} data - The response\n */\n\n\n/**\n * @member - The type of the action\n * @type {string|number}\n */\nfunction KalturaRuleAction(data) {\n _classCallCheck(this, KalturaRuleAction);\n\n this.type = data.type;\n};\n\nKalturaRuleAction.Type = {\n DRM_POLICY: 'drm.DRM_POLICY',\n BLOCK: 1,\n PREVIEW: 2,\n LIMIT_FLAVORS: 3,\n ADD_TO_STORAGE: 4,\n LIMIT_DELIVERY_PROFILES: 5,\n SERVE_FROM_REMOTE_SERVER: 6,\n REQUEST_HOST_REGEX: 7,\n LIMIT_THUMBNAIL_CAPTURE: 8\n};\nexports.default = KalturaRuleAction;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _multiRequestBuilder = __webpack_require__(10);\n\nvar _multiRequestBuilder2 = _interopRequireDefault(_multiRequestBuilder);\n\nvar _config = __webpack_require__(15);\n\nvar _config2 = _interopRequireDefault(_config);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar SERVICE_NAME = 'multirequest';\n\nvar OTTService = function () {\n function OTTService() {\n _classCallCheck(this, OTTService);\n }\n\n _createClass(OTTService, null, [{\n key: 'getMultiRequest',\n\n /**\n * Gets a new instance of MultiRequestBuilder with ott params\n * @function getMultiRequest\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n value: function getMultiRequest(ks, partnerId) {\n var config = _config2.default.get();\n var ottParams = config.serviceParams;\n if (ks) {\n Object.assign(ottParams, { ks: ks });\n }\n if (partnerId) {\n Object.assign(ottParams, { partnerId: partnerId });\n }\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var multiReq = new _multiRequestBuilder2.default(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ottParams;\n return multiReq;\n }\n }]);\n\n return OTTService;\n}();\n\nexports.default = OTTService;\n\n/***/ }),\n/* 21 */,\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar clone = function clone(data) {\n var node = void 0;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach(function (e, i) {\n if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object' && e !== {} || Array.isArray(e) && e.length > 0) {\n node[i] = clone(e);\n }\n });\n } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(function (key) {\n if (_typeof(node[key]) === 'object' && node[key] !== {} || Array.isArray(node[key]) && node[key].length > 0) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexports.clone = clone;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (true) {\r\n\t\t!(__WEBPACK_AMD_DEFINE_FACTORY__ = (Logger),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _kalturaDrmPlaybackPluginData = __webpack_require__(11);\n\nvar _kalturaDrmPlaybackPluginData2 = _interopRequireDefault(_kalturaDrmPlaybackPluginData);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaPlaybackSource = function () {\n\n /**\n * @constructor\n * @param {Object} source The response\n */\n function KalturaPlaybackSource(source) {\n var _this = this;\n\n _classCallCheck(this, KalturaPlaybackSource);\n\n this.drm = [];\n\n this.format = source.format;\n this.adsPolicy = source.adsPolicy;\n this.adsParam = source.adsParam;\n this.duration = source.duration;\n this.url = source.url;\n this.type = source.type;\n this.fileId = source.id;\n this.protocols = source.protocols;\n if (source.drm) {\n source.drm.map(function (drm) {\n return _this.drm.push(new _kalturaDrmPlaybackPluginData2.default(drm));\n });\n }\n }\n\n /**\n * Checks if source has DRM data\n * @function hasDrmData\n * @returns {boolean} Is source has DRM\n */\n\n\n _createClass(KalturaPlaybackSource, [{\n key: 'hasDrmData',\n value: function hasDrmData() {\n return this.drm && this.drm.length > 0;\n }\n\n /**\n * Returns source desired protocol if supported\n * @param {string} protocol - the desired protocol for the source (base play url protocol)\n * @returns {string} - protocol if protocol is in the protocols list - if not empty string returned\n */\n\n }, {\n key: 'getProtocol',\n value: function getProtocol(protocol) {\n var returnValue = '';\n if (this.protocols && this.protocols.length > 0) {\n var protocolsArr = this.protocols.split(',');\n protocolsArr.forEach(function (p) {\n if (p === protocol) {\n returnValue = p;\n }\n });\n } else if (protocol === 'http') {\n return protocol;\n }\n return returnValue;\n }\n }]);\n\n return KalturaPlaybackSource;\n}();\n\nexports.default = KalturaPlaybackSource;\n\n/***/ }),\n/* 25 */,\n/* 26 */,\n/* 27 */,\n/* 28 */,\n/* 29 */,\n/* 30 */,\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _baseProvider = __webpack_require__(17);\n\nvar _baseProvider2 = _interopRequireDefault(_baseProvider);\n\nvar _logger = __webpack_require__(3);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _config = __webpack_require__(15);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _dataLoaderManager = __webpack_require__(37);\n\nvar _dataLoaderManager2 = _interopRequireDefault(_dataLoaderManager);\n\nvar _sessionLoader = __webpack_require__(38);\n\nvar _sessionLoader2 = _interopRequireDefault(_sessionLoader);\n\nvar _assetLoader = __webpack_require__(36);\n\nvar _assetLoader2 = _interopRequireDefault(_assetLoader);\n\nvar _providerParser = __webpack_require__(39);\n\nvar _providerParser2 = _interopRequireDefault(_providerParser);\n\nvar _kalturaAsset = __webpack_require__(13);\n\nvar _kalturaAsset2 = _interopRequireDefault(_kalturaAsset);\n\nvar _kalturaPlaybackContext = __webpack_require__(14);\n\nvar _kalturaPlaybackContext2 = _interopRequireDefault(_kalturaPlaybackContext);\n\nvar _mediaEntry = __webpack_require__(1);\n\nvar _mediaEntry2 = _interopRequireDefault(_mediaEntry);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar OTTProvider = function (_BaseProvider) {\n _inherits(OTTProvider, _BaseProvider);\n\n /**\n * @constructor\n * @param {ProviderOptionsObject} options - provider options\n * @param {string} playerVersion - player version\n */\n function OTTProvider(options, playerVersion) {\n _classCallCheck(this, OTTProvider);\n\n var _this = _possibleConstructorReturn(this, (OTTProvider.__proto__ || Object.getPrototypeOf(OTTProvider)).call(this, options, playerVersion));\n\n _this._logger = (0, _logger2.default)('OTTProvider');\n _config2.default.set(options.env);\n return _this;\n }\n\n /**\n * Gets the backend media config.\n * @param {OTTProviderMediaInfoObject} mediaInfo - ott media info\n * @returns {Promise} - The provider media config\n */\n\n\n _createClass(OTTProvider, [{\n key: 'getMediaConfig',\n value: function getMediaConfig(mediaInfo) {\n var _this2 = this;\n\n if (mediaInfo.ks) {\n this.ks = mediaInfo.ks;\n }\n this._dataLoader = new _dataLoaderManager2.default(this.partnerId, this.ks);\n return new Promise(function (resolve, reject) {\n var entryId = mediaInfo.entryId;\n if (entryId) {\n var ks = _this2.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n _this2._dataLoader.add(_sessionLoader2.default, { partnerId: _this2.partnerId });\n }\n var contextType = mediaInfo.contextType || _kalturaPlaybackContext2.default.Type.PLAYBACK;\n var mediaType = mediaInfo.mediaType || _kalturaAsset2.default.Type.MEDIA;\n var assetReferenceType = mediaInfo.assetReferenceType || _kalturaAsset2.default.AssetReferenceType.MEDIA;\n var playbackContext = {\n mediaProtocol: mediaInfo.protocol,\n assetFileIds: mediaInfo.fileIds,\n context: contextType\n };\n _this2._dataLoader.add(_assetLoader2.default, {\n entryId: entryId,\n ks: ks,\n type: mediaType,\n playbackContext: playbackContext,\n assetReferenceType: assetReferenceType\n });\n var requestData = {\n contextType: contextType,\n mediaType: mediaType,\n formats: mediaInfo.formats || []\n };\n _this2._dataLoader.fetchData().then(function (response) {\n try {\n resolve(_this2._parseDataFromResponse(response, requestData));\n } catch (err) {\n reject({ success: false, data: err });\n }\n }, function (err) {\n reject(err);\n });\n } else {\n reject({ success: false, data: 'Missing mandatory parameter' });\n }\n });\n }\n }, {\n key: '_parseDataFromResponse',\n value: function _parseDataFromResponse(data, requestData) {\n this._logger.debug('Data parsing started');\n var mediaConfig = {\n session: {\n isAnonymous: this._isAnonymous,\n partnerId: this.partnerId\n },\n sources: {\n hls: [],\n dash: [],\n progressive: [],\n id: '',\n duration: 0,\n type: _mediaEntry2.default.Type.UNKNOWN,\n poster: '',\n dvr: false,\n vr: null,\n metadata: {\n name: '',\n description: ''\n }\n },\n plugins: {}\n };\n if (this.uiConfId) {\n mediaConfig.session.uiConfId = this.uiConfId;\n }\n if (data) {\n if (data.has(_sessionLoader2.default.id)) {\n var sessionLoader = data.get(_sessionLoader2.default.id);\n if (sessionLoader && sessionLoader.response) {\n this.ks = sessionLoader.response;\n mediaConfig.session.ks = this.ks;\n }\n } else {\n mediaConfig.session.ks = this.ks;\n }\n if (data.has(_assetLoader2.default.id)) {\n var assetLoader = data.get(_assetLoader2.default.id);\n if (assetLoader && assetLoader.response && Object.keys(assetLoader.response).length) {\n var blockedAction = _providerParser2.default.hasBlockActions(assetLoader.response);\n if (blockedAction) {\n var errorMessage = _providerParser2.default.hasErrorMessage(assetLoader.response);\n if (errorMessage) {\n this._logger.error('Asset is blocked, error message: ', errorMessage);\n throw errorMessage;\n } else {\n this._logger.error('Asset is blocked, action: ', blockedAction);\n throw blockedAction;\n }\n }\n var mediaEntry = _providerParser2.default.getMediaEntry(assetLoader.response, requestData);\n var mediaSources = mediaEntry.sources.toJSON();\n mediaConfig.sources.hls = mediaSources.hls;\n mediaConfig.sources.dash = mediaSources.dash;\n mediaConfig.sources.progressive = mediaSources.progressive;\n mediaConfig.sources.id = mediaEntry.id;\n mediaConfig.sources.duration = mediaEntry.duration;\n mediaConfig.sources.type = mediaEntry.type;\n mediaConfig.sources.dvr = !!mediaEntry.dvrStatus;\n mediaConfig.sources.poster = mediaEntry.poster;\n if (mediaEntry.metadata && mediaEntry.metadata.metas && typeof mediaEntry.metadata.metas.tags === 'string' && mediaEntry.metadata.metas.tags.indexOf('360') > -1) {\n mediaConfig.sources.vr = {};\n }\n Object.assign(mediaConfig.sources.metadata, mediaEntry.metadata);\n }\n }\n }\n this._logger.debug('Data parsing finished', mediaConfig);\n return mediaConfig;\n }\n }]);\n\n return OTTProvider;\n}(_baseProvider2.default);\n\nexports.default = OTTProvider;\n\n/***/ }),\n/* 32 */,\n/* 33 */,\n/* 34 */,\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VERSION = exports.NAME = exports.MediaType = exports.ContextType = exports.Provider = undefined;\n\nvar _provider = __webpack_require__(31);\n\nvar _provider2 = _interopRequireDefault(_provider);\n\nvar _kalturaPlaybackContext = __webpack_require__(14);\n\nvar _kalturaPlaybackContext2 = _interopRequireDefault(_kalturaPlaybackContext);\n\nvar _kalturaAsset = __webpack_require__(13);\n\nvar _kalturaAsset2 = _interopRequireDefault(_kalturaAsset);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NAME = \"playkit-js-providers\" + '-ott';\n\nvar VERSION = \"2.9.0\";\n\nvar ContextType = _kalturaPlaybackContext2.default.Type;\nvar MediaType = _kalturaAsset2.default.Type;\n\nexports.Provider = _provider2.default;\nexports.ContextType = ContextType;\nexports.MediaType = MediaType;\nexports.NAME = NAME;\nexports.VERSION = VERSION;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _assetService = __webpack_require__(40);\n\nvar _assetService2 = _interopRequireDefault(_assetService);\n\nvar _config = __webpack_require__(15);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _kalturaPlaybackContext = __webpack_require__(14);\n\nvar _kalturaPlaybackContext2 = _interopRequireDefault(_kalturaPlaybackContext);\n\nvar _kalturaAsset = __webpack_require__(13);\n\nvar _kalturaAsset2 = _interopRequireDefault(_kalturaAsset);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OTTAssetLoader = function () {\n _createClass(OTTAssetLoader, null, [{\n key: 'id',\n get: function get() {\n return 'asset';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n\n }]);\n\n function OTTAssetLoader(params) {\n _classCallCheck(this, OTTAssetLoader);\n\n this._response = {};\n\n this.requests = this.buildRequests(params);\n this._entryId = params.entryId;\n }\n\n _createClass(OTTAssetLoader, [{\n key: 'buildRequests',\n\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function buildRequests(params) {\n var config = _config2.default.get();\n var requests = [];\n requests.push(_assetService2.default.get(config.serviceUrl, params.ks, params.entryId, params.assetReferenceType));\n requests.push(_assetService2.default.getPlaybackContext(config.serviceUrl, params.ks, params.entryId, params.type, params.playbackContext));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n\n }, {\n key: 'isValid',\n value: function isValid() {\n return !!this._entryId;\n }\n }, {\n key: 'requests',\n set: function set(requests) {\n this._requests = requests;\n },\n get: function get() {\n return this._requests;\n }\n }, {\n key: 'response',\n set: function set(response) {\n this._response.mediaDataResult = new _kalturaAsset2.default(response[0].data);\n this._response.playBackContextResult = new _kalturaPlaybackContext2.default(response[1].data);\n },\n get: function get() {\n return this._response;\n }\n }]);\n\n return OTTAssetLoader;\n}();\n\nexports.default = OTTAssetLoader;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dataLoaderManager = __webpack_require__(9);\n\nvar _dataLoaderManager2 = _interopRequireDefault(_dataLoaderManager);\n\nvar _ottService = __webpack_require__(20);\n\nvar _ottService2 = _interopRequireDefault(_ottService);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar OTTDataLoaderManager = function (_DataLoaderManager) {\n _inherits(OTTDataLoaderManager, _DataLoaderManager);\n\n /**\n * @constructor\n * @param {string} partnerId - partner id\n * @param {string} ks - ks\n */\n function OTTDataLoaderManager(partnerId) {\n var ks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n _classCallCheck(this, OTTDataLoaderManager);\n\n var _this = _possibleConstructorReturn(this, (OTTDataLoaderManager.__proto__ || Object.getPrototypeOf(OTTDataLoaderManager)).call(this));\n\n _this._multiRequest = _ottService2.default.getMultiRequest(ks, partnerId);\n return _this;\n }\n\n return OTTDataLoaderManager;\n}(_dataLoaderManager2.default);\n\nexports.default = OTTDataLoaderManager;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _userService = __webpack_require__(41);\n\nvar _userService2 = _interopRequireDefault(_userService);\n\nvar _config = __webpack_require__(15);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OTTSessionLoader = function () {\n _createClass(OTTSessionLoader, null, [{\n key: 'id',\n get: function get() {\n return 'session';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n\n }]);\n\n function OTTSessionLoader(params) {\n _classCallCheck(this, OTTSessionLoader);\n\n this._response = {};\n\n this.requests = this.buildRequests(params);\n this._partnerId = params.partnerId;\n }\n\n _createClass(OTTSessionLoader, [{\n key: 'buildRequests',\n\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function buildRequests(params) {\n var config = _config2.default.get();\n var requests = [];\n requests.push(_userService2.default.anonymousLogin(config.serviceUrl, params.partnerId, params.udid));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n\n }, {\n key: 'isValid',\n value: function isValid() {\n return !!this._partnerId;\n }\n }, {\n key: 'requests',\n set: function set(requests) {\n this._requests = requests;\n },\n get: function get() {\n return this._requests;\n }\n }, {\n key: 'response',\n set: function set(response) {\n this._response.ks = response[0].data.ks;\n },\n get: function get() {\n return this._response.ks;\n }\n }]);\n\n return OTTSessionLoader;\n}();\n\nexports.default = OTTSessionLoader;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _KalturaAsset$Type$ME, _KalturaAsset$Type$EP, _MediaTypeCombination;\n\nvar _logger = __webpack_require__(3);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _kalturaPlaybackSource = __webpack_require__(24);\n\nvar _kalturaPlaybackSource2 = _interopRequireDefault(_kalturaPlaybackSource);\n\nvar _kalturaPlaybackContext = __webpack_require__(14);\n\nvar _kalturaPlaybackContext2 = _interopRequireDefault(_kalturaPlaybackContext);\n\nvar _kalturaAsset = __webpack_require__(13);\n\nvar _kalturaAsset2 = _interopRequireDefault(_kalturaAsset);\n\nvar _mediaEntry = __webpack_require__(1);\n\nvar _mediaEntry2 = _interopRequireDefault(_mediaEntry);\n\nvar _drm = __webpack_require__(8);\n\nvar _drm2 = _interopRequireDefault(_drm);\n\nvar _mediaSource = __webpack_require__(6);\n\nvar _mediaSource2 = _interopRequireDefault(_mediaSource);\n\nvar _mediaSources = __webpack_require__(7);\n\nvar _mediaSources2 = _interopRequireDefault(_mediaSources);\n\nvar _mediaFormat = __webpack_require__(5);\n\nvar _kalturaDrmPlaybackPluginData = __webpack_require__(11);\n\nvar _kalturaDrmPlaybackPluginData2 = _interopRequireDefault(_kalturaDrmPlaybackPluginData);\n\nvar _baseProviderParser = __webpack_require__(16);\n\nvar _baseProviderParser2 = _interopRequireDefault(_baseProviderParser);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar LIVE_ASST_OBJECT_TYPE = 'KalturaLiveAsset';\n\nvar MediaTypeCombinations = (_MediaTypeCombination = {}, _defineProperty(_MediaTypeCombination, _kalturaAsset2.default.Type.MEDIA, (_KalturaAsset$Type$ME = {}, _defineProperty(_KalturaAsset$Type$ME, _kalturaPlaybackContext2.default.Type.TRAILER, function () {\n return { type: _mediaEntry2.default.Type.VOD };\n}), _defineProperty(_KalturaAsset$Type$ME, _kalturaPlaybackContext2.default.Type.PLAYBACK, function (mediaAssetData) {\n if (parseInt(mediaAssetData.externalIds) > 0 || mediaAssetData.objectType === LIVE_ASST_OBJECT_TYPE) {\n return { type: _mediaEntry2.default.Type.LIVE, dvrStatus: 0 };\n }\n return { type: _mediaEntry2.default.Type.VOD };\n}), _KalturaAsset$Type$ME)), _defineProperty(_MediaTypeCombination, _kalturaAsset2.default.Type.EPG, (_KalturaAsset$Type$EP = {}, _defineProperty(_KalturaAsset$Type$EP, _kalturaPlaybackContext2.default.Type.CATCHUP, function () {\n return { type: _mediaEntry2.default.Type.VOD };\n}), _defineProperty(_KalturaAsset$Type$EP, _kalturaPlaybackContext2.default.Type.START_OVER, function () {\n return { type: _mediaEntry2.default.Type.LIVE, dvrStatus: 1 };\n}), _KalturaAsset$Type$EP)), _defineProperty(_MediaTypeCombination, _kalturaAsset2.default.Type.RECORDING, _defineProperty({}, _kalturaPlaybackContext2.default.Type.PLAYBACK, function () {\n return { type: _mediaEntry2.default.Type.VOD };\n})), _MediaTypeCombination);\n\nvar OTTProviderParser = function (_BaseProviderParser) {\n _inherits(OTTProviderParser, _BaseProviderParser);\n\n function OTTProviderParser() {\n _classCallCheck(this, OTTProviderParser);\n\n return _possibleConstructorReturn(this, (OTTProviderParser.__proto__ || Object.getPrototypeOf(OTTProviderParser)).apply(this, arguments));\n }\n\n _createClass(OTTProviderParser, null, [{\n key: 'getMediaEntry',\n\n\n /**\n * Returns parsed media entry by given OTT response objects.\n * @function getMediaEntry\n * @param {any} assetResponse - The asset response.\n * @param {Object} requestData - The request data object.\n * @returns {MediaEntry} - The media entry\n * @static\n * @public\n */\n value: function getMediaEntry(assetResponse, requestData) {\n var mediaEntry = new _mediaEntry2.default();\n var playbackContext = assetResponse.playBackContextResult;\n var mediaAsset = assetResponse.mediaDataResult;\n var kalturaSources = playbackContext.sources;\n var metaData = OTTProviderParser.reconstructMetadata(mediaAsset);\n metaData.description = mediaAsset.description;\n metaData.name = mediaAsset.name;\n mediaEntry.metadata = metaData;\n mediaEntry.poster = OTTProviderParser._getPoster(mediaAsset.pictures);\n mediaEntry.id = mediaAsset.id;\n var filteredKalturaSources = OTTProviderParser._filterSourcesByFormats(kalturaSources, requestData.formats);\n mediaEntry.sources = OTTProviderParser._getParsedSources(filteredKalturaSources);\n var typeData = OTTProviderParser._getMediaType(mediaAsset.data, requestData.mediaType, requestData.contextType);\n mediaEntry.type = typeData.type;\n mediaEntry.dvrStatus = typeData.dvrStatus;\n mediaEntry.duration = Math.max.apply(Math, kalturaSources.map(function (source) {\n return source.duration;\n }));\n return mediaEntry;\n }\n\n /**\n * reconstruct the metadata\n * @param {Object} mediaAsset the mediaAsset that contains the response with the metadata.\n * @returns {Object} reconstructed metadata object\n */\n\n }, {\n key: 'reconstructMetadata',\n value: function reconstructMetadata(mediaAsset) {\n var metadata = {\n metas: OTTProviderParser.addToMetaObject(mediaAsset.metas),\n tags: OTTProviderParser.addToMetaObject(mediaAsset.tags)\n };\n return metadata;\n }\n\n /**\n * transform an array of [{key: value},{key: value}...] to an object\n * @param {Array} list a list of objects\n * @returns {Object} an mapped object of the arrayed list.\n */\n\n }, {\n key: 'addToMetaObject',\n value: function addToMetaObject(list) {\n var categoryObj = {};\n if (list) {\n list.forEach(function (item) {\n categoryObj[item.key] = item.value;\n });\n }\n return categoryObj;\n }\n\n /**\n * Gets the poster url without width and height.\n * @param {Array} pictures - Media pictures.\n * @returns {string | Array} - Poster base url or array of poster candidates.\n * @private\n */\n\n }, {\n key: '_getPoster',\n value: function _getPoster(pictures) {\n if (pictures && pictures.length > 0) {\n var picObj = pictures[0];\n var url = picObj.url;\n // Search for thumbnail service\n var regex = /.*\\/thumbnail\\/.*(?:width|height)\\/\\d+\\/(?:height|width)\\/\\d+/;\n if (regex.test(url)) {\n return url;\n }\n return pictures.map(function (pic) {\n return { url: pic.url, width: pic.width, height: pic.height };\n });\n }\n return '';\n }\n\n /**\n * Gets the media type (LIVE/VOD)\n * @param {Object} mediaAssetData - The media asset data.\n * @param {string} mediaType - The asset media type.\n * @param {string} contextType - The asset context type.\n * @returns {Object} - The type data object.\n * @private\n */\n\n }, {\n key: '_getMediaType',\n value: function _getMediaType(mediaAssetData, mediaType, contextType) {\n var typeData = { type: _mediaEntry2.default.Type.UNKNOWN };\n if (MediaTypeCombinations[mediaType] && MediaTypeCombinations[mediaType][contextType]) {\n typeData = MediaTypeCombinations[mediaType][contextType](mediaAssetData);\n }\n return typeData;\n }\n\n /**\n * Filtered the kalturaSources array by device type.\n * @param {Array} kalturaSources - The kaltura sources.\n * @param {Array} formats - Partner device formats.\n * @returns {Array} - Filtered kalturaSources array.\n * @private\n */\n\n }, {\n key: '_filterSourcesByFormats',\n value: function _filterSourcesByFormats(kalturaSources, formats) {\n if (formats.length > 0) {\n kalturaSources = kalturaSources.filter(function (source) {\n return formats.includes(source.type);\n });\n }\n return kalturaSources;\n }\n\n /**\n * Returns the parsed sources\n * @function _getParsedSources\n * @param {Array} kalturaSources - The kaltura sources\n * @param {Object} playbackContext - The playback context\n * @return {MediaSources} - A media sources\n * @static\n * @private\n */\n\n }, {\n key: '_getParsedSources',\n value: function _getParsedSources(kalturaSources) {\n var sources = new _mediaSources2.default();\n var addAdaptiveSource = function addAdaptiveSource(source) {\n var parsedSource = OTTProviderParser._parseAdaptiveSource(source);\n var sourceFormat = _mediaFormat.SupportedStreamFormat.get(source.format);\n sources.map(parsedSource, sourceFormat);\n };\n var parseAdaptiveSources = function parseAdaptiveSources() {\n kalturaSources.filter(function (source) {\n return !OTTProviderParser._isProgressiveSource(source);\n }).forEach(addAdaptiveSource);\n };\n var parseProgressiveSources = function parseProgressiveSources() {\n kalturaSources.filter(function (source) {\n return OTTProviderParser._isProgressiveSource(source);\n }).forEach(addAdaptiveSource);\n };\n if (kalturaSources && kalturaSources.length > 0) {\n parseAdaptiveSources();\n parseProgressiveSources();\n }\n return sources;\n }\n\n /**\n * Returns a parsed adaptive source\n * @function _parseAdaptiveSource\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @returns {MediaSource} - The parsed adaptive kalturaSource\n * @static\n * @private\n */\n\n }, {\n key: '_parseAdaptiveSource',\n value: function _parseAdaptiveSource(kalturaSource) {\n var mediaSource = new _mediaSource2.default();\n if (kalturaSource) {\n var playUrl = kalturaSource.url;\n var mediaFormat = _mediaFormat.SupportedStreamFormat.get(kalturaSource.format);\n if (mediaFormat) {\n mediaSource.mimetype = mediaFormat.mimeType;\n }\n if (playUrl === '') {\n OTTProviderParser._logger.error('failed to create play url from source, discarding source: (' + kalturaSource.fileId + '), ' + kalturaSource.format + '.');\n return mediaSource;\n }\n mediaSource.url = playUrl;\n mediaSource.id = kalturaSource.fileId + ',' + kalturaSource.format;\n if (kalturaSource.hasDrmData()) {\n var drmParams = [];\n kalturaSource.drm.forEach(function (drm) {\n drmParams.push(new _drm2.default(drm.licenseURL, _kalturaDrmPlaybackPluginData2.default.Scheme[drm.scheme], drm.certificate));\n });\n mediaSource.drmData = drmParams;\n }\n }\n return mediaSource;\n }\n }]);\n\n return OTTProviderParser;\n}(_baseProviderParser2.default);\n\nOTTProviderParser._logger = (0, _logger2.default)('OTTProviderParser');\nexports.default = OTTProviderParser;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ottService = __webpack_require__(20);\n\nvar _ottService2 = _interopRequireDefault(_ottService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'asset';\n\nvar OTTAssetService = function (_OTTService) {\n _inherits(OTTAssetService, _OTTService);\n\n function OTTAssetService() {\n _classCallCheck(this, OTTAssetService);\n\n return _possibleConstructorReturn(this, (OTTAssetService.__proto__ || Object.getPrototypeOf(OTTAssetService)).apply(this, arguments));\n }\n\n _createClass(OTTAssetService, null, [{\n key: 'getPlaybackContext',\n\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The partner ID\n * @param {string} assetId The asset ID\n * @param {string} type The asset type (media/recording/epg)\n * @param {ProviderPlaybackContextOptions} playbackContextOptions The playbackContextOptions\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function getPlaybackContext(serviceUrl, ks, assetId, type, playbackContextOptions) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'getPlaybackContext';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n var contextDataParams = { objectType: 'KalturaPlaybackContextOptions' };\n Object.assign(contextDataParams, playbackContextOptions);\n request.params = { assetId: assetId, assetType: type, contextDataParams: contextDataParams, ks: ks };\n return request;\n }\n }, {\n key: 'get',\n value: function get(serviceUrl, ks, assetId, assetReferenceType) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'get';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.params = { id: assetId, assetReferenceType: assetReferenceType, ks: ks };\n return request;\n }\n }]);\n\n return OTTAssetService;\n}(_ottService2.default);\n\nexports.default = OTTAssetService;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ottService = __webpack_require__(20);\n\nvar _ottService2 = _interopRequireDefault(_ottService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'ottuser';\n\nvar OTTUserService = function (_OTTService) {\n _inherits(OTTUserService, _OTTService);\n\n function OTTUserService() {\n _classCallCheck(this, OTTUserService);\n\n return _possibleConstructorReturn(this, (OTTUserService.__proto__ || Object.getPrototypeOf(OTTUserService)).apply(this, arguments));\n }\n\n _createClass(OTTUserService, null, [{\n key: 'anonymousLogin',\n\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} partnerId The partner ID\n * @param {string} udid The udid\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function anonymousLogin(serviceUrl, partnerId, udid) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'anonymousLogin';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n var params = { partnerId: partnerId };\n if (udid) {\n Object.assign(params, { udid: udid });\n }\n request.params = params;\n return request;\n }\n }]);\n\n return OTTUserService;\n}(_ottService2.default);\n\nexports.default = OTTUserService;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// playkit-ott-provider.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 35);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap eda9179c0c82ea51bbcc","//@flow\nexport default class RequestBuilder {\n /**\n * @member - Service name\n * @type {string}\n */\n service: string;\n /**\n * @member - Service action\n * @type {string}\n */\n action: string;\n /**\n * @member - Service params\n * @type {any}\n */\n params: any;\n /**\n * @member - Service headers\n * @type {Map}\n */\n headers: Map;\n /**\n * @member - Service URL\n * @type {string}\n */\n url: string;\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n method: string;\n /**\n * @member - Service tag\n * @type {string}\n */\n tag: string;\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n constructor(headers: Map = new Map()) {\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n getUrl(serviceUrl: string): string {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n doHttpRequest(): Promise {\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n let request = new XMLHttpRequest();\n return new Promise((resolve, reject) => {\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.status === 200) {\n let jsonResponse;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(`${e.message}, ${request.responseText}`);\n }\n if (jsonResponse && typeof jsonResponse === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);\n else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(this.method, this.url);\n this.headers.forEach((value, key) => {\n request.setRequestHeader(key, value);\n });\n request.send(this.params);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./util/request-builder.js","//@flow\nimport MediaSources from './media-sources';\n\nexport default class MediaEntry {\n static Type: {[type: string]: string} = {\n VOD: 'Vod',\n LIVE: 'Live',\n IMAGE: 'Image',\n AUDIO: 'Audio',\n UNKNOWN: 'Unknown'\n };\n\n /**\n * @member - entry id\n * @type {string}\n */\n id: string;\n /**\n * @member - entry name\n * @type {string}\n */\n name: string;\n /**\n * @member - entry sources\n * @type {MediaSources}\n */\n sources: MediaSources;\n /**\n * @member - entry duration\n * @type {number}\n */\n duration: number;\n /**\n * @member - entry type\n * @type {string}\n */\n type: string;\n /**\n * @member - entry metadata\n * @type {Object}\n */\n metadata: Object;\n /**\n * @member - DVR status\n * @type {number}\n */\n dvrStatus: number;\n /**\n * @member - media poster\n * @type {string | Array}\n */\n poster: string | Array;\n\n /**\n * @member - assetReferenceType\n * @type {string }\n */\n assetReferenceType: string;\n\n /**\n * @constructor\n */\n constructor() {\n this.metadata = new Map();\n this.sources = new MediaSources();\n this.type = MediaEntry.Type.UNKNOWN;\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaEntryObject} - The json class object.\n */\n toJSON(): ProviderMediaEntryObject {\n return {\n id: this.id,\n name: this.name,\n sources: this.sources.toJSON(),\n duration: this.duration,\n dvrStatus: this.dvrStatus,\n metadata: this.metadata,\n type: this.type,\n poster: this.poster,\n assetReferenceType: this.assetReferenceType\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-entry.js","//@flow\nexport default class ServiceResult {\n /**\n * @member - Is service returned an error\n * @type {boolean}\n */\n hasError: boolean = false;\n /**\n * @member - The service error\n * @type {ServiceError}\n */\n error: ServiceError;\n /**\n * @member - The service result data\n * @type {Object}\n */\n data: Object;\n\n /**\n * @constructor\n * @param {Object} response - Service response\n */\n constructor(response: Object) {\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n }\n}\n\nclass ServiceError {\n /**\n * @member - The error code\n * @type {string}\n */\n code: string;\n /**\n * @member - The error message\n * @type {string}\n */\n message: string;\n\n /**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n constructor(code: string, message: string) {\n this.code = code;\n this.message = message;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-service-result.js","//@flow\nimport * as JsLogger from 'js-logger';\n\nexport type LogLevelObject = {value: number, name: string};\nexport type LogLevelType = {[level: string]: LogLevelObject};\n\nconst LogLevel: LogLevelType = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\nJsLogger.useDefaults({defaultLevel: JsLogger.ERROR});\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name?: string): Object {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name?: string): LogLevelObject {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level: LogLevelObject, name?: string): void {\n getLogger(name).setLevel(level);\n}\n\nexport default getLogger;\nexport {LogLevel, getLogLevel, setLogLevel};\n\n\n\n// WEBPACK FOOTER //\n// ./util/logger.js","//@flow\nexport const MediaFormat: {[name: string]: ProviderMediaFormatType} = {\n DASH: {\n name: 'dash',\n mimeType: 'application/dash+xml',\n pathExt: 'mpd'\n },\n HLS: {\n name: 'hls',\n mimeType: 'application/x-mpegURL',\n pathExt: 'm3u8'\n },\n WVM: {\n name: 'wvm',\n mimeType: 'video/wvm',\n pathExt: 'wvm'\n },\n MP4: {\n name: 'mp4',\n mimeType: 'video/mp4',\n pathExt: 'mp4'\n },\n MP3: {\n name: 'mp3',\n mimeType: 'audio/mpeg',\n pathExt: 'mp3'\n }\n};\n\nexport const SupportedStreamFormat: Map = new Map([\n ['mpegdash', MediaFormat.DASH],\n ['applehttp', MediaFormat.HLS],\n ['url', MediaFormat.MP4]\n]);\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-format.js","//@flow\nimport Drm from './drm';\n\nexport default class MediaSource {\n /**\n * @member - media source id\n * @type {string}\n */\n id: string;\n /**\n * @member - media source url\n * @type {string}\n */\n url: string;\n /**\n * @member - media source mimetype\n * @type {string}\n */\n mimetype: string;\n /**\n * @member - media source drm data\n * @type {Array}\n */\n drmData: Array;\n /**\n * @member - media source bandwidth\n * @type {number}\n */\n bandwidth: number;\n /**\n * @member - media source width\n * @type {number}\n */\n width: number;\n /**\n * @member - media source height\n * @type {number}\n */\n height: number;\n /**\n * @member - media source label\n * @type {string}\n */\n label: string;\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourceObject} - The json class object.\n */\n toJSON(): ProviderMediaSourceObject {\n const response: ProviderMediaSourceObject = {\n id: this.id,\n url: this.url,\n mimetype: this.mimetype\n };\n if (this.bandwidth) response.bandwidth = this.bandwidth;\n if (this.width) response.width = this.width;\n if (this.height) response.height = this.height;\n if (this.label) response.label = this.label;\n if (this.drmData && this.drmData.length > 0) {\n response.drmData = [];\n this.drmData.forEach(d => {\n if (Array.isArray(response.drmData)) {\n response.drmData.push(d.toJSON());\n }\n });\n }\n return response;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-source.js","// @flow\nimport MediaSource from './media-source';\nimport {MediaFormat} from './media-format';\n\nexport default class MediaSources {\n /**\n * Progressive download media sources container.\n * @type {Array}\n * @public\n */\n progressive: Array;\n /**\n * Dash media sources container.\n * @type {Array}\n * @public\n */\n dash: Array;\n /**\n * Hls media sources container.\n * @type {Array}\n * @public\n */\n hls: Array;\n\n /**\n * @constructor\n */\n constructor() {\n this.progressive = [];\n this.dash = [];\n this.hls = [];\n }\n\n /**\n * Maps the source to one of the containers according to his media format.\n * @param {MediaSource} source - The source to add to one of the containers.\n * @param {MediaFormat} mediaFormat - The media format of the source.\n * @returns {void}\n */\n map(source: MediaSource, mediaFormat: ?ProviderMediaFormatType) {\n if (mediaFormat) {\n switch (mediaFormat.name) {\n case MediaFormat.MP4.name:\n this.progressive.push(source);\n break;\n case MediaFormat.DASH.name:\n this.dash.push(source);\n break;\n case MediaFormat.HLS.name:\n this.hls.push(source);\n break;\n default:\n break;\n }\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourcesObject} - The json class object.\n */\n toJSON(): ProviderMediaSourcesObject {\n const response: ProviderMediaSourcesObject = {\n progressive: [],\n dash: [],\n hls: []\n };\n this.progressive.forEach(p => response.progressive.push(p.toJSON()));\n this.hls.forEach(h => response.hls.push(h.toJSON()));\n this.dash.forEach(d => response.dash.push(d.toJSON()));\n return response;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-sources.js","//@flow\nexport default class Drm {\n /**\n * @member - license url\n * @type {string}\n */\n licenseUrl: string;\n /**\n * @member - drm scheme\n * @type {string}\n */\n scheme: string;\n\n /**\n * @member - drm certificate\n * @type {string}\n */\n certificate: string;\n\n /**\n * @constructor\n * @param {string} licenseUrl - the license url\n * @param {string} scheme - the drm scheme\n * @param {?string} certificate - the drm certificate\n */\n constructor(licenseUrl: string, scheme: string, certificate: ?string) {\n this.licenseUrl = licenseUrl;\n this.scheme = scheme;\n if (certificate) {\n this.certificate = certificate;\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderDrmDataObject} - The json class object.\n */\n toJSON(): ProviderDrmDataObject {\n const response: ProviderDrmDataObject = {\n licenseUrl: this.licenseUrl,\n scheme: this.scheme\n };\n if (this.certificate) response.certificate = this.certificate;\n return response;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/drm.js","// @flow\nimport MultiRequestBuilder, {MultiRequestResult} from './multi-request-builder';\n\nexport default class DataLoaderManager {\n /**\n * @member - Loaders response map index\n * @type {Map>}\n * @private\n * @static\n */\n static _loadersResponseMap: Map> = new Map();\n /**\n * @member - Loaders multi request\n * @type {MultiRequestBuilder}\n * @protected\n */\n _multiRequest: MultiRequestBuilder;\n /**\n * @member - Loaders multi response\n * @type {MultiRequestResult}\n * @private\n */\n _multiResponse: MultiRequestResult;\n /**\n * @member - Loaders to execute\n * @type {Map}\n * @private\n */\n _loaders: Map = new Map();\n\n /**\n * Add loader too execution loaders map\n * @function\n * @param {Function} loader Loader to add\n * @param {Object} params Loader params\n * @returns {void}\n */\n add(loader: Function, params: Object): void {\n let execution_loader = new loader(params);\n if (execution_loader.isValid()) {\n this._loaders.set(loader.id, execution_loader);\n // Get the start index from the multiReqeust before adding current execution_loader requests\n let startIndex = this._multiRequest.requests.length;\n // Get the requests\n let requests = execution_loader.requests;\n // Add requests to muktiRequest queue\n requests.forEach(request => {\n this._multiRequest.add(request);\n });\n // Create range array of current execution_loader requests\n let executionLoaderResponseMap = Array.from(new Array(requests.length), (val, index) => index + startIndex);\n // Add to map\n DataLoaderManager._loadersResponseMap.set(loader.id, executionLoaderResponseMap);\n }\n }\n\n /**\n * Get data from all loaders using multi request\n * @function\n * @returns {Promise} Promise\n */\n fetchData(): Promise {\n return new Promise((resolve, reject) => {\n this._multiRequest.execute().then(\n response => {\n this._multiResponse = response;\n if (!response.success) {\n reject(response);\n } else {\n let preparedData: Object = this.prepareData(response);\n if (preparedData.success) {\n resolve(this._loaders);\n } else {\n reject({success: false, data: preparedData.error});\n }\n }\n },\n err => {\n reject(err);\n }\n );\n });\n }\n\n /**\n * Prepare fetched data\n * @function\n * @param {MultiRequestResult} response - The multi request result\n * @returns {Object} - The prepared data\n */\n prepareData(response: MultiRequestResult): Object {\n this._loaders.forEach(function(loader, name) {\n let loaderDataIndexes = DataLoaderManager._loadersResponseMap.get(name);\n try {\n if (loaderDataIndexes && loaderDataIndexes.length > 0) {\n loader.response = response.results.slice(loaderDataIndexes[0], loaderDataIndexes[loaderDataIndexes.length - 1] + 1);\n }\n } catch (err) {\n return {success: false, error: err};\n }\n });\n return {success: true, data: this._loaders};\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/data-loader-manager.js","//@flow\nimport RequestBuilder from '../../util/request-builder';\nimport getLogger from '../../util/logger';\nimport ServiceResult from './base-service-result';\n\nexport default class MultiRequestBuilder extends RequestBuilder {\n static _logger = getLogger('MultiRequestBuilder');\n /**\n * @member - Array of requests\n * @type {Array}\n */\n requests: Array = [];\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n add(request: RequestBuilder): MultiRequestBuilder {\n this.requests.push(request);\n const requestParams = {};\n const serviceDef: Object = {service: request.service, action: request.action};\n Object.assign(requestParams, {[this.requests.length]: Object.assign(serviceDef, request.params)});\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n execute(): Promise {\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error(`${err.message}`);\n }\n return new Promise((resolve, reject) => {\n this.doHttpRequest().then(\n data => {\n resolve(new MultiRequestResult(data));\n },\n err => {\n const errorText: string = `Error on multiRequest execution, error <${err}>.`;\n reject(errorText);\n }\n );\n });\n }\n}\n\nexport class MultiRequestResult {\n static _logger = getLogger('MultiRequestResult');\n /**\n * @member - Is success\n * @type {boolean}\n */\n success: boolean;\n /**\n * @member - Multi request response data\n * @type {Object}\n */\n results: Array = [];\n\n /**\n * @constructor\n * @param {Object} response data\n */\n constructor(response: Object) {\n this.success = true;\n const responseArr = response.result ? response.result : response;\n responseArr.forEach(result => {\n const serviceResult: ServiceResult = new ServiceResult(result);\n this.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error(\n `Service returned an error with error code: ${serviceResult.error.code} and message: ${serviceResult.error.message}.`\n );\n this.success = false;\n return;\n }\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/multi-request-builder.js","//@flow\nexport default class KalturaDrmPlaybackPluginData {\n static Scheme: {[scheme: string]: string} = {\n 'drm.PLAYREADY_CENC': 'com.microsoft.playready',\n 'drm.WIDEVINE_CENC': 'com.widevine.alpha',\n 'fairplay.FAIRPLAY': 'com.apple.fairplay',\n WIDEVINE_CENC: 'com.widevine.alpha',\n PLAYREADY_CENC: 'com.microsoft.playready',\n FAIRPLAY: 'com.apple.fairplay'\n };\n\n /**\n * @member - The drm scheme\n * @type {string}\n */\n scheme: string;\n\n /**\n * @member - The license URL\n * @type {string}\n */\n licenseURL: string;\n\n /**\n * @member - The drm certificate\n * @type {?string}\n */\n certificate: ?string;\n\n /**\n * @constructor\n * @param {Object} drm The json response\n */\n constructor(drm: any) {\n this.scheme = drm.scheme;\n this.licenseURL = drm.licenseURL;\n this.certificate = drm.certificate;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/response-types/kaltura-drm-playback-plugin-data.js","//@flow\nimport ServiceResult from '../../common/base-service-result';\n\nexport default class KalturaAsset extends ServiceResult {\n static Type: {[type: string]: string} = {\n MEDIA: 'media',\n RECORDING: 'recording',\n EPG: 'epg'\n };\n\n static AssetReferenceType: {[type: string]: string} = {\n MEDIA: 'media',\n EPG_INTERNAL: 'epg_internal',\n EPG_EXTERNAL: 'epg_external'\n };\n /**\n * @member - The asset id\n * @type {number}\n */\n id: number;\n /**\n * @member - The asset name\n * @type {string}\n */\n name: string = '';\n /**\n * @member - The asset name description\n * @type {string}\n */\n description: string = '';\n /**\n * @member - The asset tags\n * @type {Array}\n */\n tags: Array = [];\n /**\n * @member - The asset metas\n * @type {Array}\n */\n metas: Array = [];\n /**\n * @member - The asset images\n * @type {Array}\n */\n pictures: Array = [];\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n constructor(response: Object) {\n super(response);\n if (!this.hasError) {\n this.id = response.id;\n this.name = response.name;\n this.description = response.description;\n this.metas = this._formatTagsMetas(response.metas);\n this.tags = this._formatTagsMetas(response.tags);\n this.pictures = response.images;\n }\n }\n\n _formatTagsMetas(objectToParse: any): Array {\n const parsed = [];\n Object.keys(objectToParse).forEach(function(key) {\n if (objectToParse[key].objects) {\n let value = '';\n objectToParse[key].objects.forEach(function(object) {\n value += object.value + '|';\n });\n parsed.push({key: key, value: value});\n } else {\n parsed.push({key: key, value: objectToParse[key].value});\n }\n });\n return parsed;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/response-types/kaltura-asset.js","//@flow\nimport ServiceResult from '../../common/base-service-result';\nimport KalturaAccessControlMessage from '../../common/response-types/kaltura-access-control-message';\nimport KalturaRuleAction from '../../common/response-types/kaltura-rule-action';\nimport KalturaPlaybackSource from './kaltura-playback-source';\n\nexport default class KalturaPlaybackContext extends ServiceResult {\n static Type: {[type: string]: string} = {\n TRAILER: 'TRAILER',\n CATCHUP: 'CATCHUP',\n START_OVER: 'START_OVER',\n PLAYBACK: 'PLAYBACK'\n };\n /**\n * @member - The playback sources\n * @type {Array}\n */\n sources: Array = [];\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n actions: Array = [];\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n messages: Array = [];\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n constructor(response: Object) {\n super(response);\n if (!this.hasError) {\n const messages = response.messages;\n if (messages) {\n messages.map(message => this.messages.push(new KalturaAccessControlMessage(message)));\n }\n const actions = response.actions;\n if (actions) {\n actions.map(action => this.actions.push(new KalturaRuleAction(action)));\n }\n const sources = response.sources;\n if (sources) {\n sources.map(source => this.sources.push(new KalturaPlaybackSource(source)));\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/response-types/kaltura-playback-context.js","//@flow\nimport {clone} from '../../util/clone';\n\nconst defaultConfig: Object = {\n serviceParams: {\n apiVersion: '4.7.1'\n }\n};\n\nexport default class OTTConfiguration {\n static set(clientConfig?: ProviderEnvConfigObject) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n static get(): Object {\n return clone(defaultConfig);\n }\n}\n\nexport {OTTConfiguration};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/config.js","// @flow\nimport {SupportedStreamFormat} from '../../entities/media-format';\nimport MediaEntry from '../../entities/media-entry';\nimport MediaSources from '../../entities/media-sources';\nimport MediaSource from '../../entities/media-source';\nimport type {OTTKalturaPlaybackSource} from '../ott/response-types/kaltura-playback-source';\nimport type {OVPKalturaPlaybackSource} from '../ovp/response-types/kaltura-playback-source';\n\nexport default class BaseProviderParser {\n // eslint-disable-next-line no-unused-vars\n static getMediaEntry(...parms): MediaEntry {\n throw new TypeError(`getMediaEntry method must be implement by the derived class`);\n }\n\n // eslint-disable-next-line no-unused-vars\n static _getParsedSources(...parms): MediaSources {\n throw new TypeError(`_getParsedSources method must be implement by the derived class`);\n }\n\n // eslint-disable-next-line no-unused-vars\n static _parseAdaptiveSource(...parms): MediaSource {\n throw new TypeError(`_parseAdaptiveSource method must be implement by the derived class`);\n }\n\n static _isProgressiveSource(source: OVPKalturaPlaybackSource | OTTKalturaPlaybackSource): boolean {\n const sourceFormat = SupportedStreamFormat.get(source.format);\n return !!sourceFormat && sourceFormat.name === 'mp4';\n }\n\n static hasBlockActions(assetResponse: any): any {\n if (assetResponse && assetResponse.playBackContextResult) {\n const playbackContext = assetResponse.playBackContextResult;\n for (let actionIndex = 0; actionIndex < playbackContext.actions.length; actionIndex++) {\n if (playbackContext.actions[actionIndex].type === 'BLOCK') {\n return playbackContext.actions[actionIndex];\n }\n }\n }\n return null;\n }\n\n static hasErrorMessage(assetResponse: any): any {\n const messages = assetResponse.playBackContextResult.messages;\n for (let messagesIndex = 0; messagesIndex < messages.length; messagesIndex++) {\n if (messages[messagesIndex].code !== 'OK') {\n return messages[messagesIndex];\n }\n }\n return null;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-provider-parser.js","// @flow\nimport {setLogLevel, getLogLevel, LogLevel} from '../../util/logger';\nimport DataLoaderManager from './data-loader-manager';\n\nexport default class BaseProvider {\n _partnerId: number;\n _ks: string;\n _uiConfId: ?number;\n _dataLoader: DataLoaderManager;\n _playerVersion: string;\n _logger: any;\n _isAnonymous: boolean;\n\n get partnerId(): number {\n return this._partnerId;\n }\n\n get uiConfId(): ?number {\n return this._uiConfId;\n }\n\n get ks(): string {\n return this._ks;\n }\n\n set ks(value: string): void {\n this._ks = value;\n }\n\n get playerVersion(): string {\n return this._playerVersion;\n }\n\n get isAnonymous(): boolean {\n return this._isAnonymous;\n }\n\n constructor(options: ProviderOptionsObject, playerVersion: string) {\n this._partnerId = options.partnerId;\n this._uiConfId = options.uiConfId;\n this._isAnonymous = !options.ks;\n this._ks = options.ks || '';\n this._playerVersion = playerVersion;\n if (options.logLevel && this.LogLevel[options.logLevel]) {\n setLogLevel(this.LogLevel[options.logLevel]);\n }\n }\n\n // eslint-disable-next-line no-unused-vars\n getMediaConfig(mediaInfo: MI): Promise {\n throw new TypeError(`getMediaConfig method must be implement by the derived class`);\n }\n\n // eslint-disable-next-line no-unused-vars\n _parseDataFromResponse(data: Map, ...params: any): ProviderMediaConfigObject {\n throw new TypeError(`_parseDataFromResponse method must be implement by the derived class`);\n }\n\n get LogLevel(): {[level: string]: Object} {\n return LogLevel;\n }\n\n getLogLevel(name?: string): Object {\n return getLogLevel(name);\n }\n\n setLogLevel(level: Object, name?: string): void {\n setLogLevel(level, name);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-provider.js","//@flow\nexport default class KalturaAccessControlMessage {\n /**\n * @member - The access control message\n * @type {string}\n */\n message: string;\n /**\n * @member - The access control message code\n * @@type {string}\n */\n code: string;\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: Object) {\n this.message = data.message;\n this.code = data.code;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/response-types/kaltura-access-control-message.js","//@flow\nexport default class KalturaRuleAction {\n static Type: {[type: string]: string | number} = {\n DRM_POLICY: 'drm.DRM_POLICY',\n BLOCK: 1,\n PREVIEW: 2,\n LIMIT_FLAVORS: 3,\n ADD_TO_STORAGE: 4,\n LIMIT_DELIVERY_PROFILES: 5,\n SERVE_FROM_REMOTE_SERVER: 6,\n REQUEST_HOST_REGEX: 7,\n LIMIT_THUMBNAIL_CAPTURE: 8\n };\n\n /**\n * @member - The type of the action\n * @type {string|number}\n */\n type: string | number;\n\n /**\n * @constructor\n * @param {Object} data - The response\n */\n constructor(data: Object) {\n this.type = data.type;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/response-types/kaltura-rule-action.js","//@flow\nimport MultiRequestBuilder from '../../common/multi-request-builder';\nimport OTTConfiguration from '../config';\n\nconst SERVICE_NAME: string = 'multirequest';\n\nexport default class OTTService {\n /**\n * Gets a new instance of MultiRequestBuilder with ott params\n * @function getMultiRequest\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n static getMultiRequest(ks: string, partnerId?: number): MultiRequestBuilder {\n const config = OTTConfiguration.get();\n const ottParams = config.serviceParams;\n if (ks) {\n Object.assign(ottParams, {ks: ks});\n }\n if (partnerId) {\n Object.assign(ottParams, {partnerId: partnerId});\n }\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const multiReq = new MultiRequestBuilder(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ottParams;\n return multiReq;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/services/ott-service.js","const clone = data => {\n let node;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach((e, i) => {\n if ((typeof e === 'object' && e !== {}) || (Array.isArray(e) && e.length > 0)) {\n node[i] = clone(e);\n }\n });\n } else if (typeof data === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(key => {\n if ((typeof node[key] === 'object' && node[key] !== {}) || (Array.isArray(node[key]) && node[key].length > 0)) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexport {clone};\n\n\n\n// WEBPACK FOOTER //\n// ./util/clone.js","/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine(Logger);\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/js-logger/src/logger.js\n// module id = 23\n// module chunks = 0 1","//@flow\nimport KalturaDrmPlaybackPluginData from '../../common/response-types/kaltura-drm-playback-plugin-data';\n\nexport type OTTKalturaPlaybackSource = KalturaPlaybackSource;\n\nexport default class KalturaPlaybackSource {\n format: string;\n protocols: string;\n drm: Array = [];\n adsPolicy: string;\n adsParam: string;\n duration: number;\n url: string;\n type: string;\n fileId: number;\n\n /**\n * @constructor\n * @param {Object} source The response\n */\n constructor(source: Object) {\n this.format = source.format;\n this.adsPolicy = source.adsPolicy;\n this.adsParam = source.adsParam;\n this.duration = source.duration;\n this.url = source.url;\n this.type = source.type;\n this.fileId = source.id;\n this.protocols = source.protocols;\n if (source.drm) {\n source.drm.map(drm => this.drm.push(new KalturaDrmPlaybackPluginData(drm)));\n }\n }\n\n /**\n * Checks if source has DRM data\n * @function hasDrmData\n * @returns {boolean} Is source has DRM\n */\n hasDrmData(): boolean {\n return this.drm && this.drm.length > 0;\n }\n\n /**\n * Returns source desired protocol if supported\n * @param {string} protocol - the desired protocol for the source (base play url protocol)\n * @returns {string} - protocol if protocol is in the protocols list - if not empty string returned\n */\n getProtocol(protocol: string): string {\n let returnValue: string = '';\n if (this.protocols && this.protocols.length > 0) {\n let protocolsArr: Array = this.protocols.split(',');\n protocolsArr.forEach(p => {\n if (p === protocol) {\n returnValue = p;\n }\n });\n } else if (protocol === 'http') {\n return protocol;\n }\n return returnValue;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/response-types/kaltura-playback-source.js","// @flow\nimport BaseProvider from '../common/base-provider';\nimport getLogger from '../../util/logger';\nimport OTTConfiguration from './config';\nimport OTTDataLoaderManager from './loaders/data-loader-manager';\nimport OTTSessionLoader from './loaders/session-loader';\nimport OTTAssetLoader from './loaders/asset-loader';\nimport OTTProviderParser from './provider-parser';\nimport KalturaAsset from './response-types/kaltura-asset';\nimport KalturaPlaybackContext from './response-types/kaltura-playback-context';\nimport MediaEntry from '../../entities/media-entry';\n\nexport default class OTTProvider extends BaseProvider {\n /**\n * @constructor\n * @param {ProviderOptionsObject} options - provider options\n * @param {string} playerVersion - player version\n */\n constructor(options: ProviderOptionsObject, playerVersion: string) {\n super(options, playerVersion);\n this._logger = getLogger('OTTProvider');\n OTTConfiguration.set(options.env);\n }\n\n /**\n * Gets the backend media config.\n * @param {OTTProviderMediaInfoObject} mediaInfo - ott media info\n * @returns {Promise} - The provider media config\n */\n getMediaConfig(mediaInfo: OTTProviderMediaInfoObject): Promise {\n if (mediaInfo.ks) {\n this.ks = mediaInfo.ks;\n }\n this._dataLoader = new OTTDataLoaderManager(this.partnerId, this.ks);\n return new Promise((resolve, reject) => {\n const entryId = mediaInfo.entryId;\n if (entryId) {\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OTTSessionLoader, {partnerId: this.partnerId});\n }\n const contextType = mediaInfo.contextType || KalturaPlaybackContext.Type.PLAYBACK;\n const mediaType = mediaInfo.mediaType || KalturaAsset.Type.MEDIA;\n const assetReferenceType = mediaInfo.assetReferenceType || KalturaAsset.AssetReferenceType.MEDIA;\n const playbackContext = {\n mediaProtocol: mediaInfo.protocol,\n assetFileIds: mediaInfo.fileIds,\n context: contextType\n };\n this._dataLoader.add(OTTAssetLoader, {\n entryId: entryId,\n ks: ks,\n type: mediaType,\n playbackContext: playbackContext,\n assetReferenceType: assetReferenceType\n });\n const requestData = {\n contextType: contextType,\n mediaType: mediaType,\n formats: mediaInfo.formats || []\n };\n this._dataLoader.fetchData().then(\n response => {\n try {\n resolve(this._parseDataFromResponse(response, requestData));\n } catch (err) {\n reject({success: false, data: err});\n }\n },\n err => {\n reject(err);\n }\n );\n } else {\n reject({success: false, data: 'Missing mandatory parameter'});\n }\n });\n }\n\n _parseDataFromResponse(data: Map, requestData: Object): ProviderMediaConfigObject {\n this._logger.debug('Data parsing started');\n const mediaConfig: ProviderMediaConfigObject = {\n session: {\n isAnonymous: this._isAnonymous,\n partnerId: this.partnerId\n },\n sources: {\n hls: [],\n dash: [],\n progressive: [],\n id: '',\n duration: 0,\n type: MediaEntry.Type.UNKNOWN,\n poster: '',\n dvr: false,\n vr: null,\n metadata: {\n name: '',\n description: ''\n }\n },\n plugins: {}\n };\n if (this.uiConfId) {\n mediaConfig.session.uiConfId = this.uiConfId;\n }\n if (data) {\n if (data.has(OTTSessionLoader.id)) {\n const sessionLoader = data.get(OTTSessionLoader.id);\n if (sessionLoader && sessionLoader.response) {\n this.ks = sessionLoader.response;\n mediaConfig.session.ks = this.ks;\n }\n } else {\n mediaConfig.session.ks = this.ks;\n }\n if (data.has(OTTAssetLoader.id)) {\n const assetLoader = data.get(OTTAssetLoader.id);\n if (assetLoader && assetLoader.response && Object.keys(assetLoader.response).length) {\n const blockedAction = OTTProviderParser.hasBlockActions(assetLoader.response);\n if (blockedAction) {\n const errorMessage = OTTProviderParser.hasErrorMessage(assetLoader.response);\n if (errorMessage) {\n this._logger.error(`Asset is blocked, error message: `, errorMessage);\n throw errorMessage;\n } else {\n this._logger.error(`Asset is blocked, action: `, blockedAction);\n throw blockedAction;\n }\n }\n const mediaEntry = OTTProviderParser.getMediaEntry(assetLoader.response, requestData);\n const mediaSources = mediaEntry.sources.toJSON();\n mediaConfig.sources.hls = mediaSources.hls;\n mediaConfig.sources.dash = mediaSources.dash;\n mediaConfig.sources.progressive = mediaSources.progressive;\n mediaConfig.sources.id = mediaEntry.id;\n mediaConfig.sources.duration = mediaEntry.duration;\n mediaConfig.sources.type = mediaEntry.type;\n mediaConfig.sources.dvr = !!mediaEntry.dvrStatus;\n mediaConfig.sources.poster = mediaEntry.poster;\n if (\n mediaEntry.metadata &&\n mediaEntry.metadata.metas &&\n typeof mediaEntry.metadata.metas.tags === 'string' &&\n mediaEntry.metadata.metas.tags.indexOf('360') > -1\n ) {\n mediaConfig.sources.vr = {};\n }\n Object.assign(mediaConfig.sources.metadata, mediaEntry.metadata);\n }\n }\n }\n this._logger.debug('Data parsing finished', mediaConfig);\n return mediaConfig;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/provider.js","// @flow\nimport OTTProvider from './provider';\nimport KalturaPlaybackContext from './response-types/kaltura-playback-context';\nimport KalturaAsset from './response-types/kaltura-asset';\n\ndeclare var __VERSION__: string;\ndeclare var __NAME__: string;\n\nconst NAME = __NAME__ + '-ott';\nconst VERSION = __VERSION__;\n\nconst ContextType = KalturaPlaybackContext.Type;\nconst MediaType = KalturaAsset.Type;\n\nexport {OTTProvider as Provider, ContextType, MediaType, NAME, VERSION};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/index.js","//@flow\nimport OTTAssetService from '../services/asset-service';\nimport OTTConfiguration from '../config';\nimport RequestBuilder from '../../../util/request-builder';\nimport KalturaPlaybackContext from '../response-types/kaltura-playback-context';\nimport KalturaAsset from '../response-types/kaltura-asset';\n\nexport default class OTTAssetLoader implements ILoader {\n _entryId: string;\n _requests: Array;\n _response: any = {};\n\n static get id(): string {\n return 'asset';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._entryId = params.entryId;\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n this._response.mediaDataResult = new KalturaAsset(response[0].data);\n this._response.playBackContextResult = new KalturaPlaybackContext(response[1].data);\n }\n\n get response(): any {\n return this._response;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n const config = OTTConfiguration.get();\n const requests: Array = [];\n requests.push(OTTAssetService.get(config.serviceUrl, params.ks, params.entryId, params.assetReferenceType));\n requests.push(OTTAssetService.getPlaybackContext(config.serviceUrl, params.ks, params.entryId, params.type, params.playbackContext));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._entryId;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/loaders/asset-loader.js","// @flow\nimport DataLoaderManager from '../../common/data-loader-manager';\nimport OTTService from '../services/ott-service';\n\nexport default class OTTDataLoaderManager extends DataLoaderManager {\n /**\n * @constructor\n * @param {string} partnerId - partner id\n * @param {string} ks - ks\n */\n constructor(partnerId: number, ks: string = '') {\n super();\n this._multiRequest = OTTService.getMultiRequest(ks, partnerId);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/loaders/data-loader-manager.js","//@flow\nimport UserService from '../services/user-service';\nimport OTTConfiguration from '../config';\nimport RequestBuilder from '../../../util/request-builder';\n\nexport default class OTTSessionLoader implements ILoader {\n _partnerId: number;\n _requests: Array;\n _response: any = {};\n\n static get id(): string {\n return 'session';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._partnerId = params.partnerId;\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n this._response.ks = response[0].data.ks;\n }\n\n get response(): any {\n return this._response.ks;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n const config = OTTConfiguration.get();\n const requests: Array = [];\n requests.push(UserService.anonymousLogin(config.serviceUrl, params.partnerId, params.udid));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._partnerId;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/loaders/session-loader.js","//@flow\nimport getLogger from '../../util/logger';\nimport KalturaPlaybackSource from './response-types/kaltura-playback-source';\nimport KalturaPlaybackContext from './response-types/kaltura-playback-context';\nimport KalturaAsset from './response-types/kaltura-asset';\nimport MediaEntry from '../../entities/media-entry';\nimport Drm from '../../entities/drm';\nimport MediaSource from '../../entities/media-source';\nimport MediaSources from '../../entities/media-sources';\nimport {SupportedStreamFormat} from '../../entities/media-format';\nimport KalturaDrmPlaybackPluginData from '../common/response-types/kaltura-drm-playback-plugin-data';\nimport BaseProviderParser from '../common/base-provider-parser';\n\nconst LIVE_ASST_OBJECT_TYPE: string = 'KalturaLiveAsset';\n\nconst MediaTypeCombinations: {[mediaType: string]: Object} = {\n [KalturaAsset.Type.MEDIA]: {\n [KalturaPlaybackContext.Type.TRAILER]: () => ({type: MediaEntry.Type.VOD}),\n [KalturaPlaybackContext.Type.PLAYBACK]: mediaAssetData => {\n if (parseInt(mediaAssetData.externalIds) > 0 || mediaAssetData.objectType === LIVE_ASST_OBJECT_TYPE) {\n return {type: MediaEntry.Type.LIVE, dvrStatus: 0};\n }\n return {type: MediaEntry.Type.VOD};\n }\n },\n [KalturaAsset.Type.EPG]: {\n [KalturaPlaybackContext.Type.CATCHUP]: () => ({type: MediaEntry.Type.VOD}),\n [KalturaPlaybackContext.Type.START_OVER]: () => ({type: MediaEntry.Type.LIVE, dvrStatus: 1})\n },\n [KalturaAsset.Type.RECORDING]: {\n [KalturaPlaybackContext.Type.PLAYBACK]: () => ({type: MediaEntry.Type.VOD})\n }\n};\n\nexport default class OTTProviderParser extends BaseProviderParser {\n static _logger = getLogger('OTTProviderParser');\n\n /**\n * Returns parsed media entry by given OTT response objects.\n * @function getMediaEntry\n * @param {any} assetResponse - The asset response.\n * @param {Object} requestData - The request data object.\n * @returns {MediaEntry} - The media entry\n * @static\n * @public\n */\n static getMediaEntry(assetResponse: any, requestData: Object): MediaEntry {\n const mediaEntry = new MediaEntry();\n const playbackContext = assetResponse.playBackContextResult;\n const mediaAsset = assetResponse.mediaDataResult;\n const kalturaSources = playbackContext.sources;\n const metaData = OTTProviderParser.reconstructMetadata(mediaAsset);\n metaData.description = mediaAsset.description;\n metaData.name = mediaAsset.name;\n mediaEntry.metadata = metaData;\n mediaEntry.poster = OTTProviderParser._getPoster(mediaAsset.pictures);\n mediaEntry.id = mediaAsset.id;\n const filteredKalturaSources = OTTProviderParser._filterSourcesByFormats(kalturaSources, requestData.formats);\n mediaEntry.sources = OTTProviderParser._getParsedSources(filteredKalturaSources);\n const typeData = OTTProviderParser._getMediaType(mediaAsset.data, requestData.mediaType, requestData.contextType);\n mediaEntry.type = typeData.type;\n mediaEntry.dvrStatus = typeData.dvrStatus;\n mediaEntry.duration = Math.max.apply(Math, kalturaSources.map(source => source.duration));\n return mediaEntry;\n }\n\n /**\n * reconstruct the metadata\n * @param {Object} mediaAsset the mediaAsset that contains the response with the metadata.\n * @returns {Object} reconstructed metadata object\n */\n static reconstructMetadata(mediaAsset: Object): Object {\n const metadata = {\n metas: OTTProviderParser.addToMetaObject(mediaAsset.metas),\n tags: OTTProviderParser.addToMetaObject(mediaAsset.tags)\n };\n return metadata;\n }\n\n /**\n * transform an array of [{key: value},{key: value}...] to an object\n * @param {Array} list a list of objects\n * @returns {Object} an mapped object of the arrayed list.\n */\n static addToMetaObject(list: Array): Object {\n let categoryObj = {};\n if (list) {\n list.forEach(item => {\n categoryObj[item.key] = item.value;\n });\n }\n return categoryObj;\n }\n\n /**\n * Gets the poster url without width and height.\n * @param {Array} pictures - Media pictures.\n * @returns {string | Array} - Poster base url or array of poster candidates.\n * @private\n */\n static _getPoster(pictures: Array): string | Array {\n if (pictures && pictures.length > 0) {\n const picObj = pictures[0];\n const url = picObj.url;\n // Search for thumbnail service\n const regex = /.*\\/thumbnail\\/.*(?:width|height)\\/\\d+\\/(?:height|width)\\/\\d+/;\n if (regex.test(url)) {\n return url;\n }\n return pictures.map(pic => ({url: pic.url, width: pic.width, height: pic.height}));\n }\n return '';\n }\n\n /**\n * Gets the media type (LIVE/VOD)\n * @param {Object} mediaAssetData - The media asset data.\n * @param {string} mediaType - The asset media type.\n * @param {string} contextType - The asset context type.\n * @returns {Object} - The type data object.\n * @private\n */\n static _getMediaType(mediaAssetData: Object, mediaType: string, contextType: string): Object {\n let typeData = {type: MediaEntry.Type.UNKNOWN};\n if (MediaTypeCombinations[mediaType] && MediaTypeCombinations[mediaType][contextType]) {\n typeData = MediaTypeCombinations[mediaType][contextType](mediaAssetData);\n }\n return typeData;\n }\n\n /**\n * Filtered the kalturaSources array by device type.\n * @param {Array} kalturaSources - The kaltura sources.\n * @param {Array} formats - Partner device formats.\n * @returns {Array} - Filtered kalturaSources array.\n * @private\n */\n static _filterSourcesByFormats(kalturaSources: Array, formats: Array): Array {\n if (formats.length > 0) {\n kalturaSources = kalturaSources.filter(source => formats.includes(source.type));\n }\n return kalturaSources;\n }\n\n /**\n * Returns the parsed sources\n * @function _getParsedSources\n * @param {Array} kalturaSources - The kaltura sources\n * @param {Object} playbackContext - The playback context\n * @return {MediaSources} - A media sources\n * @static\n * @private\n */\n static _getParsedSources(kalturaSources: Array): MediaSources {\n const sources = new MediaSources();\n const addAdaptiveSource = (source: KalturaPlaybackSource) => {\n const parsedSource = OTTProviderParser._parseAdaptiveSource(source);\n const sourceFormat = SupportedStreamFormat.get(source.format);\n sources.map(parsedSource, sourceFormat);\n };\n const parseAdaptiveSources = () => {\n kalturaSources.filter(source => !OTTProviderParser._isProgressiveSource(source)).forEach(addAdaptiveSource);\n };\n const parseProgressiveSources = () => {\n kalturaSources.filter(source => OTTProviderParser._isProgressiveSource(source)).forEach(addAdaptiveSource);\n };\n if (kalturaSources && kalturaSources.length > 0) {\n parseAdaptiveSources();\n parseProgressiveSources();\n }\n return sources;\n }\n\n /**\n * Returns a parsed adaptive source\n * @function _parseAdaptiveSource\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @returns {MediaSource} - The parsed adaptive kalturaSource\n * @static\n * @private\n */\n static _parseAdaptiveSource(kalturaSource: ?KalturaPlaybackSource): MediaSource {\n const mediaSource = new MediaSource();\n if (kalturaSource) {\n const playUrl = kalturaSource.url;\n const mediaFormat = SupportedStreamFormat.get(kalturaSource.format);\n if (mediaFormat) {\n mediaSource.mimetype = mediaFormat.mimeType;\n }\n if (playUrl === '') {\n OTTProviderParser._logger.error(\n `failed to create play url from source, discarding source: (${kalturaSource.fileId}), ${kalturaSource.format}.`\n );\n return mediaSource;\n }\n mediaSource.url = playUrl;\n mediaSource.id = kalturaSource.fileId + ',' + kalturaSource.format;\n if (kalturaSource.hasDrmData()) {\n const drmParams: Array = [];\n kalturaSource.drm.forEach(drm => {\n drmParams.push(new Drm(drm.licenseURL, KalturaDrmPlaybackPluginData.Scheme[drm.scheme], drm.certificate));\n });\n mediaSource.drmData = drmParams;\n }\n }\n return mediaSource;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/provider-parser.js","//@flow\nimport OTTService from './ott-service';\nimport RequestBuilder from '../../../util/request-builder';\n\nconst SERVICE_NAME: string = 'asset';\n\nexport default class OTTAssetService extends OTTService {\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The partner ID\n * @param {string} assetId The asset ID\n * @param {string} type The asset type (media/recording/epg)\n * @param {ProviderPlaybackContextOptions} playbackContextOptions The playbackContextOptions\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static getPlaybackContext(\n serviceUrl: string,\n ks: string,\n assetId: string,\n type: string,\n playbackContextOptions: ProviderPlaybackContextOptions\n ): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'getPlaybackContext';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n const contextDataParams: Object = {objectType: 'KalturaPlaybackContextOptions'};\n Object.assign(contextDataParams, playbackContextOptions);\n request.params = {assetId: assetId, assetType: type, contextDataParams: contextDataParams, ks: ks};\n return request;\n }\n\n static get(serviceUrl: string, ks: string, assetId: string, assetReferenceType: string): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'get';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.params = {id: assetId, assetReferenceType: assetReferenceType, ks: ks};\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/services/asset-service.js","//@flow\nimport OTTService from './ott-service';\nimport RequestBuilder from '../../../util/request-builder';\n\nconst SERVICE_NAME: string = 'ottuser';\n\nexport default class OTTUserService extends OTTService {\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} partnerId The partner ID\n * @param {string} udid The udid\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static anonymousLogin(serviceUrl: string, partnerId: number, udid?: string): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'anonymousLogin';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n const params: Object = {partnerId: partnerId};\n if (udid) {\n Object.assign(params, {udid: udid});\n }\n request.params = params;\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/services/user-service.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition?5ca6","./providers/playkit-ott-provider.js","webpack:///webpack/bootstrap 93ff0b3f93c7e54c46e2?e7b5","webpack:///./util/request-builder.js?3e89","webpack:///./entities/media-entry.js?f496","webpack:///./k-provider/common/base-service-result.js?3ffa","webpack:///./util/logger.js?8c6e","webpack:///./entities/media-format.js?60b5","webpack:///./entities/media-source.js?489a","webpack:///./entities/media-sources.js?fb37","webpack:///./entities/drm.js?1c78","webpack:///./k-provider/common/data-loader-manager.js?4c3e","webpack:///./k-provider/common/multi-request-builder.js?9930","webpack:///./k-provider/common/response-types/kaltura-drm-playback-plugin-data.js?bb31","./providers/./k-provider/ott/response-types/kaltura-asset.js","./providers/./k-provider/ott/response-types/kaltura-playback-context.js","./providers/./k-provider/ott/config.js","webpack:///./k-provider/common/base-provider-parser.js?8bd6","webpack:///./k-provider/common/base-provider.js?8ae2","webpack:///./k-provider/common/response-types/kaltura-access-control-message.js?bbd4","webpack:///./k-provider/common/response-types/kaltura-rule-action.js?05c3","./providers/./k-provider/ott/services/ott-service.js","webpack:///./util/clone.js?3f6f","webpack:///../~/js-logger/src/logger.js?779b","./providers/./k-provider/ott/response-types/kaltura-playback-source.js","./providers/./k-provider/ott/provider.js","./providers/./k-provider/ott/index.js","./providers/./k-provider/ott/loaders/asset-loader.js","./providers/./k-provider/ott/loaders/data-loader-manager.js","./providers/./k-provider/ott/loaders/session-loader.js","./providers/./k-provider/ott/provider-parser.js","./providers/./k-provider/ott/services/asset-service.js","./providers/./k-provider/ott/services/user-service.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","_classCallCheck","instance","Constructor","TypeError","_typeof","Symbol","iterator","obj","constructor","_createClass","defineProperties","target","props","length","descriptor","writable","key","protoProps","staticProps","RequestBuilder","headers","arguments","undefined","Map","serviceUrl","service","action","_this","url","Error","request","XMLHttpRequest","Promise","resolve","reject","onreadystatechange","readyState","status","jsonResponse","JSON","parse","responseText","e","message","code","open","method","forEach","setRequestHeader","send","params","default","_mediaSources","_mediaSources2","MediaEntry","metadata","sources","type","Type","UNKNOWN","id","toJSON","duration","dvrStatus","poster","assetReferenceType","VOD","LIVE","IMAGE","AUDIO","ServiceResult","response","hasError","objectType","error","ServiceError","data","getLogger","JsLogger","getLogLevel","getLevel","setLogLevel","level","setLevel","LogLevel","_jsLogger","newObj","DEBUG","INFO","TIME","WARN","ERROR","OFF","useDefaults","defaultLevel","MediaFormat","DASH","mimeType","pathExt","HLS","WVM","MP4","MP3","SupportedStreamFormat","_drm","MediaSource","mimetype","bandwidth","width","height","label","drmData","Array","isArray","push","_mediaSource","_mediaFormat","MediaSources","progressive","dash","hls","source","mediaFormat","h","Drm","licenseUrl","scheme","certificate","_multiRequestBuilder","DataLoaderManager","_loaders","loader","execution_loader","isValid","set","startIndex","_multiRequest","requests","add","executionLoaderResponseMap","from","val","index","_loadersResponseMap","_this2","execute","then","_multiResponse","success","preparedData","prepareData","err","loaderDataIndexes","results","slice","_interopRequireDefault","_defineProperty","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","MultiRequestResult","_requestBuilder","_requestBuilder2","_logger","_logger2","_baseServiceResult","_baseServiceResult2","MultiRequestBuilder","_RequestBuilder","_ref","_temp","_ret","_len","args","_key","getPrototypeOf","apply","concat","requestParams","serviceDef","assign","stringify","doHttpRequest","errorText","_this3","result","serviceResult","KalturaDrmPlaybackPluginData","drm","licenseURL","Scheme","drm.PLAYREADY_CENC","drm.WIDEVINE_CENC","fairplay.FAIRPLAY","WIDEVINE_CENC","PLAYREADY_CENC","FAIRPLAY","KalturaAsset","_ServiceResult","description","tags","metas","pictures","_formatTagsMetas","images","objectToParse","parsed","keys","objects","MEDIA","RECORDING","EPG","AssetReferenceType","EPG_INTERNAL","EPG_EXTERNAL","_kalturaAccessControlMessage","_kalturaAccessControlMessage2","_kalturaRuleAction","_kalturaRuleAction2","_kalturaPlaybackSource","_kalturaPlaybackSource2","KalturaPlaybackContext","actions","messages","map","TRAILER","CATCHUP","START_OVER","PLAYBACK","OTTConfiguration","_clone","defaultConfig","serviceParams","apiVersion","clientConfig","clone","_mediaEntry","BaseProviderParser","sourceFormat","format","assetResponse","playBackContextResult","playbackContext","actionIndex","messagesIndex","_dataLoaderManager","BaseProvider","options","playerVersion","_partnerId","partnerId","_uiConfId","uiConfId","_isAnonymous","ks","_ks","_playerVersion","logLevel","mediaInfo","KalturaAccessControlMessage","KalturaRuleAction","DRM_POLICY","BLOCK","PREVIEW","LIMIT_FLAVORS","ADD_TO_STORAGE","LIMIT_DELIVERY_PROFILES","SERVE_FROM_REMOTE_SERVER","REQUEST_HOST_REGEX","LIMIT_THUMBNAIL_CAPTURE","_multiRequestBuilder2","_config","_config2","OTTService","config","ottParams","multiReq","getUrl","node","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","global","Logger","VERSION","logHandler","contextualLoggersByNameMap","bind","scope","func","merge","defineLogLevel","ContextualLogger","defaultContext","context","filterLevel","log","info","newLevel","enabledFor","lvl","debug","invoke","warn","time","timeEnd","msgArgs","globalLogger","L","setHandler","createDefaultHandler","formatter","unshift","timerStartTimeByLabelMap","invokeConsoleMethod","hdlr","Function","console","timerLabel","Date","getTime","_kalturaDrmPlaybackPluginData","_kalturaDrmPlaybackPluginData2","KalturaPlaybackSource","adsPolicy","adsParam","fileId","protocols","protocol","returnValue","split","_baseProvider","_baseProvider2","_dataLoaderManager2","_sessionLoader","_sessionLoader2","_assetLoader","_assetLoader2","_providerParser","_providerParser2","_kalturaAsset","_kalturaAsset2","_kalturaPlaybackContext","_kalturaPlaybackContext2","_mediaEntry2","OTTProvider","_BaseProvider","env","_dataLoader","entryId","contextType","mediaType","mediaProtocol","assetFileIds","fileIds","requestData","formats","fetchData","_parseDataFromResponse","mediaConfig","session","isAnonymous","dvr","vr","plugins","has","sessionLoader","assetLoader","blockedAction","hasBlockActions","errorMessage","hasErrorMessage","mediaEntry","getMediaEntry","mediaSources","indexOf","NAME","MediaType","ContextType","Provider","_provider","_provider2","_assetService","_assetService2","OTTAssetLoader","_response","buildRequests","_entryId","getPlaybackContext","_requests","mediaDataResult","_ottService","_ottService2","OTTDataLoaderManager","_DataLoaderManager","getMultiRequest","_userService","_userService2","OTTSessionLoader","anonymousLogin","udid","_KalturaAsset$Type$ME","_KalturaAsset$Type$EP","_MediaTypeCombination","_drm2","_mediaSource2","_baseProviderParser","_baseProviderParser2","MediaTypeCombinations","mediaAssetData","parseInt","externalIds","OTTProviderParser","_BaseProviderParser","mediaAsset","kalturaSources","metaData","reconstructMetadata","_getPoster","filteredKalturaSources","_filterSourcesByFormats","_getParsedSources","typeData","_getMediaType","Math","max","addToMetaObject","list","categoryObj","item","picObj","test","pic","filter","includes","addAdaptiveSource","parsedSource","_parseAdaptiveSource","_isProgressiveSource","kalturaSource","mediaSource","playUrl","hasDrmData","drmParams","OTTAssetService","_OTTService","assetId","playbackContextOptions","contextDataParams","assetType","OTTUserService"],"mappings":"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","file":"playkit-ott-provider.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ott\"] = factory();\n\telse\n\t\troot[\"playkit\"] = root[\"playkit\"] || {}, root[\"playkit\"][\"providers\"] = root[\"playkit\"][\"providers\"] || {}, root[\"playkit\"][\"providers\"][\"ott\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ott\"] = factory();\n\telse\n\t\troot[\"playkit\"] = root[\"playkit\"] || {}, root[\"playkit\"][\"providers\"] = root[\"playkit\"][\"providers\"] || {}, root[\"playkit\"][\"providers\"][\"ott\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 35);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar RequestBuilder = function () {\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n\n /**\n * @member - Service headers\n * @type {Map}\n */\n\n /**\n * @member - Service action\n * @type {string}\n */\n function RequestBuilder() {\n var headers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map();\n\n _classCallCheck(this, RequestBuilder);\n\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n\n /**\n * @member - Service tag\n * @type {string}\n */\n\n /**\n * @member - Service URL\n * @type {string}\n */\n\n /**\n * @member - Service params\n * @type {any}\n */\n\n /**\n * @member - Service name\n * @type {string}\n */\n\n\n _createClass(RequestBuilder, [{\n key: 'getUrl',\n value: function getUrl(serviceUrl) {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n\n }, {\n key: 'doHttpRequest',\n value: function doHttpRequest() {\n var _this = this;\n\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n var request = new XMLHttpRequest();\n return new Promise(function (resolve, reject) {\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n var jsonResponse = void 0;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(e.message + ', ' + request.responseText);\n }\n if (jsonResponse && (typeof jsonResponse === 'undefined' ? 'undefined' : _typeof(jsonResponse)) === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(_this.method, _this.url);\n _this.headers.forEach(function (value, key) {\n request.setRequestHeader(key, value);\n });\n request.send(_this.params);\n });\n }\n }]);\n\n return RequestBuilder;\n}();\n\nexports.default = RequestBuilder;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _mediaSources = __webpack_require__(7);\n\nvar _mediaSources2 = _interopRequireDefault(_mediaSources);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MediaEntry = function () {\n\n /**\n * @constructor\n */\n\n\n /**\n * @member - entry id\n * @type {string}\n */\n\n /**\n * @member - entry name\n * @type {string}\n */\n\n /**\n * @member - entry sources\n * @type {MediaSources}\n */\n\n /**\n * @member - entry duration\n * @type {number}\n */\n\n /**\n * @member - entry type\n * @type {string}\n */\n\n /**\n * @member - entry metadata\n * @type {Object}\n */\n\n /**\n * @member - DVR status\n * @type {number}\n */\n\n /**\n * @member - media poster\n * @type {string | Array}\n */\n\n\n /**\n * @member - assetReferenceType\n * @type {string }\n */\n function MediaEntry() {\n _classCallCheck(this, MediaEntry);\n\n this.metadata = new Map();\n this.sources = new _mediaSources2.default();\n this.type = MediaEntry.Type.UNKNOWN;\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaEntryObject} - The json class object.\n */\n\n\n _createClass(MediaEntry, [{\n key: 'toJSON',\n value: function toJSON() {\n return {\n id: this.id,\n name: this.name,\n sources: this.sources.toJSON(),\n duration: this.duration,\n dvrStatus: this.dvrStatus,\n metadata: this.metadata,\n type: this.type,\n poster: this.poster,\n assetReferenceType: this.assetReferenceType\n };\n }\n }]);\n\n return MediaEntry;\n}();\n\nMediaEntry.Type = {\n VOD: 'Vod',\n LIVE: 'Live',\n IMAGE: 'Image',\n AUDIO: 'Audio',\n UNKNOWN: 'Unknown'\n};\nexports.default = MediaEntry;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ServiceResult =\n\n/**\n * @constructor\n * @param {Object} response - Service response\n */\n\n/**\n * @member - The service error\n * @type {ServiceError}\n */\n\n/**\n * @member - The service result data\n * @type {Object}\n */\nfunction ServiceResult(response) {\n _classCallCheck(this, ServiceResult);\n\n this.hasError = false;\n\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n}\n/**\n * @member - Is service returned an error\n * @type {boolean}\n */\n;\n\nexports.default = ServiceResult;\n\nvar ServiceError =\n\n/**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n\n/**\n * @member - The error code\n * @type {string}\n */\nfunction ServiceError(code, message) {\n _classCallCheck(this, ServiceError);\n\n this.code = code;\n this.message = message;\n}\n/**\n * @member - The error message\n * @type {string}\n */\n;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setLogLevel = exports.getLogLevel = exports.LogLevel = undefined;\n\nvar _jsLogger = __webpack_require__(23);\n\nvar JsLogger = _interopRequireWildcard(_jsLogger);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar LogLevel = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\n\nJsLogger.useDefaults({ defaultLevel: JsLogger.ERROR });\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name) {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name) {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level, name) {\n getLogger(name).setLevel(level);\n}\n\nexports.default = getLogger;\nexports.LogLevel = LogLevel;\nexports.getLogLevel = getLogLevel;\nexports.setLogLevel = setLogLevel;\n\n/***/ }),\n/* 4 */,\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar MediaFormat = exports.MediaFormat = {\n DASH: {\n name: 'dash',\n mimeType: 'application/dash+xml',\n pathExt: 'mpd'\n },\n HLS: {\n name: 'hls',\n mimeType: 'application/x-mpegURL',\n pathExt: 'm3u8'\n },\n WVM: {\n name: 'wvm',\n mimeType: 'video/wvm',\n pathExt: 'wvm'\n },\n MP4: {\n name: 'mp4',\n mimeType: 'video/mp4',\n pathExt: 'mp4'\n },\n MP3: {\n name: 'mp3',\n mimeType: 'audio/mpeg',\n pathExt: 'mp3'\n }\n};\n\nvar SupportedStreamFormat = exports.SupportedStreamFormat = new Map([['mpegdash', MediaFormat.DASH], ['applehttp', MediaFormat.HLS], ['url', MediaFormat.MP4]]);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _drm = __webpack_require__(8);\n\nvar _drm2 = _interopRequireDefault(_drm);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MediaSource = function () {\n function MediaSource() {\n _classCallCheck(this, MediaSource);\n }\n\n _createClass(MediaSource, [{\n key: 'toJSON',\n\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourceObject} - The json class object.\n */\n\n /**\n * @member - media source height\n * @type {number}\n */\n\n /**\n * @member - media source bandwidth\n * @type {number}\n */\n\n /**\n * @member - media source mimetype\n * @type {string}\n */\n\n /**\n * @member - media source id\n * @type {string}\n */\n value: function toJSON() {\n var response = {\n id: this.id,\n url: this.url,\n mimetype: this.mimetype\n };\n if (this.bandwidth) response.bandwidth = this.bandwidth;\n if (this.width) response.width = this.width;\n if (this.height) response.height = this.height;\n if (this.label) response.label = this.label;\n if (this.drmData && this.drmData.length > 0) {\n response.drmData = [];\n this.drmData.forEach(function (d) {\n if (Array.isArray(response.drmData)) {\n response.drmData.push(d.toJSON());\n }\n });\n }\n return response;\n }\n /**\n * @member - media source label\n * @type {string}\n */\n\n /**\n * @member - media source width\n * @type {number}\n */\n\n /**\n * @member - media source drm data\n * @type {Array}\n */\n\n /**\n * @member - media source url\n * @type {string}\n */\n\n }]);\n\n return MediaSource;\n}();\n\nexports.default = MediaSource;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _mediaSource = __webpack_require__(6);\n\nvar _mediaSource2 = _interopRequireDefault(_mediaSource);\n\nvar _mediaFormat = __webpack_require__(5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MediaSources = function () {\n\n /**\n * @constructor\n */\n\n /**\n * Dash media sources container.\n * @type {Array}\n * @public\n */\n function MediaSources() {\n _classCallCheck(this, MediaSources);\n\n this.progressive = [];\n this.dash = [];\n this.hls = [];\n }\n\n /**\n * Maps the source to one of the containers according to his media format.\n * @param {MediaSource} source - The source to add to one of the containers.\n * @param {MediaFormat} mediaFormat - The media format of the source.\n * @returns {void}\n */\n\n /**\n * Hls media sources container.\n * @type {Array}\n * @public\n */\n\n /**\n * Progressive download media sources container.\n * @type {Array}\n * @public\n */\n\n\n _createClass(MediaSources, [{\n key: 'map',\n value: function map(source, mediaFormat) {\n if (mediaFormat) {\n switch (mediaFormat.name) {\n case _mediaFormat.MediaFormat.MP4.name:\n this.progressive.push(source);\n break;\n case _mediaFormat.MediaFormat.DASH.name:\n this.dash.push(source);\n break;\n case _mediaFormat.MediaFormat.HLS.name:\n this.hls.push(source);\n break;\n default:\n break;\n }\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourcesObject} - The json class object.\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var response = {\n progressive: [],\n dash: [],\n hls: []\n };\n this.progressive.forEach(function (p) {\n return response.progressive.push(p.toJSON());\n });\n this.hls.forEach(function (h) {\n return response.hls.push(h.toJSON());\n });\n this.dash.forEach(function (d) {\n return response.dash.push(d.toJSON());\n });\n return response;\n }\n }]);\n\n return MediaSources;\n}();\n\nexports.default = MediaSources;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Drm = function () {\n\n /**\n * @constructor\n * @param {string} licenseUrl - the license url\n * @param {string} scheme - the drm scheme\n * @param {?string} certificate - the drm certificate\n */\n\n /**\n * @member - drm scheme\n * @type {string}\n */\n function Drm(licenseUrl, scheme, certificate) {\n _classCallCheck(this, Drm);\n\n this.licenseUrl = licenseUrl;\n this.scheme = scheme;\n if (certificate) {\n this.certificate = certificate;\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderDrmDataObject} - The json class object.\n */\n\n\n /**\n * @member - drm certificate\n * @type {string}\n */\n\n /**\n * @member - license url\n * @type {string}\n */\n\n\n _createClass(Drm, [{\n key: \"toJSON\",\n value: function toJSON() {\n var response = {\n licenseUrl: this.licenseUrl,\n scheme: this.scheme\n };\n if (this.certificate) response.certificate = this.certificate;\n return response;\n }\n }]);\n\n return Drm;\n}();\n\nexports.default = Drm;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _multiRequestBuilder = __webpack_require__(10);\n\nvar _multiRequestBuilder2 = _interopRequireDefault(_multiRequestBuilder);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DataLoaderManager = function () {\n function DataLoaderManager() {\n _classCallCheck(this, DataLoaderManager);\n\n this._loaders = new Map();\n }\n /**\n * @member - Loaders response map index\n * @type {Map>}\n * @private\n * @static\n */\n\n /**\n * @member - Loaders to execute\n * @type {Map}\n * @private\n */\n\n /**\n * @member - Loaders multi request\n * @type {MultiRequestBuilder}\n * @protected\n */\n\n /**\n * @member - Loaders multi response\n * @type {MultiRequestResult}\n * @private\n */\n\n\n _createClass(DataLoaderManager, [{\n key: 'add',\n\n\n /**\n * Add loader too execution loaders map\n * @function\n * @param {Function} loader Loader to add\n * @param {Object} params Loader params\n * @returns {void}\n */\n value: function add(loader, params) {\n var _this = this;\n\n var execution_loader = new loader(params);\n if (execution_loader.isValid()) {\n this._loaders.set(loader.id, execution_loader);\n // Get the start index from the multiReqeust before adding current execution_loader requests\n var startIndex = this._multiRequest.requests.length;\n // Get the requests\n var requests = execution_loader.requests;\n // Add requests to muktiRequest queue\n requests.forEach(function (request) {\n _this._multiRequest.add(request);\n });\n // Create range array of current execution_loader requests\n var executionLoaderResponseMap = Array.from(new Array(requests.length), function (val, index) {\n return index + startIndex;\n });\n // Add to map\n DataLoaderManager._loadersResponseMap.set(loader.id, executionLoaderResponseMap);\n }\n }\n\n /**\n * Get data from all loaders using multi request\n * @function\n * @returns {Promise} Promise\n */\n\n }, {\n key: 'fetchData',\n value: function fetchData() {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n _this2._multiRequest.execute().then(function (response) {\n _this2._multiResponse = response;\n if (!response.success) {\n reject(response);\n } else {\n var preparedData = _this2.prepareData(response);\n if (preparedData.success) {\n resolve(_this2._loaders);\n } else {\n reject({ success: false, data: preparedData.error });\n }\n }\n }, function (err) {\n reject(err);\n });\n });\n }\n\n /**\n * Prepare fetched data\n * @function\n * @param {MultiRequestResult} response - The multi request result\n * @returns {Object} - The prepared data\n */\n\n }, {\n key: 'prepareData',\n value: function prepareData(response) {\n this._loaders.forEach(function (loader, name) {\n var loaderDataIndexes = DataLoaderManager._loadersResponseMap.get(name);\n try {\n if (loaderDataIndexes && loaderDataIndexes.length > 0) {\n loader.response = response.results.slice(loaderDataIndexes[0], loaderDataIndexes[loaderDataIndexes.length - 1] + 1);\n }\n } catch (err) {\n return { success: false, error: err };\n }\n });\n return { success: true, data: this._loaders };\n }\n }]);\n\n return DataLoaderManager;\n}();\n\nDataLoaderManager._loadersResponseMap = new Map();\nexports.default = DataLoaderManager;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MultiRequestResult = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _logger = __webpack_require__(3);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MultiRequestBuilder = function (_RequestBuilder) {\n _inherits(MultiRequestBuilder, _RequestBuilder);\n\n function MultiRequestBuilder() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, MultiRequestBuilder);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = MultiRequestBuilder.__proto__ || Object.getPrototypeOf(MultiRequestBuilder)).call.apply(_ref, [this].concat(args))), _this), _this.requests = [], _temp), _possibleConstructorReturn(_this, _ret);\n }\n /**\n * @member - Array of requests\n * @type {Array}\n */\n\n\n _createClass(MultiRequestBuilder, [{\n key: 'add',\n\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n value: function add(request) {\n this.requests.push(request);\n var requestParams = {};\n var serviceDef = { service: request.service, action: request.action };\n Object.assign(requestParams, _defineProperty({}, this.requests.length, Object.assign(serviceDef, request.params)));\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n\n }, {\n key: 'execute',\n value: function execute() {\n var _this2 = this;\n\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error('' + err.message);\n }\n return new Promise(function (resolve, reject) {\n _this2.doHttpRequest().then(function (data) {\n resolve(new MultiRequestResult(data));\n }, function (err) {\n var errorText = 'Error on multiRequest execution, error <' + err + '>.';\n reject(errorText);\n });\n });\n }\n }]);\n\n return MultiRequestBuilder;\n}(_requestBuilder2.default);\n\nMultiRequestBuilder._logger = (0, _logger2.default)('MultiRequestBuilder');\nexports.default = MultiRequestBuilder;\n\nvar MultiRequestResult =\n\n/**\n * @constructor\n * @param {Object} response data\n */\nexports.MultiRequestResult = function MultiRequestResult(response) {\n var _this3 = this;\n\n _classCallCheck(this, MultiRequestResult);\n\n this.results = [];\n\n this.success = true;\n var responseArr = response.result ? response.result : response;\n responseArr.forEach(function (result) {\n var serviceResult = new _baseServiceResult2.default(result);\n _this3.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error('Service returned an error with error code: ' + serviceResult.error.code + ' and message: ' + serviceResult.error.message + '.');\n _this3.success = false;\n return;\n }\n });\n}\n/**\n * @member - Multi request response data\n * @type {Object}\n */\n\n/**\n * @member - Is success\n * @type {boolean}\n */\n;\n\nMultiRequestResult._logger = (0, _logger2.default)('MultiRequestResult');\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaDrmPlaybackPluginData =\n\n/**\n * @constructor\n * @param {Object} drm The json response\n */\n\n\n/**\n * @member - The drm scheme\n * @type {string}\n */\n\n\n/**\n * @member - The license URL\n * @type {string}\n */\n\n\n/**\n * @member - The drm certificate\n * @type {?string}\n */\nfunction KalturaDrmPlaybackPluginData(drm) {\n _classCallCheck(this, KalturaDrmPlaybackPluginData);\n\n this.scheme = drm.scheme;\n this.licenseURL = drm.licenseURL;\n this.certificate = drm.certificate;\n};\n\nKalturaDrmPlaybackPluginData.Scheme = {\n 'drm.PLAYREADY_CENC': 'com.microsoft.playready',\n 'drm.WIDEVINE_CENC': 'com.widevine.alpha',\n 'fairplay.FAIRPLAY': 'com.apple.fairplay',\n WIDEVINE_CENC: 'com.widevine.alpha',\n PLAYREADY_CENC: 'com.microsoft.playready',\n FAIRPLAY: 'com.apple.fairplay'\n};\nexports.default = KalturaDrmPlaybackPluginData;\n\n/***/ }),\n/* 12 */,\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar KalturaAsset = function (_ServiceResult) {\n _inherits(KalturaAsset, _ServiceResult);\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n\n /**\n * @member - The asset metas\n * @type {Array}\n */\n\n /**\n * @member - The asset name description\n * @type {string}\n */\n function KalturaAsset(response) {\n _classCallCheck(this, KalturaAsset);\n\n var _this = _possibleConstructorReturn(this, (KalturaAsset.__proto__ || Object.getPrototypeOf(KalturaAsset)).call(this, response));\n\n _this.name = '';\n _this.description = '';\n _this.tags = [];\n _this.metas = [];\n _this.pictures = [];\n\n if (!_this.hasError) {\n _this.id = response.id;\n _this.name = response.name;\n _this.description = response.description;\n _this.metas = _this._formatTagsMetas(response.metas);\n _this.tags = _this._formatTagsMetas(response.tags);\n _this.pictures = response.images;\n }\n return _this;\n }\n /**\n * @member - The asset images\n * @type {Array}\n */\n\n /**\n * @member - The asset tags\n * @type {Array}\n */\n\n /**\n * @member - The asset name\n * @type {string}\n */\n\n /**\n * @member - The asset id\n * @type {number}\n */\n\n\n _createClass(KalturaAsset, [{\n key: '_formatTagsMetas',\n value: function _formatTagsMetas(objectToParse) {\n var parsed = [];\n Object.keys(objectToParse).forEach(function (key) {\n if (objectToParse[key].objects) {\n var value = '';\n objectToParse[key].objects.forEach(function (object) {\n value += object.value + '|';\n });\n parsed.push({ key: key, value: value });\n } else {\n parsed.push({ key: key, value: objectToParse[key].value });\n }\n });\n return parsed;\n }\n }]);\n\n return KalturaAsset;\n}(_baseServiceResult2.default);\n\nKalturaAsset.Type = {\n MEDIA: 'media',\n RECORDING: 'recording',\n EPG: 'epg'\n};\nKalturaAsset.AssetReferenceType = {\n MEDIA: 'media',\n EPG_INTERNAL: 'epg_internal',\n EPG_EXTERNAL: 'epg_external'\n};\nexports.default = KalturaAsset;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nvar _kalturaAccessControlMessage = __webpack_require__(18);\n\nvar _kalturaAccessControlMessage2 = _interopRequireDefault(_kalturaAccessControlMessage);\n\nvar _kalturaRuleAction = __webpack_require__(19);\n\nvar _kalturaRuleAction2 = _interopRequireDefault(_kalturaRuleAction);\n\nvar _kalturaPlaybackSource = __webpack_require__(24);\n\nvar _kalturaPlaybackSource2 = _interopRequireDefault(_kalturaPlaybackSource);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar KalturaPlaybackContext = function (_ServiceResult) {\n _inherits(KalturaPlaybackContext, _ServiceResult);\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n function KalturaPlaybackContext(response) {\n _classCallCheck(this, KalturaPlaybackContext);\n\n var _this = _possibleConstructorReturn(this, (KalturaPlaybackContext.__proto__ || Object.getPrototypeOf(KalturaPlaybackContext)).call(this, response));\n\n _this.sources = [];\n _this.actions = [];\n _this.messages = [];\n\n if (!_this.hasError) {\n var messages = response.messages;\n if (messages) {\n messages.map(function (message) {\n return _this.messages.push(new _kalturaAccessControlMessage2.default(message));\n });\n }\n var actions = response.actions;\n if (actions) {\n actions.map(function (action) {\n return _this.actions.push(new _kalturaRuleAction2.default(action));\n });\n }\n var sources = response.sources;\n if (sources) {\n sources.map(function (source) {\n return _this.sources.push(new _kalturaPlaybackSource2.default(source));\n });\n }\n }\n return _this;\n }\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n\n /**\n * @member - The playback sources\n * @type {Array}\n */\n\n\n return KalturaPlaybackContext;\n}(_baseServiceResult2.default);\n\nKalturaPlaybackContext.Type = {\n TRAILER: 'TRAILER',\n CATCHUP: 'CATCHUP',\n START_OVER: 'START_OVER',\n PLAYBACK: 'PLAYBACK'\n};\nexports.default = KalturaPlaybackContext;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OTTConfiguration = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(22);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultConfig = {\n serviceParams: {\n apiVersion: '4.7.1'\n }\n};\n\nvar OTTConfiguration = function () {\n function OTTConfiguration() {\n _classCallCheck(this, OTTConfiguration);\n }\n\n _createClass(OTTConfiguration, null, [{\n key: 'set',\n value: function set(clientConfig) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n }, {\n key: 'get',\n value: function get() {\n return (0, _clone.clone)(defaultConfig);\n }\n }]);\n\n return OTTConfiguration;\n}();\n\nexports.default = OTTConfiguration;\nexports.OTTConfiguration = OTTConfiguration;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _mediaFormat = __webpack_require__(5);\n\nvar _mediaEntry = __webpack_require__(1);\n\nvar _mediaEntry2 = _interopRequireDefault(_mediaEntry);\n\nvar _mediaSources = __webpack_require__(7);\n\nvar _mediaSources2 = _interopRequireDefault(_mediaSources);\n\nvar _mediaSource = __webpack_require__(6);\n\nvar _mediaSource2 = _interopRequireDefault(_mediaSource);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BaseProviderParser = function () {\n function BaseProviderParser() {\n _classCallCheck(this, BaseProviderParser);\n }\n\n _createClass(BaseProviderParser, null, [{\n key: 'getMediaEntry',\n\n // eslint-disable-next-line no-unused-vars\n value: function getMediaEntry() {\n throw new TypeError('getMediaEntry method must be implement by the derived class');\n }\n\n // eslint-disable-next-line no-unused-vars\n\n }, {\n key: '_getParsedSources',\n value: function _getParsedSources() {\n throw new TypeError('_getParsedSources method must be implement by the derived class');\n }\n\n // eslint-disable-next-line no-unused-vars\n\n }, {\n key: '_parseAdaptiveSource',\n value: function _parseAdaptiveSource() {\n throw new TypeError('_parseAdaptiveSource method must be implement by the derived class');\n }\n }, {\n key: '_isProgressiveSource',\n value: function _isProgressiveSource(source) {\n var sourceFormat = _mediaFormat.SupportedStreamFormat.get(source.format);\n return !!sourceFormat && sourceFormat.name === 'mp4';\n }\n }, {\n key: 'hasBlockActions',\n value: function hasBlockActions(assetResponse) {\n if (assetResponse && assetResponse.playBackContextResult) {\n var playbackContext = assetResponse.playBackContextResult;\n for (var actionIndex = 0; actionIndex < playbackContext.actions.length; actionIndex++) {\n if (playbackContext.actions[actionIndex].type === 'BLOCK') {\n return playbackContext.actions[actionIndex];\n }\n }\n }\n return null;\n }\n }, {\n key: 'hasErrorMessage',\n value: function hasErrorMessage(assetResponse) {\n var messages = assetResponse.playBackContextResult.messages;\n for (var messagesIndex = 0; messagesIndex < messages.length; messagesIndex++) {\n if (messages[messagesIndex].code !== 'OK') {\n return messages[messagesIndex];\n }\n }\n return null;\n }\n }]);\n\n return BaseProviderParser;\n}();\n\nexports.default = BaseProviderParser;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _logger = __webpack_require__(3);\n\nvar _dataLoaderManager = __webpack_require__(9);\n\nvar _dataLoaderManager2 = _interopRequireDefault(_dataLoaderManager);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BaseProvider = function () {\n _createClass(BaseProvider, [{\n key: 'partnerId',\n get: function get() {\n return this._partnerId;\n }\n }, {\n key: 'uiConfId',\n get: function get() {\n return this._uiConfId;\n }\n }, {\n key: 'ks',\n get: function get() {\n return this._ks;\n },\n set: function set(value) {\n this._ks = value;\n }\n }, {\n key: 'playerVersion',\n get: function get() {\n return this._playerVersion;\n }\n }, {\n key: 'isAnonymous',\n get: function get() {\n return this._isAnonymous;\n }\n }]);\n\n function BaseProvider(options, playerVersion) {\n _classCallCheck(this, BaseProvider);\n\n this._partnerId = options.partnerId;\n this._uiConfId = options.uiConfId;\n this._isAnonymous = !options.ks;\n this._ks = options.ks || '';\n this._playerVersion = playerVersion;\n if (options.logLevel && this.LogLevel[options.logLevel]) {\n (0, _logger.setLogLevel)(this.LogLevel[options.logLevel]);\n }\n }\n\n // eslint-disable-next-line no-unused-vars\n\n\n _createClass(BaseProvider, [{\n key: 'getMediaConfig',\n value: function getMediaConfig(mediaInfo) {\n throw new TypeError('getMediaConfig method must be implement by the derived class');\n }\n\n // eslint-disable-next-line no-unused-vars\n\n }, {\n key: '_parseDataFromResponse',\n value: function _parseDataFromResponse(data) {\n throw new TypeError('_parseDataFromResponse method must be implement by the derived class');\n }\n }, {\n key: 'getLogLevel',\n value: function getLogLevel(name) {\n return (0, _logger.getLogLevel)(name);\n }\n }, {\n key: 'setLogLevel',\n value: function setLogLevel(level, name) {\n (0, _logger.setLogLevel)(level, name);\n }\n }, {\n key: 'LogLevel',\n get: function get() {\n return _logger.LogLevel;\n }\n }]);\n\n return BaseProvider;\n}();\n\nexports.default = BaseProvider;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaAccessControlMessage =\n\n/**\n * @constructor\n * @param {Object} data The json response\n */\n\n/**\n * @member - The access control message\n * @type {string}\n */\nfunction KalturaAccessControlMessage(data) {\n _classCallCheck(this, KalturaAccessControlMessage);\n\n this.message = data.message;\n this.code = data.code;\n}\n/**\n * @member - The access control message code\n * @@type {string}\n */\n;\n\nexports.default = KalturaAccessControlMessage;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaRuleAction =\n\n/**\n * @constructor\n * @param {Object} data - The response\n */\n\n\n/**\n * @member - The type of the action\n * @type {string|number}\n */\nfunction KalturaRuleAction(data) {\n _classCallCheck(this, KalturaRuleAction);\n\n this.type = data.type;\n};\n\nKalturaRuleAction.Type = {\n DRM_POLICY: 'drm.DRM_POLICY',\n BLOCK: 1,\n PREVIEW: 2,\n LIMIT_FLAVORS: 3,\n ADD_TO_STORAGE: 4,\n LIMIT_DELIVERY_PROFILES: 5,\n SERVE_FROM_REMOTE_SERVER: 6,\n REQUEST_HOST_REGEX: 7,\n LIMIT_THUMBNAIL_CAPTURE: 8\n};\nexports.default = KalturaRuleAction;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _multiRequestBuilder = __webpack_require__(10);\n\nvar _multiRequestBuilder2 = _interopRequireDefault(_multiRequestBuilder);\n\nvar _config = __webpack_require__(15);\n\nvar _config2 = _interopRequireDefault(_config);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar SERVICE_NAME = 'multirequest';\n\nvar OTTService = function () {\n function OTTService() {\n _classCallCheck(this, OTTService);\n }\n\n _createClass(OTTService, null, [{\n key: 'getMultiRequest',\n\n /**\n * Gets a new instance of MultiRequestBuilder with ott params\n * @function getMultiRequest\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n value: function getMultiRequest(ks, partnerId) {\n var config = _config2.default.get();\n var ottParams = config.serviceParams;\n if (ks) {\n Object.assign(ottParams, { ks: ks });\n }\n if (partnerId) {\n Object.assign(ottParams, { partnerId: partnerId });\n }\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var multiReq = new _multiRequestBuilder2.default(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ottParams;\n return multiReq;\n }\n }]);\n\n return OTTService;\n}();\n\nexports.default = OTTService;\n\n/***/ }),\n/* 21 */,\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar clone = function clone(data) {\n var node = void 0;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach(function (e, i) {\n if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object' && e !== {} || Array.isArray(e) && e.length > 0) {\n node[i] = clone(e);\n }\n });\n } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(function (key) {\n if (_typeof(node[key]) === 'object' && node[key] !== {} || Array.isArray(node[key]) && node[key].length > 0) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexports.clone = clone;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (true) {\r\n\t\t!(__WEBPACK_AMD_DEFINE_FACTORY__ = (Logger),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _kalturaDrmPlaybackPluginData = __webpack_require__(11);\n\nvar _kalturaDrmPlaybackPluginData2 = _interopRequireDefault(_kalturaDrmPlaybackPluginData);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaPlaybackSource = function () {\n\n /**\n * @constructor\n * @param {Object} source The response\n */\n function KalturaPlaybackSource(source) {\n var _this = this;\n\n _classCallCheck(this, KalturaPlaybackSource);\n\n this.drm = [];\n\n this.format = source.format;\n this.adsPolicy = source.adsPolicy;\n this.adsParam = source.adsParam;\n this.duration = source.duration;\n this.url = source.url;\n this.type = source.type;\n this.fileId = source.id;\n this.protocols = source.protocols;\n if (source.drm) {\n source.drm.map(function (drm) {\n return _this.drm.push(new _kalturaDrmPlaybackPluginData2.default(drm));\n });\n }\n }\n\n /**\n * Checks if source has DRM data\n * @function hasDrmData\n * @returns {boolean} Is source has DRM\n */\n\n\n _createClass(KalturaPlaybackSource, [{\n key: 'hasDrmData',\n value: function hasDrmData() {\n return this.drm && this.drm.length > 0;\n }\n\n /**\n * Returns source desired protocol if supported\n * @param {string} protocol - the desired protocol for the source (base play url protocol)\n * @returns {string} - protocol if protocol is in the protocols list - if not empty string returned\n */\n\n }, {\n key: 'getProtocol',\n value: function getProtocol(protocol) {\n var returnValue = '';\n if (this.protocols && this.protocols.length > 0) {\n var protocolsArr = this.protocols.split(',');\n protocolsArr.forEach(function (p) {\n if (p === protocol) {\n returnValue = p;\n }\n });\n } else if (protocol === 'http') {\n return protocol;\n }\n return returnValue;\n }\n }]);\n\n return KalturaPlaybackSource;\n}();\n\nexports.default = KalturaPlaybackSource;\n\n/***/ }),\n/* 25 */,\n/* 26 */,\n/* 27 */,\n/* 28 */,\n/* 29 */,\n/* 30 */,\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _baseProvider = __webpack_require__(17);\n\nvar _baseProvider2 = _interopRequireDefault(_baseProvider);\n\nvar _logger = __webpack_require__(3);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _config = __webpack_require__(15);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _dataLoaderManager = __webpack_require__(37);\n\nvar _dataLoaderManager2 = _interopRequireDefault(_dataLoaderManager);\n\nvar _sessionLoader = __webpack_require__(38);\n\nvar _sessionLoader2 = _interopRequireDefault(_sessionLoader);\n\nvar _assetLoader = __webpack_require__(36);\n\nvar _assetLoader2 = _interopRequireDefault(_assetLoader);\n\nvar _providerParser = __webpack_require__(39);\n\nvar _providerParser2 = _interopRequireDefault(_providerParser);\n\nvar _kalturaAsset = __webpack_require__(13);\n\nvar _kalturaAsset2 = _interopRequireDefault(_kalturaAsset);\n\nvar _kalturaPlaybackContext = __webpack_require__(14);\n\nvar _kalturaPlaybackContext2 = _interopRequireDefault(_kalturaPlaybackContext);\n\nvar _mediaEntry = __webpack_require__(1);\n\nvar _mediaEntry2 = _interopRequireDefault(_mediaEntry);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar OTTProvider = function (_BaseProvider) {\n _inherits(OTTProvider, _BaseProvider);\n\n /**\n * @constructor\n * @param {ProviderOptionsObject} options - provider options\n * @param {string} playerVersion - player version\n */\n function OTTProvider(options, playerVersion) {\n _classCallCheck(this, OTTProvider);\n\n var _this = _possibleConstructorReturn(this, (OTTProvider.__proto__ || Object.getPrototypeOf(OTTProvider)).call(this, options, playerVersion));\n\n _this._logger = (0, _logger2.default)('OTTProvider');\n _config2.default.set(options.env);\n return _this;\n }\n\n /**\n * Gets the backend media config.\n * @param {OTTProviderMediaInfoObject} mediaInfo - ott media info\n * @returns {Promise} - The provider media config\n */\n\n\n _createClass(OTTProvider, [{\n key: 'getMediaConfig',\n value: function getMediaConfig(mediaInfo) {\n var _this2 = this;\n\n if (mediaInfo.ks) {\n this.ks = mediaInfo.ks;\n }\n this._dataLoader = new _dataLoaderManager2.default(this.partnerId, this.ks);\n return new Promise(function (resolve, reject) {\n var entryId = mediaInfo.entryId;\n if (entryId) {\n var ks = _this2.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n _this2._dataLoader.add(_sessionLoader2.default, { partnerId: _this2.partnerId });\n }\n var contextType = mediaInfo.contextType || _kalturaPlaybackContext2.default.Type.PLAYBACK;\n var mediaType = mediaInfo.mediaType || _kalturaAsset2.default.Type.MEDIA;\n var assetReferenceType = mediaInfo.assetReferenceType || _kalturaAsset2.default.AssetReferenceType.MEDIA;\n var playbackContext = {\n mediaProtocol: mediaInfo.protocol,\n assetFileIds: mediaInfo.fileIds,\n context: contextType\n };\n _this2._dataLoader.add(_assetLoader2.default, {\n entryId: entryId,\n ks: ks,\n type: mediaType,\n playbackContext: playbackContext,\n assetReferenceType: assetReferenceType\n });\n var requestData = {\n contextType: contextType,\n mediaType: mediaType,\n formats: mediaInfo.formats || []\n };\n _this2._dataLoader.fetchData().then(function (response) {\n try {\n resolve(_this2._parseDataFromResponse(response, requestData));\n } catch (err) {\n reject({ success: false, data: err });\n }\n }, function (err) {\n reject(err);\n });\n } else {\n reject({ success: false, data: 'Missing mandatory parameter' });\n }\n });\n }\n }, {\n key: '_parseDataFromResponse',\n value: function _parseDataFromResponse(data, requestData) {\n this._logger.debug('Data parsing started');\n var mediaConfig = {\n session: {\n isAnonymous: this._isAnonymous,\n partnerId: this.partnerId\n },\n sources: {\n hls: [],\n dash: [],\n progressive: [],\n id: '',\n duration: 0,\n type: _mediaEntry2.default.Type.UNKNOWN,\n poster: '',\n dvr: false,\n vr: null,\n metadata: {\n name: '',\n description: ''\n }\n },\n plugins: {}\n };\n if (this.uiConfId) {\n mediaConfig.session.uiConfId = this.uiConfId;\n }\n if (data) {\n if (data.has(_sessionLoader2.default.id)) {\n var sessionLoader = data.get(_sessionLoader2.default.id);\n if (sessionLoader && sessionLoader.response) {\n this.ks = sessionLoader.response;\n mediaConfig.session.ks = this.ks;\n }\n } else {\n mediaConfig.session.ks = this.ks;\n }\n if (data.has(_assetLoader2.default.id)) {\n var assetLoader = data.get(_assetLoader2.default.id);\n if (assetLoader && assetLoader.response && Object.keys(assetLoader.response).length) {\n var blockedAction = _providerParser2.default.hasBlockActions(assetLoader.response);\n if (blockedAction) {\n var errorMessage = _providerParser2.default.hasErrorMessage(assetLoader.response);\n if (errorMessage) {\n this._logger.error('Asset is blocked, error message: ', errorMessage);\n throw errorMessage;\n } else {\n this._logger.error('Asset is blocked, action: ', blockedAction);\n throw blockedAction;\n }\n }\n var mediaEntry = _providerParser2.default.getMediaEntry(assetLoader.response, requestData);\n var mediaSources = mediaEntry.sources.toJSON();\n mediaConfig.sources.hls = mediaSources.hls;\n mediaConfig.sources.dash = mediaSources.dash;\n mediaConfig.sources.progressive = mediaSources.progressive;\n mediaConfig.sources.id = mediaEntry.id;\n mediaConfig.sources.duration = mediaEntry.duration;\n mediaConfig.sources.type = mediaEntry.type;\n mediaConfig.sources.dvr = !!mediaEntry.dvrStatus;\n mediaConfig.sources.poster = mediaEntry.poster;\n if (mediaEntry.metadata && mediaEntry.metadata.metas && typeof mediaEntry.metadata.metas.tags === 'string' && mediaEntry.metadata.metas.tags.indexOf('360') > -1) {\n mediaConfig.sources.vr = {};\n }\n Object.assign(mediaConfig.sources.metadata, mediaEntry.metadata);\n }\n }\n }\n this._logger.debug('Data parsing finished', mediaConfig);\n return mediaConfig;\n }\n }]);\n\n return OTTProvider;\n}(_baseProvider2.default);\n\nexports.default = OTTProvider;\n\n/***/ }),\n/* 32 */,\n/* 33 */,\n/* 34 */,\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VERSION = exports.NAME = exports.MediaType = exports.ContextType = exports.Provider = undefined;\n\nvar _provider = __webpack_require__(31);\n\nvar _provider2 = _interopRequireDefault(_provider);\n\nvar _kalturaPlaybackContext = __webpack_require__(14);\n\nvar _kalturaPlaybackContext2 = _interopRequireDefault(_kalturaPlaybackContext);\n\nvar _kalturaAsset = __webpack_require__(13);\n\nvar _kalturaAsset2 = _interopRequireDefault(_kalturaAsset);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NAME = \"playkit-js-providers\" + '-ott';\n\nvar VERSION = \"2.8.0\";\n\nvar ContextType = _kalturaPlaybackContext2.default.Type;\nvar MediaType = _kalturaAsset2.default.Type;\n\nexports.Provider = _provider2.default;\nexports.ContextType = ContextType;\nexports.MediaType = MediaType;\nexports.NAME = NAME;\nexports.VERSION = VERSION;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _assetService = __webpack_require__(40);\n\nvar _assetService2 = _interopRequireDefault(_assetService);\n\nvar _config = __webpack_require__(15);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _kalturaPlaybackContext = __webpack_require__(14);\n\nvar _kalturaPlaybackContext2 = _interopRequireDefault(_kalturaPlaybackContext);\n\nvar _kalturaAsset = __webpack_require__(13);\n\nvar _kalturaAsset2 = _interopRequireDefault(_kalturaAsset);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OTTAssetLoader = function () {\n _createClass(OTTAssetLoader, null, [{\n key: 'id',\n get: function get() {\n return 'asset';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n\n }]);\n\n function OTTAssetLoader(params) {\n _classCallCheck(this, OTTAssetLoader);\n\n this._response = {};\n\n this.requests = this.buildRequests(params);\n this._entryId = params.entryId;\n }\n\n _createClass(OTTAssetLoader, [{\n key: 'buildRequests',\n\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function buildRequests(params) {\n var config = _config2.default.get();\n var requests = [];\n requests.push(_assetService2.default.get(config.serviceUrl, params.ks, params.entryId, params.assetReferenceType));\n requests.push(_assetService2.default.getPlaybackContext(config.serviceUrl, params.ks, params.entryId, params.type, params.playbackContext));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n\n }, {\n key: 'isValid',\n value: function isValid() {\n return !!this._entryId;\n }\n }, {\n key: 'requests',\n set: function set(requests) {\n this._requests = requests;\n },\n get: function get() {\n return this._requests;\n }\n }, {\n key: 'response',\n set: function set(response) {\n this._response.mediaDataResult = new _kalturaAsset2.default(response[0].data);\n this._response.playBackContextResult = new _kalturaPlaybackContext2.default(response[1].data);\n },\n get: function get() {\n return this._response;\n }\n }]);\n\n return OTTAssetLoader;\n}();\n\nexports.default = OTTAssetLoader;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dataLoaderManager = __webpack_require__(9);\n\nvar _dataLoaderManager2 = _interopRequireDefault(_dataLoaderManager);\n\nvar _ottService = __webpack_require__(20);\n\nvar _ottService2 = _interopRequireDefault(_ottService);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar OTTDataLoaderManager = function (_DataLoaderManager) {\n _inherits(OTTDataLoaderManager, _DataLoaderManager);\n\n /**\n * @constructor\n * @param {string} partnerId - partner id\n * @param {string} ks - ks\n */\n function OTTDataLoaderManager(partnerId) {\n var ks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n _classCallCheck(this, OTTDataLoaderManager);\n\n var _this = _possibleConstructorReturn(this, (OTTDataLoaderManager.__proto__ || Object.getPrototypeOf(OTTDataLoaderManager)).call(this));\n\n _this._multiRequest = _ottService2.default.getMultiRequest(ks, partnerId);\n return _this;\n }\n\n return OTTDataLoaderManager;\n}(_dataLoaderManager2.default);\n\nexports.default = OTTDataLoaderManager;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _userService = __webpack_require__(41);\n\nvar _userService2 = _interopRequireDefault(_userService);\n\nvar _config = __webpack_require__(15);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OTTSessionLoader = function () {\n _createClass(OTTSessionLoader, null, [{\n key: 'id',\n get: function get() {\n return 'session';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n\n }]);\n\n function OTTSessionLoader(params) {\n _classCallCheck(this, OTTSessionLoader);\n\n this._response = {};\n\n this.requests = this.buildRequests(params);\n this._partnerId = params.partnerId;\n }\n\n _createClass(OTTSessionLoader, [{\n key: 'buildRequests',\n\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function buildRequests(params) {\n var config = _config2.default.get();\n var requests = [];\n requests.push(_userService2.default.anonymousLogin(config.serviceUrl, params.partnerId, params.udid));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n\n }, {\n key: 'isValid',\n value: function isValid() {\n return !!this._partnerId;\n }\n }, {\n key: 'requests',\n set: function set(requests) {\n this._requests = requests;\n },\n get: function get() {\n return this._requests;\n }\n }, {\n key: 'response',\n set: function set(response) {\n this._response.ks = response[0].data.ks;\n },\n get: function get() {\n return this._response.ks;\n }\n }]);\n\n return OTTSessionLoader;\n}();\n\nexports.default = OTTSessionLoader;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _KalturaAsset$Type$ME, _KalturaAsset$Type$EP, _MediaTypeCombination;\n\nvar _logger = __webpack_require__(3);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _kalturaPlaybackSource = __webpack_require__(24);\n\nvar _kalturaPlaybackSource2 = _interopRequireDefault(_kalturaPlaybackSource);\n\nvar _kalturaPlaybackContext = __webpack_require__(14);\n\nvar _kalturaPlaybackContext2 = _interopRequireDefault(_kalturaPlaybackContext);\n\nvar _kalturaAsset = __webpack_require__(13);\n\nvar _kalturaAsset2 = _interopRequireDefault(_kalturaAsset);\n\nvar _mediaEntry = __webpack_require__(1);\n\nvar _mediaEntry2 = _interopRequireDefault(_mediaEntry);\n\nvar _drm = __webpack_require__(8);\n\nvar _drm2 = _interopRequireDefault(_drm);\n\nvar _mediaSource = __webpack_require__(6);\n\nvar _mediaSource2 = _interopRequireDefault(_mediaSource);\n\nvar _mediaSources = __webpack_require__(7);\n\nvar _mediaSources2 = _interopRequireDefault(_mediaSources);\n\nvar _mediaFormat = __webpack_require__(5);\n\nvar _kalturaDrmPlaybackPluginData = __webpack_require__(11);\n\nvar _kalturaDrmPlaybackPluginData2 = _interopRequireDefault(_kalturaDrmPlaybackPluginData);\n\nvar _baseProviderParser = __webpack_require__(16);\n\nvar _baseProviderParser2 = _interopRequireDefault(_baseProviderParser);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar LIVE_ASST_OBJECT_TYPE = 'KalturaLiveAsset';\n\nvar MediaTypeCombinations = (_MediaTypeCombination = {}, _defineProperty(_MediaTypeCombination, _kalturaAsset2.default.Type.MEDIA, (_KalturaAsset$Type$ME = {}, _defineProperty(_KalturaAsset$Type$ME, _kalturaPlaybackContext2.default.Type.TRAILER, function () {\n return { type: _mediaEntry2.default.Type.VOD };\n}), _defineProperty(_KalturaAsset$Type$ME, _kalturaPlaybackContext2.default.Type.PLAYBACK, function (mediaAssetData) {\n if (parseInt(mediaAssetData.externalIds) > 0 || mediaAssetData.objectType === LIVE_ASST_OBJECT_TYPE) {\n return { type: _mediaEntry2.default.Type.LIVE, dvrStatus: 0 };\n }\n return { type: _mediaEntry2.default.Type.VOD };\n}), _KalturaAsset$Type$ME)), _defineProperty(_MediaTypeCombination, _kalturaAsset2.default.Type.EPG, (_KalturaAsset$Type$EP = {}, _defineProperty(_KalturaAsset$Type$EP, _kalturaPlaybackContext2.default.Type.CATCHUP, function () {\n return { type: _mediaEntry2.default.Type.VOD };\n}), _defineProperty(_KalturaAsset$Type$EP, _kalturaPlaybackContext2.default.Type.START_OVER, function () {\n return { type: _mediaEntry2.default.Type.LIVE, dvrStatus: 1 };\n}), _KalturaAsset$Type$EP)), _defineProperty(_MediaTypeCombination, _kalturaAsset2.default.Type.RECORDING, _defineProperty({}, _kalturaPlaybackContext2.default.Type.PLAYBACK, function () {\n return { type: _mediaEntry2.default.Type.VOD };\n})), _MediaTypeCombination);\n\nvar OTTProviderParser = function (_BaseProviderParser) {\n _inherits(OTTProviderParser, _BaseProviderParser);\n\n function OTTProviderParser() {\n _classCallCheck(this, OTTProviderParser);\n\n return _possibleConstructorReturn(this, (OTTProviderParser.__proto__ || Object.getPrototypeOf(OTTProviderParser)).apply(this, arguments));\n }\n\n _createClass(OTTProviderParser, null, [{\n key: 'getMediaEntry',\n\n\n /**\n * Returns parsed media entry by given OTT response objects.\n * @function getMediaEntry\n * @param {any} assetResponse - The asset response.\n * @param {Object} requestData - The request data object.\n * @returns {MediaEntry} - The media entry\n * @static\n * @public\n */\n value: function getMediaEntry(assetResponse, requestData) {\n var mediaEntry = new _mediaEntry2.default();\n var playbackContext = assetResponse.playBackContextResult;\n var mediaAsset = assetResponse.mediaDataResult;\n var kalturaSources = playbackContext.sources;\n var metaData = OTTProviderParser.reconstructMetadata(mediaAsset);\n metaData.description = mediaAsset.description;\n metaData.name = mediaAsset.name;\n mediaEntry.metadata = metaData;\n mediaEntry.poster = OTTProviderParser._getPoster(mediaAsset.pictures);\n mediaEntry.id = mediaAsset.id;\n var filteredKalturaSources = OTTProviderParser._filterSourcesByFormats(kalturaSources, requestData.formats);\n mediaEntry.sources = OTTProviderParser._getParsedSources(filteredKalturaSources);\n var typeData = OTTProviderParser._getMediaType(mediaAsset.data, requestData.mediaType, requestData.contextType);\n mediaEntry.type = typeData.type;\n mediaEntry.dvrStatus = typeData.dvrStatus;\n mediaEntry.duration = Math.max.apply(Math, kalturaSources.map(function (source) {\n return source.duration;\n }));\n return mediaEntry;\n }\n\n /**\n * reconstruct the metadata\n * @param {Object} mediaAsset the mediaAsset that contains the response with the metadata.\n * @returns {Object} reconstructed metadata object\n */\n\n }, {\n key: 'reconstructMetadata',\n value: function reconstructMetadata(mediaAsset) {\n var metadata = {\n metas: OTTProviderParser.addToMetaObject(mediaAsset.metas),\n tags: OTTProviderParser.addToMetaObject(mediaAsset.tags)\n };\n return metadata;\n }\n\n /**\n * transform an array of [{key: value},{key: value}...] to an object\n * @param {Array} list a list of objects\n * @returns {Object} an mapped object of the arrayed list.\n */\n\n }, {\n key: 'addToMetaObject',\n value: function addToMetaObject(list) {\n var categoryObj = {};\n if (list) {\n list.forEach(function (item) {\n categoryObj[item.key] = item.value;\n });\n }\n return categoryObj;\n }\n\n /**\n * Gets the poster url without width and height.\n * @param {Array} pictures - Media pictures.\n * @returns {string | Array} - Poster base url or array of poster candidates.\n * @private\n */\n\n }, {\n key: '_getPoster',\n value: function _getPoster(pictures) {\n if (pictures && pictures.length > 0) {\n var picObj = pictures[0];\n var url = picObj.url;\n // Search for thumbnail service\n var regex = /.*\\/thumbnail\\/.*(?:width|height)\\/\\d+\\/(?:height|width)\\/\\d+/;\n if (regex.test(url)) {\n return url;\n }\n return pictures.map(function (pic) {\n return { url: pic.url, width: pic.width, height: pic.height };\n });\n }\n return '';\n }\n\n /**\n * Gets the media type (LIVE/VOD)\n * @param {Object} mediaAssetData - The media asset data.\n * @param {string} mediaType - The asset media type.\n * @param {string} contextType - The asset context type.\n * @returns {Object} - The type data object.\n * @private\n */\n\n }, {\n key: '_getMediaType',\n value: function _getMediaType(mediaAssetData, mediaType, contextType) {\n var typeData = { type: _mediaEntry2.default.Type.UNKNOWN };\n if (MediaTypeCombinations[mediaType] && MediaTypeCombinations[mediaType][contextType]) {\n typeData = MediaTypeCombinations[mediaType][contextType](mediaAssetData);\n }\n return typeData;\n }\n\n /**\n * Filtered the kalturaSources array by device type.\n * @param {Array} kalturaSources - The kaltura sources.\n * @param {Array} formats - Partner device formats.\n * @returns {Array} - Filtered kalturaSources array.\n * @private\n */\n\n }, {\n key: '_filterSourcesByFormats',\n value: function _filterSourcesByFormats(kalturaSources, formats) {\n if (formats.length > 0) {\n kalturaSources = kalturaSources.filter(function (source) {\n return formats.includes(source.type);\n });\n }\n return kalturaSources;\n }\n\n /**\n * Returns the parsed sources\n * @function _getParsedSources\n * @param {Array} kalturaSources - The kaltura sources\n * @param {Object} playbackContext - The playback context\n * @return {MediaSources} - A media sources\n * @static\n * @private\n */\n\n }, {\n key: '_getParsedSources',\n value: function _getParsedSources(kalturaSources) {\n var sources = new _mediaSources2.default();\n var addAdaptiveSource = function addAdaptiveSource(source) {\n var parsedSource = OTTProviderParser._parseAdaptiveSource(source);\n var sourceFormat = _mediaFormat.SupportedStreamFormat.get(source.format);\n sources.map(parsedSource, sourceFormat);\n };\n var parseAdaptiveSources = function parseAdaptiveSources() {\n kalturaSources.filter(function (source) {\n return !OTTProviderParser._isProgressiveSource(source);\n }).forEach(addAdaptiveSource);\n };\n var parseProgressiveSources = function parseProgressiveSources() {\n kalturaSources.filter(function (source) {\n return OTTProviderParser._isProgressiveSource(source);\n }).forEach(addAdaptiveSource);\n };\n if (kalturaSources && kalturaSources.length > 0) {\n parseAdaptiveSources();\n parseProgressiveSources();\n }\n return sources;\n }\n\n /**\n * Returns a parsed adaptive source\n * @function _parseAdaptiveSource\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @returns {MediaSource} - The parsed adaptive kalturaSource\n * @static\n * @private\n */\n\n }, {\n key: '_parseAdaptiveSource',\n value: function _parseAdaptiveSource(kalturaSource) {\n var mediaSource = new _mediaSource2.default();\n if (kalturaSource) {\n var playUrl = kalturaSource.url;\n var mediaFormat = _mediaFormat.SupportedStreamFormat.get(kalturaSource.format);\n if (mediaFormat) {\n mediaSource.mimetype = mediaFormat.mimeType;\n }\n if (playUrl === '') {\n OTTProviderParser._logger.error('failed to create play url from source, discarding source: (' + kalturaSource.fileId + '), ' + kalturaSource.format + '.');\n return mediaSource;\n }\n mediaSource.url = playUrl;\n mediaSource.id = kalturaSource.fileId + ',' + kalturaSource.format;\n if (kalturaSource.hasDrmData()) {\n var drmParams = [];\n kalturaSource.drm.forEach(function (drm) {\n drmParams.push(new _drm2.default(drm.licenseURL, _kalturaDrmPlaybackPluginData2.default.Scheme[drm.scheme], drm.certificate));\n });\n mediaSource.drmData = drmParams;\n }\n }\n return mediaSource;\n }\n }]);\n\n return OTTProviderParser;\n}(_baseProviderParser2.default);\n\nOTTProviderParser._logger = (0, _logger2.default)('OTTProviderParser');\nexports.default = OTTProviderParser;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ottService = __webpack_require__(20);\n\nvar _ottService2 = _interopRequireDefault(_ottService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'asset';\n\nvar OTTAssetService = function (_OTTService) {\n _inherits(OTTAssetService, _OTTService);\n\n function OTTAssetService() {\n _classCallCheck(this, OTTAssetService);\n\n return _possibleConstructorReturn(this, (OTTAssetService.__proto__ || Object.getPrototypeOf(OTTAssetService)).apply(this, arguments));\n }\n\n _createClass(OTTAssetService, null, [{\n key: 'getPlaybackContext',\n\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The partner ID\n * @param {string} assetId The asset ID\n * @param {string} type The asset type (media/recording/epg)\n * @param {ProviderPlaybackContextOptions} playbackContextOptions The playbackContextOptions\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function getPlaybackContext(serviceUrl, ks, assetId, type, playbackContextOptions) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'getPlaybackContext';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n var contextDataParams = { objectType: 'KalturaPlaybackContextOptions' };\n Object.assign(contextDataParams, playbackContextOptions);\n request.params = { assetId: assetId, assetType: type, contextDataParams: contextDataParams, ks: ks };\n return request;\n }\n }, {\n key: 'get',\n value: function get(serviceUrl, ks, assetId, assetReferenceType) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'get';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.params = { id: assetId, assetReferenceType: assetReferenceType, ks: ks };\n return request;\n }\n }]);\n\n return OTTAssetService;\n}(_ottService2.default);\n\nexports.default = OTTAssetService;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ottService = __webpack_require__(20);\n\nvar _ottService2 = _interopRequireDefault(_ottService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'ottuser';\n\nvar OTTUserService = function (_OTTService) {\n _inherits(OTTUserService, _OTTService);\n\n function OTTUserService() {\n _classCallCheck(this, OTTUserService);\n\n return _possibleConstructorReturn(this, (OTTUserService.__proto__ || Object.getPrototypeOf(OTTUserService)).apply(this, arguments));\n }\n\n _createClass(OTTUserService, null, [{\n key: 'anonymousLogin',\n\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} partnerId The partner ID\n * @param {string} udid The udid\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function anonymousLogin(serviceUrl, partnerId, udid) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'anonymousLogin';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n var params = { partnerId: partnerId };\n if (udid) {\n Object.assign(params, { udid: udid });\n }\n request.params = params;\n return request;\n }\n }]);\n\n return OTTUserService;\n}(_ottService2.default);\n\nexports.default = OTTUserService;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// playkit-ott-provider.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 35);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 93ff0b3f93c7e54c46e2","//@flow\nexport default class RequestBuilder {\n /**\n * @member - Service name\n * @type {string}\n */\n service: string;\n /**\n * @member - Service action\n * @type {string}\n */\n action: string;\n /**\n * @member - Service params\n * @type {any}\n */\n params: any;\n /**\n * @member - Service headers\n * @type {Map}\n */\n headers: Map;\n /**\n * @member - Service URL\n * @type {string}\n */\n url: string;\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n method: string;\n /**\n * @member - Service tag\n * @type {string}\n */\n tag: string;\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n constructor(headers: Map = new Map()) {\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n getUrl(serviceUrl: string): string {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n doHttpRequest(): Promise {\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n let request = new XMLHttpRequest();\n return new Promise((resolve, reject) => {\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.status === 200) {\n let jsonResponse;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(`${e.message}, ${request.responseText}`);\n }\n if (jsonResponse && typeof jsonResponse === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);\n else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(this.method, this.url);\n this.headers.forEach((value, key) => {\n request.setRequestHeader(key, value);\n });\n request.send(this.params);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./util/request-builder.js","//@flow\nimport MediaSources from './media-sources';\n\nexport default class MediaEntry {\n static Type: {[type: string]: string} = {\n VOD: 'Vod',\n LIVE: 'Live',\n IMAGE: 'Image',\n AUDIO: 'Audio',\n UNKNOWN: 'Unknown'\n };\n\n /**\n * @member - entry id\n * @type {string}\n */\n id: string;\n /**\n * @member - entry name\n * @type {string}\n */\n name: string;\n /**\n * @member - entry sources\n * @type {MediaSources}\n */\n sources: MediaSources;\n /**\n * @member - entry duration\n * @type {number}\n */\n duration: number;\n /**\n * @member - entry type\n * @type {string}\n */\n type: string;\n /**\n * @member - entry metadata\n * @type {Object}\n */\n metadata: Object;\n /**\n * @member - DVR status\n * @type {number}\n */\n dvrStatus: number;\n /**\n * @member - media poster\n * @type {string | Array}\n */\n poster: string | Array;\n\n /**\n * @member - assetReferenceType\n * @type {string }\n */\n assetReferenceType: string;\n\n /**\n * @constructor\n */\n constructor() {\n this.metadata = new Map();\n this.sources = new MediaSources();\n this.type = MediaEntry.Type.UNKNOWN;\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaEntryObject} - The json class object.\n */\n toJSON(): ProviderMediaEntryObject {\n return {\n id: this.id,\n name: this.name,\n sources: this.sources.toJSON(),\n duration: this.duration,\n dvrStatus: this.dvrStatus,\n metadata: this.metadata,\n type: this.type,\n poster: this.poster,\n assetReferenceType: this.assetReferenceType\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-entry.js","//@flow\nexport default class ServiceResult {\n /**\n * @member - Is service returned an error\n * @type {boolean}\n */\n hasError: boolean = false;\n /**\n * @member - The service error\n * @type {ServiceError}\n */\n error: ServiceError;\n /**\n * @member - The service result data\n * @type {Object}\n */\n data: Object;\n\n /**\n * @constructor\n * @param {Object} response - Service response\n */\n constructor(response: Object) {\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n }\n}\n\nclass ServiceError {\n /**\n * @member - The error code\n * @type {string}\n */\n code: string;\n /**\n * @member - The error message\n * @type {string}\n */\n message: string;\n\n /**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n constructor(code: string, message: string) {\n this.code = code;\n this.message = message;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-service-result.js","//@flow\nimport * as JsLogger from 'js-logger';\n\nexport type LogLevelObject = {value: number, name: string};\nexport type LogLevelType = {[level: string]: LogLevelObject};\n\nconst LogLevel: LogLevelType = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\nJsLogger.useDefaults({defaultLevel: JsLogger.ERROR});\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name?: string): Object {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name?: string): LogLevelObject {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level: LogLevelObject, name?: string): void {\n getLogger(name).setLevel(level);\n}\n\nexport default getLogger;\nexport {LogLevel, getLogLevel, setLogLevel};\n\n\n\n// WEBPACK FOOTER //\n// ./util/logger.js","//@flow\nexport const MediaFormat: {[name: string]: ProviderMediaFormatType} = {\n DASH: {\n name: 'dash',\n mimeType: 'application/dash+xml',\n pathExt: 'mpd'\n },\n HLS: {\n name: 'hls',\n mimeType: 'application/x-mpegURL',\n pathExt: 'm3u8'\n },\n WVM: {\n name: 'wvm',\n mimeType: 'video/wvm',\n pathExt: 'wvm'\n },\n MP4: {\n name: 'mp4',\n mimeType: 'video/mp4',\n pathExt: 'mp4'\n },\n MP3: {\n name: 'mp3',\n mimeType: 'audio/mpeg',\n pathExt: 'mp3'\n }\n};\n\nexport const SupportedStreamFormat: Map = new Map([\n ['mpegdash', MediaFormat.DASH],\n ['applehttp', MediaFormat.HLS],\n ['url', MediaFormat.MP4]\n]);\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-format.js","//@flow\nimport Drm from './drm';\n\nexport default class MediaSource {\n /**\n * @member - media source id\n * @type {string}\n */\n id: string;\n /**\n * @member - media source url\n * @type {string}\n */\n url: string;\n /**\n * @member - media source mimetype\n * @type {string}\n */\n mimetype: string;\n /**\n * @member - media source drm data\n * @type {Array}\n */\n drmData: Array;\n /**\n * @member - media source bandwidth\n * @type {number}\n */\n bandwidth: number;\n /**\n * @member - media source width\n * @type {number}\n */\n width: number;\n /**\n * @member - media source height\n * @type {number}\n */\n height: number;\n /**\n * @member - media source label\n * @type {string}\n */\n label: string;\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourceObject} - The json class object.\n */\n toJSON(): ProviderMediaSourceObject {\n const response: ProviderMediaSourceObject = {\n id: this.id,\n url: this.url,\n mimetype: this.mimetype\n };\n if (this.bandwidth) response.bandwidth = this.bandwidth;\n if (this.width) response.width = this.width;\n if (this.height) response.height = this.height;\n if (this.label) response.label = this.label;\n if (this.drmData && this.drmData.length > 0) {\n response.drmData = [];\n this.drmData.forEach(d => {\n if (Array.isArray(response.drmData)) {\n response.drmData.push(d.toJSON());\n }\n });\n }\n return response;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-source.js","// @flow\nimport MediaSource from './media-source';\nimport {MediaFormat} from './media-format';\n\nexport default class MediaSources {\n /**\n * Progressive download media sources container.\n * @type {Array}\n * @public\n */\n progressive: Array;\n /**\n * Dash media sources container.\n * @type {Array}\n * @public\n */\n dash: Array;\n /**\n * Hls media sources container.\n * @type {Array}\n * @public\n */\n hls: Array;\n\n /**\n * @constructor\n */\n constructor() {\n this.progressive = [];\n this.dash = [];\n this.hls = [];\n }\n\n /**\n * Maps the source to one of the containers according to his media format.\n * @param {MediaSource} source - The source to add to one of the containers.\n * @param {MediaFormat} mediaFormat - The media format of the source.\n * @returns {void}\n */\n map(source: MediaSource, mediaFormat: ?ProviderMediaFormatType) {\n if (mediaFormat) {\n switch (mediaFormat.name) {\n case MediaFormat.MP4.name:\n this.progressive.push(source);\n break;\n case MediaFormat.DASH.name:\n this.dash.push(source);\n break;\n case MediaFormat.HLS.name:\n this.hls.push(source);\n break;\n default:\n break;\n }\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourcesObject} - The json class object.\n */\n toJSON(): ProviderMediaSourcesObject {\n const response: ProviderMediaSourcesObject = {\n progressive: [],\n dash: [],\n hls: []\n };\n this.progressive.forEach(p => response.progressive.push(p.toJSON()));\n this.hls.forEach(h => response.hls.push(h.toJSON()));\n this.dash.forEach(d => response.dash.push(d.toJSON()));\n return response;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-sources.js","//@flow\nexport default class Drm {\n /**\n * @member - license url\n * @type {string}\n */\n licenseUrl: string;\n /**\n * @member - drm scheme\n * @type {string}\n */\n scheme: string;\n\n /**\n * @member - drm certificate\n * @type {string}\n */\n certificate: string;\n\n /**\n * @constructor\n * @param {string} licenseUrl - the license url\n * @param {string} scheme - the drm scheme\n * @param {?string} certificate - the drm certificate\n */\n constructor(licenseUrl: string, scheme: string, certificate: ?string) {\n this.licenseUrl = licenseUrl;\n this.scheme = scheme;\n if (certificate) {\n this.certificate = certificate;\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderDrmDataObject} - The json class object.\n */\n toJSON(): ProviderDrmDataObject {\n const response: ProviderDrmDataObject = {\n licenseUrl: this.licenseUrl,\n scheme: this.scheme\n };\n if (this.certificate) response.certificate = this.certificate;\n return response;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/drm.js","// @flow\nimport MultiRequestBuilder, {MultiRequestResult} from './multi-request-builder';\n\nexport default class DataLoaderManager {\n /**\n * @member - Loaders response map index\n * @type {Map>}\n * @private\n * @static\n */\n static _loadersResponseMap: Map> = new Map();\n /**\n * @member - Loaders multi request\n * @type {MultiRequestBuilder}\n * @protected\n */\n _multiRequest: MultiRequestBuilder;\n /**\n * @member - Loaders multi response\n * @type {MultiRequestResult}\n * @private\n */\n _multiResponse: MultiRequestResult;\n /**\n * @member - Loaders to execute\n * @type {Map}\n * @private\n */\n _loaders: Map = new Map();\n\n /**\n * Add loader too execution loaders map\n * @function\n * @param {Function} loader Loader to add\n * @param {Object} params Loader params\n * @returns {void}\n */\n add(loader: Function, params: Object): void {\n let execution_loader = new loader(params);\n if (execution_loader.isValid()) {\n this._loaders.set(loader.id, execution_loader);\n // Get the start index from the multiReqeust before adding current execution_loader requests\n let startIndex = this._multiRequest.requests.length;\n // Get the requests\n let requests = execution_loader.requests;\n // Add requests to muktiRequest queue\n requests.forEach(request => {\n this._multiRequest.add(request);\n });\n // Create range array of current execution_loader requests\n let executionLoaderResponseMap = Array.from(new Array(requests.length), (val, index) => index + startIndex);\n // Add to map\n DataLoaderManager._loadersResponseMap.set(loader.id, executionLoaderResponseMap);\n }\n }\n\n /**\n * Get data from all loaders using multi request\n * @function\n * @returns {Promise} Promise\n */\n fetchData(): Promise {\n return new Promise((resolve, reject) => {\n this._multiRequest.execute().then(\n response => {\n this._multiResponse = response;\n if (!response.success) {\n reject(response);\n } else {\n let preparedData: Object = this.prepareData(response);\n if (preparedData.success) {\n resolve(this._loaders);\n } else {\n reject({success: false, data: preparedData.error});\n }\n }\n },\n err => {\n reject(err);\n }\n );\n });\n }\n\n /**\n * Prepare fetched data\n * @function\n * @param {MultiRequestResult} response - The multi request result\n * @returns {Object} - The prepared data\n */\n prepareData(response: MultiRequestResult): Object {\n this._loaders.forEach(function(loader, name) {\n let loaderDataIndexes = DataLoaderManager._loadersResponseMap.get(name);\n try {\n if (loaderDataIndexes && loaderDataIndexes.length > 0) {\n loader.response = response.results.slice(loaderDataIndexes[0], loaderDataIndexes[loaderDataIndexes.length - 1] + 1);\n }\n } catch (err) {\n return {success: false, error: err};\n }\n });\n return {success: true, data: this._loaders};\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/data-loader-manager.js","//@flow\nimport RequestBuilder from '../../util/request-builder';\nimport getLogger from '../../util/logger';\nimport ServiceResult from './base-service-result';\n\nexport default class MultiRequestBuilder extends RequestBuilder {\n static _logger = getLogger('MultiRequestBuilder');\n /**\n * @member - Array of requests\n * @type {Array}\n */\n requests: Array = [];\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n add(request: RequestBuilder): MultiRequestBuilder {\n this.requests.push(request);\n const requestParams = {};\n const serviceDef: Object = {service: request.service, action: request.action};\n Object.assign(requestParams, {[this.requests.length]: Object.assign(serviceDef, request.params)});\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n execute(): Promise {\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error(`${err.message}`);\n }\n return new Promise((resolve, reject) => {\n this.doHttpRequest().then(\n data => {\n resolve(new MultiRequestResult(data));\n },\n err => {\n const errorText: string = `Error on multiRequest execution, error <${err}>.`;\n reject(errorText);\n }\n );\n });\n }\n}\n\nexport class MultiRequestResult {\n static _logger = getLogger('MultiRequestResult');\n /**\n * @member - Is success\n * @type {boolean}\n */\n success: boolean;\n /**\n * @member - Multi request response data\n * @type {Object}\n */\n results: Array = [];\n\n /**\n * @constructor\n * @param {Object} response data\n */\n constructor(response: Object) {\n this.success = true;\n const responseArr = response.result ? response.result : response;\n responseArr.forEach(result => {\n const serviceResult: ServiceResult = new ServiceResult(result);\n this.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error(\n `Service returned an error with error code: ${serviceResult.error.code} and message: ${serviceResult.error.message}.`\n );\n this.success = false;\n return;\n }\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/multi-request-builder.js","//@flow\nexport default class KalturaDrmPlaybackPluginData {\n static Scheme: {[scheme: string]: string} = {\n 'drm.PLAYREADY_CENC': 'com.microsoft.playready',\n 'drm.WIDEVINE_CENC': 'com.widevine.alpha',\n 'fairplay.FAIRPLAY': 'com.apple.fairplay',\n WIDEVINE_CENC: 'com.widevine.alpha',\n PLAYREADY_CENC: 'com.microsoft.playready',\n FAIRPLAY: 'com.apple.fairplay'\n };\n\n /**\n * @member - The drm scheme\n * @type {string}\n */\n scheme: string;\n\n /**\n * @member - The license URL\n * @type {string}\n */\n licenseURL: string;\n\n /**\n * @member - The drm certificate\n * @type {?string}\n */\n certificate: ?string;\n\n /**\n * @constructor\n * @param {Object} drm The json response\n */\n constructor(drm: any) {\n this.scheme = drm.scheme;\n this.licenseURL = drm.licenseURL;\n this.certificate = drm.certificate;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/response-types/kaltura-drm-playback-plugin-data.js","//@flow\nimport ServiceResult from '../../common/base-service-result';\n\nexport default class KalturaAsset extends ServiceResult {\n static Type: {[type: string]: string} = {\n MEDIA: 'media',\n RECORDING: 'recording',\n EPG: 'epg'\n };\n\n static AssetReferenceType: {[type: string]: string} = {\n MEDIA: 'media',\n EPG_INTERNAL: 'epg_internal',\n EPG_EXTERNAL: 'epg_external'\n };\n /**\n * @member - The asset id\n * @type {number}\n */\n id: number;\n /**\n * @member - The asset name\n * @type {string}\n */\n name: string = '';\n /**\n * @member - The asset name description\n * @type {string}\n */\n description: string = '';\n /**\n * @member - The asset tags\n * @type {Array}\n */\n tags: Array = [];\n /**\n * @member - The asset metas\n * @type {Array}\n */\n metas: Array = [];\n /**\n * @member - The asset images\n * @type {Array}\n */\n pictures: Array = [];\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n constructor(response: Object) {\n super(response);\n if (!this.hasError) {\n this.id = response.id;\n this.name = response.name;\n this.description = response.description;\n this.metas = this._formatTagsMetas(response.metas);\n this.tags = this._formatTagsMetas(response.tags);\n this.pictures = response.images;\n }\n }\n\n _formatTagsMetas(objectToParse: any): Array {\n const parsed = [];\n Object.keys(objectToParse).forEach(function(key) {\n if (objectToParse[key].objects) {\n let value = '';\n objectToParse[key].objects.forEach(function(object) {\n value += object.value + '|';\n });\n parsed.push({key: key, value: value});\n } else {\n parsed.push({key: key, value: objectToParse[key].value});\n }\n });\n return parsed;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/response-types/kaltura-asset.js","//@flow\nimport ServiceResult from '../../common/base-service-result';\nimport KalturaAccessControlMessage from '../../common/response-types/kaltura-access-control-message';\nimport KalturaRuleAction from '../../common/response-types/kaltura-rule-action';\nimport KalturaPlaybackSource from './kaltura-playback-source';\n\nexport default class KalturaPlaybackContext extends ServiceResult {\n static Type: {[type: string]: string} = {\n TRAILER: 'TRAILER',\n CATCHUP: 'CATCHUP',\n START_OVER: 'START_OVER',\n PLAYBACK: 'PLAYBACK'\n };\n /**\n * @member - The playback sources\n * @type {Array}\n */\n sources: Array = [];\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n actions: Array = [];\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n messages: Array = [];\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n constructor(response: Object) {\n super(response);\n if (!this.hasError) {\n const messages = response.messages;\n if (messages) {\n messages.map(message => this.messages.push(new KalturaAccessControlMessage(message)));\n }\n const actions = response.actions;\n if (actions) {\n actions.map(action => this.actions.push(new KalturaRuleAction(action)));\n }\n const sources = response.sources;\n if (sources) {\n sources.map(source => this.sources.push(new KalturaPlaybackSource(source)));\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/response-types/kaltura-playback-context.js","//@flow\nimport {clone} from '../../util/clone';\n\nconst defaultConfig: Object = {\n serviceParams: {\n apiVersion: '4.7.1'\n }\n};\n\nexport default class OTTConfiguration {\n static set(clientConfig?: ProviderEnvConfigObject) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n static get(): Object {\n return clone(defaultConfig);\n }\n}\n\nexport {OTTConfiguration};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/config.js","// @flow\nimport {SupportedStreamFormat} from '../../entities/media-format';\nimport MediaEntry from '../../entities/media-entry';\nimport MediaSources from '../../entities/media-sources';\nimport MediaSource from '../../entities/media-source';\nimport type {OTTKalturaPlaybackSource} from '../ott/response-types/kaltura-playback-source';\nimport type {OVPKalturaPlaybackSource} from '../ovp/response-types/kaltura-playback-source';\n\nexport default class BaseProviderParser {\n // eslint-disable-next-line no-unused-vars\n static getMediaEntry(...parms): MediaEntry {\n throw new TypeError(`getMediaEntry method must be implement by the derived class`);\n }\n\n // eslint-disable-next-line no-unused-vars\n static _getParsedSources(...parms): MediaSources {\n throw new TypeError(`_getParsedSources method must be implement by the derived class`);\n }\n\n // eslint-disable-next-line no-unused-vars\n static _parseAdaptiveSource(...parms): MediaSource {\n throw new TypeError(`_parseAdaptiveSource method must be implement by the derived class`);\n }\n\n static _isProgressiveSource(source: OVPKalturaPlaybackSource | OTTKalturaPlaybackSource): boolean {\n const sourceFormat = SupportedStreamFormat.get(source.format);\n return !!sourceFormat && sourceFormat.name === 'mp4';\n }\n\n static hasBlockActions(assetResponse: any): any {\n if (assetResponse && assetResponse.playBackContextResult) {\n const playbackContext = assetResponse.playBackContextResult;\n for (let actionIndex = 0; actionIndex < playbackContext.actions.length; actionIndex++) {\n if (playbackContext.actions[actionIndex].type === 'BLOCK') {\n return playbackContext.actions[actionIndex];\n }\n }\n }\n return null;\n }\n\n static hasErrorMessage(assetResponse: any): any {\n const messages = assetResponse.playBackContextResult.messages;\n for (let messagesIndex = 0; messagesIndex < messages.length; messagesIndex++) {\n if (messages[messagesIndex].code !== 'OK') {\n return messages[messagesIndex];\n }\n }\n return null;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-provider-parser.js","// @flow\nimport {setLogLevel, getLogLevel, LogLevel} from '../../util/logger';\nimport DataLoaderManager from './data-loader-manager';\n\nexport default class BaseProvider {\n _partnerId: number;\n _ks: string;\n _uiConfId: ?number;\n _dataLoader: DataLoaderManager;\n _playerVersion: string;\n _logger: any;\n _isAnonymous: boolean;\n\n get partnerId(): number {\n return this._partnerId;\n }\n\n get uiConfId(): ?number {\n return this._uiConfId;\n }\n\n get ks(): string {\n return this._ks;\n }\n\n set ks(value: string): void {\n this._ks = value;\n }\n\n get playerVersion(): string {\n return this._playerVersion;\n }\n\n get isAnonymous(): boolean {\n return this._isAnonymous;\n }\n\n constructor(options: ProviderOptionsObject, playerVersion: string) {\n this._partnerId = options.partnerId;\n this._uiConfId = options.uiConfId;\n this._isAnonymous = !options.ks;\n this._ks = options.ks || '';\n this._playerVersion = playerVersion;\n if (options.logLevel && this.LogLevel[options.logLevel]) {\n setLogLevel(this.LogLevel[options.logLevel]);\n }\n }\n\n // eslint-disable-next-line no-unused-vars\n getMediaConfig(mediaInfo: MI): Promise {\n throw new TypeError(`getMediaConfig method must be implement by the derived class`);\n }\n\n // eslint-disable-next-line no-unused-vars\n _parseDataFromResponse(data: Map, ...params: any): ProviderMediaConfigObject {\n throw new TypeError(`_parseDataFromResponse method must be implement by the derived class`);\n }\n\n get LogLevel(): {[level: string]: Object} {\n return LogLevel;\n }\n\n getLogLevel(name?: string): Object {\n return getLogLevel(name);\n }\n\n setLogLevel(level: Object, name?: string): void {\n setLogLevel(level, name);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-provider.js","//@flow\nexport default class KalturaAccessControlMessage {\n /**\n * @member - The access control message\n * @type {string}\n */\n message: string;\n /**\n * @member - The access control message code\n * @@type {string}\n */\n code: string;\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: Object) {\n this.message = data.message;\n this.code = data.code;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/response-types/kaltura-access-control-message.js","//@flow\nexport default class KalturaRuleAction {\n static Type: {[type: string]: string | number} = {\n DRM_POLICY: 'drm.DRM_POLICY',\n BLOCK: 1,\n PREVIEW: 2,\n LIMIT_FLAVORS: 3,\n ADD_TO_STORAGE: 4,\n LIMIT_DELIVERY_PROFILES: 5,\n SERVE_FROM_REMOTE_SERVER: 6,\n REQUEST_HOST_REGEX: 7,\n LIMIT_THUMBNAIL_CAPTURE: 8\n };\n\n /**\n * @member - The type of the action\n * @type {string|number}\n */\n type: string | number;\n\n /**\n * @constructor\n * @param {Object} data - The response\n */\n constructor(data: Object) {\n this.type = data.type;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/response-types/kaltura-rule-action.js","//@flow\nimport MultiRequestBuilder from '../../common/multi-request-builder';\nimport OTTConfiguration from '../config';\n\nconst SERVICE_NAME: string = 'multirequest';\n\nexport default class OTTService {\n /**\n * Gets a new instance of MultiRequestBuilder with ott params\n * @function getMultiRequest\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n static getMultiRequest(ks: string, partnerId?: number): MultiRequestBuilder {\n const config = OTTConfiguration.get();\n const ottParams = config.serviceParams;\n if (ks) {\n Object.assign(ottParams, {ks: ks});\n }\n if (partnerId) {\n Object.assign(ottParams, {partnerId: partnerId});\n }\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const multiReq = new MultiRequestBuilder(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ottParams;\n return multiReq;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/services/ott-service.js","const clone = data => {\n let node;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach((e, i) => {\n if ((typeof e === 'object' && e !== {}) || (Array.isArray(e) && e.length > 0)) {\n node[i] = clone(e);\n }\n });\n } else if (typeof data === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(key => {\n if ((typeof node[key] === 'object' && node[key] !== {}) || (Array.isArray(node[key]) && node[key].length > 0)) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexport {clone};\n\n\n\n// WEBPACK FOOTER //\n// ./util/clone.js","/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine(Logger);\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/js-logger/src/logger.js\n// module id = 23\n// module chunks = 0 1","//@flow\nimport KalturaDrmPlaybackPluginData from '../../common/response-types/kaltura-drm-playback-plugin-data';\n\nexport type OTTKalturaPlaybackSource = KalturaPlaybackSource;\n\nexport default class KalturaPlaybackSource {\n format: string;\n protocols: string;\n drm: Array = [];\n adsPolicy: string;\n adsParam: string;\n duration: number;\n url: string;\n type: string;\n fileId: number;\n\n /**\n * @constructor\n * @param {Object} source The response\n */\n constructor(source: Object) {\n this.format = source.format;\n this.adsPolicy = source.adsPolicy;\n this.adsParam = source.adsParam;\n this.duration = source.duration;\n this.url = source.url;\n this.type = source.type;\n this.fileId = source.id;\n this.protocols = source.protocols;\n if (source.drm) {\n source.drm.map(drm => this.drm.push(new KalturaDrmPlaybackPluginData(drm)));\n }\n }\n\n /**\n * Checks if source has DRM data\n * @function hasDrmData\n * @returns {boolean} Is source has DRM\n */\n hasDrmData(): boolean {\n return this.drm && this.drm.length > 0;\n }\n\n /**\n * Returns source desired protocol if supported\n * @param {string} protocol - the desired protocol for the source (base play url protocol)\n * @returns {string} - protocol if protocol is in the protocols list - if not empty string returned\n */\n getProtocol(protocol: string): string {\n let returnValue: string = '';\n if (this.protocols && this.protocols.length > 0) {\n let protocolsArr: Array = this.protocols.split(',');\n protocolsArr.forEach(p => {\n if (p === protocol) {\n returnValue = p;\n }\n });\n } else if (protocol === 'http') {\n return protocol;\n }\n return returnValue;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/response-types/kaltura-playback-source.js","// @flow\nimport BaseProvider from '../common/base-provider';\nimport getLogger from '../../util/logger';\nimport OTTConfiguration from './config';\nimport OTTDataLoaderManager from './loaders/data-loader-manager';\nimport OTTSessionLoader from './loaders/session-loader';\nimport OTTAssetLoader from './loaders/asset-loader';\nimport OTTProviderParser from './provider-parser';\nimport KalturaAsset from './response-types/kaltura-asset';\nimport KalturaPlaybackContext from './response-types/kaltura-playback-context';\nimport MediaEntry from '../../entities/media-entry';\n\nexport default class OTTProvider extends BaseProvider {\n /**\n * @constructor\n * @param {ProviderOptionsObject} options - provider options\n * @param {string} playerVersion - player version\n */\n constructor(options: ProviderOptionsObject, playerVersion: string) {\n super(options, playerVersion);\n this._logger = getLogger('OTTProvider');\n OTTConfiguration.set(options.env);\n }\n\n /**\n * Gets the backend media config.\n * @param {OTTProviderMediaInfoObject} mediaInfo - ott media info\n * @returns {Promise} - The provider media config\n */\n getMediaConfig(mediaInfo: OTTProviderMediaInfoObject): Promise {\n if (mediaInfo.ks) {\n this.ks = mediaInfo.ks;\n }\n this._dataLoader = new OTTDataLoaderManager(this.partnerId, this.ks);\n return new Promise((resolve, reject) => {\n const entryId = mediaInfo.entryId;\n if (entryId) {\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OTTSessionLoader, {partnerId: this.partnerId});\n }\n const contextType = mediaInfo.contextType || KalturaPlaybackContext.Type.PLAYBACK;\n const mediaType = mediaInfo.mediaType || KalturaAsset.Type.MEDIA;\n const assetReferenceType = mediaInfo.assetReferenceType || KalturaAsset.AssetReferenceType.MEDIA;\n const playbackContext = {\n mediaProtocol: mediaInfo.protocol,\n assetFileIds: mediaInfo.fileIds,\n context: contextType\n };\n this._dataLoader.add(OTTAssetLoader, {\n entryId: entryId,\n ks: ks,\n type: mediaType,\n playbackContext: playbackContext,\n assetReferenceType: assetReferenceType\n });\n const requestData = {\n contextType: contextType,\n mediaType: mediaType,\n formats: mediaInfo.formats || []\n };\n this._dataLoader.fetchData().then(\n response => {\n try {\n resolve(this._parseDataFromResponse(response, requestData));\n } catch (err) {\n reject({success: false, data: err});\n }\n },\n err => {\n reject(err);\n }\n );\n } else {\n reject({success: false, data: 'Missing mandatory parameter'});\n }\n });\n }\n\n _parseDataFromResponse(data: Map, requestData: Object): ProviderMediaConfigObject {\n this._logger.debug('Data parsing started');\n const mediaConfig: ProviderMediaConfigObject = {\n session: {\n isAnonymous: this._isAnonymous,\n partnerId: this.partnerId\n },\n sources: {\n hls: [],\n dash: [],\n progressive: [],\n id: '',\n duration: 0,\n type: MediaEntry.Type.UNKNOWN,\n poster: '',\n dvr: false,\n vr: null,\n metadata: {\n name: '',\n description: ''\n }\n },\n plugins: {}\n };\n if (this.uiConfId) {\n mediaConfig.session.uiConfId = this.uiConfId;\n }\n if (data) {\n if (data.has(OTTSessionLoader.id)) {\n const sessionLoader = data.get(OTTSessionLoader.id);\n if (sessionLoader && sessionLoader.response) {\n this.ks = sessionLoader.response;\n mediaConfig.session.ks = this.ks;\n }\n } else {\n mediaConfig.session.ks = this.ks;\n }\n if (data.has(OTTAssetLoader.id)) {\n const assetLoader = data.get(OTTAssetLoader.id);\n if (assetLoader && assetLoader.response && Object.keys(assetLoader.response).length) {\n const blockedAction = OTTProviderParser.hasBlockActions(assetLoader.response);\n if (blockedAction) {\n const errorMessage = OTTProviderParser.hasErrorMessage(assetLoader.response);\n if (errorMessage) {\n this._logger.error(`Asset is blocked, error message: `, errorMessage);\n throw errorMessage;\n } else {\n this._logger.error(`Asset is blocked, action: `, blockedAction);\n throw blockedAction;\n }\n }\n const mediaEntry = OTTProviderParser.getMediaEntry(assetLoader.response, requestData);\n const mediaSources = mediaEntry.sources.toJSON();\n mediaConfig.sources.hls = mediaSources.hls;\n mediaConfig.sources.dash = mediaSources.dash;\n mediaConfig.sources.progressive = mediaSources.progressive;\n mediaConfig.sources.id = mediaEntry.id;\n mediaConfig.sources.duration = mediaEntry.duration;\n mediaConfig.sources.type = mediaEntry.type;\n mediaConfig.sources.dvr = !!mediaEntry.dvrStatus;\n mediaConfig.sources.poster = mediaEntry.poster;\n if (\n mediaEntry.metadata &&\n mediaEntry.metadata.metas &&\n typeof mediaEntry.metadata.metas.tags === 'string' &&\n mediaEntry.metadata.metas.tags.indexOf('360') > -1\n ) {\n mediaConfig.sources.vr = {};\n }\n Object.assign(mediaConfig.sources.metadata, mediaEntry.metadata);\n }\n }\n }\n this._logger.debug('Data parsing finished', mediaConfig);\n return mediaConfig;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/provider.js","// @flow\nimport OTTProvider from './provider';\nimport KalturaPlaybackContext from './response-types/kaltura-playback-context';\nimport KalturaAsset from './response-types/kaltura-asset';\n\ndeclare var __VERSION__: string;\ndeclare var __NAME__: string;\n\nconst NAME = __NAME__ + '-ott';\nconst VERSION = __VERSION__;\n\nconst ContextType = KalturaPlaybackContext.Type;\nconst MediaType = KalturaAsset.Type;\n\nexport {OTTProvider as Provider, ContextType, MediaType, NAME, VERSION};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/index.js","//@flow\nimport OTTAssetService from '../services/asset-service';\nimport OTTConfiguration from '../config';\nimport RequestBuilder from '../../../util/request-builder';\nimport KalturaPlaybackContext from '../response-types/kaltura-playback-context';\nimport KalturaAsset from '../response-types/kaltura-asset';\n\nexport default class OTTAssetLoader implements ILoader {\n _entryId: string;\n _requests: Array;\n _response: any = {};\n\n static get id(): string {\n return 'asset';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._entryId = params.entryId;\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n this._response.mediaDataResult = new KalturaAsset(response[0].data);\n this._response.playBackContextResult = new KalturaPlaybackContext(response[1].data);\n }\n\n get response(): any {\n return this._response;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n const config = OTTConfiguration.get();\n const requests: Array = [];\n requests.push(OTTAssetService.get(config.serviceUrl, params.ks, params.entryId, params.assetReferenceType));\n requests.push(OTTAssetService.getPlaybackContext(config.serviceUrl, params.ks, params.entryId, params.type, params.playbackContext));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._entryId;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/loaders/asset-loader.js","// @flow\nimport DataLoaderManager from '../../common/data-loader-manager';\nimport OTTService from '../services/ott-service';\n\nexport default class OTTDataLoaderManager extends DataLoaderManager {\n /**\n * @constructor\n * @param {string} partnerId - partner id\n * @param {string} ks - ks\n */\n constructor(partnerId: number, ks: string = '') {\n super();\n this._multiRequest = OTTService.getMultiRequest(ks, partnerId);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/loaders/data-loader-manager.js","//@flow\nimport UserService from '../services/user-service';\nimport OTTConfiguration from '../config';\nimport RequestBuilder from '../../../util/request-builder';\n\nexport default class OTTSessionLoader implements ILoader {\n _partnerId: number;\n _requests: Array;\n _response: any = {};\n\n static get id(): string {\n return 'session';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._partnerId = params.partnerId;\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n this._response.ks = response[0].data.ks;\n }\n\n get response(): any {\n return this._response.ks;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n const config = OTTConfiguration.get();\n const requests: Array = [];\n requests.push(UserService.anonymousLogin(config.serviceUrl, params.partnerId, params.udid));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._partnerId;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/loaders/session-loader.js","//@flow\nimport getLogger from '../../util/logger';\nimport KalturaPlaybackSource from './response-types/kaltura-playback-source';\nimport KalturaPlaybackContext from './response-types/kaltura-playback-context';\nimport KalturaAsset from './response-types/kaltura-asset';\nimport MediaEntry from '../../entities/media-entry';\nimport Drm from '../../entities/drm';\nimport MediaSource from '../../entities/media-source';\nimport MediaSources from '../../entities/media-sources';\nimport {SupportedStreamFormat} from '../../entities/media-format';\nimport KalturaDrmPlaybackPluginData from '../common/response-types/kaltura-drm-playback-plugin-data';\nimport BaseProviderParser from '../common/base-provider-parser';\n\nconst LIVE_ASST_OBJECT_TYPE: string = 'KalturaLiveAsset';\n\nconst MediaTypeCombinations: {[mediaType: string]: Object} = {\n [KalturaAsset.Type.MEDIA]: {\n [KalturaPlaybackContext.Type.TRAILER]: () => ({type: MediaEntry.Type.VOD}),\n [KalturaPlaybackContext.Type.PLAYBACK]: mediaAssetData => {\n if (parseInt(mediaAssetData.externalIds) > 0 || mediaAssetData.objectType === LIVE_ASST_OBJECT_TYPE) {\n return {type: MediaEntry.Type.LIVE, dvrStatus: 0};\n }\n return {type: MediaEntry.Type.VOD};\n }\n },\n [KalturaAsset.Type.EPG]: {\n [KalturaPlaybackContext.Type.CATCHUP]: () => ({type: MediaEntry.Type.VOD}),\n [KalturaPlaybackContext.Type.START_OVER]: () => ({type: MediaEntry.Type.LIVE, dvrStatus: 1})\n },\n [KalturaAsset.Type.RECORDING]: {\n [KalturaPlaybackContext.Type.PLAYBACK]: () => ({type: MediaEntry.Type.VOD})\n }\n};\n\nexport default class OTTProviderParser extends BaseProviderParser {\n static _logger = getLogger('OTTProviderParser');\n\n /**\n * Returns parsed media entry by given OTT response objects.\n * @function getMediaEntry\n * @param {any} assetResponse - The asset response.\n * @param {Object} requestData - The request data object.\n * @returns {MediaEntry} - The media entry\n * @static\n * @public\n */\n static getMediaEntry(assetResponse: any, requestData: Object): MediaEntry {\n const mediaEntry = new MediaEntry();\n const playbackContext = assetResponse.playBackContextResult;\n const mediaAsset = assetResponse.mediaDataResult;\n const kalturaSources = playbackContext.sources;\n const metaData = OTTProviderParser.reconstructMetadata(mediaAsset);\n metaData.description = mediaAsset.description;\n metaData.name = mediaAsset.name;\n mediaEntry.metadata = metaData;\n mediaEntry.poster = OTTProviderParser._getPoster(mediaAsset.pictures);\n mediaEntry.id = mediaAsset.id;\n const filteredKalturaSources = OTTProviderParser._filterSourcesByFormats(kalturaSources, requestData.formats);\n mediaEntry.sources = OTTProviderParser._getParsedSources(filteredKalturaSources);\n const typeData = OTTProviderParser._getMediaType(mediaAsset.data, requestData.mediaType, requestData.contextType);\n mediaEntry.type = typeData.type;\n mediaEntry.dvrStatus = typeData.dvrStatus;\n mediaEntry.duration = Math.max.apply(Math, kalturaSources.map(source => source.duration));\n return mediaEntry;\n }\n\n /**\n * reconstruct the metadata\n * @param {Object} mediaAsset the mediaAsset that contains the response with the metadata.\n * @returns {Object} reconstructed metadata object\n */\n static reconstructMetadata(mediaAsset: Object): Object {\n const metadata = {\n metas: OTTProviderParser.addToMetaObject(mediaAsset.metas),\n tags: OTTProviderParser.addToMetaObject(mediaAsset.tags)\n };\n return metadata;\n }\n\n /**\n * transform an array of [{key: value},{key: value}...] to an object\n * @param {Array} list a list of objects\n * @returns {Object} an mapped object of the arrayed list.\n */\n static addToMetaObject(list: Array): Object {\n let categoryObj = {};\n if (list) {\n list.forEach(item => {\n categoryObj[item.key] = item.value;\n });\n }\n return categoryObj;\n }\n\n /**\n * Gets the poster url without width and height.\n * @param {Array} pictures - Media pictures.\n * @returns {string | Array} - Poster base url or array of poster candidates.\n * @private\n */\n static _getPoster(pictures: Array): string | Array {\n if (pictures && pictures.length > 0) {\n const picObj = pictures[0];\n const url = picObj.url;\n // Search for thumbnail service\n const regex = /.*\\/thumbnail\\/.*(?:width|height)\\/\\d+\\/(?:height|width)\\/\\d+/;\n if (regex.test(url)) {\n return url;\n }\n return pictures.map(pic => ({url: pic.url, width: pic.width, height: pic.height}));\n }\n return '';\n }\n\n /**\n * Gets the media type (LIVE/VOD)\n * @param {Object} mediaAssetData - The media asset data.\n * @param {string} mediaType - The asset media type.\n * @param {string} contextType - The asset context type.\n * @returns {Object} - The type data object.\n * @private\n */\n static _getMediaType(mediaAssetData: Object, mediaType: string, contextType: string): Object {\n let typeData = {type: MediaEntry.Type.UNKNOWN};\n if (MediaTypeCombinations[mediaType] && MediaTypeCombinations[mediaType][contextType]) {\n typeData = MediaTypeCombinations[mediaType][contextType](mediaAssetData);\n }\n return typeData;\n }\n\n /**\n * Filtered the kalturaSources array by device type.\n * @param {Array} kalturaSources - The kaltura sources.\n * @param {Array} formats - Partner device formats.\n * @returns {Array} - Filtered kalturaSources array.\n * @private\n */\n static _filterSourcesByFormats(kalturaSources: Array, formats: Array): Array {\n if (formats.length > 0) {\n kalturaSources = kalturaSources.filter(source => formats.includes(source.type));\n }\n return kalturaSources;\n }\n\n /**\n * Returns the parsed sources\n * @function _getParsedSources\n * @param {Array} kalturaSources - The kaltura sources\n * @param {Object} playbackContext - The playback context\n * @return {MediaSources} - A media sources\n * @static\n * @private\n */\n static _getParsedSources(kalturaSources: Array): MediaSources {\n const sources = new MediaSources();\n const addAdaptiveSource = (source: KalturaPlaybackSource) => {\n const parsedSource = OTTProviderParser._parseAdaptiveSource(source);\n const sourceFormat = SupportedStreamFormat.get(source.format);\n sources.map(parsedSource, sourceFormat);\n };\n const parseAdaptiveSources = () => {\n kalturaSources.filter(source => !OTTProviderParser._isProgressiveSource(source)).forEach(addAdaptiveSource);\n };\n const parseProgressiveSources = () => {\n kalturaSources.filter(source => OTTProviderParser._isProgressiveSource(source)).forEach(addAdaptiveSource);\n };\n if (kalturaSources && kalturaSources.length > 0) {\n parseAdaptiveSources();\n parseProgressiveSources();\n }\n return sources;\n }\n\n /**\n * Returns a parsed adaptive source\n * @function _parseAdaptiveSource\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @returns {MediaSource} - The parsed adaptive kalturaSource\n * @static\n * @private\n */\n static _parseAdaptiveSource(kalturaSource: ?KalturaPlaybackSource): MediaSource {\n const mediaSource = new MediaSource();\n if (kalturaSource) {\n const playUrl = kalturaSource.url;\n const mediaFormat = SupportedStreamFormat.get(kalturaSource.format);\n if (mediaFormat) {\n mediaSource.mimetype = mediaFormat.mimeType;\n }\n if (playUrl === '') {\n OTTProviderParser._logger.error(\n `failed to create play url from source, discarding source: (${kalturaSource.fileId}), ${kalturaSource.format}.`\n );\n return mediaSource;\n }\n mediaSource.url = playUrl;\n mediaSource.id = kalturaSource.fileId + ',' + kalturaSource.format;\n if (kalturaSource.hasDrmData()) {\n const drmParams: Array = [];\n kalturaSource.drm.forEach(drm => {\n drmParams.push(new Drm(drm.licenseURL, KalturaDrmPlaybackPluginData.Scheme[drm.scheme], drm.certificate));\n });\n mediaSource.drmData = drmParams;\n }\n }\n return mediaSource;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/provider-parser.js","//@flow\nimport OTTService from './ott-service';\nimport RequestBuilder from '../../../util/request-builder';\n\nconst SERVICE_NAME: string = 'asset';\n\nexport default class OTTAssetService extends OTTService {\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The partner ID\n * @param {string} assetId The asset ID\n * @param {string} type The asset type (media/recording/epg)\n * @param {ProviderPlaybackContextOptions} playbackContextOptions The playbackContextOptions\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static getPlaybackContext(\n serviceUrl: string,\n ks: string,\n assetId: string,\n type: string,\n playbackContextOptions: ProviderPlaybackContextOptions\n ): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'getPlaybackContext';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n const contextDataParams: Object = {objectType: 'KalturaPlaybackContextOptions'};\n Object.assign(contextDataParams, playbackContextOptions);\n request.params = {assetId: assetId, assetType: type, contextDataParams: contextDataParams, ks: ks};\n return request;\n }\n\n static get(serviceUrl: string, ks: string, assetId: string, assetReferenceType: string): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'get';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.params = {id: assetId, assetReferenceType: assetReferenceType, ks: ks};\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/services/asset-service.js","//@flow\nimport OTTService from './ott-service';\nimport RequestBuilder from '../../../util/request-builder';\n\nconst SERVICE_NAME: string = 'ottuser';\n\nexport default class OTTUserService extends OTTService {\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} partnerId The partner ID\n * @param {string} udid The udid\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static anonymousLogin(serviceUrl: string, partnerId: number, udid?: string): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'anonymousLogin';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n const params: Object = {partnerId: partnerId};\n if (udid) {\n Object.assign(params, {udid: udid});\n }\n request.params = params;\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ott/services/user-service.js"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/playkit-ovp-provider.js b/dist/playkit-ovp-provider.js index 1eaf5294..319ab459 100644 --- a/dist/playkit-ovp-provider.js +++ b/dist/playkit-ovp-provider.js @@ -3,5 +3,5 @@ * Jonny Reeves, http://jonnyreeves.co.uk/ * js-logger may be freely distributed under the MIT license. */ -!function(a){"use strict";var i={};i.VERSION="1.4.1";var s,u={},l=function(e,t){return function(){return t.apply(e,arguments)}},c=function(){var e,t,n=arguments,r=n[0];for(t=1;t=t.value},debug:function(){this.invoke(i.DEBUG,arguments)},info:function(){this.invoke(i.INFO,arguments)},warn:function(){this.invoke(i.WARN,arguments)},error:function(){this.invoke(i.ERROR,arguments)},time:function(e){"string"==typeof e&&e.length>0&&this.invoke(i.TIME,[e,"start"])},timeEnd:function(e){"string"==typeof e&&e.length>0&&this.invoke(i.TIME,[e,"end"])},invoke:function(e,t){s&&this.enabledFor(e)&&s(t,c({level:e},this.context))}};var p=new d({filterLevel:i.OFF});!function(){var e=i;e.enabledFor=l(p,p.enabledFor),e.debug=l(p,p.debug),e.time=l(p,p.time),e.timeEnd=l(p,p.timeEnd),e.info=l(p,p.info),e.warn=l(p,p.warn),e.error=l(p,p.error),e.log=e.info}(),i.setHandler=function(e){s=e},i.setLevel=function(e){p.setLevel(e);for(var t in u)u.hasOwnProperty(t)&&u[t].setLevel(e)},i.getLevel=function(){return p.getLevel()},i.get=function(e){return u[e]||(u[e]=new d(c({name:e},p.context)))},i.createDefaultHandler=function(e){e=e||{},e.formatter=e.formatter||function(e,t){t.name&&e.unshift("["+t.name+"]")};var t={},n=function(e,t){Function.prototype.apply.call(e,console,t)};return"undefined"==typeof console?function(){}:function(r,o){r=Array.prototype.slice.call(r);var a,s=console.log;o.level===i.TIME?(a=(o.name?"["+o.name+"] ":"")+r[0],"start"===r[1]?console.time?console.time(a):t[a]=(new Date).getTime():console.timeEnd?console.timeEnd(a):n(s,[a+": "+((new Date).getTime()-t[a])+"ms"])):(o.level===i.WARN&&console.warn?s=console.warn:o.level===i.ERROR&&console.error?s=console.error:o.level===i.INFO&&console.info?s=console.info:o.level===i.DEBUG&&console.debug&&(s=console.debug),e.formatter(r,o),n(s,r))}},i.useDefaults=function(e){i.setLevel(e&&e.defaultLevel||i.DEBUG),i.setHandler(i.createDefaultHandler(e))},r=i,void 0!==(o="function"==typeof r?r.call(t,n,t,e):r)&&(e.exports=o)}()},,function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r(this,e),this.type=t.type||e.Type.INCLUDE_FIELDS,this.fields=t.fields||"id,name,description,thumbnailUrl,dataUrl,duration,msDuration,flavorParamsIds,mediaType,type,tags,dvrStatus"};o.Type={INCLUDE_FIELDS:1,EXCLUDE_FIELDS:2},t.default=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=n(2),u=r(s),l=n(21),c=r(l),f=function(e){function t(e){o(this,t);var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.hasError||(n.totalCount=e.totalCount,n.totalCount>0&&(n.entries=[],e.objects.map(function(e){return n.entries.push(new c.default(e))}))),n}return i(t,e),t}(u.default);t.default=f},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function e(t){r(this,e),this.id=t.id,this.flavorParamsId=t.flavorParamsId,this.fileExt=t.fileExt,this.bitrate=t.bitrate,this.width=t.width,this.height=t.height,this.id=t.id,this.frameRate=t.frameRate,this.isOriginal=t.isOriginal,this.isWeb=t.isWeb,this.containerFormat=t.containerFormat,this.videoCodecId=t.videoCodecId,this.status=t.status,this.language=t.language,this.label=t.label};o.Status={ERROR:-1,QUEUED:0,CONVERTING:1,READY:2,DELETED:3,NOT_APPLICABLE:4,TEMP:5,WAIT_FOR_CONVERT:6,IMPORTING:7,VALIDATING:8,EXPORTING:9},t.default=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=n(2),u=r(s),l=n(51),c=r(l),f=function(e){function t(e){o(this,t);var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.hasError||(n.totalCount=e.totalCount,n.totalCount>0&&(n.metas=[],e.objects.map(function(e){return n.metas.push(new c.default(e))}))),n}return i(t,e),t}(u.default);t.default=f},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n0}},{key:"hasFlavorIds",value:function(){return!!this.flavorIds&&this.flavorIds.length>0}},{key:"getProtocol",value:function(e){var t="";if(this.protocols&&this.protocols.length>0){this.protocols.split(",").forEach(function(n){n===e&&(t=n)})}else if("http"===e)return e;return t}}]),e}();t.default=s},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n-1&&(t.vr={}),Object.assign(t.metadata,e.metadata),t}}]),t}(w.default);t.default=j},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),a=(function(e){e&&e.__esModule}(o),function e(){r(this,e),this.items=[]});t.default=a},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),a=(function(e){e&&e.__esModule}(o),function e(){r(this,e),this.items=[]});t.default=a},,,,,,,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=t.NAME=t.Provider=void 0;var r=n(32),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.Provider=o.default,t.NAME="playkit-js-providers-ovp",t.VERSION="2.9.0"},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=n(9),u=r(s),l=n(12),c=r(l),f=function(e){function t(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";o(this,t);var i=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return i._multiRequest=c.default.getMultiRequest(e,r,n),i}return i(t,e),t}(u.default);t.default=f},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n0&&(function(){e.filter(function(e){return!t._isProgressiveSource(e)}).forEach(u)}(),function(){var u=e.find(t._isProgressiveSource);s.progressive=t._parseProgressiveSources(u,i.flavorAssets,n,r,o,a.id)}()),s}},{key:"_parseAdaptiveSource",value:function(e,n,r,o,a,i){var s=new j.default;if(e){var u="",l=C.SupportedStreamFormat.get(e.format),c="";if(l&&(c=l.pathExt,s.mimetype=l.mimeType),e.hasFlavorIds()?(!c&&n&&n.length>0&&(c=n[0].fileExt),u=v.default.build({entryId:i,flavorIds:e.flavorIds,format:e.format,ks:r,partnerId:o,uiConfId:a,extension:c,protocol:e.getProtocol(this._getBaseProtocol())})):u=e.url,""===u)return t._logger.error("failed to create play url from source, discarding source: ("+i+"_"+e.deliveryProfileId+"), "+e.format+"."),s;if(s.url=u,s.id=i+"_"+e.deliveryProfileId+","+e.format,e.hasDrmData()){var f=[];e.drm.forEach(function(e){f.push(new k.default(e.licenseURL,h.default.Scheme[e.scheme],e.certificate))}),s.drmData=f}}return s}},{key:"_parseProgressiveSources",value:function(e,t,n,r,o,a){var i=[],s=[];if(e){var u=e.getProtocol(this._getBaseProtocol()),l=e.format,c=e.deliveryProfileId+","+e.format;t.map(function(e){var t=new j.default;t.id=e.id+c,t.mimetype="mp3"===e.fileExt?"audio/mp3":"video/mp4",t.height=e.height,t.width=e.width,t.bandwidth=1024*e.bitrate,t.label=e.label||e.language,t.url=v.default.build({entryId:a,flavorIds:e.id,format:l,ks:n,partnerId:r,uiConfId:o,extension:e.fileExt,protocol:u}),e.height&&e.width?i.push(t):s.push(t)})}return s.length&&!i.length?s:i}},{key:"_parseMetadata",value:function(e){var t={};return e&&e.metas&&e.metas.length>0&&e.metas.forEach(function(e){var n=void 0,r=new DOMParser;e.xml=e.xml.replace(/\r?\n|\r/g,""),e.xml=e.xml.replace(/>\s*/g,">"),e.xml=e.xml.replace(/>\s*/g,">"),n=r.parseFromString(e.xml,"text/xml");var o=_.default.xmlToJson(n);Object.keys(o.metadata).forEach(function(e){t[e]=o.metadata[e]["#text"]})}),t}},{key:"_getBaseProtocol",value:function(){var e=O.default.get(),t=/^https?:/,n=t.exec(e.cdnUrl),r=n?n[0]:document.location.protocol;return"string"==typeof r?r.slice(0,-1):"https"}}]),t}(S.default);F._logger=(0,g.default)("OVPProviderParser"),t.default=F},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=n(2),u=r(s),l=n(21),c=r(l),f=function(e){function t(e){o(this,t);var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.hasError||(n.entries=[],e.map(function(e){return n.entries.push(new c.default(e))})),n}return i(t,e),t}(u.default);t.default=f},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function e(t){r(this,e),this.id=t.id,this.metadataProfileId=t.metadataProfileId,this.metadataProfileVersion=t.metadataProfileVersion,this.metadataProfileId=t.metadataProfileId,this.metadataObjectType=t.metadataObjectType,this.objectId=t.objectId,this.version=t.version,this.created=new Date(0),this.created.setUTCSeconds(t.createdAt),this.updated=new Date(0),this.updated.setUTCSeconds(t.updatedAt),this.status=t.status,this.xml=t.xml};o.ObjectType={AD_CUE_POINT:"adCuePointMetadata.AdCuePoint",ANNOTATION:"annotationMetadata.Annotation",CODE_CUE_POINT:"codeCuePointMetadata.CodeCuePoint",THUMB_CUE_POINT:"thumbCuePointMetadata.thumbCuePoint",ENTRY:1,CATEGORY:2,USER:3,PARTNER:4,DYNAMIC_OBJECT:5},o.Status={VALID:1,INVALID:2,DELETED:3},t.default=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=n(2),u=r(s),l=n(18),c=r(l),f=n(29),d=r(f),p=n(19),h=r(p),y=n(27),v=r(y),m=function(e){function t(e){o(this,t);var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));if(n.sources=[],n.actions=[],n.messages=[],n.flavorAssets=[],!n.hasError){var r=e.messages;r&&r.map(function(e){return n.messages.push(new c.default(e))});var i=e.actions;i&&i.map(function(e){return n.actions.push(new h.default(e))});var s=e.sources;s&&s.map(function(e){return n.sources.push(new d.default(e))});var u=e.flavorAssets;u&&u.map(function(e){return n.flavorAssets.push(new v.default(e))})}return n}return i(t,e),t}(u.default);t.default=m},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function e(t){r(this,e),this.id=t.id,this.name=t.name,this.description=t.description,this.poster=t.thumbnailUrl};t.default=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0){t["@attributes"]={};for(var n=0;n=t.value},debug:function(){this.invoke(i.DEBUG,arguments)},info:function(){this.invoke(i.INFO,arguments)},warn:function(){this.invoke(i.WARN,arguments)},error:function(){this.invoke(i.ERROR,arguments)},time:function(e){"string"==typeof e&&e.length>0&&this.invoke(i.TIME,[e,"start"])},timeEnd:function(e){"string"==typeof e&&e.length>0&&this.invoke(i.TIME,[e,"end"])},invoke:function(e,t){s&&this.enabledFor(e)&&s(t,c({level:e},this.context))}};var p=new d({filterLevel:i.OFF});!function(){var e=i;e.enabledFor=l(p,p.enabledFor),e.debug=l(p,p.debug),e.time=l(p,p.time),e.timeEnd=l(p,p.timeEnd),e.info=l(p,p.info),e.warn=l(p,p.warn),e.error=l(p,p.error),e.log=e.info}(),i.setHandler=function(e){s=e},i.setLevel=function(e){p.setLevel(e);for(var t in u)u.hasOwnProperty(t)&&u[t].setLevel(e)},i.getLevel=function(){return p.getLevel()},i.get=function(e){return u[e]||(u[e]=new d(c({name:e},p.context)))},i.createDefaultHandler=function(e){e=e||{},e.formatter=e.formatter||function(e,t){t.name&&e.unshift("["+t.name+"]")};var t={},n=function(e,t){Function.prototype.apply.call(e,console,t)};return"undefined"==typeof console?function(){}:function(r,o){r=Array.prototype.slice.call(r);var a,s=console.log;o.level===i.TIME?(a=(o.name?"["+o.name+"] ":"")+r[0],"start"===r[1]?console.time?console.time(a):t[a]=(new Date).getTime():console.timeEnd?console.timeEnd(a):n(s,[a+": "+((new Date).getTime()-t[a])+"ms"])):(o.level===i.WARN&&console.warn?s=console.warn:o.level===i.ERROR&&console.error?s=console.error:o.level===i.INFO&&console.info?s=console.info:o.level===i.DEBUG&&console.debug&&(s=console.debug),e.formatter(r,o),n(s,r))}},i.useDefaults=function(e){i.setLevel(e&&e.defaultLevel||i.DEBUG),i.setHandler(i.createDefaultHandler(e))},r=i,void 0!==(o="function"==typeof r?r.call(t,n,t,e):r)&&(e.exports=o)}()},,function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r(this,e),this.type=t.type||e.Type.INCLUDE_FIELDS,this.fields=t.fields||"id,name,description,thumbnailUrl,dataUrl,duration,msDuration,flavorParamsIds,mediaType,type,tags,dvrStatus"};o.Type={INCLUDE_FIELDS:1,EXCLUDE_FIELDS:2},t.default=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=n(2),u=r(s),l=n(21),c=r(l),f=function(e){function t(e){o(this,t);var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.hasError||(n.totalCount=e.totalCount,n.totalCount>0&&(n.entries=[],e.objects.map(function(e){return n.entries.push(new c.default(e))}))),n}return i(t,e),t}(u.default);t.default=f},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function e(t){r(this,e),this.id=t.id,this.flavorParamsId=t.flavorParamsId,this.fileExt=t.fileExt,this.bitrate=t.bitrate,this.width=t.width,this.height=t.height,this.id=t.id,this.frameRate=t.frameRate,this.isOriginal=t.isOriginal,this.isWeb=t.isWeb,this.containerFormat=t.containerFormat,this.videoCodecId=t.videoCodecId,this.status=t.status,this.language=t.language,this.label=t.label};o.Status={ERROR:-1,QUEUED:0,CONVERTING:1,READY:2,DELETED:3,NOT_APPLICABLE:4,TEMP:5,WAIT_FOR_CONVERT:6,IMPORTING:7,VALIDATING:8,EXPORTING:9},t.default=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=n(2),u=r(s),l=n(51),c=r(l),f=function(e){function t(e){o(this,t);var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.hasError||(n.totalCount=e.totalCount,n.totalCount>0&&(n.metas=[],e.objects.map(function(e){return n.metas.push(new c.default(e))}))),n}return i(t,e),t}(u.default);t.default=f},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n0}},{key:"hasFlavorIds",value:function(){return!!this.flavorIds&&this.flavorIds.length>0}},{key:"getProtocol",value:function(e){var t="";if(this.protocols&&this.protocols.length>0){this.protocols.split(",").forEach(function(n){n===e&&(t=n)})}else if("http"===e)return e;return t}}]),e}();t.default=s},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n-1&&(t.vr={}),Object.assign(t.metadata,e.metadata),t}}]),t}(w.default);t.default=j},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),a=(function(e){e&&e.__esModule}(o),function e(){r(this,e),this.items=[]});t.default=a},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),a=(function(e){e&&e.__esModule}(o),function e(){r(this,e),this.items=[]});t.default=a},,,,,,,,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=t.NAME=t.Provider=void 0;var r=n(32),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.Provider=o.default,t.NAME="playkit-js-providers-ovp",t.VERSION="2.8.0"},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=n(9),u=r(s),l=n(12),c=r(l),f=function(e){function t(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";o(this,t);var i=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return i._multiRequest=c.default.getMultiRequest(e,r,n),i}return i(t,e),t}(u.default);t.default=f},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n0&&(function(){e.filter(function(e){return!t._isProgressiveSource(e)}).forEach(u)}(),function(){var u=e.find(t._isProgressiveSource);s.progressive=t._parseProgressiveSources(u,i.flavorAssets,n,r,o,a.id)}()),s}},{key:"_parseAdaptiveSource",value:function(e,n,r,o,a,i){var s=new j.default;if(e){var u="",l=C.SupportedStreamFormat.get(e.format),c="";if(l&&(c=l.pathExt,s.mimetype=l.mimeType),e.hasFlavorIds()?(!c&&n&&n.length>0&&(c=n[0].fileExt),u=v.default.build({entryId:i,flavorIds:e.flavorIds,format:e.format,ks:r,partnerId:o,uiConfId:a,extension:c,protocol:e.getProtocol(this._getBaseProtocol())})):u=e.url,""===u)return t._logger.error("failed to create play url from source, discarding source: ("+i+"_"+e.deliveryProfileId+"), "+e.format+"."),s;if(s.url=u,s.id=i+"_"+e.deliveryProfileId+","+e.format,e.hasDrmData()){var f=[];e.drm.forEach(function(e){f.push(new I.default(e.licenseURL,h.default.Scheme[e.scheme],e.certificate))}),s.drmData=f}}return s}},{key:"_parseProgressiveSources",value:function(e,t,n,r,o,a){var i=[],s=[];if(e){var u=e.getProtocol(this._getBaseProtocol()),l=e.format,c=e.deliveryProfileId+","+e.format;t.map(function(e){var t=new j.default;t.id=e.id+c,t.mimetype="mp3"===e.fileExt?"audio/mp3":"video/mp4",t.height=e.height,t.width=e.width,t.bandwidth=1024*e.bitrate,t.label=e.label||e.language,t.url=v.default.build({entryId:a,flavorIds:e.id,format:l,ks:n,partnerId:r,uiConfId:o,extension:e.fileExt,protocol:u}),e.height&&e.width?i.push(t):s.push(t)})}return s.length&&!i.length?s:i}},{key:"_parseMetadata",value:function(e){var t={};return e&&e.metas&&e.metas.length>0&&e.metas.forEach(function(e){var n=void 0,r=new DOMParser;e.xml=e.xml.replace(/\r?\n|\r/g,""),e.xml=e.xml.replace(/>\s*/g,">"),e.xml=e.xml.replace(/>\s*/g,">"),n=r.parseFromString(e.xml,"text/xml");var o=b.default.xmlToJson(n);Object.keys(o.metadata).forEach(function(e){t[e]=o.metadata[e]["#text"]})}),t}},{key:"_getBaseProtocol",value:function(){var e=O.default.get(),t=/^https?:/,n=t.exec(e.cdnUrl),r=n?n[0]:document.location.protocol;return"string"==typeof r?r.slice(0,-1):"https"}}]),t}(S.default);U._logger=(0,g.default)("OVPProviderParser"),t.default=U},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=n(2),u=r(s),l=n(21),c=r(l),f=function(e){function t(e){o(this,t);var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.hasError||(n.entries=[],e.map(function(e){return n.entries.push(new c.default(e))})),n}return i(t,e),t}(u.default);t.default=f},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function e(t){r(this,e),this.id=t.id,this.metadataProfileId=t.metadataProfileId,this.metadataProfileVersion=t.metadataProfileVersion,this.metadataProfileId=t.metadataProfileId,this.metadataObjectType=t.metadataObjectType,this.objectId=t.objectId,this.version=t.version,this.created=new Date(0),this.created.setUTCSeconds(t.createdAt),this.updated=new Date(0),this.updated.setUTCSeconds(t.updatedAt),this.status=t.status,this.xml=t.xml};o.ObjectType={AD_CUE_POINT:"adCuePointMetadata.AdCuePoint",ANNOTATION:"annotationMetadata.Annotation",CODE_CUE_POINT:"codeCuePointMetadata.CodeCuePoint",THUMB_CUE_POINT:"thumbCuePointMetadata.thumbCuePoint",ENTRY:1,CATEGORY:2,USER:3,PARTNER:4,DYNAMIC_OBJECT:5},o.Status={VALID:1,INVALID:2,DELETED:3},t.default=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=n(2),u=r(s),l=n(18),c=r(l),f=n(29),d=r(f),p=n(19),h=r(p),y=n(27),v=r(y),m=function(e){function t(e){o(this,t);var n=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));if(n.sources=[],n.actions=[],n.messages=[],n.flavorAssets=[],!n.hasError){var r=e.messages;r&&r.map(function(e){return n.messages.push(new c.default(e))});var i=e.actions;i&&i.map(function(e){return n.actions.push(new h.default(e))});var s=e.sources;s&&s.map(function(e){return n.sources.push(new d.default(e))});var u=e.flavorAssets;u&&u.map(function(e){return n.flavorAssets.push(new v.default(e))})}return n}return i(t,e),t}(u.default);t.default=m},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function e(t){r(this,e),this.id=t.id,this.name=t.name,this.description=t.description,this.poster=t.thumbnailUrl};t.default=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0){t["@attributes"]={};for(var n=0;n} headers The request headers\n */\n\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n\n /**\n * @member - Service headers\n * @type {Map}\n */\n\n /**\n * @member - Service action\n * @type {string}\n */\n function RequestBuilder() {\n var headers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map();\n\n _classCallCheck(this, RequestBuilder);\n\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n\n /**\n * @member - Service tag\n * @type {string}\n */\n\n /**\n * @member - Service URL\n * @type {string}\n */\n\n /**\n * @member - Service params\n * @type {any}\n */\n\n /**\n * @member - Service name\n * @type {string}\n */\n\n\n _createClass(RequestBuilder, [{\n key: 'getUrl',\n value: function getUrl(serviceUrl) {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n\n }, {\n key: 'doHttpRequest',\n value: function doHttpRequest() {\n var _this = this;\n\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n var request = new XMLHttpRequest();\n return new Promise(function (resolve, reject) {\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n var jsonResponse = void 0;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(e.message + ', ' + request.responseText);\n }\n if (jsonResponse && (typeof jsonResponse === 'undefined' ? 'undefined' : _typeof(jsonResponse)) === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(_this.method, _this.url);\n _this.headers.forEach(function (value, key) {\n request.setRequestHeader(key, value);\n });\n request.send(_this.params);\n });\n }\n }]);\n\n return RequestBuilder;\n}();\n\nexports.default = RequestBuilder;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _mediaSources = __webpack_require__(7);\n\nvar _mediaSources2 = _interopRequireDefault(_mediaSources);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MediaEntry = function () {\n\n /**\n * @constructor\n */\n\n\n /**\n * @member - entry id\n * @type {string}\n */\n\n /**\n * @member - entry name\n * @type {string}\n */\n\n /**\n * @member - entry sources\n * @type {MediaSources}\n */\n\n /**\n * @member - entry duration\n * @type {number}\n */\n\n /**\n * @member - entry type\n * @type {string}\n */\n\n /**\n * @member - entry metadata\n * @type {Object}\n */\n\n /**\n * @member - DVR status\n * @type {number}\n */\n\n /**\n * @member - media poster\n * @type {string | Array}\n */\n\n\n /**\n * @member - assetReferenceType\n * @type {string }\n */\n function MediaEntry() {\n _classCallCheck(this, MediaEntry);\n\n this.metadata = new Map();\n this.sources = new _mediaSources2.default();\n this.type = MediaEntry.Type.UNKNOWN;\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaEntryObject} - The json class object.\n */\n\n\n _createClass(MediaEntry, [{\n key: 'toJSON',\n value: function toJSON() {\n return {\n id: this.id,\n name: this.name,\n sources: this.sources.toJSON(),\n duration: this.duration,\n dvrStatus: this.dvrStatus,\n metadata: this.metadata,\n type: this.type,\n poster: this.poster,\n assetReferenceType: this.assetReferenceType\n };\n }\n }]);\n\n return MediaEntry;\n}();\n\nMediaEntry.Type = {\n VOD: 'Vod',\n LIVE: 'Live',\n IMAGE: 'Image',\n AUDIO: 'Audio',\n UNKNOWN: 'Unknown'\n};\nexports.default = MediaEntry;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ServiceResult =\n\n/**\n * @constructor\n * @param {Object} response - Service response\n */\n\n/**\n * @member - The service error\n * @type {ServiceError}\n */\n\n/**\n * @member - The service result data\n * @type {Object}\n */\nfunction ServiceResult(response) {\n _classCallCheck(this, ServiceResult);\n\n this.hasError = false;\n\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n}\n/**\n * @member - Is service returned an error\n * @type {boolean}\n */\n;\n\nexports.default = ServiceResult;\n\nvar ServiceError =\n\n/**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n\n/**\n * @member - The error code\n * @type {string}\n */\nfunction ServiceError(code, message) {\n _classCallCheck(this, ServiceError);\n\n this.code = code;\n this.message = message;\n}\n/**\n * @member - The error message\n * @type {string}\n */\n;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setLogLevel = exports.getLogLevel = exports.LogLevel = undefined;\n\nvar _jsLogger = __webpack_require__(23);\n\nvar JsLogger = _interopRequireWildcard(_jsLogger);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar LogLevel = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\n\nJsLogger.useDefaults({ defaultLevel: JsLogger.ERROR });\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name) {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name) {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level, name) {\n getLogger(name).setLevel(level);\n}\n\nexports.default = getLogger;\nexports.LogLevel = LogLevel;\nexports.getLogLevel = getLogLevel;\nexports.setLogLevel = setLogLevel;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OVPConfiguration = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(22);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultConfig = {\n serviceUrl: 'https://cdnapisec.kaltura.com/api_v3',\n cdnUrl: '//cdnapisec.kaltura.com',\n serviceParams: {\n apiVersion: '3.3.0',\n format: 1\n }\n};\n\nvar OVPConfiguration = function () {\n function OVPConfiguration() {\n _classCallCheck(this, OVPConfiguration);\n }\n\n _createClass(OVPConfiguration, null, [{\n key: 'set',\n value: function set(clientConfig) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n }, {\n key: 'get',\n value: function get() {\n return (0, _clone.clone)(defaultConfig);\n }\n }]);\n\n return OVPConfiguration;\n}();\n\nexports.default = OVPConfiguration;\nexports.OVPConfiguration = OVPConfiguration;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar MediaFormat = exports.MediaFormat = {\n DASH: {\n name: 'dash',\n mimeType: 'application/dash+xml',\n pathExt: 'mpd'\n },\n HLS: {\n name: 'hls',\n mimeType: 'application/x-mpegURL',\n pathExt: 'm3u8'\n },\n WVM: {\n name: 'wvm',\n mimeType: 'video/wvm',\n pathExt: 'wvm'\n },\n MP4: {\n name: 'mp4',\n mimeType: 'video/mp4',\n pathExt: 'mp4'\n },\n MP3: {\n name: 'mp3',\n mimeType: 'audio/mpeg',\n pathExt: 'mp3'\n }\n};\n\nvar SupportedStreamFormat = exports.SupportedStreamFormat = new Map([['mpegdash', MediaFormat.DASH], ['applehttp', MediaFormat.HLS], ['url', MediaFormat.MP4]]);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _drm = __webpack_require__(8);\n\nvar _drm2 = _interopRequireDefault(_drm);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MediaSource = function () {\n function MediaSource() {\n _classCallCheck(this, MediaSource);\n }\n\n _createClass(MediaSource, [{\n key: 'toJSON',\n\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourceObject} - The json class object.\n */\n\n /**\n * @member - media source height\n * @type {number}\n */\n\n /**\n * @member - media source bandwidth\n * @type {number}\n */\n\n /**\n * @member - media source mimetype\n * @type {string}\n */\n\n /**\n * @member - media source id\n * @type {string}\n */\n value: function toJSON() {\n var response = {\n id: this.id,\n url: this.url,\n mimetype: this.mimetype\n };\n if (this.bandwidth) response.bandwidth = this.bandwidth;\n if (this.width) response.width = this.width;\n if (this.height) response.height = this.height;\n if (this.label) response.label = this.label;\n if (this.drmData && this.drmData.length > 0) {\n response.drmData = [];\n this.drmData.forEach(function (d) {\n if (Array.isArray(response.drmData)) {\n response.drmData.push(d.toJSON());\n }\n });\n }\n return response;\n }\n /**\n * @member - media source label\n * @type {string}\n */\n\n /**\n * @member - media source width\n * @type {number}\n */\n\n /**\n * @member - media source drm data\n * @type {Array}\n */\n\n /**\n * @member - media source url\n * @type {string}\n */\n\n }]);\n\n return MediaSource;\n}();\n\nexports.default = MediaSource;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _mediaSource = __webpack_require__(6);\n\nvar _mediaSource2 = _interopRequireDefault(_mediaSource);\n\nvar _mediaFormat = __webpack_require__(5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MediaSources = function () {\n\n /**\n * @constructor\n */\n\n /**\n * Dash media sources container.\n * @type {Array}\n * @public\n */\n function MediaSources() {\n _classCallCheck(this, MediaSources);\n\n this.progressive = [];\n this.dash = [];\n this.hls = [];\n }\n\n /**\n * Maps the source to one of the containers according to his media format.\n * @param {MediaSource} source - The source to add to one of the containers.\n * @param {MediaFormat} mediaFormat - The media format of the source.\n * @returns {void}\n */\n\n /**\n * Hls media sources container.\n * @type {Array}\n * @public\n */\n\n /**\n * Progressive download media sources container.\n * @type {Array}\n * @public\n */\n\n\n _createClass(MediaSources, [{\n key: 'map',\n value: function map(source, mediaFormat) {\n if (mediaFormat) {\n switch (mediaFormat.name) {\n case _mediaFormat.MediaFormat.MP4.name:\n this.progressive.push(source);\n break;\n case _mediaFormat.MediaFormat.DASH.name:\n this.dash.push(source);\n break;\n case _mediaFormat.MediaFormat.HLS.name:\n this.hls.push(source);\n break;\n default:\n break;\n }\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourcesObject} - The json class object.\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var response = {\n progressive: [],\n dash: [],\n hls: []\n };\n this.progressive.forEach(function (p) {\n return response.progressive.push(p.toJSON());\n });\n this.hls.forEach(function (h) {\n return response.hls.push(h.toJSON());\n });\n this.dash.forEach(function (d) {\n return response.dash.push(d.toJSON());\n });\n return response;\n }\n }]);\n\n return MediaSources;\n}();\n\nexports.default = MediaSources;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Drm = function () {\n\n /**\n * @constructor\n * @param {string} licenseUrl - the license url\n * @param {string} scheme - the drm scheme\n * @param {?string} certificate - the drm certificate\n */\n\n /**\n * @member - drm scheme\n * @type {string}\n */\n function Drm(licenseUrl, scheme, certificate) {\n _classCallCheck(this, Drm);\n\n this.licenseUrl = licenseUrl;\n this.scheme = scheme;\n if (certificate) {\n this.certificate = certificate;\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderDrmDataObject} - The json class object.\n */\n\n\n /**\n * @member - drm certificate\n * @type {string}\n */\n\n /**\n * @member - license url\n * @type {string}\n */\n\n\n _createClass(Drm, [{\n key: \"toJSON\",\n value: function toJSON() {\n var response = {\n licenseUrl: this.licenseUrl,\n scheme: this.scheme\n };\n if (this.certificate) response.certificate = this.certificate;\n return response;\n }\n }]);\n\n return Drm;\n}();\n\nexports.default = Drm;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _multiRequestBuilder = __webpack_require__(10);\n\nvar _multiRequestBuilder2 = _interopRequireDefault(_multiRequestBuilder);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DataLoaderManager = function () {\n function DataLoaderManager() {\n _classCallCheck(this, DataLoaderManager);\n\n this._loaders = new Map();\n }\n /**\n * @member - Loaders response map index\n * @type {Map>}\n * @private\n * @static\n */\n\n /**\n * @member - Loaders to execute\n * @type {Map}\n * @private\n */\n\n /**\n * @member - Loaders multi request\n * @type {MultiRequestBuilder}\n * @protected\n */\n\n /**\n * @member - Loaders multi response\n * @type {MultiRequestResult}\n * @private\n */\n\n\n _createClass(DataLoaderManager, [{\n key: 'add',\n\n\n /**\n * Add loader too execution loaders map\n * @function\n * @param {Function} loader Loader to add\n * @param {Object} params Loader params\n * @returns {void}\n */\n value: function add(loader, params) {\n var _this = this;\n\n var execution_loader = new loader(params);\n if (execution_loader.isValid()) {\n this._loaders.set(loader.id, execution_loader);\n // Get the start index from the multiReqeust before adding current execution_loader requests\n var startIndex = this._multiRequest.requests.length;\n // Get the requests\n var requests = execution_loader.requests;\n // Add requests to muktiRequest queue\n requests.forEach(function (request) {\n _this._multiRequest.add(request);\n });\n // Create range array of current execution_loader requests\n var executionLoaderResponseMap = Array.from(new Array(requests.length), function (val, index) {\n return index + startIndex;\n });\n // Add to map\n DataLoaderManager._loadersResponseMap.set(loader.id, executionLoaderResponseMap);\n }\n }\n\n /**\n * Get data from all loaders using multi request\n * @function\n * @returns {Promise} Promise\n */\n\n }, {\n key: 'fetchData',\n value: function fetchData() {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n _this2._multiRequest.execute().then(function (response) {\n _this2._multiResponse = response;\n if (!response.success) {\n reject(response);\n } else {\n var preparedData = _this2.prepareData(response);\n if (preparedData.success) {\n resolve(_this2._loaders);\n } else {\n reject({ success: false, data: preparedData.error });\n }\n }\n }, function (err) {\n reject(err);\n });\n });\n }\n\n /**\n * Prepare fetched data\n * @function\n * @param {MultiRequestResult} response - The multi request result\n * @returns {Object} - The prepared data\n */\n\n }, {\n key: 'prepareData',\n value: function prepareData(response) {\n this._loaders.forEach(function (loader, name) {\n var loaderDataIndexes = DataLoaderManager._loadersResponseMap.get(name);\n try {\n if (loaderDataIndexes && loaderDataIndexes.length > 0) {\n loader.response = response.results.slice(loaderDataIndexes[0], loaderDataIndexes[loaderDataIndexes.length - 1] + 1);\n }\n } catch (err) {\n return { success: false, error: err };\n }\n });\n return { success: true, data: this._loaders };\n }\n }]);\n\n return DataLoaderManager;\n}();\n\nDataLoaderManager._loadersResponseMap = new Map();\nexports.default = DataLoaderManager;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MultiRequestResult = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _logger = __webpack_require__(3);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MultiRequestBuilder = function (_RequestBuilder) {\n _inherits(MultiRequestBuilder, _RequestBuilder);\n\n function MultiRequestBuilder() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, MultiRequestBuilder);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = MultiRequestBuilder.__proto__ || Object.getPrototypeOf(MultiRequestBuilder)).call.apply(_ref, [this].concat(args))), _this), _this.requests = [], _temp), _possibleConstructorReturn(_this, _ret);\n }\n /**\n * @member - Array of requests\n * @type {Array}\n */\n\n\n _createClass(MultiRequestBuilder, [{\n key: 'add',\n\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n value: function add(request) {\n this.requests.push(request);\n var requestParams = {};\n var serviceDef = { service: request.service, action: request.action };\n Object.assign(requestParams, _defineProperty({}, this.requests.length, Object.assign(serviceDef, request.params)));\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n\n }, {\n key: 'execute',\n value: function execute() {\n var _this2 = this;\n\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error('' + err.message);\n }\n return new Promise(function (resolve, reject) {\n _this2.doHttpRequest().then(function (data) {\n resolve(new MultiRequestResult(data));\n }, function (err) {\n var errorText = 'Error on multiRequest execution, error <' + err + '>.';\n reject(errorText);\n });\n });\n }\n }]);\n\n return MultiRequestBuilder;\n}(_requestBuilder2.default);\n\nMultiRequestBuilder._logger = (0, _logger2.default)('MultiRequestBuilder');\nexports.default = MultiRequestBuilder;\n\nvar MultiRequestResult =\n\n/**\n * @constructor\n * @param {Object} response data\n */\nexports.MultiRequestResult = function MultiRequestResult(response) {\n var _this3 = this;\n\n _classCallCheck(this, MultiRequestResult);\n\n this.results = [];\n\n this.success = true;\n var responseArr = response.result ? response.result : response;\n responseArr.forEach(function (result) {\n var serviceResult = new _baseServiceResult2.default(result);\n _this3.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error('Service returned an error with error code: ' + serviceResult.error.code + ' and message: ' + serviceResult.error.message + '.');\n _this3.success = false;\n return;\n }\n });\n}\n/**\n * @member - Multi request response data\n * @type {Object}\n */\n\n/**\n * @member - Is success\n * @type {boolean}\n */\n;\n\nMultiRequestResult._logger = (0, _logger2.default)('MultiRequestResult');\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaDrmPlaybackPluginData =\n\n/**\n * @constructor\n * @param {Object} drm The json response\n */\n\n\n/**\n * @member - The drm scheme\n * @type {string}\n */\n\n\n/**\n * @member - The license URL\n * @type {string}\n */\n\n\n/**\n * @member - The drm certificate\n * @type {?string}\n */\nfunction KalturaDrmPlaybackPluginData(drm) {\n _classCallCheck(this, KalturaDrmPlaybackPluginData);\n\n this.scheme = drm.scheme;\n this.licenseURL = drm.licenseURL;\n this.certificate = drm.certificate;\n};\n\nKalturaDrmPlaybackPluginData.Scheme = {\n 'drm.PLAYREADY_CENC': 'com.microsoft.playready',\n 'drm.WIDEVINE_CENC': 'com.widevine.alpha',\n 'fairplay.FAIRPLAY': 'com.apple.fairplay',\n WIDEVINE_CENC: 'com.widevine.alpha',\n PLAYREADY_CENC: 'com.microsoft.playready',\n FAIRPLAY: 'com.apple.fairplay'\n};\nexports.default = KalturaDrmPlaybackPluginData;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _multiRequestBuilder = __webpack_require__(10);\n\nvar _multiRequestBuilder2 = _interopRequireDefault(_multiRequestBuilder);\n\nvar _config = __webpack_require__(4);\n\nvar _config2 = _interopRequireDefault(_config);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar SERVICE_NAME = 'multirequest';\n\nvar OVPService = function () {\n function OVPService() {\n _classCallCheck(this, OVPService);\n }\n\n _createClass(OVPService, null, [{\n key: 'getMultiRequest',\n\n /**\n * Gets a new instance of MultiRequestBuilder with ovp params\n * @function getMultiRequest\n * @param {string} playerVersion The player version\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n value: function getMultiRequest(playerVersion, ks, partnerId) {\n var config = _config2.default.get();\n var ovpParams = config.serviceParams;\n Object.assign(ovpParams, { ks: ks, clientTag: 'html5:v' + playerVersion });\n if (partnerId) {\n Object.assign(ovpParams, { partnerId: partnerId });\n }\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var multiReq = new _multiRequestBuilder2.default(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ovpParams;\n return multiReq;\n }\n }]);\n\n return OVPService;\n}();\n\nexports.default = OVPService;\n\n/***/ }),\n/* 13 */,\n/* 14 */,\n/* 15 */,\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _mediaFormat = __webpack_require__(5);\n\nvar _mediaEntry = __webpack_require__(1);\n\nvar _mediaEntry2 = _interopRequireDefault(_mediaEntry);\n\nvar _mediaSources = __webpack_require__(7);\n\nvar _mediaSources2 = _interopRequireDefault(_mediaSources);\n\nvar _mediaSource = __webpack_require__(6);\n\nvar _mediaSource2 = _interopRequireDefault(_mediaSource);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BaseProviderParser = function () {\n function BaseProviderParser() {\n _classCallCheck(this, BaseProviderParser);\n }\n\n _createClass(BaseProviderParser, null, [{\n key: 'getMediaEntry',\n\n // eslint-disable-next-line no-unused-vars\n value: function getMediaEntry() {\n throw new TypeError('getMediaEntry method must be implement by the derived class');\n }\n\n // eslint-disable-next-line no-unused-vars\n\n }, {\n key: '_getParsedSources',\n value: function _getParsedSources() {\n throw new TypeError('_getParsedSources method must be implement by the derived class');\n }\n\n // eslint-disable-next-line no-unused-vars\n\n }, {\n key: '_parseAdaptiveSource',\n value: function _parseAdaptiveSource() {\n throw new TypeError('_parseAdaptiveSource method must be implement by the derived class');\n }\n }, {\n key: '_isProgressiveSource',\n value: function _isProgressiveSource(source) {\n var sourceFormat = _mediaFormat.SupportedStreamFormat.get(source.format);\n return !!sourceFormat && sourceFormat.name === 'mp4';\n }\n }, {\n key: 'hasBlockActions',\n value: function hasBlockActions(assetResponse) {\n if (assetResponse && assetResponse.playBackContextResult) {\n var playbackContext = assetResponse.playBackContextResult;\n for (var actionIndex = 0; actionIndex < playbackContext.actions.length; actionIndex++) {\n if (playbackContext.actions[actionIndex].type === 'BLOCK') {\n return playbackContext.actions[actionIndex];\n }\n }\n }\n return null;\n }\n }, {\n key: 'hasErrorMessage',\n value: function hasErrorMessage(assetResponse) {\n var messages = assetResponse.playBackContextResult.messages;\n for (var messagesIndex = 0; messagesIndex < messages.length; messagesIndex++) {\n if (messages[messagesIndex].code !== 'OK') {\n return messages[messagesIndex];\n }\n }\n return null;\n }\n }]);\n\n return BaseProviderParser;\n}();\n\nexports.default = BaseProviderParser;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _logger = __webpack_require__(3);\n\nvar _dataLoaderManager = __webpack_require__(9);\n\nvar _dataLoaderManager2 = _interopRequireDefault(_dataLoaderManager);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BaseProvider = function () {\n _createClass(BaseProvider, [{\n key: 'partnerId',\n get: function get() {\n return this._partnerId;\n }\n }, {\n key: 'uiConfId',\n get: function get() {\n return this._uiConfId;\n }\n }, {\n key: 'ks',\n get: function get() {\n return this._ks;\n },\n set: function set(value) {\n this._ks = value;\n }\n }, {\n key: 'playerVersion',\n get: function get() {\n return this._playerVersion;\n }\n }, {\n key: 'isAnonymous',\n get: function get() {\n return this._isAnonymous;\n }\n }]);\n\n function BaseProvider(options, playerVersion) {\n _classCallCheck(this, BaseProvider);\n\n this._partnerId = options.partnerId;\n this._uiConfId = options.uiConfId;\n this._isAnonymous = !options.ks;\n this._ks = options.ks || '';\n this._playerVersion = playerVersion;\n if (options.logLevel && this.LogLevel[options.logLevel]) {\n (0, _logger.setLogLevel)(this.LogLevel[options.logLevel]);\n }\n }\n\n // eslint-disable-next-line no-unused-vars\n\n\n _createClass(BaseProvider, [{\n key: 'getMediaConfig',\n value: function getMediaConfig(mediaInfo) {\n throw new TypeError('getMediaConfig method must be implement by the derived class');\n }\n\n // eslint-disable-next-line no-unused-vars\n\n }, {\n key: '_parseDataFromResponse',\n value: function _parseDataFromResponse(data) {\n throw new TypeError('_parseDataFromResponse method must be implement by the derived class');\n }\n }, {\n key: 'getLogLevel',\n value: function getLogLevel(name) {\n return (0, _logger.getLogLevel)(name);\n }\n }, {\n key: 'setLogLevel',\n value: function setLogLevel(level, name) {\n (0, _logger.setLogLevel)(level, name);\n }\n }, {\n key: 'LogLevel',\n get: function get() {\n return _logger.LogLevel;\n }\n }]);\n\n return BaseProvider;\n}();\n\nexports.default = BaseProvider;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaAccessControlMessage =\n\n/**\n * @constructor\n * @param {Object} data The json response\n */\n\n/**\n * @member - The access control message\n * @type {string}\n */\nfunction KalturaAccessControlMessage(data) {\n _classCallCheck(this, KalturaAccessControlMessage);\n\n this.message = data.message;\n this.code = data.code;\n}\n/**\n * @member - The access control message code\n * @@type {string}\n */\n;\n\nexports.default = KalturaAccessControlMessage;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaRuleAction =\n\n/**\n * @constructor\n * @param {Object} data - The response\n */\n\n\n/**\n * @member - The type of the action\n * @type {string|number}\n */\nfunction KalturaRuleAction(data) {\n _classCallCheck(this, KalturaRuleAction);\n\n this.type = data.type;\n};\n\nKalturaRuleAction.Type = {\n DRM_POLICY: 'drm.DRM_POLICY',\n BLOCK: 1,\n PREVIEW: 2,\n LIMIT_FLAVORS: 3,\n ADD_TO_STORAGE: 4,\n LIMIT_DELIVERY_PROFILES: 5,\n SERVE_FROM_REMOTE_SERVER: 6,\n REQUEST_HOST_REGEX: 7,\n LIMIT_THUMBNAIL_CAPTURE: 8\n};\nexports.default = KalturaRuleAction;\n\n/***/ }),\n/* 20 */,\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaMediaEntry =\n\n/**\n * @constructor\n * @param {Object} entry The json response\n */\n\n\n/**\n * @member - The entry id\n * @type {string}\n */\n\n/**\n * @member - Entry name (Min 1 chars)\n * @type {string}\n */\n\n/**\n * @member - Entry description\n * @type {string}\n */\n\n/**\n * @member - The URL used for playback. This is not the download URL.\n * @type {string}\n */\n\n/**\n * @member - Comma separated flavor params ids that exists for this media entry\n * @type {string}\n */\n\n/**\n * @member - The entry duration\n * @type {number}\n */\n\n/**\n * @member - The type of the entry, this is auto filled by the derived entry object\n * @type {string | number}\n */\n\n/**\n * @member - The type of the entry, this is auto filled by the derived entry object (Image, Audio etc.)\n * @type {number}\n */\n\n/**\n * @member - Entry poster image\n * @type {string}\n */\n\n/**\n * @member - DVR status\n * @type {number}\n */\n\n/**\n * @member - Entry tags\n * @type {string}\n */\nfunction KalturaMediaEntry(entry) {\n _classCallCheck(this, KalturaMediaEntry);\n\n this.id = entry.id;\n this.name = entry.name;\n this.description = entry.description;\n this.dataUrl = entry.dataUrl;\n this.type = entry.type;\n this.entryType = entry.mediaType;\n this.flavorParamsIds = entry.flavorParamsIds;\n this.duration = entry.duration;\n this.poster = entry.thumbnailUrl;\n this.dvrStatus = entry.dvrStatus;\n this.tags = entry.tags;\n};\n\nKalturaMediaEntry.EntryType = {\n AUTOMATIC: { value: -1 },\n EXTERNAL_MEDIA: { value: 'externalMedia.externalMedia' },\n MEDIA_CLIP: { value: 1 },\n MIX: { value: 2 },\n PLAYLIST: { value: 5 },\n DATA: { value: 6 },\n LIVE_STREAM: { value: 7 },\n LIVE_CHANNEL: { value: 8 },\n DOCUMENT: { value: 10 }\n};\nKalturaMediaEntry.MediaType = {\n VIDEO: { value: 1 },\n IMAGE: { value: 2 },\n AUDIO: { value: 5 },\n LIVE_STREAM_FLASH: { value: 201 },\n LIVE_STREAM_WINDOWS_MEDIA: { value: 202 },\n LIVE_STREAM_REAL_MEDIA: { value: 203 },\n LIVE_STREAM_QUICK_TIME: { value: 204 }\n};\nKalturaMediaEntry.EntryStatus = {\n ERROR_IMPORTING: -2,\n ERROR_CONVERTING: -1,\n SCAN_FAILURE: 'virusScan.ScanFailure',\n IMPORT: 0,\n INFECTED: 'virusScan.Infected',\n PRECONVERT: 1,\n READY: 2,\n DELETED: 3,\n PENDING: 4,\n MODERATE: 5,\n BLOCKED: 6,\n NO_CONTENT: 7\n};\nKalturaMediaEntry.EntryModerationStatus = {\n PENDING_MODERATION: 1,\n APPROVED: 2,\n REJECTED: 3,\n FLAGGED_FOR_REVIEW: 4,\n MODERATE: 5,\n AUTO_APPROVED: 6\n};\nexports.default = KalturaMediaEntry;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar clone = function clone(data) {\n var node = void 0;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach(function (e, i) {\n if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object' && e !== {} || Array.isArray(e) && e.length > 0) {\n node[i] = clone(e);\n }\n });\n } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(function (key) {\n if (_typeof(node[key]) === 'object' && node[key] !== {} || Array.isArray(node[key]) && node[key].length > 0) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexports.clone = clone;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (true) {\r\n\t\t!(__WEBPACK_AMD_DEFINE_FACTORY__ = (Logger),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n/***/ }),\n/* 24 */,\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar FIELDS = 'id,name,description,thumbnailUrl,dataUrl,duration,msDuration,flavorParamsIds,mediaType,type,tags,dvrStatus';\n\nvar BaseEntryResponseProfile =\n\n/**\n * @constructor\n * @param {Object} responseProfile -\n */\n\n/**\n * @member - the response profile type\n * @type {number}\n */\n\n/**\n * @member - Comma separated fields list to be included or excluded\n * @type {string}\n */\nfunction BaseEntryResponseProfile() {\n var responseProfile = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, BaseEntryResponseProfile);\n\n this.type = responseProfile.type || BaseEntryResponseProfile.Type.INCLUDE_FIELDS;\n this.fields = responseProfile.fields || FIELDS;\n};\n\nBaseEntryResponseProfile.Type = {\n INCLUDE_FIELDS: 1,\n EXCLUDE_FIELDS: 2\n};\nexports.default = BaseEntryResponseProfile;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nvar _kalturaMediaEntry = __webpack_require__(21);\n\nvar _kalturaMediaEntry2 = _interopRequireDefault(_kalturaMediaEntry);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar KalturaBaseEntryListResponse = function (_ServiceResult) {\n _inherits(KalturaBaseEntryListResponse, _ServiceResult);\n\n /**\n * @constructor\n * @param {Object} responseObj The json response\n */\n\n /**\n * @member - The total count\n * @type {number}\n */\n function KalturaBaseEntryListResponse(responseObj) {\n _classCallCheck(this, KalturaBaseEntryListResponse);\n\n var _this = _possibleConstructorReturn(this, (KalturaBaseEntryListResponse.__proto__ || Object.getPrototypeOf(KalturaBaseEntryListResponse)).call(this, responseObj));\n\n if (!_this.hasError) {\n _this.totalCount = responseObj.totalCount;\n if (_this.totalCount > 0) {\n _this.entries = [];\n responseObj.objects.map(function (entry) {\n return _this.entries.push(new _kalturaMediaEntry2.default(entry));\n });\n }\n }\n return _this;\n }\n /**\n * @member - The entries\n * @type {Array}\n */\n\n\n return KalturaBaseEntryListResponse;\n}(_baseServiceResult2.default);\n\nexports.default = KalturaBaseEntryListResponse;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaFlavorAsset =\n\n/**\n * @constructor\n * @param {Object} data The json response\n */\n\n\n/**\n * @member - The ID of the Flavor Asset\n * @type {string}\n */\n\n/**\n * @member -The Flavor Params used to create this Flavor Asset\n * @type {string}\n */\n\n/**\n * @member -The file extension\n * @type {string}\n */\n\n/**\n * @member - The overall bitrate (in KBits) of the Flavor Asset\n * @type {string}\n */\n\n/**\n * @member - The width of the Flavor Asset\n * @type {number}\n */\n\n/**\n * @member - The height of the Flavor Asset\n * @type {number}\n */\n\n/**\n * @member - The frame rate (in FPS) of the Flavor Asset\n * @type {number}\n */\n\n/**\n * @member - True if this Flavor Asset is the original source\n * @type {number}\n */\n\n/**\n * @member - True if this Flavor Asset is playable in KDP\n * @type {boolean}\n */\n\n/**\n * @member - The container format\n * @type {boolean}\n */\n\n/**\n *@member - The video codec\n * @type {boolean}\n */\n\n/**\n * @member - The status of the Flavor Asset\n * @type {number}\n */\n\n/**\n * @member - The language of the flavor asset\n * @type {Status}\n */\n\n/**\n * @member - The label of the flavor asset\n * @type {string}\n */\nfunction KalturaFlavorAsset(data) {\n _classCallCheck(this, KalturaFlavorAsset);\n\n this.id = data.id;\n this.flavorParamsId = data.flavorParamsId;\n this.fileExt = data.fileExt;\n this.bitrate = data.bitrate;\n this.width = data.width;\n this.height = data.height;\n this.id = data.id;\n this.frameRate = data.frameRate;\n this.isOriginal = data.isOriginal;\n this.isWeb = data.isWeb;\n this.containerFormat = data.containerFormat;\n this.videoCodecId = data.videoCodecId;\n this.status = data.status;\n this.language = data.language;\n this.label = data.label;\n};\n\nKalturaFlavorAsset.Status = {\n ERROR: -1,\n QUEUED: 0,\n CONVERTING: 1,\n READY: 2,\n DELETED: 3,\n NOT_APPLICABLE: 4,\n TEMP: 5,\n WAIT_FOR_CONVERT: 6,\n IMPORTING: 7,\n VALIDATING: 8,\n EXPORTING: 9\n};\nexports.default = KalturaFlavorAsset;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nvar _kalturaMetadata = __webpack_require__(51);\n\nvar _kalturaMetadata2 = _interopRequireDefault(_kalturaMetadata);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar KalturaMetadataListResponse = function (_ServiceResult) {\n _inherits(KalturaMetadataListResponse, _ServiceResult);\n\n /**\n * @constructor\n * @param {Object} responseObj The response\n */\n function KalturaMetadataListResponse(responseObj) {\n _classCallCheck(this, KalturaMetadataListResponse);\n\n var _this = _possibleConstructorReturn(this, (KalturaMetadataListResponse.__proto__ || Object.getPrototypeOf(KalturaMetadataListResponse)).call(this, responseObj));\n\n if (!_this.hasError) {\n _this.totalCount = responseObj.totalCount;\n if (_this.totalCount > 0) {\n _this.metas = [];\n responseObj.objects.map(function (meta) {\n return _this.metas.push(new _kalturaMetadata2.default(meta));\n });\n }\n }\n return _this;\n }\n\n return KalturaMetadataListResponse;\n}(_baseServiceResult2.default);\n\nexports.default = KalturaMetadataListResponse;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _kalturaDrmPlaybackPluginData = __webpack_require__(11);\n\nvar _kalturaDrmPlaybackPluginData2 = _interopRequireDefault(_kalturaDrmPlaybackPluginData);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaPlaybackSource = function () {\n\n /**\n * @constructor\n * @param {Object} source The response\n */\n\n /**\n * @member - comma separated string of flavor ids\n * @type {string}\n */\n\n /**\n * @member - The source URL\n * @type {string}\n */\n\n /**\n * @member - source format according to delivery profile streamer type (applehttp, mpegdash etc.)\n * @type {string}\n */\n function KalturaPlaybackSource(source) {\n var _this = this;\n\n _classCallCheck(this, KalturaPlaybackSource);\n\n this.drm = [];\n\n this.format = source.format;\n this.deliveryProfileId = source.deliveryProfileId;\n this.url = source.url;\n this.protocols = source.protocols;\n this.flavorIds = source.flavorIds;\n if (source.drm) {\n source.drm.map(function (drm) {\n return _this.drm.push(new _kalturaDrmPlaybackPluginData2.default(drm));\n });\n }\n }\n\n /**\n * Checks if source has DRM data\n * @function hasDrmData\n * @returns {boolean} Is source has DRM\n */\n\n /**\n * @member - drm data object containing relevant license url ,scheme name and certificate\n * @type {Array}\n */\n\n /**\n * @member - comma separated string according to deliveryProfile media protocols ('http,https' etc.)\n * @type {string}\n */\n\n /**\n * @member - delivery profile Id\n * @type {string}\n */\n\n\n _createClass(KalturaPlaybackSource, [{\n key: 'hasDrmData',\n value: function hasDrmData() {\n return this.drm && this.drm.length > 0;\n }\n\n /**\n * Checks if source has flavor IDs\n * @function hasFlavorIds\n * @returns {boolean} Is source ha flavor IDs\n */\n\n }, {\n key: 'hasFlavorIds',\n value: function hasFlavorIds() {\n return !!this.flavorIds && this.flavorIds.length > 0;\n }\n\n /**\n * Returns source desired protocol if supported\n * @param {string} protocol - the desired protocol for the source (base play url protocol)\n * @returns {string} - protocol if protocol is in the protocols list - if not empty string returned\n */\n\n }, {\n key: 'getProtocol',\n value: function getProtocol(protocol) {\n var returnValue = '';\n if (this.protocols && this.protocols.length > 0) {\n var protocolsArr = this.protocols.split(',');\n protocolsArr.forEach(function (p) {\n if (p === protocol) {\n returnValue = p;\n }\n });\n } else if (protocol === 'http') {\n return protocol;\n }\n return returnValue;\n }\n }]);\n\n return KalturaPlaybackSource;\n}();\n\nexports.default = KalturaPlaybackSource;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ovpService = __webpack_require__(12);\n\nvar _ovpService2 = _interopRequireDefault(_ovpService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _baseEntryResponseProfile = __webpack_require__(25);\n\nvar _baseEntryResponseProfile2 = _interopRequireDefault(_baseEntryResponseProfile);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'baseEntry';\n\nvar OVPBaseEntryService = function (_OVPService) {\n _inherits(OVPBaseEntryService, _OVPService);\n\n function OVPBaseEntryService() {\n _classCallCheck(this, OVPBaseEntryService);\n\n return _possibleConstructorReturn(this, (OVPBaseEntryService.__proto__ || Object.getPrototypeOf(OVPBaseEntryService)).apply(this, arguments));\n }\n\n _createClass(OVPBaseEntryService, null, [{\n key: 'getPlaybackContext',\n\n /**\n * Creates an instance of RequestBuilder for baseentry.getPlaybackContext\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function getPlaybackContext(serviceUrl, ks, entryId) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'getPlaybackContext';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'baseEntry-getPlaybackContext';\n var contextDataParams = { objectType: 'KalturaContextDataParams', flavorTags: 'all' };\n request.params = { entryId: entryId, ks: ks, contextDataParams: contextDataParams };\n return request;\n }\n\n /**\n * Creates an instance of RequestBuilder for baseentry.list\n * @function list\n * @param {string} serviceUrl The base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @param {boolean} redirectFromEntryId whether the live entry should continue and play the VOD one after the live stream ends.\n * @returns {RequestBuilder} The request builder\n * @static\n */\n\n }, {\n key: 'list',\n value: function list(serviceUrl, ks, entryId, redirectFromEntryId) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'list';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'list';\n request.params = OVPBaseEntryService.getEntryListReqParams(entryId, ks, redirectFromEntryId);\n return request;\n }\n\n /**\n * Gets baseentry.list service params\n * @function getEntryListReqParams\n * @param {string} entryId The entry ID\n * @param {string} ks The ks\n * @param {boolean} redirectFromEntryId whether the live entry should continue and play the VOD one after the live stream ends.\n * @returns {{ks: string, filter: {redirectFromEntryId: string}, responseProfile: {fields: string, type: number}}} The service params object\n * @static\n */\n\n }, {\n key: 'getEntryListReqParams',\n value: function getEntryListReqParams(entryId, ks, redirectFromEntryId) {\n var filterParams = redirectFromEntryId ? { redirectFromEntryId: entryId } : { idEqual: entryId };\n return { ks: ks, filter: filterParams, responseProfile: new _baseEntryResponseProfile2.default() };\n }\n }]);\n\n return OVPBaseEntryService;\n}(_ovpService2.default);\n\nexports.default = OVPBaseEntryService;\n\n/***/ }),\n/* 31 */,\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _logger = __webpack_require__(3);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _config = __webpack_require__(4);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _providerParser = __webpack_require__(49);\n\nvar _providerParser2 = _interopRequireDefault(_providerParser);\n\nvar _mediaEntryLoader = __webpack_require__(45);\n\nvar _mediaEntryLoader2 = _interopRequireDefault(_mediaEntryLoader);\n\nvar _sessionLoader = __webpack_require__(47);\n\nvar _sessionLoader2 = _interopRequireDefault(_sessionLoader);\n\nvar _dataLoaderManager = __webpack_require__(43);\n\nvar _dataLoaderManager2 = _interopRequireDefault(_dataLoaderManager);\n\nvar _playlistLoader = __webpack_require__(46);\n\nvar _playlistLoader2 = _interopRequireDefault(_playlistLoader);\n\nvar _baseProvider = __webpack_require__(17);\n\nvar _baseProvider2 = _interopRequireDefault(_baseProvider);\n\nvar _mediaEntry = __webpack_require__(1);\n\nvar _mediaEntry2 = _interopRequireDefault(_mediaEntry);\n\nvar _entryListLoader = __webpack_require__(44);\n\nvar _entryListLoader2 = _interopRequireDefault(_entryListLoader);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar OVPProvider = function (_BaseProvider) {\n _inherits(OVPProvider, _BaseProvider);\n\n /**\n * @constructor\n * @param {ProviderOptionsObject} options - provider options\n * @param {string} playerVersion - player version\n */\n function OVPProvider(options, playerVersion) {\n _classCallCheck(this, OVPProvider);\n\n var _this = _possibleConstructorReturn(this, (OVPProvider.__proto__ || Object.getPrototypeOf(OVPProvider)).call(this, options, playerVersion));\n\n _this._filterOptionsConfig = { redirectFromEntryId: true };\n\n _this._logger = (0, _logger2.default)('OVPProvider');\n _config2.default.set(options.env);\n _this._setFilterOptionsConfig(options.filterOptions);\n return _this;\n }\n\n /**\n * Gets the backend media config.\n * @param {ProviderMediaInfoObject} mediaInfo - ovp media info\n * @returns {Promise} - The provider media config\n */\n\n\n _createClass(OVPProvider, [{\n key: 'getMediaConfig',\n value: function getMediaConfig(mediaInfo) {\n var _this2 = this;\n\n if (mediaInfo.ks) {\n this.ks = mediaInfo.ks;\n }\n this._dataLoader = new _dataLoaderManager2.default(this.playerVersion, this.partnerId, this.ks);\n return new Promise(function (resolve, reject) {\n var entryId = mediaInfo.entryId;\n if (entryId) {\n var ks = _this2.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n _this2._dataLoader.add(_sessionLoader2.default, { partnerId: _this2.partnerId });\n }\n var redirectFromEntryId = _this2._getEntryRedirectFilter(mediaInfo);\n _this2._dataLoader.add(_mediaEntryLoader2.default, { entryId: entryId, ks: ks, redirectFromEntryId: redirectFromEntryId });\n _this2._dataLoader.fetchData().then(function (response) {\n resolve(_this2._parseDataFromResponse(response));\n }, function (err) {\n reject(err);\n });\n } else {\n reject({ success: false, data: 'Missing mandatory parameter' });\n }\n });\n }\n }, {\n key: '_getEntryRedirectFilter',\n value: function _getEntryRedirectFilter(mediaInfo) {\n return typeof mediaInfo.redirectFromEntryId === 'boolean' ? mediaInfo.redirectFromEntryId : typeof this._filterOptionsConfig.redirectFromEntryId === 'boolean' ? this._filterOptionsConfig.redirectFromEntryId : true;\n }\n }, {\n key: '_setFilterOptionsConfig',\n value: function _setFilterOptionsConfig(options) {\n if (options && typeof options.redirectFromEntryId == 'boolean') {\n this._filterOptionsConfig.redirectFromEntryId = options.redirectFromEntryId;\n }\n }\n }, {\n key: '_parseDataFromResponse',\n value: function _parseDataFromResponse(data) {\n this._logger.debug('Data parsing started');\n var mediaConfig = {\n session: {\n isAnonymous: this._isAnonymous,\n partnerId: this.partnerId\n },\n sources: this._getDefaultSourcesObject(),\n plugins: {}\n };\n\n if (this.uiConfId) {\n mediaConfig.session.uiConfId = this.uiConfId;\n }\n if (data) {\n if (data.has(_sessionLoader2.default.id)) {\n var sessionLoader = data.get(_sessionLoader2.default.id);\n if (sessionLoader && sessionLoader.response) {\n this.ks = sessionLoader.response;\n mediaConfig.session.ks = this.ks;\n }\n } else {\n mediaConfig.session.ks = this.ks;\n }\n if (data.has(_mediaEntryLoader2.default.id)) {\n var mediaLoader = data.get(_mediaEntryLoader2.default.id);\n if (mediaLoader && mediaLoader.response) {\n this._validateData(mediaLoader.response);\n var mediaEntry = _providerParser2.default.getMediaEntry(this.isAnonymous ? '' : this.ks, this.partnerId, this.uiConfId, mediaLoader.response);\n Object.assign(mediaConfig.sources, this._getSourcesObject(mediaEntry));\n }\n }\n }\n this._logger.debug('Data parsing finished', mediaConfig);\n return mediaConfig;\n }\n\n /**\n * Gets the backend playlist config.\n * @param {ProviderPlaylistInfoObject} playlistInfo - ovp playlist info\n * @returns {Promise} - The provider playlist config\n */\n\n }, {\n key: 'getPlaylistConfig',\n value: function getPlaylistConfig(playlistInfo) {\n var _this3 = this;\n\n if (playlistInfo.ks) {\n this.ks = playlistInfo.ks;\n }\n this._dataLoader = new _dataLoaderManager2.default(this.playerVersion, this.partnerId, this.ks);\n return new Promise(function (resolve, reject) {\n var playlistId = playlistInfo.playlistId;\n if (playlistId) {\n var ks = _this3.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n _this3._dataLoader.add(_sessionLoader2.default, { partnerId: _this3.partnerId });\n }\n _this3._dataLoader.add(_playlistLoader2.default, { playlistId: playlistId, ks: ks });\n // this._dataLoader.add(OVPMediaEntryLoader, {entryId: '{3:result:0:id}', ks});\n _this3._dataLoader.fetchData().then(function (response) {\n resolve(_this3._parsePlaylistDataFromResponse(response));\n }, function (err) {\n reject(err);\n });\n } else {\n reject({ success: false, data: 'Missing mandatory parameter' });\n }\n });\n }\n }, {\n key: '_parsePlaylistDataFromResponse',\n value: function _parsePlaylistDataFromResponse(data) {\n var _this4 = this;\n\n this._logger.debug('Data parsing started');\n var playlistConfig = this._getPlaylistObject();\n if (data && data.has(_playlistLoader2.default.id)) {\n var playlistLoader = data.get(_playlistLoader2.default.id);\n if (playlistLoader && playlistLoader.response) {\n this._validateData(playlistLoader.response);\n var playlist = _providerParser2.default.getPlaylist(playlistLoader.response);\n playlistConfig.id = playlist.id;\n playlistConfig.poster = playlist.poster;\n playlistConfig.metadata.name = playlist.name;\n playlistConfig.metadata.description = playlist.description;\n playlist.items.forEach(function (i) {\n return playlistConfig.items.push({ sources: _this4._getSourcesObject(i) });\n });\n }\n }\n this._logger.debug('Data parsing finished', playlistConfig);\n return playlistConfig;\n }\n\n /**\n * Gets playlist config from entry list.\n * @param {ProviderEntryListObject} entryListInfo - ovp entry list info\n * @returns {Promise} - The provider playlist config\n */\n\n }, {\n key: 'getEntryListConfig',\n value: function getEntryListConfig(entryListInfo) {\n var _this5 = this;\n\n if (entryListInfo.ks) {\n this.ks = entryListInfo.ks;\n }\n this._dataLoader = new _dataLoaderManager2.default(this.playerVersion, this.partnerId, this.ks);\n return new Promise(function (resolve, reject) {\n var entries = entryListInfo.entries;\n if (entries && entries.length) {\n var ks = _this5.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n _this5._dataLoader.add(_sessionLoader2.default, { partnerId: _this5.partnerId });\n }\n var redirectFromEntryId = _this5._getEntryRedirectFilter(entryListInfo);\n _this5._dataLoader.add(_entryListLoader2.default, { entries: entries, ks: ks, redirectFromEntryId: redirectFromEntryId });\n _this5._dataLoader.fetchData().then(function (response) {\n resolve(_this5._parseEntryListDataFromResponse(response));\n }, function (err) {\n reject(err);\n });\n } else {\n reject({ success: false, data: 'Missing mandatory parameter' });\n }\n });\n }\n }, {\n key: '_parseEntryListDataFromResponse',\n value: function _parseEntryListDataFromResponse(data) {\n var _this6 = this;\n\n this._logger.debug('Data parsing started');\n var playlistConfig = this._getPlaylistObject();\n if (data && data.has(_playlistLoader2.default.id)) {\n var playlistLoader = data.get(_playlistLoader2.default.id);\n if (playlistLoader && playlistLoader.response) {\n this._validateData(playlistLoader.response);\n var entryList = _providerParser2.default.getEntryList(playlistLoader.response);\n entryList.items.forEach(function (i) {\n return playlistConfig.items.push({ sources: _this6._getSourcesObject(i) });\n });\n }\n }\n this._logger.debug('Data parsing finished', playlistConfig);\n return playlistConfig;\n }\n }, {\n key: '_getPlaylistObject',\n value: function _getPlaylistObject() {\n return {\n id: '',\n metadata: {\n name: '',\n description: ''\n },\n poster: '',\n items: []\n };\n }\n }, {\n key: '_validateData',\n value: function _validateData(response) {\n var blockedAction = _providerParser2.default.hasBlockActions(response);\n if (blockedAction) {\n var errorMessage = _providerParser2.default.hasErrorMessage(response);\n if (errorMessage) {\n this._logger.error('Entry is blocked, error message: ', errorMessage);\n throw errorMessage;\n } else {\n this._logger.error('Entry is blocked, action: ', blockedAction);\n throw blockedAction;\n }\n }\n }\n }, {\n key: '_getDefaultSourcesObject',\n value: function _getDefaultSourcesObject() {\n return {\n hls: [],\n dash: [],\n progressive: [],\n id: '',\n duration: 0,\n type: _mediaEntry2.default.Type.UNKNOWN,\n poster: '',\n dvr: false,\n vr: null,\n metadata: {\n name: '',\n description: '',\n tags: ''\n }\n };\n }\n }, {\n key: '_getSourcesObject',\n value: function _getSourcesObject(mediaEntry) {\n var sourcesObject = this._getDefaultSourcesObject();\n var mediaSources = mediaEntry.sources.toJSON();\n sourcesObject.hls = mediaSources.hls;\n sourcesObject.dash = mediaSources.dash;\n sourcesObject.progressive = mediaSources.progressive;\n sourcesObject.id = mediaEntry.id;\n sourcesObject.duration = mediaEntry.duration;\n sourcesObject.type = mediaEntry.type;\n sourcesObject.dvr = !!mediaEntry.dvrStatus;\n sourcesObject.poster = mediaEntry.poster;\n if (mediaEntry.metadata && typeof mediaEntry.metadata.tags === 'string' && mediaEntry.metadata.tags.indexOf('360') > -1) {\n sourcesObject.vr = {};\n }\n Object.assign(sourcesObject.metadata, mediaEntry.metadata);\n return sourcesObject;\n }\n }]);\n\n return OVPProvider;\n}(_baseProvider2.default);\n\nexports.default = OVPProvider;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _mediaEntry = __webpack_require__(1);\n\nvar _mediaEntry2 = _interopRequireDefault(_mediaEntry);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EntryList = function EntryList() {\n _classCallCheck(this, EntryList);\n\n this.items = [];\n}\n/**\n * @member - entry list items\n * @type {Array}\n */\n;\n\nexports.default = EntryList;\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _mediaEntry = __webpack_require__(1);\n\nvar _mediaEntry2 = _interopRequireDefault(_mediaEntry);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Playlist =\n\n/**\n * @member - playlist poster\n * @type {string}\n */\n\n/**\n * @member - playlist name\n * @type {string}\n */\nfunction Playlist() {\n _classCallCheck(this, Playlist);\n\n this.items = [];\n}\n\n/**\n * @member - playlist items\n * @type {Array}\n */\n\n/**\n * @member - playlist description\n * @type {string}\n */\n\n/**\n * @member - playlist id\n * @type {string}\n */\n;\n\nexports.default = Playlist;\n\n/***/ }),\n/* 35 */,\n/* 36 */,\n/* 37 */,\n/* 38 */,\n/* 39 */,\n/* 40 */,\n/* 41 */,\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VERSION = exports.NAME = exports.Provider = undefined;\n\nvar _provider = __webpack_require__(32);\n\nvar _provider2 = _interopRequireDefault(_provider);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NAME = \"playkit-js-providers\" + '-ovp';\n\nvar VERSION = \"2.9.0\";\n\nexports.Provider = _provider2.default;\nexports.NAME = NAME;\nexports.VERSION = VERSION;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dataLoaderManager = __webpack_require__(9);\n\nvar _dataLoaderManager2 = _interopRequireDefault(_dataLoaderManager);\n\nvar _ovpService = __webpack_require__(12);\n\nvar _ovpService2 = _interopRequireDefault(_ovpService);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar OVPDataLoaderManager = function (_DataLoaderManager) {\n _inherits(OVPDataLoaderManager, _DataLoaderManager);\n\n /**\n * @constructor\n * @param {string} playerVersion - player version\n * @param {string} partnerId - partner id\n * @param {string} ks - ks\n */\n function OVPDataLoaderManager(playerVersion, partnerId) {\n var ks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n _classCallCheck(this, OVPDataLoaderManager);\n\n var _this = _possibleConstructorReturn(this, (OVPDataLoaderManager.__proto__ || Object.getPrototypeOf(OVPDataLoaderManager)).call(this));\n\n _this._multiRequest = _ovpService2.default.getMultiRequest(playerVersion, ks, partnerId);\n return _this;\n }\n\n return OVPDataLoaderManager;\n}(_dataLoaderManager2.default);\n\nexports.default = OVPDataLoaderManager;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _config = __webpack_require__(4);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _baseEntryService = __webpack_require__(30);\n\nvar _baseEntryService2 = _interopRequireDefault(_baseEntryService);\n\nvar _kalturaBaseEntryListResponse = __webpack_require__(26);\n\nvar _kalturaBaseEntryListResponse2 = _interopRequireDefault(_kalturaBaseEntryListResponse);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OVPEntryListLoader = function () {\n _createClass(OVPEntryListLoader, null, [{\n key: 'id',\n get: function get() {\n return 'playlist';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n\n }]);\n\n function OVPEntryListLoader(params) {\n _classCallCheck(this, OVPEntryListLoader);\n\n this._response = { playlistItems: { entries: [] } };\n\n this.requests = this.buildRequests(params);\n this._entries = params.entries;\n }\n\n _createClass(OVPEntryListLoader, [{\n key: 'buildRequests',\n\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function buildRequests(params) {\n var config = _config2.default.get();\n var requests = [];\n params.entries.forEach(function (entryId) {\n requests.push(_baseEntryService2.default.list(config.serviceUrl, params.ks, entryId, params.redirectFromEntryId));\n });\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n\n }, {\n key: 'isValid',\n value: function isValid() {\n return !!(this._entries && this._entries.length);\n }\n }, {\n key: 'requests',\n set: function set(requests) {\n this._requests = requests;\n },\n get: function get() {\n return this._requests;\n }\n }, {\n key: 'response',\n set: function set(response) {\n var _this = this;\n\n var mediaEntryResponse = void 0;\n response.forEach(function (item) {\n mediaEntryResponse = new _kalturaBaseEntryListResponse2.default(item.data);\n _this._response.playlistItems.entries.push(mediaEntryResponse.entries[0]);\n });\n },\n get: function get() {\n return this._response;\n }\n }]);\n\n return OVPEntryListLoader;\n}();\n\nexports.default = OVPEntryListLoader;\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _baseEntryService = __webpack_require__(30);\n\nvar _baseEntryService2 = _interopRequireDefault(_baseEntryService);\n\nvar _metaDataService = __webpack_require__(54);\n\nvar _metaDataService2 = _interopRequireDefault(_metaDataService);\n\nvar _config = __webpack_require__(4);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _kalturaPlaybackContext = __webpack_require__(52);\n\nvar _kalturaPlaybackContext2 = _interopRequireDefault(_kalturaPlaybackContext);\n\nvar _kalturaMetadataListResponse = __webpack_require__(28);\n\nvar _kalturaMetadataListResponse2 = _interopRequireDefault(_kalturaMetadataListResponse);\n\nvar _kalturaBaseEntryListResponse = __webpack_require__(26);\n\nvar _kalturaBaseEntryListResponse2 = _interopRequireDefault(_kalturaBaseEntryListResponse);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OVPMediaEntryLoader = function () {\n _createClass(OVPMediaEntryLoader, null, [{\n key: 'id',\n get: function get() {\n return 'media';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n\n }]);\n\n function OVPMediaEntryLoader(params) {\n _classCallCheck(this, OVPMediaEntryLoader);\n\n this._response = {};\n\n this.requests = this.buildRequests(params);\n this._entryId = params.entryId;\n }\n\n _createClass(OVPMediaEntryLoader, [{\n key: 'buildRequests',\n\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function buildRequests(params) {\n var config = _config2.default.get();\n var requests = [];\n requests.push(_baseEntryService2.default.list(config.serviceUrl, params.ks, params.entryId, params.redirectFromEntryId));\n requests.push(_baseEntryService2.default.getPlaybackContext(config.serviceUrl, params.ks, params.entryId));\n requests.push(_metaDataService2.default.list(config.serviceUrl, params.ks, params.entryId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n\n }, {\n key: 'isValid',\n value: function isValid() {\n return !!this._entryId;\n }\n }, {\n key: 'requests',\n set: function set(requests) {\n this._requests = requests;\n },\n get: function get() {\n return this._requests;\n }\n }, {\n key: 'response',\n set: function set(response) {\n var mediaEntryResponse = new _kalturaBaseEntryListResponse2.default(response[0].data);\n this._response.entry = mediaEntryResponse.entries[0];\n this._response.playBackContextResult = new _kalturaPlaybackContext2.default(response[1].data);\n this._response.metadataListResult = new _kalturaMetadataListResponse2.default(response[2].data);\n },\n get: function get() {\n return this._response;\n }\n }]);\n\n return OVPMediaEntryLoader;\n}();\n\nexports.default = OVPMediaEntryLoader;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _playlistService = __webpack_require__(55);\n\nvar _playlistService2 = _interopRequireDefault(_playlistService);\n\nvar _config = __webpack_require__(4);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _kalturaPlaylist = __webpack_require__(53);\n\nvar _kalturaPlaylist2 = _interopRequireDefault(_kalturaPlaylist);\n\nvar _kalturaMediaEntries = __webpack_require__(50);\n\nvar _kalturaMediaEntries2 = _interopRequireDefault(_kalturaMediaEntries);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OVPPlaylistLoader = function () {\n _createClass(OVPPlaylistLoader, null, [{\n key: 'id',\n get: function get() {\n return 'playlist';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n\n }]);\n\n function OVPPlaylistLoader(params) {\n _classCallCheck(this, OVPPlaylistLoader);\n\n this._response = {};\n\n this.requests = this.buildRequests(params);\n this._playlistId = params.playlistId;\n }\n\n _createClass(OVPPlaylistLoader, [{\n key: 'buildRequests',\n\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function buildRequests(params) {\n var config = _config2.default.get();\n var requests = [];\n requests.push(_playlistService2.default.get(config.serviceUrl, params.ks, params.playlistId));\n requests.push(_playlistService2.default.execute(config.serviceUrl, params.ks, params.playlistId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n\n }, {\n key: 'isValid',\n value: function isValid() {\n return !!this._playlistId;\n }\n }, {\n key: 'requests',\n set: function set(requests) {\n this._requests = requests;\n },\n get: function get() {\n return this._requests;\n }\n }, {\n key: 'response',\n set: function set(response) {\n this._response.playlistData = new _kalturaPlaylist2.default(response[0].data);\n this._response.playlistItems = new _kalturaMediaEntries2.default(response[1].data);\n },\n get: function get() {\n return this._response;\n }\n }]);\n\n return OVPPlaylistLoader;\n}();\n\nexports.default = OVPPlaylistLoader;\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _sessionService = __webpack_require__(56);\n\nvar _sessionService2 = _interopRequireDefault(_sessionService);\n\nvar _config = __webpack_require__(4);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OVPSessionLoader = function () {\n _createClass(OVPSessionLoader, [{\n key: 'requests',\n set: function set(requests) {\n this._requests = requests;\n },\n get: function get() {\n return this._requests;\n }\n }, {\n key: 'response',\n set: function set(response) {\n this._response.ks = response[0].data.ks;\n },\n get: function get() {\n return this._response.ks;\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n\n }], [{\n key: 'id',\n get: function get() {\n return 'session';\n }\n }]);\n\n function OVPSessionLoader(params) {\n _classCallCheck(this, OVPSessionLoader);\n\n this._response = {};\n\n this.requests = this.buildRequests(params);\n this._partnerId = params.partnerId;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n\n\n _createClass(OVPSessionLoader, [{\n key: 'buildRequests',\n value: function buildRequests(params) {\n var config = _config2.default.get();\n var requests = [];\n requests.push(_sessionService2.default.anonymousSession(config.serviceUrl, params.partnerId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n\n }, {\n key: 'isValid',\n value: function isValid() {\n return !!this._partnerId;\n }\n }]);\n\n return OVPSessionLoader;\n}();\n\nexports.default = OVPSessionLoader;\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _config = __webpack_require__(4);\n\nvar _config2 = _interopRequireDefault(_config);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PlaySourceUrlBuilder = function () {\n function PlaySourceUrlBuilder() {\n _classCallCheck(this, PlaySourceUrlBuilder);\n }\n\n _createClass(PlaySourceUrlBuilder, null, [{\n key: 'build',\n\n /**\n * Returns source url by given url params\n * @function build\n * @param {Object} urlParams The params\n * @returns {string} The URL\n * @static\n */\n value: function build(urlParams) {\n var config = _config2.default.get();\n var cdnUrl = config.cdnUrl;\n var partnerId = urlParams.partnerId;\n var entryId = urlParams.entryId;\n var ks = urlParams.ks;\n var uiConfId = urlParams.uiConfId;\n var format = urlParams.format;\n var protocol = urlParams.protocol;\n var extension = urlParams.extension;\n var flavorIds = urlParams.flavorIds;\n\n if (cdnUrl === '' && partnerId === '' && entryId === '' && extension === '' && format === '') {\n return '';\n }\n\n var playUrl = cdnUrl;\n if (!cdnUrl.endsWith('/')) {\n playUrl += '/';\n }\n playUrl += 'p/' + partnerId + '/sp/' + partnerId + '00' + '/playManifest/entryId/' + entryId + '/protocol/' + protocol + '/format/' + format;\n\n if (flavorIds !== '') {\n playUrl += '/flavorIds/' + flavorIds;\n } else if (uiConfId !== '') {\n playUrl += '/uiConfId/' + uiConfId;\n }\n\n if (ks !== '') {\n playUrl += '/ks/' + ks;\n }\n\n playUrl += '/a.' + extension;\n\n if (uiConfId && flavorIds !== '') {\n playUrl += '?uiConfId=' + uiConfId;\n }\n\n return playUrl;\n }\n }]);\n\n return PlaySourceUrlBuilder;\n}();\n\nexports.default = PlaySourceUrlBuilder;\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _kalturaFlavorAsset = __webpack_require__(27);\n\nvar _kalturaFlavorAsset2 = _interopRequireDefault(_kalturaFlavorAsset);\n\nvar _kalturaMetadataListResponse = __webpack_require__(28);\n\nvar _kalturaMetadataListResponse2 = _interopRequireDefault(_kalturaMetadataListResponse);\n\nvar _kalturaMediaEntry = __webpack_require__(21);\n\nvar _kalturaMediaEntry2 = _interopRequireDefault(_kalturaMediaEntry);\n\nvar _kalturaPlaybackSource = __webpack_require__(29);\n\nvar _kalturaPlaybackSource2 = _interopRequireDefault(_kalturaPlaybackSource);\n\nvar _kalturaDrmPlaybackPluginData = __webpack_require__(11);\n\nvar _kalturaDrmPlaybackPluginData2 = _interopRequireDefault(_kalturaDrmPlaybackPluginData);\n\nvar _playSourceUrlBuilder = __webpack_require__(48);\n\nvar _playSourceUrlBuilder2 = _interopRequireDefault(_playSourceUrlBuilder);\n\nvar _xmlParser = __webpack_require__(57);\n\nvar _xmlParser2 = _interopRequireDefault(_xmlParser);\n\nvar _logger = __webpack_require__(3);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _config = __webpack_require__(4);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _mediaEntry = __webpack_require__(1);\n\nvar _mediaEntry2 = _interopRequireDefault(_mediaEntry);\n\nvar _drm = __webpack_require__(8);\n\nvar _drm2 = _interopRequireDefault(_drm);\n\nvar _mediaSource = __webpack_require__(6);\n\nvar _mediaSource2 = _interopRequireDefault(_mediaSource);\n\nvar _mediaSources = __webpack_require__(7);\n\nvar _mediaSources2 = _interopRequireDefault(_mediaSources);\n\nvar _mediaFormat = __webpack_require__(5);\n\nvar _baseProviderParser = __webpack_require__(16);\n\nvar _baseProviderParser2 = _interopRequireDefault(_baseProviderParser);\n\nvar _playlist = __webpack_require__(34);\n\nvar _playlist2 = _interopRequireDefault(_playlist);\n\nvar _entryList = __webpack_require__(33);\n\nvar _entryList2 = _interopRequireDefault(_entryList);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar OVPProviderParser = function (_BaseProviderParser) {\n _inherits(OVPProviderParser, _BaseProviderParser);\n\n function OVPProviderParser() {\n _classCallCheck(this, OVPProviderParser);\n\n return _possibleConstructorReturn(this, (OVPProviderParser.__proto__ || Object.getPrototypeOf(OVPProviderParser)).apply(this, arguments));\n }\n\n _createClass(OVPProviderParser, null, [{\n key: 'getMediaEntry',\n\n\n /**\n * Returns parsed media entry by given OVP response objects\n * @function getMediaEntry\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {any} mediaEntryResponse - The media entry response\n * @returns {MediaEntry} - The media entry\n * @static\n * @public\n */\n value: function getMediaEntry(ks, partnerId, uiConfId, mediaEntryResponse) {\n var mediaEntry = new _mediaEntry2.default();\n var entry = mediaEntryResponse.entry;\n var playbackContext = mediaEntryResponse.playBackContextResult;\n var metadataList = mediaEntryResponse.metadataListResult;\n var kalturaSources = playbackContext.sources;\n\n mediaEntry.sources = OVPProviderParser._getParsedSources(kalturaSources, ks, partnerId, uiConfId, entry, playbackContext);\n OVPProviderParser._fillBaseData(mediaEntry, entry, metadataList);\n return mediaEntry;\n }\n\n /**\n * Returns parsed playlist by given OVP response objects\n * @function getPlaylist\n * @param {any} playlistResponse - The playlist response\n * @returns {Playlist} - The playlist\n * @static\n * @public\n */\n\n }, {\n key: 'getPlaylist',\n value: function getPlaylist(playlistResponse) {\n var playlist = new _playlist2.default();\n var playlistData = playlistResponse.playlistData;\n var playlistItems = playlistResponse.playlistItems.entries;\n playlist.id = playlistData.id;\n playlist.name = playlistData.name;\n playlist.description = playlistData.description;\n playlist.poster = playlistData.poster;\n playlistItems.forEach(function (entry) {\n var mediaEntry = new _mediaEntry2.default();\n OVPProviderParser._fillBaseData(mediaEntry, entry);\n playlist.items.push(mediaEntry);\n });\n return playlist;\n }\n\n /**\n * Returns parsed entry list by given OVP response objects\n * @function getEntryList\n * @param {any} playlistResponse - response\n * @returns {Playlist} - The entry list\n * @static\n * @public\n */\n\n }, {\n key: 'getEntryList',\n value: function getEntryList(playlistResponse) {\n var entryList = new _entryList2.default();\n var playlistItems = playlistResponse.playlistItems.entries;\n playlistItems.forEach(function (entry) {\n var mediaEntry = new _mediaEntry2.default();\n OVPProviderParser._fillBaseData(mediaEntry, entry);\n entryList.items.push(mediaEntry);\n });\n return entryList;\n }\n }, {\n key: '_fillBaseData',\n value: function _fillBaseData(mediaEntry, entry, metadataList) {\n mediaEntry.poster = entry.poster;\n mediaEntry.id = entry.id;\n mediaEntry.duration = entry.duration;\n mediaEntry.metadata = this._parseMetadata(metadataList);\n mediaEntry.metadata.description = entry.description || '';\n mediaEntry.metadata.name = entry.name || '';\n mediaEntry.metadata.tags = entry.tags || '';\n\n mediaEntry.type = OVPProviderParser._getEntryType(entry.entryType, entry.type);\n if (mediaEntry.type === _mediaEntry2.default.Type.LIVE) {\n mediaEntry.dvrStatus = entry.dvrStatus;\n }\n\n return mediaEntry;\n }\n }, {\n key: '_getEntryType',\n value: function _getEntryType(entryTypeEnum, typeEnum) {\n var type = _mediaEntry2.default.Type.UNKNOWN;\n switch (entryTypeEnum) {\n case _kalturaMediaEntry2.default.MediaType.IMAGE.value:\n type = _mediaEntry2.default.Type.IMAGE;\n break;\n case _kalturaMediaEntry2.default.MediaType.AUDIO.value:\n type = _mediaEntry2.default.Type.AUDIO;\n break;\n default:\n switch (typeEnum) {\n case _kalturaMediaEntry2.default.EntryType.MEDIA_CLIP.value:\n type = _mediaEntry2.default.Type.VOD;\n break;\n case _kalturaMediaEntry2.default.EntryType.LIVE_STREAM.value:\n case _kalturaMediaEntry2.default.EntryType.LIVE_CHANNEL.value:\n type = _mediaEntry2.default.Type.LIVE;\n break;\n default:\n type = _mediaEntry2.default.Type.UNKNOWN;\n }\n }\n return type;\n }\n\n /**\n * Returns the parsed sources\n * @function _getParsedSources\n * @param {Array} kalturaSources - The kaltura sources\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {Object} entry - The entry\n * @param {Object} playbackContext - The playback context\n * @return {MediaSources} - A media sources\n * @static\n * @private\n */\n\n }, {\n key: '_getParsedSources',\n value: function _getParsedSources(kalturaSources, ks, partnerId, uiConfId, entry, playbackContext) {\n var sources = new _mediaSources2.default();\n var addAdaptiveSource = function addAdaptiveSource(source) {\n var parsedSource = OVPProviderParser._parseAdaptiveSource(source, playbackContext.flavorAssets, ks, partnerId, uiConfId, entry.id);\n var sourceFormat = _mediaFormat.SupportedStreamFormat.get(source.format);\n sources.map(parsedSource, sourceFormat);\n };\n var parseAdaptiveSources = function parseAdaptiveSources() {\n kalturaSources.filter(function (source) {\n return !OVPProviderParser._isProgressiveSource(source);\n }).forEach(addAdaptiveSource);\n };\n var parseProgressiveSources = function parseProgressiveSources() {\n var progressiveSource = kalturaSources.find(OVPProviderParser._isProgressiveSource);\n sources.progressive = OVPProviderParser._parseProgressiveSources(progressiveSource, playbackContext.flavorAssets, ks, partnerId, uiConfId, entry.id);\n };\n if (kalturaSources && kalturaSources.length > 0) {\n parseAdaptiveSources();\n parseProgressiveSources();\n }\n return sources;\n }\n\n /**\n * Returns a parsed adaptive source\n * @function _parseAdaptiveSource\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @param {Array} flavorAssets - The flavor Assets of the kaltura source\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {string} entryId - The entry id\n * @returns {MediaSource} - The parsed adaptive kalturaSource\n * @static\n * @private\n */\n\n }, {\n key: '_parseAdaptiveSource',\n value: function _parseAdaptiveSource(kalturaSource, flavorAssets, ks, partnerId, uiConfId, entryId) {\n var mediaSource = new _mediaSource2.default();\n if (kalturaSource) {\n var playUrl = '';\n var mediaFormat = _mediaFormat.SupportedStreamFormat.get(kalturaSource.format);\n var extension = '';\n if (mediaFormat) {\n extension = mediaFormat.pathExt;\n mediaSource.mimetype = mediaFormat.mimeType;\n }\n // in case playbackSource doesn't have flavors we don't need to build the url and we'll use the provided one.\n if (kalturaSource.hasFlavorIds()) {\n if (!extension && flavorAssets && flavorAssets.length > 0) {\n extension = flavorAssets[0].fileExt;\n }\n playUrl = _playSourceUrlBuilder2.default.build({\n entryId: entryId,\n flavorIds: kalturaSource.flavorIds,\n format: kalturaSource.format,\n ks: ks,\n partnerId: partnerId,\n uiConfId: uiConfId,\n extension: extension,\n protocol: kalturaSource.getProtocol(this._getBaseProtocol())\n });\n } else {\n playUrl = kalturaSource.url;\n }\n if (playUrl === '') {\n OVPProviderParser._logger.error('failed to create play url from source, discarding source: (' + entryId + '_' + kalturaSource.deliveryProfileId + '), ' + kalturaSource.format + '.');\n return mediaSource;\n }\n mediaSource.url = playUrl;\n mediaSource.id = entryId + '_' + kalturaSource.deliveryProfileId + ',' + kalturaSource.format;\n if (kalturaSource.hasDrmData()) {\n var drmParams = [];\n kalturaSource.drm.forEach(function (drm) {\n drmParams.push(new _drm2.default(drm.licenseURL, _kalturaDrmPlaybackPluginData2.default.Scheme[drm.scheme], drm.certificate));\n });\n mediaSource.drmData = drmParams;\n }\n }\n return mediaSource;\n }\n\n /**\n * Returns parsed progressive sources\n * @function _parseProgressiveSources\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @param {Array} flavorAssets - The flavor Assets of the kaltura source\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {string} entryId - The entry id\n * @returns {Array} - The parsed progressive kalturaSources\n * @static\n * @private\n */\n\n }, {\n key: '_parseProgressiveSources',\n value: function _parseProgressiveSources(kalturaSource, flavorAssets, ks, partnerId, uiConfId, entryId) {\n var videoSources = [];\n var audioSources = [];\n if (kalturaSource) {\n var protocol = kalturaSource.getProtocol(this._getBaseProtocol());\n var format = kalturaSource.format;\n var sourceId = kalturaSource.deliveryProfileId + ',' + kalturaSource.format;\n flavorAssets.map(function (flavor) {\n var mediaSource = new _mediaSource2.default();\n mediaSource.id = flavor.id + sourceId;\n mediaSource.mimetype = flavor.fileExt === 'mp3' ? 'audio/mp3' : 'video/mp4';\n mediaSource.height = flavor.height;\n mediaSource.width = flavor.width;\n mediaSource.bandwidth = flavor.bitrate * 1024;\n mediaSource.label = flavor.label || flavor.language;\n mediaSource.url = _playSourceUrlBuilder2.default.build({\n entryId: entryId,\n flavorIds: flavor.id,\n format: format,\n ks: ks,\n partnerId: partnerId,\n uiConfId: uiConfId,\n extension: flavor.fileExt,\n protocol: protocol\n });\n if (flavor.height && flavor.width) {\n videoSources.push(mediaSource);\n } else {\n audioSources.push(mediaSource);\n }\n });\n }\n //If we have only audio flavors return them, otherwise return video flavors\n return audioSources.length && !videoSources.length ? audioSources : videoSources;\n }\n\n /**\n * Ovp metadata parser\n * @function _parseMetaData\n * @param {KalturaMetadataListResponse} metadataList The metadata list\n * @returns {Object} Parsed metadata\n * @static\n * @private\n */\n\n }, {\n key: '_parseMetadata',\n value: function _parseMetadata(metadataList) {\n var metadata = {};\n if (metadataList && metadataList.metas && metadataList.metas.length > 0) {\n metadataList.metas.forEach(function (meta) {\n var metaXml = void 0;\n var domParser = new DOMParser();\n meta.xml = meta.xml.replace(/\\r?\\n|\\r/g, '');\n meta.xml = meta.xml.replace(/>\\s*/g, '>');\n meta.xml = meta.xml.replace(/>\\s*/g, '>');\n metaXml = domParser.parseFromString(meta.xml, 'text/xml');\n var metasObj = _xmlParser2.default.xmlToJson(metaXml);\n var metaKeys = Object.keys(metasObj.metadata);\n metaKeys.forEach(function (key) {\n metadata[key] = metasObj.metadata[key]['#text'];\n });\n });\n }\n return metadata;\n }\n\n /**\n * Returns the base protocol\n * @function _getBaseProtocol\n * @returns {string} - The base protocol\n * @static\n * @private\n */\n\n }, {\n key: '_getBaseProtocol',\n value: function _getBaseProtocol() {\n var config = _config2.default.get();\n var protocolRegex = /^https?:/;\n var result = protocolRegex.exec(config.cdnUrl);\n var protocol = result ? result[0] : document.location.protocol;\n if (typeof protocol === 'string') {\n return protocol.slice(0, -1); // remove ':' from the end\n }\n return 'https';\n }\n }]);\n\n return OVPProviderParser;\n}(_baseProviderParser2.default);\n\nOVPProviderParser._logger = (0, _logger2.default)('OVPProviderParser');\nexports.default = OVPProviderParser;\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nvar _kalturaMediaEntry = __webpack_require__(21);\n\nvar _kalturaMediaEntry2 = _interopRequireDefault(_kalturaMediaEntry);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar KalturaMediaEntries = function (_ServiceResult) {\n _inherits(KalturaMediaEntries, _ServiceResult);\n\n /**\n * @constructor\n * @param {Object} responseObj The json response\n */\n function KalturaMediaEntries(responseObj) {\n _classCallCheck(this, KalturaMediaEntries);\n\n var _this = _possibleConstructorReturn(this, (KalturaMediaEntries.__proto__ || Object.getPrototypeOf(KalturaMediaEntries)).call(this, responseObj));\n\n if (!_this.hasError) {\n _this.entries = [];\n responseObj.map(function (entry) {\n return _this.entries.push(new _kalturaMediaEntry2.default(entry));\n });\n }\n return _this;\n }\n /**\n * @member - The entries\n * @type {Array}\n */\n\n\n return KalturaMediaEntries;\n}(_baseServiceResult2.default);\n\nexports.default = KalturaMediaEntries;\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaMetadata =\n\n/**\n * @constructor\n * @param {Object} data The response\n */\nfunction KalturaMetadata(data) {\n _classCallCheck(this, KalturaMetadata);\n\n this.id = data.id;\n this.metadataProfileId = data.metadataProfileId;\n this.metadataProfileVersion = data.metadataProfileVersion;\n this.metadataProfileId = data.metadataProfileId;\n this.metadataObjectType = data.metadataObjectType;\n this.objectId = data.objectId;\n this.version = data.version;\n this.created = new Date(0);\n this.created.setUTCSeconds(data.createdAt);\n this.updated = new Date(0);\n this.updated.setUTCSeconds(data.updatedAt);\n this.status = data.status;\n this.xml = data.xml;\n};\n\nKalturaMetadata.ObjectType = {\n AD_CUE_POINT: 'adCuePointMetadata.AdCuePoint',\n ANNOTATION: 'annotationMetadata.Annotation',\n CODE_CUE_POINT: 'codeCuePointMetadata.CodeCuePoint',\n THUMB_CUE_POINT: 'thumbCuePointMetadata.thumbCuePoint',\n ENTRY: 1,\n CATEGORY: 2,\n USER: 3,\n PARTNER: 4,\n DYNAMIC_OBJECT: 5\n};\nKalturaMetadata.Status = {\n VALID: 1,\n INVALID: 2,\n DELETED: 3\n};\nexports.default = KalturaMetadata;\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nvar _kalturaAccessControlMessage = __webpack_require__(18);\n\nvar _kalturaAccessControlMessage2 = _interopRequireDefault(_kalturaAccessControlMessage);\n\nvar _kalturaPlaybackSource = __webpack_require__(29);\n\nvar _kalturaPlaybackSource2 = _interopRequireDefault(_kalturaPlaybackSource);\n\nvar _kalturaRuleAction = __webpack_require__(19);\n\nvar _kalturaRuleAction2 = _interopRequireDefault(_kalturaRuleAction);\n\nvar _kalturaFlavorAsset = __webpack_require__(27);\n\nvar _kalturaFlavorAsset2 = _interopRequireDefault(_kalturaFlavorAsset);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar KalturaPlaybackContext = function (_ServiceResult) {\n _inherits(KalturaPlaybackContext, _ServiceResult);\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n\n /**\n * @member - The playback sources\n * @type {Array}\n */\n function KalturaPlaybackContext(response) {\n _classCallCheck(this, KalturaPlaybackContext);\n\n var _this = _possibleConstructorReturn(this, (KalturaPlaybackContext.__proto__ || Object.getPrototypeOf(KalturaPlaybackContext)).call(this, response));\n\n _this.sources = [];\n _this.actions = [];\n _this.messages = [];\n _this.flavorAssets = [];\n\n if (!_this.hasError) {\n var messages = response.messages;\n if (messages) {\n messages.map(function (message) {\n return _this.messages.push(new _kalturaAccessControlMessage2.default(message));\n });\n }\n var actions = response.actions;\n if (actions) {\n actions.map(function (action) {\n return _this.actions.push(new _kalturaRuleAction2.default(action));\n });\n }\n var sources = response.sources;\n if (sources) {\n sources.map(function (source) {\n return _this.sources.push(new _kalturaPlaybackSource2.default(source));\n });\n }\n var flavorAssets = response.flavorAssets;\n if (flavorAssets) {\n flavorAssets.map(function (flavor) {\n return _this.flavorAssets.push(new _kalturaFlavorAsset2.default(flavor));\n });\n }\n }\n return _this;\n }\n /**\n * @member - The flavor assets\n * @type {Array}\n */\n\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n\n\n return KalturaPlaybackContext;\n}(_baseServiceResult2.default);\n\nexports.default = KalturaPlaybackContext;\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaPlaylist =\n\n/**\n * @constructor\n * @param {Object} playlist - The json response\n */\n\n/**\n * @member - playlist description\n * @type {string}\n */\n\n/**\n * @member - playlist id\n * @type {string}\n */\nfunction KalturaPlaylist(playlist) {\n _classCallCheck(this, KalturaPlaylist);\n\n this.id = playlist.id;\n this.name = playlist.name;\n this.description = playlist.description;\n this.poster = playlist.thumbnailUrl;\n}\n/**\n * @member - playlist poster image\n * @type {string}\n */\n\n/**\n * @member - playlist name\n * @type {string}\n */\n;\n\nexports.default = KalturaPlaylist;\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ovpService = __webpack_require__(12);\n\nvar _ovpService2 = _interopRequireDefault(_ovpService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'metadata_metadata';\n\nvar OVPMetadataService = function (_OVPService) {\n _inherits(OVPMetadataService, _OVPService);\n\n function OVPMetadataService() {\n _classCallCheck(this, OVPMetadataService);\n\n return _possibleConstructorReturn(this, (OVPMetadataService.__proto__ || Object.getPrototypeOf(OVPMetadataService)).apply(this, arguments));\n }\n\n _createClass(OVPMetadataService, null, [{\n key: 'list',\n\n /**\n * Creates an instance of RequestBuilder for metadata_metadata.list\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function list(serviceUrl, ks, entryId) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'list';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'metadata_metadata-list';\n var filter = { objectType: 'KalturaMetadataFilter', objectIdEqual: entryId, metadataObjectTypeEqual: '1' };\n request.params = { filter: filter, ks: ks };\n return request;\n }\n }]);\n\n return OVPMetadataService;\n}(_ovpService2.default);\n\nexports.default = OVPMetadataService;\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ovpService = __webpack_require__(12);\n\nvar _ovpService2 = _interopRequireDefault(_ovpService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _baseEntryResponseProfile = __webpack_require__(25);\n\nvar _baseEntryResponseProfile2 = _interopRequireDefault(_baseEntryResponseProfile);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'playlist';\n\nvar OVPPlaylistService = function (_OVPService) {\n _inherits(OVPPlaylistService, _OVPService);\n\n function OVPPlaylistService() {\n _classCallCheck(this, OVPPlaylistService);\n\n return _possibleConstructorReturn(this, (OVPPlaylistService.__proto__ || Object.getPrototypeOf(OVPPlaylistService)).apply(this, arguments));\n }\n\n _createClass(OVPPlaylistService, null, [{\n key: 'execute',\n\n /**\n * Creates an instance of RequestBuilder for playlist.getPlaybackContext\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {string} playlistId The playlist ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function execute(serviceUrl, ks, playlistId) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'execute';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = SERVICE_NAME + '-execute';\n request.params = {\n ks: ks,\n id: playlistId,\n responseProfile: new _baseEntryResponseProfile2.default()\n };\n return request;\n }\n\n /**\n * Creates an instance of RequestBuilder for playlist.list\n * @function list\n * @param {string} serviceUrl The base URL\n * @param {string} ks The ks\n * @param {string} playlistId The playlist ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n\n }, {\n key: 'get',\n value: function get(serviceUrl, ks, playlistId) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'get';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = SERVICE_NAME + '-get';\n request.params = {\n ks: ks,\n id: playlistId,\n responseProfile: {\n fields: 'id,name,description,thumbnailUrl',\n type: 1\n }\n };\n return request;\n }\n }]);\n\n return OVPPlaylistService;\n}(_ovpService2.default);\n\nexports.default = OVPPlaylistService;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ovpService = __webpack_require__(12);\n\nvar _ovpService2 = _interopRequireDefault(_ovpService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'session';\n\nvar OVPSessionService = function (_OVPService) {\n _inherits(OVPSessionService, _OVPService);\n\n function OVPSessionService() {\n _classCallCheck(this, OVPSessionService);\n\n return _possibleConstructorReturn(this, (OVPSessionService.__proto__ || Object.getPrototypeOf(OVPSessionService)).apply(this, arguments));\n }\n\n _createClass(OVPSessionService, null, [{\n key: 'anonymousSession',\n\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} partnerId The partner ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function anonymousSession(serviceUrl, partnerId) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'startWidgetSession';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'session-startWidget';\n request.params = { widgetId: '_' + partnerId };\n return request;\n }\n }]);\n\n return OVPSessionService;\n}(_ovpService2.default);\n\nexports.default = OVPSessionService;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar XmlParser = function () {\n function XmlParser() {\n _classCallCheck(this, XmlParser);\n }\n\n _createClass(XmlParser, null, [{\n key: 'xmlToJson',\n\n /**\n * Parses xml string to json object\n * @param {string} xml The xml to parse\n * @returns {{}} The parsed xml as Json object\n * @static\n */\n value: function xmlToJson(xml) {\n var obj = {};\n if (xml.nodeType === 1) {\n if (xml.attributes.length > 0) {\n obj['@attributes'] = {};\n for (var j = 0; j < xml.attributes.length; j++) {\n var attribute = xml.attributes.item(j);\n obj['@attributes'][attribute.nodeName] = attribute.nodeValue;\n }\n }\n } else if (xml.nodeType === 3) {\n obj = xml.nodeValue;\n }\n if (xml.hasChildNodes()) {\n for (var i = 0; i < xml.childNodes.length; i++) {\n var item = xml.childNodes.item(i);\n var nodeName = item.nodeName;\n if (typeof obj[nodeName] === 'undefined') {\n obj[nodeName] = this.xmlToJson(item);\n } else {\n if (typeof obj[nodeName].push === 'undefined') {\n var old = obj[nodeName];\n obj[nodeName] = [];\n obj[nodeName].push(old);\n }\n obj[nodeName].push(this.xmlToJson(item));\n }\n }\n }\n return obj;\n }\n }]);\n\n return XmlParser;\n}();\n\nexports.default = XmlParser;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// playkit-ovp-provider.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 42);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap eda9179c0c82ea51bbcc","//@flow\nexport default class RequestBuilder {\n /**\n * @member - Service name\n * @type {string}\n */\n service: string;\n /**\n * @member - Service action\n * @type {string}\n */\n action: string;\n /**\n * @member - Service params\n * @type {any}\n */\n params: any;\n /**\n * @member - Service headers\n * @type {Map}\n */\n headers: Map;\n /**\n * @member - Service URL\n * @type {string}\n */\n url: string;\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n method: string;\n /**\n * @member - Service tag\n * @type {string}\n */\n tag: string;\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n constructor(headers: Map = new Map()) {\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n getUrl(serviceUrl: string): string {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n doHttpRequest(): Promise {\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n let request = new XMLHttpRequest();\n return new Promise((resolve, reject) => {\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.status === 200) {\n let jsonResponse;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(`${e.message}, ${request.responseText}`);\n }\n if (jsonResponse && typeof jsonResponse === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);\n else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(this.method, this.url);\n this.headers.forEach((value, key) => {\n request.setRequestHeader(key, value);\n });\n request.send(this.params);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./util/request-builder.js","//@flow\nimport MediaSources from './media-sources';\n\nexport default class MediaEntry {\n static Type: {[type: string]: string} = {\n VOD: 'Vod',\n LIVE: 'Live',\n IMAGE: 'Image',\n AUDIO: 'Audio',\n UNKNOWN: 'Unknown'\n };\n\n /**\n * @member - entry id\n * @type {string}\n */\n id: string;\n /**\n * @member - entry name\n * @type {string}\n */\n name: string;\n /**\n * @member - entry sources\n * @type {MediaSources}\n */\n sources: MediaSources;\n /**\n * @member - entry duration\n * @type {number}\n */\n duration: number;\n /**\n * @member - entry type\n * @type {string}\n */\n type: string;\n /**\n * @member - entry metadata\n * @type {Object}\n */\n metadata: Object;\n /**\n * @member - DVR status\n * @type {number}\n */\n dvrStatus: number;\n /**\n * @member - media poster\n * @type {string | Array}\n */\n poster: string | Array;\n\n /**\n * @member - assetReferenceType\n * @type {string }\n */\n assetReferenceType: string;\n\n /**\n * @constructor\n */\n constructor() {\n this.metadata = new Map();\n this.sources = new MediaSources();\n this.type = MediaEntry.Type.UNKNOWN;\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaEntryObject} - The json class object.\n */\n toJSON(): ProviderMediaEntryObject {\n return {\n id: this.id,\n name: this.name,\n sources: this.sources.toJSON(),\n duration: this.duration,\n dvrStatus: this.dvrStatus,\n metadata: this.metadata,\n type: this.type,\n poster: this.poster,\n assetReferenceType: this.assetReferenceType\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-entry.js","//@flow\nexport default class ServiceResult {\n /**\n * @member - Is service returned an error\n * @type {boolean}\n */\n hasError: boolean = false;\n /**\n * @member - The service error\n * @type {ServiceError}\n */\n error: ServiceError;\n /**\n * @member - The service result data\n * @type {Object}\n */\n data: Object;\n\n /**\n * @constructor\n * @param {Object} response - Service response\n */\n constructor(response: Object) {\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n }\n}\n\nclass ServiceError {\n /**\n * @member - The error code\n * @type {string}\n */\n code: string;\n /**\n * @member - The error message\n * @type {string}\n */\n message: string;\n\n /**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n constructor(code: string, message: string) {\n this.code = code;\n this.message = message;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-service-result.js","//@flow\nimport * as JsLogger from 'js-logger';\n\nexport type LogLevelObject = {value: number, name: string};\nexport type LogLevelType = {[level: string]: LogLevelObject};\n\nconst LogLevel: LogLevelType = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\nJsLogger.useDefaults({defaultLevel: JsLogger.ERROR});\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name?: string): Object {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name?: string): LogLevelObject {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level: LogLevelObject, name?: string): void {\n getLogger(name).setLevel(level);\n}\n\nexport default getLogger;\nexport {LogLevel, getLogLevel, setLogLevel};\n\n\n\n// WEBPACK FOOTER //\n// ./util/logger.js","//@flow\nimport {clone} from '../../util/clone';\n\nconst defaultConfig: Object = {\n serviceUrl: 'https://cdnapisec.kaltura.com/api_v3',\n cdnUrl: '//cdnapisec.kaltura.com',\n serviceParams: {\n apiVersion: '3.3.0',\n format: 1\n }\n};\n\nexport default class OVPConfiguration {\n static set(clientConfig?: ProviderEnvConfigObject) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n static get(): Object {\n return clone(defaultConfig);\n }\n}\n\nexport {OVPConfiguration};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/config.js","//@flow\nexport const MediaFormat: {[name: string]: ProviderMediaFormatType} = {\n DASH: {\n name: 'dash',\n mimeType: 'application/dash+xml',\n pathExt: 'mpd'\n },\n HLS: {\n name: 'hls',\n mimeType: 'application/x-mpegURL',\n pathExt: 'm3u8'\n },\n WVM: {\n name: 'wvm',\n mimeType: 'video/wvm',\n pathExt: 'wvm'\n },\n MP4: {\n name: 'mp4',\n mimeType: 'video/mp4',\n pathExt: 'mp4'\n },\n MP3: {\n name: 'mp3',\n mimeType: 'audio/mpeg',\n pathExt: 'mp3'\n }\n};\n\nexport const SupportedStreamFormat: Map = new Map([\n ['mpegdash', MediaFormat.DASH],\n ['applehttp', MediaFormat.HLS],\n ['url', MediaFormat.MP4]\n]);\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-format.js","//@flow\nimport Drm from './drm';\n\nexport default class MediaSource {\n /**\n * @member - media source id\n * @type {string}\n */\n id: string;\n /**\n * @member - media source url\n * @type {string}\n */\n url: string;\n /**\n * @member - media source mimetype\n * @type {string}\n */\n mimetype: string;\n /**\n * @member - media source drm data\n * @type {Array}\n */\n drmData: Array;\n /**\n * @member - media source bandwidth\n * @type {number}\n */\n bandwidth: number;\n /**\n * @member - media source width\n * @type {number}\n */\n width: number;\n /**\n * @member - media source height\n * @type {number}\n */\n height: number;\n /**\n * @member - media source label\n * @type {string}\n */\n label: string;\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourceObject} - The json class object.\n */\n toJSON(): ProviderMediaSourceObject {\n const response: ProviderMediaSourceObject = {\n id: this.id,\n url: this.url,\n mimetype: this.mimetype\n };\n if (this.bandwidth) response.bandwidth = this.bandwidth;\n if (this.width) response.width = this.width;\n if (this.height) response.height = this.height;\n if (this.label) response.label = this.label;\n if (this.drmData && this.drmData.length > 0) {\n response.drmData = [];\n this.drmData.forEach(d => {\n if (Array.isArray(response.drmData)) {\n response.drmData.push(d.toJSON());\n }\n });\n }\n return response;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-source.js","// @flow\nimport MediaSource from './media-source';\nimport {MediaFormat} from './media-format';\n\nexport default class MediaSources {\n /**\n * Progressive download media sources container.\n * @type {Array}\n * @public\n */\n progressive: Array;\n /**\n * Dash media sources container.\n * @type {Array}\n * @public\n */\n dash: Array;\n /**\n * Hls media sources container.\n * @type {Array}\n * @public\n */\n hls: Array;\n\n /**\n * @constructor\n */\n constructor() {\n this.progressive = [];\n this.dash = [];\n this.hls = [];\n }\n\n /**\n * Maps the source to one of the containers according to his media format.\n * @param {MediaSource} source - The source to add to one of the containers.\n * @param {MediaFormat} mediaFormat - The media format of the source.\n * @returns {void}\n */\n map(source: MediaSource, mediaFormat: ?ProviderMediaFormatType) {\n if (mediaFormat) {\n switch (mediaFormat.name) {\n case MediaFormat.MP4.name:\n this.progressive.push(source);\n break;\n case MediaFormat.DASH.name:\n this.dash.push(source);\n break;\n case MediaFormat.HLS.name:\n this.hls.push(source);\n break;\n default:\n break;\n }\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourcesObject} - The json class object.\n */\n toJSON(): ProviderMediaSourcesObject {\n const response: ProviderMediaSourcesObject = {\n progressive: [],\n dash: [],\n hls: []\n };\n this.progressive.forEach(p => response.progressive.push(p.toJSON()));\n this.hls.forEach(h => response.hls.push(h.toJSON()));\n this.dash.forEach(d => response.dash.push(d.toJSON()));\n return response;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-sources.js","//@flow\nexport default class Drm {\n /**\n * @member - license url\n * @type {string}\n */\n licenseUrl: string;\n /**\n * @member - drm scheme\n * @type {string}\n */\n scheme: string;\n\n /**\n * @member - drm certificate\n * @type {string}\n */\n certificate: string;\n\n /**\n * @constructor\n * @param {string} licenseUrl - the license url\n * @param {string} scheme - the drm scheme\n * @param {?string} certificate - the drm certificate\n */\n constructor(licenseUrl: string, scheme: string, certificate: ?string) {\n this.licenseUrl = licenseUrl;\n this.scheme = scheme;\n if (certificate) {\n this.certificate = certificate;\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderDrmDataObject} - The json class object.\n */\n toJSON(): ProviderDrmDataObject {\n const response: ProviderDrmDataObject = {\n licenseUrl: this.licenseUrl,\n scheme: this.scheme\n };\n if (this.certificate) response.certificate = this.certificate;\n return response;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/drm.js","// @flow\nimport MultiRequestBuilder, {MultiRequestResult} from './multi-request-builder';\n\nexport default class DataLoaderManager {\n /**\n * @member - Loaders response map index\n * @type {Map>}\n * @private\n * @static\n */\n static _loadersResponseMap: Map> = new Map();\n /**\n * @member - Loaders multi request\n * @type {MultiRequestBuilder}\n * @protected\n */\n _multiRequest: MultiRequestBuilder;\n /**\n * @member - Loaders multi response\n * @type {MultiRequestResult}\n * @private\n */\n _multiResponse: MultiRequestResult;\n /**\n * @member - Loaders to execute\n * @type {Map}\n * @private\n */\n _loaders: Map = new Map();\n\n /**\n * Add loader too execution loaders map\n * @function\n * @param {Function} loader Loader to add\n * @param {Object} params Loader params\n * @returns {void}\n */\n add(loader: Function, params: Object): void {\n let execution_loader = new loader(params);\n if (execution_loader.isValid()) {\n this._loaders.set(loader.id, execution_loader);\n // Get the start index from the multiReqeust before adding current execution_loader requests\n let startIndex = this._multiRequest.requests.length;\n // Get the requests\n let requests = execution_loader.requests;\n // Add requests to muktiRequest queue\n requests.forEach(request => {\n this._multiRequest.add(request);\n });\n // Create range array of current execution_loader requests\n let executionLoaderResponseMap = Array.from(new Array(requests.length), (val, index) => index + startIndex);\n // Add to map\n DataLoaderManager._loadersResponseMap.set(loader.id, executionLoaderResponseMap);\n }\n }\n\n /**\n * Get data from all loaders using multi request\n * @function\n * @returns {Promise} Promise\n */\n fetchData(): Promise {\n return new Promise((resolve, reject) => {\n this._multiRequest.execute().then(\n response => {\n this._multiResponse = response;\n if (!response.success) {\n reject(response);\n } else {\n let preparedData: Object = this.prepareData(response);\n if (preparedData.success) {\n resolve(this._loaders);\n } else {\n reject({success: false, data: preparedData.error});\n }\n }\n },\n err => {\n reject(err);\n }\n );\n });\n }\n\n /**\n * Prepare fetched data\n * @function\n * @param {MultiRequestResult} response - The multi request result\n * @returns {Object} - The prepared data\n */\n prepareData(response: MultiRequestResult): Object {\n this._loaders.forEach(function(loader, name) {\n let loaderDataIndexes = DataLoaderManager._loadersResponseMap.get(name);\n try {\n if (loaderDataIndexes && loaderDataIndexes.length > 0) {\n loader.response = response.results.slice(loaderDataIndexes[0], loaderDataIndexes[loaderDataIndexes.length - 1] + 1);\n }\n } catch (err) {\n return {success: false, error: err};\n }\n });\n return {success: true, data: this._loaders};\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/data-loader-manager.js","//@flow\nimport RequestBuilder from '../../util/request-builder';\nimport getLogger from '../../util/logger';\nimport ServiceResult from './base-service-result';\n\nexport default class MultiRequestBuilder extends RequestBuilder {\n static _logger = getLogger('MultiRequestBuilder');\n /**\n * @member - Array of requests\n * @type {Array}\n */\n requests: Array = [];\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n add(request: RequestBuilder): MultiRequestBuilder {\n this.requests.push(request);\n const requestParams = {};\n const serviceDef: Object = {service: request.service, action: request.action};\n Object.assign(requestParams, {[this.requests.length]: Object.assign(serviceDef, request.params)});\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n execute(): Promise {\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error(`${err.message}`);\n }\n return new Promise((resolve, reject) => {\n this.doHttpRequest().then(\n data => {\n resolve(new MultiRequestResult(data));\n },\n err => {\n const errorText: string = `Error on multiRequest execution, error <${err}>.`;\n reject(errorText);\n }\n );\n });\n }\n}\n\nexport class MultiRequestResult {\n static _logger = getLogger('MultiRequestResult');\n /**\n * @member - Is success\n * @type {boolean}\n */\n success: boolean;\n /**\n * @member - Multi request response data\n * @type {Object}\n */\n results: Array = [];\n\n /**\n * @constructor\n * @param {Object} response data\n */\n constructor(response: Object) {\n this.success = true;\n const responseArr = response.result ? response.result : response;\n responseArr.forEach(result => {\n const serviceResult: ServiceResult = new ServiceResult(result);\n this.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error(\n `Service returned an error with error code: ${serviceResult.error.code} and message: ${serviceResult.error.message}.`\n );\n this.success = false;\n return;\n }\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/multi-request-builder.js","//@flow\nexport default class KalturaDrmPlaybackPluginData {\n static Scheme: {[scheme: string]: string} = {\n 'drm.PLAYREADY_CENC': 'com.microsoft.playready',\n 'drm.WIDEVINE_CENC': 'com.widevine.alpha',\n 'fairplay.FAIRPLAY': 'com.apple.fairplay',\n WIDEVINE_CENC: 'com.widevine.alpha',\n PLAYREADY_CENC: 'com.microsoft.playready',\n FAIRPLAY: 'com.apple.fairplay'\n };\n\n /**\n * @member - The drm scheme\n * @type {string}\n */\n scheme: string;\n\n /**\n * @member - The license URL\n * @type {string}\n */\n licenseURL: string;\n\n /**\n * @member - The drm certificate\n * @type {?string}\n */\n certificate: ?string;\n\n /**\n * @constructor\n * @param {Object} drm The json response\n */\n constructor(drm: any) {\n this.scheme = drm.scheme;\n this.licenseURL = drm.licenseURL;\n this.certificate = drm.certificate;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/response-types/kaltura-drm-playback-plugin-data.js","//@flow\nimport MultiRequestBuilder from '../../common/multi-request-builder';\nimport OVPConfiguration from '../config';\n\nconst SERVICE_NAME: string = 'multirequest';\n\nexport default class OVPService {\n /**\n * Gets a new instance of MultiRequestBuilder with ovp params\n * @function getMultiRequest\n * @param {string} playerVersion The player version\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n static getMultiRequest(playerVersion: string, ks: string, partnerId?: number): MultiRequestBuilder {\n const config = OVPConfiguration.get();\n const ovpParams = config.serviceParams;\n Object.assign(ovpParams, {ks: ks, clientTag: 'html5:v' + playerVersion});\n if (partnerId) {\n Object.assign(ovpParams, {partnerId: partnerId});\n }\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const multiReq = new MultiRequestBuilder(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ovpParams;\n return multiReq;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/ovp-service.js","// @flow\nimport {SupportedStreamFormat} from '../../entities/media-format';\nimport MediaEntry from '../../entities/media-entry';\nimport MediaSources from '../../entities/media-sources';\nimport MediaSource from '../../entities/media-source';\nimport type {OTTKalturaPlaybackSource} from '../ott/response-types/kaltura-playback-source';\nimport type {OVPKalturaPlaybackSource} from '../ovp/response-types/kaltura-playback-source';\n\nexport default class BaseProviderParser {\n // eslint-disable-next-line no-unused-vars\n static getMediaEntry(...parms): MediaEntry {\n throw new TypeError(`getMediaEntry method must be implement by the derived class`);\n }\n\n // eslint-disable-next-line no-unused-vars\n static _getParsedSources(...parms): MediaSources {\n throw new TypeError(`_getParsedSources method must be implement by the derived class`);\n }\n\n // eslint-disable-next-line no-unused-vars\n static _parseAdaptiveSource(...parms): MediaSource {\n throw new TypeError(`_parseAdaptiveSource method must be implement by the derived class`);\n }\n\n static _isProgressiveSource(source: OVPKalturaPlaybackSource | OTTKalturaPlaybackSource): boolean {\n const sourceFormat = SupportedStreamFormat.get(source.format);\n return !!sourceFormat && sourceFormat.name === 'mp4';\n }\n\n static hasBlockActions(assetResponse: any): any {\n if (assetResponse && assetResponse.playBackContextResult) {\n const playbackContext = assetResponse.playBackContextResult;\n for (let actionIndex = 0; actionIndex < playbackContext.actions.length; actionIndex++) {\n if (playbackContext.actions[actionIndex].type === 'BLOCK') {\n return playbackContext.actions[actionIndex];\n }\n }\n }\n return null;\n }\n\n static hasErrorMessage(assetResponse: any): any {\n const messages = assetResponse.playBackContextResult.messages;\n for (let messagesIndex = 0; messagesIndex < messages.length; messagesIndex++) {\n if (messages[messagesIndex].code !== 'OK') {\n return messages[messagesIndex];\n }\n }\n return null;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-provider-parser.js","// @flow\nimport {setLogLevel, getLogLevel, LogLevel} from '../../util/logger';\nimport DataLoaderManager from './data-loader-manager';\n\nexport default class BaseProvider {\n _partnerId: number;\n _ks: string;\n _uiConfId: ?number;\n _dataLoader: DataLoaderManager;\n _playerVersion: string;\n _logger: any;\n _isAnonymous: boolean;\n\n get partnerId(): number {\n return this._partnerId;\n }\n\n get uiConfId(): ?number {\n return this._uiConfId;\n }\n\n get ks(): string {\n return this._ks;\n }\n\n set ks(value: string): void {\n this._ks = value;\n }\n\n get playerVersion(): string {\n return this._playerVersion;\n }\n\n get isAnonymous(): boolean {\n return this._isAnonymous;\n }\n\n constructor(options: ProviderOptionsObject, playerVersion: string) {\n this._partnerId = options.partnerId;\n this._uiConfId = options.uiConfId;\n this._isAnonymous = !options.ks;\n this._ks = options.ks || '';\n this._playerVersion = playerVersion;\n if (options.logLevel && this.LogLevel[options.logLevel]) {\n setLogLevel(this.LogLevel[options.logLevel]);\n }\n }\n\n // eslint-disable-next-line no-unused-vars\n getMediaConfig(mediaInfo: MI): Promise {\n throw new TypeError(`getMediaConfig method must be implement by the derived class`);\n }\n\n // eslint-disable-next-line no-unused-vars\n _parseDataFromResponse(data: Map, ...params: any): ProviderMediaConfigObject {\n throw new TypeError(`_parseDataFromResponse method must be implement by the derived class`);\n }\n\n get LogLevel(): {[level: string]: Object} {\n return LogLevel;\n }\n\n getLogLevel(name?: string): Object {\n return getLogLevel(name);\n }\n\n setLogLevel(level: Object, name?: string): void {\n setLogLevel(level, name);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-provider.js","//@flow\nexport default class KalturaAccessControlMessage {\n /**\n * @member - The access control message\n * @type {string}\n */\n message: string;\n /**\n * @member - The access control message code\n * @@type {string}\n */\n code: string;\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: Object) {\n this.message = data.message;\n this.code = data.code;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/response-types/kaltura-access-control-message.js","//@flow\nexport default class KalturaRuleAction {\n static Type: {[type: string]: string | number} = {\n DRM_POLICY: 'drm.DRM_POLICY',\n BLOCK: 1,\n PREVIEW: 2,\n LIMIT_FLAVORS: 3,\n ADD_TO_STORAGE: 4,\n LIMIT_DELIVERY_PROFILES: 5,\n SERVE_FROM_REMOTE_SERVER: 6,\n REQUEST_HOST_REGEX: 7,\n LIMIT_THUMBNAIL_CAPTURE: 8\n };\n\n /**\n * @member - The type of the action\n * @type {string|number}\n */\n type: string | number;\n\n /**\n * @constructor\n * @param {Object} data - The response\n */\n constructor(data: Object) {\n this.type = data.type;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/response-types/kaltura-rule-action.js","//@flow\nexport default class KalturaMediaEntry {\n static EntryType: {[entryType: string]: {value: number | string}} = {\n AUTOMATIC: {value: -1},\n EXTERNAL_MEDIA: {value: 'externalMedia.externalMedia'},\n MEDIA_CLIP: {value: 1},\n MIX: {value: 2},\n PLAYLIST: {value: 5},\n DATA: {value: 6},\n LIVE_STREAM: {value: 7},\n LIVE_CHANNEL: {value: 8},\n DOCUMENT: {value: 10}\n };\n\n static MediaType: {[mediaType: string]: {value: number}} = {\n VIDEO: {value: 1},\n IMAGE: {value: 2},\n AUDIO: {value: 5},\n LIVE_STREAM_FLASH: {value: 201},\n LIVE_STREAM_WINDOWS_MEDIA: {value: 202},\n LIVE_STREAM_REAL_MEDIA: {value: 203},\n LIVE_STREAM_QUICK_TIME: {value: 204}\n };\n\n static EntryStatus: {[status: string]: string | number} = {\n ERROR_IMPORTING: -2,\n ERROR_CONVERTING: -1,\n SCAN_FAILURE: 'virusScan.ScanFailure',\n IMPORT: 0,\n INFECTED: 'virusScan.Infected',\n PRECONVERT: 1,\n READY: 2,\n DELETED: 3,\n PENDING: 4,\n MODERATE: 5,\n BLOCKED: 6,\n NO_CONTENT: 7\n };\n\n static EntryModerationStatus: {[status: string]: number} = {\n PENDING_MODERATION: 1,\n APPROVED: 2,\n REJECTED: 3,\n FLAGGED_FOR_REVIEW: 4,\n MODERATE: 5,\n AUTO_APPROVED: 6\n };\n\n /**\n * @member - The entry id\n * @type {string}\n */\n id: string;\n /**\n * @member - Entry name (Min 1 chars)\n * @type {string}\n */\n name: string;\n /**\n * @member - Entry description\n * @type {string}\n */\n description: string;\n /**\n * @member - The URL used for playback. This is not the download URL.\n * @type {string}\n */\n dataUrl: string;\n /**\n * @member - Comma separated flavor params ids that exists for this media entry\n * @type {string}\n */\n flavorParamsIds: string;\n /**\n * @member - The entry duration\n * @type {number}\n */\n duration: number;\n /**\n * @member - The type of the entry, this is auto filled by the derived entry object\n * @type {string | number}\n */\n type: string | number;\n /**\n * @member - The type of the entry, this is auto filled by the derived entry object (Image, Audio etc.)\n * @type {number}\n */\n entryType: number;\n /**\n * @member - Entry poster image\n * @type {string}\n */\n poster: string;\n /**\n * @member - DVR status\n * @type {number}\n */\n dvrStatus: number;\n /**\n * @member - Entry tags\n * @type {string}\n */\n tags: string;\n\n /**\n * @constructor\n * @param {Object} entry The json response\n */\n constructor(entry: Object) {\n this.id = entry.id;\n this.name = entry.name;\n this.description = entry.description;\n this.dataUrl = entry.dataUrl;\n this.type = entry.type;\n this.entryType = entry.mediaType;\n this.flavorParamsIds = entry.flavorParamsIds;\n this.duration = entry.duration;\n this.poster = entry.thumbnailUrl;\n this.dvrStatus = entry.dvrStatus;\n this.tags = entry.tags;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-media-entry.js","const clone = data => {\n let node;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach((e, i) => {\n if ((typeof e === 'object' && e !== {}) || (Array.isArray(e) && e.length > 0)) {\n node[i] = clone(e);\n }\n });\n } else if (typeof data === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(key => {\n if ((typeof node[key] === 'object' && node[key] !== {}) || (Array.isArray(node[key]) && node[key].length > 0)) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexport {clone};\n\n\n\n// WEBPACK FOOTER //\n// ./util/clone.js","/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine(Logger);\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/js-logger/src/logger.js\n// module id = 23\n// module chunks = 0 1","//@flow\nconst FIELDS = 'id,name,description,thumbnailUrl,dataUrl,duration,msDuration,flavorParamsIds,mediaType,type,tags,dvrStatus';\n\nexport default class BaseEntryResponseProfile {\n static Type: {[type: string]: number} = {\n INCLUDE_FIELDS: 1,\n EXCLUDE_FIELDS: 2\n };\n /**\n * @member - the response profile type\n * @type {number}\n */\n type: number;\n /**\n * @member - Comma separated fields list to be included or excluded\n * @type {string}\n */\n fields: string;\n\n /**\n * @constructor\n * @param {Object} responseProfile -\n */\n constructor(responseProfile: Object = {}) {\n this.type = responseProfile.type || BaseEntryResponseProfile.Type.INCLUDE_FIELDS;\n this.fields = responseProfile.fields || FIELDS;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/request-params/base-entry-response-profile.js","//@flow\nimport ServiceResult from '../../common/base-service-result';\nimport KalturaMediaEntry from './kaltura-media-entry';\n\nexport default class KalturaBaseEntryListResponse extends ServiceResult {\n /**\n * @member - The total count\n * @type {number}\n */\n totalCount: number;\n /**\n * @member - The entries\n * @type {Array}\n */\n entries: Array;\n\n /**\n * @constructor\n * @param {Object} responseObj The json response\n */\n constructor(responseObj: Object) {\n super(responseObj);\n if (!this.hasError) {\n this.totalCount = responseObj.totalCount;\n if (this.totalCount > 0) {\n this.entries = [];\n responseObj.objects.map(entry => this.entries.push(new KalturaMediaEntry(entry)));\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-base-entry-list-response.js","//@flow\nexport default class KalturaFlavorAsset {\n static Status: {[status: string]: number} = {\n ERROR: -1,\n QUEUED: 0,\n CONVERTING: 1,\n READY: 2,\n DELETED: 3,\n NOT_APPLICABLE: 4,\n TEMP: 5,\n WAIT_FOR_CONVERT: 6,\n IMPORTING: 7,\n VALIDATING: 8,\n EXPORTING: 9\n };\n\n /**\n * @member - The ID of the Flavor Asset\n * @type {string}\n */\n id: string;\n /**\n * @member -The Flavor Params used to create this Flavor Asset\n * @type {string}\n */\n flavorParamsId: string;\n /**\n * @member -The file extension\n * @type {string}\n */\n fileExt: string;\n /**\n * @member - The overall bitrate (in KBits) of the Flavor Asset\n * @type {string}\n */\n bitrate: number;\n /**\n * @member - The width of the Flavor Asset\n * @type {number}\n */\n width: number;\n /**\n * @member - The height of the Flavor Asset\n * @type {number}\n */\n height: number;\n /**\n * @member - The frame rate (in FPS) of the Flavor Asset\n * @type {number}\n */\n frameRate: number;\n /**\n * @member - True if this Flavor Asset is the original source\n * @type {number}\n */\n isOriginal: boolean;\n /**\n * @member - True if this Flavor Asset is playable in KDP\n * @type {boolean}\n */\n isWeb: boolean;\n /**\n * @member - The container format\n * @type {boolean}\n */\n containerFormat: string;\n /**\n *@member - The video codec\n * @type {boolean}\n */\n videoCodecId: string;\n /**\n * @member - The status of the Flavor Asset\n * @type {number}\n */\n status: number;\n /**\n * @member - The language of the flavor asset\n * @type {Status}\n */\n language: string;\n /**\n * @member - The label of the flavor asset\n * @type {string}\n */\n label: string;\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: any) {\n this.id = data.id;\n this.flavorParamsId = data.flavorParamsId;\n this.fileExt = data.fileExt;\n this.bitrate = data.bitrate;\n this.width = data.width;\n this.height = data.height;\n this.id = data.id;\n this.frameRate = data.frameRate;\n this.isOriginal = data.isOriginal;\n this.isWeb = data.isWeb;\n this.containerFormat = data.containerFormat;\n this.videoCodecId = data.videoCodecId;\n this.status = data.status;\n this.language = data.language;\n this.label = data.label;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-flavor-asset.js","//@flow\nimport ServiceResult from '../../common/base-service-result';\nimport KalturaMetadata from './kaltura-metadata';\n\nexport default class KalturaMetadataListResponse extends ServiceResult {\n totalCount: number;\n metas: Array;\n\n /**\n * @constructor\n * @param {Object} responseObj The response\n */\n constructor(responseObj: Object) {\n super(responseObj);\n if (!this.hasError) {\n this.totalCount = responseObj.totalCount;\n if (this.totalCount > 0) {\n this.metas = [];\n responseObj.objects.map(meta => this.metas.push(new KalturaMetadata(meta)));\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-metadata-list-response.js","//@flow\nimport KalturaDrmPlaybackPluginData from '../../common/response-types/kaltura-drm-playback-plugin-data';\n\nexport type OVPKalturaPlaybackSource = KalturaPlaybackSource;\n\nexport default class KalturaPlaybackSource {\n /**\n * @member - source format according to delivery profile streamer type (applehttp, mpegdash etc.)\n * @type {string}\n */\n format: string;\n /**\n * @member - delivery profile Id\n * @type {string}\n */\n deliveryProfileId: string;\n /**\n * @member - The source URL\n * @type {string}\n */\n url: string;\n /**\n * @member - comma separated string according to deliveryProfile media protocols ('http,https' etc.)\n * @type {string}\n */\n protocols: string;\n /**\n * @member - comma separated string of flavor ids\n * @type {string}\n */\n flavorIds: string;\n /**\n * @member - drm data object containing relevant license url ,scheme name and certificate\n * @type {Array}\n */\n drm: Array = [];\n\n /**\n * @constructor\n * @param {Object} source The response\n */\n constructor(source: Object) {\n this.format = source.format;\n this.deliveryProfileId = source.deliveryProfileId;\n this.url = source.url;\n this.protocols = source.protocols;\n this.flavorIds = source.flavorIds;\n if (source.drm) {\n source.drm.map(drm => this.drm.push(new KalturaDrmPlaybackPluginData(drm)));\n }\n }\n\n /**\n * Checks if source has DRM data\n * @function hasDrmData\n * @returns {boolean} Is source has DRM\n */\n hasDrmData(): boolean {\n return this.drm && this.drm.length > 0;\n }\n\n /**\n * Checks if source has flavor IDs\n * @function hasFlavorIds\n * @returns {boolean} Is source ha flavor IDs\n */\n hasFlavorIds(): boolean {\n return !!this.flavorIds && this.flavorIds.length > 0;\n }\n\n /**\n * Returns source desired protocol if supported\n * @param {string} protocol - the desired protocol for the source (base play url protocol)\n * @returns {string} - protocol if protocol is in the protocols list - if not empty string returned\n */\n getProtocol(protocol: string): string {\n let returnValue: string = '';\n if (this.protocols && this.protocols.length > 0) {\n let protocolsArr: Array = this.protocols.split(',');\n protocolsArr.forEach(p => {\n if (p === protocol) {\n returnValue = p;\n }\n });\n } else if (protocol === 'http') {\n return protocol;\n }\n return returnValue;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-playback-source.js","//@flow\nimport OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\nimport BaseEntryResponseProfile from '../request-params/base-entry-response-profile';\n\nconst SERVICE_NAME: string = 'baseEntry';\n\nexport default class OVPBaseEntryService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for baseentry.getPlaybackContext\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static getPlaybackContext(serviceUrl: string, ks: string, entryId: string): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'getPlaybackContext';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'baseEntry-getPlaybackContext';\n const contextDataParams = {objectType: 'KalturaContextDataParams', flavorTags: 'all'};\n request.params = {entryId: entryId, ks: ks, contextDataParams: contextDataParams};\n return request;\n }\n\n /**\n * Creates an instance of RequestBuilder for baseentry.list\n * @function list\n * @param {string} serviceUrl The base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @param {boolean} redirectFromEntryId whether the live entry should continue and play the VOD one after the live stream ends.\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static list(serviceUrl: string, ks: string, entryId: string, redirectFromEntryId: boolean): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'list';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'list';\n request.params = OVPBaseEntryService.getEntryListReqParams(entryId, ks, redirectFromEntryId);\n return request;\n }\n\n /**\n * Gets baseentry.list service params\n * @function getEntryListReqParams\n * @param {string} entryId The entry ID\n * @param {string} ks The ks\n * @param {boolean} redirectFromEntryId whether the live entry should continue and play the VOD one after the live stream ends.\n * @returns {{ks: string, filter: {redirectFromEntryId: string}, responseProfile: {fields: string, type: number}}} The service params object\n * @static\n */\n static getEntryListReqParams(entryId: string, ks: string, redirectFromEntryId: boolean): any {\n const filterParams = redirectFromEntryId ? {redirectFromEntryId: entryId} : {idEqual: entryId};\n return {ks: ks, filter: filterParams, responseProfile: new BaseEntryResponseProfile()};\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/base-entry-service.js","//@flow\nimport getLogger from '../../util/logger';\nimport OVPConfiguration from './config';\nimport OVPProviderParser from './provider-parser';\nimport OVPMediaEntryLoader from './loaders/media-entry-loader';\nimport OVPSessionLoader from './loaders/session-loader';\nimport OVPDataLoaderManager from './loaders/data-loader-manager';\nimport OVPPlaylistLoader from './loaders/playlist-loader';\nimport BaseProvider from '../common/base-provider';\nimport MediaEntry from '../../entities/media-entry';\nimport OVPEntryListLoader from './loaders/entry-list-loader';\n\nexport default class OVPProvider extends BaseProvider {\n _filterOptionsConfig: ProviderFilterOptionsObject = {redirectFromEntryId: true};\n\n /**\n * @constructor\n * @param {ProviderOptionsObject} options - provider options\n * @param {string} playerVersion - player version\n */\n constructor(options: ProviderOptionsObject, playerVersion: string) {\n super(options, playerVersion);\n this._logger = getLogger('OVPProvider');\n OVPConfiguration.set(options.env);\n this._setFilterOptionsConfig(options.filterOptions);\n }\n\n /**\n * Gets the backend media config.\n * @param {ProviderMediaInfoObject} mediaInfo - ovp media info\n * @returns {Promise} - The provider media config\n */\n getMediaConfig(mediaInfo: ProviderMediaInfoObject): Promise {\n if (mediaInfo.ks) {\n this.ks = mediaInfo.ks;\n }\n this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks);\n return new Promise((resolve, reject) => {\n const entryId = mediaInfo.entryId;\n if (entryId) {\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OVPSessionLoader, {partnerId: this.partnerId});\n }\n const redirectFromEntryId = this._getEntryRedirectFilter(mediaInfo);\n this._dataLoader.add(OVPMediaEntryLoader, {entryId, ks, redirectFromEntryId});\n this._dataLoader.fetchData().then(\n response => {\n resolve(this._parseDataFromResponse(response));\n },\n err => {\n reject(err);\n }\n );\n } else {\n reject({success: false, data: 'Missing mandatory parameter'});\n }\n });\n }\n\n _getEntryRedirectFilter(mediaInfo: Object): boolean {\n return typeof mediaInfo.redirectFromEntryId === 'boolean'\n ? mediaInfo.redirectFromEntryId\n : typeof this._filterOptionsConfig.redirectFromEntryId === 'boolean'\n ? this._filterOptionsConfig.redirectFromEntryId\n : true;\n }\n\n _setFilterOptionsConfig(options?: ProviderFilterOptionsObject): void {\n if (options && typeof options.redirectFromEntryId == 'boolean') {\n this._filterOptionsConfig.redirectFromEntryId = options.redirectFromEntryId;\n }\n }\n\n _parseDataFromResponse(data: Map): ProviderMediaConfigObject {\n this._logger.debug('Data parsing started');\n const mediaConfig: ProviderMediaConfigObject = {\n session: {\n isAnonymous: this._isAnonymous,\n partnerId: this.partnerId\n },\n sources: this._getDefaultSourcesObject(),\n plugins: {}\n };\n\n if (this.uiConfId) {\n mediaConfig.session.uiConfId = this.uiConfId;\n }\n if (data) {\n if (data.has(OVPSessionLoader.id)) {\n const sessionLoader = data.get(OVPSessionLoader.id);\n if (sessionLoader && sessionLoader.response) {\n this.ks = sessionLoader.response;\n mediaConfig.session.ks = this.ks;\n }\n } else {\n mediaConfig.session.ks = this.ks;\n }\n if (data.has(OVPMediaEntryLoader.id)) {\n const mediaLoader = data.get(OVPMediaEntryLoader.id);\n if (mediaLoader && mediaLoader.response) {\n this._validateData(mediaLoader.response);\n const mediaEntry = OVPProviderParser.getMediaEntry(this.isAnonymous ? '' : this.ks, this.partnerId, this.uiConfId, mediaLoader.response);\n Object.assign(mediaConfig.sources, this._getSourcesObject(mediaEntry));\n }\n }\n }\n this._logger.debug('Data parsing finished', mediaConfig);\n return mediaConfig;\n }\n\n /**\n * Gets the backend playlist config.\n * @param {ProviderPlaylistInfoObject} playlistInfo - ovp playlist info\n * @returns {Promise} - The provider playlist config\n */\n getPlaylistConfig(playlistInfo: ProviderPlaylistInfoObject): Promise {\n if (playlistInfo.ks) {\n this.ks = playlistInfo.ks;\n }\n this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks);\n return new Promise((resolve, reject) => {\n const playlistId = playlistInfo.playlistId;\n if (playlistId) {\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OVPSessionLoader, {partnerId: this.partnerId});\n }\n this._dataLoader.add(OVPPlaylistLoader, {playlistId, ks});\n // this._dataLoader.add(OVPMediaEntryLoader, {entryId: '{3:result:0:id}', ks});\n this._dataLoader.fetchData().then(\n response => {\n resolve(this._parsePlaylistDataFromResponse(response));\n },\n err => {\n reject(err);\n }\n );\n } else {\n reject({success: false, data: 'Missing mandatory parameter'});\n }\n });\n }\n\n _parsePlaylistDataFromResponse(data: Map): ProviderPlaylistObject {\n this._logger.debug('Data parsing started');\n const playlistConfig: ProviderPlaylistObject = this._getPlaylistObject();\n if (data && data.has(OVPPlaylistLoader.id)) {\n const playlistLoader = data.get(OVPPlaylistLoader.id);\n if (playlistLoader && playlistLoader.response) {\n this._validateData(playlistLoader.response);\n const playlist = OVPProviderParser.getPlaylist(playlistLoader.response);\n playlistConfig.id = playlist.id;\n playlistConfig.poster = playlist.poster;\n playlistConfig.metadata.name = playlist.name;\n playlistConfig.metadata.description = playlist.description;\n playlist.items.forEach(i => playlistConfig.items.push({sources: this._getSourcesObject(i)}));\n }\n }\n this._logger.debug('Data parsing finished', playlistConfig);\n return playlistConfig;\n }\n\n /**\n * Gets playlist config from entry list.\n * @param {ProviderEntryListObject} entryListInfo - ovp entry list info\n * @returns {Promise} - The provider playlist config\n */\n getEntryListConfig(entryListInfo: ProviderEntryListObject): Promise {\n if (entryListInfo.ks) {\n this.ks = entryListInfo.ks;\n }\n this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks);\n return new Promise((resolve, reject) => {\n const entries = entryListInfo.entries;\n if (entries && entries.length) {\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OVPSessionLoader, {partnerId: this.partnerId});\n }\n const redirectFromEntryId = this._getEntryRedirectFilter(entryListInfo);\n this._dataLoader.add(OVPEntryListLoader, {entries, ks, redirectFromEntryId});\n this._dataLoader.fetchData().then(\n response => {\n resolve(this._parseEntryListDataFromResponse(response));\n },\n err => {\n reject(err);\n }\n );\n } else {\n reject({success: false, data: 'Missing mandatory parameter'});\n }\n });\n }\n\n _parseEntryListDataFromResponse(data: Map): ProviderPlaylistObject {\n this._logger.debug('Data parsing started');\n const playlistConfig: ProviderPlaylistObject = this._getPlaylistObject();\n if (data && data.has(OVPPlaylistLoader.id)) {\n const playlistLoader = data.get(OVPPlaylistLoader.id);\n if (playlistLoader && playlistLoader.response) {\n this._validateData(playlistLoader.response);\n const entryList = OVPProviderParser.getEntryList(playlistLoader.response);\n entryList.items.forEach(i => playlistConfig.items.push({sources: this._getSourcesObject(i)}));\n }\n }\n this._logger.debug('Data parsing finished', playlistConfig);\n return playlistConfig;\n }\n\n _getPlaylistObject(): ProviderPlaylistObject {\n return {\n id: '',\n metadata: {\n name: '',\n description: ''\n },\n poster: '',\n items: []\n };\n }\n\n _validateData(response: any): void {\n const blockedAction = OVPProviderParser.hasBlockActions(response);\n if (blockedAction) {\n const errorMessage = OVPProviderParser.hasErrorMessage(response);\n if (errorMessage) {\n this._logger.error(`Entry is blocked, error message: `, errorMessage);\n throw errorMessage;\n } else {\n this._logger.error(`Entry is blocked, action: `, blockedAction);\n throw blockedAction;\n }\n }\n }\n\n _getDefaultSourcesObject(): ProviderMediaConfigSourcesObject {\n return {\n hls: [],\n dash: [],\n progressive: [],\n id: '',\n duration: 0,\n type: MediaEntry.Type.UNKNOWN,\n poster: '',\n dvr: false,\n vr: null,\n metadata: {\n name: '',\n description: '',\n tags: ''\n }\n };\n }\n\n _getSourcesObject(mediaEntry: MediaEntry) {\n const sourcesObject: ProviderMediaConfigSourcesObject = this._getDefaultSourcesObject();\n const mediaSources = mediaEntry.sources.toJSON();\n sourcesObject.hls = mediaSources.hls;\n sourcesObject.dash = mediaSources.dash;\n sourcesObject.progressive = mediaSources.progressive;\n sourcesObject.id = mediaEntry.id;\n sourcesObject.duration = mediaEntry.duration;\n sourcesObject.type = mediaEntry.type;\n sourcesObject.dvr = !!mediaEntry.dvrStatus;\n sourcesObject.poster = mediaEntry.poster;\n if (mediaEntry.metadata && typeof mediaEntry.metadata.tags === 'string' && mediaEntry.metadata.tags.indexOf('360') > -1) {\n sourcesObject.vr = {};\n }\n Object.assign(sourcesObject.metadata, mediaEntry.metadata);\n return sourcesObject;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/provider.js","//@flow\n\nimport MediaEntry from '../entities/media-entry';\n\nexport default class EntryList {\n /**\n * @member - entry list items\n * @type {Array}\n */\n items: Array;\n\n constructor() {\n this.items = [];\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/entry-list.js","//@flow\n\nimport MediaEntry from '../entities/media-entry';\n\nexport default class Playlist {\n /**\n * @member - playlist id\n * @type {string}\n */\n id: string;\n /**\n * @member - playlist name\n * @type {string}\n */\n name: string;\n /**\n * @member - playlist description\n * @type {string}\n */\n description: string;\n\n /**\n * @member - playlist poster\n * @type {string}\n */\n poster: string;\n\n /**\n * @member - playlist items\n * @type {Array}\n */\n items: Array;\n\n constructor() {\n this.items = [];\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/playlist.js","// @flow\nimport OVPProvider from './provider';\n\ndeclare var __VERSION__: string;\ndeclare var __NAME__: string;\n\nconst NAME = __NAME__ + '-ovp';\nconst VERSION = __VERSION__;\n\nexport {OVPProvider as Provider, NAME, VERSION};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/index.js","// @flow\nimport DataLoaderManager from '../../common/data-loader-manager';\nimport OVPService from '../services/ovp-service';\n\nexport default class OVPDataLoaderManager extends DataLoaderManager {\n /**\n * @constructor\n * @param {string} playerVersion - player version\n * @param {string} partnerId - partner id\n * @param {string} ks - ks\n */\n constructor(playerVersion: string, partnerId: number, ks: string = '') {\n super();\n this._multiRequest = OVPService.getMultiRequest(playerVersion, ks, partnerId);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/data-loader-manager.js","//@flow\nimport RequestBuilder from '../../../util/request-builder';\nimport OVPConfiguration from '../config';\nimport OVPBaseEntryService from '../services/base-entry-service';\nimport KalturaBaseEntryListResponse from '../response-types/kaltura-base-entry-list-response';\n\nexport default class OVPEntryListLoader implements ILoader {\n _entries: Array;\n _requests: Array;\n _response: any = {playlistItems: {entries: []}};\n\n static get id(): string {\n return 'playlist';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._entries = params.entries;\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n let mediaEntryResponse: KalturaBaseEntryListResponse;\n response.forEach(item => {\n mediaEntryResponse = new KalturaBaseEntryListResponse(item.data);\n this._response.playlistItems.entries.push(mediaEntryResponse.entries[0]);\n });\n }\n\n get response(): any {\n return this._response;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n const config = OVPConfiguration.get();\n const requests: Array = [];\n params.entries.forEach(entryId => {\n requests.push(OVPBaseEntryService.list(config.serviceUrl, params.ks, entryId, params.redirectFromEntryId));\n });\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!(this._entries && this._entries.length);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/entry-list-loader.js","//@flow\nimport RequestBuilder from '../../../util/request-builder';\nimport OVPBaseEntryService from '../services/base-entry-service';\nimport OVPMetadataService from '../services/meta-data-service';\nimport OVPConfiguration from '../config';\nimport KalturaPlaybackContext from '../response-types/kaltura-playback-context';\nimport KalturaMetadataListResponse from '../response-types/kaltura-metadata-list-response';\nimport KalturaBaseEntryListResponse from '../response-types/kaltura-base-entry-list-response';\n\nexport default class OVPMediaEntryLoader implements ILoader {\n _entryId: string;\n _requests: Array;\n _response: any = {};\n\n static get id(): string {\n return 'media';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._entryId = params.entryId;\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n let mediaEntryResponse: KalturaBaseEntryListResponse = new KalturaBaseEntryListResponse(response[0].data);\n this._response.entry = mediaEntryResponse.entries[0];\n this._response.playBackContextResult = new KalturaPlaybackContext(response[1].data);\n this._response.metadataListResult = new KalturaMetadataListResponse(response[2].data);\n }\n\n get response(): any {\n return this._response;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n const config = OVPConfiguration.get();\n const requests: Array = [];\n requests.push(OVPBaseEntryService.list(config.serviceUrl, params.ks, params.entryId, params.redirectFromEntryId));\n requests.push(OVPBaseEntryService.getPlaybackContext(config.serviceUrl, params.ks, params.entryId));\n requests.push(OVPMetadataService.list(config.serviceUrl, params.ks, params.entryId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._entryId;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/media-entry-loader.js","//@flow\nimport RequestBuilder from '../../../util/request-builder';\nimport OVPPlaylistService from '../services/playlist-service';\nimport OVPConfiguration from '../config';\nimport KalturaPlaylist from '../response-types/kaltura-playlist';\nimport KalturaMediaEntries from '../response-types/kaltura-media-entries';\n\nexport default class OVPPlaylistLoader implements ILoader {\n _playlistId: string;\n _requests: Array;\n _response: any = {};\n\n static get id(): string {\n return 'playlist';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._playlistId = params.playlistId;\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n this._response.playlistData = new KalturaPlaylist(response[0].data);\n this._response.playlistItems = new KalturaMediaEntries(response[1].data);\n }\n\n get response(): any {\n return this._response;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n const config = OVPConfiguration.get();\n const requests: Array = [];\n requests.push(OVPPlaylistService.get(config.serviceUrl, params.ks, params.playlistId));\n requests.push(OVPPlaylistService.execute(config.serviceUrl, params.ks, params.playlistId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._playlistId;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/playlist-loader.js","//@flow\nimport OVPSessionService from '../services/session-service';\nimport OVPConfiguration from '../config';\nimport RequestBuilder from '../../../util/request-builder';\n\nexport default class OVPSessionLoader implements ILoader {\n _partnerId: number;\n _requests: Array;\n _response: any = {};\n\n static get id(): string {\n return 'session';\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n this._response.ks = response[0].data.ks;\n }\n\n get response(): any {\n return this._response.ks;\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._partnerId = params.partnerId;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n const config = OVPConfiguration.get();\n const requests: Array = [];\n requests.push(OVPSessionService.anonymousSession(config.serviceUrl, params.partnerId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._partnerId;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/session-loader.js","//@flow\nimport OVPConfiguration from './config';\n\nexport default class PlaySourceUrlBuilder {\n /**\n * Returns source url by given url params\n * @function build\n * @param {Object} urlParams The params\n * @returns {string} The URL\n * @static\n */\n static build(urlParams: Object): string {\n const config = OVPConfiguration.get();\n const cdnUrl: string = config.cdnUrl;\n const partnerId: string = urlParams.partnerId;\n const entryId: string = urlParams.entryId;\n const ks: string = urlParams.ks;\n const uiConfId: string = urlParams.uiConfId;\n const format: string = urlParams.format;\n const protocol: string = urlParams.protocol;\n const extension: string = urlParams.extension;\n const flavorIds: string = urlParams.flavorIds;\n\n if (cdnUrl === '' && partnerId === '' && entryId === '' && extension === '' && format === '') {\n return '';\n }\n\n let playUrl = cdnUrl;\n if (!cdnUrl.endsWith('/')) {\n playUrl += '/';\n }\n playUrl += 'p/' + partnerId + '/sp/' + partnerId + '00' + '/playManifest/entryId/' + entryId + '/protocol/' + protocol + '/format/' + format;\n\n if (flavorIds !== '') {\n playUrl += '/flavorIds/' + flavorIds;\n } else if (uiConfId !== '') {\n playUrl += '/uiConfId/' + uiConfId;\n }\n\n if (ks !== '') {\n playUrl += '/ks/' + ks;\n }\n\n playUrl += '/a.' + extension;\n\n if (uiConfId && flavorIds !== '') {\n playUrl += '?uiConfId=' + uiConfId;\n }\n\n return playUrl;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/play-source-url-builder.js","//@flow\nimport KalturaFlavorAsset from './response-types/kaltura-flavor-asset';\nimport KalturaMetadataListResponse from './response-types/kaltura-metadata-list-response';\nimport KalturaMediaEntry from './response-types/kaltura-media-entry';\nimport KalturaPlaybackSource from './response-types/kaltura-playback-source';\nimport KalturaDrmPlaybackPluginData from '../common/response-types/kaltura-drm-playback-plugin-data';\nimport PlaySourceUrlBuilder from './play-source-url-builder';\nimport XmlParser from '../../util/xml-parser';\nimport getLogger from '../../util/logger';\nimport OVPConfiguration from './config';\nimport MediaEntry from '../../entities/media-entry';\nimport Drm from '../../entities/drm';\nimport MediaSource from '../../entities/media-source';\nimport MediaSources from '../../entities/media-sources';\nimport {SupportedStreamFormat} from '../../entities/media-format';\nimport BaseProviderParser from '../common/base-provider-parser';\nimport Playlist from '../../entities/playlist';\nimport EntryList from '../../entities/entry-list';\n\nexport default class OVPProviderParser extends BaseProviderParser {\n static _logger = getLogger('OVPProviderParser');\n\n /**\n * Returns parsed media entry by given OVP response objects\n * @function getMediaEntry\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {any} mediaEntryResponse - The media entry response\n * @returns {MediaEntry} - The media entry\n * @static\n * @public\n */\n static getMediaEntry(ks: string, partnerId: number, uiConfId: ?number, mediaEntryResponse: any): MediaEntry {\n const mediaEntry = new MediaEntry();\n const entry = mediaEntryResponse.entry;\n const playbackContext = mediaEntryResponse.playBackContextResult;\n const metadataList = mediaEntryResponse.metadataListResult;\n const kalturaSources = playbackContext.sources;\n\n mediaEntry.sources = OVPProviderParser._getParsedSources(kalturaSources, ks, partnerId, uiConfId, entry, playbackContext);\n OVPProviderParser._fillBaseData(mediaEntry, entry, metadataList);\n return mediaEntry;\n }\n\n /**\n * Returns parsed playlist by given OVP response objects\n * @function getPlaylist\n * @param {any} playlistResponse - The playlist response\n * @returns {Playlist} - The playlist\n * @static\n * @public\n */\n static getPlaylist(playlistResponse: any): Playlist {\n const playlist = new Playlist();\n const playlistData = playlistResponse.playlistData;\n const playlistItems = playlistResponse.playlistItems.entries;\n playlist.id = playlistData.id;\n playlist.name = playlistData.name;\n playlist.description = playlistData.description;\n playlist.poster = playlistData.poster;\n playlistItems.forEach((entry: KalturaMediaEntry) => {\n const mediaEntry = new MediaEntry();\n OVPProviderParser._fillBaseData(mediaEntry, entry);\n playlist.items.push(mediaEntry);\n });\n return playlist;\n }\n\n /**\n * Returns parsed entry list by given OVP response objects\n * @function getEntryList\n * @param {any} playlistResponse - response\n * @returns {Playlist} - The entry list\n * @static\n * @public\n */\n static getEntryList(playlistResponse: any): EntryList {\n const entryList = new EntryList();\n const playlistItems = playlistResponse.playlistItems.entries;\n playlistItems.forEach(entry => {\n const mediaEntry = new MediaEntry();\n OVPProviderParser._fillBaseData(mediaEntry, entry);\n entryList.items.push(mediaEntry);\n });\n return entryList;\n }\n\n static _fillBaseData(mediaEntry: MediaEntry, entry: KalturaMediaEntry, metadataList: ?KalturaMetadataListResponse) {\n mediaEntry.poster = entry.poster;\n mediaEntry.id = entry.id;\n mediaEntry.duration = entry.duration;\n mediaEntry.metadata = this._parseMetadata(metadataList);\n mediaEntry.metadata.description = entry.description || '';\n mediaEntry.metadata.name = entry.name || '';\n mediaEntry.metadata.tags = entry.tags || '';\n\n mediaEntry.type = OVPProviderParser._getEntryType(entry.entryType, entry.type);\n if (mediaEntry.type === MediaEntry.Type.LIVE) {\n mediaEntry.dvrStatus = entry.dvrStatus;\n }\n\n return mediaEntry;\n }\n\n static _getEntryType(entryTypeEnum: number, typeEnum: number | string): string {\n let type = MediaEntry.Type.UNKNOWN;\n switch (entryTypeEnum) {\n case KalturaMediaEntry.MediaType.IMAGE.value:\n type = MediaEntry.Type.IMAGE;\n break;\n case KalturaMediaEntry.MediaType.AUDIO.value:\n type = MediaEntry.Type.AUDIO;\n break;\n default:\n switch (typeEnum) {\n case KalturaMediaEntry.EntryType.MEDIA_CLIP.value:\n type = MediaEntry.Type.VOD;\n break;\n case KalturaMediaEntry.EntryType.LIVE_STREAM.value:\n case KalturaMediaEntry.EntryType.LIVE_CHANNEL.value:\n type = MediaEntry.Type.LIVE;\n break;\n default:\n type = MediaEntry.Type.UNKNOWN;\n }\n }\n return type;\n }\n\n /**\n * Returns the parsed sources\n * @function _getParsedSources\n * @param {Array} kalturaSources - The kaltura sources\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {Object} entry - The entry\n * @param {Object} playbackContext - The playback context\n * @return {MediaSources} - A media sources\n * @static\n * @private\n */\n static _getParsedSources(\n kalturaSources: Array,\n ks: string,\n partnerId: number,\n uiConfId: ?number,\n entry: Object,\n playbackContext: Object\n ): MediaSources {\n const sources = new MediaSources();\n const addAdaptiveSource = (source: KalturaPlaybackSource) => {\n const parsedSource = OVPProviderParser._parseAdaptiveSource(source, playbackContext.flavorAssets, ks, partnerId, uiConfId, entry.id);\n const sourceFormat = SupportedStreamFormat.get(source.format);\n sources.map(parsedSource, sourceFormat);\n };\n const parseAdaptiveSources = () => {\n kalturaSources.filter(source => !OVPProviderParser._isProgressiveSource(source)).forEach(addAdaptiveSource);\n };\n const parseProgressiveSources = () => {\n const progressiveSource = kalturaSources.find(OVPProviderParser._isProgressiveSource);\n sources.progressive = OVPProviderParser._parseProgressiveSources(\n progressiveSource,\n playbackContext.flavorAssets,\n ks,\n partnerId,\n uiConfId,\n entry.id\n );\n };\n if (kalturaSources && kalturaSources.length > 0) {\n parseAdaptiveSources();\n parseProgressiveSources();\n }\n return sources;\n }\n\n /**\n * Returns a parsed adaptive source\n * @function _parseAdaptiveSource\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @param {Array} flavorAssets - The flavor Assets of the kaltura source\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {string} entryId - The entry id\n * @returns {MediaSource} - The parsed adaptive kalturaSource\n * @static\n * @private\n */\n static _parseAdaptiveSource(\n kalturaSource: ?KalturaPlaybackSource,\n flavorAssets: Array,\n ks: string,\n partnerId: number,\n uiConfId: ?number,\n entryId: string\n ): MediaSource {\n const mediaSource: MediaSource = new MediaSource();\n if (kalturaSource) {\n let playUrl: string = '';\n const mediaFormat = SupportedStreamFormat.get(kalturaSource.format);\n let extension: string = '';\n if (mediaFormat) {\n extension = mediaFormat.pathExt;\n mediaSource.mimetype = mediaFormat.mimeType;\n }\n // in case playbackSource doesn't have flavors we don't need to build the url and we'll use the provided one.\n if (kalturaSource.hasFlavorIds()) {\n if (!extension && flavorAssets && flavorAssets.length > 0) {\n extension = flavorAssets[0].fileExt;\n }\n playUrl = PlaySourceUrlBuilder.build({\n entryId: entryId,\n flavorIds: kalturaSource.flavorIds,\n format: kalturaSource.format,\n ks: ks,\n partnerId: partnerId,\n uiConfId: uiConfId,\n extension: extension,\n protocol: kalturaSource.getProtocol(this._getBaseProtocol())\n });\n } else {\n playUrl = kalturaSource.url;\n }\n if (playUrl === '') {\n OVPProviderParser._logger.error(\n `failed to create play url from source, discarding source: (${entryId}_${kalturaSource.deliveryProfileId}), ${kalturaSource.format}.`\n );\n return mediaSource;\n }\n mediaSource.url = playUrl;\n mediaSource.id = entryId + '_' + kalturaSource.deliveryProfileId + ',' + kalturaSource.format;\n if (kalturaSource.hasDrmData()) {\n const drmParams: Array = [];\n kalturaSource.drm.forEach(drm => {\n drmParams.push(new Drm(drm.licenseURL, KalturaDrmPlaybackPluginData.Scheme[drm.scheme], drm.certificate));\n });\n mediaSource.drmData = drmParams;\n }\n }\n return mediaSource;\n }\n\n /**\n * Returns parsed progressive sources\n * @function _parseProgressiveSources\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @param {Array} flavorAssets - The flavor Assets of the kaltura source\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {string} entryId - The entry id\n * @returns {Array} - The parsed progressive kalturaSources\n * @static\n * @private\n */\n static _parseProgressiveSources(\n kalturaSource: ?KalturaPlaybackSource,\n flavorAssets: Array,\n ks: string,\n partnerId: number,\n uiConfId: ?number,\n entryId: string\n ): Array {\n const videoSources: Array = [];\n const audioSources: Array = [];\n if (kalturaSource) {\n const protocol = kalturaSource.getProtocol(this._getBaseProtocol());\n const format = kalturaSource.format;\n const sourceId = kalturaSource.deliveryProfileId + ',' + kalturaSource.format;\n flavorAssets.map(flavor => {\n const mediaSource: MediaSource = new MediaSource();\n mediaSource.id = flavor.id + sourceId;\n mediaSource.mimetype = flavor.fileExt === 'mp3' ? 'audio/mp3' : 'video/mp4';\n mediaSource.height = flavor.height;\n mediaSource.width = flavor.width;\n mediaSource.bandwidth = flavor.bitrate * 1024;\n mediaSource.label = flavor.label || flavor.language;\n mediaSource.url = PlaySourceUrlBuilder.build({\n entryId: entryId,\n flavorIds: flavor.id,\n format: format,\n ks: ks,\n partnerId: partnerId,\n uiConfId: uiConfId,\n extension: flavor.fileExt,\n protocol: protocol\n });\n if (flavor.height && flavor.width) {\n videoSources.push(mediaSource);\n } else {\n audioSources.push(mediaSource);\n }\n });\n }\n //If we have only audio flavors return them, otherwise return video flavors\n return audioSources.length && !videoSources.length ? audioSources : videoSources;\n }\n\n /**\n * Ovp metadata parser\n * @function _parseMetaData\n * @param {KalturaMetadataListResponse} metadataList The metadata list\n * @returns {Object} Parsed metadata\n * @static\n * @private\n */\n static _parseMetadata(metadataList: ?KalturaMetadataListResponse): Object {\n const metadata = {};\n if (metadataList && metadataList.metas && metadataList.metas.length > 0) {\n metadataList.metas.forEach(meta => {\n let metaXml: Object;\n const domParser: DOMParser = new DOMParser();\n meta.xml = meta.xml.replace(/\\r?\\n|\\r/g, '');\n meta.xml = meta.xml.replace(/>\\s*/g, '>');\n meta.xml = meta.xml.replace(/>\\s*/g, '>');\n metaXml = domParser.parseFromString(meta.xml, 'text/xml');\n const metasObj: Object = XmlParser.xmlToJson(metaXml);\n const metaKeys = Object.keys(metasObj.metadata);\n metaKeys.forEach(key => {\n metadata[key] = metasObj.metadata[key]['#text'];\n });\n });\n }\n return metadata;\n }\n\n /**\n * Returns the base protocol\n * @function _getBaseProtocol\n * @returns {string} - The base protocol\n * @static\n * @private\n */\n static _getBaseProtocol(): string {\n const config = OVPConfiguration.get();\n const protocolRegex = /^https?:/;\n const result = protocolRegex.exec(config.cdnUrl);\n const protocol = result ? result[0] : document.location.protocol;\n if (typeof protocol === 'string') {\n return protocol.slice(0, -1); // remove ':' from the end\n }\n return 'https';\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/provider-parser.js","//@flow\nimport ServiceResult from '../../common/base-service-result';\nimport KalturaMediaEntry from './kaltura-media-entry';\n\nexport default class KalturaMediaEntries extends ServiceResult {\n /**\n * @member - The entries\n * @type {Array}\n */\n entries: Array;\n\n /**\n * @constructor\n * @param {Object} responseObj The json response\n */\n constructor(responseObj: Object) {\n super(responseObj);\n if (!this.hasError) {\n this.entries = [];\n responseObj.map(entry => this.entries.push(new KalturaMediaEntry(entry)));\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-media-entries.js","//@flow\nexport default class KalturaMetadata {\n static ObjectType: {[type: string]: string | number} = {\n AD_CUE_POINT: 'adCuePointMetadata.AdCuePoint',\n ANNOTATION: 'annotationMetadata.Annotation',\n CODE_CUE_POINT: 'codeCuePointMetadata.CodeCuePoint',\n THUMB_CUE_POINT: 'thumbCuePointMetadata.thumbCuePoint',\n ENTRY: 1,\n CATEGORY: 2,\n USER: 3,\n PARTNER: 4,\n DYNAMIC_OBJECT: 5\n };\n\n static Status: {[status: string]: number} = {\n VALID: 1,\n INVALID: 2,\n DELETED: 3\n };\n\n id: number;\n metadataProfileId: number;\n metadataProfileVersion: number;\n metadataObjectType: string | number;\n objectId: string;\n version: number;\n created: Date;\n updated: Date;\n status: number;\n xml: string;\n\n /**\n * @constructor\n * @param {Object} data The response\n */\n constructor(data: Object) {\n this.id = data.id;\n this.metadataProfileId = data.metadataProfileId;\n this.metadataProfileVersion = data.metadataProfileVersion;\n this.metadataProfileId = data.metadataProfileId;\n this.metadataObjectType = data.metadataObjectType;\n this.objectId = data.objectId;\n this.version = data.version;\n this.created = new Date(0);\n this.created.setUTCSeconds(data.createdAt);\n this.updated = new Date(0);\n this.updated.setUTCSeconds(data.updatedAt);\n this.status = data.status;\n this.xml = data.xml;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-metadata.js","//@flow\nimport ServiceResult from '../../common/base-service-result';\nimport KalturaAccessControlMessage from '../../common/response-types/kaltura-access-control-message';\nimport KalturaPlaybackSource from './kaltura-playback-source';\nimport KalturaRuleAction from '../../common/response-types/kaltura-rule-action';\nimport KalturaFlavorAsset from './kaltura-flavor-asset';\n\nexport default class KalturaPlaybackContext extends ServiceResult {\n /**\n * @member - The playback sources\n * @type {Array}\n */\n sources: Array = [];\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n actions: Array = [];\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n messages: Array = [];\n /**\n * @member - The flavor assets\n * @type {Array}\n */\n flavorAssets: Array = [];\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n constructor(response: Object) {\n super(response);\n if (!this.hasError) {\n const messages = response.messages;\n if (messages) {\n messages.map(message => this.messages.push(new KalturaAccessControlMessage(message)));\n }\n const actions = response.actions;\n if (actions) {\n actions.map(action => this.actions.push(new KalturaRuleAction(action)));\n }\n const sources = response.sources;\n if (sources) {\n sources.map(source => this.sources.push(new KalturaPlaybackSource(source)));\n }\n const flavorAssets = response.flavorAssets;\n if (flavorAssets) {\n flavorAssets.map(flavor => this.flavorAssets.push(new KalturaFlavorAsset(flavor)));\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-playback-context.js","//@flow\n\nexport default class KalturaPlaylist {\n /**\n * @member - playlist id\n * @type {string}\n */\n id: string;\n /**\n * @member - playlist name\n * @type {string}\n */\n name: string;\n /**\n * @member - playlist description\n * @type {string}\n */\n description: string;\n /**\n * @member - playlist poster image\n * @type {string}\n */\n poster: string;\n\n /**\n * @constructor\n * @param {Object} playlist - The json response\n */\n constructor(playlist: Object) {\n this.id = playlist.id;\n this.name = playlist.name;\n this.description = playlist.description;\n this.poster = playlist.thumbnailUrl;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-playlist.js","//@flow\nimport OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\n\nconst SERVICE_NAME: string = 'metadata_metadata';\n\nexport default class OVPMetadataService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for metadata_metadata.list\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static list(serviceUrl: string, ks: string, entryId: string): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'list';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'metadata_metadata-list';\n const filter = {objectType: 'KalturaMetadataFilter', objectIdEqual: entryId, metadataObjectTypeEqual: '1'};\n request.params = {filter: filter, ks: ks};\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/meta-data-service.js","//@flow\nimport OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\nimport BaseEntryResponseProfile from '../request-params/base-entry-response-profile';\n\nconst SERVICE_NAME: string = 'playlist';\n\nexport default class OVPPlaylistService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for playlist.getPlaybackContext\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {string} playlistId The playlist ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static execute(serviceUrl: string, ks: string, playlistId: string): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'execute';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = `${SERVICE_NAME}-execute`;\n request.params = {\n ks: ks,\n id: playlistId,\n responseProfile: new BaseEntryResponseProfile()\n };\n return request;\n }\n\n /**\n * Creates an instance of RequestBuilder for playlist.list\n * @function list\n * @param {string} serviceUrl The base URL\n * @param {string} ks The ks\n * @param {string} playlistId The playlist ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static get(serviceUrl: string, ks: string, playlistId: string): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'get';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = `${SERVICE_NAME}-get`;\n request.params = {\n ks: ks,\n id: playlistId,\n responseProfile: {\n fields: 'id,name,description,thumbnailUrl',\n type: 1\n }\n };\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/playlist-service.js","//@flow\nimport OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\n\nconst SERVICE_NAME: string = 'session';\n\nexport default class OVPSessionService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} partnerId The partner ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static anonymousSession(serviceUrl: string, partnerId: number): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'startWidgetSession';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'session-startWidget';\n request.params = {widgetId: '_' + partnerId};\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/session-service.js","//@flow\nexport default class XmlParser {\n /**\n * Parses xml string to json object\n * @param {string} xml The xml to parse\n * @returns {{}} The parsed xml as Json object\n * @static\n */\n static xmlToJson(xml: Object) {\n let obj = {};\n if (xml.nodeType === 1) {\n if (xml.attributes.length > 0) {\n obj['@attributes'] = {};\n for (let j = 0; j < xml.attributes.length; j++) {\n let attribute = xml.attributes.item(j);\n obj['@attributes'][attribute.nodeName] = attribute.nodeValue;\n }\n }\n } else if (xml.nodeType === 3) {\n obj = xml.nodeValue;\n }\n if (xml.hasChildNodes()) {\n for (let i = 0; i < xml.childNodes.length; i++) {\n let item = xml.childNodes.item(i);\n let nodeName = item.nodeName;\n if (typeof obj[nodeName] === 'undefined') {\n obj[nodeName] = this.xmlToJson(item);\n } else {\n if (typeof obj[nodeName].push === 'undefined') {\n let old = obj[nodeName];\n obj[nodeName] = [];\n obj[nodeName].push(old);\n }\n obj[nodeName].push(this.xmlToJson(item));\n }\n }\n }\n return obj;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./util/xml-parser.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["./providers/webpack/universalModuleDefinition","./providers/playkit-ovp-provider.js","./providers/webpack/bootstrap 93ff0b3f93c7e54c46e2","./providers/./util/request-builder.js","./providers/./entities/media-entry.js","./providers/./k-provider/common/base-service-result.js","./providers/./util/logger.js","./providers/./k-provider/ovp/config.js","./providers/./entities/media-format.js","./providers/./entities/media-source.js","./providers/./entities/media-sources.js","./providers/./entities/drm.js","./providers/./k-provider/common/data-loader-manager.js","./providers/./k-provider/common/multi-request-builder.js","./providers/./k-provider/common/response-types/kaltura-drm-playback-plugin-data.js","./providers/./k-provider/ovp/services/ovp-service.js","./providers/./k-provider/common/base-provider-parser.js","./providers/./k-provider/common/base-provider.js","./providers/./k-provider/common/response-types/kaltura-access-control-message.js","./providers/./k-provider/common/response-types/kaltura-rule-action.js","./providers/./k-provider/ovp/response-types/kaltura-media-entry.js","./providers/./util/clone.js","./providers/../~/js-logger/src/logger.js","./providers/./k-provider/ovp/request-params/base-entry-response-profile.js","./providers/./k-provider/ovp/response-types/kaltura-base-entry-list-response.js","./providers/./k-provider/ovp/response-types/kaltura-flavor-asset.js","./providers/./k-provider/ovp/response-types/kaltura-metadata-list-response.js","./providers/./k-provider/ovp/response-types/kaltura-playback-source.js","./providers/./k-provider/ovp/services/base-entry-service.js","./providers/./k-provider/ovp/provider.js","./providers/./entities/entry-list.js","./providers/./entities/playlist.js","./providers/./k-provider/ovp/index.js","./providers/./k-provider/ovp/loaders/data-loader-manager.js","./providers/./k-provider/ovp/loaders/entry-list-loader.js","./providers/./k-provider/ovp/loaders/media-entry-loader.js","./providers/./k-provider/ovp/loaders/playlist-loader.js","./providers/./k-provider/ovp/loaders/session-loader.js","./providers/./k-provider/ovp/play-source-url-builder.js","./providers/./k-provider/ovp/provider-parser.js","./providers/./k-provider/ovp/response-types/kaltura-media-entries.js","./providers/./k-provider/ovp/response-types/kaltura-metadata.js","./providers/./k-provider/ovp/response-types/kaltura-playback-context.js","./providers/./k-provider/ovp/response-types/kaltura-playlist.js","./providers/./k-provider/ovp/services/meta-data-service.js","./providers/./k-provider/ovp/services/playlist-service.js","./providers/./k-provider/ovp/services/session-service.js","./providers/./util/xml-parser.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","_classCallCheck","instance","Constructor","TypeError","_typeof","Symbol","iterator","obj","constructor","_createClass","defineProperties","target","props","length","descriptor","writable","key","protoProps","staticProps","RequestBuilder","headers","arguments","undefined","Map","serviceUrl","service","action","_this","url","Error","request","XMLHttpRequest","Promise","resolve","reject","onreadystatechange","readyState","status","jsonResponse","JSON","parse","responseText","e","message","code","open","method","forEach","setRequestHeader","send","params","default","_mediaSources","_mediaSources2","MediaEntry","metadata","sources","type","Type","UNKNOWN","id","toJSON","duration","dvrStatus","poster","assetReferenceType","VOD","LIVE","IMAGE","AUDIO","ServiceResult","response","hasError","objectType","error","ServiceError","data","getLogger","JsLogger","getLogLevel","getLevel","setLogLevel","level","setLevel","LogLevel","_jsLogger","newObj","DEBUG","INFO","TIME","WARN","ERROR","OFF","useDefaults","defaultLevel","OVPConfiguration","_clone","defaultConfig","cdnUrl","serviceParams","apiVersion","format","clientConfig","assign","clone","MediaFormat","DASH","mimeType","pathExt","HLS","WVM","MP4","MP3","SupportedStreamFormat","_drm","MediaSource","mimetype","bandwidth","width","height","label","drmData","Array","isArray","push","_mediaSource","_mediaFormat","MediaSources","progressive","dash","hls","source","mediaFormat","h","Drm","licenseUrl","scheme","certificate","_multiRequestBuilder","DataLoaderManager","_loaders","loader","execution_loader","isValid","set","startIndex","_multiRequest","requests","add","executionLoaderResponseMap","from","val","index","_loadersResponseMap","_this2","execute","then","_multiResponse","success","preparedData","prepareData","err","loaderDataIndexes","results","slice","_interopRequireDefault","_defineProperty","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","MultiRequestResult","_requestBuilder","_requestBuilder2","_logger","_logger2","_baseServiceResult","_baseServiceResult2","MultiRequestBuilder","_RequestBuilder","_ref","_temp","_ret","_len","args","_key","getPrototypeOf","apply","concat","requestParams","serviceDef","stringify","doHttpRequest","errorText","_this3","result","serviceResult","KalturaDrmPlaybackPluginData","drm","licenseURL","Scheme","drm.PLAYREADY_CENC","drm.WIDEVINE_CENC","fairplay.FAIRPLAY","WIDEVINE_CENC","PLAYREADY_CENC","FAIRPLAY","_multiRequestBuilder2","_config","_config2","OVPService","playerVersion","ks","partnerId","config","ovpParams","clientTag","multiReq","getUrl","_mediaEntry","BaseProviderParser","sourceFormat","assetResponse","playBackContextResult","playbackContext","actionIndex","actions","messages","messagesIndex","_dataLoaderManager","BaseProvider","options","_partnerId","_uiConfId","uiConfId","_isAnonymous","_ks","_playerVersion","logLevel","mediaInfo","KalturaAccessControlMessage","KalturaRuleAction","DRM_POLICY","BLOCK","PREVIEW","LIMIT_FLAVORS","ADD_TO_STORAGE","LIMIT_DELIVERY_PROFILES","SERVE_FROM_REMOTE_SERVER","REQUEST_HOST_REGEX","LIMIT_THUMBNAIL_CAPTURE","KalturaMediaEntry","entry","description","dataUrl","entryType","mediaType","flavorParamsIds","thumbnailUrl","tags","EntryType","AUTOMATIC","EXTERNAL_MEDIA","MEDIA_CLIP","MIX","PLAYLIST","DATA","LIVE_STREAM","LIVE_CHANNEL","DOCUMENT","MediaType","VIDEO","LIVE_STREAM_FLASH","LIVE_STREAM_WINDOWS_MEDIA","LIVE_STREAM_REAL_MEDIA","LIVE_STREAM_QUICK_TIME","EntryStatus","ERROR_IMPORTING","ERROR_CONVERTING","SCAN_FAILURE","IMPORT","INFECTED","PRECONVERT","READY","DELETED","PENDING","MODERATE","BLOCKED","NO_CONTENT","EntryModerationStatus","PENDING_MODERATION","APPROVED","REJECTED","FLAGGED_FOR_REVIEW","AUTO_APPROVED","node","keys","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","global","Logger","VERSION","logHandler","contextualLoggersByNameMap","bind","scope","func","merge","defineLogLevel","ContextualLogger","defaultContext","context","filterLevel","log","info","newLevel","enabledFor","lvl","debug","invoke","warn","time","timeEnd","msgArgs","globalLogger","L","setHandler","createDefaultHandler","formatter","unshift","timerStartTimeByLabelMap","invokeConsoleMethod","hdlr","Function","console","timerLabel","Date","getTime","BaseEntryResponseProfile","responseProfile","INCLUDE_FIELDS","fields","EXCLUDE_FIELDS","_kalturaMediaEntry","_kalturaMediaEntry2","KalturaBaseEntryListResponse","_ServiceResult","responseObj","totalCount","entries","objects","map","KalturaFlavorAsset","flavorParamsId","fileExt","bitrate","frameRate","isOriginal","isWeb","containerFormat","videoCodecId","language","Status","QUEUED","CONVERTING","NOT_APPLICABLE","TEMP","WAIT_FOR_CONVERT","IMPORTING","VALIDATING","EXPORTING","_kalturaMetadata","_kalturaMetadata2","KalturaMetadataListResponse","metas","meta","_kalturaDrmPlaybackPluginData","_kalturaDrmPlaybackPluginData2","KalturaPlaybackSource","deliveryProfileId","protocols","flavorIds","protocol","returnValue","split","_ovpService","_ovpService2","_baseEntryResponseProfile","_baseEntryResponseProfile2","OVPBaseEntryService","_OVPService","entryId","tag","contextDataParams","flavorTags","getEntryListReqParams","filter","redirectFromEntryId","_providerParser","_providerParser2","_mediaEntryLoader","_mediaEntryLoader2","_sessionLoader","_sessionLoader2","_dataLoaderManager2","_playlistLoader","_playlistLoader2","_baseProvider","_baseProvider2","_mediaEntry2","_entryListLoader","_entryListLoader2","OVPProvider","_BaseProvider","env","_dataLoader","fetchData","_parseDataFromResponse","mediaConfig","session","isAnonymous","_getDefaultSourcesObject","plugins","has","sessionLoader","mediaLoader","_validateData","mediaEntry","getMediaEntry","_getSourcesObject","playlistInfo","playlistId","_parsePlaylistDataFromResponse","_this4","playlistConfig","_getPlaylistObject","playlistLoader","playlist","getPlaylist","items","entryListInfo","_this5","_parseEntryListDataFromResponse","_this6","getEntryList","blockedAction","hasBlockActions","errorMessage","hasErrorMessage","dvr","vr","sourcesObject","mediaSources","indexOf","EntryList","Playlist","NAME","Provider","_provider","_provider2","OVPDataLoaderManager","_DataLoaderManager","getMultiRequest","_baseEntryService","_baseEntryService2","_kalturaBaseEntryListResponse","_kalturaBaseEntryListResponse2","OVPEntryListLoader","_response","playlistItems","buildRequests","_entries","list","_requests","mediaEntryResponse","item","_metaDataService","_metaDataService2","_kalturaPlaybackContext","_kalturaPlaybackContext2","_kalturaMetadataListResponse","_kalturaMetadataListResponse2","OVPMediaEntryLoader","_entryId","getPlaybackContext","metadataListResult","_playlistService","_playlistService2","_kalturaPlaylist","_kalturaPlaylist2","_kalturaMediaEntries","_kalturaMediaEntries2","OVPPlaylistLoader","_playlistId","playlistData","_sessionService","_sessionService2","OVPSessionLoader","anonymousSession","PlaySourceUrlBuilder","urlParams","extension","playUrl","endsWith","_kalturaFlavorAsset","_kalturaPlaybackSource","_playSourceUrlBuilder","_playSourceUrlBuilder2","_xmlParser","_xmlParser2","_drm2","_mediaSource2","_baseProviderParser","_baseProviderParser2","_playlist","_playlist2","_entryList","_entryList2","OVPProviderParser","_BaseProviderParser","metadataList","kalturaSources","_getParsedSources","_fillBaseData","playlistResponse","entryList","_parseMetadata","_getEntryType","entryTypeEnum","typeEnum","addAdaptiveSource","parsedSource","_parseAdaptiveSource","flavorAssets","_isProgressiveSource","progressiveSource","find","_parseProgressiveSources","kalturaSource","mediaSource","hasFlavorIds","build","getProtocol","_getBaseProtocol","hasDrmData","drmParams","videoSources","audioSources","sourceId","flavor","metaXml","domParser","DOMParser","xml","replace","parseFromString","metasObj","xmlToJson","protocolRegex","exec","document","location","KalturaMediaEntries","KalturaMetadata","metadataProfileId","metadataProfileVersion","metadataObjectType","objectId","version","created","setUTCSeconds","createdAt","updated","updatedAt","ObjectType","AD_CUE_POINT","ANNOTATION","CODE_CUE_POINT","THUMB_CUE_POINT","ENTRY","CATEGORY","USER","PARTNER","DYNAMIC_OBJECT","VALID","INVALID","_kalturaAccessControlMessage","_kalturaAccessControlMessage2","_kalturaPlaybackSource2","_kalturaRuleAction","_kalturaRuleAction2","_kalturaFlavorAsset2","KalturaPlaybackContext","KalturaPlaylist","OVPMetadataService","objectIdEqual","metadataObjectTypeEqual","OVPPlaylistService","SERVICE_NAME","OVPSessionService","widgetId","XmlParser","nodeType","attributes","j","attribute","nodeName","nodeValue","hasChildNodes","childNodes","old"],"mappings":"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","file":"playkit-ovp-provider.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ovp\"] = factory();\n\telse\n\t\troot[\"playkit\"] = root[\"playkit\"] || {}, root[\"playkit\"][\"providers\"] = root[\"playkit\"][\"providers\"] || {}, root[\"playkit\"][\"providers\"][\"ovp\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ovp\"] = factory();\n\telse\n\t\troot[\"playkit\"] = root[\"playkit\"] || {}, root[\"playkit\"][\"providers\"] = root[\"playkit\"][\"providers\"] || {}, root[\"playkit\"][\"providers\"][\"ovp\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 42);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar RequestBuilder = function () {\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n\n /**\n * @member - Service headers\n * @type {Map}\n */\n\n /**\n * @member - Service action\n * @type {string}\n */\n function RequestBuilder() {\n var headers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map();\n\n _classCallCheck(this, RequestBuilder);\n\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n\n /**\n * @member - Service tag\n * @type {string}\n */\n\n /**\n * @member - Service URL\n * @type {string}\n */\n\n /**\n * @member - Service params\n * @type {any}\n */\n\n /**\n * @member - Service name\n * @type {string}\n */\n\n\n _createClass(RequestBuilder, [{\n key: 'getUrl',\n value: function getUrl(serviceUrl) {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n\n }, {\n key: 'doHttpRequest',\n value: function doHttpRequest() {\n var _this = this;\n\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n var request = new XMLHttpRequest();\n return new Promise(function (resolve, reject) {\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n var jsonResponse = void 0;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(e.message + ', ' + request.responseText);\n }\n if (jsonResponse && (typeof jsonResponse === 'undefined' ? 'undefined' : _typeof(jsonResponse)) === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(_this.method, _this.url);\n _this.headers.forEach(function (value, key) {\n request.setRequestHeader(key, value);\n });\n request.send(_this.params);\n });\n }\n }]);\n\n return RequestBuilder;\n}();\n\nexports.default = RequestBuilder;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _mediaSources = __webpack_require__(7);\n\nvar _mediaSources2 = _interopRequireDefault(_mediaSources);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MediaEntry = function () {\n\n /**\n * @constructor\n */\n\n\n /**\n * @member - entry id\n * @type {string}\n */\n\n /**\n * @member - entry name\n * @type {string}\n */\n\n /**\n * @member - entry sources\n * @type {MediaSources}\n */\n\n /**\n * @member - entry duration\n * @type {number}\n */\n\n /**\n * @member - entry type\n * @type {string}\n */\n\n /**\n * @member - entry metadata\n * @type {Object}\n */\n\n /**\n * @member - DVR status\n * @type {number}\n */\n\n /**\n * @member - media poster\n * @type {string | Array}\n */\n\n\n /**\n * @member - assetReferenceType\n * @type {string }\n */\n function MediaEntry() {\n _classCallCheck(this, MediaEntry);\n\n this.metadata = new Map();\n this.sources = new _mediaSources2.default();\n this.type = MediaEntry.Type.UNKNOWN;\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaEntryObject} - The json class object.\n */\n\n\n _createClass(MediaEntry, [{\n key: 'toJSON',\n value: function toJSON() {\n return {\n id: this.id,\n name: this.name,\n sources: this.sources.toJSON(),\n duration: this.duration,\n dvrStatus: this.dvrStatus,\n metadata: this.metadata,\n type: this.type,\n poster: this.poster,\n assetReferenceType: this.assetReferenceType\n };\n }\n }]);\n\n return MediaEntry;\n}();\n\nMediaEntry.Type = {\n VOD: 'Vod',\n LIVE: 'Live',\n IMAGE: 'Image',\n AUDIO: 'Audio',\n UNKNOWN: 'Unknown'\n};\nexports.default = MediaEntry;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ServiceResult =\n\n/**\n * @constructor\n * @param {Object} response - Service response\n */\n\n/**\n * @member - The service error\n * @type {ServiceError}\n */\n\n/**\n * @member - The service result data\n * @type {Object}\n */\nfunction ServiceResult(response) {\n _classCallCheck(this, ServiceResult);\n\n this.hasError = false;\n\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n}\n/**\n * @member - Is service returned an error\n * @type {boolean}\n */\n;\n\nexports.default = ServiceResult;\n\nvar ServiceError =\n\n/**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n\n/**\n * @member - The error code\n * @type {string}\n */\nfunction ServiceError(code, message) {\n _classCallCheck(this, ServiceError);\n\n this.code = code;\n this.message = message;\n}\n/**\n * @member - The error message\n * @type {string}\n */\n;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setLogLevel = exports.getLogLevel = exports.LogLevel = undefined;\n\nvar _jsLogger = __webpack_require__(23);\n\nvar JsLogger = _interopRequireWildcard(_jsLogger);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar LogLevel = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\n\nJsLogger.useDefaults({ defaultLevel: JsLogger.ERROR });\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name) {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name) {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level, name) {\n getLogger(name).setLevel(level);\n}\n\nexports.default = getLogger;\nexports.LogLevel = LogLevel;\nexports.getLogLevel = getLogLevel;\nexports.setLogLevel = setLogLevel;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OVPConfiguration = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(22);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultConfig = {\n serviceUrl: 'https://cdnapisec.kaltura.com/api_v3',\n cdnUrl: '//cdnapisec.kaltura.com',\n serviceParams: {\n apiVersion: '3.3.0',\n format: 1\n }\n};\n\nvar OVPConfiguration = function () {\n function OVPConfiguration() {\n _classCallCheck(this, OVPConfiguration);\n }\n\n _createClass(OVPConfiguration, null, [{\n key: 'set',\n value: function set(clientConfig) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n }, {\n key: 'get',\n value: function get() {\n return (0, _clone.clone)(defaultConfig);\n }\n }]);\n\n return OVPConfiguration;\n}();\n\nexports.default = OVPConfiguration;\nexports.OVPConfiguration = OVPConfiguration;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar MediaFormat = exports.MediaFormat = {\n DASH: {\n name: 'dash',\n mimeType: 'application/dash+xml',\n pathExt: 'mpd'\n },\n HLS: {\n name: 'hls',\n mimeType: 'application/x-mpegURL',\n pathExt: 'm3u8'\n },\n WVM: {\n name: 'wvm',\n mimeType: 'video/wvm',\n pathExt: 'wvm'\n },\n MP4: {\n name: 'mp4',\n mimeType: 'video/mp4',\n pathExt: 'mp4'\n },\n MP3: {\n name: 'mp3',\n mimeType: 'audio/mpeg',\n pathExt: 'mp3'\n }\n};\n\nvar SupportedStreamFormat = exports.SupportedStreamFormat = new Map([['mpegdash', MediaFormat.DASH], ['applehttp', MediaFormat.HLS], ['url', MediaFormat.MP4]]);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _drm = __webpack_require__(8);\n\nvar _drm2 = _interopRequireDefault(_drm);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MediaSource = function () {\n function MediaSource() {\n _classCallCheck(this, MediaSource);\n }\n\n _createClass(MediaSource, [{\n key: 'toJSON',\n\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourceObject} - The json class object.\n */\n\n /**\n * @member - media source height\n * @type {number}\n */\n\n /**\n * @member - media source bandwidth\n * @type {number}\n */\n\n /**\n * @member - media source mimetype\n * @type {string}\n */\n\n /**\n * @member - media source id\n * @type {string}\n */\n value: function toJSON() {\n var response = {\n id: this.id,\n url: this.url,\n mimetype: this.mimetype\n };\n if (this.bandwidth) response.bandwidth = this.bandwidth;\n if (this.width) response.width = this.width;\n if (this.height) response.height = this.height;\n if (this.label) response.label = this.label;\n if (this.drmData && this.drmData.length > 0) {\n response.drmData = [];\n this.drmData.forEach(function (d) {\n if (Array.isArray(response.drmData)) {\n response.drmData.push(d.toJSON());\n }\n });\n }\n return response;\n }\n /**\n * @member - media source label\n * @type {string}\n */\n\n /**\n * @member - media source width\n * @type {number}\n */\n\n /**\n * @member - media source drm data\n * @type {Array}\n */\n\n /**\n * @member - media source url\n * @type {string}\n */\n\n }]);\n\n return MediaSource;\n}();\n\nexports.default = MediaSource;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _mediaSource = __webpack_require__(6);\n\nvar _mediaSource2 = _interopRequireDefault(_mediaSource);\n\nvar _mediaFormat = __webpack_require__(5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MediaSources = function () {\n\n /**\n * @constructor\n */\n\n /**\n * Dash media sources container.\n * @type {Array}\n * @public\n */\n function MediaSources() {\n _classCallCheck(this, MediaSources);\n\n this.progressive = [];\n this.dash = [];\n this.hls = [];\n }\n\n /**\n * Maps the source to one of the containers according to his media format.\n * @param {MediaSource} source - The source to add to one of the containers.\n * @param {MediaFormat} mediaFormat - The media format of the source.\n * @returns {void}\n */\n\n /**\n * Hls media sources container.\n * @type {Array}\n * @public\n */\n\n /**\n * Progressive download media sources container.\n * @type {Array}\n * @public\n */\n\n\n _createClass(MediaSources, [{\n key: 'map',\n value: function map(source, mediaFormat) {\n if (mediaFormat) {\n switch (mediaFormat.name) {\n case _mediaFormat.MediaFormat.MP4.name:\n this.progressive.push(source);\n break;\n case _mediaFormat.MediaFormat.DASH.name:\n this.dash.push(source);\n break;\n case _mediaFormat.MediaFormat.HLS.name:\n this.hls.push(source);\n break;\n default:\n break;\n }\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourcesObject} - The json class object.\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var response = {\n progressive: [],\n dash: [],\n hls: []\n };\n this.progressive.forEach(function (p) {\n return response.progressive.push(p.toJSON());\n });\n this.hls.forEach(function (h) {\n return response.hls.push(h.toJSON());\n });\n this.dash.forEach(function (d) {\n return response.dash.push(d.toJSON());\n });\n return response;\n }\n }]);\n\n return MediaSources;\n}();\n\nexports.default = MediaSources;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Drm = function () {\n\n /**\n * @constructor\n * @param {string} licenseUrl - the license url\n * @param {string} scheme - the drm scheme\n * @param {?string} certificate - the drm certificate\n */\n\n /**\n * @member - drm scheme\n * @type {string}\n */\n function Drm(licenseUrl, scheme, certificate) {\n _classCallCheck(this, Drm);\n\n this.licenseUrl = licenseUrl;\n this.scheme = scheme;\n if (certificate) {\n this.certificate = certificate;\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderDrmDataObject} - The json class object.\n */\n\n\n /**\n * @member - drm certificate\n * @type {string}\n */\n\n /**\n * @member - license url\n * @type {string}\n */\n\n\n _createClass(Drm, [{\n key: \"toJSON\",\n value: function toJSON() {\n var response = {\n licenseUrl: this.licenseUrl,\n scheme: this.scheme\n };\n if (this.certificate) response.certificate = this.certificate;\n return response;\n }\n }]);\n\n return Drm;\n}();\n\nexports.default = Drm;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _multiRequestBuilder = __webpack_require__(10);\n\nvar _multiRequestBuilder2 = _interopRequireDefault(_multiRequestBuilder);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DataLoaderManager = function () {\n function DataLoaderManager() {\n _classCallCheck(this, DataLoaderManager);\n\n this._loaders = new Map();\n }\n /**\n * @member - Loaders response map index\n * @type {Map>}\n * @private\n * @static\n */\n\n /**\n * @member - Loaders to execute\n * @type {Map}\n * @private\n */\n\n /**\n * @member - Loaders multi request\n * @type {MultiRequestBuilder}\n * @protected\n */\n\n /**\n * @member - Loaders multi response\n * @type {MultiRequestResult}\n * @private\n */\n\n\n _createClass(DataLoaderManager, [{\n key: 'add',\n\n\n /**\n * Add loader too execution loaders map\n * @function\n * @param {Function} loader Loader to add\n * @param {Object} params Loader params\n * @returns {void}\n */\n value: function add(loader, params) {\n var _this = this;\n\n var execution_loader = new loader(params);\n if (execution_loader.isValid()) {\n this._loaders.set(loader.id, execution_loader);\n // Get the start index from the multiReqeust before adding current execution_loader requests\n var startIndex = this._multiRequest.requests.length;\n // Get the requests\n var requests = execution_loader.requests;\n // Add requests to muktiRequest queue\n requests.forEach(function (request) {\n _this._multiRequest.add(request);\n });\n // Create range array of current execution_loader requests\n var executionLoaderResponseMap = Array.from(new Array(requests.length), function (val, index) {\n return index + startIndex;\n });\n // Add to map\n DataLoaderManager._loadersResponseMap.set(loader.id, executionLoaderResponseMap);\n }\n }\n\n /**\n * Get data from all loaders using multi request\n * @function\n * @returns {Promise} Promise\n */\n\n }, {\n key: 'fetchData',\n value: function fetchData() {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n _this2._multiRequest.execute().then(function (response) {\n _this2._multiResponse = response;\n if (!response.success) {\n reject(response);\n } else {\n var preparedData = _this2.prepareData(response);\n if (preparedData.success) {\n resolve(_this2._loaders);\n } else {\n reject({ success: false, data: preparedData.error });\n }\n }\n }, function (err) {\n reject(err);\n });\n });\n }\n\n /**\n * Prepare fetched data\n * @function\n * @param {MultiRequestResult} response - The multi request result\n * @returns {Object} - The prepared data\n */\n\n }, {\n key: 'prepareData',\n value: function prepareData(response) {\n this._loaders.forEach(function (loader, name) {\n var loaderDataIndexes = DataLoaderManager._loadersResponseMap.get(name);\n try {\n if (loaderDataIndexes && loaderDataIndexes.length > 0) {\n loader.response = response.results.slice(loaderDataIndexes[0], loaderDataIndexes[loaderDataIndexes.length - 1] + 1);\n }\n } catch (err) {\n return { success: false, error: err };\n }\n });\n return { success: true, data: this._loaders };\n }\n }]);\n\n return DataLoaderManager;\n}();\n\nDataLoaderManager._loadersResponseMap = new Map();\nexports.default = DataLoaderManager;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MultiRequestResult = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _logger = __webpack_require__(3);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MultiRequestBuilder = function (_RequestBuilder) {\n _inherits(MultiRequestBuilder, _RequestBuilder);\n\n function MultiRequestBuilder() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, MultiRequestBuilder);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = MultiRequestBuilder.__proto__ || Object.getPrototypeOf(MultiRequestBuilder)).call.apply(_ref, [this].concat(args))), _this), _this.requests = [], _temp), _possibleConstructorReturn(_this, _ret);\n }\n /**\n * @member - Array of requests\n * @type {Array}\n */\n\n\n _createClass(MultiRequestBuilder, [{\n key: 'add',\n\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n value: function add(request) {\n this.requests.push(request);\n var requestParams = {};\n var serviceDef = { service: request.service, action: request.action };\n Object.assign(requestParams, _defineProperty({}, this.requests.length, Object.assign(serviceDef, request.params)));\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n\n }, {\n key: 'execute',\n value: function execute() {\n var _this2 = this;\n\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error('' + err.message);\n }\n return new Promise(function (resolve, reject) {\n _this2.doHttpRequest().then(function (data) {\n resolve(new MultiRequestResult(data));\n }, function (err) {\n var errorText = 'Error on multiRequest execution, error <' + err + '>.';\n reject(errorText);\n });\n });\n }\n }]);\n\n return MultiRequestBuilder;\n}(_requestBuilder2.default);\n\nMultiRequestBuilder._logger = (0, _logger2.default)('MultiRequestBuilder');\nexports.default = MultiRequestBuilder;\n\nvar MultiRequestResult =\n\n/**\n * @constructor\n * @param {Object} response data\n */\nexports.MultiRequestResult = function MultiRequestResult(response) {\n var _this3 = this;\n\n _classCallCheck(this, MultiRequestResult);\n\n this.results = [];\n\n this.success = true;\n var responseArr = response.result ? response.result : response;\n responseArr.forEach(function (result) {\n var serviceResult = new _baseServiceResult2.default(result);\n _this3.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error('Service returned an error with error code: ' + serviceResult.error.code + ' and message: ' + serviceResult.error.message + '.');\n _this3.success = false;\n return;\n }\n });\n}\n/**\n * @member - Multi request response data\n * @type {Object}\n */\n\n/**\n * @member - Is success\n * @type {boolean}\n */\n;\n\nMultiRequestResult._logger = (0, _logger2.default)('MultiRequestResult');\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaDrmPlaybackPluginData =\n\n/**\n * @constructor\n * @param {Object} drm The json response\n */\n\n\n/**\n * @member - The drm scheme\n * @type {string}\n */\n\n\n/**\n * @member - The license URL\n * @type {string}\n */\n\n\n/**\n * @member - The drm certificate\n * @type {?string}\n */\nfunction KalturaDrmPlaybackPluginData(drm) {\n _classCallCheck(this, KalturaDrmPlaybackPluginData);\n\n this.scheme = drm.scheme;\n this.licenseURL = drm.licenseURL;\n this.certificate = drm.certificate;\n};\n\nKalturaDrmPlaybackPluginData.Scheme = {\n 'drm.PLAYREADY_CENC': 'com.microsoft.playready',\n 'drm.WIDEVINE_CENC': 'com.widevine.alpha',\n 'fairplay.FAIRPLAY': 'com.apple.fairplay',\n WIDEVINE_CENC: 'com.widevine.alpha',\n PLAYREADY_CENC: 'com.microsoft.playready',\n FAIRPLAY: 'com.apple.fairplay'\n};\nexports.default = KalturaDrmPlaybackPluginData;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _multiRequestBuilder = __webpack_require__(10);\n\nvar _multiRequestBuilder2 = _interopRequireDefault(_multiRequestBuilder);\n\nvar _config = __webpack_require__(4);\n\nvar _config2 = _interopRequireDefault(_config);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar SERVICE_NAME = 'multirequest';\n\nvar OVPService = function () {\n function OVPService() {\n _classCallCheck(this, OVPService);\n }\n\n _createClass(OVPService, null, [{\n key: 'getMultiRequest',\n\n /**\n * Gets a new instance of MultiRequestBuilder with ovp params\n * @function getMultiRequest\n * @param {string} playerVersion The player version\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n value: function getMultiRequest(playerVersion, ks, partnerId) {\n var config = _config2.default.get();\n var ovpParams = config.serviceParams;\n Object.assign(ovpParams, { ks: ks, clientTag: 'html5:v' + playerVersion });\n if (partnerId) {\n Object.assign(ovpParams, { partnerId: partnerId });\n }\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var multiReq = new _multiRequestBuilder2.default(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ovpParams;\n return multiReq;\n }\n }]);\n\n return OVPService;\n}();\n\nexports.default = OVPService;\n\n/***/ }),\n/* 13 */,\n/* 14 */,\n/* 15 */,\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _mediaFormat = __webpack_require__(5);\n\nvar _mediaEntry = __webpack_require__(1);\n\nvar _mediaEntry2 = _interopRequireDefault(_mediaEntry);\n\nvar _mediaSources = __webpack_require__(7);\n\nvar _mediaSources2 = _interopRequireDefault(_mediaSources);\n\nvar _mediaSource = __webpack_require__(6);\n\nvar _mediaSource2 = _interopRequireDefault(_mediaSource);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BaseProviderParser = function () {\n function BaseProviderParser() {\n _classCallCheck(this, BaseProviderParser);\n }\n\n _createClass(BaseProviderParser, null, [{\n key: 'getMediaEntry',\n\n // eslint-disable-next-line no-unused-vars\n value: function getMediaEntry() {\n throw new TypeError('getMediaEntry method must be implement by the derived class');\n }\n\n // eslint-disable-next-line no-unused-vars\n\n }, {\n key: '_getParsedSources',\n value: function _getParsedSources() {\n throw new TypeError('_getParsedSources method must be implement by the derived class');\n }\n\n // eslint-disable-next-line no-unused-vars\n\n }, {\n key: '_parseAdaptiveSource',\n value: function _parseAdaptiveSource() {\n throw new TypeError('_parseAdaptiveSource method must be implement by the derived class');\n }\n }, {\n key: '_isProgressiveSource',\n value: function _isProgressiveSource(source) {\n var sourceFormat = _mediaFormat.SupportedStreamFormat.get(source.format);\n return !!sourceFormat && sourceFormat.name === 'mp4';\n }\n }, {\n key: 'hasBlockActions',\n value: function hasBlockActions(assetResponse) {\n if (assetResponse && assetResponse.playBackContextResult) {\n var playbackContext = assetResponse.playBackContextResult;\n for (var actionIndex = 0; actionIndex < playbackContext.actions.length; actionIndex++) {\n if (playbackContext.actions[actionIndex].type === 'BLOCK') {\n return playbackContext.actions[actionIndex];\n }\n }\n }\n return null;\n }\n }, {\n key: 'hasErrorMessage',\n value: function hasErrorMessage(assetResponse) {\n var messages = assetResponse.playBackContextResult.messages;\n for (var messagesIndex = 0; messagesIndex < messages.length; messagesIndex++) {\n if (messages[messagesIndex].code !== 'OK') {\n return messages[messagesIndex];\n }\n }\n return null;\n }\n }]);\n\n return BaseProviderParser;\n}();\n\nexports.default = BaseProviderParser;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _logger = __webpack_require__(3);\n\nvar _dataLoaderManager = __webpack_require__(9);\n\nvar _dataLoaderManager2 = _interopRequireDefault(_dataLoaderManager);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BaseProvider = function () {\n _createClass(BaseProvider, [{\n key: 'partnerId',\n get: function get() {\n return this._partnerId;\n }\n }, {\n key: 'uiConfId',\n get: function get() {\n return this._uiConfId;\n }\n }, {\n key: 'ks',\n get: function get() {\n return this._ks;\n },\n set: function set(value) {\n this._ks = value;\n }\n }, {\n key: 'playerVersion',\n get: function get() {\n return this._playerVersion;\n }\n }, {\n key: 'isAnonymous',\n get: function get() {\n return this._isAnonymous;\n }\n }]);\n\n function BaseProvider(options, playerVersion) {\n _classCallCheck(this, BaseProvider);\n\n this._partnerId = options.partnerId;\n this._uiConfId = options.uiConfId;\n this._isAnonymous = !options.ks;\n this._ks = options.ks || '';\n this._playerVersion = playerVersion;\n if (options.logLevel && this.LogLevel[options.logLevel]) {\n (0, _logger.setLogLevel)(this.LogLevel[options.logLevel]);\n }\n }\n\n // eslint-disable-next-line no-unused-vars\n\n\n _createClass(BaseProvider, [{\n key: 'getMediaConfig',\n value: function getMediaConfig(mediaInfo) {\n throw new TypeError('getMediaConfig method must be implement by the derived class');\n }\n\n // eslint-disable-next-line no-unused-vars\n\n }, {\n key: '_parseDataFromResponse',\n value: function _parseDataFromResponse(data) {\n throw new TypeError('_parseDataFromResponse method must be implement by the derived class');\n }\n }, {\n key: 'getLogLevel',\n value: function getLogLevel(name) {\n return (0, _logger.getLogLevel)(name);\n }\n }, {\n key: 'setLogLevel',\n value: function setLogLevel(level, name) {\n (0, _logger.setLogLevel)(level, name);\n }\n }, {\n key: 'LogLevel',\n get: function get() {\n return _logger.LogLevel;\n }\n }]);\n\n return BaseProvider;\n}();\n\nexports.default = BaseProvider;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaAccessControlMessage =\n\n/**\n * @constructor\n * @param {Object} data The json response\n */\n\n/**\n * @member - The access control message\n * @type {string}\n */\nfunction KalturaAccessControlMessage(data) {\n _classCallCheck(this, KalturaAccessControlMessage);\n\n this.message = data.message;\n this.code = data.code;\n}\n/**\n * @member - The access control message code\n * @@type {string}\n */\n;\n\nexports.default = KalturaAccessControlMessage;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaRuleAction =\n\n/**\n * @constructor\n * @param {Object} data - The response\n */\n\n\n/**\n * @member - The type of the action\n * @type {string|number}\n */\nfunction KalturaRuleAction(data) {\n _classCallCheck(this, KalturaRuleAction);\n\n this.type = data.type;\n};\n\nKalturaRuleAction.Type = {\n DRM_POLICY: 'drm.DRM_POLICY',\n BLOCK: 1,\n PREVIEW: 2,\n LIMIT_FLAVORS: 3,\n ADD_TO_STORAGE: 4,\n LIMIT_DELIVERY_PROFILES: 5,\n SERVE_FROM_REMOTE_SERVER: 6,\n REQUEST_HOST_REGEX: 7,\n LIMIT_THUMBNAIL_CAPTURE: 8\n};\nexports.default = KalturaRuleAction;\n\n/***/ }),\n/* 20 */,\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaMediaEntry =\n\n/**\n * @constructor\n * @param {Object} entry The json response\n */\n\n\n/**\n * @member - The entry id\n * @type {string}\n */\n\n/**\n * @member - Entry name (Min 1 chars)\n * @type {string}\n */\n\n/**\n * @member - Entry description\n * @type {string}\n */\n\n/**\n * @member - The URL used for playback. This is not the download URL.\n * @type {string}\n */\n\n/**\n * @member - Comma separated flavor params ids that exists for this media entry\n * @type {string}\n */\n\n/**\n * @member - The entry duration\n * @type {number}\n */\n\n/**\n * @member - The type of the entry, this is auto filled by the derived entry object\n * @type {string | number}\n */\n\n/**\n * @member - The type of the entry, this is auto filled by the derived entry object (Image, Audio etc.)\n * @type {number}\n */\n\n/**\n * @member - Entry poster image\n * @type {string}\n */\n\n/**\n * @member - DVR status\n * @type {number}\n */\n\n/**\n * @member - Entry tags\n * @type {string}\n */\nfunction KalturaMediaEntry(entry) {\n _classCallCheck(this, KalturaMediaEntry);\n\n this.id = entry.id;\n this.name = entry.name;\n this.description = entry.description;\n this.dataUrl = entry.dataUrl;\n this.type = entry.type;\n this.entryType = entry.mediaType;\n this.flavorParamsIds = entry.flavorParamsIds;\n this.duration = entry.duration;\n this.poster = entry.thumbnailUrl;\n this.dvrStatus = entry.dvrStatus;\n this.tags = entry.tags;\n};\n\nKalturaMediaEntry.EntryType = {\n AUTOMATIC: { value: -1 },\n EXTERNAL_MEDIA: { value: 'externalMedia.externalMedia' },\n MEDIA_CLIP: { value: 1 },\n MIX: { value: 2 },\n PLAYLIST: { value: 5 },\n DATA: { value: 6 },\n LIVE_STREAM: { value: 7 },\n LIVE_CHANNEL: { value: 8 },\n DOCUMENT: { value: 10 }\n};\nKalturaMediaEntry.MediaType = {\n VIDEO: { value: 1 },\n IMAGE: { value: 2 },\n AUDIO: { value: 5 },\n LIVE_STREAM_FLASH: { value: 201 },\n LIVE_STREAM_WINDOWS_MEDIA: { value: 202 },\n LIVE_STREAM_REAL_MEDIA: { value: 203 },\n LIVE_STREAM_QUICK_TIME: { value: 204 }\n};\nKalturaMediaEntry.EntryStatus = {\n ERROR_IMPORTING: -2,\n ERROR_CONVERTING: -1,\n SCAN_FAILURE: 'virusScan.ScanFailure',\n IMPORT: 0,\n INFECTED: 'virusScan.Infected',\n PRECONVERT: 1,\n READY: 2,\n DELETED: 3,\n PENDING: 4,\n MODERATE: 5,\n BLOCKED: 6,\n NO_CONTENT: 7\n};\nKalturaMediaEntry.EntryModerationStatus = {\n PENDING_MODERATION: 1,\n APPROVED: 2,\n REJECTED: 3,\n FLAGGED_FOR_REVIEW: 4,\n MODERATE: 5,\n AUTO_APPROVED: 6\n};\nexports.default = KalturaMediaEntry;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar clone = function clone(data) {\n var node = void 0;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach(function (e, i) {\n if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object' && e !== {} || Array.isArray(e) && e.length > 0) {\n node[i] = clone(e);\n }\n });\n } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(function (key) {\n if (_typeof(node[key]) === 'object' && node[key] !== {} || Array.isArray(node[key]) && node[key].length > 0) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexports.clone = clone;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (true) {\r\n\t\t!(__WEBPACK_AMD_DEFINE_FACTORY__ = (Logger),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n/***/ }),\n/* 24 */,\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar FIELDS = 'id,name,description,thumbnailUrl,dataUrl,duration,msDuration,flavorParamsIds,mediaType,type,tags,dvrStatus';\n\nvar BaseEntryResponseProfile =\n\n/**\n * @constructor\n * @param {Object} responseProfile -\n */\n\n/**\n * @member - the response profile type\n * @type {number}\n */\n\n/**\n * @member - Comma separated fields list to be included or excluded\n * @type {string}\n */\nfunction BaseEntryResponseProfile() {\n var responseProfile = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, BaseEntryResponseProfile);\n\n this.type = responseProfile.type || BaseEntryResponseProfile.Type.INCLUDE_FIELDS;\n this.fields = responseProfile.fields || FIELDS;\n};\n\nBaseEntryResponseProfile.Type = {\n INCLUDE_FIELDS: 1,\n EXCLUDE_FIELDS: 2\n};\nexports.default = BaseEntryResponseProfile;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nvar _kalturaMediaEntry = __webpack_require__(21);\n\nvar _kalturaMediaEntry2 = _interopRequireDefault(_kalturaMediaEntry);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar KalturaBaseEntryListResponse = function (_ServiceResult) {\n _inherits(KalturaBaseEntryListResponse, _ServiceResult);\n\n /**\n * @constructor\n * @param {Object} responseObj The json response\n */\n\n /**\n * @member - The total count\n * @type {number}\n */\n function KalturaBaseEntryListResponse(responseObj) {\n _classCallCheck(this, KalturaBaseEntryListResponse);\n\n var _this = _possibleConstructorReturn(this, (KalturaBaseEntryListResponse.__proto__ || Object.getPrototypeOf(KalturaBaseEntryListResponse)).call(this, responseObj));\n\n if (!_this.hasError) {\n _this.totalCount = responseObj.totalCount;\n if (_this.totalCount > 0) {\n _this.entries = [];\n responseObj.objects.map(function (entry) {\n return _this.entries.push(new _kalturaMediaEntry2.default(entry));\n });\n }\n }\n return _this;\n }\n /**\n * @member - The entries\n * @type {Array}\n */\n\n\n return KalturaBaseEntryListResponse;\n}(_baseServiceResult2.default);\n\nexports.default = KalturaBaseEntryListResponse;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaFlavorAsset =\n\n/**\n * @constructor\n * @param {Object} data The json response\n */\n\n\n/**\n * @member - The ID of the Flavor Asset\n * @type {string}\n */\n\n/**\n * @member -The Flavor Params used to create this Flavor Asset\n * @type {string}\n */\n\n/**\n * @member -The file extension\n * @type {string}\n */\n\n/**\n * @member - The overall bitrate (in KBits) of the Flavor Asset\n * @type {string}\n */\n\n/**\n * @member - The width of the Flavor Asset\n * @type {number}\n */\n\n/**\n * @member - The height of the Flavor Asset\n * @type {number}\n */\n\n/**\n * @member - The frame rate (in FPS) of the Flavor Asset\n * @type {number}\n */\n\n/**\n * @member - True if this Flavor Asset is the original source\n * @type {number}\n */\n\n/**\n * @member - True if this Flavor Asset is playable in KDP\n * @type {boolean}\n */\n\n/**\n * @member - The container format\n * @type {boolean}\n */\n\n/**\n *@member - The video codec\n * @type {boolean}\n */\n\n/**\n * @member - The status of the Flavor Asset\n * @type {number}\n */\n\n/**\n * @member - The language of the flavor asset\n * @type {Status}\n */\n\n/**\n * @member - The label of the flavor asset\n * @type {string}\n */\nfunction KalturaFlavorAsset(data) {\n _classCallCheck(this, KalturaFlavorAsset);\n\n this.id = data.id;\n this.flavorParamsId = data.flavorParamsId;\n this.fileExt = data.fileExt;\n this.bitrate = data.bitrate;\n this.width = data.width;\n this.height = data.height;\n this.id = data.id;\n this.frameRate = data.frameRate;\n this.isOriginal = data.isOriginal;\n this.isWeb = data.isWeb;\n this.containerFormat = data.containerFormat;\n this.videoCodecId = data.videoCodecId;\n this.status = data.status;\n this.language = data.language;\n this.label = data.label;\n};\n\nKalturaFlavorAsset.Status = {\n ERROR: -1,\n QUEUED: 0,\n CONVERTING: 1,\n READY: 2,\n DELETED: 3,\n NOT_APPLICABLE: 4,\n TEMP: 5,\n WAIT_FOR_CONVERT: 6,\n IMPORTING: 7,\n VALIDATING: 8,\n EXPORTING: 9\n};\nexports.default = KalturaFlavorAsset;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nvar _kalturaMetadata = __webpack_require__(51);\n\nvar _kalturaMetadata2 = _interopRequireDefault(_kalturaMetadata);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar KalturaMetadataListResponse = function (_ServiceResult) {\n _inherits(KalturaMetadataListResponse, _ServiceResult);\n\n /**\n * @constructor\n * @param {Object} responseObj The response\n */\n function KalturaMetadataListResponse(responseObj) {\n _classCallCheck(this, KalturaMetadataListResponse);\n\n var _this = _possibleConstructorReturn(this, (KalturaMetadataListResponse.__proto__ || Object.getPrototypeOf(KalturaMetadataListResponse)).call(this, responseObj));\n\n if (!_this.hasError) {\n _this.totalCount = responseObj.totalCount;\n if (_this.totalCount > 0) {\n _this.metas = [];\n responseObj.objects.map(function (meta) {\n return _this.metas.push(new _kalturaMetadata2.default(meta));\n });\n }\n }\n return _this;\n }\n\n return KalturaMetadataListResponse;\n}(_baseServiceResult2.default);\n\nexports.default = KalturaMetadataListResponse;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _kalturaDrmPlaybackPluginData = __webpack_require__(11);\n\nvar _kalturaDrmPlaybackPluginData2 = _interopRequireDefault(_kalturaDrmPlaybackPluginData);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaPlaybackSource = function () {\n\n /**\n * @constructor\n * @param {Object} source The response\n */\n\n /**\n * @member - comma separated string of flavor ids\n * @type {string}\n */\n\n /**\n * @member - The source URL\n * @type {string}\n */\n\n /**\n * @member - source format according to delivery profile streamer type (applehttp, mpegdash etc.)\n * @type {string}\n */\n function KalturaPlaybackSource(source) {\n var _this = this;\n\n _classCallCheck(this, KalturaPlaybackSource);\n\n this.drm = [];\n\n this.format = source.format;\n this.deliveryProfileId = source.deliveryProfileId;\n this.url = source.url;\n this.protocols = source.protocols;\n this.flavorIds = source.flavorIds;\n if (source.drm) {\n source.drm.map(function (drm) {\n return _this.drm.push(new _kalturaDrmPlaybackPluginData2.default(drm));\n });\n }\n }\n\n /**\n * Checks if source has DRM data\n * @function hasDrmData\n * @returns {boolean} Is source has DRM\n */\n\n /**\n * @member - drm data object containing relevant license url ,scheme name and certificate\n * @type {Array}\n */\n\n /**\n * @member - comma separated string according to deliveryProfile media protocols ('http,https' etc.)\n * @type {string}\n */\n\n /**\n * @member - delivery profile Id\n * @type {string}\n */\n\n\n _createClass(KalturaPlaybackSource, [{\n key: 'hasDrmData',\n value: function hasDrmData() {\n return this.drm && this.drm.length > 0;\n }\n\n /**\n * Checks if source has flavor IDs\n * @function hasFlavorIds\n * @returns {boolean} Is source ha flavor IDs\n */\n\n }, {\n key: 'hasFlavorIds',\n value: function hasFlavorIds() {\n return !!this.flavorIds && this.flavorIds.length > 0;\n }\n\n /**\n * Returns source desired protocol if supported\n * @param {string} protocol - the desired protocol for the source (base play url protocol)\n * @returns {string} - protocol if protocol is in the protocols list - if not empty string returned\n */\n\n }, {\n key: 'getProtocol',\n value: function getProtocol(protocol) {\n var returnValue = '';\n if (this.protocols && this.protocols.length > 0) {\n var protocolsArr = this.protocols.split(',');\n protocolsArr.forEach(function (p) {\n if (p === protocol) {\n returnValue = p;\n }\n });\n } else if (protocol === 'http') {\n return protocol;\n }\n return returnValue;\n }\n }]);\n\n return KalturaPlaybackSource;\n}();\n\nexports.default = KalturaPlaybackSource;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ovpService = __webpack_require__(12);\n\nvar _ovpService2 = _interopRequireDefault(_ovpService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _baseEntryResponseProfile = __webpack_require__(25);\n\nvar _baseEntryResponseProfile2 = _interopRequireDefault(_baseEntryResponseProfile);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'baseEntry';\n\nvar OVPBaseEntryService = function (_OVPService) {\n _inherits(OVPBaseEntryService, _OVPService);\n\n function OVPBaseEntryService() {\n _classCallCheck(this, OVPBaseEntryService);\n\n return _possibleConstructorReturn(this, (OVPBaseEntryService.__proto__ || Object.getPrototypeOf(OVPBaseEntryService)).apply(this, arguments));\n }\n\n _createClass(OVPBaseEntryService, null, [{\n key: 'getPlaybackContext',\n\n /**\n * Creates an instance of RequestBuilder for baseentry.getPlaybackContext\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function getPlaybackContext(serviceUrl, ks, entryId) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'getPlaybackContext';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'baseEntry-getPlaybackContext';\n var contextDataParams = { objectType: 'KalturaContextDataParams', flavorTags: 'all' };\n request.params = { entryId: entryId, ks: ks, contextDataParams: contextDataParams };\n return request;\n }\n\n /**\n * Creates an instance of RequestBuilder for baseentry.list\n * @function list\n * @param {string} serviceUrl The base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n\n }, {\n key: 'list',\n value: function list(serviceUrl, ks, entryId) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'list';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'list';\n request.params = OVPBaseEntryService.getEntryListReqParams(entryId, ks);\n return request;\n }\n\n /**\n * Gets baseentry.list service params\n * @function getEntryListReqParams\n * @param {string} entryId The entry ID\n * @param {string} ks The ks\n * @returns {{ks: string, filter: {redirectFromEntryId: string}, responseProfile: {fields: string, type: number}}} The service params object\n * @static\n */\n\n }, {\n key: 'getEntryListReqParams',\n value: function getEntryListReqParams(entryId, ks) {\n var filterParams = { redirectFromEntryId: entryId };\n return { ks: ks, filter: filterParams, responseProfile: new _baseEntryResponseProfile2.default() };\n }\n }]);\n\n return OVPBaseEntryService;\n}(_ovpService2.default);\n\nexports.default = OVPBaseEntryService;\n\n/***/ }),\n/* 31 */,\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _logger = __webpack_require__(3);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _config = __webpack_require__(4);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _providerParser = __webpack_require__(49);\n\nvar _providerParser2 = _interopRequireDefault(_providerParser);\n\nvar _mediaEntryLoader = __webpack_require__(45);\n\nvar _mediaEntryLoader2 = _interopRequireDefault(_mediaEntryLoader);\n\nvar _sessionLoader = __webpack_require__(47);\n\nvar _sessionLoader2 = _interopRequireDefault(_sessionLoader);\n\nvar _dataLoaderManager = __webpack_require__(43);\n\nvar _dataLoaderManager2 = _interopRequireDefault(_dataLoaderManager);\n\nvar _playlistLoader = __webpack_require__(46);\n\nvar _playlistLoader2 = _interopRequireDefault(_playlistLoader);\n\nvar _baseProvider = __webpack_require__(17);\n\nvar _baseProvider2 = _interopRequireDefault(_baseProvider);\n\nvar _mediaEntry = __webpack_require__(1);\n\nvar _mediaEntry2 = _interopRequireDefault(_mediaEntry);\n\nvar _entryListLoader = __webpack_require__(44);\n\nvar _entryListLoader2 = _interopRequireDefault(_entryListLoader);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar OVPProvider = function (_BaseProvider) {\n _inherits(OVPProvider, _BaseProvider);\n\n /**\n * @constructor\n * @param {ProviderOptionsObject} options - provider options\n * @param {string} playerVersion - player version\n */\n function OVPProvider(options, playerVersion) {\n _classCallCheck(this, OVPProvider);\n\n var _this = _possibleConstructorReturn(this, (OVPProvider.__proto__ || Object.getPrototypeOf(OVPProvider)).call(this, options, playerVersion));\n\n _this._logger = (0, _logger2.default)('OVPProvider');\n _config2.default.set(options.env);\n return _this;\n }\n\n /**\n * Gets the backend media config.\n * @param {ProviderMediaInfoObject} mediaInfo - ovp media info\n * @returns {Promise} - The provider media config\n */\n\n\n _createClass(OVPProvider, [{\n key: 'getMediaConfig',\n value: function getMediaConfig(mediaInfo) {\n var _this2 = this;\n\n if (mediaInfo.ks) {\n this.ks = mediaInfo.ks;\n }\n this._dataLoader = new _dataLoaderManager2.default(this.playerVersion, this.partnerId, this.ks);\n return new Promise(function (resolve, reject) {\n var entryId = mediaInfo.entryId;\n if (entryId) {\n var ks = _this2.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n _this2._dataLoader.add(_sessionLoader2.default, { partnerId: _this2.partnerId });\n }\n _this2._dataLoader.add(_mediaEntryLoader2.default, { entryId: entryId, ks: ks });\n _this2._dataLoader.fetchData().then(function (response) {\n resolve(_this2._parseDataFromResponse(response));\n }, function (err) {\n reject(err);\n });\n } else {\n reject({ success: false, data: 'Missing mandatory parameter' });\n }\n });\n }\n }, {\n key: '_parseDataFromResponse',\n value: function _parseDataFromResponse(data) {\n this._logger.debug('Data parsing started');\n var mediaConfig = {\n session: {\n isAnonymous: this._isAnonymous,\n partnerId: this.partnerId\n },\n sources: this._getDefaultSourcesObject(),\n plugins: {}\n };\n\n if (this.uiConfId) {\n mediaConfig.session.uiConfId = this.uiConfId;\n }\n if (data) {\n if (data.has(_sessionLoader2.default.id)) {\n var sessionLoader = data.get(_sessionLoader2.default.id);\n if (sessionLoader && sessionLoader.response) {\n this.ks = sessionLoader.response;\n mediaConfig.session.ks = this.ks;\n }\n } else {\n mediaConfig.session.ks = this.ks;\n }\n if (data.has(_mediaEntryLoader2.default.id)) {\n var mediaLoader = data.get(_mediaEntryLoader2.default.id);\n if (mediaLoader && mediaLoader.response) {\n this._validateData(mediaLoader.response);\n var mediaEntry = _providerParser2.default.getMediaEntry(this.isAnonymous ? '' : this.ks, this.partnerId, this.uiConfId, mediaLoader.response);\n Object.assign(mediaConfig.sources, this._getSourcesObject(mediaEntry));\n }\n }\n }\n this._logger.debug('Data parsing finished', mediaConfig);\n return mediaConfig;\n }\n\n /**\n * Gets the backend playlist config.\n * @param {ProviderPlaylistInfoObject} playlistInfo - ovp playlist info\n * @returns {Promise} - The provider playlist config\n */\n\n }, {\n key: 'getPlaylistConfig',\n value: function getPlaylistConfig(playlistInfo) {\n var _this3 = this;\n\n if (playlistInfo.ks) {\n this.ks = playlistInfo.ks;\n }\n this._dataLoader = new _dataLoaderManager2.default(this.playerVersion, this.partnerId, this.ks);\n return new Promise(function (resolve, reject) {\n var playlistId = playlistInfo.playlistId;\n if (playlistId) {\n var ks = _this3.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n _this3._dataLoader.add(_sessionLoader2.default, { partnerId: _this3.partnerId });\n }\n _this3._dataLoader.add(_playlistLoader2.default, { playlistId: playlistId, ks: ks });\n // this._dataLoader.add(OVPMediaEntryLoader, {entryId: '{3:result:0:id}', ks});\n _this3._dataLoader.fetchData().then(function (response) {\n resolve(_this3._parsePlaylistDataFromResponse(response));\n }, function (err) {\n reject(err);\n });\n } else {\n reject({ success: false, data: 'Missing mandatory parameter' });\n }\n });\n }\n }, {\n key: '_parsePlaylistDataFromResponse',\n value: function _parsePlaylistDataFromResponse(data) {\n var _this4 = this;\n\n this._logger.debug('Data parsing started');\n var playlistConfig = this._getPlaylistObject();\n if (data && data.has(_playlistLoader2.default.id)) {\n var playlistLoader = data.get(_playlistLoader2.default.id);\n if (playlistLoader && playlistLoader.response) {\n this._validateData(playlistLoader.response);\n var playlist = _providerParser2.default.getPlaylist(playlistLoader.response);\n playlistConfig.id = playlist.id;\n playlistConfig.poster = playlist.poster;\n playlistConfig.metadata.name = playlist.name;\n playlistConfig.metadata.description = playlist.description;\n playlist.items.forEach(function (i) {\n return playlistConfig.items.push({ sources: _this4._getSourcesObject(i) });\n });\n }\n }\n this._logger.debug('Data parsing finished', playlistConfig);\n return playlistConfig;\n }\n\n /**\n * Gets playlist config from entry list.\n * @param {ProviderEntryListObject} entryListInfo - ovp entry list info\n * @returns {Promise} - The provider playlist config\n */\n\n }, {\n key: 'getEntryListConfig',\n value: function getEntryListConfig(entryListInfo) {\n var _this5 = this;\n\n if (entryListInfo.ks) {\n this.ks = entryListInfo.ks;\n }\n this._dataLoader = new _dataLoaderManager2.default(this.playerVersion, this.partnerId, this.ks);\n return new Promise(function (resolve, reject) {\n var entries = entryListInfo.entries;\n if (entries && entries.length) {\n var ks = _this5.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n _this5._dataLoader.add(_sessionLoader2.default, { partnerId: _this5.partnerId });\n }\n _this5._dataLoader.add(_entryListLoader2.default, { entries: entries, ks: ks });\n _this5._dataLoader.fetchData().then(function (response) {\n resolve(_this5._parseEntryListDataFromResponse(response));\n }, function (err) {\n reject(err);\n });\n } else {\n reject({ success: false, data: 'Missing mandatory parameter' });\n }\n });\n }\n }, {\n key: '_parseEntryListDataFromResponse',\n value: function _parseEntryListDataFromResponse(data) {\n var _this6 = this;\n\n this._logger.debug('Data parsing started');\n var playlistConfig = this._getPlaylistObject();\n if (data && data.has(_playlistLoader2.default.id)) {\n var playlistLoader = data.get(_playlistLoader2.default.id);\n if (playlistLoader && playlistLoader.response) {\n this._validateData(playlistLoader.response);\n var entryList = _providerParser2.default.getEntryList(playlistLoader.response);\n entryList.items.forEach(function (i) {\n return playlistConfig.items.push({ sources: _this6._getSourcesObject(i) });\n });\n }\n }\n this._logger.debug('Data parsing finished', playlistConfig);\n return playlistConfig;\n }\n }, {\n key: '_getPlaylistObject',\n value: function _getPlaylistObject() {\n return {\n id: '',\n metadata: {\n name: '',\n description: ''\n },\n poster: '',\n items: []\n };\n }\n }, {\n key: '_validateData',\n value: function _validateData(response) {\n var blockedAction = _providerParser2.default.hasBlockActions(response);\n if (blockedAction) {\n var errorMessage = _providerParser2.default.hasErrorMessage(response);\n if (errorMessage) {\n this._logger.error('Entry is blocked, error message: ', errorMessage);\n throw errorMessage;\n } else {\n this._logger.error('Entry is blocked, action: ', blockedAction);\n throw blockedAction;\n }\n }\n }\n }, {\n key: '_getDefaultSourcesObject',\n value: function _getDefaultSourcesObject() {\n return {\n hls: [],\n dash: [],\n progressive: [],\n id: '',\n duration: 0,\n type: _mediaEntry2.default.Type.UNKNOWN,\n poster: '',\n dvr: false,\n vr: null,\n metadata: {\n name: '',\n description: '',\n tags: ''\n }\n };\n }\n }, {\n key: '_getSourcesObject',\n value: function _getSourcesObject(mediaEntry) {\n var sourcesObject = this._getDefaultSourcesObject();\n var mediaSources = mediaEntry.sources.toJSON();\n sourcesObject.hls = mediaSources.hls;\n sourcesObject.dash = mediaSources.dash;\n sourcesObject.progressive = mediaSources.progressive;\n sourcesObject.id = mediaEntry.id;\n sourcesObject.duration = mediaEntry.duration;\n sourcesObject.type = mediaEntry.type;\n sourcesObject.dvr = !!mediaEntry.dvrStatus;\n sourcesObject.poster = mediaEntry.poster;\n if (mediaEntry.metadata && typeof mediaEntry.metadata.tags === 'string' && mediaEntry.metadata.tags.indexOf('360') > -1) {\n sourcesObject.vr = {};\n }\n Object.assign(sourcesObject.metadata, mediaEntry.metadata);\n return sourcesObject;\n }\n }]);\n\n return OVPProvider;\n}(_baseProvider2.default);\n\nexports.default = OVPProvider;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _mediaEntry = __webpack_require__(1);\n\nvar _mediaEntry2 = _interopRequireDefault(_mediaEntry);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EntryList = function EntryList() {\n _classCallCheck(this, EntryList);\n\n this.items = [];\n}\n/**\n * @member - entry list items\n * @type {Array}\n */\n;\n\nexports.default = EntryList;\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _mediaEntry = __webpack_require__(1);\n\nvar _mediaEntry2 = _interopRequireDefault(_mediaEntry);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Playlist =\n\n/**\n * @member - playlist poster\n * @type {string}\n */\n\n/**\n * @member - playlist name\n * @type {string}\n */\nfunction Playlist() {\n _classCallCheck(this, Playlist);\n\n this.items = [];\n}\n\n/**\n * @member - playlist items\n * @type {Array}\n */\n\n/**\n * @member - playlist description\n * @type {string}\n */\n\n/**\n * @member - playlist id\n * @type {string}\n */\n;\n\nexports.default = Playlist;\n\n/***/ }),\n/* 35 */,\n/* 36 */,\n/* 37 */,\n/* 38 */,\n/* 39 */,\n/* 40 */,\n/* 41 */,\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VERSION = exports.NAME = exports.Provider = undefined;\n\nvar _provider = __webpack_require__(32);\n\nvar _provider2 = _interopRequireDefault(_provider);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NAME = \"playkit-js-providers\" + '-ovp';\n\nvar VERSION = \"2.8.0\";\n\nexports.Provider = _provider2.default;\nexports.NAME = NAME;\nexports.VERSION = VERSION;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dataLoaderManager = __webpack_require__(9);\n\nvar _dataLoaderManager2 = _interopRequireDefault(_dataLoaderManager);\n\nvar _ovpService = __webpack_require__(12);\n\nvar _ovpService2 = _interopRequireDefault(_ovpService);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar OVPDataLoaderManager = function (_DataLoaderManager) {\n _inherits(OVPDataLoaderManager, _DataLoaderManager);\n\n /**\n * @constructor\n * @param {string} playerVersion - player version\n * @param {string} partnerId - partner id\n * @param {string} ks - ks\n */\n function OVPDataLoaderManager(playerVersion, partnerId) {\n var ks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n _classCallCheck(this, OVPDataLoaderManager);\n\n var _this = _possibleConstructorReturn(this, (OVPDataLoaderManager.__proto__ || Object.getPrototypeOf(OVPDataLoaderManager)).call(this));\n\n _this._multiRequest = _ovpService2.default.getMultiRequest(playerVersion, ks, partnerId);\n return _this;\n }\n\n return OVPDataLoaderManager;\n}(_dataLoaderManager2.default);\n\nexports.default = OVPDataLoaderManager;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _config = __webpack_require__(4);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _baseEntryService = __webpack_require__(30);\n\nvar _baseEntryService2 = _interopRequireDefault(_baseEntryService);\n\nvar _kalturaBaseEntryListResponse = __webpack_require__(26);\n\nvar _kalturaBaseEntryListResponse2 = _interopRequireDefault(_kalturaBaseEntryListResponse);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OVPEntryListLoader = function () {\n _createClass(OVPEntryListLoader, null, [{\n key: 'id',\n get: function get() {\n return 'playlist';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n\n }]);\n\n function OVPEntryListLoader(params) {\n _classCallCheck(this, OVPEntryListLoader);\n\n this._response = { playlistItems: { entries: [] } };\n\n this.requests = this.buildRequests(params);\n this._entries = params.entries;\n }\n\n _createClass(OVPEntryListLoader, [{\n key: 'buildRequests',\n\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function buildRequests(params) {\n var config = _config2.default.get();\n var requests = [];\n params.entries.forEach(function (entryId) {\n requests.push(_baseEntryService2.default.list(config.serviceUrl, params.ks, entryId));\n });\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n\n }, {\n key: 'isValid',\n value: function isValid() {\n return !!(this._entries && this._entries.length);\n }\n }, {\n key: 'requests',\n set: function set(requests) {\n this._requests = requests;\n },\n get: function get() {\n return this._requests;\n }\n }, {\n key: 'response',\n set: function set(response) {\n var _this = this;\n\n var mediaEntryResponse = void 0;\n response.forEach(function (item) {\n mediaEntryResponse = new _kalturaBaseEntryListResponse2.default(item.data);\n _this._response.playlistItems.entries.push(mediaEntryResponse.entries[0]);\n });\n },\n get: function get() {\n return this._response;\n }\n }]);\n\n return OVPEntryListLoader;\n}();\n\nexports.default = OVPEntryListLoader;\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _baseEntryService = __webpack_require__(30);\n\nvar _baseEntryService2 = _interopRequireDefault(_baseEntryService);\n\nvar _metaDataService = __webpack_require__(54);\n\nvar _metaDataService2 = _interopRequireDefault(_metaDataService);\n\nvar _config = __webpack_require__(4);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _kalturaPlaybackContext = __webpack_require__(52);\n\nvar _kalturaPlaybackContext2 = _interopRequireDefault(_kalturaPlaybackContext);\n\nvar _kalturaMetadataListResponse = __webpack_require__(28);\n\nvar _kalturaMetadataListResponse2 = _interopRequireDefault(_kalturaMetadataListResponse);\n\nvar _kalturaBaseEntryListResponse = __webpack_require__(26);\n\nvar _kalturaBaseEntryListResponse2 = _interopRequireDefault(_kalturaBaseEntryListResponse);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OVPMediaEntryLoader = function () {\n _createClass(OVPMediaEntryLoader, null, [{\n key: 'id',\n get: function get() {\n return 'media';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n\n }]);\n\n function OVPMediaEntryLoader(params) {\n _classCallCheck(this, OVPMediaEntryLoader);\n\n this._response = {};\n\n this.requests = this.buildRequests(params);\n this._entryId = params.entryId;\n }\n\n _createClass(OVPMediaEntryLoader, [{\n key: 'buildRequests',\n\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function buildRequests(params) {\n var config = _config2.default.get();\n var requests = [];\n requests.push(_baseEntryService2.default.list(config.serviceUrl, params.ks, params.entryId));\n requests.push(_baseEntryService2.default.getPlaybackContext(config.serviceUrl, params.ks, params.entryId));\n requests.push(_metaDataService2.default.list(config.serviceUrl, params.ks, params.entryId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n\n }, {\n key: 'isValid',\n value: function isValid() {\n return !!this._entryId;\n }\n }, {\n key: 'requests',\n set: function set(requests) {\n this._requests = requests;\n },\n get: function get() {\n return this._requests;\n }\n }, {\n key: 'response',\n set: function set(response) {\n var mediaEntryResponse = new _kalturaBaseEntryListResponse2.default(response[0].data);\n this._response.entry = mediaEntryResponse.entries[0];\n this._response.playBackContextResult = new _kalturaPlaybackContext2.default(response[1].data);\n this._response.metadataListResult = new _kalturaMetadataListResponse2.default(response[2].data);\n },\n get: function get() {\n return this._response;\n }\n }]);\n\n return OVPMediaEntryLoader;\n}();\n\nexports.default = OVPMediaEntryLoader;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _playlistService = __webpack_require__(55);\n\nvar _playlistService2 = _interopRequireDefault(_playlistService);\n\nvar _config = __webpack_require__(4);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _kalturaPlaylist = __webpack_require__(53);\n\nvar _kalturaPlaylist2 = _interopRequireDefault(_kalturaPlaylist);\n\nvar _kalturaMediaEntries = __webpack_require__(50);\n\nvar _kalturaMediaEntries2 = _interopRequireDefault(_kalturaMediaEntries);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OVPPlaylistLoader = function () {\n _createClass(OVPPlaylistLoader, null, [{\n key: 'id',\n get: function get() {\n return 'playlist';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n\n }]);\n\n function OVPPlaylistLoader(params) {\n _classCallCheck(this, OVPPlaylistLoader);\n\n this._response = {};\n\n this.requests = this.buildRequests(params);\n this._playlistId = params.playlistId;\n }\n\n _createClass(OVPPlaylistLoader, [{\n key: 'buildRequests',\n\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function buildRequests(params) {\n var config = _config2.default.get();\n var requests = [];\n requests.push(_playlistService2.default.get(config.serviceUrl, params.ks, params.playlistId));\n requests.push(_playlistService2.default.execute(config.serviceUrl, params.ks, params.playlistId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n\n }, {\n key: 'isValid',\n value: function isValid() {\n return !!this._playlistId;\n }\n }, {\n key: 'requests',\n set: function set(requests) {\n this._requests = requests;\n },\n get: function get() {\n return this._requests;\n }\n }, {\n key: 'response',\n set: function set(response) {\n this._response.playlistData = new _kalturaPlaylist2.default(response[0].data);\n this._response.playlistItems = new _kalturaMediaEntries2.default(response[1].data);\n },\n get: function get() {\n return this._response;\n }\n }]);\n\n return OVPPlaylistLoader;\n}();\n\nexports.default = OVPPlaylistLoader;\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _sessionService = __webpack_require__(56);\n\nvar _sessionService2 = _interopRequireDefault(_sessionService);\n\nvar _config = __webpack_require__(4);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OVPSessionLoader = function () {\n _createClass(OVPSessionLoader, [{\n key: 'requests',\n set: function set(requests) {\n this._requests = requests;\n },\n get: function get() {\n return this._requests;\n }\n }, {\n key: 'response',\n set: function set(response) {\n this._response.ks = response[0].data.ks;\n },\n get: function get() {\n return this._response.ks;\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n\n }], [{\n key: 'id',\n get: function get() {\n return 'session';\n }\n }]);\n\n function OVPSessionLoader(params) {\n _classCallCheck(this, OVPSessionLoader);\n\n this._response = {};\n\n this.requests = this.buildRequests(params);\n this._partnerId = params.partnerId;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n\n\n _createClass(OVPSessionLoader, [{\n key: 'buildRequests',\n value: function buildRequests(params) {\n var config = _config2.default.get();\n var requests = [];\n requests.push(_sessionService2.default.anonymousSession(config.serviceUrl, params.partnerId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n\n }, {\n key: 'isValid',\n value: function isValid() {\n return !!this._partnerId;\n }\n }]);\n\n return OVPSessionLoader;\n}();\n\nexports.default = OVPSessionLoader;\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _config = __webpack_require__(4);\n\nvar _config2 = _interopRequireDefault(_config);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PlaySourceUrlBuilder = function () {\n function PlaySourceUrlBuilder() {\n _classCallCheck(this, PlaySourceUrlBuilder);\n }\n\n _createClass(PlaySourceUrlBuilder, null, [{\n key: 'build',\n\n /**\n * Returns source url by given url params\n * @function build\n * @param {Object} urlParams The params\n * @returns {string} The URL\n * @static\n */\n value: function build(urlParams) {\n var config = _config2.default.get();\n var cdnUrl = config.cdnUrl;\n var partnerId = urlParams.partnerId;\n var entryId = urlParams.entryId;\n var ks = urlParams.ks;\n var uiConfId = urlParams.uiConfId;\n var format = urlParams.format;\n var protocol = urlParams.protocol;\n var extension = urlParams.extension;\n var flavorIds = urlParams.flavorIds;\n\n if (cdnUrl === '' && partnerId === '' && entryId === '' && extension === '' && format === '') {\n return '';\n }\n\n var playUrl = cdnUrl;\n if (!cdnUrl.endsWith('/')) {\n playUrl += '/';\n }\n playUrl += 'p/' + partnerId + '/sp/' + partnerId + '00' + '/playManifest/entryId/' + entryId + '/protocol/' + protocol + '/format/' + format;\n\n if (flavorIds !== '') {\n playUrl += '/flavorIds/' + flavorIds;\n } else if (uiConfId !== '') {\n playUrl += '/uiConfId/' + uiConfId;\n }\n\n if (ks !== '') {\n playUrl += '/ks/' + ks;\n }\n\n playUrl += '/a.' + extension;\n\n if (uiConfId && flavorIds !== '') {\n playUrl += '?uiConfId=' + uiConfId;\n }\n\n return playUrl;\n }\n }]);\n\n return PlaySourceUrlBuilder;\n}();\n\nexports.default = PlaySourceUrlBuilder;\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _kalturaFlavorAsset = __webpack_require__(27);\n\nvar _kalturaFlavorAsset2 = _interopRequireDefault(_kalturaFlavorAsset);\n\nvar _kalturaMetadataListResponse = __webpack_require__(28);\n\nvar _kalturaMetadataListResponse2 = _interopRequireDefault(_kalturaMetadataListResponse);\n\nvar _kalturaMediaEntry = __webpack_require__(21);\n\nvar _kalturaMediaEntry2 = _interopRequireDefault(_kalturaMediaEntry);\n\nvar _kalturaPlaybackSource = __webpack_require__(29);\n\nvar _kalturaPlaybackSource2 = _interopRequireDefault(_kalturaPlaybackSource);\n\nvar _kalturaDrmPlaybackPluginData = __webpack_require__(11);\n\nvar _kalturaDrmPlaybackPluginData2 = _interopRequireDefault(_kalturaDrmPlaybackPluginData);\n\nvar _playSourceUrlBuilder = __webpack_require__(48);\n\nvar _playSourceUrlBuilder2 = _interopRequireDefault(_playSourceUrlBuilder);\n\nvar _xmlParser = __webpack_require__(57);\n\nvar _xmlParser2 = _interopRequireDefault(_xmlParser);\n\nvar _logger = __webpack_require__(3);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _config = __webpack_require__(4);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _mediaEntry = __webpack_require__(1);\n\nvar _mediaEntry2 = _interopRequireDefault(_mediaEntry);\n\nvar _drm = __webpack_require__(8);\n\nvar _drm2 = _interopRequireDefault(_drm);\n\nvar _mediaSource = __webpack_require__(6);\n\nvar _mediaSource2 = _interopRequireDefault(_mediaSource);\n\nvar _mediaSources = __webpack_require__(7);\n\nvar _mediaSources2 = _interopRequireDefault(_mediaSources);\n\nvar _mediaFormat = __webpack_require__(5);\n\nvar _baseProviderParser = __webpack_require__(16);\n\nvar _baseProviderParser2 = _interopRequireDefault(_baseProviderParser);\n\nvar _playlist = __webpack_require__(34);\n\nvar _playlist2 = _interopRequireDefault(_playlist);\n\nvar _entryList = __webpack_require__(33);\n\nvar _entryList2 = _interopRequireDefault(_entryList);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar OVPProviderParser = function (_BaseProviderParser) {\n _inherits(OVPProviderParser, _BaseProviderParser);\n\n function OVPProviderParser() {\n _classCallCheck(this, OVPProviderParser);\n\n return _possibleConstructorReturn(this, (OVPProviderParser.__proto__ || Object.getPrototypeOf(OVPProviderParser)).apply(this, arguments));\n }\n\n _createClass(OVPProviderParser, null, [{\n key: 'getMediaEntry',\n\n\n /**\n * Returns parsed media entry by given OVP response objects\n * @function getMediaEntry\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {any} mediaEntryResponse - The media entry response\n * @returns {MediaEntry} - The media entry\n * @static\n * @public\n */\n value: function getMediaEntry(ks, partnerId, uiConfId, mediaEntryResponse) {\n var mediaEntry = new _mediaEntry2.default();\n var entry = mediaEntryResponse.entry;\n var playbackContext = mediaEntryResponse.playBackContextResult;\n var metadataList = mediaEntryResponse.metadataListResult;\n var kalturaSources = playbackContext.sources;\n\n mediaEntry.sources = OVPProviderParser._getParsedSources(kalturaSources, ks, partnerId, uiConfId, entry, playbackContext);\n OVPProviderParser._fillBaseData(mediaEntry, entry, metadataList);\n return mediaEntry;\n }\n\n /**\n * Returns parsed playlist by given OVP response objects\n * @function getPlaylist\n * @param {any} playlistResponse - The playlist response\n * @returns {Playlist} - The playlist\n * @static\n * @public\n */\n\n }, {\n key: 'getPlaylist',\n value: function getPlaylist(playlistResponse) {\n var playlist = new _playlist2.default();\n var playlistData = playlistResponse.playlistData;\n var playlistItems = playlistResponse.playlistItems.entries;\n playlist.id = playlistData.id;\n playlist.name = playlistData.name;\n playlist.description = playlistData.description;\n playlist.poster = playlistData.poster;\n playlistItems.forEach(function (entry) {\n var mediaEntry = new _mediaEntry2.default();\n OVPProviderParser._fillBaseData(mediaEntry, entry);\n playlist.items.push(mediaEntry);\n });\n return playlist;\n }\n\n /**\n * Returns parsed entry list by given OVP response objects\n * @function getEntryList\n * @param {any} playlistResponse - response\n * @returns {Playlist} - The entry list\n * @static\n * @public\n */\n\n }, {\n key: 'getEntryList',\n value: function getEntryList(playlistResponse) {\n var entryList = new _entryList2.default();\n var playlistItems = playlistResponse.playlistItems.entries;\n playlistItems.forEach(function (entry) {\n var mediaEntry = new _mediaEntry2.default();\n OVPProviderParser._fillBaseData(mediaEntry, entry);\n entryList.items.push(mediaEntry);\n });\n return entryList;\n }\n }, {\n key: '_fillBaseData',\n value: function _fillBaseData(mediaEntry, entry, metadataList) {\n mediaEntry.poster = entry.poster;\n mediaEntry.id = entry.id;\n mediaEntry.duration = entry.duration;\n mediaEntry.metadata = this._parseMetadata(metadataList);\n mediaEntry.metadata.description = entry.description || '';\n mediaEntry.metadata.name = entry.name || '';\n mediaEntry.metadata.tags = entry.tags || '';\n\n mediaEntry.type = OVPProviderParser._getEntryType(entry.entryType, entry.type);\n if (mediaEntry.type === _mediaEntry2.default.Type.LIVE) {\n mediaEntry.dvrStatus = entry.dvrStatus;\n }\n\n return mediaEntry;\n }\n }, {\n key: '_getEntryType',\n value: function _getEntryType(entryTypeEnum, typeEnum) {\n var type = _mediaEntry2.default.Type.UNKNOWN;\n switch (entryTypeEnum) {\n case _kalturaMediaEntry2.default.MediaType.IMAGE.value:\n type = _mediaEntry2.default.Type.IMAGE;\n break;\n case _kalturaMediaEntry2.default.MediaType.AUDIO.value:\n type = _mediaEntry2.default.Type.AUDIO;\n break;\n default:\n switch (typeEnum) {\n case _kalturaMediaEntry2.default.EntryType.MEDIA_CLIP.value:\n type = _mediaEntry2.default.Type.VOD;\n break;\n case _kalturaMediaEntry2.default.EntryType.LIVE_STREAM.value:\n case _kalturaMediaEntry2.default.EntryType.LIVE_CHANNEL.value:\n type = _mediaEntry2.default.Type.LIVE;\n break;\n default:\n type = _mediaEntry2.default.Type.UNKNOWN;\n }\n }\n return type;\n }\n\n /**\n * Returns the parsed sources\n * @function _getParsedSources\n * @param {Array} kalturaSources - The kaltura sources\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {Object} entry - The entry\n * @param {Object} playbackContext - The playback context\n * @return {MediaSources} - A media sources\n * @static\n * @private\n */\n\n }, {\n key: '_getParsedSources',\n value: function _getParsedSources(kalturaSources, ks, partnerId, uiConfId, entry, playbackContext) {\n var sources = new _mediaSources2.default();\n var addAdaptiveSource = function addAdaptiveSource(source) {\n var parsedSource = OVPProviderParser._parseAdaptiveSource(source, playbackContext.flavorAssets, ks, partnerId, uiConfId, entry.id);\n var sourceFormat = _mediaFormat.SupportedStreamFormat.get(source.format);\n sources.map(parsedSource, sourceFormat);\n };\n var parseAdaptiveSources = function parseAdaptiveSources() {\n kalturaSources.filter(function (source) {\n return !OVPProviderParser._isProgressiveSource(source);\n }).forEach(addAdaptiveSource);\n };\n var parseProgressiveSources = function parseProgressiveSources() {\n var progressiveSource = kalturaSources.find(OVPProviderParser._isProgressiveSource);\n sources.progressive = OVPProviderParser._parseProgressiveSources(progressiveSource, playbackContext.flavorAssets, ks, partnerId, uiConfId, entry.id);\n };\n if (kalturaSources && kalturaSources.length > 0) {\n parseAdaptiveSources();\n parseProgressiveSources();\n }\n return sources;\n }\n\n /**\n * Returns a parsed adaptive source\n * @function _parseAdaptiveSource\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @param {Array} flavorAssets - The flavor Assets of the kaltura source\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {string} entryId - The entry id\n * @returns {MediaSource} - The parsed adaptive kalturaSource\n * @static\n * @private\n */\n\n }, {\n key: '_parseAdaptiveSource',\n value: function _parseAdaptiveSource(kalturaSource, flavorAssets, ks, partnerId, uiConfId, entryId) {\n var mediaSource = new _mediaSource2.default();\n if (kalturaSource) {\n var playUrl = '';\n var mediaFormat = _mediaFormat.SupportedStreamFormat.get(kalturaSource.format);\n var extension = '';\n if (mediaFormat) {\n extension = mediaFormat.pathExt;\n mediaSource.mimetype = mediaFormat.mimeType;\n }\n // in case playbackSource doesn't have flavors we don't need to build the url and we'll use the provided one.\n if (kalturaSource.hasFlavorIds()) {\n if (!extension && flavorAssets && flavorAssets.length > 0) {\n extension = flavorAssets[0].fileExt;\n }\n playUrl = _playSourceUrlBuilder2.default.build({\n entryId: entryId,\n flavorIds: kalturaSource.flavorIds,\n format: kalturaSource.format,\n ks: ks,\n partnerId: partnerId,\n uiConfId: uiConfId,\n extension: extension,\n protocol: kalturaSource.getProtocol(this._getBaseProtocol())\n });\n } else {\n playUrl = kalturaSource.url;\n }\n if (playUrl === '') {\n OVPProviderParser._logger.error('failed to create play url from source, discarding source: (' + entryId + '_' + kalturaSource.deliveryProfileId + '), ' + kalturaSource.format + '.');\n return mediaSource;\n }\n mediaSource.url = playUrl;\n mediaSource.id = entryId + '_' + kalturaSource.deliveryProfileId + ',' + kalturaSource.format;\n if (kalturaSource.hasDrmData()) {\n var drmParams = [];\n kalturaSource.drm.forEach(function (drm) {\n drmParams.push(new _drm2.default(drm.licenseURL, _kalturaDrmPlaybackPluginData2.default.Scheme[drm.scheme], drm.certificate));\n });\n mediaSource.drmData = drmParams;\n }\n }\n return mediaSource;\n }\n\n /**\n * Returns parsed progressive sources\n * @function _parseProgressiveSources\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @param {Array} flavorAssets - The flavor Assets of the kaltura source\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {string} entryId - The entry id\n * @returns {Array} - The parsed progressive kalturaSources\n * @static\n * @private\n */\n\n }, {\n key: '_parseProgressiveSources',\n value: function _parseProgressiveSources(kalturaSource, flavorAssets, ks, partnerId, uiConfId, entryId) {\n var videoSources = [];\n var audioSources = [];\n if (kalturaSource) {\n var protocol = kalturaSource.getProtocol(this._getBaseProtocol());\n var format = kalturaSource.format;\n var sourceId = kalturaSource.deliveryProfileId + ',' + kalturaSource.format;\n flavorAssets.map(function (flavor) {\n var mediaSource = new _mediaSource2.default();\n mediaSource.id = flavor.id + sourceId;\n mediaSource.mimetype = flavor.fileExt === 'mp3' ? 'audio/mp3' : 'video/mp4';\n mediaSource.height = flavor.height;\n mediaSource.width = flavor.width;\n mediaSource.bandwidth = flavor.bitrate * 1024;\n mediaSource.label = flavor.label || flavor.language;\n mediaSource.url = _playSourceUrlBuilder2.default.build({\n entryId: entryId,\n flavorIds: flavor.id,\n format: format,\n ks: ks,\n partnerId: partnerId,\n uiConfId: uiConfId,\n extension: flavor.fileExt,\n protocol: protocol\n });\n if (flavor.height && flavor.width) {\n videoSources.push(mediaSource);\n } else {\n audioSources.push(mediaSource);\n }\n });\n }\n //If we have only audio flavors return them, otherwise return video flavors\n return audioSources.length && !videoSources.length ? audioSources : videoSources;\n }\n\n /**\n * Ovp metadata parser\n * @function _parseMetaData\n * @param {KalturaMetadataListResponse} metadataList The metadata list\n * @returns {Object} Parsed metadata\n * @static\n * @private\n */\n\n }, {\n key: '_parseMetadata',\n value: function _parseMetadata(metadataList) {\n var metadata = {};\n if (metadataList && metadataList.metas && metadataList.metas.length > 0) {\n metadataList.metas.forEach(function (meta) {\n var metaXml = void 0;\n var domParser = new DOMParser();\n meta.xml = meta.xml.replace(/\\r?\\n|\\r/g, '');\n meta.xml = meta.xml.replace(/>\\s*/g, '>');\n meta.xml = meta.xml.replace(/>\\s*/g, '>');\n metaXml = domParser.parseFromString(meta.xml, 'text/xml');\n var metasObj = _xmlParser2.default.xmlToJson(metaXml);\n var metaKeys = Object.keys(metasObj.metadata);\n metaKeys.forEach(function (key) {\n metadata[key] = metasObj.metadata[key]['#text'];\n });\n });\n }\n return metadata;\n }\n\n /**\n * Returns the base protocol\n * @function _getBaseProtocol\n * @returns {string} - The base protocol\n * @static\n * @private\n */\n\n }, {\n key: '_getBaseProtocol',\n value: function _getBaseProtocol() {\n var config = _config2.default.get();\n var protocolRegex = /^https?:/;\n var result = protocolRegex.exec(config.cdnUrl);\n var protocol = result ? result[0] : document.location.protocol;\n if (typeof protocol === 'string') {\n return protocol.slice(0, -1); // remove ':' from the end\n }\n return 'https';\n }\n }]);\n\n return OVPProviderParser;\n}(_baseProviderParser2.default);\n\nOVPProviderParser._logger = (0, _logger2.default)('OVPProviderParser');\nexports.default = OVPProviderParser;\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nvar _kalturaMediaEntry = __webpack_require__(21);\n\nvar _kalturaMediaEntry2 = _interopRequireDefault(_kalturaMediaEntry);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar KalturaMediaEntries = function (_ServiceResult) {\n _inherits(KalturaMediaEntries, _ServiceResult);\n\n /**\n * @constructor\n * @param {Object} responseObj The json response\n */\n function KalturaMediaEntries(responseObj) {\n _classCallCheck(this, KalturaMediaEntries);\n\n var _this = _possibleConstructorReturn(this, (KalturaMediaEntries.__proto__ || Object.getPrototypeOf(KalturaMediaEntries)).call(this, responseObj));\n\n if (!_this.hasError) {\n _this.entries = [];\n responseObj.map(function (entry) {\n return _this.entries.push(new _kalturaMediaEntry2.default(entry));\n });\n }\n return _this;\n }\n /**\n * @member - The entries\n * @type {Array}\n */\n\n\n return KalturaMediaEntries;\n}(_baseServiceResult2.default);\n\nexports.default = KalturaMediaEntries;\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaMetadata =\n\n/**\n * @constructor\n * @param {Object} data The response\n */\nfunction KalturaMetadata(data) {\n _classCallCheck(this, KalturaMetadata);\n\n this.id = data.id;\n this.metadataProfileId = data.metadataProfileId;\n this.metadataProfileVersion = data.metadataProfileVersion;\n this.metadataProfileId = data.metadataProfileId;\n this.metadataObjectType = data.metadataObjectType;\n this.objectId = data.objectId;\n this.version = data.version;\n this.created = new Date(0);\n this.created.setUTCSeconds(data.createdAt);\n this.updated = new Date(0);\n this.updated.setUTCSeconds(data.updatedAt);\n this.status = data.status;\n this.xml = data.xml;\n};\n\nKalturaMetadata.ObjectType = {\n AD_CUE_POINT: 'adCuePointMetadata.AdCuePoint',\n ANNOTATION: 'annotationMetadata.Annotation',\n CODE_CUE_POINT: 'codeCuePointMetadata.CodeCuePoint',\n THUMB_CUE_POINT: 'thumbCuePointMetadata.thumbCuePoint',\n ENTRY: 1,\n CATEGORY: 2,\n USER: 3,\n PARTNER: 4,\n DYNAMIC_OBJECT: 5\n};\nKalturaMetadata.Status = {\n VALID: 1,\n INVALID: 2,\n DELETED: 3\n};\nexports.default = KalturaMetadata;\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nvar _kalturaAccessControlMessage = __webpack_require__(18);\n\nvar _kalturaAccessControlMessage2 = _interopRequireDefault(_kalturaAccessControlMessage);\n\nvar _kalturaPlaybackSource = __webpack_require__(29);\n\nvar _kalturaPlaybackSource2 = _interopRequireDefault(_kalturaPlaybackSource);\n\nvar _kalturaRuleAction = __webpack_require__(19);\n\nvar _kalturaRuleAction2 = _interopRequireDefault(_kalturaRuleAction);\n\nvar _kalturaFlavorAsset = __webpack_require__(27);\n\nvar _kalturaFlavorAsset2 = _interopRequireDefault(_kalturaFlavorAsset);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar KalturaPlaybackContext = function (_ServiceResult) {\n _inherits(KalturaPlaybackContext, _ServiceResult);\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n\n /**\n * @member - The playback sources\n * @type {Array}\n */\n function KalturaPlaybackContext(response) {\n _classCallCheck(this, KalturaPlaybackContext);\n\n var _this = _possibleConstructorReturn(this, (KalturaPlaybackContext.__proto__ || Object.getPrototypeOf(KalturaPlaybackContext)).call(this, response));\n\n _this.sources = [];\n _this.actions = [];\n _this.messages = [];\n _this.flavorAssets = [];\n\n if (!_this.hasError) {\n var messages = response.messages;\n if (messages) {\n messages.map(function (message) {\n return _this.messages.push(new _kalturaAccessControlMessage2.default(message));\n });\n }\n var actions = response.actions;\n if (actions) {\n actions.map(function (action) {\n return _this.actions.push(new _kalturaRuleAction2.default(action));\n });\n }\n var sources = response.sources;\n if (sources) {\n sources.map(function (source) {\n return _this.sources.push(new _kalturaPlaybackSource2.default(source));\n });\n }\n var flavorAssets = response.flavorAssets;\n if (flavorAssets) {\n flavorAssets.map(function (flavor) {\n return _this.flavorAssets.push(new _kalturaFlavorAsset2.default(flavor));\n });\n }\n }\n return _this;\n }\n /**\n * @member - The flavor assets\n * @type {Array}\n */\n\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n\n\n return KalturaPlaybackContext;\n}(_baseServiceResult2.default);\n\nexports.default = KalturaPlaybackContext;\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar KalturaPlaylist =\n\n/**\n * @constructor\n * @param {Object} playlist - The json response\n */\n\n/**\n * @member - playlist description\n * @type {string}\n */\n\n/**\n * @member - playlist id\n * @type {string}\n */\nfunction KalturaPlaylist(playlist) {\n _classCallCheck(this, KalturaPlaylist);\n\n this.id = playlist.id;\n this.name = playlist.name;\n this.description = playlist.description;\n this.poster = playlist.thumbnailUrl;\n}\n/**\n * @member - playlist poster image\n * @type {string}\n */\n\n/**\n * @member - playlist name\n * @type {string}\n */\n;\n\nexports.default = KalturaPlaylist;\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ovpService = __webpack_require__(12);\n\nvar _ovpService2 = _interopRequireDefault(_ovpService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'metadata_metadata';\n\nvar OVPMetadataService = function (_OVPService) {\n _inherits(OVPMetadataService, _OVPService);\n\n function OVPMetadataService() {\n _classCallCheck(this, OVPMetadataService);\n\n return _possibleConstructorReturn(this, (OVPMetadataService.__proto__ || Object.getPrototypeOf(OVPMetadataService)).apply(this, arguments));\n }\n\n _createClass(OVPMetadataService, null, [{\n key: 'list',\n\n /**\n * Creates an instance of RequestBuilder for metadata_metadata.list\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function list(serviceUrl, ks, entryId) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'list';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'metadata_metadata-list';\n var filter = { objectType: 'KalturaMetadataFilter', objectIdEqual: entryId, metadataObjectTypeEqual: '1' };\n request.params = { filter: filter, ks: ks };\n return request;\n }\n }]);\n\n return OVPMetadataService;\n}(_ovpService2.default);\n\nexports.default = OVPMetadataService;\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ovpService = __webpack_require__(12);\n\nvar _ovpService2 = _interopRequireDefault(_ovpService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _baseEntryResponseProfile = __webpack_require__(25);\n\nvar _baseEntryResponseProfile2 = _interopRequireDefault(_baseEntryResponseProfile);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'playlist';\n\nvar OVPPlaylistService = function (_OVPService) {\n _inherits(OVPPlaylistService, _OVPService);\n\n function OVPPlaylistService() {\n _classCallCheck(this, OVPPlaylistService);\n\n return _possibleConstructorReturn(this, (OVPPlaylistService.__proto__ || Object.getPrototypeOf(OVPPlaylistService)).apply(this, arguments));\n }\n\n _createClass(OVPPlaylistService, null, [{\n key: 'execute',\n\n /**\n * Creates an instance of RequestBuilder for playlist.getPlaybackContext\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {string} playlistId The playlist ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function execute(serviceUrl, ks, playlistId) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'execute';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = SERVICE_NAME + '-execute';\n request.params = {\n ks: ks,\n id: playlistId,\n responseProfile: new _baseEntryResponseProfile2.default()\n };\n return request;\n }\n\n /**\n * Creates an instance of RequestBuilder for playlist.list\n * @function list\n * @param {string} serviceUrl The base URL\n * @param {string} ks The ks\n * @param {string} playlistId The playlist ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n\n }, {\n key: 'get',\n value: function get(serviceUrl, ks, playlistId) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'get';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = SERVICE_NAME + '-get';\n request.params = {\n ks: ks,\n id: playlistId,\n responseProfile: {\n fields: 'id,name,description,thumbnailUrl',\n type: 1\n }\n };\n return request;\n }\n }]);\n\n return OVPPlaylistService;\n}(_ovpService2.default);\n\nexports.default = OVPPlaylistService;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ovpService = __webpack_require__(12);\n\nvar _ovpService2 = _interopRequireDefault(_ovpService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'session';\n\nvar OVPSessionService = function (_OVPService) {\n _inherits(OVPSessionService, _OVPService);\n\n function OVPSessionService() {\n _classCallCheck(this, OVPSessionService);\n\n return _possibleConstructorReturn(this, (OVPSessionService.__proto__ || Object.getPrototypeOf(OVPSessionService)).apply(this, arguments));\n }\n\n _createClass(OVPSessionService, null, [{\n key: 'anonymousSession',\n\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} partnerId The partner ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n value: function anonymousSession(serviceUrl, partnerId) {\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var request = new _requestBuilder2.default(headers);\n request.service = SERVICE_NAME;\n request.action = 'startWidgetSession';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'session-startWidget';\n request.params = { widgetId: '_' + partnerId };\n return request;\n }\n }]);\n\n return OVPSessionService;\n}(_ovpService2.default);\n\nexports.default = OVPSessionService;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar XmlParser = function () {\n function XmlParser() {\n _classCallCheck(this, XmlParser);\n }\n\n _createClass(XmlParser, null, [{\n key: 'xmlToJson',\n\n /**\n * Parses xml string to json object\n * @param {string} xml The xml to parse\n * @returns {{}} The parsed xml as Json object\n * @static\n */\n value: function xmlToJson(xml) {\n var obj = {};\n if (xml.nodeType === 1) {\n if (xml.attributes.length > 0) {\n obj['@attributes'] = {};\n for (var j = 0; j < xml.attributes.length; j++) {\n var attribute = xml.attributes.item(j);\n obj['@attributes'][attribute.nodeName] = attribute.nodeValue;\n }\n }\n } else if (xml.nodeType === 3) {\n obj = xml.nodeValue;\n }\n if (xml.hasChildNodes()) {\n for (var i = 0; i < xml.childNodes.length; i++) {\n var item = xml.childNodes.item(i);\n var nodeName = item.nodeName;\n if (typeof obj[nodeName] === 'undefined') {\n obj[nodeName] = this.xmlToJson(item);\n } else {\n if (typeof obj[nodeName].push === 'undefined') {\n var old = obj[nodeName];\n obj[nodeName] = [];\n obj[nodeName].push(old);\n }\n obj[nodeName].push(this.xmlToJson(item));\n }\n }\n }\n return obj;\n }\n }]);\n\n return XmlParser;\n}();\n\nexports.default = XmlParser;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// playkit-ovp-provider.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 42);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 93ff0b3f93c7e54c46e2","//@flow\nexport default class RequestBuilder {\n /**\n * @member - Service name\n * @type {string}\n */\n service: string;\n /**\n * @member - Service action\n * @type {string}\n */\n action: string;\n /**\n * @member - Service params\n * @type {any}\n */\n params: any;\n /**\n * @member - Service headers\n * @type {Map}\n */\n headers: Map;\n /**\n * @member - Service URL\n * @type {string}\n */\n url: string;\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n method: string;\n /**\n * @member - Service tag\n * @type {string}\n */\n tag: string;\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n constructor(headers: Map = new Map()) {\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n getUrl(serviceUrl: string): string {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n doHttpRequest(): Promise {\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n let request = new XMLHttpRequest();\n return new Promise((resolve, reject) => {\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.status === 200) {\n let jsonResponse;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(`${e.message}, ${request.responseText}`);\n }\n if (jsonResponse && typeof jsonResponse === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);\n else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(this.method, this.url);\n this.headers.forEach((value, key) => {\n request.setRequestHeader(key, value);\n });\n request.send(this.params);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./util/request-builder.js","//@flow\nimport MediaSources from './media-sources';\n\nexport default class MediaEntry {\n static Type: {[type: string]: string} = {\n VOD: 'Vod',\n LIVE: 'Live',\n IMAGE: 'Image',\n AUDIO: 'Audio',\n UNKNOWN: 'Unknown'\n };\n\n /**\n * @member - entry id\n * @type {string}\n */\n id: string;\n /**\n * @member - entry name\n * @type {string}\n */\n name: string;\n /**\n * @member - entry sources\n * @type {MediaSources}\n */\n sources: MediaSources;\n /**\n * @member - entry duration\n * @type {number}\n */\n duration: number;\n /**\n * @member - entry type\n * @type {string}\n */\n type: string;\n /**\n * @member - entry metadata\n * @type {Object}\n */\n metadata: Object;\n /**\n * @member - DVR status\n * @type {number}\n */\n dvrStatus: number;\n /**\n * @member - media poster\n * @type {string | Array}\n */\n poster: string | Array;\n\n /**\n * @member - assetReferenceType\n * @type {string }\n */\n assetReferenceType: string;\n\n /**\n * @constructor\n */\n constructor() {\n this.metadata = new Map();\n this.sources = new MediaSources();\n this.type = MediaEntry.Type.UNKNOWN;\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaEntryObject} - The json class object.\n */\n toJSON(): ProviderMediaEntryObject {\n return {\n id: this.id,\n name: this.name,\n sources: this.sources.toJSON(),\n duration: this.duration,\n dvrStatus: this.dvrStatus,\n metadata: this.metadata,\n type: this.type,\n poster: this.poster,\n assetReferenceType: this.assetReferenceType\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-entry.js","//@flow\nexport default class ServiceResult {\n /**\n * @member - Is service returned an error\n * @type {boolean}\n */\n hasError: boolean = false;\n /**\n * @member - The service error\n * @type {ServiceError}\n */\n error: ServiceError;\n /**\n * @member - The service result data\n * @type {Object}\n */\n data: Object;\n\n /**\n * @constructor\n * @param {Object} response - Service response\n */\n constructor(response: Object) {\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n }\n}\n\nclass ServiceError {\n /**\n * @member - The error code\n * @type {string}\n */\n code: string;\n /**\n * @member - The error message\n * @type {string}\n */\n message: string;\n\n /**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n constructor(code: string, message: string) {\n this.code = code;\n this.message = message;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-service-result.js","//@flow\nimport * as JsLogger from 'js-logger';\n\nexport type LogLevelObject = {value: number, name: string};\nexport type LogLevelType = {[level: string]: LogLevelObject};\n\nconst LogLevel: LogLevelType = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\nJsLogger.useDefaults({defaultLevel: JsLogger.ERROR});\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name?: string): Object {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name?: string): LogLevelObject {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level: LogLevelObject, name?: string): void {\n getLogger(name).setLevel(level);\n}\n\nexport default getLogger;\nexport {LogLevel, getLogLevel, setLogLevel};\n\n\n\n// WEBPACK FOOTER //\n// ./util/logger.js","//@flow\nimport {clone} from '../../util/clone';\n\nconst defaultConfig: Object = {\n serviceUrl: 'https://cdnapisec.kaltura.com/api_v3',\n cdnUrl: '//cdnapisec.kaltura.com',\n serviceParams: {\n apiVersion: '3.3.0',\n format: 1\n }\n};\n\nexport default class OVPConfiguration {\n static set(clientConfig?: ProviderEnvConfigObject) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n static get(): Object {\n return clone(defaultConfig);\n }\n}\n\nexport {OVPConfiguration};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/config.js","//@flow\nexport const MediaFormat: {[name: string]: ProviderMediaFormatType} = {\n DASH: {\n name: 'dash',\n mimeType: 'application/dash+xml',\n pathExt: 'mpd'\n },\n HLS: {\n name: 'hls',\n mimeType: 'application/x-mpegURL',\n pathExt: 'm3u8'\n },\n WVM: {\n name: 'wvm',\n mimeType: 'video/wvm',\n pathExt: 'wvm'\n },\n MP4: {\n name: 'mp4',\n mimeType: 'video/mp4',\n pathExt: 'mp4'\n },\n MP3: {\n name: 'mp3',\n mimeType: 'audio/mpeg',\n pathExt: 'mp3'\n }\n};\n\nexport const SupportedStreamFormat: Map = new Map([\n ['mpegdash', MediaFormat.DASH],\n ['applehttp', MediaFormat.HLS],\n ['url', MediaFormat.MP4]\n]);\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-format.js","//@flow\nimport Drm from './drm';\n\nexport default class MediaSource {\n /**\n * @member - media source id\n * @type {string}\n */\n id: string;\n /**\n * @member - media source url\n * @type {string}\n */\n url: string;\n /**\n * @member - media source mimetype\n * @type {string}\n */\n mimetype: string;\n /**\n * @member - media source drm data\n * @type {Array}\n */\n drmData: Array;\n /**\n * @member - media source bandwidth\n * @type {number}\n */\n bandwidth: number;\n /**\n * @member - media source width\n * @type {number}\n */\n width: number;\n /**\n * @member - media source height\n * @type {number}\n */\n height: number;\n /**\n * @member - media source label\n * @type {string}\n */\n label: string;\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourceObject} - The json class object.\n */\n toJSON(): ProviderMediaSourceObject {\n const response: ProviderMediaSourceObject = {\n id: this.id,\n url: this.url,\n mimetype: this.mimetype\n };\n if (this.bandwidth) response.bandwidth = this.bandwidth;\n if (this.width) response.width = this.width;\n if (this.height) response.height = this.height;\n if (this.label) response.label = this.label;\n if (this.drmData && this.drmData.length > 0) {\n response.drmData = [];\n this.drmData.forEach(d => {\n if (Array.isArray(response.drmData)) {\n response.drmData.push(d.toJSON());\n }\n });\n }\n return response;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-source.js","// @flow\nimport MediaSource from './media-source';\nimport {MediaFormat} from './media-format';\n\nexport default class MediaSources {\n /**\n * Progressive download media sources container.\n * @type {Array}\n * @public\n */\n progressive: Array;\n /**\n * Dash media sources container.\n * @type {Array}\n * @public\n */\n dash: Array;\n /**\n * Hls media sources container.\n * @type {Array}\n * @public\n */\n hls: Array;\n\n /**\n * @constructor\n */\n constructor() {\n this.progressive = [];\n this.dash = [];\n this.hls = [];\n }\n\n /**\n * Maps the source to one of the containers according to his media format.\n * @param {MediaSource} source - The source to add to one of the containers.\n * @param {MediaFormat} mediaFormat - The media format of the source.\n * @returns {void}\n */\n map(source: MediaSource, mediaFormat: ?ProviderMediaFormatType) {\n if (mediaFormat) {\n switch (mediaFormat.name) {\n case MediaFormat.MP4.name:\n this.progressive.push(source);\n break;\n case MediaFormat.DASH.name:\n this.dash.push(source);\n break;\n case MediaFormat.HLS.name:\n this.hls.push(source);\n break;\n default:\n break;\n }\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourcesObject} - The json class object.\n */\n toJSON(): ProviderMediaSourcesObject {\n const response: ProviderMediaSourcesObject = {\n progressive: [],\n dash: [],\n hls: []\n };\n this.progressive.forEach(p => response.progressive.push(p.toJSON()));\n this.hls.forEach(h => response.hls.push(h.toJSON()));\n this.dash.forEach(d => response.dash.push(d.toJSON()));\n return response;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/media-sources.js","//@flow\nexport default class Drm {\n /**\n * @member - license url\n * @type {string}\n */\n licenseUrl: string;\n /**\n * @member - drm scheme\n * @type {string}\n */\n scheme: string;\n\n /**\n * @member - drm certificate\n * @type {string}\n */\n certificate: string;\n\n /**\n * @constructor\n * @param {string} licenseUrl - the license url\n * @param {string} scheme - the drm scheme\n * @param {?string} certificate - the drm certificate\n */\n constructor(licenseUrl: string, scheme: string, certificate: ?string) {\n this.licenseUrl = licenseUrl;\n this.scheme = scheme;\n if (certificate) {\n this.certificate = certificate;\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderDrmDataObject} - The json class object.\n */\n toJSON(): ProviderDrmDataObject {\n const response: ProviderDrmDataObject = {\n licenseUrl: this.licenseUrl,\n scheme: this.scheme\n };\n if (this.certificate) response.certificate = this.certificate;\n return response;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/drm.js","// @flow\nimport MultiRequestBuilder, {MultiRequestResult} from './multi-request-builder';\n\nexport default class DataLoaderManager {\n /**\n * @member - Loaders response map index\n * @type {Map>}\n * @private\n * @static\n */\n static _loadersResponseMap: Map> = new Map();\n /**\n * @member - Loaders multi request\n * @type {MultiRequestBuilder}\n * @protected\n */\n _multiRequest: MultiRequestBuilder;\n /**\n * @member - Loaders multi response\n * @type {MultiRequestResult}\n * @private\n */\n _multiResponse: MultiRequestResult;\n /**\n * @member - Loaders to execute\n * @type {Map}\n * @private\n */\n _loaders: Map = new Map();\n\n /**\n * Add loader too execution loaders map\n * @function\n * @param {Function} loader Loader to add\n * @param {Object} params Loader params\n * @returns {void}\n */\n add(loader: Function, params: Object): void {\n let execution_loader = new loader(params);\n if (execution_loader.isValid()) {\n this._loaders.set(loader.id, execution_loader);\n // Get the start index from the multiReqeust before adding current execution_loader requests\n let startIndex = this._multiRequest.requests.length;\n // Get the requests\n let requests = execution_loader.requests;\n // Add requests to muktiRequest queue\n requests.forEach(request => {\n this._multiRequest.add(request);\n });\n // Create range array of current execution_loader requests\n let executionLoaderResponseMap = Array.from(new Array(requests.length), (val, index) => index + startIndex);\n // Add to map\n DataLoaderManager._loadersResponseMap.set(loader.id, executionLoaderResponseMap);\n }\n }\n\n /**\n * Get data from all loaders using multi request\n * @function\n * @returns {Promise} Promise\n */\n fetchData(): Promise {\n return new Promise((resolve, reject) => {\n this._multiRequest.execute().then(\n response => {\n this._multiResponse = response;\n if (!response.success) {\n reject(response);\n } else {\n let preparedData: Object = this.prepareData(response);\n if (preparedData.success) {\n resolve(this._loaders);\n } else {\n reject({success: false, data: preparedData.error});\n }\n }\n },\n err => {\n reject(err);\n }\n );\n });\n }\n\n /**\n * Prepare fetched data\n * @function\n * @param {MultiRequestResult} response - The multi request result\n * @returns {Object} - The prepared data\n */\n prepareData(response: MultiRequestResult): Object {\n this._loaders.forEach(function(loader, name) {\n let loaderDataIndexes = DataLoaderManager._loadersResponseMap.get(name);\n try {\n if (loaderDataIndexes && loaderDataIndexes.length > 0) {\n loader.response = response.results.slice(loaderDataIndexes[0], loaderDataIndexes[loaderDataIndexes.length - 1] + 1);\n }\n } catch (err) {\n return {success: false, error: err};\n }\n });\n return {success: true, data: this._loaders};\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/data-loader-manager.js","//@flow\nimport RequestBuilder from '../../util/request-builder';\nimport getLogger from '../../util/logger';\nimport ServiceResult from './base-service-result';\n\nexport default class MultiRequestBuilder extends RequestBuilder {\n static _logger = getLogger('MultiRequestBuilder');\n /**\n * @member - Array of requests\n * @type {Array}\n */\n requests: Array = [];\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n add(request: RequestBuilder): MultiRequestBuilder {\n this.requests.push(request);\n const requestParams = {};\n const serviceDef: Object = {service: request.service, action: request.action};\n Object.assign(requestParams, {[this.requests.length]: Object.assign(serviceDef, request.params)});\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n execute(): Promise {\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error(`${err.message}`);\n }\n return new Promise((resolve, reject) => {\n this.doHttpRequest().then(\n data => {\n resolve(new MultiRequestResult(data));\n },\n err => {\n const errorText: string = `Error on multiRequest execution, error <${err}>.`;\n reject(errorText);\n }\n );\n });\n }\n}\n\nexport class MultiRequestResult {\n static _logger = getLogger('MultiRequestResult');\n /**\n * @member - Is success\n * @type {boolean}\n */\n success: boolean;\n /**\n * @member - Multi request response data\n * @type {Object}\n */\n results: Array = [];\n\n /**\n * @constructor\n * @param {Object} response data\n */\n constructor(response: Object) {\n this.success = true;\n const responseArr = response.result ? response.result : response;\n responseArr.forEach(result => {\n const serviceResult: ServiceResult = new ServiceResult(result);\n this.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error(\n `Service returned an error with error code: ${serviceResult.error.code} and message: ${serviceResult.error.message}.`\n );\n this.success = false;\n return;\n }\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/multi-request-builder.js","//@flow\nexport default class KalturaDrmPlaybackPluginData {\n static Scheme: {[scheme: string]: string} = {\n 'drm.PLAYREADY_CENC': 'com.microsoft.playready',\n 'drm.WIDEVINE_CENC': 'com.widevine.alpha',\n 'fairplay.FAIRPLAY': 'com.apple.fairplay',\n WIDEVINE_CENC: 'com.widevine.alpha',\n PLAYREADY_CENC: 'com.microsoft.playready',\n FAIRPLAY: 'com.apple.fairplay'\n };\n\n /**\n * @member - The drm scheme\n * @type {string}\n */\n scheme: string;\n\n /**\n * @member - The license URL\n * @type {string}\n */\n licenseURL: string;\n\n /**\n * @member - The drm certificate\n * @type {?string}\n */\n certificate: ?string;\n\n /**\n * @constructor\n * @param {Object} drm The json response\n */\n constructor(drm: any) {\n this.scheme = drm.scheme;\n this.licenseURL = drm.licenseURL;\n this.certificate = drm.certificate;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/response-types/kaltura-drm-playback-plugin-data.js","//@flow\nimport MultiRequestBuilder from '../../common/multi-request-builder';\nimport OVPConfiguration from '../config';\n\nconst SERVICE_NAME: string = 'multirequest';\n\nexport default class OVPService {\n /**\n * Gets a new instance of MultiRequestBuilder with ovp params\n * @function getMultiRequest\n * @param {string} playerVersion The player version\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n static getMultiRequest(playerVersion: string, ks: string, partnerId?: number): MultiRequestBuilder {\n const config = OVPConfiguration.get();\n const ovpParams = config.serviceParams;\n Object.assign(ovpParams, {ks: ks, clientTag: 'html5:v' + playerVersion});\n if (partnerId) {\n Object.assign(ovpParams, {partnerId: partnerId});\n }\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const multiReq = new MultiRequestBuilder(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ovpParams;\n return multiReq;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/ovp-service.js","// @flow\nimport {SupportedStreamFormat} from '../../entities/media-format';\nimport MediaEntry from '../../entities/media-entry';\nimport MediaSources from '../../entities/media-sources';\nimport MediaSource from '../../entities/media-source';\nimport type {OTTKalturaPlaybackSource} from '../ott/response-types/kaltura-playback-source';\nimport type {OVPKalturaPlaybackSource} from '../ovp/response-types/kaltura-playback-source';\n\nexport default class BaseProviderParser {\n // eslint-disable-next-line no-unused-vars\n static getMediaEntry(...parms): MediaEntry {\n throw new TypeError(`getMediaEntry method must be implement by the derived class`);\n }\n\n // eslint-disable-next-line no-unused-vars\n static _getParsedSources(...parms): MediaSources {\n throw new TypeError(`_getParsedSources method must be implement by the derived class`);\n }\n\n // eslint-disable-next-line no-unused-vars\n static _parseAdaptiveSource(...parms): MediaSource {\n throw new TypeError(`_parseAdaptiveSource method must be implement by the derived class`);\n }\n\n static _isProgressiveSource(source: OVPKalturaPlaybackSource | OTTKalturaPlaybackSource): boolean {\n const sourceFormat = SupportedStreamFormat.get(source.format);\n return !!sourceFormat && sourceFormat.name === 'mp4';\n }\n\n static hasBlockActions(assetResponse: any): any {\n if (assetResponse && assetResponse.playBackContextResult) {\n const playbackContext = assetResponse.playBackContextResult;\n for (let actionIndex = 0; actionIndex < playbackContext.actions.length; actionIndex++) {\n if (playbackContext.actions[actionIndex].type === 'BLOCK') {\n return playbackContext.actions[actionIndex];\n }\n }\n }\n return null;\n }\n\n static hasErrorMessage(assetResponse: any): any {\n const messages = assetResponse.playBackContextResult.messages;\n for (let messagesIndex = 0; messagesIndex < messages.length; messagesIndex++) {\n if (messages[messagesIndex].code !== 'OK') {\n return messages[messagesIndex];\n }\n }\n return null;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-provider-parser.js","// @flow\nimport {setLogLevel, getLogLevel, LogLevel} from '../../util/logger';\nimport DataLoaderManager from './data-loader-manager';\n\nexport default class BaseProvider {\n _partnerId: number;\n _ks: string;\n _uiConfId: ?number;\n _dataLoader: DataLoaderManager;\n _playerVersion: string;\n _logger: any;\n _isAnonymous: boolean;\n\n get partnerId(): number {\n return this._partnerId;\n }\n\n get uiConfId(): ?number {\n return this._uiConfId;\n }\n\n get ks(): string {\n return this._ks;\n }\n\n set ks(value: string): void {\n this._ks = value;\n }\n\n get playerVersion(): string {\n return this._playerVersion;\n }\n\n get isAnonymous(): boolean {\n return this._isAnonymous;\n }\n\n constructor(options: ProviderOptionsObject, playerVersion: string) {\n this._partnerId = options.partnerId;\n this._uiConfId = options.uiConfId;\n this._isAnonymous = !options.ks;\n this._ks = options.ks || '';\n this._playerVersion = playerVersion;\n if (options.logLevel && this.LogLevel[options.logLevel]) {\n setLogLevel(this.LogLevel[options.logLevel]);\n }\n }\n\n // eslint-disable-next-line no-unused-vars\n getMediaConfig(mediaInfo: MI): Promise {\n throw new TypeError(`getMediaConfig method must be implement by the derived class`);\n }\n\n // eslint-disable-next-line no-unused-vars\n _parseDataFromResponse(data: Map, ...params: any): ProviderMediaConfigObject {\n throw new TypeError(`_parseDataFromResponse method must be implement by the derived class`);\n }\n\n get LogLevel(): {[level: string]: Object} {\n return LogLevel;\n }\n\n getLogLevel(name?: string): Object {\n return getLogLevel(name);\n }\n\n setLogLevel(level: Object, name?: string): void {\n setLogLevel(level, name);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-provider.js","//@flow\nexport default class KalturaAccessControlMessage {\n /**\n * @member - The access control message\n * @type {string}\n */\n message: string;\n /**\n * @member - The access control message code\n * @@type {string}\n */\n code: string;\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: Object) {\n this.message = data.message;\n this.code = data.code;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/response-types/kaltura-access-control-message.js","//@flow\nexport default class KalturaRuleAction {\n static Type: {[type: string]: string | number} = {\n DRM_POLICY: 'drm.DRM_POLICY',\n BLOCK: 1,\n PREVIEW: 2,\n LIMIT_FLAVORS: 3,\n ADD_TO_STORAGE: 4,\n LIMIT_DELIVERY_PROFILES: 5,\n SERVE_FROM_REMOTE_SERVER: 6,\n REQUEST_HOST_REGEX: 7,\n LIMIT_THUMBNAIL_CAPTURE: 8\n };\n\n /**\n * @member - The type of the action\n * @type {string|number}\n */\n type: string | number;\n\n /**\n * @constructor\n * @param {Object} data - The response\n */\n constructor(data: Object) {\n this.type = data.type;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/response-types/kaltura-rule-action.js","//@flow\nexport default class KalturaMediaEntry {\n static EntryType: {[entryType: string]: {value: number | string}} = {\n AUTOMATIC: {value: -1},\n EXTERNAL_MEDIA: {value: 'externalMedia.externalMedia'},\n MEDIA_CLIP: {value: 1},\n MIX: {value: 2},\n PLAYLIST: {value: 5},\n DATA: {value: 6},\n LIVE_STREAM: {value: 7},\n LIVE_CHANNEL: {value: 8},\n DOCUMENT: {value: 10}\n };\n\n static MediaType: {[mediaType: string]: {value: number}} = {\n VIDEO: {value: 1},\n IMAGE: {value: 2},\n AUDIO: {value: 5},\n LIVE_STREAM_FLASH: {value: 201},\n LIVE_STREAM_WINDOWS_MEDIA: {value: 202},\n LIVE_STREAM_REAL_MEDIA: {value: 203},\n LIVE_STREAM_QUICK_TIME: {value: 204}\n };\n\n static EntryStatus: {[status: string]: string | number} = {\n ERROR_IMPORTING: -2,\n ERROR_CONVERTING: -1,\n SCAN_FAILURE: 'virusScan.ScanFailure',\n IMPORT: 0,\n INFECTED: 'virusScan.Infected',\n PRECONVERT: 1,\n READY: 2,\n DELETED: 3,\n PENDING: 4,\n MODERATE: 5,\n BLOCKED: 6,\n NO_CONTENT: 7\n };\n\n static EntryModerationStatus: {[status: string]: number} = {\n PENDING_MODERATION: 1,\n APPROVED: 2,\n REJECTED: 3,\n FLAGGED_FOR_REVIEW: 4,\n MODERATE: 5,\n AUTO_APPROVED: 6\n };\n\n /**\n * @member - The entry id\n * @type {string}\n */\n id: string;\n /**\n * @member - Entry name (Min 1 chars)\n * @type {string}\n */\n name: string;\n /**\n * @member - Entry description\n * @type {string}\n */\n description: string;\n /**\n * @member - The URL used for playback. This is not the download URL.\n * @type {string}\n */\n dataUrl: string;\n /**\n * @member - Comma separated flavor params ids that exists for this media entry\n * @type {string}\n */\n flavorParamsIds: string;\n /**\n * @member - The entry duration\n * @type {number}\n */\n duration: number;\n /**\n * @member - The type of the entry, this is auto filled by the derived entry object\n * @type {string | number}\n */\n type: string | number;\n /**\n * @member - The type of the entry, this is auto filled by the derived entry object (Image, Audio etc.)\n * @type {number}\n */\n entryType: number;\n /**\n * @member - Entry poster image\n * @type {string}\n */\n poster: string;\n /**\n * @member - DVR status\n * @type {number}\n */\n dvrStatus: number;\n /**\n * @member - Entry tags\n * @type {string}\n */\n tags: string;\n\n /**\n * @constructor\n * @param {Object} entry The json response\n */\n constructor(entry: Object) {\n this.id = entry.id;\n this.name = entry.name;\n this.description = entry.description;\n this.dataUrl = entry.dataUrl;\n this.type = entry.type;\n this.entryType = entry.mediaType;\n this.flavorParamsIds = entry.flavorParamsIds;\n this.duration = entry.duration;\n this.poster = entry.thumbnailUrl;\n this.dvrStatus = entry.dvrStatus;\n this.tags = entry.tags;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-media-entry.js","const clone = data => {\n let node;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach((e, i) => {\n if ((typeof e === 'object' && e !== {}) || (Array.isArray(e) && e.length > 0)) {\n node[i] = clone(e);\n }\n });\n } else if (typeof data === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(key => {\n if ((typeof node[key] === 'object' && node[key] !== {}) || (Array.isArray(node[key]) && node[key].length > 0)) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexport {clone};\n\n\n\n// WEBPACK FOOTER //\n// ./util/clone.js","/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine(Logger);\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/js-logger/src/logger.js\n// module id = 23\n// module chunks = 0 1","//@flow\nconst FIELDS = 'id,name,description,thumbnailUrl,dataUrl,duration,msDuration,flavorParamsIds,mediaType,type,tags,dvrStatus';\n\nexport default class BaseEntryResponseProfile {\n static Type: {[type: string]: number} = {\n INCLUDE_FIELDS: 1,\n EXCLUDE_FIELDS: 2\n };\n /**\n * @member - the response profile type\n * @type {number}\n */\n type: number;\n /**\n * @member - Comma separated fields list to be included or excluded\n * @type {string}\n */\n fields: string;\n\n /**\n * @constructor\n * @param {Object} responseProfile -\n */\n constructor(responseProfile: Object = {}) {\n this.type = responseProfile.type || BaseEntryResponseProfile.Type.INCLUDE_FIELDS;\n this.fields = responseProfile.fields || FIELDS;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/request-params/base-entry-response-profile.js","//@flow\nimport ServiceResult from '../../common/base-service-result';\nimport KalturaMediaEntry from './kaltura-media-entry';\n\nexport default class KalturaBaseEntryListResponse extends ServiceResult {\n /**\n * @member - The total count\n * @type {number}\n */\n totalCount: number;\n /**\n * @member - The entries\n * @type {Array}\n */\n entries: Array;\n\n /**\n * @constructor\n * @param {Object} responseObj The json response\n */\n constructor(responseObj: Object) {\n super(responseObj);\n if (!this.hasError) {\n this.totalCount = responseObj.totalCount;\n if (this.totalCount > 0) {\n this.entries = [];\n responseObj.objects.map(entry => this.entries.push(new KalturaMediaEntry(entry)));\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-base-entry-list-response.js","//@flow\nexport default class KalturaFlavorAsset {\n static Status: {[status: string]: number} = {\n ERROR: -1,\n QUEUED: 0,\n CONVERTING: 1,\n READY: 2,\n DELETED: 3,\n NOT_APPLICABLE: 4,\n TEMP: 5,\n WAIT_FOR_CONVERT: 6,\n IMPORTING: 7,\n VALIDATING: 8,\n EXPORTING: 9\n };\n\n /**\n * @member - The ID of the Flavor Asset\n * @type {string}\n */\n id: string;\n /**\n * @member -The Flavor Params used to create this Flavor Asset\n * @type {string}\n */\n flavorParamsId: string;\n /**\n * @member -The file extension\n * @type {string}\n */\n fileExt: string;\n /**\n * @member - The overall bitrate (in KBits) of the Flavor Asset\n * @type {string}\n */\n bitrate: number;\n /**\n * @member - The width of the Flavor Asset\n * @type {number}\n */\n width: number;\n /**\n * @member - The height of the Flavor Asset\n * @type {number}\n */\n height: number;\n /**\n * @member - The frame rate (in FPS) of the Flavor Asset\n * @type {number}\n */\n frameRate: number;\n /**\n * @member - True if this Flavor Asset is the original source\n * @type {number}\n */\n isOriginal: boolean;\n /**\n * @member - True if this Flavor Asset is playable in KDP\n * @type {boolean}\n */\n isWeb: boolean;\n /**\n * @member - The container format\n * @type {boolean}\n */\n containerFormat: string;\n /**\n *@member - The video codec\n * @type {boolean}\n */\n videoCodecId: string;\n /**\n * @member - The status of the Flavor Asset\n * @type {number}\n */\n status: number;\n /**\n * @member - The language of the flavor asset\n * @type {Status}\n */\n language: string;\n /**\n * @member - The label of the flavor asset\n * @type {string}\n */\n label: string;\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: any) {\n this.id = data.id;\n this.flavorParamsId = data.flavorParamsId;\n this.fileExt = data.fileExt;\n this.bitrate = data.bitrate;\n this.width = data.width;\n this.height = data.height;\n this.id = data.id;\n this.frameRate = data.frameRate;\n this.isOriginal = data.isOriginal;\n this.isWeb = data.isWeb;\n this.containerFormat = data.containerFormat;\n this.videoCodecId = data.videoCodecId;\n this.status = data.status;\n this.language = data.language;\n this.label = data.label;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-flavor-asset.js","//@flow\nimport ServiceResult from '../../common/base-service-result';\nimport KalturaMetadata from './kaltura-metadata';\n\nexport default class KalturaMetadataListResponse extends ServiceResult {\n totalCount: number;\n metas: Array;\n\n /**\n * @constructor\n * @param {Object} responseObj The response\n */\n constructor(responseObj: Object) {\n super(responseObj);\n if (!this.hasError) {\n this.totalCount = responseObj.totalCount;\n if (this.totalCount > 0) {\n this.metas = [];\n responseObj.objects.map(meta => this.metas.push(new KalturaMetadata(meta)));\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-metadata-list-response.js","//@flow\nimport KalturaDrmPlaybackPluginData from '../../common/response-types/kaltura-drm-playback-plugin-data';\n\nexport type OVPKalturaPlaybackSource = KalturaPlaybackSource;\n\nexport default class KalturaPlaybackSource {\n /**\n * @member - source format according to delivery profile streamer type (applehttp, mpegdash etc.)\n * @type {string}\n */\n format: string;\n /**\n * @member - delivery profile Id\n * @type {string}\n */\n deliveryProfileId: string;\n /**\n * @member - The source URL\n * @type {string}\n */\n url: string;\n /**\n * @member - comma separated string according to deliveryProfile media protocols ('http,https' etc.)\n * @type {string}\n */\n protocols: string;\n /**\n * @member - comma separated string of flavor ids\n * @type {string}\n */\n flavorIds: string;\n /**\n * @member - drm data object containing relevant license url ,scheme name and certificate\n * @type {Array}\n */\n drm: Array = [];\n\n /**\n * @constructor\n * @param {Object} source The response\n */\n constructor(source: Object) {\n this.format = source.format;\n this.deliveryProfileId = source.deliveryProfileId;\n this.url = source.url;\n this.protocols = source.protocols;\n this.flavorIds = source.flavorIds;\n if (source.drm) {\n source.drm.map(drm => this.drm.push(new KalturaDrmPlaybackPluginData(drm)));\n }\n }\n\n /**\n * Checks if source has DRM data\n * @function hasDrmData\n * @returns {boolean} Is source has DRM\n */\n hasDrmData(): boolean {\n return this.drm && this.drm.length > 0;\n }\n\n /**\n * Checks if source has flavor IDs\n * @function hasFlavorIds\n * @returns {boolean} Is source ha flavor IDs\n */\n hasFlavorIds(): boolean {\n return !!this.flavorIds && this.flavorIds.length > 0;\n }\n\n /**\n * Returns source desired protocol if supported\n * @param {string} protocol - the desired protocol for the source (base play url protocol)\n * @returns {string} - protocol if protocol is in the protocols list - if not empty string returned\n */\n getProtocol(protocol: string): string {\n let returnValue: string = '';\n if (this.protocols && this.protocols.length > 0) {\n let protocolsArr: Array = this.protocols.split(',');\n protocolsArr.forEach(p => {\n if (p === protocol) {\n returnValue = p;\n }\n });\n } else if (protocol === 'http') {\n return protocol;\n }\n return returnValue;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-playback-source.js","//@flow\nimport OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\nimport BaseEntryResponseProfile from '../request-params/base-entry-response-profile';\n\nconst SERVICE_NAME: string = 'baseEntry';\n\nexport default class OVPBaseEntryService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for baseentry.getPlaybackContext\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static getPlaybackContext(serviceUrl: string, ks: string, entryId: string): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'getPlaybackContext';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'baseEntry-getPlaybackContext';\n const contextDataParams = {objectType: 'KalturaContextDataParams', flavorTags: 'all'};\n request.params = {entryId: entryId, ks: ks, contextDataParams: contextDataParams};\n return request;\n }\n\n /**\n * Creates an instance of RequestBuilder for baseentry.list\n * @function list\n * @param {string} serviceUrl The base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static list(serviceUrl: string, ks: string, entryId: string): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'list';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'list';\n request.params = OVPBaseEntryService.getEntryListReqParams(entryId, ks);\n return request;\n }\n\n /**\n * Gets baseentry.list service params\n * @function getEntryListReqParams\n * @param {string} entryId The entry ID\n * @param {string} ks The ks\n * @returns {{ks: string, filter: {redirectFromEntryId: string}, responseProfile: {fields: string, type: number}}} The service params object\n * @static\n */\n static getEntryListReqParams(entryId: string, ks: string): any {\n const filterParams = {redirectFromEntryId: entryId};\n return {ks: ks, filter: filterParams, responseProfile: new BaseEntryResponseProfile()};\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/base-entry-service.js","//@flow\nimport getLogger from '../../util/logger';\nimport OVPConfiguration from './config';\nimport OVPProviderParser from './provider-parser';\nimport OVPMediaEntryLoader from './loaders/media-entry-loader';\nimport OVPSessionLoader from './loaders/session-loader';\nimport OVPDataLoaderManager from './loaders/data-loader-manager';\nimport OVPPlaylistLoader from './loaders/playlist-loader';\nimport BaseProvider from '../common/base-provider';\nimport MediaEntry from '../../entities/media-entry';\nimport OVPEntryListLoader from './loaders/entry-list-loader';\n\nexport default class OVPProvider extends BaseProvider {\n /**\n * @constructor\n * @param {ProviderOptionsObject} options - provider options\n * @param {string} playerVersion - player version\n */\n constructor(options: ProviderOptionsObject, playerVersion: string) {\n super(options, playerVersion);\n this._logger = getLogger('OVPProvider');\n OVPConfiguration.set(options.env);\n }\n\n /**\n * Gets the backend media config.\n * @param {ProviderMediaInfoObject} mediaInfo - ovp media info\n * @returns {Promise} - The provider media config\n */\n getMediaConfig(mediaInfo: ProviderMediaInfoObject): Promise {\n if (mediaInfo.ks) {\n this.ks = mediaInfo.ks;\n }\n this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks);\n return new Promise((resolve, reject) => {\n const entryId = mediaInfo.entryId;\n if (entryId) {\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OVPSessionLoader, {partnerId: this.partnerId});\n }\n this._dataLoader.add(OVPMediaEntryLoader, {entryId, ks});\n this._dataLoader.fetchData().then(\n response => {\n resolve(this._parseDataFromResponse(response));\n },\n err => {\n reject(err);\n }\n );\n } else {\n reject({success: false, data: 'Missing mandatory parameter'});\n }\n });\n }\n\n _parseDataFromResponse(data: Map): ProviderMediaConfigObject {\n this._logger.debug('Data parsing started');\n const mediaConfig: ProviderMediaConfigObject = {\n session: {\n isAnonymous: this._isAnonymous,\n partnerId: this.partnerId\n },\n sources: this._getDefaultSourcesObject(),\n plugins: {}\n };\n\n if (this.uiConfId) {\n mediaConfig.session.uiConfId = this.uiConfId;\n }\n if (data) {\n if (data.has(OVPSessionLoader.id)) {\n const sessionLoader = data.get(OVPSessionLoader.id);\n if (sessionLoader && sessionLoader.response) {\n this.ks = sessionLoader.response;\n mediaConfig.session.ks = this.ks;\n }\n } else {\n mediaConfig.session.ks = this.ks;\n }\n if (data.has(OVPMediaEntryLoader.id)) {\n const mediaLoader = data.get(OVPMediaEntryLoader.id);\n if (mediaLoader && mediaLoader.response) {\n this._validateData(mediaLoader.response);\n const mediaEntry = OVPProviderParser.getMediaEntry(this.isAnonymous ? '' : this.ks, this.partnerId, this.uiConfId, mediaLoader.response);\n Object.assign(mediaConfig.sources, this._getSourcesObject(mediaEntry));\n }\n }\n }\n this._logger.debug('Data parsing finished', mediaConfig);\n return mediaConfig;\n }\n\n /**\n * Gets the backend playlist config.\n * @param {ProviderPlaylistInfoObject} playlistInfo - ovp playlist info\n * @returns {Promise} - The provider playlist config\n */\n getPlaylistConfig(playlistInfo: ProviderPlaylistInfoObject): Promise {\n if (playlistInfo.ks) {\n this.ks = playlistInfo.ks;\n }\n this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks);\n return new Promise((resolve, reject) => {\n const playlistId = playlistInfo.playlistId;\n if (playlistId) {\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OVPSessionLoader, {partnerId: this.partnerId});\n }\n this._dataLoader.add(OVPPlaylistLoader, {playlistId, ks});\n // this._dataLoader.add(OVPMediaEntryLoader, {entryId: '{3:result:0:id}', ks});\n this._dataLoader.fetchData().then(\n response => {\n resolve(this._parsePlaylistDataFromResponse(response));\n },\n err => {\n reject(err);\n }\n );\n } else {\n reject({success: false, data: 'Missing mandatory parameter'});\n }\n });\n }\n\n _parsePlaylistDataFromResponse(data: Map): ProviderPlaylistObject {\n this._logger.debug('Data parsing started');\n const playlistConfig: ProviderPlaylistObject = this._getPlaylistObject();\n if (data && data.has(OVPPlaylistLoader.id)) {\n const playlistLoader = data.get(OVPPlaylistLoader.id);\n if (playlistLoader && playlistLoader.response) {\n this._validateData(playlistLoader.response);\n const playlist = OVPProviderParser.getPlaylist(playlistLoader.response);\n playlistConfig.id = playlist.id;\n playlistConfig.poster = playlist.poster;\n playlistConfig.metadata.name = playlist.name;\n playlistConfig.metadata.description = playlist.description;\n playlist.items.forEach(i => playlistConfig.items.push({sources: this._getSourcesObject(i)}));\n }\n }\n this._logger.debug('Data parsing finished', playlistConfig);\n return playlistConfig;\n }\n\n /**\n * Gets playlist config from entry list.\n * @param {ProviderEntryListObject} entryListInfo - ovp entry list info\n * @returns {Promise} - The provider playlist config\n */\n getEntryListConfig(entryListInfo: ProviderEntryListObject): Promise {\n if (entryListInfo.ks) {\n this.ks = entryListInfo.ks;\n }\n this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks);\n return new Promise((resolve, reject) => {\n const entries = entryListInfo.entries;\n if (entries && entries.length) {\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OVPSessionLoader, {partnerId: this.partnerId});\n }\n this._dataLoader.add(OVPEntryListLoader, {entries, ks});\n this._dataLoader.fetchData().then(\n response => {\n resolve(this._parseEntryListDataFromResponse(response));\n },\n err => {\n reject(err);\n }\n );\n } else {\n reject({success: false, data: 'Missing mandatory parameter'});\n }\n });\n }\n\n _parseEntryListDataFromResponse(data: Map): ProviderPlaylistObject {\n this._logger.debug('Data parsing started');\n const playlistConfig: ProviderPlaylistObject = this._getPlaylistObject();\n if (data && data.has(OVPPlaylistLoader.id)) {\n const playlistLoader = data.get(OVPPlaylistLoader.id);\n if (playlistLoader && playlistLoader.response) {\n this._validateData(playlistLoader.response);\n const entryList = OVPProviderParser.getEntryList(playlistLoader.response);\n entryList.items.forEach(i => playlistConfig.items.push({sources: this._getSourcesObject(i)}));\n }\n }\n this._logger.debug('Data parsing finished', playlistConfig);\n return playlistConfig;\n }\n\n _getPlaylistObject(): ProviderPlaylistObject {\n return {\n id: '',\n metadata: {\n name: '',\n description: ''\n },\n poster: '',\n items: []\n };\n }\n\n _validateData(response: any): void {\n const blockedAction = OVPProviderParser.hasBlockActions(response);\n if (blockedAction) {\n const errorMessage = OVPProviderParser.hasErrorMessage(response);\n if (errorMessage) {\n this._logger.error(`Entry is blocked, error message: `, errorMessage);\n throw errorMessage;\n } else {\n this._logger.error(`Entry is blocked, action: `, blockedAction);\n throw blockedAction;\n }\n }\n }\n\n _getDefaultSourcesObject(): ProviderMediaConfigSourcesObject {\n return {\n hls: [],\n dash: [],\n progressive: [],\n id: '',\n duration: 0,\n type: MediaEntry.Type.UNKNOWN,\n poster: '',\n dvr: false,\n vr: null,\n metadata: {\n name: '',\n description: '',\n tags: ''\n }\n };\n }\n\n _getSourcesObject(mediaEntry: MediaEntry) {\n const sourcesObject: ProviderMediaConfigSourcesObject = this._getDefaultSourcesObject();\n const mediaSources = mediaEntry.sources.toJSON();\n sourcesObject.hls = mediaSources.hls;\n sourcesObject.dash = mediaSources.dash;\n sourcesObject.progressive = mediaSources.progressive;\n sourcesObject.id = mediaEntry.id;\n sourcesObject.duration = mediaEntry.duration;\n sourcesObject.type = mediaEntry.type;\n sourcesObject.dvr = !!mediaEntry.dvrStatus;\n sourcesObject.poster = mediaEntry.poster;\n if (mediaEntry.metadata && typeof mediaEntry.metadata.tags === 'string' && mediaEntry.metadata.tags.indexOf('360') > -1) {\n sourcesObject.vr = {};\n }\n Object.assign(sourcesObject.metadata, mediaEntry.metadata);\n return sourcesObject;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/provider.js","//@flow\n\nimport MediaEntry from '../entities/media-entry';\n\nexport default class EntryList {\n /**\n * @member - entry list items\n * @type {Array}\n */\n items: Array;\n\n constructor() {\n this.items = [];\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/entry-list.js","//@flow\n\nimport MediaEntry from '../entities/media-entry';\n\nexport default class Playlist {\n /**\n * @member - playlist id\n * @type {string}\n */\n id: string;\n /**\n * @member - playlist name\n * @type {string}\n */\n name: string;\n /**\n * @member - playlist description\n * @type {string}\n */\n description: string;\n\n /**\n * @member - playlist poster\n * @type {string}\n */\n poster: string;\n\n /**\n * @member - playlist items\n * @type {Array}\n */\n items: Array;\n\n constructor() {\n this.items = [];\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./entities/playlist.js","// @flow\nimport OVPProvider from './provider';\n\ndeclare var __VERSION__: string;\ndeclare var __NAME__: string;\n\nconst NAME = __NAME__ + '-ovp';\nconst VERSION = __VERSION__;\n\nexport {OVPProvider as Provider, NAME, VERSION};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/index.js","// @flow\nimport DataLoaderManager from '../../common/data-loader-manager';\nimport OVPService from '../services/ovp-service';\n\nexport default class OVPDataLoaderManager extends DataLoaderManager {\n /**\n * @constructor\n * @param {string} playerVersion - player version\n * @param {string} partnerId - partner id\n * @param {string} ks - ks\n */\n constructor(playerVersion: string, partnerId: number, ks: string = '') {\n super();\n this._multiRequest = OVPService.getMultiRequest(playerVersion, ks, partnerId);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/data-loader-manager.js","//@flow\nimport RequestBuilder from '../../../util/request-builder';\nimport OVPConfiguration from '../config';\nimport OVPBaseEntryService from '../services/base-entry-service';\nimport KalturaBaseEntryListResponse from '../response-types/kaltura-base-entry-list-response';\n\nexport default class OVPEntryListLoader implements ILoader {\n _entries: Array;\n _requests: Array;\n _response: any = {playlistItems: {entries: []}};\n\n static get id(): string {\n return 'playlist';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._entries = params.entries;\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n let mediaEntryResponse: KalturaBaseEntryListResponse;\n response.forEach(item => {\n mediaEntryResponse = new KalturaBaseEntryListResponse(item.data);\n this._response.playlistItems.entries.push(mediaEntryResponse.entries[0]);\n });\n }\n\n get response(): any {\n return this._response;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n const config = OVPConfiguration.get();\n const requests: Array = [];\n params.entries.forEach(entryId => {\n requests.push(OVPBaseEntryService.list(config.serviceUrl, params.ks, entryId));\n });\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!(this._entries && this._entries.length);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/entry-list-loader.js","//@flow\nimport RequestBuilder from '../../../util/request-builder';\nimport OVPBaseEntryService from '../services/base-entry-service';\nimport OVPMetadataService from '../services/meta-data-service';\nimport OVPConfiguration from '../config';\nimport KalturaPlaybackContext from '../response-types/kaltura-playback-context';\nimport KalturaMetadataListResponse from '../response-types/kaltura-metadata-list-response';\nimport KalturaBaseEntryListResponse from '../response-types/kaltura-base-entry-list-response';\n\nexport default class OVPMediaEntryLoader implements ILoader {\n _entryId: string;\n _requests: Array;\n _response: any = {};\n\n static get id(): string {\n return 'media';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._entryId = params.entryId;\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n let mediaEntryResponse: KalturaBaseEntryListResponse = new KalturaBaseEntryListResponse(response[0].data);\n this._response.entry = mediaEntryResponse.entries[0];\n this._response.playBackContextResult = new KalturaPlaybackContext(response[1].data);\n this._response.metadataListResult = new KalturaMetadataListResponse(response[2].data);\n }\n\n get response(): any {\n return this._response;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n const config = OVPConfiguration.get();\n const requests: Array = [];\n requests.push(OVPBaseEntryService.list(config.serviceUrl, params.ks, params.entryId));\n requests.push(OVPBaseEntryService.getPlaybackContext(config.serviceUrl, params.ks, params.entryId));\n requests.push(OVPMetadataService.list(config.serviceUrl, params.ks, params.entryId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._entryId;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/media-entry-loader.js","//@flow\nimport RequestBuilder from '../../../util/request-builder';\nimport OVPPlaylistService from '../services/playlist-service';\nimport OVPConfiguration from '../config';\nimport KalturaPlaylist from '../response-types/kaltura-playlist';\nimport KalturaMediaEntries from '../response-types/kaltura-media-entries';\n\nexport default class OVPPlaylistLoader implements ILoader {\n _playlistId: string;\n _requests: Array;\n _response: any = {};\n\n static get id(): string {\n return 'playlist';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._playlistId = params.playlistId;\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n this._response.playlistData = new KalturaPlaylist(response[0].data);\n this._response.playlistItems = new KalturaMediaEntries(response[1].data);\n }\n\n get response(): any {\n return this._response;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n const config = OVPConfiguration.get();\n const requests: Array = [];\n requests.push(OVPPlaylistService.get(config.serviceUrl, params.ks, params.playlistId));\n requests.push(OVPPlaylistService.execute(config.serviceUrl, params.ks, params.playlistId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._playlistId;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/playlist-loader.js","//@flow\nimport OVPSessionService from '../services/session-service';\nimport OVPConfiguration from '../config';\nimport RequestBuilder from '../../../util/request-builder';\n\nexport default class OVPSessionLoader implements ILoader {\n _partnerId: number;\n _requests: Array;\n _response: any = {};\n\n static get id(): string {\n return 'session';\n }\n\n set requests(requests: Array) {\n this._requests = requests;\n }\n\n get requests(): Array {\n return this._requests;\n }\n\n set response(response: any) {\n this._response.ks = response[0].data.ks;\n }\n\n get response(): any {\n return this._response.ks;\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: Object) {\n this.requests = this.buildRequests(params);\n this._partnerId = params.partnerId;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n buildRequests(params: Object): Array {\n const config = OVPConfiguration.get();\n const requests: Array = [];\n requests.push(OVPSessionService.anonymousSession(config.serviceUrl, params.partnerId));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._partnerId;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/loaders/session-loader.js","//@flow\nimport OVPConfiguration from './config';\n\nexport default class PlaySourceUrlBuilder {\n /**\n * Returns source url by given url params\n * @function build\n * @param {Object} urlParams The params\n * @returns {string} The URL\n * @static\n */\n static build(urlParams: Object): string {\n const config = OVPConfiguration.get();\n const cdnUrl: string = config.cdnUrl;\n const partnerId: string = urlParams.partnerId;\n const entryId: string = urlParams.entryId;\n const ks: string = urlParams.ks;\n const uiConfId: string = urlParams.uiConfId;\n const format: string = urlParams.format;\n const protocol: string = urlParams.protocol;\n const extension: string = urlParams.extension;\n const flavorIds: string = urlParams.flavorIds;\n\n if (cdnUrl === '' && partnerId === '' && entryId === '' && extension === '' && format === '') {\n return '';\n }\n\n let playUrl = cdnUrl;\n if (!cdnUrl.endsWith('/')) {\n playUrl += '/';\n }\n playUrl += 'p/' + partnerId + '/sp/' + partnerId + '00' + '/playManifest/entryId/' + entryId + '/protocol/' + protocol + '/format/' + format;\n\n if (flavorIds !== '') {\n playUrl += '/flavorIds/' + flavorIds;\n } else if (uiConfId !== '') {\n playUrl += '/uiConfId/' + uiConfId;\n }\n\n if (ks !== '') {\n playUrl += '/ks/' + ks;\n }\n\n playUrl += '/a.' + extension;\n\n if (uiConfId && flavorIds !== '') {\n playUrl += '?uiConfId=' + uiConfId;\n }\n\n return playUrl;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/play-source-url-builder.js","//@flow\nimport KalturaFlavorAsset from './response-types/kaltura-flavor-asset';\nimport KalturaMetadataListResponse from './response-types/kaltura-metadata-list-response';\nimport KalturaMediaEntry from './response-types/kaltura-media-entry';\nimport KalturaPlaybackSource from './response-types/kaltura-playback-source';\nimport KalturaDrmPlaybackPluginData from '../common/response-types/kaltura-drm-playback-plugin-data';\nimport PlaySourceUrlBuilder from './play-source-url-builder';\nimport XmlParser from '../../util/xml-parser';\nimport getLogger from '../../util/logger';\nimport OVPConfiguration from './config';\nimport MediaEntry from '../../entities/media-entry';\nimport Drm from '../../entities/drm';\nimport MediaSource from '../../entities/media-source';\nimport MediaSources from '../../entities/media-sources';\nimport {SupportedStreamFormat} from '../../entities/media-format';\nimport BaseProviderParser from '../common/base-provider-parser';\nimport Playlist from '../../entities/playlist';\nimport EntryList from '../../entities/entry-list';\n\nexport default class OVPProviderParser extends BaseProviderParser {\n static _logger = getLogger('OVPProviderParser');\n\n /**\n * Returns parsed media entry by given OVP response objects\n * @function getMediaEntry\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {any} mediaEntryResponse - The media entry response\n * @returns {MediaEntry} - The media entry\n * @static\n * @public\n */\n static getMediaEntry(ks: string, partnerId: number, uiConfId: ?number, mediaEntryResponse: any): MediaEntry {\n const mediaEntry = new MediaEntry();\n const entry = mediaEntryResponse.entry;\n const playbackContext = mediaEntryResponse.playBackContextResult;\n const metadataList = mediaEntryResponse.metadataListResult;\n const kalturaSources = playbackContext.sources;\n\n mediaEntry.sources = OVPProviderParser._getParsedSources(kalturaSources, ks, partnerId, uiConfId, entry, playbackContext);\n OVPProviderParser._fillBaseData(mediaEntry, entry, metadataList);\n return mediaEntry;\n }\n\n /**\n * Returns parsed playlist by given OVP response objects\n * @function getPlaylist\n * @param {any} playlistResponse - The playlist response\n * @returns {Playlist} - The playlist\n * @static\n * @public\n */\n static getPlaylist(playlistResponse: any): Playlist {\n const playlist = new Playlist();\n const playlistData = playlistResponse.playlistData;\n const playlistItems = playlistResponse.playlistItems.entries;\n playlist.id = playlistData.id;\n playlist.name = playlistData.name;\n playlist.description = playlistData.description;\n playlist.poster = playlistData.poster;\n playlistItems.forEach((entry: KalturaMediaEntry) => {\n const mediaEntry = new MediaEntry();\n OVPProviderParser._fillBaseData(mediaEntry, entry);\n playlist.items.push(mediaEntry);\n });\n return playlist;\n }\n\n /**\n * Returns parsed entry list by given OVP response objects\n * @function getEntryList\n * @param {any} playlistResponse - response\n * @returns {Playlist} - The entry list\n * @static\n * @public\n */\n static getEntryList(playlistResponse: any): EntryList {\n const entryList = new EntryList();\n const playlistItems = playlistResponse.playlistItems.entries;\n playlistItems.forEach(entry => {\n const mediaEntry = new MediaEntry();\n OVPProviderParser._fillBaseData(mediaEntry, entry);\n entryList.items.push(mediaEntry);\n });\n return entryList;\n }\n\n static _fillBaseData(mediaEntry: MediaEntry, entry: KalturaMediaEntry, metadataList: ?KalturaMetadataListResponse) {\n mediaEntry.poster = entry.poster;\n mediaEntry.id = entry.id;\n mediaEntry.duration = entry.duration;\n mediaEntry.metadata = this._parseMetadata(metadataList);\n mediaEntry.metadata.description = entry.description || '';\n mediaEntry.metadata.name = entry.name || '';\n mediaEntry.metadata.tags = entry.tags || '';\n\n mediaEntry.type = OVPProviderParser._getEntryType(entry.entryType, entry.type);\n if (mediaEntry.type === MediaEntry.Type.LIVE) {\n mediaEntry.dvrStatus = entry.dvrStatus;\n }\n\n return mediaEntry;\n }\n\n static _getEntryType(entryTypeEnum: number, typeEnum: number | string): string {\n let type = MediaEntry.Type.UNKNOWN;\n switch (entryTypeEnum) {\n case KalturaMediaEntry.MediaType.IMAGE.value:\n type = MediaEntry.Type.IMAGE;\n break;\n case KalturaMediaEntry.MediaType.AUDIO.value:\n type = MediaEntry.Type.AUDIO;\n break;\n default:\n switch (typeEnum) {\n case KalturaMediaEntry.EntryType.MEDIA_CLIP.value:\n type = MediaEntry.Type.VOD;\n break;\n case KalturaMediaEntry.EntryType.LIVE_STREAM.value:\n case KalturaMediaEntry.EntryType.LIVE_CHANNEL.value:\n type = MediaEntry.Type.LIVE;\n break;\n default:\n type = MediaEntry.Type.UNKNOWN;\n }\n }\n return type;\n }\n\n /**\n * Returns the parsed sources\n * @function _getParsedSources\n * @param {Array} kalturaSources - The kaltura sources\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {Object} entry - The entry\n * @param {Object} playbackContext - The playback context\n * @return {MediaSources} - A media sources\n * @static\n * @private\n */\n static _getParsedSources(\n kalturaSources: Array,\n ks: string,\n partnerId: number,\n uiConfId: ?number,\n entry: Object,\n playbackContext: Object\n ): MediaSources {\n const sources = new MediaSources();\n const addAdaptiveSource = (source: KalturaPlaybackSource) => {\n const parsedSource = OVPProviderParser._parseAdaptiveSource(source, playbackContext.flavorAssets, ks, partnerId, uiConfId, entry.id);\n const sourceFormat = SupportedStreamFormat.get(source.format);\n sources.map(parsedSource, sourceFormat);\n };\n const parseAdaptiveSources = () => {\n kalturaSources.filter(source => !OVPProviderParser._isProgressiveSource(source)).forEach(addAdaptiveSource);\n };\n const parseProgressiveSources = () => {\n const progressiveSource = kalturaSources.find(OVPProviderParser._isProgressiveSource);\n sources.progressive = OVPProviderParser._parseProgressiveSources(\n progressiveSource,\n playbackContext.flavorAssets,\n ks,\n partnerId,\n uiConfId,\n entry.id\n );\n };\n if (kalturaSources && kalturaSources.length > 0) {\n parseAdaptiveSources();\n parseProgressiveSources();\n }\n return sources;\n }\n\n /**\n * Returns a parsed adaptive source\n * @function _parseAdaptiveSource\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @param {Array} flavorAssets - The flavor Assets of the kaltura source\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {string} entryId - The entry id\n * @returns {MediaSource} - The parsed adaptive kalturaSource\n * @static\n * @private\n */\n static _parseAdaptiveSource(\n kalturaSource: ?KalturaPlaybackSource,\n flavorAssets: Array,\n ks: string,\n partnerId: number,\n uiConfId: ?number,\n entryId: string\n ): MediaSource {\n const mediaSource: MediaSource = new MediaSource();\n if (kalturaSource) {\n let playUrl: string = '';\n const mediaFormat = SupportedStreamFormat.get(kalturaSource.format);\n let extension: string = '';\n if (mediaFormat) {\n extension = mediaFormat.pathExt;\n mediaSource.mimetype = mediaFormat.mimeType;\n }\n // in case playbackSource doesn't have flavors we don't need to build the url and we'll use the provided one.\n if (kalturaSource.hasFlavorIds()) {\n if (!extension && flavorAssets && flavorAssets.length > 0) {\n extension = flavorAssets[0].fileExt;\n }\n playUrl = PlaySourceUrlBuilder.build({\n entryId: entryId,\n flavorIds: kalturaSource.flavorIds,\n format: kalturaSource.format,\n ks: ks,\n partnerId: partnerId,\n uiConfId: uiConfId,\n extension: extension,\n protocol: kalturaSource.getProtocol(this._getBaseProtocol())\n });\n } else {\n playUrl = kalturaSource.url;\n }\n if (playUrl === '') {\n OVPProviderParser._logger.error(\n `failed to create play url from source, discarding source: (${entryId}_${kalturaSource.deliveryProfileId}), ${kalturaSource.format}.`\n );\n return mediaSource;\n }\n mediaSource.url = playUrl;\n mediaSource.id = entryId + '_' + kalturaSource.deliveryProfileId + ',' + kalturaSource.format;\n if (kalturaSource.hasDrmData()) {\n const drmParams: Array = [];\n kalturaSource.drm.forEach(drm => {\n drmParams.push(new Drm(drm.licenseURL, KalturaDrmPlaybackPluginData.Scheme[drm.scheme], drm.certificate));\n });\n mediaSource.drmData = drmParams;\n }\n }\n return mediaSource;\n }\n\n /**\n * Returns parsed progressive sources\n * @function _parseProgressiveSources\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @param {Array} flavorAssets - The flavor Assets of the kaltura source\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {string} entryId - The entry id\n * @returns {Array} - The parsed progressive kalturaSources\n * @static\n * @private\n */\n static _parseProgressiveSources(\n kalturaSource: ?KalturaPlaybackSource,\n flavorAssets: Array,\n ks: string,\n partnerId: number,\n uiConfId: ?number,\n entryId: string\n ): Array {\n const videoSources: Array = [];\n const audioSources: Array = [];\n if (kalturaSource) {\n const protocol = kalturaSource.getProtocol(this._getBaseProtocol());\n const format = kalturaSource.format;\n const sourceId = kalturaSource.deliveryProfileId + ',' + kalturaSource.format;\n flavorAssets.map(flavor => {\n const mediaSource: MediaSource = new MediaSource();\n mediaSource.id = flavor.id + sourceId;\n mediaSource.mimetype = flavor.fileExt === 'mp3' ? 'audio/mp3' : 'video/mp4';\n mediaSource.height = flavor.height;\n mediaSource.width = flavor.width;\n mediaSource.bandwidth = flavor.bitrate * 1024;\n mediaSource.label = flavor.label || flavor.language;\n mediaSource.url = PlaySourceUrlBuilder.build({\n entryId: entryId,\n flavorIds: flavor.id,\n format: format,\n ks: ks,\n partnerId: partnerId,\n uiConfId: uiConfId,\n extension: flavor.fileExt,\n protocol: protocol\n });\n if (flavor.height && flavor.width) {\n videoSources.push(mediaSource);\n } else {\n audioSources.push(mediaSource);\n }\n });\n }\n //If we have only audio flavors return them, otherwise return video flavors\n return audioSources.length && !videoSources.length ? audioSources : videoSources;\n }\n\n /**\n * Ovp metadata parser\n * @function _parseMetaData\n * @param {KalturaMetadataListResponse} metadataList The metadata list\n * @returns {Object} Parsed metadata\n * @static\n * @private\n */\n static _parseMetadata(metadataList: ?KalturaMetadataListResponse): Object {\n const metadata = {};\n if (metadataList && metadataList.metas && metadataList.metas.length > 0) {\n metadataList.metas.forEach(meta => {\n let metaXml: Object;\n const domParser: DOMParser = new DOMParser();\n meta.xml = meta.xml.replace(/\\r?\\n|\\r/g, '');\n meta.xml = meta.xml.replace(/>\\s*/g, '>');\n meta.xml = meta.xml.replace(/>\\s*/g, '>');\n metaXml = domParser.parseFromString(meta.xml, 'text/xml');\n const metasObj: Object = XmlParser.xmlToJson(metaXml);\n const metaKeys = Object.keys(metasObj.metadata);\n metaKeys.forEach(key => {\n metadata[key] = metasObj.metadata[key]['#text'];\n });\n });\n }\n return metadata;\n }\n\n /**\n * Returns the base protocol\n * @function _getBaseProtocol\n * @returns {string} - The base protocol\n * @static\n * @private\n */\n static _getBaseProtocol(): string {\n const config = OVPConfiguration.get();\n const protocolRegex = /^https?:/;\n const result = protocolRegex.exec(config.cdnUrl);\n const protocol = result ? result[0] : document.location.protocol;\n if (typeof protocol === 'string') {\n return protocol.slice(0, -1); // remove ':' from the end\n }\n return 'https';\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/provider-parser.js","//@flow\nimport ServiceResult from '../../common/base-service-result';\nimport KalturaMediaEntry from './kaltura-media-entry';\n\nexport default class KalturaMediaEntries extends ServiceResult {\n /**\n * @member - The entries\n * @type {Array}\n */\n entries: Array;\n\n /**\n * @constructor\n * @param {Object} responseObj The json response\n */\n constructor(responseObj: Object) {\n super(responseObj);\n if (!this.hasError) {\n this.entries = [];\n responseObj.map(entry => this.entries.push(new KalturaMediaEntry(entry)));\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-media-entries.js","//@flow\nexport default class KalturaMetadata {\n static ObjectType: {[type: string]: string | number} = {\n AD_CUE_POINT: 'adCuePointMetadata.AdCuePoint',\n ANNOTATION: 'annotationMetadata.Annotation',\n CODE_CUE_POINT: 'codeCuePointMetadata.CodeCuePoint',\n THUMB_CUE_POINT: 'thumbCuePointMetadata.thumbCuePoint',\n ENTRY: 1,\n CATEGORY: 2,\n USER: 3,\n PARTNER: 4,\n DYNAMIC_OBJECT: 5\n };\n\n static Status: {[status: string]: number} = {\n VALID: 1,\n INVALID: 2,\n DELETED: 3\n };\n\n id: number;\n metadataProfileId: number;\n metadataProfileVersion: number;\n metadataObjectType: string | number;\n objectId: string;\n version: number;\n created: Date;\n updated: Date;\n status: number;\n xml: string;\n\n /**\n * @constructor\n * @param {Object} data The response\n */\n constructor(data: Object) {\n this.id = data.id;\n this.metadataProfileId = data.metadataProfileId;\n this.metadataProfileVersion = data.metadataProfileVersion;\n this.metadataProfileId = data.metadataProfileId;\n this.metadataObjectType = data.metadataObjectType;\n this.objectId = data.objectId;\n this.version = data.version;\n this.created = new Date(0);\n this.created.setUTCSeconds(data.createdAt);\n this.updated = new Date(0);\n this.updated.setUTCSeconds(data.updatedAt);\n this.status = data.status;\n this.xml = data.xml;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-metadata.js","//@flow\nimport ServiceResult from '../../common/base-service-result';\nimport KalturaAccessControlMessage from '../../common/response-types/kaltura-access-control-message';\nimport KalturaPlaybackSource from './kaltura-playback-source';\nimport KalturaRuleAction from '../../common/response-types/kaltura-rule-action';\nimport KalturaFlavorAsset from './kaltura-flavor-asset';\n\nexport default class KalturaPlaybackContext extends ServiceResult {\n /**\n * @member - The playback sources\n * @type {Array}\n */\n sources: Array = [];\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n actions: Array = [];\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array}\n */\n messages: Array = [];\n /**\n * @member - The flavor assets\n * @type {Array}\n */\n flavorAssets: Array = [];\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n constructor(response: Object) {\n super(response);\n if (!this.hasError) {\n const messages = response.messages;\n if (messages) {\n messages.map(message => this.messages.push(new KalturaAccessControlMessage(message)));\n }\n const actions = response.actions;\n if (actions) {\n actions.map(action => this.actions.push(new KalturaRuleAction(action)));\n }\n const sources = response.sources;\n if (sources) {\n sources.map(source => this.sources.push(new KalturaPlaybackSource(source)));\n }\n const flavorAssets = response.flavorAssets;\n if (flavorAssets) {\n flavorAssets.map(flavor => this.flavorAssets.push(new KalturaFlavorAsset(flavor)));\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-playback-context.js","//@flow\n\nexport default class KalturaPlaylist {\n /**\n * @member - playlist id\n * @type {string}\n */\n id: string;\n /**\n * @member - playlist name\n * @type {string}\n */\n name: string;\n /**\n * @member - playlist description\n * @type {string}\n */\n description: string;\n /**\n * @member - playlist poster image\n * @type {string}\n */\n poster: string;\n\n /**\n * @constructor\n * @param {Object} playlist - The json response\n */\n constructor(playlist: Object) {\n this.id = playlist.id;\n this.name = playlist.name;\n this.description = playlist.description;\n this.poster = playlist.thumbnailUrl;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/response-types/kaltura-playlist.js","//@flow\nimport OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\n\nconst SERVICE_NAME: string = 'metadata_metadata';\n\nexport default class OVPMetadataService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for metadata_metadata.list\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static list(serviceUrl: string, ks: string, entryId: string): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'list';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'metadata_metadata-list';\n const filter = {objectType: 'KalturaMetadataFilter', objectIdEqual: entryId, metadataObjectTypeEqual: '1'};\n request.params = {filter: filter, ks: ks};\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/meta-data-service.js","//@flow\nimport OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\nimport BaseEntryResponseProfile from '../request-params/base-entry-response-profile';\n\nconst SERVICE_NAME: string = 'playlist';\n\nexport default class OVPPlaylistService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for playlist.getPlaybackContext\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {string} playlistId The playlist ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static execute(serviceUrl: string, ks: string, playlistId: string): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'execute';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = `${SERVICE_NAME}-execute`;\n request.params = {\n ks: ks,\n id: playlistId,\n responseProfile: new BaseEntryResponseProfile()\n };\n return request;\n }\n\n /**\n * Creates an instance of RequestBuilder for playlist.list\n * @function list\n * @param {string} serviceUrl The base URL\n * @param {string} ks The ks\n * @param {string} playlistId The playlist ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static get(serviceUrl: string, ks: string, playlistId: string): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'get';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = `${SERVICE_NAME}-get`;\n request.params = {\n ks: ks,\n id: playlistId,\n responseProfile: {\n fields: 'id,name,description,thumbnailUrl',\n type: 1\n }\n };\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/playlist-service.js","//@flow\nimport OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\n\nconst SERVICE_NAME: string = 'session';\n\nexport default class OVPSessionService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} partnerId The partner ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n static anonymousSession(serviceUrl: string, partnerId: number): RequestBuilder {\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'startWidgetSession';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'session-startWidget';\n request.params = {widgetId: '_' + partnerId};\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/session-service.js","//@flow\nexport default class XmlParser {\n /**\n * Parses xml string to json object\n * @param {string} xml The xml to parse\n * @returns {{}} The parsed xml as Json object\n * @static\n */\n static xmlToJson(xml: Object) {\n let obj = {};\n if (xml.nodeType === 1) {\n if (xml.attributes.length > 0) {\n obj['@attributes'] = {};\n for (let j = 0; j < xml.attributes.length; j++) {\n let attribute = xml.attributes.item(j);\n obj['@attributes'][attribute.nodeName] = attribute.nodeValue;\n }\n }\n } else if (xml.nodeType === 3) {\n obj = xml.nodeValue;\n }\n if (xml.hasChildNodes()) {\n for (let i = 0; i < xml.childNodes.length; i++) {\n let item = xml.childNodes.item(i);\n let nodeName = item.nodeName;\n if (typeof obj[nodeName] === 'undefined') {\n obj[nodeName] = this.xmlToJson(item);\n } else {\n if (typeof obj[nodeName].push === 'undefined') {\n let old = obj[nodeName];\n obj[nodeName] = [];\n obj[nodeName].push(old);\n }\n obj[nodeName].push(this.xmlToJson(item));\n }\n }\n }\n return obj;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./util/xml-parser.js"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/playkit-stats-service.js b/dist/playkit-stats-service.js index ec7c42af..6c2df048 100644 --- a/dist/playkit-stats-service.js +++ b/dist/playkit-stats-service.js @@ -3,5 +3,5 @@ * Jonny Reeves, http://jonnyreeves.co.uk/ * js-logger may be freely distributed under the MIT license. */ -!function(i){"use strict";var u={};u.VERSION="1.4.1";var a,c={},s=function(e,t){return function(){return t.apply(e,arguments)}},l=function(){var e,t,n=arguments,r=n[0];for(t=1;t=t.value},debug:function(){this.invoke(u.DEBUG,arguments)},info:function(){this.invoke(u.INFO,arguments)},warn:function(){this.invoke(u.WARN,arguments)},error:function(){this.invoke(u.ERROR,arguments)},time:function(e){"string"==typeof e&&e.length>0&&this.invoke(u.TIME,[e,"start"])},timeEnd:function(e){"string"==typeof e&&e.length>0&&this.invoke(u.TIME,[e,"end"])},invoke:function(e,t){a&&this.enabledFor(e)&&a(t,l({level:e},this.context))}};var v=new p({filterLevel:u.OFF});!function(){var e=u;e.enabledFor=s(v,v.enabledFor),e.debug=s(v,v.debug),e.time=s(v,v.time),e.timeEnd=s(v,v.timeEnd),e.info=s(v,v.info),e.warn=s(v,v.warn),e.error=s(v,v.error),e.log=e.info}(),u.setHandler=function(e){a=e},u.setLevel=function(e){v.setLevel(e);for(var t in c)c.hasOwnProperty(t)&&c[t].setLevel(e)},u.getLevel=function(){return v.getLevel()},u.get=function(e){return c[e]||(c[e]=new p(l({name:e},v.context)))},u.createDefaultHandler=function(e){e=e||{},e.formatter=e.formatter||function(e,t){t.name&&e.unshift("["+t.name+"]")};var t={},n=function(e,t){Function.prototype.apply.call(e,console,t)};return"undefined"==typeof console?function(){}:function(r,o){r=Array.prototype.slice.call(r);var i,a=console.log;o.level===u.TIME?(i=(o.name?"["+o.name+"] ":"")+r[0],"start"===r[1]?console.time?console.time(i):t[i]=(new Date).getTime():console.timeEnd?console.timeEnd(i):n(a,[i+": "+((new Date).getTime()-t[i])+"ms"])):(o.level===u.WARN&&console.warn?a=console.warn:o.level===u.ERROR&&console.error?a=console.error:o.level===u.INFO&&console.info?a=console.info:o.level===u.DEBUG&&console.debug&&(a=console.debug),e.formatter(r,o),n(a,r))}},u.useDefaults=function(e){u.setLevel(e&&e.defaultLevel||u.DEBUG),u.setHandler(u.createDefaultHandler(e))},r=u,void 0!==(o="function"==typeof r?r.call(t,n,t,e):r)&&(e.exports=o)}()},,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n=t.value},debug:function(){this.invoke(u.DEBUG,arguments)},info:function(){this.invoke(u.INFO,arguments)},warn:function(){this.invoke(u.WARN,arguments)},error:function(){this.invoke(u.ERROR,arguments)},time:function(e){"string"==typeof e&&e.length>0&&this.invoke(u.TIME,[e,"start"])},timeEnd:function(e){"string"==typeof e&&e.length>0&&this.invoke(u.TIME,[e,"end"])},invoke:function(e,t){a&&this.enabledFor(e)&&a(t,l({level:e},this.context))}};var v=new p({filterLevel:u.OFF});!function(){var e=u;e.enabledFor=s(v,v.enabledFor),e.debug=s(v,v.debug),e.time=s(v,v.time),e.timeEnd=s(v,v.timeEnd),e.info=s(v,v.info),e.warn=s(v,v.warn),e.error=s(v,v.error),e.log=e.info}(),u.setHandler=function(e){a=e},u.setLevel=function(e){v.setLevel(e);for(var t in c)c.hasOwnProperty(t)&&c[t].setLevel(e)},u.getLevel=function(){return v.getLevel()},u.get=function(e){return c[e]||(c[e]=new p(l({name:e},v.context)))},u.createDefaultHandler=function(e){e=e||{},e.formatter=e.formatter||function(e,t){t.name&&e.unshift("["+t.name+"]")};var t={},n=function(e,t){Function.prototype.apply.call(e,console,t)};return"undefined"==typeof console?function(){}:function(r,o){r=Array.prototype.slice.call(r);var i,a=console.log;o.level===u.TIME?(i=(o.name?"["+o.name+"] ":"")+r[0],"start"===r[1]?console.time?console.time(i):t[i]=(new Date).getTime():console.timeEnd?console.timeEnd(i):n(a,[i+": "+((new Date).getTime()-t[i])+"ms"])):(o.level===u.WARN&&console.warn?a=console.warn:o.level===u.ERROR&&console.error?a=console.error:o.level===u.INFO&&console.info?a=console.info:o.level===u.DEBUG&&console.debug&&(a=console.debug),e.formatter(r,o),n(a,r))}},u.useDefaults=function(e){u.setLevel(e&&e.defaultLevel||u.DEBUG),u.setHandler(u.createDefaultHandler(e))},r=u,void 0!==(o="function"==typeof r?r.call(t,n,t,e):r)&&(e.exports=o)}()},,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n} headers The request headers\n */\n\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n\n /**\n * @member - Service headers\n * @type {Map}\n */\n\n /**\n * @member - Service action\n * @type {string}\n */\n function RequestBuilder() {\n var headers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map();\n\n _classCallCheck(this, RequestBuilder);\n\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n\n /**\n * @member - Service tag\n * @type {string}\n */\n\n /**\n * @member - Service URL\n * @type {string}\n */\n\n /**\n * @member - Service params\n * @type {any}\n */\n\n /**\n * @member - Service name\n * @type {string}\n */\n\n\n _createClass(RequestBuilder, [{\n key: 'getUrl',\n value: function getUrl(serviceUrl) {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n\n }, {\n key: 'doHttpRequest',\n value: function doHttpRequest() {\n var _this = this;\n\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n var request = new XMLHttpRequest();\n return new Promise(function (resolve, reject) {\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n var jsonResponse = void 0;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(e.message + ', ' + request.responseText);\n }\n if (jsonResponse && (typeof jsonResponse === 'undefined' ? 'undefined' : _typeof(jsonResponse)) === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(_this.method, _this.url);\n _this.headers.forEach(function (value, key) {\n request.setRequestHeader(key, value);\n });\n request.send(_this.params);\n });\n }\n }]);\n\n return RequestBuilder;\n}();\n\nexports.default = RequestBuilder;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OVPConfiguration = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(4);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultConfig = {\n serviceUrl: 'https://cdnapisec.kaltura.com/api_v3',\n cdnUrl: '//cdnapisec.kaltura.com',\n serviceParams: {\n apiVersion: '3.3.0',\n format: 1\n }\n};\n\nvar OVPConfiguration = function () {\n function OVPConfiguration() {\n _classCallCheck(this, OVPConfiguration);\n }\n\n _createClass(OVPConfiguration, null, [{\n key: 'set',\n value: function set(clientConfig) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n }, {\n key: 'get',\n value: function get() {\n return (0, _clone.clone)(defaultConfig);\n }\n }]);\n\n return OVPConfiguration;\n}();\n\nexports.default = OVPConfiguration;\nexports.OVPConfiguration = OVPConfiguration;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ServiceResult =\n\n/**\n * @constructor\n * @param {Object} response - Service response\n */\n\n/**\n * @member - The service error\n * @type {ServiceError}\n */\n\n/**\n * @member - The service result data\n * @type {Object}\n */\nfunction ServiceResult(response) {\n _classCallCheck(this, ServiceResult);\n\n this.hasError = false;\n\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n}\n/**\n * @member - Is service returned an error\n * @type {boolean}\n */\n;\n\nexports.default = ServiceResult;\n\nvar ServiceError =\n\n/**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n\n/**\n * @member - The error code\n * @type {string}\n */\nfunction ServiceError(code, message) {\n _classCallCheck(this, ServiceError);\n\n this.code = code;\n this.message = message;\n}\n/**\n * @member - The error message\n * @type {string}\n */\n;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MultiRequestResult = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _logger = __webpack_require__(5);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MultiRequestBuilder = function (_RequestBuilder) {\n _inherits(MultiRequestBuilder, _RequestBuilder);\n\n function MultiRequestBuilder() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, MultiRequestBuilder);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = MultiRequestBuilder.__proto__ || Object.getPrototypeOf(MultiRequestBuilder)).call.apply(_ref, [this].concat(args))), _this), _this.requests = [], _temp), _possibleConstructorReturn(_this, _ret);\n }\n /**\n * @member - Array of requests\n * @type {Array}\n */\n\n\n _createClass(MultiRequestBuilder, [{\n key: 'add',\n\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n value: function add(request) {\n this.requests.push(request);\n var requestParams = {};\n var serviceDef = { service: request.service, action: request.action };\n Object.assign(requestParams, _defineProperty({}, this.requests.length, Object.assign(serviceDef, request.params)));\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n\n }, {\n key: 'execute',\n value: function execute() {\n var _this2 = this;\n\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error('' + err.message);\n }\n return new Promise(function (resolve, reject) {\n _this2.doHttpRequest().then(function (data) {\n resolve(new MultiRequestResult(data));\n }, function (err) {\n var errorText = 'Error on multiRequest execution, error <' + err + '>.';\n reject(errorText);\n });\n });\n }\n }]);\n\n return MultiRequestBuilder;\n}(_requestBuilder2.default);\n\nMultiRequestBuilder._logger = (0, _logger2.default)('MultiRequestBuilder');\nexports.default = MultiRequestBuilder;\n\nvar MultiRequestResult =\n\n/**\n * @constructor\n * @param {Object} response data\n */\nexports.MultiRequestResult = function MultiRequestResult(response) {\n var _this3 = this;\n\n _classCallCheck(this, MultiRequestResult);\n\n this.results = [];\n\n this.success = true;\n var responseArr = response.result ? response.result : response;\n responseArr.forEach(function (result) {\n var serviceResult = new _baseServiceResult2.default(result);\n _this3.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error('Service returned an error with error code: ' + serviceResult.error.code + ' and message: ' + serviceResult.error.message + '.');\n _this3.success = false;\n return;\n }\n });\n}\n/**\n * @member - Multi request response data\n * @type {Object}\n */\n\n/**\n * @member - Is success\n * @type {boolean}\n */\n;\n\nMultiRequestResult._logger = (0, _logger2.default)('MultiRequestResult');\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar clone = function clone(data) {\n var node = void 0;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach(function (e, i) {\n if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object' && e !== {} || Array.isArray(e) && e.length > 0) {\n node[i] = clone(e);\n }\n });\n } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(function (key) {\n if (_typeof(node[key]) === 'object' && node[key] !== {} || Array.isArray(node[key]) && node[key].length > 0) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexports.clone = clone;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setLogLevel = exports.getLogLevel = exports.LogLevel = undefined;\n\nvar _jsLogger = __webpack_require__(6);\n\nvar JsLogger = _interopRequireWildcard(_jsLogger);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar LogLevel = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\n\nJsLogger.useDefaults({ defaultLevel: JsLogger.ERROR });\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name) {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name) {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level, name) {\n getLogger(name).setLevel(level);\n}\n\nexports.default = getLogger;\nexports.LogLevel = LogLevel;\nexports.getLogLevel = getLogLevel;\nexports.setLogLevel = setLogLevel;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (true) {\r\n\t\t!(__WEBPACK_AMD_DEFINE_FACTORY__ = (Logger),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n/***/ }),\n/* 7 */,\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _multiRequestBuilder = __webpack_require__(3);\n\nvar _multiRequestBuilder2 = _interopRequireDefault(_multiRequestBuilder);\n\nvar _config = __webpack_require__(1);\n\nvar _config2 = _interopRequireDefault(_config);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar SERVICE_NAME = 'multirequest';\n\nvar OVPService = function () {\n function OVPService() {\n _classCallCheck(this, OVPService);\n }\n\n _createClass(OVPService, null, [{\n key: 'getMultiRequest',\n\n /**\n * Gets a new instance of MultiRequestBuilder with ovp params\n * @function getMultiRequest\n * @param {string} playerVersion The player version\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n value: function getMultiRequest(playerVersion, ks, partnerId) {\n var config = _config2.default.get();\n var ovpParams = config.serviceParams;\n Object.assign(ovpParams, { ks: ks, clientTag: 'html5:v' + playerVersion });\n if (partnerId) {\n Object.assign(ovpParams, { partnerId: partnerId });\n }\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var multiReq = new _multiRequestBuilder2.default(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ovpParams;\n return multiReq;\n }\n }]);\n\n return OVPService;\n}();\n\nexports.default = OVPService;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar param = function param(a) {\n var s = [],\n rbracket = /\\[\\]$/,\n isArray = function isArray(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n },\n add = function add(k, v) {\n v = typeof v === 'function' ? v() : v === null ? '' : v === undefined ? '' : v;\n s[s.length] = encodeURIComponent(k) + '=' + encodeURIComponent(v);\n },\n buildParams = function buildParams(prefix, obj) {\n var i = void 0,\n len = void 0,\n key = void 0;\n\n if (prefix) {\n if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n if (rbracket.test(prefix)) {\n add(prefix, obj[i]);\n } else {\n buildParams(prefix + ':' + (_typeof(obj[i]) === 'object' ? i : ''), obj[i]);\n }\n }\n } else if (obj && String(obj) === '[object Object]') {\n for (key in obj) {\n buildParams(prefix + ':' + key, obj[key]);\n }\n } else {\n add(prefix, obj);\n }\n } else if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n add(obj[i].name, obj[i].value);\n }\n } else {\n for (key in obj) {\n buildParams(key, obj[key]);\n }\n }\n return s;\n };\n\n return buildParams('', a).join('&').replace(/%20/g, '+');\n};\n\nexports.param = param;\n\n/***/ }),\n/* 10 */,\n/* 11 */,\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ovpService = __webpack_require__(8);\n\nvar _ovpService2 = _interopRequireDefault(_ovpService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _config = __webpack_require__(1);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _param = __webpack_require__(9);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'stats';\n\nvar OVPStatsService = function (_OVPService) {\n _inherits(OVPStatsService, _OVPService);\n\n function OVPStatsService() {\n _classCallCheck(this, OVPStatsService);\n\n return _possibleConstructorReturn(this, (OVPStatsService.__proto__ || Object.getPrototypeOf(OVPStatsService)).apply(this, arguments));\n }\n\n _createClass(OVPStatsService, null, [{\n key: 'collect',\n\n /**\n * Creates an instance of RequestBuilder for stats.collect\n * @function collect\n * @param {string} serviceUrl - The service base url\n * @param {string} ks - The ks\n * @param {string} playerVersion - The player version\n * @param {Object} event - The event data\n * @returns {RequestBuilder} - The request builder\n * @static\n */\n value: function collect(serviceUrl, ks, playerVersion, event) {\n var ovpParams = _config2.default.get();\n var serviceParams = {};\n Object.assign(serviceParams, ovpParams.serviceParams, { ks: ks, clientTag: 'html5:v' + playerVersion }, event);\n var request = new _requestBuilder2.default();\n request.service = SERVICE_NAME;\n request.action = 'collect';\n request.method = 'GET';\n request.tag = 'stats-collect';\n request.params = serviceParams;\n request.url = serviceUrl + '?service=' + request.service + '&action=' + request.action + '&' + (0, _param.param)(request.params);\n return request;\n }\n }]);\n\n return OVPStatsService;\n}(_ovpService2.default);\n\nexports.default = OVPStatsService;\n\n/***/ }),\n/* 13 */,\n/* 14 */,\n/* 15 */,\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VERSION = exports.NAME = exports.RequestBuilder = exports.OVPConfiguration = exports.OVPStatsService = undefined;\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _config = __webpack_require__(1);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _statsService = __webpack_require__(12);\n\nvar _statsService2 = _interopRequireDefault(_statsService);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NAME = \"playkit-js-providers\" + '-stats-service';\n\nvar VERSION = \"2.9.0\";\n\nexports.OVPStatsService = _statsService2.default;\nexports.OVPConfiguration = _config2.default;\nexports.RequestBuilder = _requestBuilder2.default;\nexports.NAME = NAME;\nexports.VERSION = VERSION;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// playkit-stats-service.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 16);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap c1625b18c43e6562ec1c","//@flow\nexport default class RequestBuilder {\n /**\n * @member - Service name\n * @type {string}\n */\n service: string;\n /**\n * @member - Service action\n * @type {string}\n */\n action: string;\n /**\n * @member - Service params\n * @type {any}\n */\n params: any;\n /**\n * @member - Service headers\n * @type {Map}\n */\n headers: Map;\n /**\n * @member - Service URL\n * @type {string}\n */\n url: string;\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n method: string;\n /**\n * @member - Service tag\n * @type {string}\n */\n tag: string;\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n constructor(headers: Map = new Map()) {\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n getUrl(serviceUrl: string): string {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n doHttpRequest(): Promise {\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n let request = new XMLHttpRequest();\n return new Promise((resolve, reject) => {\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.status === 200) {\n let jsonResponse;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(`${e.message}, ${request.responseText}`);\n }\n if (jsonResponse && typeof jsonResponse === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);\n else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(this.method, this.url);\n this.headers.forEach((value, key) => {\n request.setRequestHeader(key, value);\n });\n request.send(this.params);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./util/request-builder.js","//@flow\nimport {clone} from '../../util/clone';\n\nconst defaultConfig: Object = {\n serviceUrl: 'https://cdnapisec.kaltura.com/api_v3',\n cdnUrl: '//cdnapisec.kaltura.com',\n serviceParams: {\n apiVersion: '3.3.0',\n format: 1\n }\n};\n\nexport default class OVPConfiguration {\n static set(clientConfig?: ProviderEnvConfigObject) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n static get(): Object {\n return clone(defaultConfig);\n }\n}\n\nexport {OVPConfiguration};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/config.js","//@flow\nexport default class ServiceResult {\n /**\n * @member - Is service returned an error\n * @type {boolean}\n */\n hasError: boolean = false;\n /**\n * @member - The service error\n * @type {ServiceError}\n */\n error: ServiceError;\n /**\n * @member - The service result data\n * @type {Object}\n */\n data: Object;\n\n /**\n * @constructor\n * @param {Object} response - Service response\n */\n constructor(response: Object) {\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n }\n}\n\nclass ServiceError {\n /**\n * @member - The error code\n * @type {string}\n */\n code: string;\n /**\n * @member - The error message\n * @type {string}\n */\n message: string;\n\n /**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n constructor(code: string, message: string) {\n this.code = code;\n this.message = message;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-service-result.js","//@flow\nimport RequestBuilder from '../../util/request-builder';\nimport getLogger from '../../util/logger';\nimport ServiceResult from './base-service-result';\n\nexport default class MultiRequestBuilder extends RequestBuilder {\n static _logger = getLogger('MultiRequestBuilder');\n /**\n * @member - Array of requests\n * @type {Array}\n */\n requests: Array = [];\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n add(request: RequestBuilder): MultiRequestBuilder {\n this.requests.push(request);\n const requestParams = {};\n const serviceDef: Object = {service: request.service, action: request.action};\n Object.assign(requestParams, {[this.requests.length]: Object.assign(serviceDef, request.params)});\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n execute(): Promise {\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error(`${err.message}`);\n }\n return new Promise((resolve, reject) => {\n this.doHttpRequest().then(\n data => {\n resolve(new MultiRequestResult(data));\n },\n err => {\n const errorText: string = `Error on multiRequest execution, error <${err}>.`;\n reject(errorText);\n }\n );\n });\n }\n}\n\nexport class MultiRequestResult {\n static _logger = getLogger('MultiRequestResult');\n /**\n * @member - Is success\n * @type {boolean}\n */\n success: boolean;\n /**\n * @member - Multi request response data\n * @type {Object}\n */\n results: Array = [];\n\n /**\n * @constructor\n * @param {Object} response data\n */\n constructor(response: Object) {\n this.success = true;\n const responseArr = response.result ? response.result : response;\n responseArr.forEach(result => {\n const serviceResult: ServiceResult = new ServiceResult(result);\n this.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error(\n `Service returned an error with error code: ${serviceResult.error.code} and message: ${serviceResult.error.message}.`\n );\n this.success = false;\n return;\n }\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/multi-request-builder.js","const clone = data => {\n let node;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach((e, i) => {\n if ((typeof e === 'object' && e !== {}) || (Array.isArray(e) && e.length > 0)) {\n node[i] = clone(e);\n }\n });\n } else if (typeof data === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(key => {\n if ((typeof node[key] === 'object' && node[key] !== {}) || (Array.isArray(node[key]) && node[key].length > 0)) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexport {clone};\n\n\n\n// WEBPACK FOOTER //\n// ./util/clone.js","//@flow\nimport * as JsLogger from 'js-logger';\n\nexport type LogLevelObject = {value: number, name: string};\nexport type LogLevelType = {[level: string]: LogLevelObject};\n\nconst LogLevel: LogLevelType = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\nJsLogger.useDefaults({defaultLevel: JsLogger.ERROR});\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name?: string): Object {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name?: string): LogLevelObject {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level: LogLevelObject, name?: string): void {\n getLogger(name).setLevel(level);\n}\n\nexport default getLogger;\nexport {LogLevel, getLogLevel, setLogLevel};\n\n\n\n// WEBPACK FOOTER //\n// ./util/logger.js","/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine(Logger);\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/js-logger/src/logger.js\n// module id = 6\n// module chunks = 0 1 2","//@flow\nimport MultiRequestBuilder from '../../common/multi-request-builder';\nimport OVPConfiguration from '../config';\n\nconst SERVICE_NAME: string = 'multirequest';\n\nexport default class OVPService {\n /**\n * Gets a new instance of MultiRequestBuilder with ovp params\n * @function getMultiRequest\n * @param {string} playerVersion The player version\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n static getMultiRequest(playerVersion: string, ks: string, partnerId?: number): MultiRequestBuilder {\n const config = OVPConfiguration.get();\n const ovpParams = config.serviceParams;\n Object.assign(ovpParams, {ks: ks, clientTag: 'html5:v' + playerVersion});\n if (partnerId) {\n Object.assign(ovpParams, {partnerId: partnerId});\n }\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const multiReq = new MultiRequestBuilder(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ovpParams;\n return multiReq;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/ovp-service.js","const param = a => {\n let s = [],\n rbracket = /\\[\\]$/,\n isArray = function(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n },\n add = function(k, v) {\n v = typeof v === 'function' ? v() : v === null ? '' : v === undefined ? '' : v;\n s[s.length] = encodeURIComponent(k) + '=' + encodeURIComponent(v);\n },\n buildParams = function(prefix, obj) {\n let i, len, key;\n\n if (prefix) {\n if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n if (rbracket.test(prefix)) {\n add(prefix, obj[i]);\n } else {\n buildParams(prefix + ':' + (typeof obj[i] === 'object' ? i : ''), obj[i]);\n }\n }\n } else if (obj && String(obj) === '[object Object]') {\n for (key in obj) {\n buildParams(prefix + ':' + key, obj[key]);\n }\n } else {\n add(prefix, obj);\n }\n } else if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n add(obj[i].name, obj[i].value);\n }\n } else {\n for (key in obj) {\n buildParams(key, obj[key]);\n }\n }\n return s;\n };\n\n return buildParams('', a)\n .join('&')\n .replace(/%20/g, '+');\n};\n\nexport {param};\n\n\n\n// WEBPACK FOOTER //\n// ./util/param.js","//@flow\nimport OVPService from '../ovp-service';\nimport RequestBuilder from '../../../../util/request-builder';\nimport OVPConfiguration from '../../config';\nimport {param} from '../../../../util/param';\n\nconst SERVICE_NAME: string = 'stats';\n\nexport default class OVPStatsService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for stats.collect\n * @function collect\n * @param {string} serviceUrl - The service base url\n * @param {string} ks - The ks\n * @param {string} playerVersion - The player version\n * @param {Object} event - The event data\n * @returns {RequestBuilder} - The request builder\n * @static\n */\n static collect(serviceUrl: string, ks: string, playerVersion: string, event: Object): RequestBuilder {\n const ovpParams = OVPConfiguration.get();\n const serviceParams = {};\n Object.assign(serviceParams, ovpParams.serviceParams, {ks: ks, clientTag: 'html5:v' + playerVersion}, event);\n const request = new RequestBuilder();\n request.service = SERVICE_NAME;\n request.action = 'collect';\n request.method = 'GET';\n request.tag = 'stats-collect';\n request.params = serviceParams;\n request.url = serviceUrl + '?service=' + request.service + '&action=' + request.action + '&' + param(request.params);\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/stats/stats-service.js","// @flow\nimport RequestBuilder from '../../../../util/request-builder';\nimport OVPConfiguration from '../../config';\nimport OVPStatsService from './stats-service';\n\ndeclare var __VERSION__: string;\ndeclare var __NAME__: string;\n\nconst NAME = __NAME__ + '-stats-service';\nconst VERSION = __VERSION__;\n\nexport {OVPStatsService, OVPConfiguration, RequestBuilder, NAME, VERSION};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/stats/index.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["./providers/webpack/universalModuleDefinition","./providers/playkit-stats-service.js","./providers/webpack/bootstrap 3d59ede3457363cdaf17","./providers/./util/request-builder.js","./providers/./k-provider/ovp/config.js","./providers/./k-provider/common/base-service-result.js","./providers/./k-provider/common/multi-request-builder.js","./providers/./util/clone.js","./providers/./util/logger.js","./providers/../~/js-logger/src/logger.js","./providers/./k-provider/ovp/services/ovp-service.js","./providers/./util/param.js","./providers/./k-provider/ovp/services/stats/stats-service.js","./providers/./k-provider/ovp/services/stats/index.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","_classCallCheck","instance","Constructor","TypeError","_typeof","Symbol","iterator","obj","constructor","_createClass","defineProperties","target","props","length","descriptor","writable","key","protoProps","staticProps","RequestBuilder","headers","arguments","undefined","Map","serviceUrl","service","action","_this","url","Error","request","XMLHttpRequest","Promise","resolve","reject","onreadystatechange","readyState","status","jsonResponse","JSON","parse","responseText","e","message","code","open","method","forEach","setRequestHeader","send","params","default","OVPConfiguration","_clone","defaultConfig","cdnUrl","serviceParams","apiVersion","format","clientConfig","assign","clone","ServiceResult","response","hasError","objectType","error","ServiceError","data","_interopRequireDefault","_defineProperty","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","MultiRequestResult","_requestBuilder","_requestBuilder2","_logger","_logger2","_baseServiceResult","_baseServiceResult2","MultiRequestBuilder","_RequestBuilder","_ref","_temp","_ret","_len","args","Array","_key","getPrototypeOf","apply","concat","requests","push","requestParams","serviceDef","_this2","stringify","err","doHttpRequest","then","errorText","_this3","results","success","result","serviceResult","node","isArray","slice","keys","getLogger","JsLogger","getLogLevel","getLevel","setLogLevel","level","setLevel","LogLevel","_jsLogger","newObj","DEBUG","INFO","TIME","WARN","ERROR","OFF","useDefaults","defaultLevel","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","global","Logger","VERSION","logHandler","contextualLoggersByNameMap","bind","scope","func","merge","defineLogLevel","ContextualLogger","defaultContext","context","filterLevel","log","info","newLevel","enabledFor","lvl","debug","invoke","warn","time","label","timeEnd","msgArgs","globalLogger","L","setHandler","createDefaultHandler","options","formatter","messages","unshift","timerStartTimeByLabelMap","invokeConsoleMethod","hdlr","Function","console","timerLabel","Date","getTime","_multiRequestBuilder","_multiRequestBuilder2","_config","_config2","OVPService","playerVersion","ks","partnerId","config","ovpParams","clientTag","set","multiReq","getUrl","param","a","rbracket","toString","add","k","v","encodeURIComponent","buildParams","prefix","len","test","String","join","replace","_ovpService","_ovpService2","_param","OVPStatsService","_OVPService","event","tag","NAME","_statsService","_statsService2"],"mappings":"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","file":"playkit-stats-service.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"stats\"] = factory();\n\telse\n\t\troot[\"playkit\"] = root[\"playkit\"] || {}, root[\"playkit\"][\"services\"] = root[\"playkit\"][\"services\"] || {}, root[\"playkit\"][\"services\"][\"stats\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"stats\"] = factory();\n\telse\n\t\troot[\"playkit\"] = root[\"playkit\"] || {}, root[\"playkit\"][\"services\"] = root[\"playkit\"][\"services\"] || {}, root[\"playkit\"][\"services\"][\"stats\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 16);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar RequestBuilder = function () {\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n\n /**\n * @member - Service headers\n * @type {Map}\n */\n\n /**\n * @member - Service action\n * @type {string}\n */\n function RequestBuilder() {\n var headers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Map();\n\n _classCallCheck(this, RequestBuilder);\n\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n\n /**\n * @member - Service tag\n * @type {string}\n */\n\n /**\n * @member - Service URL\n * @type {string}\n */\n\n /**\n * @member - Service params\n * @type {any}\n */\n\n /**\n * @member - Service name\n * @type {string}\n */\n\n\n _createClass(RequestBuilder, [{\n key: 'getUrl',\n value: function getUrl(serviceUrl) {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n\n }, {\n key: 'doHttpRequest',\n value: function doHttpRequest() {\n var _this = this;\n\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n var request = new XMLHttpRequest();\n return new Promise(function (resolve, reject) {\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n var jsonResponse = void 0;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(e.message + ', ' + request.responseText);\n }\n if (jsonResponse && (typeof jsonResponse === 'undefined' ? 'undefined' : _typeof(jsonResponse)) === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(_this.method, _this.url);\n _this.headers.forEach(function (value, key) {\n request.setRequestHeader(key, value);\n });\n request.send(_this.params);\n });\n }\n }]);\n\n return RequestBuilder;\n}();\n\nexports.default = RequestBuilder;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OVPConfiguration = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(4);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultConfig = {\n serviceUrl: 'https://cdnapisec.kaltura.com/api_v3',\n cdnUrl: '//cdnapisec.kaltura.com',\n serviceParams: {\n apiVersion: '3.3.0',\n format: 1\n }\n};\n\nvar OVPConfiguration = function () {\n function OVPConfiguration() {\n _classCallCheck(this, OVPConfiguration);\n }\n\n _createClass(OVPConfiguration, null, [{\n key: 'set',\n value: function set(clientConfig) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n }, {\n key: 'get',\n value: function get() {\n return (0, _clone.clone)(defaultConfig);\n }\n }]);\n\n return OVPConfiguration;\n}();\n\nexports.default = OVPConfiguration;\nexports.OVPConfiguration = OVPConfiguration;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ServiceResult =\n\n/**\n * @constructor\n * @param {Object} response - Service response\n */\n\n/**\n * @member - The service error\n * @type {ServiceError}\n */\n\n/**\n * @member - The service result data\n * @type {Object}\n */\nfunction ServiceResult(response) {\n _classCallCheck(this, ServiceResult);\n\n this.hasError = false;\n\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n}\n/**\n * @member - Is service returned an error\n * @type {boolean}\n */\n;\n\nexports.default = ServiceResult;\n\nvar ServiceError =\n\n/**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n\n/**\n * @member - The error code\n * @type {string}\n */\nfunction ServiceError(code, message) {\n _classCallCheck(this, ServiceError);\n\n this.code = code;\n this.message = message;\n}\n/**\n * @member - The error message\n * @type {string}\n */\n;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MultiRequestResult = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _logger = __webpack_require__(5);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _baseServiceResult = __webpack_require__(2);\n\nvar _baseServiceResult2 = _interopRequireDefault(_baseServiceResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MultiRequestBuilder = function (_RequestBuilder) {\n _inherits(MultiRequestBuilder, _RequestBuilder);\n\n function MultiRequestBuilder() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, MultiRequestBuilder);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = MultiRequestBuilder.__proto__ || Object.getPrototypeOf(MultiRequestBuilder)).call.apply(_ref, [this].concat(args))), _this), _this.requests = [], _temp), _possibleConstructorReturn(_this, _ret);\n }\n /**\n * @member - Array of requests\n * @type {Array}\n */\n\n\n _createClass(MultiRequestBuilder, [{\n key: 'add',\n\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n value: function add(request) {\n this.requests.push(request);\n var requestParams = {};\n var serviceDef = { service: request.service, action: request.action };\n Object.assign(requestParams, _defineProperty({}, this.requests.length, Object.assign(serviceDef, request.params)));\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n\n }, {\n key: 'execute',\n value: function execute() {\n var _this2 = this;\n\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error('' + err.message);\n }\n return new Promise(function (resolve, reject) {\n _this2.doHttpRequest().then(function (data) {\n resolve(new MultiRequestResult(data));\n }, function (err) {\n var errorText = 'Error on multiRequest execution, error <' + err + '>.';\n reject(errorText);\n });\n });\n }\n }]);\n\n return MultiRequestBuilder;\n}(_requestBuilder2.default);\n\nMultiRequestBuilder._logger = (0, _logger2.default)('MultiRequestBuilder');\nexports.default = MultiRequestBuilder;\n\nvar MultiRequestResult =\n\n/**\n * @constructor\n * @param {Object} response data\n */\nexports.MultiRequestResult = function MultiRequestResult(response) {\n var _this3 = this;\n\n _classCallCheck(this, MultiRequestResult);\n\n this.results = [];\n\n this.success = true;\n var responseArr = response.result ? response.result : response;\n responseArr.forEach(function (result) {\n var serviceResult = new _baseServiceResult2.default(result);\n _this3.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error('Service returned an error with error code: ' + serviceResult.error.code + ' and message: ' + serviceResult.error.message + '.');\n _this3.success = false;\n return;\n }\n });\n}\n/**\n * @member - Multi request response data\n * @type {Object}\n */\n\n/**\n * @member - Is success\n * @type {boolean}\n */\n;\n\nMultiRequestResult._logger = (0, _logger2.default)('MultiRequestResult');\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar clone = function clone(data) {\n var node = void 0;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach(function (e, i) {\n if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object' && e !== {} || Array.isArray(e) && e.length > 0) {\n node[i] = clone(e);\n }\n });\n } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(function (key) {\n if (_typeof(node[key]) === 'object' && node[key] !== {} || Array.isArray(node[key]) && node[key].length > 0) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexports.clone = clone;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setLogLevel = exports.getLogLevel = exports.LogLevel = undefined;\n\nvar _jsLogger = __webpack_require__(6);\n\nvar JsLogger = _interopRequireWildcard(_jsLogger);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar LogLevel = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\n\nJsLogger.useDefaults({ defaultLevel: JsLogger.ERROR });\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name) {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name) {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level, name) {\n getLogger(name).setLevel(level);\n}\n\nexports.default = getLogger;\nexports.LogLevel = LogLevel;\nexports.getLogLevel = getLogLevel;\nexports.setLogLevel = setLogLevel;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (true) {\r\n\t\t!(__WEBPACK_AMD_DEFINE_FACTORY__ = (Logger),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n/***/ }),\n/* 7 */,\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _multiRequestBuilder = __webpack_require__(3);\n\nvar _multiRequestBuilder2 = _interopRequireDefault(_multiRequestBuilder);\n\nvar _config = __webpack_require__(1);\n\nvar _config2 = _interopRequireDefault(_config);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar SERVICE_NAME = 'multirequest';\n\nvar OVPService = function () {\n function OVPService() {\n _classCallCheck(this, OVPService);\n }\n\n _createClass(OVPService, null, [{\n key: 'getMultiRequest',\n\n /**\n * Gets a new instance of MultiRequestBuilder with ovp params\n * @function getMultiRequest\n * @param {string} playerVersion The player version\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n value: function getMultiRequest(playerVersion, ks, partnerId) {\n var config = _config2.default.get();\n var ovpParams = config.serviceParams;\n Object.assign(ovpParams, { ks: ks, clientTag: 'html5:v' + playerVersion });\n if (partnerId) {\n Object.assign(ovpParams, { partnerId: partnerId });\n }\n var headers = new Map();\n headers.set('Content-Type', 'application/json');\n var multiReq = new _multiRequestBuilder2.default(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ovpParams;\n return multiReq;\n }\n }]);\n\n return OVPService;\n}();\n\nexports.default = OVPService;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar param = function param(a) {\n var s = [],\n rbracket = /\\[\\]$/,\n isArray = function isArray(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n },\n add = function add(k, v) {\n v = typeof v === 'function' ? v() : v === null ? '' : v === undefined ? '' : v;\n s[s.length] = encodeURIComponent(k) + '=' + encodeURIComponent(v);\n },\n buildParams = function buildParams(prefix, obj) {\n var i = void 0,\n len = void 0,\n key = void 0;\n\n if (prefix) {\n if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n if (rbracket.test(prefix)) {\n add(prefix, obj[i]);\n } else {\n buildParams(prefix + ':' + (_typeof(obj[i]) === 'object' ? i : ''), obj[i]);\n }\n }\n } else if (obj && String(obj) === '[object Object]') {\n for (key in obj) {\n buildParams(prefix + ':' + key, obj[key]);\n }\n } else {\n add(prefix, obj);\n }\n } else if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n add(obj[i].name, obj[i].value);\n }\n } else {\n for (key in obj) {\n buildParams(key, obj[key]);\n }\n }\n return s;\n };\n\n return buildParams('', a).join('&').replace(/%20/g, '+');\n};\n\nexports.param = param;\n\n/***/ }),\n/* 10 */,\n/* 11 */,\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _ovpService = __webpack_require__(8);\n\nvar _ovpService2 = _interopRequireDefault(_ovpService);\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _config = __webpack_require__(1);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _param = __webpack_require__(9);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SERVICE_NAME = 'stats';\n\nvar OVPStatsService = function (_OVPService) {\n _inherits(OVPStatsService, _OVPService);\n\n function OVPStatsService() {\n _classCallCheck(this, OVPStatsService);\n\n return _possibleConstructorReturn(this, (OVPStatsService.__proto__ || Object.getPrototypeOf(OVPStatsService)).apply(this, arguments));\n }\n\n _createClass(OVPStatsService, null, [{\n key: 'collect',\n\n /**\n * Creates an instance of RequestBuilder for stats.collect\n * @function collect\n * @param {string} serviceUrl - The service base url\n * @param {string} ks - The ks\n * @param {string} playerVersion - The player version\n * @param {Object} event - The event data\n * @returns {RequestBuilder} - The request builder\n * @static\n */\n value: function collect(serviceUrl, ks, playerVersion, event) {\n var ovpParams = _config2.default.get();\n var serviceParams = {};\n Object.assign(serviceParams, ovpParams.serviceParams, { ks: ks, clientTag: 'html5:v' + playerVersion }, event);\n var request = new _requestBuilder2.default();\n request.service = SERVICE_NAME;\n request.action = 'collect';\n request.method = 'GET';\n request.tag = 'stats-collect';\n request.params = serviceParams;\n request.url = serviceUrl + '?service=' + request.service + '&action=' + request.action + '&' + (0, _param.param)(request.params);\n return request;\n }\n }]);\n\n return OVPStatsService;\n}(_ovpService2.default);\n\nexports.default = OVPStatsService;\n\n/***/ }),\n/* 13 */,\n/* 14 */,\n/* 15 */,\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VERSION = exports.NAME = exports.RequestBuilder = exports.OVPConfiguration = exports.OVPStatsService = undefined;\n\nvar _requestBuilder = __webpack_require__(0);\n\nvar _requestBuilder2 = _interopRequireDefault(_requestBuilder);\n\nvar _config = __webpack_require__(1);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _statsService = __webpack_require__(12);\n\nvar _statsService2 = _interopRequireDefault(_statsService);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NAME = \"playkit-js-providers\" + '-stats-service';\n\nvar VERSION = \"2.8.0\";\n\nexports.OVPStatsService = _statsService2.default;\nexports.OVPConfiguration = _config2.default;\nexports.RequestBuilder = _requestBuilder2.default;\nexports.NAME = NAME;\nexports.VERSION = VERSION;\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// playkit-stats-service.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 16);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 3d59ede3457363cdaf17","//@flow\nexport default class RequestBuilder {\n /**\n * @member - Service name\n * @type {string}\n */\n service: string;\n /**\n * @member - Service action\n * @type {string}\n */\n action: string;\n /**\n * @member - Service params\n * @type {any}\n */\n params: any;\n /**\n * @member - Service headers\n * @type {Map}\n */\n headers: Map;\n /**\n * @member - Service URL\n * @type {string}\n */\n url: string;\n /**\n * @member - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n method: string;\n /**\n * @member - Service tag\n * @type {string}\n */\n tag: string;\n\n /**\n * @constructor\n * @param {Map} headers The request headers\n */\n constructor(headers: Map = new Map()) {\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n getUrl(serviceUrl: string): string {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.} Service response as promise\n */\n doHttpRequest(): Promise {\n if (!this.url) {\n throw new Error('serviceUrl is mandatory for request builder');\n }\n let request = new XMLHttpRequest();\n return new Promise((resolve, reject) => {\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.status === 200) {\n let jsonResponse;\n try {\n jsonResponse = JSON.parse(request.responseText);\n } catch (e) {\n return reject(`${e.message}, ${request.responseText}`);\n }\n if (jsonResponse && typeof jsonResponse === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse);\n else resolve(jsonResponse);\n } else {\n reject(request.responseText);\n }\n }\n };\n request.open(this.method, this.url);\n this.headers.forEach((value, key) => {\n request.setRequestHeader(key, value);\n });\n request.send(this.params);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./util/request-builder.js","//@flow\nimport {clone} from '../../util/clone';\n\nconst defaultConfig: Object = {\n serviceUrl: 'https://cdnapisec.kaltura.com/api_v3',\n cdnUrl: '//cdnapisec.kaltura.com',\n serviceParams: {\n apiVersion: '3.3.0',\n format: 1\n }\n};\n\nexport default class OVPConfiguration {\n static set(clientConfig?: ProviderEnvConfigObject) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n static get(): Object {\n return clone(defaultConfig);\n }\n}\n\nexport {OVPConfiguration};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/config.js","//@flow\nexport default class ServiceResult {\n /**\n * @member - Is service returned an error\n * @type {boolean}\n */\n hasError: boolean = false;\n /**\n * @member - The service error\n * @type {ServiceError}\n */\n error: ServiceError;\n /**\n * @member - The service result data\n * @type {Object}\n */\n data: Object;\n\n /**\n * @constructor\n * @param {Object} response - Service response\n */\n constructor(response: Object) {\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n }\n}\n\nclass ServiceError {\n /**\n * @member - The error code\n * @type {string}\n */\n code: string;\n /**\n * @member - The error message\n * @type {string}\n */\n message: string;\n\n /**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n constructor(code: string, message: string) {\n this.code = code;\n this.message = message;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/base-service-result.js","//@flow\nimport RequestBuilder from '../../util/request-builder';\nimport getLogger from '../../util/logger';\nimport ServiceResult from './base-service-result';\n\nexport default class MultiRequestBuilder extends RequestBuilder {\n static _logger = getLogger('MultiRequestBuilder');\n /**\n * @member - Array of requests\n * @type {Array}\n */\n requests: Array = [];\n\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n add(request: RequestBuilder): MultiRequestBuilder {\n this.requests.push(request);\n const requestParams = {};\n const serviceDef: Object = {service: request.service, action: request.action};\n Object.assign(requestParams, {[this.requests.length]: Object.assign(serviceDef, request.params)});\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @returns {Promise} The multirequest execution promise\n */\n execute(): Promise {\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error(`${err.message}`);\n }\n return new Promise((resolve, reject) => {\n this.doHttpRequest().then(\n data => {\n resolve(new MultiRequestResult(data));\n },\n err => {\n const errorText: string = `Error on multiRequest execution, error <${err}>.`;\n reject(errorText);\n }\n );\n });\n }\n}\n\nexport class MultiRequestResult {\n static _logger = getLogger('MultiRequestResult');\n /**\n * @member - Is success\n * @type {boolean}\n */\n success: boolean;\n /**\n * @member - Multi request response data\n * @type {Object}\n */\n results: Array = [];\n\n /**\n * @constructor\n * @param {Object} response data\n */\n constructor(response: Object) {\n this.success = true;\n const responseArr = response.result ? response.result : response;\n responseArr.forEach(result => {\n const serviceResult: ServiceResult = new ServiceResult(result);\n this.results.push(serviceResult);\n if (serviceResult.hasError) {\n MultiRequestResult._logger.error(\n `Service returned an error with error code: ${serviceResult.error.code} and message: ${serviceResult.error.message}.`\n );\n this.success = false;\n return;\n }\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/common/multi-request-builder.js","const clone = data => {\n let node;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach((e, i) => {\n if ((typeof e === 'object' && e !== {}) || (Array.isArray(e) && e.length > 0)) {\n node[i] = clone(e);\n }\n });\n } else if (typeof data === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(key => {\n if ((typeof node[key] === 'object' && node[key] !== {}) || (Array.isArray(node[key]) && node[key].length > 0)) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexport {clone};\n\n\n\n// WEBPACK FOOTER //\n// ./util/clone.js","//@flow\nimport * as JsLogger from 'js-logger';\n\nexport type LogLevelObject = {value: number, name: string};\nexport type LogLevelType = {[level: string]: LogLevelObject};\n\nconst LogLevel: LogLevelType = {\n DEBUG: JsLogger.DEBUG,\n INFO: JsLogger.INFO,\n TIME: JsLogger.TIME,\n WARN: JsLogger.WARN,\n ERROR: JsLogger.ERROR,\n OFF: JsLogger.OFF\n};\n\nJsLogger.useDefaults({defaultLevel: JsLogger.ERROR});\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name?: string): Object {\n if (!name) {\n return JsLogger;\n }\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name?: string): LogLevelObject {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level: LogLevelObject, name?: string): void {\n getLogger(name).setLevel(level);\n}\n\nexport default getLogger;\nexport {LogLevel, getLogLevel, setLogLevel};\n\n\n\n// WEBPACK FOOTER //\n// ./util/logger.js","/*!\r\n * js-logger - http://github.com/jonnyreeves/js-logger\r\n * Jonny Reeves, http://jonnyreeves.co.uk/\r\n * js-logger may be freely distributed under the MIT license.\r\n */\r\n(function (global) {\r\n\t\"use strict\";\r\n\r\n\t// Top level module for the global, static logger instance.\r\n\tvar Logger = { };\r\n\r\n\t// For those that are at home that are keeping score.\r\n\tLogger.VERSION = \"1.4.1\";\r\n\r\n\t// Function which handles all incoming log messages.\r\n\tvar logHandler;\r\n\r\n\t// Map of ContextualLogger instances by name; used by Logger.get() to return the same named instance.\r\n\tvar contextualLoggersByNameMap = {};\r\n\r\n\t// Polyfill for ES5's Function.bind.\r\n\tvar bind = function(scope, func) {\r\n\t\treturn function() {\r\n\t\t\treturn func.apply(scope, arguments);\r\n\t\t};\r\n\t};\r\n\r\n\t// Super exciting object merger-matron 9000 adding another 100 bytes to your download.\r\n\tvar merge = function () {\r\n\t\tvar args = arguments, target = args[0], key, i;\r\n\t\tfor (i = 1; i < args.length; i++) {\r\n\t\t\tfor (key in args[i]) {\r\n\t\t\t\tif (!(key in target) && args[i].hasOwnProperty(key)) {\r\n\t\t\t\t\ttarget[key] = args[i][key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn target;\r\n\t};\r\n\r\n\t// Helper to define a logging level object; helps with optimisation.\r\n\tvar defineLogLevel = function(value, name) {\r\n\t\treturn { value: value, name: name };\r\n\t};\r\n\r\n\t// Predefined logging levels.\r\n\tLogger.DEBUG = defineLogLevel(1, 'DEBUG');\r\n\tLogger.INFO = defineLogLevel(2, 'INFO');\r\n\tLogger.TIME = defineLogLevel(3, 'TIME');\r\n\tLogger.WARN = defineLogLevel(4, 'WARN');\r\n\tLogger.ERROR = defineLogLevel(8, 'ERROR');\r\n\tLogger.OFF = defineLogLevel(99, 'OFF');\r\n\r\n\t// Inner class which performs the bulk of the work; ContextualLogger instances can be configured independently\r\n\t// of each other.\r\n\tvar ContextualLogger = function(defaultContext) {\r\n\t\tthis.context = defaultContext;\r\n\t\tthis.setLevel(defaultContext.filterLevel);\r\n\t\tthis.log = this.info; // Convenience alias.\r\n\t};\r\n\r\n\tContextualLogger.prototype = {\r\n\t\t// Changes the current logging level for the logging instance.\r\n\t\tsetLevel: function (newLevel) {\r\n\t\t\t// Ensure the supplied Level object looks valid.\r\n\t\t\tif (newLevel && \"value\" in newLevel) {\r\n\t\t\t\tthis.context.filterLevel = newLevel;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t// Gets the current logging level for the logging instance\r\n\t\tgetLevel: function () {\r\n\t\t\treturn this.context.filterLevel;\r\n\t\t},\r\n\r\n\t\t// Is the logger configured to output messages at the supplied level?\r\n\t\tenabledFor: function (lvl) {\r\n\t\t\tvar filterLevel = this.context.filterLevel;\r\n\t\t\treturn lvl.value >= filterLevel.value;\r\n\t\t},\r\n\r\n\t\tdebug: function () {\r\n\t\t\tthis.invoke(Logger.DEBUG, arguments);\r\n\t\t},\r\n\r\n\t\tinfo: function () {\r\n\t\t\tthis.invoke(Logger.INFO, arguments);\r\n\t\t},\r\n\r\n\t\twarn: function () {\r\n\t\t\tthis.invoke(Logger.WARN, arguments);\r\n\t\t},\r\n\r\n\t\terror: function () {\r\n\t\t\tthis.invoke(Logger.ERROR, arguments);\r\n\t\t},\r\n\r\n\t\ttime: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'start' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\ttimeEnd: function (label) {\r\n\t\t\tif (typeof label === 'string' && label.length > 0) {\r\n\t\t\t\tthis.invoke(Logger.TIME, [ label, 'end' ]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Invokes the logger callback if it's not being filtered.\r\n\t\tinvoke: function (level, msgArgs) {\r\n\t\t\tif (logHandler && this.enabledFor(level)) {\r\n\t\t\t\tlogHandler(msgArgs, merge({ level: level }, this.context));\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Protected instance which all calls to the to level `Logger` module will be routed through.\r\n\tvar globalLogger = new ContextualLogger({ filterLevel: Logger.OFF });\r\n\r\n\t// Configure the global Logger instance.\r\n\t(function() {\r\n\t\t// Shortcut for optimisers.\r\n\t\tvar L = Logger;\r\n\r\n\t\tL.enabledFor = bind(globalLogger, globalLogger.enabledFor);\r\n\t\tL.debug = bind(globalLogger, globalLogger.debug);\r\n\t\tL.time = bind(globalLogger, globalLogger.time);\r\n\t\tL.timeEnd = bind(globalLogger, globalLogger.timeEnd);\r\n\t\tL.info = bind(globalLogger, globalLogger.info);\r\n\t\tL.warn = bind(globalLogger, globalLogger.warn);\r\n\t\tL.error = bind(globalLogger, globalLogger.error);\r\n\r\n\t\t// Don't forget the convenience alias!\r\n\t\tL.log = L.info;\r\n\t}());\r\n\r\n\t// Set the global logging handler. The supplied function should expect two arguments, the first being an arguments\r\n\t// object with the supplied log messages and the second being a context object which contains a hash of stateful\r\n\t// parameters which the logging function can consume.\r\n\tLogger.setHandler = function (func) {\r\n\t\tlogHandler = func;\r\n\t};\r\n\r\n\t// Sets the global logging filter level which applies to *all* previously registered, and future Logger instances.\r\n\t// (note that named loggers (retrieved via `Logger.get`) can be configured independently if required).\r\n\tLogger.setLevel = function(level) {\r\n\t\t// Set the globalLogger's level.\r\n\t\tglobalLogger.setLevel(level);\r\n\r\n\t\t// Apply this level to all registered contextual loggers.\r\n\t\tfor (var key in contextualLoggersByNameMap) {\r\n\t\t\tif (contextualLoggersByNameMap.hasOwnProperty(key)) {\r\n\t\t\t\tcontextualLoggersByNameMap[key].setLevel(level);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Gets the global logging filter level\r\n\tLogger.getLevel = function() {\r\n\t\treturn globalLogger.getLevel();\r\n\t};\r\n\r\n\t// Retrieve a ContextualLogger instance. Note that named loggers automatically inherit the global logger's level,\r\n\t// default context and log handler.\r\n\tLogger.get = function (name) {\r\n\t\t// All logger instances are cached so they can be configured ahead of use.\r\n\t\treturn contextualLoggersByNameMap[name] ||\r\n\t\t\t(contextualLoggersByNameMap[name] = new ContextualLogger(merge({ name: name }, globalLogger.context)));\r\n\t};\r\n\r\n\t// CreateDefaultHandler returns a handler function which can be passed to `Logger.setHandler()` which will\r\n\t// write to the window's console object (if present); the optional options object can be used to customise the\r\n\t// formatter used to format each log message.\r\n\tLogger.createDefaultHandler = function (options) {\r\n\t\toptions = options || {};\r\n\r\n\t\toptions.formatter = options.formatter || function defaultMessageFormatter(messages, context) {\r\n\t\t\t// Prepend the logger's name to the log message for easy identification.\r\n\t\t\tif (context.name) {\r\n\t\t\t\tmessages.unshift(\"[\" + context.name + \"]\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Map of timestamps by timer labels used to track `#time` and `#timeEnd()` invocations in environments\r\n\t\t// that don't offer a native console method.\r\n\t\tvar timerStartTimeByLabelMap = {};\r\n\r\n\t\t// Support for IE8+ (and other, slightly more sane environments)\r\n\t\tvar invokeConsoleMethod = function (hdlr, messages) {\r\n\t\t\tFunction.prototype.apply.call(hdlr, console, messages);\r\n\t\t};\r\n\r\n\t\t// Check for the presence of a logger.\r\n\t\tif (typeof console === \"undefined\") {\r\n\t\t\treturn function () { /* no console */ };\r\n\t\t}\r\n\r\n\t\treturn function(messages, context) {\r\n\t\t\t// Convert arguments object to Array.\r\n\t\t\tmessages = Array.prototype.slice.call(messages);\r\n\r\n\t\t\tvar hdlr = console.log;\r\n\t\t\tvar timerLabel;\r\n\r\n\t\t\tif (context.level === Logger.TIME) {\r\n\t\t\t\ttimerLabel = (context.name ? '[' + context.name + '] ' : '') + messages[0];\r\n\r\n\t\t\t\tif (messages[1] === 'start') {\r\n\t\t\t\t\tif (console.time) {\r\n\t\t\t\t\t\tconsole.time(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttimerStartTimeByLabelMap[timerLabel] = new Date().getTime();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (console.timeEnd) {\r\n\t\t\t\t\t\tconsole.timeEnd(timerLabel);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tinvokeConsoleMethod(hdlr, [ timerLabel + ': ' +\r\n\t\t\t\t\t\t\t(new Date().getTime() - timerStartTimeByLabelMap[timerLabel]) + 'ms' ]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// Delegate through to custom warn/error loggers if present on the console.\r\n\t\t\t\tif (context.level === Logger.WARN && console.warn) {\r\n\t\t\t\t\thdlr = console.warn;\r\n\t\t\t\t} else if (context.level === Logger.ERROR && console.error) {\r\n\t\t\t\t\thdlr = console.error;\r\n\t\t\t\t} else if (context.level === Logger.INFO && console.info) {\r\n\t\t\t\t\thdlr = console.info;\r\n\t\t\t\t} else if (context.level === Logger.DEBUG && console.debug) {\r\n\t\t\t\t\thdlr = console.debug;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toptions.formatter(messages, context);\r\n\t\t\t\tinvokeConsoleMethod(hdlr, messages);\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t// Configure and example a Default implementation which writes to the `window.console` (if present). The\r\n\t// `options` hash can be used to configure the default logLevel and provide a custom message formatter.\r\n\tLogger.useDefaults = function(options) {\r\n\t\tLogger.setLevel(options && options.defaultLevel || Logger.DEBUG);\r\n\t\tLogger.setHandler(Logger.createDefaultHandler(options));\r\n\t};\r\n\r\n\t// Export to popular environments boilerplate.\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine(Logger);\r\n\t}\r\n\telse if (typeof module !== 'undefined' && module.exports) {\r\n\t\tmodule.exports = Logger;\r\n\t}\r\n\telse {\r\n\t\tLogger._prevLogger = global.Logger;\r\n\r\n\t\tLogger.noConflict = function () {\r\n\t\t\tglobal.Logger = Logger._prevLogger;\r\n\t\t\treturn Logger;\r\n\t\t};\r\n\r\n\t\tglobal.Logger = Logger;\r\n\t}\r\n}(this));\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/js-logger/src/logger.js\n// module id = 6\n// module chunks = 0 1 2","//@flow\nimport MultiRequestBuilder from '../../common/multi-request-builder';\nimport OVPConfiguration from '../config';\n\nconst SERVICE_NAME: string = 'multirequest';\n\nexport default class OVPService {\n /**\n * Gets a new instance of MultiRequestBuilder with ovp params\n * @function getMultiRequest\n * @param {string} playerVersion The player version\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n static getMultiRequest(playerVersion: string, ks: string, partnerId?: number): MultiRequestBuilder {\n const config = OVPConfiguration.get();\n const ovpParams = config.serviceParams;\n Object.assign(ovpParams, {ks: ks, clientTag: 'html5:v' + playerVersion});\n if (partnerId) {\n Object.assign(ovpParams, {partnerId: partnerId});\n }\n const headers: Map = new Map();\n headers.set('Content-Type', 'application/json');\n const multiReq = new MultiRequestBuilder(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ovpParams;\n return multiReq;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/ovp-service.js","const param = a => {\n let s = [],\n rbracket = /\\[\\]$/,\n isArray = function(obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n },\n add = function(k, v) {\n v = typeof v === 'function' ? v() : v === null ? '' : v === undefined ? '' : v;\n s[s.length] = encodeURIComponent(k) + '=' + encodeURIComponent(v);\n },\n buildParams = function(prefix, obj) {\n let i, len, key;\n\n if (prefix) {\n if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n if (rbracket.test(prefix)) {\n add(prefix, obj[i]);\n } else {\n buildParams(prefix + ':' + (typeof obj[i] === 'object' ? i : ''), obj[i]);\n }\n }\n } else if (obj && String(obj) === '[object Object]') {\n for (key in obj) {\n buildParams(prefix + ':' + key, obj[key]);\n }\n } else {\n add(prefix, obj);\n }\n } else if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n add(obj[i].name, obj[i].value);\n }\n } else {\n for (key in obj) {\n buildParams(key, obj[key]);\n }\n }\n return s;\n };\n\n return buildParams('', a)\n .join('&')\n .replace(/%20/g, '+');\n};\n\nexport {param};\n\n\n\n// WEBPACK FOOTER //\n// ./util/param.js","//@flow\nimport OVPService from '../ovp-service';\nimport RequestBuilder from '../../../../util/request-builder';\nimport OVPConfiguration from '../../config';\nimport {param} from '../../../../util/param';\n\nconst SERVICE_NAME: string = 'stats';\n\nexport default class OVPStatsService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for stats.collect\n * @function collect\n * @param {string} serviceUrl - The service base url\n * @param {string} ks - The ks\n * @param {string} playerVersion - The player version\n * @param {Object} event - The event data\n * @returns {RequestBuilder} - The request builder\n * @static\n */\n static collect(serviceUrl: string, ks: string, playerVersion: string, event: Object): RequestBuilder {\n const ovpParams = OVPConfiguration.get();\n const serviceParams = {};\n Object.assign(serviceParams, ovpParams.serviceParams, {ks: ks, clientTag: 'html5:v' + playerVersion}, event);\n const request = new RequestBuilder();\n request.service = SERVICE_NAME;\n request.action = 'collect';\n request.method = 'GET';\n request.tag = 'stats-collect';\n request.params = serviceParams;\n request.url = serviceUrl + '?service=' + request.service + '&action=' + request.action + '&' + param(request.params);\n return request;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/stats/stats-service.js","// @flow\nimport RequestBuilder from '../../../../util/request-builder';\nimport OVPConfiguration from '../../config';\nimport OVPStatsService from './stats-service';\n\ndeclare var __VERSION__: string;\ndeclare var __NAME__: string;\n\nconst NAME = __NAME__ + '-stats-service';\nconst VERSION = __VERSION__;\n\nexport {OVPStatsService, OVPConfiguration, RequestBuilder, NAME, VERSION};\n\n\n\n// WEBPACK FOOTER //\n// ./k-provider/ovp/services/stats/index.js"],"sourceRoot":""} \ No newline at end of file diff --git a/flow-typed/types/network-retry-parameters.js b/flow-typed/types/network-retry-parameters.js new file mode 100644 index 00000000..2560e1a5 --- /dev/null +++ b/flow-typed/types/network-retry-parameters.js @@ -0,0 +1,5 @@ +// @flow +declare type ProviderNetworkRetryParameters = { + timeout?: number, + maxAttempts?: number +}; diff --git a/flow-typed/types/provider-options.js b/flow-typed/types/provider-options.js index 00f8905a..bde85fc4 100644 --- a/flow-typed/types/provider-options.js +++ b/flow-typed/types/provider-options.js @@ -5,5 +5,6 @@ declare type ProviderOptionsObject = { ks?: string, uiConfId?: number, env?: ProviderEnvConfigObject, + networkRetryParameters: ProviderNetworkRetryParameters, filterOptions?: ProviderFilterOptionsObject }; diff --git a/src/k-provider/common/data-loader-manager.js b/src/k-provider/common/data-loader-manager.js index edb82112..17395d0f 100644 --- a/src/k-provider/common/data-loader-manager.js +++ b/src/k-provider/common/data-loader-manager.js @@ -1,5 +1,6 @@ // @flow import MultiRequestBuilder, {MultiRequestResult} from './multi-request-builder'; +import Error from '../../util/error/error'; export default class DataLoaderManager { /** @@ -28,6 +29,15 @@ export default class DataLoaderManager { */ _loaders: Map = new Map(); + _networkRetryConfig: ProviderNetworkRetryParameters = { + timeout: 0, + maxAttempts: 4 + }; + + constructor(networkRetryConfig?: ProviderNetworkRetryParameters) { + Object.assign(this._networkRetryConfig, networkRetryConfig); + } + /** * Add loader too execution loaders map * @function @@ -43,6 +53,7 @@ export default class DataLoaderManager { let startIndex = this._multiRequest.requests.length; // Get the requests let requests = execution_loader.requests; + this._multiRequest.retryConfig = this._networkRetryConfig; // Add requests to muktiRequest queue requests.forEach(request => { this._multiRequest.add(request); @@ -62,17 +73,17 @@ export default class DataLoaderManager { fetchData(): Promise { return new Promise((resolve, reject) => { this._multiRequest.execute().then( - response => { - this._multiResponse = response; - if (!response.success) { - reject(response); + data => { + this._multiResponse = data.response; + let preparedData: Object = this.prepareData(data.response); + if (preparedData.success) { + resolve(this._loaders); } else { - let preparedData: Object = this.prepareData(response); - if (preparedData.success) { - resolve(this._loaders); - } else { - reject({success: false, data: preparedData.error}); - } + reject( + new Error(Error.Severity.CRITICAL, Error.Category.NETWORK, Error.Code.API_RESPONSE_MISMATCH, { + headers: data.headers + }) + ); } }, err => { diff --git a/src/k-provider/common/multi-request-builder.js b/src/k-provider/common/multi-request-builder.js index 79a8a2ce..3ca58aaa 100644 --- a/src/k-provider/common/multi-request-builder.js +++ b/src/k-provider/common/multi-request-builder.js @@ -2,15 +2,15 @@ import RequestBuilder from '../../util/request-builder'; import getLogger from '../../util/logger'; import ServiceResult from './base-service-result'; +import Error from '../../util/error/error'; export default class MultiRequestBuilder extends RequestBuilder { static _logger = getLogger('MultiRequestBuilder'); /** - * @member - Array of requests + * @memberof - MultiRequestBuilder * @type {Array} */ requests: Array = []; - /** * Adds request to requests array * @function add @@ -41,11 +41,24 @@ export default class MultiRequestBuilder extends RequestBuilder { return new Promise((resolve, reject) => { this.doHttpRequest().then( data => { - resolve(new MultiRequestResult(data)); + const multiRequestResult = new MultiRequestResult(data); + if (multiRequestResult.success) { + resolve({ + headers: this.responseHeaders, + response: multiRequestResult + }); + } else { + reject( + new Error(Error.Severity.CRITICAL, Error.Category.NETWORK, Error.Code.MULTIREQUEST_API_ERROR, { + url: this.url, + headers: this.responseHeaders, + results: multiRequestResult.results + }) + ); + } }, err => { - const errorText: string = `Error on multiRequest execution, error <${err}>.`; - reject(errorText); + reject(err); } ); }); @@ -55,16 +68,15 @@ export default class MultiRequestBuilder extends RequestBuilder { export class MultiRequestResult { static _logger = getLogger('MultiRequestResult'); /** - * @member - Is success + * @memberof MultiRequestResult * @type {boolean} */ success: boolean; /** - * @member - Multi request response data + * @memberof MultiRequestResult * @type {Object} */ results: Array = []; - /** * @constructor * @param {Object} response data diff --git a/src/k-provider/ott/loaders/data-loader-manager.js b/src/k-provider/ott/loaders/data-loader-manager.js index f6b2b1b6..29a2e2d5 100644 --- a/src/k-provider/ott/loaders/data-loader-manager.js +++ b/src/k-provider/ott/loaders/data-loader-manager.js @@ -1,15 +1,15 @@ // @flow import DataLoaderManager from '../../common/data-loader-manager'; import OTTService from '../services/ott-service'; - +/** + * OTTDataLoaderManager is a class that handles the OTT data loading + * @param {string} partnerId - partner id + * @param {string} ks - ks + * @param {ProviderNetworkRetryParameters} [networkRetryConfig] - network retry configuration + */ export default class OTTDataLoaderManager extends DataLoaderManager { - /** - * @constructor - * @param {string} partnerId - partner id - * @param {string} ks - ks - */ - constructor(partnerId: number, ks: string = '') { - super(); + constructor(partnerId: number, ks: string = '', networkRetryConfig?: ProviderNetworkRetryParameters) { + super(networkRetryConfig); this._multiRequest = OTTService.getMultiRequest(ks, partnerId); } } diff --git a/src/k-provider/ott/provider.js b/src/k-provider/ott/provider.js index bc4390bf..8171add6 100644 --- a/src/k-provider/ott/provider.js +++ b/src/k-provider/ott/provider.js @@ -11,6 +11,7 @@ import KalturaPlaybackContext from './response-types/kaltura-playback-context'; import MediaEntry from '../../entities/media-entry'; export default class OTTProvider extends BaseProvider { + _networkRetryConfig: ProviderNetworkRetryParameters; /** * @constructor * @param {ProviderOptionsObject} options - provider options @@ -20,6 +21,7 @@ export default class OTTProvider extends BaseProvider { const entryId = mediaInfo.entryId; if (entryId) { diff --git a/src/k-provider/ovp/loaders/data-loader-manager.js b/src/k-provider/ovp/loaders/data-loader-manager.js index 70e17f73..7ebd5530 100644 --- a/src/k-provider/ovp/loaders/data-loader-manager.js +++ b/src/k-provider/ovp/loaders/data-loader-manager.js @@ -2,15 +2,16 @@ import DataLoaderManager from '../../common/data-loader-manager'; import OVPService from '../services/ovp-service'; +/** + * OTTDataLoaderManager is a class that handles the OVP data loading + * @param {string} playerVersion - player version + * @param {string} partnerId - partner id + * @param {string} ks - ks + * @param {ProviderNetworkRetryParameters} [networkRetryConfig] - network retry configuration + */ export default class OVPDataLoaderManager extends DataLoaderManager { - /** - * @constructor - * @param {string} playerVersion - player version - * @param {string} partnerId - partner id - * @param {string} ks - ks - */ - constructor(playerVersion: string, partnerId: number, ks: string = '') { - super(); + constructor(playerVersion: string, partnerId: number, ks: string = '', networkRetryConfig?: ProviderNetworkRetryParameters) { + super(networkRetryConfig); this._multiRequest = OVPService.getMultiRequest(playerVersion, ks, partnerId); } } diff --git a/src/k-provider/ovp/provider.js b/src/k-provider/ovp/provider.js index d1a66279..1d78c0b4 100644 --- a/src/k-provider/ovp/provider.js +++ b/src/k-provider/ovp/provider.js @@ -12,7 +12,7 @@ import OVPEntryListLoader from './loaders/entry-list-loader'; export default class OVPProvider extends BaseProvider { _filterOptionsConfig: ProviderFilterOptionsObject = {redirectFromEntryId: true}; - + _networkRetryConfig: ProviderNetworkRetryParameters; /** * @constructor * @param {ProviderOptionsObject} options - provider options @@ -22,6 +22,7 @@ export default class OVPProvider extends BaseProvider { super(options, playerVersion); this._logger = getLogger('OVPProvider'); OVPConfiguration.set(options.env); + this._networkRetryConfig = options.networkRetryParameters; this._setFilterOptionsConfig(options.filterOptions); } @@ -34,7 +35,7 @@ export default class OVPProvider extends BaseProvider { if (mediaInfo.ks) { this.ks = mediaInfo.ks; } - this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks); + this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks, this._networkRetryConfig); return new Promise((resolve, reject) => { const entryId = mediaInfo.entryId; if (entryId) { @@ -119,7 +120,7 @@ export default class OVPProvider extends BaseProvider { if (playlistInfo.ks) { this.ks = playlistInfo.ks; } - this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks); + this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks, this._networkRetryConfig); return new Promise((resolve, reject) => { const playlistId = playlistInfo.playlistId; if (playlistId) { @@ -172,7 +173,7 @@ export default class OVPProvider extends BaseProvider { if (entryListInfo.ks) { this.ks = entryListInfo.ks; } - this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks); + this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks, this._networkRetryConfig); return new Promise((resolve, reject) => { const entries = entryListInfo.entries; if (entries && entries.length) { diff --git a/src/util/error/category.js b/src/util/error/category.js new file mode 100644 index 00000000..8a042d01 --- /dev/null +++ b/src/util/error/category.js @@ -0,0 +1,10 @@ +//@flow +type CategoryType = {[category: string]: number}; + +const Category: CategoryType = { + /** Errors from the network stack. */ + NETWORK: 1 +}; + +export {Category}; +export type {CategoryType}; diff --git a/src/util/error/code.js b/src/util/error/code.js new file mode 100644 index 00000000..0a835cf2 --- /dev/null +++ b/src/util/error/code.js @@ -0,0 +1,48 @@ +//@flow + +type CodeType = {[code: string]: number}; + +const Code: CodeType = { + /** + * A network request was made using an unsupported URI scheme. + */ + UNSUPPORTED_SCHEME: 1000, + + /** + * An HTTP network request returned an HTTP status that indicated a failure. + */ + BAD_HTTP_STATUS: 1001, + + /** + * An HTTP network request failed with an error, but not from the server. + */ + HTTP_ERROR: 1002, + + /** + * A network request timed out. + */ + TIMEOUT: 1003, + + /** + * A network request was made with a malformed data URI. + */ + MALFORMED_DATA_URI: 1004, + + /** + * The server responsded with 2xx response, but it couldn't be parsed + */ + BAD_SERVER_RESPONSE: 1005, + + /** + * The server response had a valid structure but contained an error from the API + */ + MULTIREQUEST_API_ERROR: 1006, + + /** + * The server response had a valid structure and valid API result, but it did not match the request + */ + API_RESPONSE_MISMATCH: 1007 +}; + +export {Code}; +export type {CodeType}; diff --git a/src/util/error/error.js b/src/util/error/error.js new file mode 100644 index 00000000..dcca420e --- /dev/null +++ b/src/util/error/error.js @@ -0,0 +1,50 @@ +//@flow +import getLogger, {getLogLevel, LogLevel} from '../logger'; +import {Severity} from './severity'; +import type {SeverityType} from './severity'; +import {Code} from './code'; +import type {CodeType} from './code'; +import {Category} from './category'; +import type {CategoryType} from './category'; + +const CLASS_NAME: string = 'Error'; + +/** + * @classdesc This is a description of the error class. + */ +export default class Error { + severity: number; + category: number; + code: number; + data: any; + /** + * @enum {number} + */ + static Severity: SeverityType = Severity; + /** + * @enum {number} + */ + static Category: CategoryType = Category; + /** + * @enum {number} + */ + static Code: CodeType = Code; + static _logger: any = getLogger(CLASS_NAME); + + /** + * @constructor + * @param {number} severity - error's severity + * @param {number} category - error's category. + * @param {number} code - error's code. + * @param {any} data - additional data for the error. + */ + constructor(severity: number, category: number, code: number, data: any = {}) { + this.severity = severity; + this.category = category; + this.code = code; + this.data = data; + if (getLogLevel(CLASS_NAME) !== LogLevel.OFF) { + Error._logger.error(`Category:${category} | Code:${code} |`, data); + } + } +} diff --git a/src/util/error/severity.js b/src/util/error/severity.js new file mode 100644 index 00000000..1fe2973d --- /dev/null +++ b/src/util/error/severity.js @@ -0,0 +1,23 @@ +//@flow + +type SeverityType = {[severity: string]: number}; + +const Severity: SeverityType = { + /** + * An error occurred, but the Player is attempting to recover from the error. + * + * If the Player cannot ultimately recover, it still may not throw a CRITICAL + * error. For example, retrying for a media segment will never result in + * a CRITICAL error (the Player will just retry forever). + */ + RECOVERABLE: 1, + /** + * A critical error that the library cannot recover from. These usually cause + * the Player to stop loading or updating. A new manifest must be loaded + * to reset the library. + */ + CRITICAL: 2 +}; + +export {Severity}; +export type {SeverityType}; diff --git a/src/util/request-builder.js b/src/util/request-builder.js index 5844e310..1fa57943 100644 --- a/src/util/request-builder.js +++ b/src/util/request-builder.js @@ -1,4 +1,8 @@ //@flow +import Error from './error/error'; + +const KALTURA_HEADER_PREFIX: string = 'x-'; + export default class RequestBuilder { /** * @member - Service name @@ -16,25 +20,52 @@ export default class RequestBuilder { */ params: any; /** - * @member - Service headers + * @memberof - Service headers * @type {Map} */ headers: Map; /** - * @member - Service URL + * @memberof - Service URL * @type {string} */ url: string; /** - * @member - Service method (POST,GET,DELETE etc..) + * @memberof - Service method (POST,GET,DELETE etc..) * @type {string} */ method: string; /** - * @member - Service tag + * @memberof - Service tag * @type {string} */ tag: string; + /** + * @memberof - the response headers of the arra + * @type {Array} + */ + responseHeaders: Array; + /** + * @description network retry configuration + * @memberof RequestBuilder + * @type {ProviderNetworkRetryParameters} + */ + retryConfig: ProviderNetworkRetryParameters; + + /** + * @description number of xhr attempts for the same multi - request. + * @memberof RequestBuilder + * @type {number} + * @private + */ + _attemptCounter: number = 1; + + /** + * @description hold the promise result of the XHR request(s) - if all tries fails, it rejects with the error. + * @memberof RequestBuilder + * @type {Object} + * @private + */ + _requestPromise: Object; /** * @constructor @@ -60,32 +91,91 @@ export default class RequestBuilder { * @returns {Promise.} Service response as promise */ doHttpRequest(): Promise { + const promise = new Promise((resolve, reject) => { + this._requestPromise = { + resolve, + reject + }; + }); if (!this.url) { - throw new Error('serviceUrl is mandatory for request builder'); + this._requestPromise.reject( + new Error(Error.Severity.CRITICAL, Error.Category.NETWORK, Error.Code.MALFORMED_DATA_URI, { + url: this.url + }) + ); } + this._createXHR(); + return promise; + } + + _createXHR(): void { let request = new XMLHttpRequest(); - return new Promise((resolve, reject) => { - request.onreadystatechange = function() { - if (request.readyState === 4) { - if (request.status === 200) { - let jsonResponse; - try { - jsonResponse = JSON.parse(request.responseText); - } catch (e) { - return reject(`${e.message}, ${request.responseText}`); - } - if (jsonResponse && typeof jsonResponse === 'object' && jsonResponse.code && jsonResponse.message) reject(jsonResponse); - else resolve(jsonResponse); - } else { - reject(request.responseText); + request.onreadystatechange = () => { + if (request.readyState === 4) { + if (request.status === 200) { + try { + const response = JSON.parse(request.responseText); + this.responseHeaders = this._getResponseHeaders(request); + // the promise returns the response for backwards compatibility + return this._requestPromise.resolve(response); + } catch (error) { + this._requestPromise.reject( + this._createError(request, Error.Code.BAD_SERVER_RESPONSE, { + text: request.responseText + }) + ); } } - }; - request.open(this.method, this.url); - this.headers.forEach((value, key) => { - request.setRequestHeader(key, value); + } + }; + request.open(this.method, this.url); + request.timeout = this.retryConfig.timeout || 0; + const requestTime = performance.now(); + request.ontimeout = () => { + this._handleError(request, Error.Code.TIMEOUT, { + timeout: (performance.now() - requestTime) / 1000, + statusText: request.statusText }); - request.send(this.params); + }; + request.onerror = request.onabort = () => { + this._handleError(request, Error.Code.HTTP_ERROR, { + text: request.responseText, + statusText: request.statusText + }); + }; + this.headers.forEach((value, key) => { + request.setRequestHeader(key, value); + }); + request.send(this.params); + } + + _getResponseHeaders(request: XMLHttpRequest): Array { + return request + .getAllResponseHeaders() + .split('\n') + .filter(header => header.toLowerCase().indexOf(KALTURA_HEADER_PREFIX) === 0); + } + + _handleError(request: XMLHttpRequest, code: number, data: Object): Promise<*> | void { + const error = this._createError(request, code, data); + request.onreadystatechange = function() {}; + request.onerror = function() {}; + request.ontimeout = function() {}; + request.onabort = function() {}; + if (this.retryConfig.maxAttempts && this._attemptCounter < this.retryConfig.maxAttempts) { + this._attemptCounter++; + this._createXHR(); + } else { + return this._requestPromise.reject(error); + } + } + + _createError(request: XMLHttpRequest, code: number, data: Object): Error { + Object.assign(data, { + url: this.url, + headers: this._getResponseHeaders(request), + attempt: this._attemptCounter }); + return new Error(Error.Severity.CRITICAL, Error.Category.NETWORK, code, data); } } diff --git a/test/src/k-provider/ott/be-data.js b/test/src/k-provider/ott/be-data.js index 36e9fe6b..deb8a1eb 100644 --- a/test/src/k-provider/ott/be-data.js +++ b/test/src/k-provider/ott/be-data.js @@ -1,1161 +1,1168 @@ const AnonymousEntryWithoutUIConfWithDrmData = { - result: [ - { - ks: - 'djJ8MTk4fHFNlNTFP8NV_WXoPn3CJnQRIJhCe4zD9g5voCHCgHJRanv2ubEBLLl9Gb13CxfBTGWZpTP_pD_fOirT3-L4F0kDIdJRrkShBxjuRI1-0nz2ublJJd48QKzLAqW79y7Lzoj6ngfv1uHGC7xxPtUqcSw=', - refreshToken: '261623e4a727475a99898a0b7a39febf', - objectType: 'KalturaLoginSession' - }, - { - catchUpBuffer: 0, - trickPlayBuffer: 0, - enableRecordingPlaybackNonEntitledChannel: false, - entryId: '1_tmeqe2n9', - id: 480097, - type: 420, - name: 'Trolls', - description: - "After the Bergens invade Troll Village, Poppy, the happiest Troll ever born, and the curmudgeonly Branch set off on a journey to rescue her friends. DreamWorks Animation's TROLLS is an irreverent comedy extravaganza with incredible music! From the genius creators of SHREK, TROLLS stars Anna Kendrick as Poppy, the optimistic leader of the Trolls, and her polar opposite, Branch, played by Justin Timberlake. Together, this unlikely pair of Trolls must embark on an adventure that takes them far beyond the only world they've ever known.", - images: [ - { - ratio: '16:9', - width: 153, - height: 86, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/153/height/86/quality/100', - version: 3, - id: 'afa4d5c3b56c4476baca9897873d4a34_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 302, - height: 170, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/302/height/170/quality/100', - version: 3, - id: 'afa4d5c3b56c4476baca9897873d4a34_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 568, - height: 320, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/568/height/320/quality/100', - version: 3, - id: 'afa4d5c3b56c4476baca9897873d4a34_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 960, - height: 540, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/960/height/540/quality/100', - version: 3, - id: 'afa4d5c3b56c4476baca9897873d4a34_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 1280, - height: 720, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/1280/height/720/quality/100', - version: 3, - id: 'afa4d5c3b56c4476baca9897873d4a34_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 2048, - height: 1152, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/2048/height/1152/quality/100', - version: 3, - id: 'afa4d5c3b56c4476baca9897873d4a34_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '2:3', - width: 103, - height: 154, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/d3d223391f314cab814d06b8c85682a5_2/version/0/width/103/height/154/quality/100', - version: 0, - id: 'd3d223391f314cab814d06b8c85682a5_2', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '2:3', - width: 149, - height: 223, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/d3d223391f314cab814d06b8c85682a5_2/version/0/width/149/height/223/quality/100', - version: 0, - id: 'd3d223391f314cab814d06b8c85682a5_2', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '2:3', - width: 212, - height: 318, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/d3d223391f314cab814d06b8c85682a5_2/version/0/width/212/height/318/quality/100', - version: 0, - id: 'd3d223391f314cab814d06b8c85682a5_2', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '2:3', - width: 355, - height: 534, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/d3d223391f314cab814d06b8c85682a5_2/version/0/width/355/height/534/quality/100', - version: 0, - id: 'd3d223391f314cab814d06b8c85682a5_2', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '2:3', - width: 800, - height: 1111, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/d3d223391f314cab814d06b8c85682a5_2/version/0/width/800/height/1111/quality/100', - version: 0, - id: 'd3d223391f314cab814d06b8c85682a5_2', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '2:3', - width: 600, - height: 900, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/d3d223391f314cab814d06b8c85682a5_2/version/0/width/600/height/900/quality/100', - version: 0, - id: 'd3d223391f314cab814d06b8c85682a5_2', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 282, - height: 158, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/282/height/158/quality/100', - version: 3, - id: 'afa4d5c3b56c4476baca9897873d4a34_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '2:3', - width: 180, - height: 270, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/d3d223391f314cab814d06b8c85682a5_2/version/0/width/180/height/270/quality/100', - version: 0, - id: 'd3d223391f314cab814d06b8c85682a5_2', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 105, - height: 80, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/105/height/80/quality/100', - version: 3, - id: 'afa4d5c3b56c4476baca9897873d4a34_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 195, - height: 150, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/195/height/150/quality/100', - version: 3, - id: 'afa4d5c3b56c4476baca9897873d4a34_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 105, - height: 55, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/105/height/55/quality/100', - version: 3, - id: 'afa4d5c3b56c4476baca9897873d4a34_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 70, - height: 52, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/70/height/52/quality/100', - version: 3, - id: 'afa4d5c3b56c4476baca9897873d4a34_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 590, - height: 445, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/590/height/445/quality/100', - version: 3, - id: 'afa4d5c3b56c4476baca9897873d4a34_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 300, - height: 250, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/300/height/250/quality/100', - version: 3, - id: 'afa4d5c3b56c4476baca9897873d4a34_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '2:1', - width: 200, - height: 100, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/0d4ddd6656714d4cb0334530a57d1a1a_17/version/0/width/200/height/100/quality/100', - version: 0, - id: '0d4ddd6656714d4cb0334530a57d1a1a_17', - isDefault: true, - objectType: 'KalturaMediaImage' - }, - { - ratio: '4:3', - width: 400, - height: 300, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/b379e398d9ef4a31827fa1c10aa10f47_3/version/0/width/400/height/300/quality/100', - version: 0, - id: 'b379e398d9ef4a31827fa1c10aa10f47_3', - isDefault: true, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 1080, - height: 1960, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/1080/height/1960/quality/100', - version: 3, - id: 'afa4d5c3b56c4476baca9897873d4a34_1', - isDefault: false, - objectType: 'KalturaMediaImage' - } - ], - mediaFiles: [ - { - assetId: 480097, - id: 728179, - type: 'Mobile_Devices_Main_HD', - url: - 'http://cdnapi.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/applehttp/tags/ipadnew/protocol/http/f/a.m3u8', - duration: 123000, - externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77', - objectType: 'KalturaMediaFile' - }, - { - assetId: 480097, - id: 728180, - type: 'Mobile_Devices_Main_HD_Dash', - url: 'https://cdnapisec.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/mpegdash/tags/dash/protocol/http/f/a.mpd', - duration: 123000, - externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77,1_tmeqe2n9_1_m1ycz1cx', - objectType: 'KalturaMediaFile' - }, - { - assetId: 480097, - id: 728181, - type: 'Mobile_Devices_Main_SD_Dash', - url: 'http://cdnapi.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/mpegdash/tags/dash/protocol/http/f/a.mpd', - duration: 123000, - externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77,1_tmeqe2n9_1_m1ycz1cx', - objectType: 'KalturaMediaFile' - }, - { - assetId: 480097, - id: 728182, - type: 'Mobile_Devices_Main_SD_FP', - url: - 'http://cdnapi.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/applehttp/tags/ipadnew/protocol/http/f/a.m3u8', - duration: 123000, - externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77', - objectType: 'KalturaMediaFile' - }, - { - assetId: 480097, - id: 728183, - type: 'Mobile_Devices_Main_HD_FP', - url: - 'https://cdnapisec.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/applehttp/tags/ipadnew/protocol/http/f/a.m3u8', - duration: 123000, - externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77', - objectType: 'KalturaMediaFile' - }, - { - assetId: 480097, - id: 728184, - type: 'Web_HD_Dash', - url: - 'https://cdnapisec.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/mpegdash/tags/dash/protocol/https/f/a.mpd', - duration: 123000, - externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77,1_tmeqe2n9_1_m1ycz1cx', - objectType: 'KalturaMediaFile' - }, - { - assetId: 480097, - id: 728185, - type: 'Web_HD_FP', - url: - 'https://cdnapisec.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/applehttp/tags/ipadnew/protocol/https/f/a.m3u8', - duration: 123000, - externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77', - objectType: 'KalturaMediaFile' - }, - { - assetId: 480097, - id: 728186, - type: 'Web HD', - url: - 'https://cdnapisec.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/applehttp/tags/ipadnew/protocol/https/f/a.m3u8', - duration: 123000, - externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77', - objectType: 'KalturaMediaFile' - }, - { - assetId: 480097, - id: 728187, - type: 'Mobile_Devices_Main_Download', - url: 'https://cdnapisec.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/mpegdash/tags/dash/protocol/http/f/a.mpd', - duration: 123000, - externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77,1_tmeqe2n9_1_m1ycz1cx', - objectType: 'KalturaMediaFile' - }, - { - assetId: 480097, - id: 728188, - type: 'Mobile_Devices_Main_SD', - url: 'https://cdnapisec.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/url/tags/widevine/protocol/http/f/a.wvm', - duration: 123000, - externalId: '1_tmeqe2n9_1_9crpi8m5,1_tmeqe2n9_1_r64bcvp1', - objectType: 'KalturaMediaFile' - } - ], - metas: { - synopsis: {value: '', objectType: 'KalturaMultilingualStringValue'}, - 'Short title': {value: '', objectType: 'KalturaMultilingualStringValue'}, - Runtime: {value: '92', objectType: 'KalturaMultilingualStringValue'}, - 'Catchup logo URL': {value: '', objectType: 'KalturaMultilingualStringValue'}, - 'App Link': {value: '', objectType: 'KalturaMultilingualStringValue'}, - Country: {value: '', objectType: 'KalturaMultilingualStringValue'}, - QUALITY: {value: '', objectType: 'KalturaMultilingualStringValue'}, - 'Epg ID': {value: '', objectType: 'KalturaMultilingualStringValue'}, - 'Release year': {value: 2017, objectType: 'KalturaDoubleValue'}, - 'Catchup allowed': {value: false, objectType: 'KalturaBooleanValue'} + response: { + result: [ + { + ks: + 'djJ8MTk4fHFNlNTFP8NV_WXoPn3CJnQRIJhCe4zD9g5voCHCgHJRanv2ubEBLLl9Gb13CxfBTGWZpTP_pD_fOirT3-L4F0kDIdJRrkShBxjuRI1-0nz2ublJJd48QKzLAqW79y7Lzoj6ngfv1uHGC7xxPtUqcSw=', + refreshToken: '261623e4a727475a99898a0b7a39febf', + objectType: 'KalturaLoginSession' }, - tags: { - Free: { - objects: [ - {value: 'nirit', objectType: 'KalturaMultilingualStringValue'}, - { - value: 'nirit', - objectType: 'KalturaMultilingualStringValue' - }, - {value: 'nirit', objectType: 'KalturaMultilingualStringValue'} - ], - objectType: 'KalturaMultilingualStringValueArray' - }, - Genre: { - objects: [ - {value: 'Comedy', objectType: 'KalturaMultilingualStringValue'}, - { - value: 'Comedy', - objectType: 'KalturaMultilingualStringValue' - }, - {value: 'Comedy', objectType: 'KalturaMultilingualStringValue'}, - { - value: 'Drama', - objectType: 'KalturaMultilingualStringValue' - }, - {value: 'Kids', objectType: 'KalturaMultilingualStringValue'}, - { - value: 'Kids', - objectType: 'KalturaMultilingualStringValue' - }, - {value: 'Kids', objectType: 'KalturaMultilingualStringValue'} - ], - objectType: 'KalturaMultilingualStringValueArray' - }, - 'Main cast': { - objects: [ - { - value: 'Anna Kendrick', - objectType: 'KalturaMultilingualStringValue' - }, - {value: 'Anna Kendrick', objectType: 'KalturaMultilingualStringValue'}, - { - value: 'Anna Kendrick', - objectType: 'KalturaMultilingualStringValue' - }, - {value: 'Justin Timberlake', objectType: 'KalturaMultilingualStringValue'}, - { - value: 'Justin Timberlake', - objectType: 'KalturaMultilingualStringValue' - }, - {value: 'Justin Timberlake', objectType: 'KalturaMultilingualStringValue'} - ], - objectType: 'KalturaMultilingualStringValueArray' - }, - Director: { - objects: [ - { - value: 'Walt Dohrn', - objectType: 'KalturaMultilingualStringValue' - }, - {value: 'Walt Dohrn', objectType: 'KalturaMultilingualStringValue'}, - { - value: 'Walt Dohrn', - objectType: 'KalturaMultilingualStringValue' - } - ], - objectType: 'KalturaMultilingualStringValueArray' - }, - 'Parental Rating': { - objects: [ - { - value: 'PG', - objectType: 'KalturaMultilingualStringValue' - }, - {value: 'Parental - 8', objectType: 'KalturaMultilingualStringValue'} - ], - objectType: 'KalturaMultilingualStringValueArray' - }, - Studio: { - objects: [ - {value: 'Pixar', objectType: 'KalturaMultilingualStringValue'}, - { - value: 'Pixar', - objectType: 'KalturaMultilingualStringValue' - }, - {value: 'Pixar', objectType: 'KalturaMultilingualStringValue'} - ], - objectType: 'KalturaMultilingualStringValueArray' - }, - Country: { - objects: [ - {value: 'USA', objectType: 'KalturaMultilingualStringValue'}, - { - value: 'USA', - objectType: 'KalturaMultilingualStringValue' - }, - {value: 'USA', objectType: 'KalturaMultilingualStringValue'} - ], - objectType: 'KalturaMultilingualStringValueArray' - }, - QUALITY: { - objects: [ - {value: 'hd', objectType: 'KalturaMultilingualStringValue'}, - { - value: 'hd', - objectType: 'KalturaMultilingualStringValue' - }, - {value: 'hd', objectType: 'KalturaMultilingualStringValue'} - ], - objectType: 'KalturaMultilingualStringValueArray' - } + { + catchUpBuffer: 0, + trickPlayBuffer: 0, + enableRecordingPlaybackNonEntitledChannel: false, + entryId: '1_tmeqe2n9', + id: 480097, + type: 420, + name: 'Trolls', + description: + "After the Bergens invade Troll Village, Poppy, the happiest Troll ever born, and the curmudgeonly Branch set off on a journey to rescue her friends. DreamWorks Animation's TROLLS is an irreverent comedy extravaganza with incredible music! From the genius creators of SHREK, TROLLS stars Anna Kendrick as Poppy, the optimistic leader of the Trolls, and her polar opposite, Branch, played by Justin Timberlake. Together, this unlikely pair of Trolls must embark on an adventure that takes them far beyond the only world they've ever known.", + images: [ + { + ratio: '16:9', + width: 153, + height: 86, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/153/height/86/quality/100', + version: 3, + id: 'afa4d5c3b56c4476baca9897873d4a34_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 302, + height: 170, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/302/height/170/quality/100', + version: 3, + id: 'afa4d5c3b56c4476baca9897873d4a34_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 568, + height: 320, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/568/height/320/quality/100', + version: 3, + id: 'afa4d5c3b56c4476baca9897873d4a34_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 960, + height: 540, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/960/height/540/quality/100', + version: 3, + id: 'afa4d5c3b56c4476baca9897873d4a34_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 1280, + height: 720, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/1280/height/720/quality/100', + version: 3, + id: 'afa4d5c3b56c4476baca9897873d4a34_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 2048, + height: 1152, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/2048/height/1152/quality/100', + version: 3, + id: 'afa4d5c3b56c4476baca9897873d4a34_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '2:3', + width: 103, + height: 154, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/d3d223391f314cab814d06b8c85682a5_2/version/0/width/103/height/154/quality/100', + version: 0, + id: 'd3d223391f314cab814d06b8c85682a5_2', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '2:3', + width: 149, + height: 223, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/d3d223391f314cab814d06b8c85682a5_2/version/0/width/149/height/223/quality/100', + version: 0, + id: 'd3d223391f314cab814d06b8c85682a5_2', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '2:3', + width: 212, + height: 318, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/d3d223391f314cab814d06b8c85682a5_2/version/0/width/212/height/318/quality/100', + version: 0, + id: 'd3d223391f314cab814d06b8c85682a5_2', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '2:3', + width: 355, + height: 534, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/d3d223391f314cab814d06b8c85682a5_2/version/0/width/355/height/534/quality/100', + version: 0, + id: 'd3d223391f314cab814d06b8c85682a5_2', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '2:3', + width: 800, + height: 1111, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/d3d223391f314cab814d06b8c85682a5_2/version/0/width/800/height/1111/quality/100', + version: 0, + id: 'd3d223391f314cab814d06b8c85682a5_2', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '2:3', + width: 600, + height: 900, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/d3d223391f314cab814d06b8c85682a5_2/version/0/width/600/height/900/quality/100', + version: 0, + id: 'd3d223391f314cab814d06b8c85682a5_2', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 282, + height: 158, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/282/height/158/quality/100', + version: 3, + id: 'afa4d5c3b56c4476baca9897873d4a34_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '2:3', + width: 180, + height: 270, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/d3d223391f314cab814d06b8c85682a5_2/version/0/width/180/height/270/quality/100', + version: 0, + id: 'd3d223391f314cab814d06b8c85682a5_2', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 105, + height: 80, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/105/height/80/quality/100', + version: 3, + id: 'afa4d5c3b56c4476baca9897873d4a34_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 195, + height: 150, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/195/height/150/quality/100', + version: 3, + id: 'afa4d5c3b56c4476baca9897873d4a34_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 105, + height: 55, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/105/height/55/quality/100', + version: 3, + id: 'afa4d5c3b56c4476baca9897873d4a34_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 70, + height: 52, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/70/height/52/quality/100', + version: 3, + id: 'afa4d5c3b56c4476baca9897873d4a34_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 590, + height: 445, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/590/height/445/quality/100', + version: 3, + id: 'afa4d5c3b56c4476baca9897873d4a34_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 300, + height: 250, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/300/height/250/quality/100', + version: 3, + id: 'afa4d5c3b56c4476baca9897873d4a34_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '2:1', + width: 200, + height: 100, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/0d4ddd6656714d4cb0334530a57d1a1a_17/version/0/width/200/height/100/quality/100', + version: 0, + id: '0d4ddd6656714d4cb0334530a57d1a1a_17', + isDefault: true, + objectType: 'KalturaMediaImage' + }, + { + ratio: '4:3', + width: 400, + height: 300, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/b379e398d9ef4a31827fa1c10aa10f47_3/version/0/width/400/height/300/quality/100', + version: 0, + id: 'b379e398d9ef4a31827fa1c10aa10f47_3', + isDefault: true, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 1080, + height: 1960, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/afa4d5c3b56c4476baca9897873d4a34_1/version/3/width/1080/height/1960/quality/100', + version: 3, + id: 'afa4d5c3b56c4476baca9897873d4a34_1', + isDefault: false, + objectType: 'KalturaMediaImage' + } + ], + mediaFiles: [ + { + assetId: 480097, + id: 728179, + type: 'Mobile_Devices_Main_HD', + url: + 'http://cdnapi.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/applehttp/tags/ipadnew/protocol/http/f/a.m3u8', + duration: 123000, + externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77', + objectType: 'KalturaMediaFile' + }, + { + assetId: 480097, + id: 728180, + type: 'Mobile_Devices_Main_HD_Dash', + url: + 'https://cdnapisec.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/mpegdash/tags/dash/protocol/http/f/a.mpd', + duration: 123000, + externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77,1_tmeqe2n9_1_m1ycz1cx', + objectType: 'KalturaMediaFile' + }, + { + assetId: 480097, + id: 728181, + type: 'Mobile_Devices_Main_SD_Dash', + url: 'http://cdnapi.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/mpegdash/tags/dash/protocol/http/f/a.mpd', + duration: 123000, + externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77,1_tmeqe2n9_1_m1ycz1cx', + objectType: 'KalturaMediaFile' + }, + { + assetId: 480097, + id: 728182, + type: 'Mobile_Devices_Main_SD_FP', + url: + 'http://cdnapi.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/applehttp/tags/ipadnew/protocol/http/f/a.m3u8', + duration: 123000, + externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77', + objectType: 'KalturaMediaFile' + }, + { + assetId: 480097, + id: 728183, + type: 'Mobile_Devices_Main_HD_FP', + url: + 'https://cdnapisec.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/applehttp/tags/ipadnew/protocol/http/f/a.m3u8', + duration: 123000, + externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77', + objectType: 'KalturaMediaFile' + }, + { + assetId: 480097, + id: 728184, + type: 'Web_HD_Dash', + url: + 'https://cdnapisec.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/mpegdash/tags/dash/protocol/https/f/a.mpd', + duration: 123000, + externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77,1_tmeqe2n9_1_m1ycz1cx', + objectType: 'KalturaMediaFile' + }, + { + assetId: 480097, + id: 728185, + type: 'Web_HD_FP', + url: + 'https://cdnapisec.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/applehttp/tags/ipadnew/protocol/https/f/a.m3u8', + duration: 123000, + externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77', + objectType: 'KalturaMediaFile' + }, + { + assetId: 480097, + id: 728186, + type: 'Web HD', + url: + 'https://cdnapisec.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/applehttp/tags/ipadnew/protocol/https/f/a.m3u8', + duration: 123000, + externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77', + objectType: 'KalturaMediaFile' + }, + { + assetId: 480097, + id: 728187, + type: 'Mobile_Devices_Main_Download', + url: + 'https://cdnapisec.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/mpegdash/tags/dash/protocol/http/f/a.mpd', + duration: 123000, + externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77,1_tmeqe2n9_1_m1ycz1cx', + objectType: 'KalturaMediaFile' + }, + { + assetId: 480097, + id: 728188, + type: 'Mobile_Devices_Main_SD', + url: + 'https://cdnapisec.kaltura.com/p/2091671/sp/209167100/playManifest/entryId/1_tmeqe2n9/format/url/tags/widevine/protocol/http/f/a.wvm', + duration: 123000, + externalId: '1_tmeqe2n9_1_9crpi8m5,1_tmeqe2n9_1_r64bcvp1', + objectType: 'KalturaMediaFile' + } + ], + metas: { + synopsis: {value: '', objectType: 'KalturaMultilingualStringValue'}, + 'Short title': {value: '', objectType: 'KalturaMultilingualStringValue'}, + Runtime: {value: '92', objectType: 'KalturaMultilingualStringValue'}, + 'Catchup logo URL': {value: '', objectType: 'KalturaMultilingualStringValue'}, + 'App Link': {value: '', objectType: 'KalturaMultilingualStringValue'}, + Country: {value: '', objectType: 'KalturaMultilingualStringValue'}, + QUALITY: {value: '', objectType: 'KalturaMultilingualStringValue'}, + 'Epg ID': {value: '', objectType: 'KalturaMultilingualStringValue'}, + 'Release year': {value: 2017, objectType: 'KalturaDoubleValue'}, + 'Catchup allowed': {value: false, objectType: 'KalturaBooleanValue'} + }, + tags: { + Free: { + objects: [ + {value: 'nirit', objectType: 'KalturaMultilingualStringValue'}, + { + value: 'nirit', + objectType: 'KalturaMultilingualStringValue' + }, + {value: 'nirit', objectType: 'KalturaMultilingualStringValue'} + ], + objectType: 'KalturaMultilingualStringValueArray' + }, + Genre: { + objects: [ + {value: 'Comedy', objectType: 'KalturaMultilingualStringValue'}, + { + value: 'Comedy', + objectType: 'KalturaMultilingualStringValue' + }, + {value: 'Comedy', objectType: 'KalturaMultilingualStringValue'}, + { + value: 'Drama', + objectType: 'KalturaMultilingualStringValue' + }, + {value: 'Kids', objectType: 'KalturaMultilingualStringValue'}, + { + value: 'Kids', + objectType: 'KalturaMultilingualStringValue' + }, + {value: 'Kids', objectType: 'KalturaMultilingualStringValue'} + ], + objectType: 'KalturaMultilingualStringValueArray' + }, + 'Main cast': { + objects: [ + { + value: 'Anna Kendrick', + objectType: 'KalturaMultilingualStringValue' + }, + {value: 'Anna Kendrick', objectType: 'KalturaMultilingualStringValue'}, + { + value: 'Anna Kendrick', + objectType: 'KalturaMultilingualStringValue' + }, + {value: 'Justin Timberlake', objectType: 'KalturaMultilingualStringValue'}, + { + value: 'Justin Timberlake', + objectType: 'KalturaMultilingualStringValue' + }, + {value: 'Justin Timberlake', objectType: 'KalturaMultilingualStringValue'} + ], + objectType: 'KalturaMultilingualStringValueArray' + }, + Director: { + objects: [ + { + value: 'Walt Dohrn', + objectType: 'KalturaMultilingualStringValue' + }, + {value: 'Walt Dohrn', objectType: 'KalturaMultilingualStringValue'}, + { + value: 'Walt Dohrn', + objectType: 'KalturaMultilingualStringValue' + } + ], + objectType: 'KalturaMultilingualStringValueArray' + }, + 'Parental Rating': { + objects: [ + { + value: 'PG', + objectType: 'KalturaMultilingualStringValue' + }, + {value: 'Parental - 8', objectType: 'KalturaMultilingualStringValue'} + ], + objectType: 'KalturaMultilingualStringValueArray' + }, + Studio: { + objects: [ + {value: 'Pixar', objectType: 'KalturaMultilingualStringValue'}, + { + value: 'Pixar', + objectType: 'KalturaMultilingualStringValue' + }, + {value: 'Pixar', objectType: 'KalturaMultilingualStringValue'} + ], + objectType: 'KalturaMultilingualStringValueArray' + }, + Country: { + objects: [ + {value: 'USA', objectType: 'KalturaMultilingualStringValue'}, + { + value: 'USA', + objectType: 'KalturaMultilingualStringValue' + }, + {value: 'USA', objectType: 'KalturaMultilingualStringValue'} + ], + objectType: 'KalturaMultilingualStringValueArray' + }, + QUALITY: { + objects: [ + {value: 'hd', objectType: 'KalturaMultilingualStringValue'}, + { + value: 'hd', + objectType: 'KalturaMultilingualStringValue' + }, + {value: 'hd', objectType: 'KalturaMultilingualStringValue'} + ], + objectType: 'KalturaMultilingualStringValueArray' + } + }, + startDate: 1484812560, + endDate: 5233691520, + enableCdvr: false, + enableCatchUp: false, + enableStartOver: false, + enableTrickPlay: false, + objectType: 'KalturaMediaAsset' }, - startDate: 1484812560, - endDate: 5233691520, - enableCdvr: false, - enableCatchUp: false, - enableStartOver: false, - enableTrickPlay: false, - objectType: 'KalturaMediaAsset' - }, - { - sources: [ - { - format: 'applehttp', - protocols: 'http', - assetId: 480097, - id: 728179, - type: 'Mobile_Devices_Main_HD', - url: - 'http://api-preprod.ott.kaltura.com/v4_6/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/480097/assetType/media/assetFileId/728179/contextType/PLAYBACK/a.m3u8', - duration: 123000, - externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77', - objectType: 'KalturaPlaybackSource' - }, - { - format: 'mpegdash', - protocols: 'https', - drm: [ - { - scheme: 'PLAYREADY_CENC', - licenseURL: - 'https://ny-udrm-stg.kaltura.com/cenc/playready/license?custom_data=eyJjYV9zeXN0ZW0iOiJodHRwOi8vYXBpLXByZXByb2Qub3R0LmthbHR1cmEuY29tL3Y0XzYvYXBpX3YzL3NlcnZpY2UvYXNzZXRGaWxlL2FjdGlvbi9nZXRDb250ZXh0P2tzPWRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0mY29udGV4dFR5cGU9bm9uZSZpZD03MjgxODAiLCJhY2NvdW50X2lkIjoyMDkxNjcxLCJjb250ZW50X2lkIjoiMV90bWVxZTJuOV8xX3V3bHphbHN6LDFfdG1lcWUybjlfMV9ob2lqMHo3NywxX3RtZXFlMm45XzFfbTF5Y3oxY3giLCJmaWxlcyI6IiIsInVzZXJfdG9rZW4iOiJkako4TVRrNGZIRk5sTlRGUDhOVl9XWG9QbjNDSm5RUklKaENlNHpEOWc1dm9DSENnSEpSYW52MnViRUJMTGw5R2IxM0N4ZkJUR1dacFRQX3BEX2ZPaXJUMy1MNEYwa0RJZEpScmtTaEJ4anVSSTEtMG56MnVibEpKZDQ4UUt6TEFxVzc5eTdMem9qNm5nZnYxdUhHQzd4eFB0VXFjU3c9IiwidWRpZCI6IiIsImFkZGl0aW9uYWxfY2FzX3N5c3RlbSI6MTk4fQ%3d%3d&signature=ZOLdFeGe54PzgUBAXzQ9GYU1mp4%3d', - objectType: 'KalturaDrmPlaybackPluginData' - }, - { - scheme: 'WIDEVINE_CENC', - licenseURL: - 'https://ny-udrm-stg.kaltura.com/cenc/widevine/license?custom_data=eyJjYV9zeXN0ZW0iOiJodHRwOi8vYXBpLXByZXByb2Qub3R0LmthbHR1cmEuY29tL3Y0XzYvYXBpX3YzL3NlcnZpY2UvYXNzZXRGaWxlL2FjdGlvbi9nZXRDb250ZXh0P2tzPWRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0mY29udGV4dFR5cGU9bm9uZSZpZD03MjgxODAiLCJhY2NvdW50X2lkIjoyMDkxNjcxLCJjb250ZW50X2lkIjoiMV90bWVxZTJuOV8xX3V3bHphbHN6LDFfdG1lcWUybjlfMV9ob2lqMHo3NywxX3RtZXFlMm45XzFfbTF5Y3oxY3giLCJmaWxlcyI6IiIsInVzZXJfdG9rZW4iOiJkako4TVRrNGZIRk5sTlRGUDhOVl9XWG9QbjNDSm5RUklKaENlNHpEOWc1dm9DSENnSEpSYW52MnViRUJMTGw5R2IxM0N4ZkJUR1dacFRQX3BEX2ZPaXJUMy1MNEYwa0RJZEpScmtTaEJ4anVSSTEtMG56MnVibEpKZDQ4UUt6TEFxVzc5eTdMem9qNm5nZnYxdUhHQzd4eFB0VXFjU3c9IiwidWRpZCI6IiIsImFkZGl0aW9uYWxfY2FzX3N5c3RlbSI6MTk4fQ%3d%3d&signature=ZOLdFeGe54PzgUBAXzQ9GYU1mp4%3d', - objectType: 'KalturaDrmPlaybackPluginData' - } - ], - assetId: 480097, - id: 728180, - type: 'Mobile_Devices_Main_HD_Dash', - url: - 'http://api-preprod.ott.kaltura.com/v4_6/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/480097/assetType/media/assetFileId/728180/contextType/PLAYBACK/a.mpd', - duration: 123000, - externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77,1_tmeqe2n9_1_m1ycz1cx', - objectType: 'KalturaPlaybackSource' - }, - { - format: 'mpegdash', - protocols: 'http', - drm: [ - { - scheme: 'PLAYREADY_CENC', - licenseURL: - 'https://ny-udrm-stg.kaltura.com/cenc/playready/license?custom_data=eyJjYV9zeXN0ZW0iOiJodHRwOi8vYXBpLXByZXByb2Qub3R0LmthbHR1cmEuY29tL3Y0XzYvYXBpX3YzL3NlcnZpY2UvYXNzZXRGaWxlL2FjdGlvbi9nZXRDb250ZXh0P2tzPWRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0mY29udGV4dFR5cGU9bm9uZSZpZD03MjgxODEiLCJhY2NvdW50X2lkIjoyMDkxNjcxLCJjb250ZW50X2lkIjoiMV90bWVxZTJuOV8xX3V3bHphbHN6LDFfdG1lcWUybjlfMV9ob2lqMHo3NywxX3RtZXFlMm45XzFfbTF5Y3oxY3giLCJmaWxlcyI6IiIsInVzZXJfdG9rZW4iOiJkako4TVRrNGZIRk5sTlRGUDhOVl9XWG9QbjNDSm5RUklKaENlNHpEOWc1dm9DSENnSEpSYW52MnViRUJMTGw5R2IxM0N4ZkJUR1dacFRQX3BEX2ZPaXJUMy1MNEYwa0RJZEpScmtTaEJ4anVSSTEtMG56MnVibEpKZDQ4UUt6TEFxVzc5eTdMem9qNm5nZnYxdUhHQzd4eFB0VXFjU3c9IiwidWRpZCI6IiIsImFkZGl0aW9uYWxfY2FzX3N5c3RlbSI6MTk4fQ%3d%3d&signature=bMcDzZozJh%2fal%2f%2bOiqthRfpaT2k%3d', - objectType: 'KalturaDrmPlaybackPluginData' - }, - { - scheme: 'WIDEVINE_CENC', - licenseURL: - 'https://ny-udrm-stg.kaltura.com/cenc/widevine/license?custom_data=eyJjYV9zeXN0ZW0iOiJodHRwOi8vYXBpLXByZXByb2Qub3R0LmthbHR1cmEuY29tL3Y0XzYvYXBpX3YzL3NlcnZpY2UvYXNzZXRGaWxlL2FjdGlvbi9nZXRDb250ZXh0P2tzPWRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0mY29udGV4dFR5cGU9bm9uZSZpZD03MjgxODEiLCJhY2NvdW50X2lkIjoyMDkxNjcxLCJjb250ZW50X2lkIjoiMV90bWVxZTJuOV8xX3V3bHphbHN6LDFfdG1lcWUybjlfMV9ob2lqMHo3NywxX3RtZXFlMm45XzFfbTF5Y3oxY3giLCJmaWxlcyI6IiIsInVzZXJfdG9rZW4iOiJkako4TVRrNGZIRk5sTlRGUDhOVl9XWG9QbjNDSm5RUklKaENlNHpEOWc1dm9DSENnSEpSYW52MnViRUJMTGw5R2IxM0N4ZkJUR1dacFRQX3BEX2ZPaXJUMy1MNEYwa0RJZEpScmtTaEJ4anVSSTEtMG56MnVibEpKZDQ4UUt6TEFxVzc5eTdMem9qNm5nZnYxdUhHQzd4eFB0VXFjU3c9IiwidWRpZCI6IiIsImFkZGl0aW9uYWxfY2FzX3N5c3RlbSI6MTk4fQ%3d%3d&signature=bMcDzZozJh%2fal%2f%2bOiqthRfpaT2k%3d', - objectType: 'KalturaDrmPlaybackPluginData' - } - ], - assetId: 480097, - id: 728181, - type: 'Mobile_Devices_Main_SD_Dash', - url: - 'http://api-preprod.ott.kaltura.com/v4_6/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/480097/assetType/media/assetFileId/728181/contextType/PLAYBACK/a.mpd', - duration: 123000, - externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77,1_tmeqe2n9_1_m1ycz1cx', - objectType: 'KalturaPlaybackSource' - }, - { - format: 'applehttp', - protocols: 'http', - drm: [ - { - certificate: - 'MIIE6TCCA9GgAwIBAgIIENeCqzQk/C4wDQYJKoZIhvcNAQEFBQAwfzELMAkGA1UEBhMCVVMxEzARBgNVBAoMCkFwcGxlIEluYy4xJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MTMwMQYDVQQDDCpBcHBsZSBLZXkgU2VydmljZXMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTYwNTIwMTAxNDM1WhcNMTgwNTIxMTAxNDM1WjB8MQswCQYDVQQGEwJVUzEhMB8GA1UECgwYRGFpIFRydXllbiBIaW5oIFZpZXQgTmFtMRMwEQYDVQQLDAo0NkEzVkI4S05FMTUwMwYDVQQDDCxGYWlyUGxheSBTdHJlYW1pbmc6IERhaSBUcnV5ZW4gSGluaCBWaWV0IE5hbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxOpAcmYS8tPhh5Uk8C+0JzWy3CHJeU6odJXziTER49EEZnXHbfmIZpC1J9oMFVg6HTi5qFYgyvE19Iko7g2u0SubbM+WU6NEtzC5Mh5sjA4h3bOLSiC9lbBF9yIQiQ40Slar7EEhJRAJ1yAevMjMbAXU5YZjphamjVc0i3HB5UkCAwEAAaOCAe4wggHqMB0GA1UdDgQWBBQ1657dTf5GhGZap1ODbUTjL4AiPTAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGPkR1TLhXFZRiyDrMxEMWRnAyy+MIHiBgNVHSAEgdowgdcwgdQGCSqGSIb3Y2QFATCBxjCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjA1BgNVHR8ELjAsMCqgKKAmhiRodHRwOi8vY3JsLmFwcGxlLmNvbS9rZXlzZXJ2aWNlcy5jcmwwDgYDVR0PAQH/BAQDAgUgMDwGCyqGSIb3Y2QGDQEDAQH/BCoBcTFhMm45bWs4dWRmYWhtaWQwdmYydWh5N25hZmVxZHZoOXZob2c2b3YwMAYLKoZIhvdjZAYNAQQBAf8EHgE3eGRnd3MydWdtNDZxdGxjbGhjY2pka3J2bm56YzANBgkqhkiG9w0BAQUFAAOCAQEAP4VtMfsSO6mNAgK0AfoJgMGQ+1xhMhHYjBQdcudB3qzSznAj/u29LGPlsQW+jRB0VZJM5jBtP9n1kElo8IBnD7h1iTnHgd1v+MIGqcI+S+g5Ga+h0LmPNObHBuFVDGFqRXKv5LWI6KZ+7KNNSo4p8v7WV2JfYGDRoTtk4sA5GGw8Kyb2DNC+0+YBoZjW78Tu9fM6RanDmfMjFWpe2jQ9q9uBirOWkcVmwpNud/N61Vz3RAhmYuqYUE21R/1mLr+dBYZ54WLsI3za+bBQe3QjpYtJvJnEJIBDzXHia8Alo9KhNOGxMeexJhQXx0KM6XH2DVUf6KMrr5cH7bIdwbSCAQ==', - scheme: 'FAIRPLAY', - licenseURL: - 'https://ny-udrm-stg.kaltura.com/fps/license?custom_data=eyJjYV9zeXN0ZW0iOiJodHRwOi8vYXBpLXByZXByb2Qub3R0LmthbHR1cmEuY29tL3Y0XzYvYXBpX3YzL3NlcnZpY2UvYXNzZXRGaWxlL2FjdGlvbi9nZXRDb250ZXh0P2tzPWRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0mY29udGV4dFR5cGU9bm9uZSZpZD03MjgxODIiLCJhY2NvdW50X2lkIjoyMDkxNjcxLCJjb250ZW50X2lkIjoiMV90bWVxZTJuOV8xX3V3bHphbHN6LDFfdG1lcWUybjlfMV9ob2lqMHo3NyIsImZpbGVzIjoiIiwidXNlcl90b2tlbiI6ImRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0iLCJ1ZGlkIjoiIiwiYWRkaXRpb25hbF9jYXNfc3lzdGVtIjoxOTh9&signature=Ch65ih3S1%2bIXVl7mZywrIRnSpSg%3d', - objectType: 'KalturaFairPlayPlaybackPluginData' - } - ], - assetId: 480097, - id: 728182, - type: 'Mobile_Devices_Main_SD_FP', - url: - 'http://api-preprod.ott.kaltura.com/v4_6/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/480097/assetType/media/assetFileId/728182/contextType/PLAYBACK/a.m3u8', - duration: 123000, - externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77', - objectType: 'KalturaPlaybackSource' - }, - { - format: 'applehttp', - protocols: 'https', - drm: [ - { - certificate: - 'MIIE6TCCA9GgAwIBAgIIENeCqzQk/C4wDQYJKoZIhvcNAQEFBQAwfzELMAkGA1UEBhMCVVMxEzARBgNVBAoMCkFwcGxlIEluYy4xJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MTMwMQYDVQQDDCpBcHBsZSBLZXkgU2VydmljZXMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTYwNTIwMTAxNDM1WhcNMTgwNTIxMTAxNDM1WjB8MQswCQYDVQQGEwJVUzEhMB8GA1UECgwYRGFpIFRydXllbiBIaW5oIFZpZXQgTmFtMRMwEQYDVQQLDAo0NkEzVkI4S05FMTUwMwYDVQQDDCxGYWlyUGxheSBTdHJlYW1pbmc6IERhaSBUcnV5ZW4gSGluaCBWaWV0IE5hbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxOpAcmYS8tPhh5Uk8C+0JzWy3CHJeU6odJXziTER49EEZnXHbfmIZpC1J9oMFVg6HTi5qFYgyvE19Iko7g2u0SubbM+WU6NEtzC5Mh5sjA4h3bOLSiC9lbBF9yIQiQ40Slar7EEhJRAJ1yAevMjMbAXU5YZjphamjVc0i3HB5UkCAwEAAaOCAe4wggHqMB0GA1UdDgQWBBQ1657dTf5GhGZap1ODbUTjL4AiPTAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGPkR1TLhXFZRiyDrMxEMWRnAyy+MIHiBgNVHSAEgdowgdcwgdQGCSqGSIb3Y2QFATCBxjCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjA1BgNVHR8ELjAsMCqgKKAmhiRodHRwOi8vY3JsLmFwcGxlLmNvbS9rZXlzZXJ2aWNlcy5jcmwwDgYDVR0PAQH/BAQDAgUgMDwGCyqGSIb3Y2QGDQEDAQH/BCoBcTFhMm45bWs4dWRmYWhtaWQwdmYydWh5N25hZmVxZHZoOXZob2c2b3YwMAYLKoZIhvdjZAYNAQQBAf8EHgE3eGRnd3MydWdtNDZxdGxjbGhjY2pka3J2bm56YzANBgkqhkiG9w0BAQUFAAOCAQEAP4VtMfsSO6mNAgK0AfoJgMGQ+1xhMhHYjBQdcudB3qzSznAj/u29LGPlsQW+jRB0VZJM5jBtP9n1kElo8IBnD7h1iTnHgd1v+MIGqcI+S+g5Ga+h0LmPNObHBuFVDGFqRXKv5LWI6KZ+7KNNSo4p8v7WV2JfYGDRoTtk4sA5GGw8Kyb2DNC+0+YBoZjW78Tu9fM6RanDmfMjFWpe2jQ9q9uBirOWkcVmwpNud/N61Vz3RAhmYuqYUE21R/1mLr+dBYZ54WLsI3za+bBQe3QjpYtJvJnEJIBDzXHia8Alo9KhNOGxMeexJhQXx0KM6XH2DVUf6KMrr5cH7bIdwbSCAQ==', - scheme: 'FAIRPLAY', - licenseURL: - 'https://ny-udrm-stg.kaltura.com/fps/license?custom_data=eyJjYV9zeXN0ZW0iOiJodHRwOi8vYXBpLXByZXByb2Qub3R0LmthbHR1cmEuY29tL3Y0XzYvYXBpX3YzL3NlcnZpY2UvYXNzZXRGaWxlL2FjdGlvbi9nZXRDb250ZXh0P2tzPWRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0mY29udGV4dFR5cGU9bm9uZSZpZD03MjgxODMiLCJhY2NvdW50X2lkIjoyMDkxNjcxLCJjb250ZW50X2lkIjoiMV90bWVxZTJuOV8xX3V3bHphbHN6LDFfdG1lcWUybjlfMV9ob2lqMHo3NyIsImZpbGVzIjoiIiwidXNlcl90b2tlbiI6ImRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0iLCJ1ZGlkIjoiIiwiYWRkaXRpb25hbF9jYXNfc3lzdGVtIjoxOTh9&signature=lighwi6L3K093M%2fBKJeKX%2fpwaQA%3d', - objectType: 'KalturaFairPlayPlaybackPluginData' - } - ], - assetId: 480097, - id: 728183, - type: 'Mobile_Devices_Main_HD_FP', - url: - 'http://api-preprod.ott.kaltura.com/v4_6/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/480097/assetType/media/assetFileId/728183/contextType/PLAYBACK/a.m3u8', - duration: 123000, - externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77', - objectType: 'KalturaPlaybackSource' - }, - { - format: 'mpegdash', - protocols: 'https', - drm: [ - { - scheme: 'PLAYREADY_CENC', - licenseURL: - 'https://ny-udrm-stg.kaltura.com/cenc/playready/license?custom_data=eyJjYV9zeXN0ZW0iOiJodHRwOi8vYXBpLXByZXByb2Qub3R0LmthbHR1cmEuY29tL3Y0XzYvYXBpX3YzL3NlcnZpY2UvYXNzZXRGaWxlL2FjdGlvbi9nZXRDb250ZXh0P2tzPWRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0mY29udGV4dFR5cGU9bm9uZSZpZD03MjgxODQiLCJhY2NvdW50X2lkIjoyMDkxNjcxLCJjb250ZW50X2lkIjoiMV90bWVxZTJuOV8xX3V3bHphbHN6LDFfdG1lcWUybjlfMV9ob2lqMHo3NywxX3RtZXFlMm45XzFfbTF5Y3oxY3giLCJmaWxlcyI6IiIsInVzZXJfdG9rZW4iOiJkako4TVRrNGZIRk5sTlRGUDhOVl9XWG9QbjNDSm5RUklKaENlNHpEOWc1dm9DSENnSEpSYW52MnViRUJMTGw5R2IxM0N4ZkJUR1dacFRQX3BEX2ZPaXJUMy1MNEYwa0RJZEpScmtTaEJ4anVSSTEtMG56MnVibEpKZDQ4UUt6TEFxVzc5eTdMem9qNm5nZnYxdUhHQzd4eFB0VXFjU3c9IiwidWRpZCI6IiIsImFkZGl0aW9uYWxfY2FzX3N5c3RlbSI6MTk4fQ%3d%3d&signature=0k74fJhSENT3e9P%2fBOVVkM8PI6E%3d', - objectType: 'KalturaDrmPlaybackPluginData' - }, - { - scheme: 'WIDEVINE_CENC', - licenseURL: - 'https://ny-udrm-stg.kaltura.com/cenc/widevine/license?custom_data=eyJjYV9zeXN0ZW0iOiJodHRwOi8vYXBpLXByZXByb2Qub3R0LmthbHR1cmEuY29tL3Y0XzYvYXBpX3YzL3NlcnZpY2UvYXNzZXRGaWxlL2FjdGlvbi9nZXRDb250ZXh0P2tzPWRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0mY29udGV4dFR5cGU9bm9uZSZpZD03MjgxODQiLCJhY2NvdW50X2lkIjoyMDkxNjcxLCJjb250ZW50X2lkIjoiMV90bWVxZTJuOV8xX3V3bHphbHN6LDFfdG1lcWUybjlfMV9ob2lqMHo3NywxX3RtZXFlMm45XzFfbTF5Y3oxY3giLCJmaWxlcyI6IiIsInVzZXJfdG9rZW4iOiJkako4TVRrNGZIRk5sTlRGUDhOVl9XWG9QbjNDSm5RUklKaENlNHpEOWc1dm9DSENnSEpSYW52MnViRUJMTGw5R2IxM0N4ZkJUR1dacFRQX3BEX2ZPaXJUMy1MNEYwa0RJZEpScmtTaEJ4anVSSTEtMG56MnVibEpKZDQ4UUt6TEFxVzc5eTdMem9qNm5nZnYxdUhHQzd4eFB0VXFjU3c9IiwidWRpZCI6IiIsImFkZGl0aW9uYWxfY2FzX3N5c3RlbSI6MTk4fQ%3d%3d&signature=0k74fJhSENT3e9P%2fBOVVkM8PI6E%3d', - objectType: 'KalturaDrmPlaybackPluginData' - } - ], - assetId: 480097, - id: 728184, - type: 'Web_HD_Dash', - url: - 'http://api-preprod.ott.kaltura.com/v4_6/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/480097/assetType/media/assetFileId/728184/contextType/PLAYBACK/a.mpd', - duration: 123000, - externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77,1_tmeqe2n9_1_m1ycz1cx', - objectType: 'KalturaPlaybackSource' - }, - { - format: 'applehttp', - protocols: 'https', - assetId: 480097, - id: 728187, - type: 'Mobile_Devices_Main_Download', - url: - 'http://api-preprod.ott.kaltura.com/v4_6/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/480097/assetType/media/assetFileId/728187/contextType/PLAYBACK/a.mpd', - duration: 123000, - externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77,1_tmeqe2n9_1_m1ycz1cx', - objectType: 'KalturaPlaybackSource' - }, - { - format: 'applehttp', - protocols: 'https', - assetId: 480097, - id: 728188, - type: 'Mobile_Devices_Main_SD', - url: - 'http://api-preprod.ott.kaltura.com/v4_6/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/480097/assetType/media/assetFileId/728188/contextType/PLAYBACK/a.wvm', - duration: 123000, - externalId: '1_tmeqe2n9_1_9crpi8m5,1_tmeqe2n9_1_r64bcvp1', - objectType: 'KalturaPlaybackSource' - } - ], - messages: [{message: 'OK', code: 'OK', objectType: 'KalturaAccessControlMessage'}], - objectType: 'KalturaPlaybackContext' - } - ], - executionTime: 0.7283435 + { + sources: [ + { + format: 'applehttp', + protocols: 'http', + assetId: 480097, + id: 728179, + type: 'Mobile_Devices_Main_HD', + url: + 'http://api-preprod.ott.kaltura.com/v4_6/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/480097/assetType/media/assetFileId/728179/contextType/PLAYBACK/a.m3u8', + duration: 123000, + externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77', + objectType: 'KalturaPlaybackSource' + }, + { + format: 'mpegdash', + protocols: 'https', + drm: [ + { + scheme: 'PLAYREADY_CENC', + licenseURL: + 'https://ny-udrm-stg.kaltura.com/cenc/playready/license?custom_data=eyJjYV9zeXN0ZW0iOiJodHRwOi8vYXBpLXByZXByb2Qub3R0LmthbHR1cmEuY29tL3Y0XzYvYXBpX3YzL3NlcnZpY2UvYXNzZXRGaWxlL2FjdGlvbi9nZXRDb250ZXh0P2tzPWRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0mY29udGV4dFR5cGU9bm9uZSZpZD03MjgxODAiLCJhY2NvdW50X2lkIjoyMDkxNjcxLCJjb250ZW50X2lkIjoiMV90bWVxZTJuOV8xX3V3bHphbHN6LDFfdG1lcWUybjlfMV9ob2lqMHo3NywxX3RtZXFlMm45XzFfbTF5Y3oxY3giLCJmaWxlcyI6IiIsInVzZXJfdG9rZW4iOiJkako4TVRrNGZIRk5sTlRGUDhOVl9XWG9QbjNDSm5RUklKaENlNHpEOWc1dm9DSENnSEpSYW52MnViRUJMTGw5R2IxM0N4ZkJUR1dacFRQX3BEX2ZPaXJUMy1MNEYwa0RJZEpScmtTaEJ4anVSSTEtMG56MnVibEpKZDQ4UUt6TEFxVzc5eTdMem9qNm5nZnYxdUhHQzd4eFB0VXFjU3c9IiwidWRpZCI6IiIsImFkZGl0aW9uYWxfY2FzX3N5c3RlbSI6MTk4fQ%3d%3d&signature=ZOLdFeGe54PzgUBAXzQ9GYU1mp4%3d', + objectType: 'KalturaDrmPlaybackPluginData' + }, + { + scheme: 'WIDEVINE_CENC', + licenseURL: + 'https://ny-udrm-stg.kaltura.com/cenc/widevine/license?custom_data=eyJjYV9zeXN0ZW0iOiJodHRwOi8vYXBpLXByZXByb2Qub3R0LmthbHR1cmEuY29tL3Y0XzYvYXBpX3YzL3NlcnZpY2UvYXNzZXRGaWxlL2FjdGlvbi9nZXRDb250ZXh0P2tzPWRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0mY29udGV4dFR5cGU9bm9uZSZpZD03MjgxODAiLCJhY2NvdW50X2lkIjoyMDkxNjcxLCJjb250ZW50X2lkIjoiMV90bWVxZTJuOV8xX3V3bHphbHN6LDFfdG1lcWUybjlfMV9ob2lqMHo3NywxX3RtZXFlMm45XzFfbTF5Y3oxY3giLCJmaWxlcyI6IiIsInVzZXJfdG9rZW4iOiJkako4TVRrNGZIRk5sTlRGUDhOVl9XWG9QbjNDSm5RUklKaENlNHpEOWc1dm9DSENnSEpSYW52MnViRUJMTGw5R2IxM0N4ZkJUR1dacFRQX3BEX2ZPaXJUMy1MNEYwa0RJZEpScmtTaEJ4anVSSTEtMG56MnVibEpKZDQ4UUt6TEFxVzc5eTdMem9qNm5nZnYxdUhHQzd4eFB0VXFjU3c9IiwidWRpZCI6IiIsImFkZGl0aW9uYWxfY2FzX3N5c3RlbSI6MTk4fQ%3d%3d&signature=ZOLdFeGe54PzgUBAXzQ9GYU1mp4%3d', + objectType: 'KalturaDrmPlaybackPluginData' + } + ], + assetId: 480097, + id: 728180, + type: 'Mobile_Devices_Main_HD_Dash', + url: + 'http://api-preprod.ott.kaltura.com/v4_6/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/480097/assetType/media/assetFileId/728180/contextType/PLAYBACK/a.mpd', + duration: 123000, + externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77,1_tmeqe2n9_1_m1ycz1cx', + objectType: 'KalturaPlaybackSource' + }, + { + format: 'mpegdash', + protocols: 'http', + drm: [ + { + scheme: 'PLAYREADY_CENC', + licenseURL: + 'https://ny-udrm-stg.kaltura.com/cenc/playready/license?custom_data=eyJjYV9zeXN0ZW0iOiJodHRwOi8vYXBpLXByZXByb2Qub3R0LmthbHR1cmEuY29tL3Y0XzYvYXBpX3YzL3NlcnZpY2UvYXNzZXRGaWxlL2FjdGlvbi9nZXRDb250ZXh0P2tzPWRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0mY29udGV4dFR5cGU9bm9uZSZpZD03MjgxODEiLCJhY2NvdW50X2lkIjoyMDkxNjcxLCJjb250ZW50X2lkIjoiMV90bWVxZTJuOV8xX3V3bHphbHN6LDFfdG1lcWUybjlfMV9ob2lqMHo3NywxX3RtZXFlMm45XzFfbTF5Y3oxY3giLCJmaWxlcyI6IiIsInVzZXJfdG9rZW4iOiJkako4TVRrNGZIRk5sTlRGUDhOVl9XWG9QbjNDSm5RUklKaENlNHpEOWc1dm9DSENnSEpSYW52MnViRUJMTGw5R2IxM0N4ZkJUR1dacFRQX3BEX2ZPaXJUMy1MNEYwa0RJZEpScmtTaEJ4anVSSTEtMG56MnVibEpKZDQ4UUt6TEFxVzc5eTdMem9qNm5nZnYxdUhHQzd4eFB0VXFjU3c9IiwidWRpZCI6IiIsImFkZGl0aW9uYWxfY2FzX3N5c3RlbSI6MTk4fQ%3d%3d&signature=bMcDzZozJh%2fal%2f%2bOiqthRfpaT2k%3d', + objectType: 'KalturaDrmPlaybackPluginData' + }, + { + scheme: 'WIDEVINE_CENC', + licenseURL: + 'https://ny-udrm-stg.kaltura.com/cenc/widevine/license?custom_data=eyJjYV9zeXN0ZW0iOiJodHRwOi8vYXBpLXByZXByb2Qub3R0LmthbHR1cmEuY29tL3Y0XzYvYXBpX3YzL3NlcnZpY2UvYXNzZXRGaWxlL2FjdGlvbi9nZXRDb250ZXh0P2tzPWRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0mY29udGV4dFR5cGU9bm9uZSZpZD03MjgxODEiLCJhY2NvdW50X2lkIjoyMDkxNjcxLCJjb250ZW50X2lkIjoiMV90bWVxZTJuOV8xX3V3bHphbHN6LDFfdG1lcWUybjlfMV9ob2lqMHo3NywxX3RtZXFlMm45XzFfbTF5Y3oxY3giLCJmaWxlcyI6IiIsInVzZXJfdG9rZW4iOiJkako4TVRrNGZIRk5sTlRGUDhOVl9XWG9QbjNDSm5RUklKaENlNHpEOWc1dm9DSENnSEpSYW52MnViRUJMTGw5R2IxM0N4ZkJUR1dacFRQX3BEX2ZPaXJUMy1MNEYwa0RJZEpScmtTaEJ4anVSSTEtMG56MnVibEpKZDQ4UUt6TEFxVzc5eTdMem9qNm5nZnYxdUhHQzd4eFB0VXFjU3c9IiwidWRpZCI6IiIsImFkZGl0aW9uYWxfY2FzX3N5c3RlbSI6MTk4fQ%3d%3d&signature=bMcDzZozJh%2fal%2f%2bOiqthRfpaT2k%3d', + objectType: 'KalturaDrmPlaybackPluginData' + } + ], + assetId: 480097, + id: 728181, + type: 'Mobile_Devices_Main_SD_Dash', + url: + 'http://api-preprod.ott.kaltura.com/v4_6/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/480097/assetType/media/assetFileId/728181/contextType/PLAYBACK/a.mpd', + duration: 123000, + externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77,1_tmeqe2n9_1_m1ycz1cx', + objectType: 'KalturaPlaybackSource' + }, + { + format: 'applehttp', + protocols: 'http', + drm: [ + { + certificate: + 'MIIE6TCCA9GgAwIBAgIIENeCqzQk/C4wDQYJKoZIhvcNAQEFBQAwfzELMAkGA1UEBhMCVVMxEzARBgNVBAoMCkFwcGxlIEluYy4xJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MTMwMQYDVQQDDCpBcHBsZSBLZXkgU2VydmljZXMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTYwNTIwMTAxNDM1WhcNMTgwNTIxMTAxNDM1WjB8MQswCQYDVQQGEwJVUzEhMB8GA1UECgwYRGFpIFRydXllbiBIaW5oIFZpZXQgTmFtMRMwEQYDVQQLDAo0NkEzVkI4S05FMTUwMwYDVQQDDCxGYWlyUGxheSBTdHJlYW1pbmc6IERhaSBUcnV5ZW4gSGluaCBWaWV0IE5hbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxOpAcmYS8tPhh5Uk8C+0JzWy3CHJeU6odJXziTER49EEZnXHbfmIZpC1J9oMFVg6HTi5qFYgyvE19Iko7g2u0SubbM+WU6NEtzC5Mh5sjA4h3bOLSiC9lbBF9yIQiQ40Slar7EEhJRAJ1yAevMjMbAXU5YZjphamjVc0i3HB5UkCAwEAAaOCAe4wggHqMB0GA1UdDgQWBBQ1657dTf5GhGZap1ODbUTjL4AiPTAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGPkR1TLhXFZRiyDrMxEMWRnAyy+MIHiBgNVHSAEgdowgdcwgdQGCSqGSIb3Y2QFATCBxjCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjA1BgNVHR8ELjAsMCqgKKAmhiRodHRwOi8vY3JsLmFwcGxlLmNvbS9rZXlzZXJ2aWNlcy5jcmwwDgYDVR0PAQH/BAQDAgUgMDwGCyqGSIb3Y2QGDQEDAQH/BCoBcTFhMm45bWs4dWRmYWhtaWQwdmYydWh5N25hZmVxZHZoOXZob2c2b3YwMAYLKoZIhvdjZAYNAQQBAf8EHgE3eGRnd3MydWdtNDZxdGxjbGhjY2pka3J2bm56YzANBgkqhkiG9w0BAQUFAAOCAQEAP4VtMfsSO6mNAgK0AfoJgMGQ+1xhMhHYjBQdcudB3qzSznAj/u29LGPlsQW+jRB0VZJM5jBtP9n1kElo8IBnD7h1iTnHgd1v+MIGqcI+S+g5Ga+h0LmPNObHBuFVDGFqRXKv5LWI6KZ+7KNNSo4p8v7WV2JfYGDRoTtk4sA5GGw8Kyb2DNC+0+YBoZjW78Tu9fM6RanDmfMjFWpe2jQ9q9uBirOWkcVmwpNud/N61Vz3RAhmYuqYUE21R/1mLr+dBYZ54WLsI3za+bBQe3QjpYtJvJnEJIBDzXHia8Alo9KhNOGxMeexJhQXx0KM6XH2DVUf6KMrr5cH7bIdwbSCAQ==', + scheme: 'FAIRPLAY', + licenseURL: + 'https://ny-udrm-stg.kaltura.com/fps/license?custom_data=eyJjYV9zeXN0ZW0iOiJodHRwOi8vYXBpLXByZXByb2Qub3R0LmthbHR1cmEuY29tL3Y0XzYvYXBpX3YzL3NlcnZpY2UvYXNzZXRGaWxlL2FjdGlvbi9nZXRDb250ZXh0P2tzPWRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0mY29udGV4dFR5cGU9bm9uZSZpZD03MjgxODIiLCJhY2NvdW50X2lkIjoyMDkxNjcxLCJjb250ZW50X2lkIjoiMV90bWVxZTJuOV8xX3V3bHphbHN6LDFfdG1lcWUybjlfMV9ob2lqMHo3NyIsImZpbGVzIjoiIiwidXNlcl90b2tlbiI6ImRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0iLCJ1ZGlkIjoiIiwiYWRkaXRpb25hbF9jYXNfc3lzdGVtIjoxOTh9&signature=Ch65ih3S1%2bIXVl7mZywrIRnSpSg%3d', + objectType: 'KalturaFairPlayPlaybackPluginData' + } + ], + assetId: 480097, + id: 728182, + type: 'Mobile_Devices_Main_SD_FP', + url: + 'http://api-preprod.ott.kaltura.com/v4_6/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/480097/assetType/media/assetFileId/728182/contextType/PLAYBACK/a.m3u8', + duration: 123000, + externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77', + objectType: 'KalturaPlaybackSource' + }, + { + format: 'applehttp', + protocols: 'https', + drm: [ + { + certificate: + 'MIIE6TCCA9GgAwIBAgIIENeCqzQk/C4wDQYJKoZIhvcNAQEFBQAwfzELMAkGA1UEBhMCVVMxEzARBgNVBAoMCkFwcGxlIEluYy4xJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MTMwMQYDVQQDDCpBcHBsZSBLZXkgU2VydmljZXMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTYwNTIwMTAxNDM1WhcNMTgwNTIxMTAxNDM1WjB8MQswCQYDVQQGEwJVUzEhMB8GA1UECgwYRGFpIFRydXllbiBIaW5oIFZpZXQgTmFtMRMwEQYDVQQLDAo0NkEzVkI4S05FMTUwMwYDVQQDDCxGYWlyUGxheSBTdHJlYW1pbmc6IERhaSBUcnV5ZW4gSGluaCBWaWV0IE5hbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxOpAcmYS8tPhh5Uk8C+0JzWy3CHJeU6odJXziTER49EEZnXHbfmIZpC1J9oMFVg6HTi5qFYgyvE19Iko7g2u0SubbM+WU6NEtzC5Mh5sjA4h3bOLSiC9lbBF9yIQiQ40Slar7EEhJRAJ1yAevMjMbAXU5YZjphamjVc0i3HB5UkCAwEAAaOCAe4wggHqMB0GA1UdDgQWBBQ1657dTf5GhGZap1ODbUTjL4AiPTAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGPkR1TLhXFZRiyDrMxEMWRnAyy+MIHiBgNVHSAEgdowgdcwgdQGCSqGSIb3Y2QFATCBxjCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjA1BgNVHR8ELjAsMCqgKKAmhiRodHRwOi8vY3JsLmFwcGxlLmNvbS9rZXlzZXJ2aWNlcy5jcmwwDgYDVR0PAQH/BAQDAgUgMDwGCyqGSIb3Y2QGDQEDAQH/BCoBcTFhMm45bWs4dWRmYWhtaWQwdmYydWh5N25hZmVxZHZoOXZob2c2b3YwMAYLKoZIhvdjZAYNAQQBAf8EHgE3eGRnd3MydWdtNDZxdGxjbGhjY2pka3J2bm56YzANBgkqhkiG9w0BAQUFAAOCAQEAP4VtMfsSO6mNAgK0AfoJgMGQ+1xhMhHYjBQdcudB3qzSznAj/u29LGPlsQW+jRB0VZJM5jBtP9n1kElo8IBnD7h1iTnHgd1v+MIGqcI+S+g5Ga+h0LmPNObHBuFVDGFqRXKv5LWI6KZ+7KNNSo4p8v7WV2JfYGDRoTtk4sA5GGw8Kyb2DNC+0+YBoZjW78Tu9fM6RanDmfMjFWpe2jQ9q9uBirOWkcVmwpNud/N61Vz3RAhmYuqYUE21R/1mLr+dBYZ54WLsI3za+bBQe3QjpYtJvJnEJIBDzXHia8Alo9KhNOGxMeexJhQXx0KM6XH2DVUf6KMrr5cH7bIdwbSCAQ==', + scheme: 'FAIRPLAY', + licenseURL: + 'https://ny-udrm-stg.kaltura.com/fps/license?custom_data=eyJjYV9zeXN0ZW0iOiJodHRwOi8vYXBpLXByZXByb2Qub3R0LmthbHR1cmEuY29tL3Y0XzYvYXBpX3YzL3NlcnZpY2UvYXNzZXRGaWxlL2FjdGlvbi9nZXRDb250ZXh0P2tzPWRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0mY29udGV4dFR5cGU9bm9uZSZpZD03MjgxODMiLCJhY2NvdW50X2lkIjoyMDkxNjcxLCJjb250ZW50X2lkIjoiMV90bWVxZTJuOV8xX3V3bHphbHN6LDFfdG1lcWUybjlfMV9ob2lqMHo3NyIsImZpbGVzIjoiIiwidXNlcl90b2tlbiI6ImRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0iLCJ1ZGlkIjoiIiwiYWRkaXRpb25hbF9jYXNfc3lzdGVtIjoxOTh9&signature=lighwi6L3K093M%2fBKJeKX%2fpwaQA%3d', + objectType: 'KalturaFairPlayPlaybackPluginData' + } + ], + assetId: 480097, + id: 728183, + type: 'Mobile_Devices_Main_HD_FP', + url: + 'http://api-preprod.ott.kaltura.com/v4_6/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/480097/assetType/media/assetFileId/728183/contextType/PLAYBACK/a.m3u8', + duration: 123000, + externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77', + objectType: 'KalturaPlaybackSource' + }, + { + format: 'mpegdash', + protocols: 'https', + drm: [ + { + scheme: 'PLAYREADY_CENC', + licenseURL: + 'https://ny-udrm-stg.kaltura.com/cenc/playready/license?custom_data=eyJjYV9zeXN0ZW0iOiJodHRwOi8vYXBpLXByZXByb2Qub3R0LmthbHR1cmEuY29tL3Y0XzYvYXBpX3YzL3NlcnZpY2UvYXNzZXRGaWxlL2FjdGlvbi9nZXRDb250ZXh0P2tzPWRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0mY29udGV4dFR5cGU9bm9uZSZpZD03MjgxODQiLCJhY2NvdW50X2lkIjoyMDkxNjcxLCJjb250ZW50X2lkIjoiMV90bWVxZTJuOV8xX3V3bHphbHN6LDFfdG1lcWUybjlfMV9ob2lqMHo3NywxX3RtZXFlMm45XzFfbTF5Y3oxY3giLCJmaWxlcyI6IiIsInVzZXJfdG9rZW4iOiJkako4TVRrNGZIRk5sTlRGUDhOVl9XWG9QbjNDSm5RUklKaENlNHpEOWc1dm9DSENnSEpSYW52MnViRUJMTGw5R2IxM0N4ZkJUR1dacFRQX3BEX2ZPaXJUMy1MNEYwa0RJZEpScmtTaEJ4anVSSTEtMG56MnVibEpKZDQ4UUt6TEFxVzc5eTdMem9qNm5nZnYxdUhHQzd4eFB0VXFjU3c9IiwidWRpZCI6IiIsImFkZGl0aW9uYWxfY2FzX3N5c3RlbSI6MTk4fQ%3d%3d&signature=0k74fJhSENT3e9P%2fBOVVkM8PI6E%3d', + objectType: 'KalturaDrmPlaybackPluginData' + }, + { + scheme: 'WIDEVINE_CENC', + licenseURL: + 'https://ny-udrm-stg.kaltura.com/cenc/widevine/license?custom_data=eyJjYV9zeXN0ZW0iOiJodHRwOi8vYXBpLXByZXByb2Qub3R0LmthbHR1cmEuY29tL3Y0XzYvYXBpX3YzL3NlcnZpY2UvYXNzZXRGaWxlL2FjdGlvbi9nZXRDb250ZXh0P2tzPWRqSjhNVGs0ZkhGTmxOVEZQOE5WX1dYb1BuM0NKblFSSUpoQ2U0ekQ5ZzV2b0NIQ2dISlJhbnYydWJFQkxMbDlHYjEzQ3hmQlRHV1pwVFBfcERfZk9pclQzLUw0RjBrRElkSlJya1NoQnhqdVJJMS0wbnoydWJsSkpkNDhRS3pMQXFXNzl5N0x6b2o2bmdmdjF1SEdDN3h4UHRVcWNTdz0mY29udGV4dFR5cGU9bm9uZSZpZD03MjgxODQiLCJhY2NvdW50X2lkIjoyMDkxNjcxLCJjb250ZW50X2lkIjoiMV90bWVxZTJuOV8xX3V3bHphbHN6LDFfdG1lcWUybjlfMV9ob2lqMHo3NywxX3RtZXFlMm45XzFfbTF5Y3oxY3giLCJmaWxlcyI6IiIsInVzZXJfdG9rZW4iOiJkako4TVRrNGZIRk5sTlRGUDhOVl9XWG9QbjNDSm5RUklKaENlNHpEOWc1dm9DSENnSEpSYW52MnViRUJMTGw5R2IxM0N4ZkJUR1dacFRQX3BEX2ZPaXJUMy1MNEYwa0RJZEpScmtTaEJ4anVSSTEtMG56MnVibEpKZDQ4UUt6TEFxVzc5eTdMem9qNm5nZnYxdUhHQzd4eFB0VXFjU3c9IiwidWRpZCI6IiIsImFkZGl0aW9uYWxfY2FzX3N5c3RlbSI6MTk4fQ%3d%3d&signature=0k74fJhSENT3e9P%2fBOVVkM8PI6E%3d', + objectType: 'KalturaDrmPlaybackPluginData' + } + ], + assetId: 480097, + id: 728184, + type: 'Web_HD_Dash', + url: + 'http://api-preprod.ott.kaltura.com/v4_6/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/480097/assetType/media/assetFileId/728184/contextType/PLAYBACK/a.mpd', + duration: 123000, + externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77,1_tmeqe2n9_1_m1ycz1cx', + objectType: 'KalturaPlaybackSource' + }, + { + format: 'applehttp', + protocols: 'https', + assetId: 480097, + id: 728187, + type: 'Mobile_Devices_Main_Download', + url: + 'http://api-preprod.ott.kaltura.com/v4_6/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/480097/assetType/media/assetFileId/728187/contextType/PLAYBACK/a.mpd', + duration: 123000, + externalId: '1_tmeqe2n9_1_uwlzalsz,1_tmeqe2n9_1_hoij0z77,1_tmeqe2n9_1_m1ycz1cx', + objectType: 'KalturaPlaybackSource' + }, + { + format: 'applehttp', + protocols: 'https', + assetId: 480097, + id: 728188, + type: 'Mobile_Devices_Main_SD', + url: + 'http://api-preprod.ott.kaltura.com/v4_6/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/480097/assetType/media/assetFileId/728188/contextType/PLAYBACK/a.wvm', + duration: 123000, + externalId: '1_tmeqe2n9_1_9crpi8m5,1_tmeqe2n9_1_r64bcvp1', + objectType: 'KalturaPlaybackSource' + } + ], + messages: [{message: 'OK', code: 'OK', objectType: 'KalturaAccessControlMessage'}], + objectType: 'KalturaPlaybackContext' + } + ], + executionTime: 0.7283435 + } }; const LiveEntryNoDrmData = { - result: [ - { - ks: - 'djJ8MTk4fEiDJqfTA_nqary8_jB-U-W0ne3JNVaZW5JmZDufdRcmcTGy3pAquXoMvFbANe6h63lEhxCo7mMZTsMTP5k4QDmOq99dRsPEsHUwOknv_9wvR_J2pbNzdXmlZ4JlYgO0ZcUr9_7tsZhqrHRfIcgrSj4=', - refreshToken: 'b07f74dfe6584790b272eb742577369b', - objectType: 'KalturaLoginSession' - }, - { - externalIds: '1073', - catchUpBuffer: 10080, - trickPlayBuffer: 0, - enableRecordingPlaybackNonEntitledChannel: true, - entryId: '', - id: 276507, - type: 422, - name: 'USA', - description: '***nadya_aes***', - images: [ - { - ratio: '16:9', - width: 153, - height: 86, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/153/height/86/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 302, - height: 170, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/302/height/170/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 568, - height: 320, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/568/height/320/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 960, - height: 540, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/960/height/540/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 1280, - height: 720, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/1280/height/720/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 2048, - height: 1152, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/2048/height/1152/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '1:1', - width: 70, - height: 70, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_12/version/0/width/70/height/70/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_12', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '1:1', - width: 100, - height: 100, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_12/version/0/width/100/height/100/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_12', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '2:3', - width: 103, - height: 154, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_2/version/0/width/103/height/154/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_2', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '2:3', - width: 149, - height: 223, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_2/version/0/width/149/height/223/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_2', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '2:3', - width: 212, - height: 318, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_2/version/0/width/212/height/318/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_2', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '2:3', - width: 355, - height: 534, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_2/version/0/width/355/height/534/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_2', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '2:3', - width: 800, - height: 1111, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_2/version/0/width/800/height/1111/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_2', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '2:3', - width: 600, - height: 900, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_2/version/0/width/600/height/900/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_2', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 282, - height: 158, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/282/height/158/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '2:3', - width: 180, - height: 270, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_2/version/0/width/180/height/270/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_2', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 105, - height: 80, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/105/height/80/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 195, - height: 150, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/195/height/150/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 105, - height: 55, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/105/height/55/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 70, - height: 52, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/70/height/52/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 590, - height: 445, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/590/height/445/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 300, - height: 250, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/300/height/250/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '1:1', - width: 500, - height: 500, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_12/version/0/width/500/height/500/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_12', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '2:1', - width: 200, - height: 100, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_17/version/0/width/200/height/100/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_17', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '4:3', - width: 400, - height: 300, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_3/version/0/width/400/height/300/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_3', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '16:9', - width: 1080, - height: 1960, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/1080/height/1960/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', - isDefault: false, - objectType: 'KalturaMediaImage' - }, - { - ratio: '1:1', - width: 800, - height: 800, - url: - 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_12/version/0/width/800/height/800/quality/100', - version: 0, - id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_12', - isDefault: false, - objectType: 'KalturaMediaImage' - } - ], - mediaFiles: [ - { - assetId: 276507, - id: 552351, - type: 'Mobile_Devices_Main_SD', - url: - 'http://cdnapi.kaltura.com/p/931702/sp/93170200/playManifest/entryId/1_oorxcge2/format/applehttp/protocol/http/uiConfId/28428751/a.m3u8', - duration: 0, - externalId: '', - fileSize: 0, - objectType: 'KalturaMediaFile' - }, - { - assetId: 276507, - id: 552352, - type: 'Mobile_Devices_Main_HD', - url: - 'http://cdnapi.kaltura.com/p/931702/sp/93170200/playManifest/entryId/1_oorxcge2/format/applehttp/protocol/http/uiConfId/28428751/a.m3u8', - duration: 0, - externalId: '', - fileSize: 0, - objectType: 'KalturaMediaFile' - } - ], - metas: { - synopsis: { - value: '', - objectType: 'KalturaMultilingualStringValue' - }, - 'Short title': { - value: '', - objectType: 'KalturaMultilingualStringValue' - }, - Runtime: { - value: '220', - objectType: 'KalturaMultilingualStringValue' - }, - 'Catchup logo URL': { - value: '', - objectType: 'KalturaMultilingualStringValue' - }, - 'App Link': { - value: '', - objectType: 'KalturaMultilingualStringValue' - }, - Country: { - value: '', - objectType: 'KalturaMultilingualStringValue' - }, - QUALITY: { - value: '', - objectType: 'KalturaMultilingualStringValue' - }, - 'Epg ID': { - value: '1073', - objectType: 'KalturaMultilingualStringValue' - }, - 'Channel number': { - value: 19, - objectType: 'KalturaDoubleValue' - }, - 'Epg guid ID': { - value: 1073, - objectType: 'KalturaDoubleValue' - }, - 'Catchup allowed': { - value: false, - objectType: 'KalturaBooleanValue' - } + response: { + result: [ + { + ks: + 'djJ8MTk4fEiDJqfTA_nqary8_jB-U-W0ne3JNVaZW5JmZDufdRcmcTGy3pAquXoMvFbANe6h63lEhxCo7mMZTsMTP5k4QDmOq99dRsPEsHUwOknv_9wvR_J2pbNzdXmlZ4JlYgO0ZcUr9_7tsZhqrHRfIcgrSj4=', + refreshToken: 'b07f74dfe6584790b272eb742577369b', + objectType: 'KalturaLoginSession' }, - tags: { - Free: { - objects: [ - { - value: 'yes', - objectType: 'KalturaMultilingualStringValue' - }, - { - value: 'no', - objectType: 'KalturaMultilingualStringValue' - } - ], - objectType: 'KalturaMultilingualStringValueArray' - }, - Genre: { - objects: [ - { - value: 'History', - objectType: 'KalturaMultilingualStringValue' - } - ], - objectType: 'KalturaMultilingualStringValueArray' - }, - 'Parental Rating': { - objects: [ - { - value: 'PG', - objectType: 'KalturaMultilingualStringValue' - } - ], - objectType: 'KalturaMultilingualStringValueArray' - }, - QUALITY: { - objects: [ - { - value: 'hd', - objectType: 'KalturaMultilingualStringValue' - } - ], - objectType: 'KalturaMultilingualStringValueArray' - }, - Source: { - objects: [ - { - value: 'Web3', - objectType: 'KalturaMultilingualStringValue' - } - ], - objectType: 'KalturaMultilingualStringValueArray' - } + { + externalIds: '1073', + catchUpBuffer: 10080, + trickPlayBuffer: 0, + enableRecordingPlaybackNonEntitledChannel: true, + entryId: '', + id: 276507, + type: 422, + name: 'USA', + description: '***nadya_aes***', + images: [ + { + ratio: '16:9', + width: 153, + height: 86, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/153/height/86/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 302, + height: 170, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/302/height/170/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 568, + height: 320, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/568/height/320/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 960, + height: 540, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/960/height/540/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 1280, + height: 720, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/1280/height/720/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 2048, + height: 1152, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/2048/height/1152/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '1:1', + width: 70, + height: 70, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_12/version/0/width/70/height/70/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_12', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '1:1', + width: 100, + height: 100, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_12/version/0/width/100/height/100/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_12', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '2:3', + width: 103, + height: 154, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_2/version/0/width/103/height/154/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_2', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '2:3', + width: 149, + height: 223, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_2/version/0/width/149/height/223/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_2', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '2:3', + width: 212, + height: 318, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_2/version/0/width/212/height/318/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_2', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '2:3', + width: 355, + height: 534, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_2/version/0/width/355/height/534/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_2', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '2:3', + width: 800, + height: 1111, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_2/version/0/width/800/height/1111/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_2', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '2:3', + width: 600, + height: 900, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_2/version/0/width/600/height/900/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_2', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 282, + height: 158, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/282/height/158/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '2:3', + width: 180, + height: 270, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_2/version/0/width/180/height/270/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_2', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 105, + height: 80, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/105/height/80/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 195, + height: 150, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/195/height/150/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 105, + height: 55, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/105/height/55/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 70, + height: 52, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/70/height/52/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 590, + height: 445, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/590/height/445/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 300, + height: 250, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/300/height/250/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '1:1', + width: 500, + height: 500, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_12/version/0/width/500/height/500/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_12', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '2:1', + width: 200, + height: 100, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_17/version/0/width/200/height/100/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_17', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '4:3', + width: 400, + height: 300, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_3/version/0/width/400/height/300/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_3', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '16:9', + width: 1080, + height: 1960, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_1/version/0/width/1080/height/1960/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_1', + isDefault: false, + objectType: 'KalturaMediaImage' + }, + { + ratio: '1:1', + width: 800, + height: 800, + url: + 'http://imageserver-1655531075.eu-west-1.elb.amazonaws.com/ImageServer/Service.svc/GetImage/p/198/entry_id/6c5a2e51f3354e75b2e4fe8a5f8dab33_12/version/0/width/800/height/800/quality/100', + version: 0, + id: '6c5a2e51f3354e75b2e4fe8a5f8dab33_12', + isDefault: false, + objectType: 'KalturaMediaImage' + } + ], + mediaFiles: [ + { + assetId: 276507, + id: 552351, + type: 'Mobile_Devices_Main_SD', + url: + 'http://cdnapi.kaltura.com/p/931702/sp/93170200/playManifest/entryId/1_oorxcge2/format/applehttp/protocol/http/uiConfId/28428751/a.m3u8', + duration: 0, + externalId: '', + fileSize: 0, + objectType: 'KalturaMediaFile' + }, + { + assetId: 276507, + id: 552352, + type: 'Mobile_Devices_Main_HD', + url: + 'http://cdnapi.kaltura.com/p/931702/sp/93170200/playManifest/entryId/1_oorxcge2/format/applehttp/protocol/http/uiConfId/28428751/a.m3u8', + duration: 0, + externalId: '', + fileSize: 0, + objectType: 'KalturaMediaFile' + } + ], + metas: { + synopsis: { + value: '', + objectType: 'KalturaMultilingualStringValue' + }, + 'Short title': { + value: '', + objectType: 'KalturaMultilingualStringValue' + }, + Runtime: { + value: '220', + objectType: 'KalturaMultilingualStringValue' + }, + 'Catchup logo URL': { + value: '', + objectType: 'KalturaMultilingualStringValue' + }, + 'App Link': { + value: '', + objectType: 'KalturaMultilingualStringValue' + }, + Country: { + value: '', + objectType: 'KalturaMultilingualStringValue' + }, + QUALITY: { + value: '', + objectType: 'KalturaMultilingualStringValue' + }, + 'Epg ID': { + value: '1073', + objectType: 'KalturaMultilingualStringValue' + }, + 'Channel number': { + value: 19, + objectType: 'KalturaDoubleValue' + }, + 'Epg guid ID': { + value: 1073, + objectType: 'KalturaDoubleValue' + }, + 'Catchup allowed': { + value: false, + objectType: 'KalturaBooleanValue' + } + }, + tags: { + Free: { + objects: [ + { + value: 'yes', + objectType: 'KalturaMultilingualStringValue' + }, + { + value: 'no', + objectType: 'KalturaMultilingualStringValue' + } + ], + objectType: 'KalturaMultilingualStringValueArray' + }, + Genre: { + objects: [ + { + value: 'History', + objectType: 'KalturaMultilingualStringValue' + } + ], + objectType: 'KalturaMultilingualStringValueArray' + }, + 'Parental Rating': { + objects: [ + { + value: 'PG', + objectType: 'KalturaMultilingualStringValue' + } + ], + objectType: 'KalturaMultilingualStringValueArray' + }, + QUALITY: { + objects: [ + { + value: 'hd', + objectType: 'KalturaMultilingualStringValue' + } + ], + objectType: 'KalturaMultilingualStringValueArray' + }, + Source: { + objects: [ + { + value: 'Web3', + objectType: 'KalturaMultilingualStringValue' + } + ], + objectType: 'KalturaMultilingualStringValueArray' + } + }, + startDate: 946684800, + endDate: 2524608000, + enableCdvr: true, + enableCatchUp: true, + enableStartOver: true, + enableTrickPlay: true, + objectType: 'KalturaMediaAsset' }, - startDate: 946684800, - endDate: 2524608000, - enableCdvr: true, - enableCatchUp: true, - enableStartOver: true, - enableTrickPlay: true, - objectType: 'KalturaMediaAsset' - }, - { - sources: [ - { - format: 'applehttp', - protocols: 'http', - drm: [], - assetId: 276507, - id: 552351, - type: 'Mobile_Devices_Main_SD', - url: - 'http://api-preprod.ott.kaltura.com/v4_7/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/276507/assetType/media/assetFileId/552351/contextType/PLAYBACK/a.m3u8', - duration: 0, - externalId: '', - fileSize: 0, - objectType: 'KalturaPlaybackSource' - }, - { - format: 'applehttp', - protocols: 'http', - drm: [], - assetId: 276507, - id: 552352, - type: 'Mobile_Devices_Main_HD', - url: - 'http://api-preprod.ott.kaltura.com/v4_7/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/276507/assetType/media/assetFileId/552352/contextType/PLAYBACK/a.m3u8', - duration: 0, - externalId: '', - fileSize: 0, - objectType: 'KalturaPlaybackSource' - } - ], - messages: [ - { - message: 'OK', - code: 'OK', - objectType: 'KalturaAccessControlMessage' - } - ], - objectType: 'KalturaPlaybackContext' - } - ], - executionTime: 0.3984844 + { + sources: [ + { + format: 'applehttp', + protocols: 'http', + drm: [], + assetId: 276507, + id: 552351, + type: 'Mobile_Devices_Main_SD', + url: + 'http://api-preprod.ott.kaltura.com/v4_7/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/276507/assetType/media/assetFileId/552351/contextType/PLAYBACK/a.m3u8', + duration: 0, + externalId: '', + fileSize: 0, + objectType: 'KalturaPlaybackSource' + }, + { + format: 'applehttp', + protocols: 'http', + drm: [], + assetId: 276507, + id: 552352, + type: 'Mobile_Devices_Main_HD', + url: + 'http://api-preprod.ott.kaltura.com/v4_7/api_v3/service/assetFile/action/playManifest/partnerId/198/assetId/276507/assetType/media/assetFileId/552352/contextType/PLAYBACK/a.m3u8', + duration: 0, + externalId: '', + fileSize: 0, + objectType: 'KalturaPlaybackSource' + } + ], + messages: [ + { + message: 'OK', + code: 'OK', + objectType: 'KalturaAccessControlMessage' + } + ], + objectType: 'KalturaPlaybackContext' + } + ], + executionTime: 0.3984844 + } }; export {AnonymousEntryWithoutUIConfWithDrmData, LiveEntryNoDrmData}; diff --git a/test/src/k-provider/ott/provider.spec.js b/test/src/k-provider/ott/provider.spec.js index 0f96ffdf..ef65a05a 100644 --- a/test/src/k-provider/ott/provider.spec.js +++ b/test/src/k-provider/ott/provider.spec.js @@ -9,7 +9,6 @@ const playerVersion = '1.2.3'; describe('OTTProvider.partnerId:198', function() { let provider, sandbox; - beforeEach(() => { sandbox = sinon.sandbox.create(); provider = new OTTProvider({partnerId: partnerId}, playerVersion); @@ -23,8 +22,7 @@ describe('OTTProvider.partnerId:198', function() { it('should return config without plugins and with drm data', done => { sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function() { return new Promise(resolve => { - const response = new MultiRequestResult(BE_DATA.AnonymousEntryWithoutUIConfWithDrmData); - resolve(response); + resolve({response: new MultiRequestResult(BE_DATA.AnonymousEntryWithoutUIConfWithDrmData.response)}); }); }); provider.getMediaConfig({entryId: 480097}).then( @@ -45,8 +43,7 @@ describe('OTTProvider.partnerId:198', function() { it('should return config filtered by device types', done => { sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function() { return new Promise(resolve => { - const response = new MultiRequestResult(BE_DATA.AnonymousEntryWithoutUIConfWithDrmData); - resolve(response); + resolve({response: new MultiRequestResult(BE_DATA.AnonymousEntryWithoutUIConfWithDrmData.response)}); }); }); provider @@ -72,8 +69,7 @@ describe('OTTProvider.partnerId:198', function() { it('should return entry of live type', done => { sinon.stub(MultiRequestBuilder.prototype, 'execute').callsFake(function() { return new Promise(resolve => { - const response = new MultiRequestResult(BE_DATA.LiveEntryNoDrmData); - resolve(response); + resolve({response: new MultiRequestResult(BE_DATA.LiveEntryNoDrmData.response)}); }); }); provider.getMediaConfig({entryId: 276507}).then( diff --git a/test/src/k-provider/ovp/be-data.js b/test/src/k-provider/ovp/be-data.js index 451b7118..3b94a73d 100644 --- a/test/src/k-provider/ovp/be-data.js +++ b/test/src/k-provider/ovp/be-data.js @@ -1,1571 +1,1589 @@ //@flow -const AnonymousMocEntryWithoutUIConfNoDrmData = [ - { - partnerId: 1082342, - ks: - 'OGM0ZWM0Y2IwOWI5ZjM0MDcyZmQ3YmYxNzBiMGEwNGYxNWQ0ZTcyOXwxMDgyMzQyOzEwODIzNDI7MTQ5MDExNTg5MzswOzE0OTAwMjk0OTMuMTY3ODswO3ZpZXc6Kix3aWRnZXQ6MTs7', - userId: 0, - objectType: 'KalturaStartWidgetSessionResponse' - }, - { - objects: [ - { - mediaType: 1, - dataUrl: 'http://cdnapi.kaltura.com/p/1082342/sp/108234200/playManifest/entryId/1_rsrdfext/format/url/protocol/http', - flavorParamsIds: '0,487041,487051,487061,487071,487081,487091', - duration: 55, - msDuration: 55047, - id: '1_rsrdfext', - name: 'FO21934-HDTX-SWE', - tags: '', - type: 1, - description: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vel semper libero. Curabitur in felis elementum, porttitor sem ac, volutpat mi. Sed dignissim facilisis magna, ac suscipit orci suscipit id. Suspendisse feugiat sapien laoreet auctor convallis. Cras volutpat dictum massa, in pharetra erat placerat eget. Donec at elit est. Donec id cursus elit. Etiam sit amet sapien sed mi aliquam finibus at lobortis diam. Aenean at gravida libero.', - thumbnailUrl: 'http://kaltura.com/p/1082342/sp/108234200/thumbnail/entry_id/1_rsrdfext/version/100002/width/640/height/360', - objectType: 'KalturaMediaEntry' - } - ], - totalCount: 1, - objectType: 'KalturaBaseEntryListResponse' - }, - { - sources: [ - { - deliveryProfileId: 10081, - format: 'url', - protocols: 'http,https', - flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', - url: - 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/10081/protocol/https/format/url/name/a.mov', - drm: [], - objectType: 'KalturaPlaybackSource' - }, - { - deliveryProfileId: 10101, - format: 'hdnetworkmanifest', - protocols: 'http,https', - flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', - url: - 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/10101/protocol/https/format/hdnetworkmanifest/manifest.f4m', - drm: [], - objectType: 'KalturaPlaybackSource' - }, - { - deliveryProfileId: 10091, - format: 'applehttp', - protocols: 'http,https', - flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', - url: - 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/10091/protocol/https/format/applehttp/a.m3u8', - drm: [], - objectType: 'KalturaPlaybackSource' - }, - { - deliveryProfileId: 11241, - format: 'applehttp', - protocols: 'http,https', - flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', - url: - 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/11241/protocol/https/format/applehttp/a.m3u8', - drm: [], - objectType: 'KalturaPlaybackSource' - }, - { - deliveryProfileId: 11611, - format: 'mpegdash', - protocols: 'http,https', - flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', - url: - 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/11611/protocol/https/format/mpegdash/manifest.mpd', - drm: [], - objectType: 'KalturaPlaybackSource' - }, - { - deliveryProfileId: 11261, - format: 'mpegdash', - protocols: 'http,https', - flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', - url: - 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/11261/protocol/https/format/mpegdash/manifest.mpd', - drm: [], - objectType: 'KalturaPlaybackSource' - }, - { - deliveryProfileId: 11251, - format: 'sl', - protocols: 'http,https', - flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', - url: - 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/11251/protocol/https/format/sl/a.ism', - drm: [], - objectType: 'KalturaPlaybackSource' - } - ], - flavorAssets: [ - { - flavorParamsId: 487041, - width: 640, - height: 360, - bitrate: 471, - frameRate: 25, - isOriginal: false, - isWeb: true, - containerFormat: 'isom', - videoCodecId: 'avc1', - status: 2, - language: 'Undefined', - id: '1_ha0nqwz8', - entryId: '1_rsrdfext', - partnerId: 1082342, - version: '1', - size: 3164, - tags: 'mobile,web,mbr,iphone,iphonenew', - fileExt: 'mp4', - createdAt: 1484777022, - updatedAt: 1484777079, - description: '', - objectType: 'KalturaFlavorAsset' - }, - { - flavorParamsId: 487051, - width: 640, - height: 360, - bitrate: 670, - frameRate: 25, - isOriginal: false, - isWeb: true, - containerFormat: 'isom', - videoCodecId: 'avc1', - status: 2, - language: 'Undefined', - id: '1_gw7u4nf1', - entryId: '1_rsrdfext', - partnerId: 1082342, - version: '1', - size: 4505, - tags: 'mobile,web,mbr,iphone,iphonenew', - fileExt: 'mp4', - createdAt: 1484777022, - updatedAt: 1484777079, - description: 'audio warnings: 2106,#Redundant bitrate.\n', - objectType: 'KalturaFlavorAsset' - }, - { - flavorParamsId: 487061, - width: 640, - height: 360, - bitrate: 964, - frameRate: 25, - isOriginal: false, - isWeb: true, - containerFormat: 'isom', - videoCodecId: 'avc1', - status: 2, - language: 'Undefined', - id: '1_rql6sqaa', - entryId: '1_rsrdfext', - partnerId: 1082342, - version: '1', - size: 6400, - tags: 'mobile,web,mbr,ipad,ipadnew,dash', - fileExt: 'mp4', - createdAt: 1484777022, - updatedAt: 1484777064, - description: 'audio warnings: 2106,#Redundant bitrate.\n', - objectType: 'KalturaFlavorAsset' - }, - { - flavorParamsId: 487071, - width: 1280, - height: 720, - bitrate: 1547, - frameRate: 25, - isOriginal: false, - isWeb: true, - containerFormat: 'isom', - videoCodecId: 'avc1', - status: 2, - language: 'Undefined', - id: '1_sufd1yd9', - entryId: '1_rsrdfext', - partnerId: 1082342, - version: '1', - size: 10444, - tags: 'mobile,web,mbr,ipad,ipadnew,dash', - fileExt: 'mp4', - createdAt: 1484777022, - updatedAt: 1484777080, - description: '', - objectType: 'KalturaFlavorAsset' - }, - { - flavorParamsId: 487081, - width: 1280, - height: 720, - bitrate: 2628, - frameRate: 25, - isOriginal: false, - isWeb: true, - containerFormat: 'isom', - videoCodecId: 'avc1', - status: 2, - language: 'Undefined', - id: '1_9xvkk7a5', - entryId: '1_rsrdfext', - partnerId: 1082342, - version: '1', - size: 17408, - tags: 'web,mbr,dash', - fileExt: 'mp4', - createdAt: 1484777022, - updatedAt: 1484777115, - description: 'audio warnings: 2106,#Redundant bitrate.\n', - objectType: 'KalturaFlavorAsset' - }, - { - flavorParamsId: 487091, - width: 1920, - height: 1080, - bitrate: 4128, - frameRate: 25, - isOriginal: false, - isWeb: true, - containerFormat: 'isom', - videoCodecId: 'avc1', - status: 2, - language: 'Undefined', - id: '1_4typ4pat', - entryId: '1_rsrdfext', - partnerId: 1082342, - version: '1', - size: 27443, - tags: 'web,mbr,dash', - fileExt: 'mp4', - createdAt: 1484777023, - updatedAt: 1484777325, - description: 'audio warnings: 2106,#Redundant bitrate.\n', - objectType: 'KalturaFlavorAsset' - }, - { - flavorParamsId: 0, - width: 1920, - height: 1080, - bitrate: 18022, - frameRate: 25, - isOriginal: true, - isWeb: false, - containerFormat: 'qt', - videoCodecId: 'avc1', - status: 2, - language: 'English', - id: '1_n75294r4', - entryId: '1_rsrdfext', - partnerId: 1082342, - version: '1', - size: 117760, - tags: 'source', - fileExt: 'mov', - createdAt: 1484776914, - updatedAt: 1484777022, - description: '', - objectType: 'KalturaFlavorAsset' - } - ], - actions: [], - messages: [ - { - message: "Out of scheduling\nWe're sorry, this content is currently unavailable.", - code: 'SCHEDULED_RESTRICTED', - objectType: 'KalturaAccessControlMessage' - } - ], - objectType: 'KalturaPlaybackContext' - }, - { - objects: [ - { - id: 331744001, - partnerId: 1082342, - metadataProfileId: 244381, - metadataProfileVersion: 421, - metadataObjectType: 1, - objectId: '1_rsrdfext', - version: 1, - createdAt: 1484776887, - updatedAt: 1484776887, - status: 1, - xml: - '\nFO21934-HDTX-SWE.mov\nsv_SE\nFTA-nm\ntv-dc\nclip\nDisney Channel\nIBMS\nShow - TV\n1483225200\n1485903600\nNo Age Consent\n', - objectType: 'KalturaMetadata' - }, - { - id: 331744121, - partnerId: 1082342, - metadataProfileId: 7330521, - metadataProfileVersion: 61, - metadataObjectType: 1, - objectId: '1_rsrdfext', - version: 11, - createdAt: 1484776903, - updatedAt: 1489508219, - status: 1, - xml: - '\n FO21934-HDTX-SWE\n se-dc-lf\n VOD\n android\n Disney Channel SE\n\n', - objectType: 'KalturaMetadata' - } - ], - totalCount: 2, - objectType: 'KalturaMetadataListResponse' - } -]; - -const AnonymousMocEntryWithoutUIConfWithDrmData = [ - { - objects: [ - { - mediaType: 1, - dataUrl: 'http://cdnapi.kaltura.com/p/1068292/sp/106829200/playManifest/entryId/1_rwbj3j0a/format/url/protocol/http', - flavorParamsIds: '0,525091,525101,525111,525121', - duration: 596, - msDuration: 596000, - id: '1_rwbj3j0a', - name: 'DRM TEST', - type: 1, - description: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vel semper libero. Curabitur in felis elementum, porttitor sem ac, volutpat mi. Sed dignissim facilisis magna, ac suscipit orci suscipit id. Suspendisse feugiat sapien laoreet auctor convallis. Cras volutpat dictum massa, in pharetra erat placerat eget. Donec at elit est. Donec id cursus elit. Etiam sit amet sapien sed mi aliquam finibus at lobortis diam. Aenean at gravida libero.', - thumbnailUrl: 'http://kaltura.com/p/1082342/sp/108234200/thumbnail/entry_id/1_rsrdfext/version/100002/width/640/height/360', - objectType: 'KalturaMediaEntry' - } - ], - totalCount: 1, - objectType: 'KalturaBaseEntryListResponse' - }, - { - sources: [ - { - deliveryProfileId: 11311, - format: 'applehttp', - protocols: 'http,https', - flavorIds: '1_92dfyrz5,1_9dhh6m0i,1_zudouuah,1_r0wu6y77,1_oz343kla', - url: - 'https://cdnapisec.kaltura.com/p/1068292/sp/1068292/playManifest/entryId/1_rwbj3j0a/flavorIds/1_92dfyrz5,1_9dhh6m0i,1_zudouuah,1_r0wu6y77,1_oz343kla/deliveryProfileId/11311/protocol/https/format/applehttp/a.m3u8', - drm: [ - { - certificate: 'ABCD1234', - scheme: 'fairplay.FAIRPLAY', - licenseURL: - 'https://udrmv3.kaltura.com//fps/license?custom_data=eyJjYV9zeXN0ZW0iOiJPVlAiLCJ1c2VyX3Rva2VuIjoiTlRBd1pqVmlaV1pqWTJOak5UUmtOR0V5TWpVMU1UZzRPR0UxTm1Vd05EbGpaV0prTXprMU1Yd3hNRFk0TWpreU96RXdOamd5T1RJN01UUTVNREUzTmpFME5qc3dPekUwT1RBd09EazNORFl1TURJeU5qc3dPM1pwWlhjNktpeDNhV1JuWlhRNk1UczciLCJhY2NvdW50X2lkIjoxMDY4MjkyLCJjb250ZW50X2lkIjoiMV9yd2JqM2owYSIsImZpbGVzIjoiMV85MmRmeXJ6NSwxXzlkaGg2bTBpLDFfenVkb3V1YWgsMV9yMHd1Nnk3NywxX296MzQza2xhIn0%3D&signature=jl09zYv64OyEfVUt85rlA0WnK1w%3D', - objectType: 'KalturaFairPlayPlaybackPluginData' - } - ], - objectType: 'KalturaPlaybackSource' - }, - { - deliveryProfileId: 11331, - format: 'mpegdash', - protocols: 'http,https', - flavorIds: '1_92dfyrz5,1_9dhh6m0i,1_zudouuah,1_r0wu6y77,1_oz343kla', - url: - 'https://cdnapisec.kaltura.com/p/1068292/sp/1068292/playManifest/entryId/1_rwbj3j0a/flavorIds/1_92dfyrz5,1_9dhh6m0i,1_zudouuah,1_r0wu6y77,1_oz343kla/deliveryProfileId/11331/protocol/https/format/mpegdash/manifest.mpd', - drm: [ - { - scheme: 'drm.PLAYREADY_CENC', - licenseURL: - 'https://udrm.kaltura.com//cenc/playready/license?custom_data=eyJjYV9zeXN0ZW0iOiJPVlAiLCJ1c2VyX3Rva2VuIjoiTlRBd1pqVmlaV1pqWTJOak5UUmtOR0V5TWpVMU1UZzRPR0UxTm1Vd05EbGpaV0prTXprMU1Yd3hNRFk0TWpreU96RXdOamd5T1RJN01UUTVNREUzTmpFME5qc3dPekUwT1RBd09EazNORFl1TURJeU5qc3dPM1pwWlhjNktpeDNhV1JuWlhRNk1UczciLCJhY2NvdW50X2lkIjoxMDY4MjkyLCJjb250ZW50X2lkIjoiMV9yd2JqM2owYSIsImZpbGVzIjoiMV85MmRmeXJ6NSwxXzlkaGg2bTBpLDFfenVkb3V1YWgsMV9yMHd1Nnk3NywxX296MzQza2xhIn0%3D&signature=jl09zYv64OyEfVUt85rlA0WnK1w%3D', - objectType: 'KalturaDrmPlaybackPluginData' - }, - { - scheme: 'drm.WIDEVINE_CENC', - licenseURL: - 'https://udrm.kaltura.com//cenc/widevine/license?custom_data=eyJjYV9zeXN0ZW0iOiJPVlAiLCJ1c2VyX3Rva2VuIjoiTlRBd1pqVmlaV1pqWTJOak5UUmtOR0V5TWpVMU1UZzRPR0UxTm1Vd05EbGpaV0prTXprMU1Yd3hNRFk0TWpreU96RXdOamd5T1RJN01UUTVNREUzTmpFME5qc3dPekUwT1RBd09EazNORFl1TURJeU5qc3dPM1pwWlhjNktpeDNhV1JuWlhRNk1UczciLCJhY2NvdW50X2lkIjoxMDY4MjkyLCJjb250ZW50X2lkIjoiMV9yd2JqM2owYSIsImZpbGVzIjoiMV85MmRmeXJ6NSwxXzlkaGg2bTBpLDFfenVkb3V1YWgsMV9yMHd1Nnk3NywxX296MzQza2xhIn0%3D&signature=jl09zYv64OyEfVUt85rlA0WnK1w%3D', - objectType: 'KalturaDrmPlaybackPluginData' - } - ], - objectType: 'KalturaPlaybackSource' - }, - { - deliveryProfileId: 11321, - format: 'sl', - protocols: 'http,https', - flavorIds: '1_92dfyrz5,1_9dhh6m0i,1_zudouuah,1_r0wu6y77,1_oz343kla', - url: - 'https://cdnapisec.kaltura.com/p/1068292/sp/1068292/playManifest/entryId/1_rwbj3j0a/flavorIds/1_92dfyrz5,1_9dhh6m0i,1_zudouuah,1_r0wu6y77,1_oz343kla/deliveryProfileId/11321/protocol/https/format/sl/a.ism', - drm: [], - objectType: 'KalturaPlaybackSource' - } - ], - flavorAssets: [ - { - flavorParamsId: 525091, - width: 480, - height: 272, - bitrate: 468, - frameRate: 24, - isOriginal: false, - isWeb: true, - containerFormat: 'isom', - videoCodecId: 'avc1', - status: 2, - language: 'Undefined', - id: '1_92dfyrz5', - entryId: '1_rwbj3j0a', - partnerId: 1068292, - version: '1', - size: 34099, - tags: 'mobile,web,mbr,iphone,iphonenew', - fileExt: 'mp4', - createdAt: 1485272387, - updatedAt: 1485272469, - description: '', - objectType: 'KalturaFlavorAsset' - }, - { - flavorParamsId: 525101, - width: 640, - height: 360, - bitrate: 667, - frameRate: 24, - isOriginal: false, - isWeb: true, - containerFormat: 'isom', - videoCodecId: 'avc1', - status: 2, - language: 'Undefined', - id: '1_9dhh6m0i', - entryId: '1_rwbj3j0a', - partnerId: 1068292, - version: '1', - size: 48537, - tags: 'mobile,web,mbr,iphone,iphonenew', - fileExt: 'mp4', - createdAt: 1485272387, - updatedAt: 1485272469, - description: 'audio warnings: 2106,#Redundant bitrate.\n', - objectType: 'KalturaFlavorAsset' - }, - { - flavorParamsId: 525111, - width: 640, - height: 360, - bitrate: 964, - frameRate: 24, - isOriginal: false, - isWeb: true, - containerFormat: 'isom', - videoCodecId: 'avc1', - status: 2, - language: 'Undefined', - id: '1_zudouuah', - entryId: '1_rwbj3j0a', - partnerId: 1068292, - version: '1', - size: 68505, - tags: 'mobile,web,mbr,ipad,ipadnew,dash', - fileExt: 'mp4', - createdAt: 1485272388, - updatedAt: 1485272499, - description: 'audio warnings: 2106,#Redundant bitrate.\n', - objectType: 'KalturaFlavorAsset' - }, - { - flavorParamsId: 525121, - width: 848, - height: 480, - bitrate: 1378, - frameRate: 24, - isOriginal: false, - isWeb: true, - containerFormat: 'isom', - videoCodecId: 'avc1', - status: 2, - language: 'Undefined', - id: '1_r0wu6y77', - entryId: '1_rwbj3j0a', - partnerId: 1068292, - version: '1', - size: 100249, - tags: 'mobile,web,mbr,ipad,ipadnew,dash', - fileExt: 'mp4', - createdAt: 1485272388, - updatedAt: 1485272564, - description: '', - objectType: 'KalturaFlavorAsset' - }, - { - flavorParamsId: 0, - width: 854, - height: 480, - bitrate: 2958, - frameRate: 24, - isOriginal: true, - isWeb: false, - containerFormat: 'avi', - videoCodecId: 'fmp4', - status: 2, - id: '1_oz343kla', - entryId: '1_rwbj3j0a', - partnerId: 1068292, - version: '11', - size: 215040, - tags: 'source', - fileExt: 'avi', - createdAt: 1485272298, - updatedAt: 1485272387, - description: '', - objectType: 'KalturaFlavorAsset' - } - ], - actions: [ - { - deliveryProfileIds: '11311,11321,11331', - type: 5, - objectType: 'KalturaAccessControlLimitDeliveryProfilesAction' - }, - { - policyId: 4081, - type: 'DRM_POLICY', - objectType: 'KalturaAccessControlDrmPolicyAction' - } - ], - messages: [], - objectType: 'KalturaPlaybackContext' - }, - { - objects: [], - totalCount: 0, - objectType: 'KalturaMetadataListResponse' - } -]; - -const WrongEntryIDWithoutUIConf = [ - { - partnerId: 1068292, - ks: - 'NjVjMDdlZmUxY2VlMGI2YWMyYmZjOTczOTA5ZjhjNDIwMTJmODI3MXwxMDY4MjkyOzEwNjgyOTI7MTQ5MDE5MzIyNjswOzE0OTAxMDY4MjYuOTc2NDswO3ZpZXc6Kix3aWRnZXQ6MTs7', - userId: 0, - objectType: 'KalturaStartWidgetSessionResponse' - }, - { - code: 'INVALID_ENTRY_ID', - message: 'Invalid entry id ["1_rwbj3j0a55"]', - objectType: 'KalturaAPIException', - args: { - ID: '1_rwbj3j0a55' +const AnonymousMocEntryWithoutUIConfNoDrmData = { + response: [ + { + partnerId: 1082342, + ks: + 'OGM0ZWM0Y2IwOWI5ZjM0MDcyZmQ3YmYxNzBiMGEwNGYxNWQ0ZTcyOXwxMDgyMzQyOzEwODIzNDI7MTQ5MDExNTg5MzswOzE0OTAwMjk0OTMuMTY3ODswO3ZpZXc6Kix3aWRnZXQ6MTs7', + userId: 0, + objectType: 'KalturaStartWidgetSessionResponse' + }, + { + objects: [ + { + mediaType: 1, + dataUrl: 'http://cdnapi.kaltura.com/p/1082342/sp/108234200/playManifest/entryId/1_rsrdfext/format/url/protocol/http', + flavorParamsIds: '0,487041,487051,487061,487071,487081,487091', + duration: 55, + msDuration: 55047, + id: '1_rsrdfext', + name: 'FO21934-HDTX-SWE', + tags: '', + type: 1, + description: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vel semper libero. Curabitur in felis elementum, porttitor sem ac, volutpat mi. Sed dignissim facilisis magna, ac suscipit orci suscipit id. Suspendisse feugiat sapien laoreet auctor convallis. Cras volutpat dictum massa, in pharetra erat placerat eget. Donec at elit est. Donec id cursus elit. Etiam sit amet sapien sed mi aliquam finibus at lobortis diam. Aenean at gravida libero.', + thumbnailUrl: 'http://kaltura.com/p/1082342/sp/108234200/thumbnail/entry_id/1_rsrdfext/version/100002/width/640/height/360', + objectType: 'KalturaMediaEntry' + } + ], + totalCount: 1, + objectType: 'KalturaBaseEntryListResponse' + }, + { + sources: [ + { + deliveryProfileId: 10081, + format: 'url', + protocols: 'http,https', + flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', + url: + 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/10081/protocol/https/format/url/name/a.mov', + drm: [], + objectType: 'KalturaPlaybackSource' + }, + { + deliveryProfileId: 10101, + format: 'hdnetworkmanifest', + protocols: 'http,https', + flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', + url: + 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/10101/protocol/https/format/hdnetworkmanifest/manifest.f4m', + drm: [], + objectType: 'KalturaPlaybackSource' + }, + { + deliveryProfileId: 10091, + format: 'applehttp', + protocols: 'http,https', + flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', + url: + 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/10091/protocol/https/format/applehttp/a.m3u8', + drm: [], + objectType: 'KalturaPlaybackSource' + }, + { + deliveryProfileId: 11241, + format: 'applehttp', + protocols: 'http,https', + flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', + url: + 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/11241/protocol/https/format/applehttp/a.m3u8', + drm: [], + objectType: 'KalturaPlaybackSource' + }, + { + deliveryProfileId: 11611, + format: 'mpegdash', + protocols: 'http,https', + flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', + url: + 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/11611/protocol/https/format/mpegdash/manifest.mpd', + drm: [], + objectType: 'KalturaPlaybackSource' + }, + { + deliveryProfileId: 11261, + format: 'mpegdash', + protocols: 'http,https', + flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', + url: + 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/11261/protocol/https/format/mpegdash/manifest.mpd', + drm: [], + objectType: 'KalturaPlaybackSource' + }, + { + deliveryProfileId: 11251, + format: 'sl', + protocols: 'http,https', + flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', + url: + 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/11251/protocol/https/format/sl/a.ism', + drm: [], + objectType: 'KalturaPlaybackSource' + } + ], + flavorAssets: [ + { + flavorParamsId: 487041, + width: 640, + height: 360, + bitrate: 471, + frameRate: 25, + isOriginal: false, + isWeb: true, + containerFormat: 'isom', + videoCodecId: 'avc1', + status: 2, + language: 'Undefined', + id: '1_ha0nqwz8', + entryId: '1_rsrdfext', + partnerId: 1082342, + version: '1', + size: 3164, + tags: 'mobile,web,mbr,iphone,iphonenew', + fileExt: 'mp4', + createdAt: 1484777022, + updatedAt: 1484777079, + description: '', + objectType: 'KalturaFlavorAsset' + }, + { + flavorParamsId: 487051, + width: 640, + height: 360, + bitrate: 670, + frameRate: 25, + isOriginal: false, + isWeb: true, + containerFormat: 'isom', + videoCodecId: 'avc1', + status: 2, + language: 'Undefined', + id: '1_gw7u4nf1', + entryId: '1_rsrdfext', + partnerId: 1082342, + version: '1', + size: 4505, + tags: 'mobile,web,mbr,iphone,iphonenew', + fileExt: 'mp4', + createdAt: 1484777022, + updatedAt: 1484777079, + description: 'audio warnings: 2106,#Redundant bitrate.\n', + objectType: 'KalturaFlavorAsset' + }, + { + flavorParamsId: 487061, + width: 640, + height: 360, + bitrate: 964, + frameRate: 25, + isOriginal: false, + isWeb: true, + containerFormat: 'isom', + videoCodecId: 'avc1', + status: 2, + language: 'Undefined', + id: '1_rql6sqaa', + entryId: '1_rsrdfext', + partnerId: 1082342, + version: '1', + size: 6400, + tags: 'mobile,web,mbr,ipad,ipadnew,dash', + fileExt: 'mp4', + createdAt: 1484777022, + updatedAt: 1484777064, + description: 'audio warnings: 2106,#Redundant bitrate.\n', + objectType: 'KalturaFlavorAsset' + }, + { + flavorParamsId: 487071, + width: 1280, + height: 720, + bitrate: 1547, + frameRate: 25, + isOriginal: false, + isWeb: true, + containerFormat: 'isom', + videoCodecId: 'avc1', + status: 2, + language: 'Undefined', + id: '1_sufd1yd9', + entryId: '1_rsrdfext', + partnerId: 1082342, + version: '1', + size: 10444, + tags: 'mobile,web,mbr,ipad,ipadnew,dash', + fileExt: 'mp4', + createdAt: 1484777022, + updatedAt: 1484777080, + description: '', + objectType: 'KalturaFlavorAsset' + }, + { + flavorParamsId: 487081, + width: 1280, + height: 720, + bitrate: 2628, + frameRate: 25, + isOriginal: false, + isWeb: true, + containerFormat: 'isom', + videoCodecId: 'avc1', + status: 2, + language: 'Undefined', + id: '1_9xvkk7a5', + entryId: '1_rsrdfext', + partnerId: 1082342, + version: '1', + size: 17408, + tags: 'web,mbr,dash', + fileExt: 'mp4', + createdAt: 1484777022, + updatedAt: 1484777115, + description: 'audio warnings: 2106,#Redundant bitrate.\n', + objectType: 'KalturaFlavorAsset' + }, + { + flavorParamsId: 487091, + width: 1920, + height: 1080, + bitrate: 4128, + frameRate: 25, + isOriginal: false, + isWeb: true, + containerFormat: 'isom', + videoCodecId: 'avc1', + status: 2, + language: 'Undefined', + id: '1_4typ4pat', + entryId: '1_rsrdfext', + partnerId: 1082342, + version: '1', + size: 27443, + tags: 'web,mbr,dash', + fileExt: 'mp4', + createdAt: 1484777023, + updatedAt: 1484777325, + description: 'audio warnings: 2106,#Redundant bitrate.\n', + objectType: 'KalturaFlavorAsset' + }, + { + flavorParamsId: 0, + width: 1920, + height: 1080, + bitrate: 18022, + frameRate: 25, + isOriginal: true, + isWeb: false, + containerFormat: 'qt', + videoCodecId: 'avc1', + status: 2, + language: 'English', + id: '1_n75294r4', + entryId: '1_rsrdfext', + partnerId: 1082342, + version: '1', + size: 117760, + tags: 'source', + fileExt: 'mov', + createdAt: 1484776914, + updatedAt: 1484777022, + description: '', + objectType: 'KalturaFlavorAsset' + } + ], + actions: [], + messages: [ + { + message: "Out of scheduling\nWe're sorry, this content is currently unavailable.", + code: 'SCHEDULED_RESTRICTED', + objectType: 'KalturaAccessControlMessage' + } + ], + objectType: 'KalturaPlaybackContext' + }, + { + objects: [ + { + id: 331744001, + partnerId: 1082342, + metadataProfileId: 244381, + metadataProfileVersion: 421, + metadataObjectType: 1, + objectId: '1_rsrdfext', + version: 1, + createdAt: 1484776887, + updatedAt: 1484776887, + status: 1, + xml: + '\nFO21934-HDTX-SWE.mov\nsv_SE\nFTA-nm\ntv-dc\nclip\nDisney Channel\nIBMS\nShow - TV\n1483225200\n1485903600\nNo Age Consent\n', + objectType: 'KalturaMetadata' + }, + { + id: 331744121, + partnerId: 1082342, + metadataProfileId: 7330521, + metadataProfileVersion: 61, + metadataObjectType: 1, + objectId: '1_rsrdfext', + version: 11, + createdAt: 1484776903, + updatedAt: 1489508219, + status: 1, + xml: + '\n FO21934-HDTX-SWE\n se-dc-lf\n VOD\n android\n Disney Channel SE\n\n', + objectType: 'KalturaMetadata' + } + ], + totalCount: 2, + objectType: 'KalturaMetadataListResponse' } - }, - { - code: 'ENTRY_ID_NOT_FOUND', - message: 'Entry id "1_rwbj3j0a55" not found', - objectType: 'KalturaAPIException', - args: { - ENTRY_ID: '1_rwbj3j0a55' + ] +}; + +const AnonymousMocEntryWithoutUIConfWithDrmData = { + response: [ + { + objects: [ + { + mediaType: 1, + dataUrl: 'http://cdnapi.kaltura.com/p/1068292/sp/106829200/playManifest/entryId/1_rwbj3j0a/format/url/protocol/http', + flavorParamsIds: '0,525091,525101,525111,525121', + duration: 596, + msDuration: 596000, + id: '1_rwbj3j0a', + name: 'DRM TEST', + type: 1, + description: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vel semper libero. Curabitur in felis elementum, porttitor sem ac, volutpat mi. Sed dignissim facilisis magna, ac suscipit orci suscipit id. Suspendisse feugiat sapien laoreet auctor convallis. Cras volutpat dictum massa, in pharetra erat placerat eget. Donec at elit est. Donec id cursus elit. Etiam sit amet sapien sed mi aliquam finibus at lobortis diam. Aenean at gravida libero.', + thumbnailUrl: 'http://kaltura.com/p/1082342/sp/108234200/thumbnail/entry_id/1_rsrdfext/version/100002/width/640/height/360', + objectType: 'KalturaMediaEntry' + } + ], + totalCount: 1, + objectType: 'KalturaBaseEntryListResponse' + }, + { + sources: [ + { + deliveryProfileId: 11311, + format: 'applehttp', + protocols: 'http,https', + flavorIds: '1_92dfyrz5,1_9dhh6m0i,1_zudouuah,1_r0wu6y77,1_oz343kla', + url: + 'https://cdnapisec.kaltura.com/p/1068292/sp/1068292/playManifest/entryId/1_rwbj3j0a/flavorIds/1_92dfyrz5,1_9dhh6m0i,1_zudouuah,1_r0wu6y77,1_oz343kla/deliveryProfileId/11311/protocol/https/format/applehttp/a.m3u8', + drm: [ + { + certificate: 'ABCD1234', + scheme: 'fairplay.FAIRPLAY', + licenseURL: + 'https://udrmv3.kaltura.com//fps/license?custom_data=eyJjYV9zeXN0ZW0iOiJPVlAiLCJ1c2VyX3Rva2VuIjoiTlRBd1pqVmlaV1pqWTJOak5UUmtOR0V5TWpVMU1UZzRPR0UxTm1Vd05EbGpaV0prTXprMU1Yd3hNRFk0TWpreU96RXdOamd5T1RJN01UUTVNREUzTmpFME5qc3dPekUwT1RBd09EazNORFl1TURJeU5qc3dPM1pwWlhjNktpeDNhV1JuWlhRNk1UczciLCJhY2NvdW50X2lkIjoxMDY4MjkyLCJjb250ZW50X2lkIjoiMV9yd2JqM2owYSIsImZpbGVzIjoiMV85MmRmeXJ6NSwxXzlkaGg2bTBpLDFfenVkb3V1YWgsMV9yMHd1Nnk3NywxX296MzQza2xhIn0%3D&signature=jl09zYv64OyEfVUt85rlA0WnK1w%3D', + objectType: 'KalturaFairPlayPlaybackPluginData' + } + ], + objectType: 'KalturaPlaybackSource' + }, + { + deliveryProfileId: 11331, + format: 'mpegdash', + protocols: 'http,https', + flavorIds: '1_92dfyrz5,1_9dhh6m0i,1_zudouuah,1_r0wu6y77,1_oz343kla', + url: + 'https://cdnapisec.kaltura.com/p/1068292/sp/1068292/playManifest/entryId/1_rwbj3j0a/flavorIds/1_92dfyrz5,1_9dhh6m0i,1_zudouuah,1_r0wu6y77,1_oz343kla/deliveryProfileId/11331/protocol/https/format/mpegdash/manifest.mpd', + drm: [ + { + scheme: 'drm.PLAYREADY_CENC', + licenseURL: + 'https://udrm.kaltura.com//cenc/playready/license?custom_data=eyJjYV9zeXN0ZW0iOiJPVlAiLCJ1c2VyX3Rva2VuIjoiTlRBd1pqVmlaV1pqWTJOak5UUmtOR0V5TWpVMU1UZzRPR0UxTm1Vd05EbGpaV0prTXprMU1Yd3hNRFk0TWpreU96RXdOamd5T1RJN01UUTVNREUzTmpFME5qc3dPekUwT1RBd09EazNORFl1TURJeU5qc3dPM1pwWlhjNktpeDNhV1JuWlhRNk1UczciLCJhY2NvdW50X2lkIjoxMDY4MjkyLCJjb250ZW50X2lkIjoiMV9yd2JqM2owYSIsImZpbGVzIjoiMV85MmRmeXJ6NSwxXzlkaGg2bTBpLDFfenVkb3V1YWgsMV9yMHd1Nnk3NywxX296MzQza2xhIn0%3D&signature=jl09zYv64OyEfVUt85rlA0WnK1w%3D', + objectType: 'KalturaDrmPlaybackPluginData' + }, + { + scheme: 'drm.WIDEVINE_CENC', + licenseURL: + 'https://udrm.kaltura.com//cenc/widevine/license?custom_data=eyJjYV9zeXN0ZW0iOiJPVlAiLCJ1c2VyX3Rva2VuIjoiTlRBd1pqVmlaV1pqWTJOak5UUmtOR0V5TWpVMU1UZzRPR0UxTm1Vd05EbGpaV0prTXprMU1Yd3hNRFk0TWpreU96RXdOamd5T1RJN01UUTVNREUzTmpFME5qc3dPekUwT1RBd09EazNORFl1TURJeU5qc3dPM1pwWlhjNktpeDNhV1JuWlhRNk1UczciLCJhY2NvdW50X2lkIjoxMDY4MjkyLCJjb250ZW50X2lkIjoiMV9yd2JqM2owYSIsImZpbGVzIjoiMV85MmRmeXJ6NSwxXzlkaGg2bTBpLDFfenVkb3V1YWgsMV9yMHd1Nnk3NywxX296MzQza2xhIn0%3D&signature=jl09zYv64OyEfVUt85rlA0WnK1w%3D', + objectType: 'KalturaDrmPlaybackPluginData' + } + ], + objectType: 'KalturaPlaybackSource' + }, + { + deliveryProfileId: 11321, + format: 'sl', + protocols: 'http,https', + flavorIds: '1_92dfyrz5,1_9dhh6m0i,1_zudouuah,1_r0wu6y77,1_oz343kla', + url: + 'https://cdnapisec.kaltura.com/p/1068292/sp/1068292/playManifest/entryId/1_rwbj3j0a/flavorIds/1_92dfyrz5,1_9dhh6m0i,1_zudouuah,1_r0wu6y77,1_oz343kla/deliveryProfileId/11321/protocol/https/format/sl/a.ism', + drm: [], + objectType: 'KalturaPlaybackSource' + } + ], + flavorAssets: [ + { + flavorParamsId: 525091, + width: 480, + height: 272, + bitrate: 468, + frameRate: 24, + isOriginal: false, + isWeb: true, + containerFormat: 'isom', + videoCodecId: 'avc1', + status: 2, + language: 'Undefined', + id: '1_92dfyrz5', + entryId: '1_rwbj3j0a', + partnerId: 1068292, + version: '1', + size: 34099, + tags: 'mobile,web,mbr,iphone,iphonenew', + fileExt: 'mp4', + createdAt: 1485272387, + updatedAt: 1485272469, + description: '', + objectType: 'KalturaFlavorAsset' + }, + { + flavorParamsId: 525101, + width: 640, + height: 360, + bitrate: 667, + frameRate: 24, + isOriginal: false, + isWeb: true, + containerFormat: 'isom', + videoCodecId: 'avc1', + status: 2, + language: 'Undefined', + id: '1_9dhh6m0i', + entryId: '1_rwbj3j0a', + partnerId: 1068292, + version: '1', + size: 48537, + tags: 'mobile,web,mbr,iphone,iphonenew', + fileExt: 'mp4', + createdAt: 1485272387, + updatedAt: 1485272469, + description: 'audio warnings: 2106,#Redundant bitrate.\n', + objectType: 'KalturaFlavorAsset' + }, + { + flavorParamsId: 525111, + width: 640, + height: 360, + bitrate: 964, + frameRate: 24, + isOriginal: false, + isWeb: true, + containerFormat: 'isom', + videoCodecId: 'avc1', + status: 2, + language: 'Undefined', + id: '1_zudouuah', + entryId: '1_rwbj3j0a', + partnerId: 1068292, + version: '1', + size: 68505, + tags: 'mobile,web,mbr,ipad,ipadnew,dash', + fileExt: 'mp4', + createdAt: 1485272388, + updatedAt: 1485272499, + description: 'audio warnings: 2106,#Redundant bitrate.\n', + objectType: 'KalturaFlavorAsset' + }, + { + flavorParamsId: 525121, + width: 848, + height: 480, + bitrate: 1378, + frameRate: 24, + isOriginal: false, + isWeb: true, + containerFormat: 'isom', + videoCodecId: 'avc1', + status: 2, + language: 'Undefined', + id: '1_r0wu6y77', + entryId: '1_rwbj3j0a', + partnerId: 1068292, + version: '1', + size: 100249, + tags: 'mobile,web,mbr,ipad,ipadnew,dash', + fileExt: 'mp4', + createdAt: 1485272388, + updatedAt: 1485272564, + description: '', + objectType: 'KalturaFlavorAsset' + }, + { + flavorParamsId: 0, + width: 854, + height: 480, + bitrate: 2958, + frameRate: 24, + isOriginal: true, + isWeb: false, + containerFormat: 'avi', + videoCodecId: 'fmp4', + status: 2, + id: '1_oz343kla', + entryId: '1_rwbj3j0a', + partnerId: 1068292, + version: '11', + size: 215040, + tags: 'source', + fileExt: 'avi', + createdAt: 1485272298, + updatedAt: 1485272387, + description: '', + objectType: 'KalturaFlavorAsset' + } + ], + actions: [ + { + deliveryProfileIds: '11311,11321,11331', + type: 5, + objectType: 'KalturaAccessControlLimitDeliveryProfilesAction' + }, + { + policyId: 4081, + type: 'DRM_POLICY', + objectType: 'KalturaAccessControlDrmPolicyAction' + } + ], + messages: [], + objectType: 'KalturaPlaybackContext' + }, + { + objects: [], + totalCount: 0, + objectType: 'KalturaMetadataListResponse' } - }, - { - objects: [], - totalCount: 0, - objectType: 'KalturaMetadataListResponse' - } -]; + ] +}; -const EntryWithUIConfNoDrmData = [ - { - partnerId: 1082342, - ks: - 'YmQ0N2Q0M2QxZTAyMGIzYTY4YzI1ZDk5ZjI1NjhlZWVkOWZmOGViN3wxMDgyMzQyOzEwODIzNDI7MTQ5MDE5NjMwMDswOzE0OTAxMDk5MDAuOTA0NDswO3ZpZXc6Kix3aWRnZXQ6MTs7', - userId: 0, - objectType: 'KalturaStartWidgetSessionResponse' - }, - { - objects: [ - { - mediaType: 1, - dataUrl: 'http://cdnapi.kaltura.com/p/1082342/sp/108234200/playManifest/entryId/1_rsrdfext/format/url/protocol/http', - flavorParamsIds: '0,487041,487051,487061,487071,487081,487091', - duration: 55, - msDuration: 55047, - id: '1_rsrdfext', - name: 'FO21934-HDTX-SWE', - tags: '', - type: 1, - description: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vel semper libero. Curabitur in felis elementum, porttitor sem ac, volutpat mi. Sed dignissim facilisis magna, ac suscipit orci suscipit id. Suspendisse feugiat sapien laoreet auctor convallis. Cras volutpat dictum massa, in pharetra erat placerat eget. Donec at elit est. Donec id cursus elit. Etiam sit amet sapien sed mi aliquam finibus at lobortis diam. Aenean at gravida libero.', - thumbnailUrl: 'http://kaltura.com/p/1082342/sp/108234200/thumbnail/entry_id/1_rsrdfext/version/100002/width/640/height/360', - objectType: 'KalturaMediaEntry' - } - ], - totalCount: 1, - objectType: 'KalturaBaseEntryListResponse' - }, - { - sources: [ - { - deliveryProfileId: 10081, - format: 'url', - protocols: 'http,https', - flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', - url: - 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/10081/protocol/https/format/url/name/a.mov', - drm: [], - objectType: 'KalturaPlaybackSource' - }, - { - deliveryProfileId: 10101, - format: 'hdnetworkmanifest', - protocols: 'http,https', - flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', - url: - 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/10101/protocol/https/format/hdnetworkmanifest/manifest.f4m', - drm: [], - objectType: 'KalturaPlaybackSource' - }, - { - deliveryProfileId: 10091, - format: 'applehttp', - protocols: 'http,https', - flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', - url: - 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/10091/protocol/https/format/applehttp/a.m3u8', - drm: [], - objectType: 'KalturaPlaybackSource' - }, - { - deliveryProfileId: 11241, - format: 'applehttp', - protocols: 'http,https', - flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', - url: - 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/11241/protocol/https/format/applehttp/a.m3u8', - drm: [], - objectType: 'KalturaPlaybackSource' - }, - { - deliveryProfileId: 11611, - format: 'mpegdash', - protocols: 'http,https', - flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', - url: - 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/11611/protocol/https/format/mpegdash/manifest.mpd', - drm: [], - objectType: 'KalturaPlaybackSource' - }, - { - deliveryProfileId: 11261, - format: 'mpegdash', - protocols: 'http,https', - flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', - url: - 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/11261/protocol/https/format/mpegdash/manifest.mpd', - drm: [], - objectType: 'KalturaPlaybackSource' - }, - { - deliveryProfileId: 11251, - format: 'sl', - protocols: 'http,https', - flavorIds: '1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4', - url: - 'https://cdnapisec.kaltura.com/p/1082342/sp/1082342/playManifest/entryId/1_rsrdfext/flavorIds/1_ha0nqwz8,1_gw7u4nf1,1_rql6sqaa,1_sufd1yd9,1_9xvkk7a5,1_4typ4pat,1_n75294r4/deliveryProfileId/11251/protocol/https/format/sl/a.ism', - drm: [], - objectType: 'KalturaPlaybackSource' +const WrongEntryIDWithoutUIConf = { + headers: ['x-kaltura: what?!'], + response: [ + { + partnerId: 1068292, + ks: + 'NjVjMDdlZmUxY2VlMGI2YWMyYmZjOTczOTA5ZjhjNDIwMTJmODI3MXwxMDY4MjkyOzEwNjgyOTI7MTQ5MDE5MzIyNjswOzE0OTAxMDY4MjYuOTc2NDswO3ZpZXc6Kix3aWRnZXQ6MTs7', + userId: 0, + objectType: 'KalturaStartWidgetSessionResponse' + }, + { + code: 'INVALID_ENTRY_ID', + message: 'Invalid entry id ["1_rwbj3j0a55"]', + objectType: 'KalturaAPIException', + args: { + ID: '1_rwbj3j0a55' } - ], - flavorAssets: [ - { - flavorParamsId: 487041, - width: 640, - height: 360, - bitrate: 471, - frameRate: 25, - isOriginal: false, - isWeb: true, - containerFormat: 'isom', - videoCodecId: 'avc1', - status: 2, - language: 'Undefined', - id: '1_ha0nqwz8', - entryId: '1_rsrdfext', - partnerId: 1082342, - version: '1', - size: 3164, - tags: 'mobile,web,mbr,iphone,iphonenew', - fileExt: 'mp4', - createdAt: 1484777022, - updatedAt: 1484777079, - description: '', - objectType: 'KalturaFlavorAsset' - }, - { - flavorParamsId: 487051, - width: 640, - height: 360, - bitrate: 670, - frameRate: 25, - isOriginal: false, - isWeb: true, - containerFormat: 'isom', - videoCodecId: 'avc1', - status: 2, - language: 'Undefined', - id: '1_gw7u4nf1', - entryId: '1_rsrdfext', - partnerId: 1082342, - version: '1', - size: 4505, - tags: 'mobile,web,mbr,iphone,iphonenew', - fileExt: 'mp4', - createdAt: 1484777022, - updatedAt: 1484777079, - description: 'audio warnings: 2106,#Redundant bitrate.\n', - objectType: 'KalturaFlavorAsset' - }, - { - flavorParamsId: 487061, - width: 640, - height: 360, - bitrate: 964, - frameRate: 25, - isOriginal: false, - isWeb: true, - containerFormat: 'isom', - videoCodecId: 'avc1', - status: 2, - language: 'Undefined', - id: '1_rql6sqaa', - entryId: '1_rsrdfext', - partnerId: 1082342, - version: '1', - size: 6400, - tags: 'mobile,web,mbr,ipad,ipadnew,dash', - fileExt: 'mp4', - createdAt: 1484777022, - updatedAt: 1484777064, - description: 'audio warnings: 2106,#Redundant bitrate.\n', - objectType: 'KalturaFlavorAsset' - }, - { - flavorParamsId: 487071, - width: 1280, - height: 720, - bitrate: 1547, - frameRate: 25, - isOriginal: false, - isWeb: true, - containerFormat: 'isom', - videoCodecId: 'avc1', - status: 2, - language: 'Undefined', - id: '1_sufd1yd9', - entryId: '1_rsrdfext', - partnerId: 1082342, - version: '1', - size: 10444, - tags: 'mobile,web,mbr,ipad,ipadnew,dash', - fileExt: 'mp4', - createdAt: 1484777022, - updatedAt: 1484777080, - description: '', - objectType: 'KalturaFlavorAsset' - }, - { - flavorParamsId: 487081, - width: 1280, - height: 720, - bitrate: 2628, - frameRate: 25, - isOriginal: false, - isWeb: true, - containerFormat: 'isom', - videoCodecId: 'avc1', - status: 2, - language: 'Undefined', - id: '1_9xvkk7a5', - entryId: '1_rsrdfext', - partnerId: 1082342, - version: '1', - size: 17408, - tags: 'web,mbr,dash', - fileExt: 'mp4', - createdAt: 1484777022, - updatedAt: 1484777115, - description: 'audio warnings: 2106,#Redundant bitrate.\n', - objectType: 'KalturaFlavorAsset' - }, - { - flavorParamsId: 487091, - width: 1920, - height: 1080, - bitrate: 4128, - frameRate: 25, - isOriginal: false, - isWeb: true, - containerFormat: 'isom', - videoCodecId: 'avc1', - status: 2, - language: 'Undefined', - id: '1_4typ4pat', - entryId: '1_rsrdfext', - partnerId: 1082342, - version: '1', - size: 27443, - tags: 'web,mbr,dash', - fileExt: 'mp4', - createdAt: 1484777023, - updatedAt: 1484777325, - description: 'audio warnings: 2106,#Redundant bitrate.\n', - objectType: 'KalturaFlavorAsset' - }, - { - flavorParamsId: 0, - width: 1920, - height: 1080, - bitrate: 18022, - frameRate: 25, - isOriginal: true, - isWeb: false, - containerFormat: 'qt', - videoCodecId: 'avc1', - status: 2, - language: 'English', - id: '1_n75294r4', - entryId: '1_rsrdfext', - partnerId: 1082342, - version: '1', - size: 117760, - tags: 'source', - fileExt: 'mov', - createdAt: 1484776914, - updatedAt: 1484777022, - description: '', - objectType: 'KalturaFlavorAsset' + }, + { + code: 'ENTRY_ID_NOT_FOUND', + message: 'Entry id "1_rwbj3j0a55" not found', + objectType: 'KalturaAPIException', + args: { + ENTRY_ID: '1_rwbj3j0a55' } - ], - actions: [], - messages: [ - { - message: "Out of scheduling\nWe're sorry, this content is currently unavailable.", - code: 'SCHEDULED_RESTRICTED', - objectType: 'KalturaAccessControlMessage' - } - ], - objectType: 'KalturaPlaybackContext' - }, - { - objects: [ - { - id: 331744001, - partnerId: 1082342, - metadataProfileId: 244381, - metadataProfileVersion: 421, - metadataObjectType: 1, - objectId: '1_rsrdfext', - version: 1, - createdAt: 1484776887, - updatedAt: 1484776887, - status: 1, - xml: - '\nFO21934-HDTX-SWE.mov\nsv_SE\nFTA-nm\ntv-dc\nclip\nDisney Channel\nIBMS\nShow - TV\n1483225200\n1485903600\nNo Age Consent\n', - objectType: 'KalturaMetadata' - }, - { - id: 331744121, - partnerId: 1082342, - metadataProfileId: 7330521, - metadataProfileVersion: 61, - metadataObjectType: 1, - objectId: '1_rsrdfext', - version: 11, - createdAt: 1484776903, - updatedAt: 1489508219, - status: 1, - xml: - '\n FO21934-HDTX-SWE\n se-dc-lf\n VOD\n android\n Disney Channel SE\n\n', - objectType: 'KalturaMetadata' - } - ], - totalCount: 2, - objectType: 'KalturaMetadataListResponse' - }, - { - id: 38621471, - name: 'Static 2.53', - description: '', - partnerId: 1082342, - objType: 1, - objTypeAsString: 'Widget', - width: '560', - height: '395', - swfUrl: '/flash/kdp3/v3.9.9/kdp3.swf', - confFile: - '\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n