{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///clappr.plainhtml5.min.js","webpack:///webpack/bootstrap 514e5774376a76eb6142","webpack:///./node_modules/babel-runtime/helpers/classCallCheck.js","webpack:///./node_modules/babel-runtime/helpers/possibleConstructorReturn.js","webpack:///./node_modules/babel-runtime/helpers/inherits.js","webpack:///./node_modules/babel-runtime/helpers/createClass.js","webpack:///./src/base/events.js","webpack:///./src/base/utils.js","webpack:///./node_modules/clappr-zepto/zepto.js","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/style-loader/lib/addStyles.js","webpack:///./src/base/template.js","webpack:///./node_modules/babel-runtime/core-js/object/assign.js","webpack:///./node_modules/core-js/library/modules/_wks.js","webpack:///./src/base/playback.js","webpack:///./src/base/base_object.js","webpack:///./node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/core-js/library/modules/_global.js","webpack:///./node_modules/core-js/library/modules/_object-dp.js","webpack:///./node_modules/core-js/library/modules/_to-iobject.js","webpack:///./src/base/error_mixin.js","webpack:///./node_modules/core-js/library/modules/_descriptors.js","webpack:///./node_modules/core-js/library/modules/_has.js","webpack:///./src/base/ui_object.js","webpack:///./src/base/void.js","webpack:///./node_modules/core-js/library/modules/_hide.js","webpack:///./node_modules/core-js/library/modules/_an-object.js","webpack:///./node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/core-js/library/modules/_object-keys.js","webpack:///./src/components/browser/index.js","webpack:///./node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/core-js/library/modules/_iterators.js","webpack:///./src/plugins/log/index.js","webpack:///./src/components/error/index.js","webpack:///./src/base/ui_core_plugin.js","webpack:///./src/base/core_plugin.js","webpack:///./node_modules/core-js/library/modules/_uid.js","webpack:///./node_modules/core-js/library/modules/_object-pie.js","webpack:///./node_modules/core-js/library/modules/_to-object.js","webpack:///./node_modules/babel-runtime/helpers/typeof.js","webpack:///./src/components/player_info.js","webpack:///./src/base/ui_container_plugin.js","webpack:///./src/base/container_plugin.js","webpack:///./node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/core-js/library/modules/_cof.js","webpack:///./node_modules/core-js/library/modules/_defined.js","webpack:///./node_modules/core-js/library/modules/_to-integer.js","webpack:///./node_modules/core-js/library/modules/_shared-key.js","webpack:///./node_modules/core-js/library/modules/_shared.js","webpack:///./node_modules/core-js/library/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/library/modules/_object-gops.js","webpack:///./node_modules/babel-runtime/core-js/object/keys.js","webpack:///./node_modules/core-js/library/modules/_library.js","webpack:///./node_modules/core-js/library/modules/_object-create.js","webpack:///./node_modules/core-js/library/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/library/modules/_wks-ext.js","webpack:///./node_modules/core-js/library/modules/_wks-define.js","webpack:///./node_modules/core-js/library/modules/_object-gopd.js","webpack:///./src/vendor/index.js","webpack:///./node_modules/node-libs-browser/node_modules/process/browser.js","webpack:///./src/components/mediator.js","webpack:///./src/icons/01-play.svg","webpack:///./src/playbacks/html5_video/index.js","webpack:///./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/core-js/library/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/library/modules/_iobject.js","webpack:///./node_modules/core-js/library/modules/_to-length.js","webpack:///./node_modules/core-js/library/modules/_object-sap.js","webpack:///./node_modules/core-js/library/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/library/modules/_iter-define.js","webpack:///./node_modules/core-js/library/modules/_redefine.js","webpack:///./node_modules/core-js/library/modules/_object-gopn.js","webpack:///./node_modules/babel-runtime/core-js/object/define-property.js","webpack:///./node_modules/babel-runtime/core-js/object/create.js","webpack:///./src/components/core/index.js","webpack:///./src/components/container/index.js","webpack:///./src/components/error/error.js","webpack:///./src/components/media_control/index.js","webpack:///./node_modules/css-loader/lib/url/escape.js","webpack:///./src/components/media_control/public/closed-hand.cur","webpack:///./src/icons/02-pause.svg","webpack:///./src/base/styler.js","webpack:///./src/components/loader/index.js","webpack:///./node_modules/babel-runtime/helpers/toConsumableArray.js","webpack:///./node_modules/babel-runtime/core-js/array/from.js","webpack:///./src/playbacks/html5_audio/index.js","webpack:///./src/playbacks/html_img/index.js","webpack:///./src/playbacks/no_op/index.js","webpack:///./src/plugins/spinner_three_bounce/index.js","webpack:///./src/plugins/watermark/index.js","webpack:///./src/plugins/poster/index.js","webpack:///./src/plugins/click_to_pause/index.js","webpack:///./src/plugins/dvr_controls/index.js","webpack:///./src/plugins/favicon/index.js","webpack:///./src/main.js","webpack:///./src/components/player.js","webpack:///./node_modules/core-js/library/fn/object/assign.js","webpack:///./node_modules/core-js/library/modules/es6.object.assign.js","webpack:///./node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/core-js/library/modules/_object-assign.js","webpack:///./node_modules/core-js/library/modules/_array-includes.js","webpack:///./node_modules/core-js/library/modules/_to-index.js","webpack:///./node_modules/core-js/library/fn/object/keys.js","webpack:///./node_modules/core-js/library/modules/es6.object.keys.js","webpack:///./node_modules/babel-runtime/core-js/symbol/iterator.js","webpack:///./node_modules/core-js/library/fn/symbol/iterator.js","webpack:///./node_modules/core-js/library/modules/_string-at.js","webpack:///./node_modules/core-js/library/modules/_iter-create.js","webpack:///./node_modules/core-js/library/modules/_object-dps.js","webpack:///./node_modules/core-js/library/modules/_html.js","webpack:///./node_modules/core-js/library/modules/_object-gpo.js","webpack:///./node_modules/core-js/library/modules/web.dom.iterable.js","webpack:///./node_modules/core-js/library/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/library/modules/_add-to-unscopables.js","webpack:///./node_modules/core-js/library/modules/_iter-step.js","webpack:///./node_modules/babel-runtime/core-js/symbol.js","webpack:///./node_modules/core-js/library/fn/symbol/index.js","webpack:///./node_modules/core-js/library/modules/es6.symbol.js","webpack:///./node_modules/core-js/library/modules/_meta.js","webpack:///./node_modules/core-js/library/modules/_keyof.js","webpack:///./node_modules/core-js/library/modules/_enum-keys.js","webpack:///./node_modules/core-js/library/modules/_is-array.js","webpack:///./node_modules/core-js/library/modules/_object-gopn-ext.js","webpack:///./node_modules/core-js/library/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/core-js/library/modules/es7.symbol.observable.js","webpack:///./node_modules/core-js/library/fn/object/define-property.js","webpack:///./node_modules/core-js/library/modules/es6.object.define-property.js","webpack:///./node_modules/babel-runtime/core-js/object/set-prototype-of.js","webpack:///./node_modules/core-js/library/fn/object/set-prototype-of.js","webpack:///./node_modules/core-js/library/modules/es6.object.set-prototype-of.js","webpack:///./node_modules/core-js/library/modules/_set-proto.js","webpack:///./node_modules/core-js/library/fn/object/create.js","webpack:///./node_modules/core-js/library/modules/es6.object.create.js","webpack:///./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js","webpack:///./node_modules/core-js/library/fn/object/get-own-property-descriptor.js","webpack:///./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js","webpack:///./src/base/polyfills.js","webpack:///./src/components/browser/browser.js","webpack:///./src/components/browser/browser_data.js","webpack:///./src/components/browser/os_data.js","webpack:///./src/base/media.js","webpack:///./src/plugins/log/log.js","webpack:///./src/vendor/kibo.js","webpack:///./src/components/core_factory/index.js","webpack:///./src/components/core_factory/core_factory.js","webpack:///./src/components/core/core.js","webpack:///./src/components/container_factory/index.js","webpack:///./src/components/container_factory/container_factory.js","webpack:///./src/components/container/container.js","webpack:///./src/components/container/public/style.scss?45e2","webpack:///./src/components/container/public/style.scss","webpack:///./node_modules/style-loader/lib/urls.js","webpack:///./src/components/media_control/media_control.js","webpack:///./node_modules/babel-runtime/core-js/json/stringify.js","webpack:///./node_modules/core-js/library/fn/json/stringify.js","webpack:///./src/components/media_control/public/media-control.scss?4d45","webpack:///./src/components/media_control/public/media-control.scss","webpack:///./src/components/media_control/public/media-control.html","webpack:///./src/icons/03-stop.svg","webpack:///./src/icons/04-volume.svg","webpack:///./src/icons/05-mute.svg","webpack:///./src/icons/06-expand.svg","webpack:///./src/icons/07-shrink.svg","webpack:///./src/icons/08-hd.svg","webpack:///./src/components/core/public/style.scss?08a2","webpack:///./src/components/core/public/style.scss","webpack:///./src/components/core/public/fonts.css","webpack:///./src/components/core/public/Roboto.ttf","webpack:///./src/components/loader/loader.js","webpack:///./node_modules/core-js/library/fn/array/from.js","webpack:///./node_modules/core-js/library/modules/es6.array.from.js","webpack:///./node_modules/core-js/library/modules/_iter-call.js","webpack:///./node_modules/core-js/library/modules/_is-array-iter.js","webpack:///./node_modules/core-js/library/modules/_create-property.js","webpack:///./node_modules/core-js/library/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/library/modules/_classof.js","webpack:///./node_modules/core-js/library/modules/_iter-detect.js","webpack:///./src/playbacks/html5_video/html5_video.js","webpack:///./src/playbacks/html5_video/public/tracks.html","webpack:///./src/playbacks/html5_video/public/style.scss?5521","webpack:///./src/playbacks/html5_video/public/style.scss","webpack:///./src/playbacks/html5_audio/html5_audio.js","webpack:///./src/playbacks/html_img/html_img.js","webpack:///./src/playbacks/html_img/public/style.scss?65da","webpack:///./src/playbacks/html_img/public/style.scss","webpack:///./src/playbacks/no_op/no_op.js","webpack:///./src/playbacks/no_op/public/error.html","webpack:///./src/playbacks/no_op/public/style.scss?a63c","webpack:///./src/playbacks/no_op/public/style.scss","webpack:///./src/plugins/spinner_three_bounce/spinner_three_bounce.js","webpack:///./src/plugins/spinner_three_bounce/public/spinner.html","webpack:///./src/plugins/spinner_three_bounce/public/spinner.scss?45b1","webpack:///./src/plugins/spinner_three_bounce/public/spinner.scss","webpack:///./src/plugins/stats/index.js","webpack:///./src/plugins/stats/stats.js","webpack:///./src/plugins/watermark/watermark.js","webpack:///./src/plugins/watermark/public/watermark.html","webpack:///./src/plugins/watermark/public/watermark.scss?d1ad","webpack:///./src/plugins/watermark/public/watermark.scss","webpack:///./src/plugins/poster/poster.js","webpack:///./src/plugins/poster/public/poster.html","webpack:///./src/plugins/poster/public/poster.scss?8d31","webpack:///./src/plugins/poster/public/poster.scss","webpack:///./src/plugins/google_analytics/index.js","webpack:///./src/plugins/google_analytics/google_analytics.js","webpack:///./src/plugins/click_to_pause/click_to_pause.js","webpack:///./src/plugins/dvr_controls/dvr_controls.js","webpack:///./src/plugins/dvr_controls/public/index.html","webpack:///./src/plugins/dvr_controls/public/dvr_controls.scss?e553","webpack:///./src/plugins/dvr_controls/public/dvr_controls.scss","webpack:///./src/plugins/closed_captions/index.js","webpack:///./src/plugins/closed_captions/closed_captions.js","webpack:///./src/icons/09-cc.svg","webpack:///./src/plugins/closed_captions/public/closed_captions.html","webpack:///./src/plugins/closed_captions/public/closed_captions.scss?4f32","webpack:///./src/plugins/closed_captions/public/closed_captions.scss","webpack:///./src/plugins/favicon/favicon.js","webpack:///./src/plugins/seek_time/index.js","webpack:///./src/plugins/seek_time/seek_time.js","webpack:///./src/plugins/seek_time/public/seek_time.html","webpack:///./src/plugins/seek_time/public/seek_time.scss?50ac","webpack:///./src/plugins/seek_time/public/seek_time.scss","webpack:///./src/plugins/sources.js","webpack:///./src/plugins/end_video.js","webpack:///./src/plugins/strings.js","webpack:///./src/plugins/error_screen/index.js","webpack:///./src/plugins/error_screen/error_screen.js","webpack:///./src/icons/10-reload.svg","webpack:///./src/plugins/error_screen/public/error_screen.html","webpack:///./src/plugins/error_screen/public/error_screen.scss?8f65","webpack:///./src/plugins/error_screen/public/error_screen.scss"],"names":["root","factory","exports","module","define","amd","self","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","default","instance","Constructor","TypeError","_typeof2","_typeof3","obj","ReferenceError","_interopRequireDefault","_setPrototypeOf","_setPrototypeOf2","_create","_create2","subClass","superClass","constructor","value","writable","__proto__","_defineProperty","_defineProperty2","defineProperties","target","props","length","descriptor","key","protoProps","staticProps","_keys","_keys2","_classCallCheck2","_classCallCheck3","_log","_log2","_utils","slice","Array","eventSplitter","eventsApi","action","rest","apply","concat","test","names","split","triggerEvents","events","args","klass","run","ev","callback","ctx","a1","a2","a3","exception","error","Events","on","context","_events","push","once","_this","off","arguments","retain","j","k","_callback","trigger","debug","allEvents","all","stopListening","listeningTo","_listeningTo","remove","_listenId","id","register","eventName","Custom","toUpperCase","trim","toLowerCase","map","index","join","listAvailableCustomEvents","filter","listenMethods","listenTo","listenToOnce","forEach","method","uniqueId","PLAYER_READY","PLAYER_RESIZE","PLAYER_FULLSCREEN","PLAYER_PLAY","PLAYER_PAUSE","PLAYER_STOP","PLAYER_ENDED","PLAYER_SEEK","PLAYER_ERROR","ERROR","PLAYER_TIMEUPDATE","PLAYER_VOLUMEUPDATE","PLAYER_SUBTITLE_AVAILABLE","PLAYBACK_PROGRESS","PLAYBACK_TIMEUPDATE","PLAYBACK_READY","PLAYBACK_BUFFERING","PLAYBACK_BUFFERFULL","PLAYBACK_SETTINGSUPDATE","PLAYBACK_LOADEDMETADATA","PLAYBACK_HIGHDEFINITIONUPDATE","PLAYBACK_BITRATE","PLAYBACK_LEVELS_AVAILABLE","PLAYBACK_LEVEL_SWITCH_START","PLAYBACK_LEVEL_SWITCH_END","PLAYBACK_PLAYBACKSTATE","PLAYBACK_DVR","PLAYBACK_MEDIACONTROL_DISABLE","PLAYBACK_MEDIACONTROL_ENABLE","PLAYBACK_ENDED","PLAYBACK_PLAY_INTENT","PLAYBACK_PLAY","PLAYBACK_PAUSE","PLAYBACK_SEEK","PLAYBACK_SEEKED","PLAYBACK_STOP","PLAYBACK_ERROR","PLAYBACK_STATS_ADD","PLAYBACK_FRAGMENT_LOADED","PLAYBACK_LEVEL_SWITCH","PLAYBACK_SUBTITLE_AVAILABLE","PLAYBACK_SUBTITLE_CHANGED","CORE_CONTAINERS_CREATED","CORE_OPTIONS_CHANGE","CORE_READY","CORE_FULLSCREEN","CORE_RESIZE","CORE_SCREEN_ORIENTATION_CHANGED","CONTAINER_PLAYBACKSTATE","CONTAINER_PLAYBACKDVRSTATECHANGED","CONTAINER_BITRATE","CONTAINER_STATS_REPORT","CONTAINER_DESTROYED","CONTAINER_READY","CONTAINER_ERROR","CONTAINER_LOADEDMETADATA","CONTAINER_SUBTITLE_AVAILABLE","CONTAINER_SUBTITLE_CHANGED","CONTAINER_TIMEUPDATE","CONTAINER_PROGRESS","CONTAINER_PLAY","CONTAINER_STOP","CONTAINER_PAUSE","CONTAINER_ENDED","CONTAINER_CLICK","CONTAINER_DBLCLICK","CONTAINER_CONTEXTMENU","CONTAINER_MOUSE_ENTER","CONTAINER_MOUSE_LEAVE","CONTAINER_SEEK","CONTAINER_SEEKED","CONTAINER_VOLUME","CONTAINER_FULLSCREEN","CONTAINER_STATE_BUFFERING","CONTAINER_STATE_BUFFERFULL","CONTAINER_SETTINGSUPDATE","CONTAINER_HIGHDEFINITIONUPDATE","CONTAINER_MEDIACONTROL_SHOW","CONTAINER_MEDIACONTROL_HIDE","CONTAINER_MEDIACONTROL_DISABLE","CONTAINER_MEDIACONTROL_ENABLE","CONTAINER_STATS_ADD","CONTAINER_OPTIONS_CHANGE","MEDIACONTROL_RENDERED","MEDIACONTROL_FULLSCREEN","MEDIACONTROL_SHOW","MEDIACONTROL_HIDE","MEDIACONTROL_MOUSEMOVE_SEEKBAR","MEDIACONTROL_MOUSELEAVE_SEEKBAR","MEDIACONTROL_PLAYING","MEDIACONTROL_NOTPLAYING","MEDIACONTROL_CONTAINERCHANGED","MEDIACONTROL_OPTIONS_CHANGE","assign","source","prop","propDescriptor","_getOwnPropertyDescriptor2","extend","parent","properties","Surrogate","_parent","_len","_key","_possibleConstructorReturn3","initialize","_inherits3","formatTime","time","paddedHours","isFinite","parseInt","seconds","minutes","hours","days","out","seekStringToSeconds","paramName","undefined","seekString","QueryString","params","hashParams","parts","match","factor","h","el","suffix","prefix","idsCounter","isNumber","parseFloat","currentScriptUrl","scripts","document","getElementsByTagName","src","getBrowserLanguage","window","navigator","language","now","performance","Date","removeArrayItem","arr","item","indexOf","splice","canAutoPlayMedia","cb","options","_assign2","inline","muted","timeout","type","_media2","mp4","element","createElement","setAttribute","promise","play","timeoutId","setTimeout","setResult","Error","result","clearTimeout","then","catch","err","DomRecycler","cancelAnimationFrame","requestAnimationFrame","Config","Fullscreen","_assign","_createClass2","_createClass3","_possibleConstructorReturn2","_inherits2","_getOwnPropertyDescriptor","_browser","_browser2","_clapprZepto","_clapprZepto2","_media","isFullscreen","webkitFullscreenElement","webkitIsFullScreen","mozFullScreen","msFullscreenElement","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","querySelector","webkitEnterFullScreen","cancelFullscreen","exitFullscreen","webkitCancelFullScreen","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","_defaultConfig","volume","parse","_defaultValueFor","e","_createKeyspace","domain","restore","hasLocalstorage","localStorage","persist","paramsString","pl","search","decode","decodeURIComponent","replace","exec","query","location","substring","_urlParams","hash","_hashParams","mozRequestAnimationFrame","webkitRequestAnimationFrame","fn","bind","mozCancelAnimationFrame","webkitCancelAnimationFrame","videoStack","configure","create","recycleVideo","shift","garbage","$el","tagName","children","Media","Zepto","String","class2type","toString","isFunction","isWindow","isDocument","nodeType","DOCUMENT_NODE","isObject","isPlainObject","getPrototypeOf","likeArray","$","compact","array","flatten","dasherize","str","classRE","classCache","RegExp","maybeAddPx","cssNumber","defaultDisplay","nodeName","display","elementDisplay","body","appendChild","getComputedStyle","getPropertyValue","parentNode","removeChild","childNodes","node","Z","dom","selector","len","deep","isArray","filtered","nodes","funcArg","arg","idx","payload","removeAttribute","className","svg","baseVal","deserializeValue","parseJSON","traverseNode","fun","classList","camelize","uniq","emptyArray","column-count","columns","font-weight","line-height","opacity","z-index","zoom","fragmentRE","singleTagRE","tagExpanderRE","rootNodeRE","capitalRE","methodAttributes","adjacencyOperators","table","tableRow","containers","tr","tbody","thead","tfoot","td","th","*","readyRE","simpleSelectorRE","zepto","tempParent","propMap","tabindex","readonly","for","class","maxlength","cellspacing","cellpadding","rowspan","colspan","usemap","frameborder","contenteditable","matches","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","temp","qsa","chr","fragment","html","container","$1","innerHTML","each","attr","isZ","init","find","ready","found","maybeID","maybeClass","nameOnly","isSimple","getElementById","getElementsByClassName","querySelectorAll","contains","documentElement","isEmptyObject","isNumeric","val","num","Number","isNaN","inArray","elem","camelCase","uuid","support","expr","noop","elements","values","grep","JSON","reduce","sort","toArray","readyState","addEventListener","size","every","not","add","is","excludes","has","eq","first","last","$this","some","closest","collection","_","parents","ancestors","pluck","contents","contentDocument","siblings","child","empty","show","style","replaceWith","newContent","before","wrap","structure","func","clone","wrapAll","cloneNode","append","wrapInner","unwrap","hide","css","toggle","setting","prev","next","originHtml","text","newText","textContent","getAttribute","removeAttr","attribute","removeProp","data","attrName","multiple","selected","offset","coordinates","coords","parentOffset","offsetParent","top","left","getBoundingClientRect","pageXOffset","pageYOffset","width","Math","round","height","computedStyle","removeProperty","cssText","hasClass","addClass","cls","removeClass","toggleClass","when","scrollTop","hasScrollTop","scrollTo","scrollX","scrollLeft","hasScrollLeft","scrollY","position","detach","dimension","dimensionProperty","operator","operatorIndex","inside","argType","copyByClone","nextSibling","firstChild","parentInDocument","insertBefore","ownerDocument","defaultView","triggerAndReturn","event","Event","isDefaultPrevented","triggerGlobal","settings","global","ajaxStart","active","ajaxStop","ajaxBeforeSend","xhr","beforeSend","ajaxSuccess","deferred","success","resolveWith","ajaxComplete","ajaxError","rejectWith","status","complete","ajaxDataFilter","dataFilter","mimeToDataType","mime","htmlType","jsonType","scriptTypeRE","xmlTypeRE","appendQuery","url","serializeData","processData","param","traditional","dataType","parseArguments","serialize","scope","jsonpID","rscript","blankRE","originAnchor","href","ajaxJSONP","ajax","responseData","abortTimeout","_callbackName","jsonpCallback","callbackName","script","originalCallback","abort","errorType","triggerHandler","head","ajaxSettings","XMLHttpRequest","accepts","json","xml","crossDomain","cache","urlAnchor","hashIndex","Deferred","protocol","host","hasPlaceholder","jsonp","headers","setHeader","nativeSetHeader","setRequestHeader","mimeType","overrideMimeType","contentType","onreadystatechange","getResponseHeader","responseType","response","responseText","eval","responseXML","statusText","async","open","username","password","xhrFields","send","post","getJSON","load","escape","encodeURIComponent","Callbacks","memory","fired","firing","firingStart","firingLength","firingIndex","list","stack","fire","stopOnFalse","disable","start","unique","disabled","lock","locked","fireWith","tuples","state","always","done","fail","fns","defer","tuple","returned","resolve","reject","progress","notify","stateString","sub","progressValues","progressContexts","resolveContexts","resolveValues","remain","updateFn","notifyWith","zid","_zid","findHandlers","ns","matcher","matcherFor","handlers","handler","sel","eventCapture","captureSetting","del","focusinSupported","focus","realEvent","hover","delegator","capture","set","related","relatedTarget","proxy","compatible","isImmediatePropagationStopped","_args","preventDefault","stopPropagation","removeEventListener","eventMethods","predicate","sourceMethod","returnTrue","returnFalse","timeStamp","defaultPrevented","returnValue","getPreventDefault","createProxy","originalEvent","ignoreProperties","isString","specialEvents","blur","mouseenter","mouseleave","click","mousedown","mouseup","mousemove","proxyFn","unshift","unbind","one","stopImmediatePropagation","delegate","undelegate","live","die","autoRemove","evt","currentTarget","liveFired","dispatchEvent","createEvent","bubbles","initEvent","nativeGetComputedStyle","pseudoElement","visible","process","filterRe","filters","oldQsa","oldMatches","hidden","checked","childRe","classTag","taggedParent","console","cssWithMappingToString","useSourceMap","content","cssMapping","btoa","sourceMapping","toComment","sources","sourceRoot","sourceMap","unescape","stringify","mediaQuery","alreadyImportedModules","core","version","__e","addStylesToDom","styles","domStyle","stylesInDom","refs","addStyle","listToStyles","newStyles","base","media","part","insertStyleElement","getElement","insertInto","lastStyleElementInsertedAtTop","stylesInsertedAtTop","insertAt","removeStyleElement","createStyleElement","attrs","addAttrs","createLinkElement","link","rel","keys","update","transform","singleton","styleIndex","singletonCounter","applyToSingletonTag","URL","createObjectURL","revokeObjectURL","Blob","updateLink","applyToTag","newObj","styleSheet","replaceText","cssNode","createTextNode","autoFixUrls","convertToAbsoluteUrls","fixUrls","blob","oldSrc","isOldIE","memo","atob","getTarget","styleTarget","HTMLIFrameElement","DEBUG","newList","mayRemove","textStore","replacement","Boolean","evaluate","interpolate","noMatch","escapes","'","\\","\r","\n","\t","
","
","escaper","htmlEntities","&","<",">","\"","entityRe","escapeExpr","string","counter","tmpl","render","variable","Function","template","store","uid","Symbol","USE_SYMBOL","_ui_object","_ui_object2","_error_mixin","_error_mixin2","Playback","_UIObject","i18n","playerError","_i18n","_consented","consent","pause","stop","seek","seekPercentage","percentage","getStartTimeOffset","getDuration","isPlaying","getPlaybackType","NO_OP","isHighDefinitionInUse","_options","destroy","attemptAutoPlay","_this2","canAutoPlay","closedCaptionsTracks","trackId","canPlay","VOD","AOD","LIVE","_events2","BaseObject","_Events","$export","own","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","expProto","C","a","b","virtual","R","U","__g","anObject","IE8_DOM_DEFINE","toPrimitive","dP","f","O","Attributes","IObject","defined","it","_error","_error2","ErrorMixin","createError","useCodePrefix","origin","prefixedCode","code","defaultError","description","level","Levels","FATAL","raw","errorData","UI","defaultUI","title","t","message","warn","_base_object","_base_object2","delegateEventSplitter","UIObject","_BaseObject","cid","_ensureElement","delegateEvents","undelegateEvents","setElement","attributes","createDesc","$keys","enumBugKeys","bitmap","UICorePlugin","enabled","bindEvents","getExternalInterface","enable","CorePlugin","px","random","propertyIsEnumerable","_iterator","_iterator2","_symbol","_symbol2","_typeof","PlayerInfo","playbackPlugins","currentSize","_players","getInstance","playerId","UIContainerPlugin","ContainerPlugin","aFunction","that","valueOf","ceil","floor","shared","getOwnPropertySymbols","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","contentWindow","write","lt","close","Properties","def","TAG","tag","stat","LIBRARY","wksExt","$Symbol","charAt","pIE","toIObject","gOPD","getOwnPropertyDescriptor","_kibo","_kibo2","Kibo","defaultSetTimout","defaultClearTimeout","runTimeout","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","Item","nextTick","browser","env","argv","versions","addListener","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask","Mediator","opts","_html5_video","_html5_video2","arrayIndexOf","cof","toInteger","min","fails","KEY","exp","$at","iterated","_t","_i","point","redefine","Iterators","$iterCreate","setToStringTag","ITERATOR","BUGGY","returnThis","Base","NAME","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","proto","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","hiddenKeys","getOwnPropertyNames","_core","_core2","_container","_container2","PlayerError","WARN","INFO","_media_control","_media_control2","_template","_template2","Styler","getStyleFor","baseUrl","_loader","_loader2","_from","_from2","arr2","_html5_audio","_html5_audio2","_html_img","_html_img2","_no_op","_no_op2","_spinner_three_bounce","_spinner_three_bounce2","_watermark","_watermark2","_poster","_poster2","_click_to_pause","_click_to_pause2","_dvr_controls","_dvr_controls2","_favicon","_favicon2","_player","_player2","_utils2","_playback","_playback2","_container_plugin","_container_plugin2","_core_plugin","_core_plugin2","_ui_core_plugin","_ui_core_plugin2","_ui_container_plugin","_ui_container_plugin2","_mediator","_mediator2","_player_info","_player_info2","_base_flash_playback","_base_flash_playback2","_flash","_flash2","_flashls","_flashls2","_hls","_hls2","_styler","_styler2","_vendor","_vendor2","Player","Browser","MediaControl","Container","Core","Loader","Utils","BaseFlashPlayback","Flash","FlasHLS","HLS","HTML5Audio","HTML5Video","HTMLImg","NoOp","ClickToPausePlugin","DVRControls","Favicon","Log","Poster","SpinnerThreeBouncePlugin","WaterMarkPlugin","Vendor","_core_factory","_core_factory2","defaultOptions","persistConfig","allowUserInteraction","isMobile","_normalizeSources","chromeless","disableKeyboardShortcuts","_registerOptionEventListeners","_coreFactory","playerInfo","parentId","setParentId","attachTo","loader","plugins","mediaControl","ended","buffering","_ready","onReady","onResize","onPlay","onPause","onStop","onEnded","onSeek","onError","onTimeUpdate","onVolumeUpdate","onSubtitleAvailable","parentElement","_addEventListeners","isReady","_onReady","_containerChanged","_onFullscreenChange","_onResize","_addContainerEventListeners","_onPlay","_onPause","_onStop","_onEnded","_onSeek","_onError","_onTimeUpdate","_onVolumeUpdate","_onSubtitleAvailable","newEvents","userEvent","eventType","eventsMapping","eventFunction","fullscreen","getCurrentTime","timeProgress","resize","autoPlay","getCurrentPlayback","setVolume","getVolume","mute","_mutedVolume","unmute","isDvrEnabled","isDvrInUse","getPlugin","plugin","getKeys","gOPS","toObject","$assign","A","K","T","aLen","getSymbols","isEnum","toLength","toIndex","IS_INCLUDES","fromIndex","max","TO_STRING","pos","charCodeAt","ObjectProto","TO_STRING_TAG","collections","Collection","addToUnscopables","step","_k","Arguments","DESCRIPTORS","META","$fails","wks","wksDefine","keyOf","enumKeys","gOPNExt","$GOPD","$DP","gOPN","$JSON","_stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","D","protoDesc","sym","isSymbol","iterator","$defineProperty","$defineProperties","$create","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","symbols","keyFor","useSetter","useSimple","replacer","$replacer","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","fastKey","getWeak","onFreeze","meta","NEED","windowNames","getWindowNames","$Object","desc","setPrototypeOf","check","buggy","thisArg","kValue","getDevice","getViewportSize","getOsData","getBrowserData","getBrowserInfo","_browser_data","_browser_data2","_os_data","_os_data2","ua","extra","appName","appVersion","browserObject","userAgent","browserRegExp","identifier","browserRegExpResult","group","versionIdentifier","versionRegExp","versionRegExpResult","setBrowserVersion","splitVersion","fullVersion","majorVersion","minorVersion","osObject","osRegExp","osRegExpResult","setOsVersion","versionSeparator","separator","finalSeparator","substr","viewportObject","platformRegExp","browserInfo","isEdge","isChrome","isSafari","isFirefox","isLegacyIE","ActiveXObject","isIE","isIE11","isChromecast","isiOS","isAndroid","isWindowsPhone","isWin8App","isWiiU","isPS4","setItem","removeItem","hasFlash","mimeTypes","enabledPlugin","os","viewport","device","orientation","BROWSER_DATA","OS_DATA","BOLD","LEVEL_INFO","LEVEL_DISABLED","COLORS","DESCRIPTIONS","offLevel","kibo","down","onOff","BLACKLIST","log","info","previousLevel","newLevel","color","klassDescription","LEVEL_DEBUG","LEVEL_WARN","LEVEL_ERROR","_instance","setLevel","KEY_NAMES_BY_CODE","8","9","13","16","17","18","20","27","32","37","38","39","40","48","49","50","51","52","53","54","55","56","57","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","112","113","114","115","116","117","118","119","120","121","122","123","KEY_CODES_BY_NAME","MODIFIERS","registerEvent","attachEvent","unregisterEvent","detachEvent","stringContains","neatString","capitalize","what","arrayIncludes","haystack","needle","extractModifiers","keyCombination","modifiers","extractKey","modifiersAndKey","keyName","keyCode","lastKeyCode","lastModifiers","keysDown","any","keysUp","downHandler","upHandler","unloader","upOrDown","registeredKeys","lastModifiersAndKey","registerKeys","newKeys","unregisterKeys","up","lastKey","modifier","CoreFactory","player","addCorePlugins","createContainers","corePlugins","Plugin","addPlugin","setupExternalInterface","externalFunctions","_container_factory","_container_factory2","_fonts","_fonts2","configureDomRecycler","firstResize","setupMediaControl","_boundFullscreenHandler","handleFullscreenChange","handleWindowResize","webkitfullscreenchange","data-player","playback","containerFactory","setupContainers","resolveOnContainersReady","updateSize","setFullscreen","setPlayerSize","previousSize","triggerResize","enableResizeObserver","_this3","checkSizeCallback","clientWidth","clientHeight","resizeObserverInterval","setInterval","newSize","oldHeight","oldWidth","computedSize","disableResizeObserver","clearInterval","_this4","hasPlugin","_this5","_screenOrientation","setMediaControlContainer","setContainer","disableMediaControl","enableMediaControl","removeContainer","setupContainer","renderContainers","getCurrentContainer","appendToParent","_this6","createContainer","createMediaControl","focusElement","toggleFullscreen","onMediaControlShow","mediacontrol","external","showMediaControl","hideMediaControl","hideMediaControlDelay","showing","_this7","appendTo","ContainerFactory","findPlaybackPlugin","resolvedSource","playbackPlugin","addContainerPlugins","containerPlugins","currentTime","mediaControlDisabled","data-container","dblclick","doubleTap","contextmenu","hasClosedCaptionsTracks","closedCaptionsTrackId","timeUpdated","onBuffering","bufferfull","settingsUpdate","loadedMetadata","highDefinitionUpdate","updateBitrate","playbackStateChanged","playbackDvrStateChanged","onSeeked","playing","paused","stopped","subtitleAvailable","subtitleChanged","track","dvrInUse","newBitrate","statsReport","metrics","dvrEnabled","setStyle","animate","duration","metadata","current","clicked","dblClicked","onContextMenu","mouseEnter","mouseLeave","isHD","updateStyle","hmr","locals","currentDir","pathname","fullMatch","origUrl","unquotedOrigUrl","newUrl","_stringify2","_mediaControl","_mediaControl2","_play","_play2","_pause","_pause2","_stop","_stop2","_volume","_volume2","_mute","_mute2","_expand","_expand2","_shrink","_shrink2","_hd","_hd2","currentPositionValue","currentDurationValue","keepVisible","fullScreenOnVideoTagSupported","setInitialVolume","addEventListeners","right","bindKeyEvents","userDisabled","stopDragHandler","stopDrag","updateDragHandler","updateDrag","data-media-control","click [data-play]","click [data-pause]","click [data-playpause]","click [data-stop]","click [data-playstop]","click [data-fullscreen]","click .bar-container[data-seekbar]","click .bar-container[data-volume]","click .drawer-icon[data-volume]","mouseenter .drawer-container[data-volume]","mouseleave .drawer-container[data-volume]","mousedown .bar-container[data-volume]","mousemove .bar-container[data-volume]","mousedown .bar-scrubber[data-seekbar]","mousemove .bar-container[data-seekbar]","mouseleave .bar-container[data-seekbar]","mouseenter .media-control-layer[data-controls]","mouseleave .media-control-layer[data-controls]","intendedVolume","playerResize","changeTogglePlay","updateProgressBar","onVolumeChanged","onLoadedMetadataOnVideoTag","unbindKeyEvents","initialVolume","updateVolumeUI","video","webkitSupportsFullscreen","rendered","$volumeBarContainer","containerWidth","barWidth","$volumeBarBackground","$volumeBarFill","$volumeBarScrubber","$volumeIcon","applyButtonStyle","$playPauseToggle","$playStopToggle","mousemoveOnSeekBar","seekEnabled","offsetX","pageX","$seekBarContainer","$seekBarHover","mouseleaveOnSeekBar","onVolumeClick","getVolumeFromUIEvent","mousemoveOnVolumeBar","draggingVolumeBar","$fullscreenToggle","hideVolumeBar","togglePlayPause","togglePlayStop","startSeekDrag","draggingSeekBar","$seekBarLoaded","$seekBarPosition","$seekBarScrubber","startVolumeDrag","setSeekPercentage","toggleMute","isInitialVolume","setWhenContainerReady","resetUserKeepVisible","showVolumeBar","hideVolumeId","loadedStart","total","loadedEnd","renderSeekBar","currentSeekBarPercentage","newPosition","newDuration","displayedPosition","$position","displayedDuration","$duration","setKeepVisible","resetKeepVisible","setUserKeepVisible","userKeepVisible","isVisible","clientX","lastMouseX","clientY","lastMouseY","hideId","delay","newSettings","getSettings","$hdIndicator","createCachedElements","$layer","$volumeContainer","resetIndicators","initializeIcons","displayedSeekBarPercentage","seekRelative","delta","bindKeyAndShow","parseColors","buttonsColor","buttons","seekbarColor","seekbar","_this8","previousSeekPercentage","_toConsumableArray2","_toConsumableArray3","_stats","_stats2","_google_analytics","_google_analytics2","_closed_captions","_closed_captions2","_seek_time","_seek_time2","_sources","_sources2","_end_video","_end_video2","_strings","_strings2","_error_screen","_error_screen2","externalPlugins","useOnlyPlainHtml5Plugins","validateExternalPluginsType","addExternalPlugins","groupPluginsByType","removeDups","groupUp","pluginsMap","reduceRight","errorMessage","from","isArrayIter","createProperty","getIterFn","iter","arrayLike","mapfn","mapping","iterFn","ret","ArrayProto","classof","getIteratorMethod","ARG","tryGet","callee","SAFE_CLOSING","riter","skipClosing","safe","_tracks","_tracks2","MIMETYPES","codec","ogg","3gpp","webm","mkv","m3u8","AUDIO_MIMETYPES","wav","mp3","aac","oga","KNOWN_AUDIO_MIMETYPES","acc","UNKNOWN_ERROR","_Playback","_destroyed","_loadStarted","_isBuffering","_playheadMoving","_playheadMovingTimer","_stopped","_ccTrackId","_setupSrc","disableContextMenu","disableVideoTagContextMenu","playbackConfig","preload","posterUrl","poster","defaultMuted","loop","controls","useVideoTagDefaultControls","crossOrigin","x-webkit-playsinline","playInline","playsinline","crossorigin","externalTracks","_setupExternalTracks","isAudioOnly","resourceUrl","_mimeTypesForUrl","audioOnly","data-html5-video","canplay","canplaythrough","durationchange","loadeddata","loadedmetadata","seeking","seeked","stalled","timeupdate","waiting","disableCanAutoPlay","autoPlayTimeout","tracks","_externalTracks","label","lang","srcUrl","_ccIsSetup","_src","_onLoadedMetadata","_handleBufferingEvents","_updateSettings","autoSeekFromUrl","_checkInitialSeek","_onDurationChange","_onProgress","isSeekEnabled","onDemandType","Infinity","_stopPlayheadMovingChecks","isMuted","_startPlayheadMovingChecks","_playheadMovingTimeOnCheck","_determineIfPlayheadMoving","_onWaiting","_onLoadedData","_onCanPlay","_onPlaying","_checkForClosedCaptions","_onSeeking","_onSeeked","playheadShouldBeMoving","HAVE_FUTURE_DATA","_ref","isUnknownError","formattedError","handleTextTrackChange","textTracks","seekTime","buffered","bufferedPos","end","_typeFor","_isReadyState","isHTML5Video","_handleTextTrackChange","mode","showingTrack","mimeTypesByExtension","extension","_canPlay","mediaType","canPlayType","_HTML5Video","updateSettings","mimetypes","data-html-img","_onLoad","resource","_noiseFrameNum","data-no-op","playbackNotSupported","playbackNotSupportedMessage","showForNoOp","_animate","_noise","idata","createImageData","canvas","buffer32","Uint32Array","buffer","pow","putImageData","_loop","_animationHandle","getContext","_spinner","_spinner2","_UIContainerPlugin","showTimeout","onBufferFull","data-spinner","StatsPlugin","_ContainerPlugin","setInitialAttrs","reportInterval","onStatsAdd","firstPlay","startupTime","rebufferingTime","watchingTime","rebuffers","externalMetrics","watchingTimeInit","intervalId","report","startupTimeInit","rebufferingTimeInit","getRebufferingTime","getWatchingTime","isRebuffering","metric","getStats","watermark","imageUrl","imageLink","watermarkLink","templateOptions","PosterPlugin","hasStartedPlaying","playRequested","data-poster","showOnVideoEnd","hasFatalError","showPlayButton","updatePlayButton","hidePlayButton","disableErrorScreen","$playButton","shouldHideOnPlay","shouldRender","updatePoster","hidePoster","showPoster","custom","background-image","background","$playWrapper","GoogleAnalytics","gaAccount","account","trackerName","gaTrackerName","domainName","gaDomainName","currentHDState","embedScript","_gat","onload","onPlaybackChanged","CONTAINER_FULL_SCREEN","onFullscreen","onHD","onDVR","_gaq","playbackState","res","pointerEnabled","_index","_index2","_UICorePlugin","click .live-button","data-dvr-controls","containerChanged","dvrChanged","useDvrControls","backToLive","_cc","_cc2","ClosedCaptions","config","closedCaptionsConfig","_title","_ariaLabel","ariaLabel","_labelCb","labelCallback","click [data-cc-button]","click [data-cc-select]","data-cc-controls","hideContextMenu","onSubtitleChanged","onContainerStop","ccAvailable","renderCcButton","setCurrentContextMenuElement","onTrackSelect","dataset","ccSelect","hasCC","toggleContextMenu","contextMenuElement","_trackId","$ccButton","disabledLabel","$fullscreen","insertAfter","prepend","oldIcon","_CorePlugin","changeFavicon","setPlayIcon","setPauseIcon","resetIcon","createIcon","fillStyle","path","Path2D","fill","icon","toDataURL","playIcon","changeIcon","pauseIcon","SeekTime","hoveringOverSeekBar","hoverPosition","firstFragDateTime","actualLiveTime","actualLiveServerTime","actualLiveServerTimeDiff","getTime","data-seek-time","mediaControlContainer","isLiveStreamWithDvr","showTime","hideTime","onContainerChanged","updateDuration","calculateHoverPosition","getSeekTime","secondsSinceMidnight","useActualLiveTime","setHours","shouldBeVisible","currentSeekTime","displayedSeekTime","$seekTimeEl","durationShown","$durationEl","currentDuration","elWidth","elLeftPos","SourcesPlugin","onContainersCreated","firstValidSource","EndVideo","exitFullscreenOnEnd","Strings","_initializeMessages","_language","fallbackLang","_messages","defaultMessages","en","back_to_live","playback_not_supported","default_error_title","default_error_message","pt","es","ru","fr","et","strings","_reload","_reload2","ErrorScreen","_ret","data-error-screen","bindReload","reloadButton","reload","unbindReload","reloadIcon"],"mappings":"CAAA,SAAAA,EAAAC,GACA,gBAAAC,UAAA,gBAAAC,QACAA,OAAAD,QAAAD,IACA,kBAAAG,gBAAAC,IACAD,UAAAH,GACA,gBAAAC,SACAA,QAAA,OAAAD,IAEAD,EAAA,OAAAC,KACC,mBAAAK,WAAAC,KAAA,WACD,MCAgB,UAAUC,GCN1B,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAR,OAGA,IAAAC,GAAAQ,EAAAD,IACAE,EAAAF,EACAG,GAAA,EACAX,WAUA,OANAM,GAAAE,GAAAI,KAAAX,EAAAD,QAAAC,IAAAD,QAAAO,GAGAN,EAAAU,GAAA,EAGAV,EAAAD,QAvBA,GAAAS,KA4DA,OAhCAF,GAAAM,EAAAP,EAGAC,EAAAO,EAAAL,EAGAF,EAAAQ,EAAA,SAAAf,EAAAgB,EAAAC,GACAV,EAAAW,EAAAlB,EAAAgB,IACAG,OAAAC,eAAApB,EAAAgB,GACAK,cAAA,EACAC,YAAA,EACAC,IAAAN,KAMAV,EAAAiB,EAAA,SAAAvB,GACA,GAAAgB,GAAAhB,KAAAwB,WACA,WAA2B,MAAAxB,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAM,GAAAQ,EAAAE,EAAA,IAAAA,GACAA,GAIAV,EAAAW,EAAA,SAAAQ,EAAAC,GAAsD,MAAAR,QAAAS,UAAAC,eAAAjB,KAAAc,EAAAC,IAGtDpB,EAAAuB,EAAA,GAGAvB,IAAAwB,EAAA,MDgBM,SAAU9B,EAAQD,EAASO,GAEjC,YE7EAP,GAAAyB,YAAA,EAEAzB,EAAAgC,QAAA,SAAAC,EAAAC,GACA,KAAAD,YAAAC,IACA,SAAAC,WAAA,uCFsFM,SAAUlC,EAAQD,EAASO,GAEjC,YG5FAP,GAAAyB,YAAA,CAEA,IAAAW,GAAA7B,EAAA,IAEA8B,EAEA,SAAAC,GAAsC,MAAAA,MAAAb,WAAAa,GAAuCN,QAAAM,IAF7EF,EAIApC,GAAAgC,QAAA,SAAA5B,EAAAQ,GACA,IAAAR,EACA,SAAAmC,gBAAA,4DAGA,QAAA3B,GAAA,qBAAAA,EAAA,eAAAyB,EAAAL,SAAApB,KAAA,kBAAAA,GAAAR,EAAAQ,IHoGM,SAAUX,EAAQD,EAASO,GAEjC,YIrGA,SAAAiC,GAAAF,GAAsC,MAAAA,MAAAb,WAAAa,GAAuCN,QAAAM,GAd7EtC,EAAAyB,YAAA,CAEA,IAAAgB,GAAAlC,EAAA,KAEAmC,EAAAF,EAAAC,GAEAE,EAAApC,EAAA,IAEAqC,EAAAJ,EAAAG,GAEAP,EAAA7B,EAAA,IAEA8B,EAAAG,EAAAJ,EAIApC,GAAAgC,QAAA,SAAAa,EAAAC,GACA,qBAAAA,IAAA,OAAAA,EACA,SAAAX,WAAA,qEAAAW,EAAA,eAAAT,EAAAL,SAAAc,IAGAD,GAAAjB,WAAA,EAAAgB,EAAAZ,SAAAc,KAAAlB,WACAmB,aACAC,MAAAH,EACAvB,YAAA,EACA2B,UAAA,EACA5B,cAAA,KAGAyB,IAAAJ,EAAAV,SAAA,EAAAU,EAAAV,SAAAa,EAAAC,GAAAD,EAAAK,UAAAJ,KJ2HM,SAAU7C,EAAQD,EAASO,GAEjC,YK1JAP,GAAAyB,YAAA,CAEA,IAAA0B,GAAA5C,EAAA,IAEA6C,EAEA,SAAAd,GAAsC,MAAAA,MAAAb,WAAAa,GAAuCN,QAAAM,IAF7Ea,EAIAnD,GAAAgC,QAAA,WACA,QAAAqB,GAAAC,EAAAC,GACA,OAAA7C,GAAA,EAAmBA,EAAA6C,EAAAC,OAAkB9C,IAAA,CACrC,GAAA+C,GAAAF,EAAA7C,EACA+C,GAAAnC,WAAAmC,EAAAnC,aAAA,EACAmC,EAAApC,cAAA,EACA,SAAAoC,OAAAR,UAAA,IACA,EAAAG,EAAApB,SAAAsB,EAAAG,EAAAC,IAAAD,IAIA,gBAAAvB,EAAAyB,EAAAC,GAGA,MAFAD,IAAAN,EAAAnB,EAAAN,UAAA+B,GACAC,GAAAP,EAAAnB,EAAA0B,GACA1B,OLmKM,SAAUjC,EAAQD,EAASO,GAEjC,YAyBA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAtBvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIa,GAAQtD,EAAoB,IAE5BuD,EAAStB,EAAuBqB,GAEhCE,EAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C3B,EAAW7B,EAAoB,IAE/B8B,EAAWG,EAAuBJ,GM1MtC6B,EAAA1D,EAAA,IN8MI2D,EAAQ1B,EAAuByB,GM7MnCE,EAAA5D,EAAA,GAEM6D,EAAQC,MAAMzC,UAAUwC,MAExBE,EAAgB,MAEhBC,EAAY,SAASjC,EAAKkC,EAAQxD,EAAMyD,GAC5C,IAAKzD,EAAM,OAAO,CAGlB,IAAoB,gBAAhB,KAAOA,EAAP,eAAAqB,EAAAL,SAAOhB,IAAmB,CAC5B,IAAK,GAAM0C,KAAO1C,GAChBsB,EAAIkC,GAAQE,MAAMpC,GAAMoB,EAAK1C,EAAK0C,IAAMiB,OAAOF,GAEjD,QAAO,EAIT,GAAIH,EAAcM,KAAK5D,GAAO,CAE5B,IAAK,GADC6D,GAAQ7D,EAAK8D,MAAMR,GAChB5D,EAAI,EAAGC,EAAIkE,EAAMrB,OAAQ9C,EAAIC,EAAGD,IACvC4B,EAAIkC,GAAQE,MAAMpC,GAAMuC,EAAMnE,IAAIiE,OAAOF,GAE3C,QAAO,EAGT,OAAO,GAGHM,EAAgB,SAASC,EAAQC,EAAMC,EAAOlE,GAKlD,QAASmE,KACP,IACE,OAAQF,EAAKzB,QAEb,IAAK,GAAG,OAAS9C,EAAIC,IAAMyE,EAAKJ,EAAOtE,IAAI2E,SAASzE,KAAKwE,EAAGE,IAAO,OACnE,KAAK,GAAG,OAAS5E,EAAIC,IAAMyE,EAAKJ,EAAOtE,IAAI2E,SAASzE,KAAKwE,EAAGE,IAAKC,EAAM,OACvE,KAAK,GAAG,OAAS7E,EAAIC,IAAMyE,EAAKJ,EAAOtE,IAAI2E,SAASzE,KAAKwE,EAAGE,IAAKC,EAAIC,EAAM,OAC3E,KAAK,GAAG,OAAS9E,EAAIC,IAAMyE,EAAKJ,EAAOtE,IAAI2E,SAASzE,KAAKwE,EAAGE,IAAKC,EAAIC,EAAIC,EAAM,OAC/E,SAAS,OAAS/E,EAAIC,IAAMyE,EAAKJ,EAAOtE,IAAI2E,SAASX,MAAMU,EAAGE,IAAKL,EAAQ,SAE3E,MAAOS,GACPxB,EAAAlC,QAAI2D,MAAMjB,MAAVR,EAAAlC,SAAsBkD,EAAO,iBAAkBlE,EAAM,UAAU,IAAK0E,IACpEP,KAhBJ,GAAIC,UAAI1E,GAAK,EACPC,EAAIqE,EAAOxB,OAAQ+B,EAAKN,EAAK,GAAIO,EAAKP,EAAK,GAAIQ,EAAKR,EAAK,EAC/DE,MAwBmBS,ENuOR,WACX,QAASA,MACP,EAAI5B,EAAiBhC,SAAS3B,KAAMuF,GAiJtC,MAvIAA,GAAOhE,UM3OPiE,GN2OsB,SM3OnB7E,EAAMqE,EAAUS,GACjB,MAAKvB,GAAUlE,KAAM,KAAMW,GAAOqE,EAAUS,KAAcT,GAC1DhF,KAAK0F,UAAY1F,KAAK0F,aACP1F,KAAK0F,QAAQ/E,KAAUX,KAAK0F,QAAQ/E,QAC5CgF,MAAOX,SAAUA,EAAUS,QAASA,EAASR,IAAKQ,GAAWzF,OAC7DA,MAJoEA,MN2P7EuF,EAAOhE,UM7OPqE,KN6OwB,SM7OnBjF,EAAMqE,EAAUS,GAAS,GAAAI,GAAA7F,KACxB4F,QACJ,KAAK1B,EAAUlE,KAAM,OAAQW,GAAOqE,EAAUS,MAAcT,EAAU,MAAOhF,KAC7E,IAAM8F,GAAM,iBAAMD,GAAKC,IAAInF,EAAMiF,GAKjC,OAJAA,GAAO,WACLE,IACAd,EAASX,MAAMrE,KAAM+F,YAEhB/F,KAAKwF,GAAG7E,EAAMiF,EAAMH,IN6P7BF,EAAOhE,UMnPPuE,INmPuB,SMnPnBnF,EAAMqE,EAAUS,GAClB,GAAIO,UAAQjB,SAAIJ,SAAQH,SAAOnE,SAAGC,SAAG2F,SAAGC,QACxC,KAAKlG,KAAK0F,UAAYxB,EAAUlE,KAAM,MAAOW,GAAOqE,EAAUS,IAAW,MAAOzF,KAChF,KAAKW,IAASqE,IAAaS,EAEzB,MADAzF,MAAK0F,YAAU,GACR1F,IAIT,KAFAwE,EAAQ7D,GAAQA,IAAQ,EAAA8C,EAAA9B,SAAY3B,KAAK0F,SAEpCrF,EAAI,EAAGC,EAAIkE,EAAMrB,OAAQ9C,EAAIC,EAAGD,IAGnC,GAFAM,EAAO6D,EAAMnE,GACbsE,EAAS3E,KAAK0F,QAAQ/E,GACV,CAEV,GADAX,KAAK0F,QAAQ/E,GAAQqF,KACjBhB,GAAYS,EACd,IAAKQ,EAAI,EAAGC,EAAIvB,EAAOxB,OAAQ8C,EAAIC,EAAGD,IACpClB,EAAKJ,EAAOsB,IACPjB,GAAYA,IAAaD,EAAGC,UAAYA,IAAaD,EAAGC,SAASmB,WACjEV,GAAWA,IAAYV,EAAGU,UAC7BO,EAAOL,KAAKZ,EAIbiB,GAAO7C,cAAenD,MAAK0F,QAAQ/E,GAG5C,MAAOX,ONiQTuF,EAAOhE,UMzPP6E,QNyP2B,SMzPnBzF,GACN,GAAMkE,GAAQ7E,KAAKW,MAAQX,KAAK0C,YAAY/B,IAE5C,IADAkD,EAAAlC,QAAI0E,MAAMhC,MAAVR,EAAAlC,SAAsBkD,GAAOP,OAAON,MAAMzC,UAAUwC,MAAMxD,KAAKwF,cAC1D/F,KAAK0F,QAAS,MAAO1F,KAC1B,IAAM4E,GAAOb,EAAMxD,KAAKwF,UAAW,EACnC,KAAK7B,EAAUlE,KAAM,UAAWW,EAAMiE,GAAO,MAAO5E,KACpD,IAAM2E,GAAS3E,KAAK0F,QAAQ/E,GACtB2F,EAAYtG,KAAK0F,QAAQa,GAG/B,OAFI5B,IAAQD,EAAcC,EAAQC,EAAMC,EAAOlE,GAC3C2F,GAAW5B,EAAc4B,EAAWP,UAAWlB,EAAOlE,GACnDX,MNqQTuF,EAAOhE,UM3PPiF,cN2PiC,SM3PnBvE,EAAKtB,EAAMqE,GACvB,GAAIyB,GAAczG,KAAK0G,YACvB,KAAKD,EAAa,MAAOzG,KACzB,IAAM2G,IAAUhG,IAASqE,CACpBA,IAA4B,gBAAhB,KAAOrE,EAAP,eAAAqB,EAAAL,SAAOhB,MAAmBqE,EAAWhF,MAClDiC,KAAMwE,MAAkBxE,EAAI2E,WAAa3E,EAC7C,KAAK,GAAM4E,KAAMJ,GACfxE,EAAMwE,EAAYI,GAClB5E,EAAI6D,IAAInF,EAAMqE,EAAUhF,OACpB2G,GAA8C,KAApC,EAAAlD,EAAA9B,SAAYM,EAAIyD,SAASvC,eAAqBnD,MAAK0G,aAAaG,EAEhF,OAAO7G,ON8PTuF,EM3POuB,SN2PW,SM3PFC,GACdxB,EAAOyB,SAAWzB,EAAOyB,UACzB,IAAI1F,GAAgC,gBAAdyF,IAA0BA,EAAUE,cAAcC,MAEpE5F,KAAaiE,EAAOyB,OAAO1F,GAC7BiE,EAAOyB,OAAO1F,GAAYA,EAAS6F,cAAc1C,MAAM,KAAK2C,IAC1D,SAACzE,EAAO0E,GAAR,MAA4B,KAAVA,EAAc1E,EAAQA,EAASA,EAAM,GAAGsE,cAAgBtE,EAAMoB,MAAM,KACtFuD,KAAK,IAEPzD,EAAAlC,QAAI2D,MAAM,SAAU,8BAAgCyB,IN6PxDxB,EMzPOgC,0BNyP4B,WMvPjC,MADAhC,GAAOyB,SAAWzB,EAAOyB,YAClB,EAAAvD,EAAA9B,SAAY4D,EAAOyB,QAAQQ,OAAO,SAAClG,GAAD,MAAiD,gBAA5BiE,GAAOyB,OAAO1F,MN8PvEiE,IA6BT5F,GAAQgC,QMvZa4D,CAwJrB,IAAMkC,IAAkBC,SAAU,KAAMC,aAAc,SAEtD,EAAAlE,EAAA9B,SAAY8F,GAAeG,QAAQ,SAASC,GAC1CtC,EAAOhE,UAAUsG,GAAU,SAAS5F,EAAKtB,EAAMqE,GAM7C,OALoBhF,KAAK0G,eAAiB1G,KAAK0G,kBACpCzE,EAAI2E,YAAc3E,EAAI2E,WAAY,EAAA9C,EAAAgE,UAAS,OACpC7F,EACb+C,GAA4B,gBAAhB,KAAOrE,EAAP,eAAAqB,EAAAL,SAAOhB,MAAmBqE,EAAWhF,MACtDiC,EAAIwF,EAAcI,IAASlH,EAAMqE,EAAUhF,MACpCA,QAUXuF,EAAOwC,aAAe,QAOtBxC,EAAOyC,cAAgB,SAOvBzC,EAAO0C,kBAAoB,aAM3B1C,EAAO2C,YAAc,OAMrB3C,EAAO4C,aAAe,QAMtB5C,EAAO6C,YAAc,OAMrB7C,EAAO8C,aAAe,QAOtB9C,EAAO+C,YAAc,OAOrB/C,EAAOgD,aAAe,cAoBtBhD,EAAOiD,MAAQ,QAYfjD,EAAOkD,kBAAoB,aAO3BlD,EAAOmD,oBAAsB,eAO7BnD,EAAOoD,0BAA4B,oBAkBnCpD,EAAOqD,kBAAoB,oBAY3BrD,EAAOsD,oBAAsB,sBAM7BtD,EAAOuD,eAAiB,iBAUxBvD,EAAOwD,mBAAqB,qBAW5BxD,EAAOyD,oBAAsB,sBAM7BzD,EAAO0D,wBAA0B,0BAYjC1D,EAAO2D,wBAA0B,0BAQjC3D,EAAO4D,8BAAgC,gCAgBvC5D,EAAO6D,iBAAmB,mBAU1B7D,EAAO8D,0BAA4B,4BAOnC9D,EAAO+D,4BAA8B,+BAOrC/D,EAAOgE,0BAA4B,6BAWnChE,EAAOiE,uBAAyB,yBAOhCjE,EAAOkE,aAAe,eAEtBlE,EAAOmE,8BAAgC,gCAEvCnE,EAAOoE,6BAA+B,+BAOtCpE,EAAOqE,eAAiB,iBAMxBrE,EAAOsE,qBAAuB,uBAU9BtE,EAAOuE,cAAgB,gBAMvBvE,EAAOwE,eAAiB,iBAMxBxE,EAAOyE,cAAgB,gBAMvBzE,EAAO0E,gBAAkB,kBAMzB1E,EAAO2E,cAAgB,gBAQvB3E,EAAO4E,eAAiB,iBAExB5E,EAAO6E,mBAAqB,qBAE5B7E,EAAO8E,yBAA2B,2BAElC9E,EAAO+E,sBAAwB,wBAM/B/E,EAAOgF,4BAA8B,8BAUrChF,EAAOiF,0BAA4B,4BAQnCjF,EAAOkF,wBAA0B,0BAMjClF,EAAOmF,oBAAsB,sBAM7BnF,EAAOoF,WAAa,aAOpBpF,EAAOqF,gBAAkB,kBAOzBrF,EAAOsF,YAAc,cAarBtF,EAAOuF,gCAAkC,kCAazCvF,EAAOwF,wBAA0B,0BACjCxF,EAAOyF,kCAAoC,gBAgB3CzF,EAAO0F,kBAAoB,oBAC3B1F,EAAO2F,uBAAyB,yBAChC3F,EAAO4F,oBAAsB,sBAM7B5F,EAAO6F,gBAAkB,kBACzB7F,EAAO8F,gBAAkB,kBAYzB9F,EAAO+F,yBAA2B,2BAOlC/F,EAAOgG,6BAA+B,+BAUtChG,EAAOiG,2BAA6B,6BAapCjG,EAAOkG,qBAAuB,uBAc9BlG,EAAOmG,mBAAqB,qBAC5BnG,EAAOoG,eAAiB,iBACxBpG,EAAOqG,eAAiB,iBACxBrG,EAAOsG,gBAAkB,kBACzBtG,EAAOuG,gBAAkB,kBACzBvG,EAAOwG,gBAAkB,kBACzBxG,EAAOyG,mBAAqB,qBAC5BzG,EAAO0G,sBAAwB,wBAC/B1G,EAAO2G,sBAAwB,uBAC/B3G,EAAO4G,sBAAwB,uBAO/B5G,EAAO6G,eAAiB,iBAOxB7G,EAAO8G,iBAAmB,mBAC1B9G,EAAO+G,iBAAmB,mBAC1B/G,EAAOgH,qBAAuB,uBAM9BhH,EAAOiH,0BAA4B,4BAMnCjH,EAAOkH,2BAA6B,6BAMpClH,EAAOmH,yBAA2B,2BAQlCnH,EAAOoH,+BAAiC,iCAOxCpH,EAAOqH,4BAA8B,8BAMrCrH,EAAOsH,4BAA8B,8BAErCtH,EAAOuH,+BAAiC,iCACxCvH,EAAOwH,8BAAgC,gCACvCxH,EAAOyH,oBAAsB,sBAM7BzH,EAAO0H,yBAA2B,2BAGlC1H,EAAO2H,sBAAwB,wBAM/B3H,EAAO4H,wBAA0B,0BAMjC5H,EAAO6H,kBAAoB,oBAM3B7H,EAAO8H,kBAAoB,oBAQ3B9H,EAAO+H,+BAAiC,iCAQxC/H,EAAOgI,gCAAkC,kCAMzChI,EAAOiI,qBAAuB,uBAM9BjI,EAAOkI,wBAA0B,0BAMjClI,EAAOmI,8BAAgC,gCAMvCnI,EAAOoI,4BAA8B,8BNgQrC/N,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YA8DA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GOvnChF,QAAS2L,GAAO3L,EAAK4L,GAC1B,GAAIA,EACF,IAAK,GAAMC,KAAQD,GAAQ,CACzB,GAAME,IAAiB,EAAAC,EAAArM,SAAgCkM,EAAQC,EAC/DC,IAAiB,EAAAhL,EAAApB,SAAsBM,EAAK6L,EAAMC,GAAkB9L,EAAI6L,GAAQD,EAAOC,GAG3F,MAAO7L,GAGF,QAASgM,GAAOC,EAAQC,GAAY,GACnCC,GADmC,SAAAC,GAEvC,QAAAD,MAAqB,EAAAzK,EAAAhC,SAAA3B,KAAAoO,EAAA,QAAAE,GAAAvI,UAAA5C,OAANyB,EAAMZ,MAAAsK,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAN3J,EAAM2J,GAAAxI,UAAAwI,EAAA,IAAA1I,IAAA,EAAA2I,EAAA7M,SAAA3B,KACnBqO,EAAA9N,KAAA8D,MAAAgK,GAAArO,MAAAsE,OAASM,IADU,OAEfuJ,GAAWM,YACbN,EAAWM,WAAWpK,MAAtBwB,EAAkCjB,GAHjBiB,EAFkB,SAAA6I,EAAA/M,SAAAyM,EAAAC,GAAAD,GACjBF,EASxB,OADAN,GAAOQ,EAAU7M,UAAW4M,GACrBC,EAGF,QAASO,GAAWC,EAAMC,GAC/B,IAAKC,SAASF,GACZ,MAAO,OAETA,IAAc,IACdA,EAAOG,SAASH,EAAK,IACrB,IAAMI,GAAUJ,EAAO,EACvBA,GAAOG,SAASH,EAAK,GACrB,IAAMK,GAAUL,EAAO,EACvBA,GAAOG,SAASH,EAAK,GACrB,IAAMM,GAAQN,EAAO,GACfO,EAAOJ,SAASH,EAAK,IACvBQ,EAAM,EAQV,OAPID,IAAQA,EAAO,IACjBC,GAAOD,EAAO,IACVD,EAAQ,IAAGE,GAAO,SAEpBF,GAASA,EAAQ,GAAKL,KAAaO,IAAQ,IAAMF,GAAOnL,OAAO,GAAK,KACxEqL,IAAQ,IAAMH,GAASlL,OAAO,GAAK,IACnCqL,IAAQ,IAAMJ,GAASjL,OAAO,GACvBqL,EAAIlI,OA4HN,QAASmI,KAAqC,GAAjBC,GAAiBvJ,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,GAAL,IAC1CiJ,EAAU,EACRQ,EAAaC,EAAYC,OAAOJ,IAAcG,EAAYE,WAAWL,IAAc,GACnFM,EAAQJ,EAAWK,MAAM,oBAC/B,IAAID,EAAMzM,OAAS,EAAG,CACpB,GAAM2M,IAAWC,EAAK,KAAMvP,EAAK,GAAIkB,EAAK,EAC1CkO,GAAMhI,QAAQ,SAASoI,GACrB,GAAIA,EAAI,CACN,GAAMC,GAASD,EAAGA,EAAG7M,OAAS,GACxByL,EAAOG,SAASiB,EAAGjM,MAAM,EAAGiM,EAAG7M,OAAS,GAAI,GAClD6L,IAAWJ,EAAQkB,EAAOG,UAGrBT,KAAcR,EAAUD,SAASS,EAAY,IAExD,OAAOR,GAKF,QAASlH,GAASoI,GAGvB,MAFAC,GAAWD,KAAYC,EAAWD,GAAU,GAErCA,KADMC,EAAWD,GAInB,QAASE,GAASzN,GACvB,MAAOA,GAAQ0N,WAAW1N,GAAS,GAAK,EAGnC,QAAS2N,KACd,GAAMC,GAAUC,SAASC,qBAAqB,SAC9C,OAAOF,GAAQpN,OAASoN,EAAQA,EAAQpN,OAAS,GAAGuN,IAAM,GAarD,QAASC,KACd,MAAOC,QAAOC,WAAaD,OAAOC,UAAUC,SAGvC,QAASC,KACd,MAAIH,QAAOI,aAAeJ,OAAOI,YAAYD,IACpCC,YAAYD,MAEdE,KAAKF,MAIP,QAASG,GAAgBC,EAAKC,GACnC,GAAM/Q,GAAI8Q,EAAIE,QAAQD,EAClB/Q,IAAK,GACP8Q,EAAIG,OAAOjR,EAAG,GAKX,QAASkR,GAAiBC,EAAIC,GACnCA,GAAU,EAAAC,EAAA/P,UACRgQ,QAAQ,EACRC,OAAO,EACPC,QAAS,IACTC,KAAM,QACNjE,OAAQkE,EAAApQ,QAAMqQ,IACdC,QAAS,MACRR,EAEH,IAAIQ,GAAUR,EAAQQ,QAAUR,EAAQQ,QAAUzB,SAAS0B,cAAcT,EAAQK,KAEjFG,GAAQL,MAAQH,EAAQG,OACF,IAAlBH,EAAQG,OACVK,EAAQE,aAAa,QAAS,UAET,IAAnBV,EAAQE,QACVM,EAAQE,aAAa,cAAe,eAEtCF,EAAQvB,IAAMe,EAAQ5D,MAEtB,IAAIuE,GAAUH,EAAQI,OAElBC,EAAYC,WAAW,WACzBC,GAAU,EAAO,GAAIC,OAAJ,WAAqBhB,EAAQI,QAA7B,0BAChBJ,EAAQI,SAEPW,EAAY,SAACE,GAAyB,GAAjBpN,GAAiBS,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,GAAT,IAC/B4M,cAAaL,GACbd,EAAGkB,EAAQpN,QAGGiK,KAAZ6C,EACFA,EACGQ,KAAK,iBAAMJ,IAAU,KACrBK,MAAM,SAAAC,GAAA,MAAON,IAAU,EAAOM,KAEjCN,GAAU,GP+yBd1R,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,IAEThD,EAAQoT,YAAcpT,EAAQqT,qBAAuBrT,EAAQsT,sBAAwBtT,EAAQ8P,YAAc9P,EAAQuT,OAASvT,EAAQwT,eAAa5D,EAEjJ,IAAI6D,GAAUlT,EAAoB,IAE9BwR,EAAWvP,EAAuBiR,GAElCC,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvC3P,EAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDC,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GAEpC1Q,EAAkB5C,EAAoB,IAEtC6C,EAAmBZ,EAAuBW,GAE1C2Q,EAA4BvT,EAAoB,KAEhD8N,EAA6B7L,EAAuBsR,EAExD9T,GO7lCgBiO,SP8lChBjO,EOplCgBsO,SPqlChBtO,EOxkCgBgP,aPykChBhP,EOz7BgB0P,sBP07BhB1P,EOt6BgBmI,WPu6BhBnI,EOj6BgByQ,WPk6BhBzQ,EO95BgB2Q,mBP+5BhB3Q,EOh5BgBgR,qBPi5BhBhR,EO74BgBoR,MP84BhBpR,EOt4BgBuR,kBPu4BhBvR,EO/3BgB4R,mBA7OhBrR,EAAA,IACA,IAAAwT,GAAAxT,EAAA,IPinCIyT,EAAYxR,EAAuBuR,GOhnCvCE,EAAA1T,EAAA,GPonCI2T,EAAgB1R,EAAuByR,GOnnC3CE,EAAA5T,EAAA,KPunCI6R,EAAU5P,EAAuB2R,GOvkCxBX,gBACXY,aAAc,WACZ,SACEvD,SAASwD,yBACTxD,SAASyD,oBACTzD,SAAS0D,eACT1D,SAAS2D,sBAGbC,kBAAmB,SAASpE,GACtBA,EAAGoE,kBACLpE,EAAGoE,oBACIpE,EAAGqE,wBACVrE,EAAGqE,0BACIrE,EAAGsE,qBACVtE,EAAGsE,uBACItE,EAAGuE,oBACVvE,EAAGuE,sBACIvE,EAAGwE,eAAiBxE,EAAGwE,cAAc,UAAYxE,EAAGwE,cAAc,SAASC,sBAClFzE,EAAGwE,cAAc,SAASC,wBACnBzE,EAAGyE,uBACVzE,EAAGyE,yBAGPC,iBAAkB,WAAsB,GAAb1E,GAAajK,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,GAAVyK,QACxBR,GAAG2E,eACL3E,EAAG2E,iBACI3E,EAAG4E,uBACV5E,EAAG4E,yBACI5E,EAAG6E,qBACV7E,EAAG6E,uBACI7E,EAAG8E,oBACV9E,EAAG8E,sBACI9E,EAAG+E,kBACV/E,EAAG+E,oBAGPC,kBAAmB,WACjB,SACExE,SAASwE,mBACTxE,SAASyE,yBACTzE,SAAS0E,sBACT1E,SAAS2E,uBAKFjC,EP2mCAvT,EO3mCAuT,OP2mCiB,WAC5B,QAASA,MACP,EAAIvP,EAAiBhC,SAAS3B,KAAMkT,GAyCtC,MAtCAA,GO9mCOkC,eP8mCiB,WO7mCtB,OACEC,QACE1S,MAAO,IACP2S,MAAOvG,YPmnCbmE,EO9mCOqC,iBP8mCmB,SO9mCFlS,GACtB,IACE,MAAOrD,MAAKoV,iBAAiB/R,GAAKiS,MAAMtV,KAAKoV,iBAAiB/R,GAAKV,OACnE,MAAO6S,GACP,SPknCJtC,EO9mCOuC,gBP8mCkB,SO9mCFpS,GACrB,gBAAiBmN,SAASkF,OAA1B,IAAoCrS,GPinCtC6P,EO9mCOyC,QP8mCU,SO9mCFtS,GACb,MAAIsQ,GAAAhS,QAAQiU,iBAAmBC,aAAa7V,KAAKyV,gBAAgBpS,IACxDrD,KAAKoV,iBAAiB/R,GAAKiS,MAAMO,aAAa7V,KAAKyV,gBAAgBpS,KAErErD,KAAKuV,iBAAiBlS,IPgnC/B6P,EO7mCO4C,QP6mCU,SO7mCFzS,EAAKV,GAClB,GAAIgR,EAAAhS,QAAQiU,gBACV,IAEE,MADAC,cAAa7V,KAAKyV,gBAAgBpS,IAAQV,GACnC,EACP,MAAO6S,GACP,OAAO,IPknCNtC,KO5mCIzD,EP+mCK9P,EO/mCL8P,YP+mC2B,WACtC,QAASA,MACP,EAAI9L,EAAiBhC,SAAS3B,KAAMyP,GAwCtC,MArCAA,GOjmCO6F,MPimCa,SOjmCPS,GAMX,IALA,GAAIlG,UACEmG,EAAK,MACTC,EAAS,qBACTC,EAAS,SAACxU,GAAD,MAAOyU,oBAAmBzU,EAAE0U,QAAQJ,EAAI,OACjDtG,KACKG,EAAQoG,EAAOI,KAAKN,IACzBrG,EAAOwG,EAAOrG,EAAM,IAAI1I,eAAiB+O,EAAOrG,EAAM,GAExD,OAAOH,KPwmCT,EAAI4D,EAAc3R,SAAS8N,EAAa,OACtCpM,IAAK,SACLnC,IAAK,WOpoCL,GAAMoV,GAAQ1F,OAAO2F,SAASN,OAAOO,UAAU,EAK/C,OAJIF,KAAUtW,KAAKsW,QACjBtW,KAAKyW,WAAazW,KAAKsV,MAAMgB,GAC7BtW,KAAKsW,MAAQA,GAERtW,KAAKyW,cPwoCZpT,IAAK,aACLnC,IAAK,WOroCL,GAAMwV,GAAO9F,OAAO2F,SAASG,KAAKF,UAAU,EAK5C,OAJIE,KAAS1W,KAAK0W,OAChB1W,KAAK2W,YAAc3W,KAAKsV,MAAMoB,GAC9B1W,KAAK0W,KAAOA,GAEP1W,KAAK2W,gBPyoCPlH,KOvmCHU,KAiBO8C,2BAAyBrC,OAAOqC,uBACjBrC,OAAOgG,0BACPhG,OAAOiG,6BACP,SAASC,GAAMlG,OAAO2B,WAAWuE,EAAI,IAAK,MAAOC,KAAKnG,QAErEoC,0BAAwBpC,OAAOoC,sBACjBpC,OAAOoG,yBACPpG,OAAOqG,4BACPrG,OAAO+B,cAAcoE,KAAKnG,QAgE/CsG,KAEOnE,EP2nCKpT,EO3nCLoT,YP2nC2B,WACtC,QAASA,MACP,EAAIpP,EAAiBhC,SAAS3B,KAAM+S,GAoBtC,MAjBAA,GO/nCOoE,UP+nCiB,SO/nCP1F,GACfzR,KAAKyR,QAAUoC,EAAAlS,QAAEsM,OAAOjO,KAAKyR,QAASA,IPkoCxCsB,EO/nCOqE,OP+nCc,SO/nCPzW,GACZ,MAAIX,MAAKyR,QAAQ4F,cAAyB,UAAT1W,GAAoBuW,EAAW/T,OAAS,EAChE+T,EAAWI,SAEb,EAAAzD,EAAAlS,SAAE,IAAMhB,EAAO,MPioCxBoS,EO9nCOwE,QP8nCe,SO9nCPC,GAERxX,KAAKyR,QAAQ4F,cAAiD,UAAjCG,EAAI,GAAGC,QAAQxQ,gBACjDuQ,EAAIE,WAAW/Q,SACfuQ,EAAWvR,KAAK6R,KPioCXzE,IO7nCTA,GAAYtB,SAAY4F,cAAc,GPkoCtC1X,EAAQgC,SO/nCNuR,SACAC,aACA1D,cACAsD,cACA9E,SACAU,aACAU,sBACAvH,WACAwI,mBACAF,WACA6C,wBACAD,uBACArC,qBACAI,MACAG,kBACAK,mBACAoG,kBPqoCI,SAAU/X,EAAQD,GQv8CxB,GAAAiY,GAAA,WA6DA,QAAA9F,GAAA7P,GACA,aAAAA,EAAA4V,OAAA5V,GACA6V,EAAAC,EAAAxX,KAAA0B,KAAA,SAGA,QAAA+V,GAAArV,GAA8B,kBAAAmP,EAAAnP,GAC9B,QAAAsV,GAAAhW,GAA8B,aAAAA,QAAA2O,OAC9B,QAAAsH,GAAAjW,GAA8B,aAAAA,KAAAkW,UAAAlW,EAAAmW,cAC9B,QAAAC,GAAApW,GAA8B,gBAAA6P,EAAA7P,GAC9B,QAAAqW,GAAArW,GACA,MAAAoW,GAAApW,KAAAgW,EAAAhW,IAAAnB,OAAAyX,eAAAtW,IAAAnB,OAAAS,UAGA,QAAAiX,GAAAvW,GACA,GAAAkB,KAAAlB,GAAA,UAAAA,MAAAkB,OACA2O,EAAA2G,EAAA3G,KAAA7P,EAEA,mBAAA6P,IAAAmG,EAAAhW,KACA,SAAA6P,GAAA,IAAA3O,GACA,gBAAAA,MAAA,GAAAA,EAAA,IAAAlB,IAIA,QAAAyW,GAAAC,GAA2B,MAAAnR,GAAAjH,KAAAoY,EAAA,SAAAvH,GAA0C,aAAAA,IACrE,QAAAwH,GAAAD,GAA2B,MAAAA,GAAAxV,OAAA,EAAAsV,EAAA3B,GAAAxS,OAAAD,SAAAsU,KAE3B,QAAAE,GAAAC,GACA,MAAAA,GAAA1C,QAAA,WACAA,QAAA,iCACAA,QAAA,6BACAA,QAAA,UACAjP,cAIA,QAAA4R,GAAApY,GACA,MAAAA,KAAAqY,GACAA,EAAArY,GAAAqY,EAAArY,GAAA,GAAAsY,QAAA,UAAAtY,EAAA,WAGA,QAAAuY,GAAAvY,EAAAgC,GACA,sBAAAA,IAAAwW,EAAAN,EAAAlY,IAAAgC,IAAA,KAGA,QAAAyW,GAAAC,GACA,GAAApH,GAAAqH,CASA,OARAC,GAAAF,KACApH,EAAAzB,EAAA0B,cAAAmH,GACA7I,EAAAgJ,KAAAC,YAAAxH,GACAqH,EAAAI,iBAAAzH,EAAA,IAAA0H,iBAAA,WACA1H,EAAA2H,WAAAC,YAAA5H,GACA,QAAAqH,MAAA,SACAC,EAAAF,GAAAC,GAEAC,EAAAF,GAGA,QAAA3B,GAAAzF,GACA,kBAAAA,GACAlO,EAAAxD,KAAA0R,EAAAyF,UACAe,EAAArR,IAAA6K,EAAA6H,WAAA,SAAAC,GAA+C,MAAAA,EAAA5B,SAAA,MAAA4B,KAG/C,QAAAC,GAAAC,EAAAC,GACA,GAAA7Z,GAAA8Z,EAAAF,IAAA9W,OAAA,CACA,KAAA9C,EAAA,EAAeA,EAAA8Z,EAAS9Z,IAAAL,KAAAK,GAAA4Z,EAAA5Z,EACxBL,MAAAmD,OAAAgX,EACAna,KAAAka,YAAA,GAuGA,QAAAjM,GAAAhL,EAAA4K,EAAAuM,GACA,IAAA/W,IAAAwK,GACAuM,IAAA9B,EAAAzK,EAAAxK,KAAAgX,EAAAxM,EAAAxK,MACAiV,EAAAzK,EAAAxK,MAAAiV,EAAArV,EAAAI,MACAJ,EAAAI,OACAgX,EAAAxM,EAAAxK,MAAAgX,EAAApX,EAAAI,MACAJ,EAAAI,OACA4K,EAAAhL,EAAAI,GAAAwK,EAAAxK,GAAA+W,IAEAvM,EAAAxK,KAAAkM,IAAAtM,EAAAI,GAAAwK,EAAAxK,IAmCA,QAAAiX,GAAAC,EAAAL,GACA,aAAAA,EAAAzB,EAAA8B,GAAA9B,EAAA8B,GAAA/S,OAAA0S,GAaA,QAAAM,GAAA/U,EAAAgV,EAAAC,EAAAC,GACA,MAAA3C,GAAAyC,KAAAla,KAAAkF,EAAAiV,EAAAC,GAAAF,EAGA,QAAAtI,GAAA4H,EAAApZ,EAAAgC,GACA,MAAAA,EAAAoX,EAAAa,gBAAAja,GAAAoZ,EAAA5H,aAAAxR,EAAAgC,GAIA,QAAAkY,GAAAd,EAAApX,GACA,GAAAkC,GAAAkV,EAAAc,WAAA,GACAC,EAAAjW,KAAAkW,UAAAxL,CAEA,IAAA5M,IAAA4M,EAAA,MAAAuL,GAAAjW,EAAAkW,QAAAlW,CACAiW,GAAAjW,EAAAkW,QAAApY,EAAAoX,EAAAc,UAAAlY,EAWA,QAAAqY,GAAArY,GACA,IACA,MAAAA,GACA,QAAAA,GACA,SAAAA,IACA,QAAAA,EAAA,MACAA,EAAA,IAAAA,KACA,UAAiB4B,KAAA5B,GAAA8V,EAAAwC,UAAAtY,GACjBA,GACAA,EACK,MAAA6S,GACL,MAAA7S,IAmhBA,QAAAuY,GAAAnB,EAAAoB,GACAA,EAAApB,EACA,QAAA1Z,GAAA,EAAA8Z,EAAAJ,EAAAD,WAAA3W,OAAiD9C,EAAA8Z,EAAS9Z,IAC1D6a,EAAAnB,EAAAD,WAAAzZ,GAAA8a,GA11BA,GAAA5L,GAAAlM,EAAAoV,EAAA2C,EA2BAC,EAAAC,EA3BAC,KAAAjX,EAAAiX,EAAAjX,OAAAkD,EAAA+T,EAAA/T,OAAAzD,EAAAwX,EAAAxX,MACAyM,EAAAI,OAAAJ,SACA+I,KAAuBP,KACvBG,GAAiBqC,eAAA,EAAAC,QAAA,EAAAC,cAAA,EAAAC,cAAA,EAAAC,QAAA,EAAAC,UAAA,EAAAC,KAAA,GACjBC,EAAA,qBACAC,EAAA,6BACAC,EAAA,0EACAC,EAAA,mBACAC,EAAA,WAGAC,GAAA,4DAEAC,GAAA,qCACAC,EAAA9L,EAAA0B,cAAA,SACAqK,EAAA/L,EAAA0B,cAAA,MACAsK,GACAC,GAAAjM,EAAA0B,cAAA,SACAwK,MAAAJ,EAAAK,MAAAL,EAAAM,MAAAN,EACAO,GAAAN,EAAAO,GAAAP,EACAQ,IAAAvM,EAAA0B,cAAA,QAEA8K,EAAA,8BACAC,EAAA,WACAnF,KACAC,EAAAD,EAAAC,SACAmF,KAEAC,EAAA3M,EAAA0B,cAAA,OACAkL,GACAC,SAAA,WACAC,SAAA,WACAC,IAAA,UACAC,MAAA,YACAC,UAAA,YACAC,YAAA,cACAC,YAAA,cACAC,QAAA,UACAC,QAAA,UACAC,OAAA,SACAC,YAAA,cACAC,gBAAA,mBAEA3D,EAAArW,MAAAqW,SACA,SAAAhZ,GAAuB,MAAAA,aAAA2C,OAq3BvB,OAn3BAkZ,GAAAe,QAAA,SAAAhM,EAAAiI,GACA,IAAAA,IAAAjI,GAAA,IAAAA,EAAAkG,SAAA,QACA,IAAA+F,GAAAjM,EAAAgM,SAAAhM,EAAAkM,uBACAlM,EAAAmM,oBAAAnM,EAAAoM,kBACApM,EAAAiM,eACA,IAAAA,EAAA,MAAAA,GAAA3d,KAAA0R,EAAAiI,EAEA,IAAArK,GAAA3B,EAAA+D,EAAA2H,WAAA0E,GAAApQ,CAIA,OAHAoQ,KAAApQ,EAAAiP,GAAA1D,YAAAxH,GACApC,GAAAqN,EAAAqB,IAAArQ,EAAAgM,GAAA7I,QAAAY,GACAqM,GAAAnB,EAAAtD,YAAA5H,GACApC,GA4BAwL,EAAA,SAAAvC,GAA2B,MAAAA,GAAA1C,QAAA,mBAAAvG,EAAA2O,GAAoD,MAAAA,KAAAvX,cAAA,MAQ/EqU,EAAA,SAAA3C,GAAyB,MAAAnR,GAAAjH,KAAAoY,EAAA,SAAAvH,EAAAsJ,GAA+C,MAAA/B,GAAAtH,QAAAD,IAAAsJ,KA0CxEwC,EAAAuB,SAAA,SAAAC,EAAA/d,EAAAwN,GACA,GAAA8L,GAAAM,EAAAoE,CAyBA,OAtBA3C,GAAAzX,KAAAma,KAAAzE,EAAAxB,EAAAjI,EAAA0B,cAAA+G,OAAA2F,MAEA3E,IACAyE,EAAAtI,UAAAsI,IAAAtI,QAAA6F,EAAA,cACAtb,IAAA4O,IAAA5O,EAAAob,EAAAxX,KAAAma,IAAAzF,OAAA2F,IACAje,IAAA6b,KAAA7b,EAAA,KAEAge,EAAAnC,EAAA7b,GACAge,EAAAE,UAAA,GAAAH,EACAzE,EAAAxB,EAAAqG,KAAA/a,EAAAxD,KAAAoe,EAAA7E,YAAA,WACA6E,EAAA9E,YAAA7Z,SAIAsY,EAAAnK,KACAoM,EAAA9B,EAAAwB,GACAxB,EAAAqG,KAAA3Q,EAAA,SAAA9K,EAAAV,GACAyZ,EAAA/K,QAAAhO,IAAA,EAAAkX,EAAAlX,GAAAV,GACA4X,EAAAwE,KAAA1b,EAAAV,MAIAsX,GAMAiD,EAAAlD,EAAA,SAAAC,EAAAC,GACA,UAAAF,GAAAC,EAAAC,IAKAgD,EAAA8B,IAAA,SAAA3d,GACA,MAAAA,aAAA6b,GAAAlD,GAOAkD,EAAA+B,KAAA,SAAA/E,EAAAzU,GACA,GAAAwU,EAEA,KAAAC,EAAA,MAAAgD,GAAAlD,GAEA,oBAAAE,GAKA,GAJAA,IAAAhT,OAIA,KAAAgT,EAAA,IAAA6B,EAAAxX,KAAA2V,GACAD,EAAAiD,EAAAuB,SAAAvE,EAAAjB,OAAA2F,GAAAnZ,GAAAyU,EAAA,SAGA,IAAAzU,IAAA8J,EAAA,MAAAkJ,GAAAhT,GAAAyZ,KAAAhF,EAEAD,GAAAiD,EAAAqB,IAAA/N,EAAA0J,OAGA,IAAAlC,EAAAkC,GAAA,MAAAzB,GAAAjI,GAAA2O,MAAAjF,EAEA,IAAAgD,EAAA8B,IAAA9E,GAAA,MAAAA,EAGA,IAAAG,EAAAH,GAAAD,EAAAvB,EAAAwB,OAEA,IAAA7B,EAAA6B,GACAD,GAAAC,KAAA,SAEA,IAAA6B,EAAAxX,KAAA2V,GACAD,EAAAiD,EAAAuB,SAAAvE,EAAAhT,OAAA+R,OAAA2F,GAAAnZ,GAAAyU,EAAA,SAGA,IAAAzU,IAAA8J,EAAA,MAAAkJ,GAAAhT,GAAAyZ,KAAAhF,EAEAD,GAAAiD,EAAAqB,IAAA/N,EAAA0J,IAGA,MAAAgD,GAAAlD,EAAAC,EAAAC,IAOAzB,EAAA,SAAAyB,EAAAzU,GACA,MAAAyX,GAAA+B,KAAA/E,EAAAzU,IAiBAgT,EAAAxK,OAAA,SAAAhL,GACA,GAAAmX,GAAAxV,EAAAb,EAAAxD,KAAAwF,UAAA,EAMA,OALA,iBAAA9C,KACAmX,EAAAnX,EACAA,EAAA2B,EAAA0S,SAEA1S,EAAAgD,QAAA,SAAA6S,GAA+BxM,EAAAhL,EAAAwX,EAAAL,KAC/BnX,GAMAia,EAAAqB,IAAA,SAAAtM,EAAAiI,GACA,GAAAkF,GACAC,EAAA,KAAAnF,EAAA,GACAoF,GAAAD,GAAA,KAAAnF,EAAA,GACAqF,EAAAF,GAAAC,EAAApF,EAAAnW,MAAA,GAAAmW,EACAsF,EAAAvC,EAAA1Y,KAAAgb,EACA,OAAAtN,GAAAwN,gBAAAD,GAAAH,GACAD,EAAAnN,EAAAwN,eAAAF,KAAAH,MACA,IAAAnN,EAAAkG,UAAA,IAAAlG,EAAAkG,UAAA,KAAAlG,EAAAkG,YACApU,EAAAxD,KACAif,IAAAH,GAAApN,EAAAyN,uBACAJ,EAAArN,EAAAyN,uBAAAH,GACAtN,EAAAxB,qBAAAyJ,GACAjI,EAAA0N,iBAAAzF,KAQAzB,EAAAmH,SAAApP,EAAAqP,gBAAAD,SACA,SAAA1R,EAAA6L,GACA,MAAA7L,KAAA6L,GAAA7L,EAAA0R,SAAA7F,IAEA,SAAA7L,EAAA6L,GACA,KAAAA,QAAAH,aACA,GAAAG,IAAA7L,EAAA,QACA,WA2CAuK,EAAA3G,OACA2G,EAAAT,aACAS,EAAAR,WACAQ,EAAA4B,UACA5B,EAAAH,gBAEAG,EAAAqH,cAAA,SAAA7d,GACA,GAAAtB,EACA,KAAAA,IAAAsB,GAAA,QACA,WAGAwW,EAAAsH,UAAA,SAAAC,GACA,GAAAC,GAAAC,OAAAF,GAAAlO,QAAAkO,EACA,cAAAA,GAAA,WAAAlO,IACA,UAAAA,GAAAkO,EAAA7c,UACAgd,MAAAF,IAAAnR,SAAAmR,KAAA,GAGAxH,EAAA2H,QAAA,SAAAC,EAAA1H,EAAAtY,GACA,MAAAkb,GAAAlK,QAAA9Q,KAAAoY,EAAA0H,EAAAhgB,IAGAoY,EAAA6H,UAAAjF,EACA5C,EAAAvR,KAAA,SAAA4R,GACA,aAAAA,EAAA,GAAAjB,OAAAtW,UAAA2F,KAAA3G,KAAAuY,IAIAL,EAAA8H,KAAA,EACA9H,EAAA+H,WACA/H,EAAAgI,QACAhI,EAAAiI,KAAA,aAEAjI,EAAArR,IAAA,SAAAuZ,EAAA3b,GACA,GAAArC,GAAAtC,EAAAgD,EAAAud,IACA,IAAApI,EAAAmI,GACA,IAAAtgB,EAAA,EAAiBA,EAAAsgB,EAAAxd,OAAqB9C,IAEtC,OADAsC,EAAAqC,EAAA2b,EAAAtgB,QACAugB,EAAAjb,KAAAhD,OAGA,KAAAU,IAAAsd,GAEA,OADAhe,EAAAqC,EAAA2b,EAAAtd,QACAud,EAAAjb,KAAAhD,EAEA,OAAAiW,GAAAgI,IAGAnI,EAAAqG,KAAA,SAAA6B,EAAA3b,GACA,GAAA3E,GAAAgD,CACA,IAAAmV,EAAAmI,IACA,IAAAtgB,EAAA,EAAiBA,EAAAsgB,EAAAxd,OAAqB9C,IACtC,QAAA2E,EAAAzE,KAAAogB,EAAAtgB,KAAAsgB,EAAAtgB,IAAA,MAAAsgB,OAEA,KAAAtd,IAAAsd,GACA,QAAA3b,EAAAzE,KAAAogB,EAAAtd,KAAAsd,EAAAtd,IAAA,MAAAsd,EAGA,OAAAA,IAGAlI,EAAAoI,KAAA,SAAAF,EAAA3b,GACA,MAAAwC,GAAAjH,KAAAogB,EAAA3b,IAGA4L,OAAAkQ,OAAArI,EAAAwC,UAAA6F,KAAAxL,OAGAmD,EAAAqG,KAAA,gEAAAra,MAAA,cAAApE,EAAAM,GACAmX,EAAA,WAAAnX,EAAA,KAAAA,EAAAwG,gBAKAsR,EAAA3B,IACApU,YAAAwa,EAAAlD,EACA7W,OAAA,EAIAyE,QAAA2T,EAAA3T,QACAmZ,OAAAxF,EAAAwF,OACApb,KAAA4V,EAAA5V,KACAqb,KAAAzF,EAAAyF,KACA1P,OAAAiK,EAAAjK,OACAD,QAAAkK,EAAAlK,QACA/M,OAAA,WACA,GAAAjE,GAAAsC,EAAAiC,IACA,KAAAvE,EAAA,EAAiBA,EAAA0F,UAAA5C,OAAsB9C,IACvCsC,EAAAoD,UAAA1F,GACAuE,EAAAvE,GAAA6c,EAAA8B,IAAArc,KAAAse,UAAAte,CAEA,OAAA2B,GAAAD,MAAA6Y,EAAA8B,IAAAhf,WAAAihB,UAAAjhB,KAAA4E,IAKAwC,IAAA,SAAA0P,GACA,MAAA2B,KAAArR,IAAApH,KAAA,SAAAgQ,EAAA3P,GAA2C,MAAAyW,GAAAvW,KAAAyP,EAAA3P,EAAA2P,OAE3CjM,MAAA,WACA,MAAA0U,GAAA1U,EAAAM,MAAArE,KAAA+F,aAGAoZ,MAAA,SAAAna,GAKA,MAFAgY,GAAAzY,KAAAiM,EAAA0Q,aAAA1Q,EAAAgJ,KAAAxU,EAAAyT,GACAjI,EAAA2Q,iBAAA,8BAAoEnc,EAAAyT,KAAc,GAClFzY,MAEAkB,IAAA,SAAAwZ,GACA,MAAAA,KAAAnL,EAAAxL,EAAAxD,KAAAP,WAAA0a,GAAA,EAAAA,IAAA1a,KAAAmD,SAEA8d,QAAA,WAAwB,MAAAjhB,MAAAkB,OACxBkgB,KAAA,WACA,MAAAphB,MAAAmD,QAEAwD,OAAA,WACA,MAAA3G,MAAA8e,KAAA,WACA,MAAA9e,KAAA4Z,YACA5Z,KAAA4Z,WAAAC,YAAA7Z,SAGA8e,KAAA,SAAA9Z,GAIA,MAHAuW,GAAA8F,MAAA9gB,KAAAP,KAAA,SAAAgQ,EAAA0K,GACA,WAAA1V,EAAAzE,KAAAyP,EAAA0K,EAAA1K,KAEAhQ,MAEAwH,OAAA,SAAA0S,GACA,MAAAlC,GAAAkC,GAAAla,KAAAshB,IAAAthB,KAAAshB,IAAApH,IACAzB,EAAAjR,EAAAjH,KAAAP,KAAA,SAAAiS,GACA,MAAAiL,GAAAe,QAAAhM,EAAAiI,OAGAqH,IAAA,SAAArH,EAAAzU,GACA,MAAAgT,GAAA6C,EAAAtb,KAAAsE,OAAAmU,EAAAyB,EAAAzU,OAEA+b,GAAA,SAAAtH,GACA,MAAAla,MAAAmD,OAAA,GAAA+Z,EAAAe,QAAAje,KAAA,GAAAka,IAEAoH,IAAA,SAAApH,GACA,GAAAK,KACA,IAAAvC,EAAAkC,MAAA3Z,OAAAgP,EACAvP,KAAA8e,KAAA,SAAApE,GACAR,EAAA3Z,KAAAP,KAAA0a,IAAAH,EAAA5U,KAAA3F,YAEA,CACA,GAAAyhB,GAAA,gBAAAvH,GAAAla,KAAAwH,OAAA0S,GACA1B,EAAA0B,IAAAlC,EAAAkC,EAAA9I,MAAArN,EAAAxD,KAAA2Z,GAAAzB,EAAAyB,EACAla,MAAA4H,QAAA,SAAAoI,GACAyR,EAAApQ,QAAArB,GAAA,GAAAuK,EAAA5U,KAAAqK,KAGA,MAAAyI,GAAA8B,IAEAmH,IAAA,SAAAxH,GACA,MAAAla,MAAAwH,OAAA,WACA,MAAA6Q,GAAA6B,GACAzB,EAAAmH,SAAA5f,KAAAka,GACAzB,EAAAzY,MAAAkf,KAAAhF,GAAAkH,UAGAO,GAAA,SAAAjH,GACA,WAAAA,EAAA1a,KAAA+D,MAAA2W,GAAA1a,KAAA+D,MAAA2W,KAAA,IAEAkH,MAAA,WACA,GAAA5R,GAAAhQ,KAAA,EACA,OAAAgQ,KAAAqI,EAAArI,KAAAyI,EAAAzI,IAEA6R,KAAA,WACA,GAAA7R,GAAAhQ,UAAAmD,OAAA,EACA,OAAA6M,KAAAqI,EAAArI,KAAAyI,EAAAzI,IAEAkP,KAAA,SAAAhF,GACA,GAAA4H,GAAA9hB,IAWA,OAVAka,GACA,gBAAAA,GACAzB,EAAAyB,GAAA1S,OAAA,WACA,GAAAuS,GAAA/Z,IACA,OAAAub,GAAAwG,KAAAxhB,KAAAuhB,EAAA,SAAA5T,GACA,MAAAuK,GAAAmH,SAAA1R,EAAA6L,OAGA,GAAA/Z,KAAAmD,OAAAsV,EAAAyE,EAAAqB,IAAAve,KAAA,GAAAka,IACAla,KAAAoH,IAAA,WAAwC,MAAA8V,GAAAqB,IAAAve,KAAAka,KATxCzB,KAYAuJ,QAAA,SAAA9H,EAAAzU,GACA,GAAA8U,MAAA0H,EAAA,gBAAA/H,IAAAzB,EAAAyB,EAMA,OALAla,MAAA8e,KAAA,SAAAoD,EAAAnI,GACA,KAAAA,KAAAkI,IAAA5Q,QAAA0I,IAAA,EAAAmD,EAAAe,QAAAlE,EAAAG,KACAH,MAAAtU,IAAAyS,EAAA6B,MAAAH,UACAG,IAAAQ,EAAAlJ,QAAA0I,GAAA,GAAAQ,EAAA5U,KAAAoU,KAEAtB,EAAA8B,IAEA4H,QAAA,SAAAjI,GAEA,IADA,GAAAkI,MAAA7H,EAAAva,KACAua,EAAApX,OAAA,GACAoX,EAAA9B,EAAArR,IAAAmT,EAAA,SAAAR,GACA,IAAAA,IAAAH,cAAA1B,EAAA6B,IAAAqI,EAAA/Q,QAAA0I,GAAA,EAEA,MADAqI,GAAAzc,KAAAoU,GACAA,GAGA,OAAAO,GAAA8H,EAAAlI,IAEAhM,OAAA,SAAAgM,GACA,MAAAI,GAAAgB,EAAAtb,KAAAqiB,MAAA,eAAAnI,IAEAxC,SAAA,SAAAwC,GACA,MAAAI,GAAAta,KAAAoH,IAAA,WAA0C,MAAAsQ,GAAA1X,QAAwBka,IAElEoI,SAAA,WACA,MAAAtiB,MAAAoH,IAAA,WAAkC,MAAApH,MAAAuiB,iBAAAxe,EAAAxD,KAAAP,KAAA8Z,eAElC0I,SAAA,SAAAtI,GACA,MAAAI,GAAAta,KAAAoH,IAAA,SAAA/G,EAAA2P,GACA,MAAAxI,GAAAjH,KAAAmX,EAAA1H,EAAA4J,YAAA,SAAA6I,GAAoE,MAAAA,KAAAzS,MAC7DkK,IAEPwI,MAAA,WACA,MAAA1iB,MAAA8e,KAAA,WAAkC9e,KAAA6e,UAAA,MAGlCwD,MAAA,SAAA/gB,GACA,MAAAmX,GAAArR,IAAApH,KAAA,SAAAgQ,GAAsC,MAAAA,GAAA1O,MAEtCqhB,KAAA,WACA,MAAA3iB,MAAA8e,KAAA,WACA,QAAA9e,KAAA4iB,MAAAtJ,UAAAtZ,KAAA4iB,MAAAtJ,QAAA,IACA,QAAAI,iBAAA1Z,KAAA,IAAA2Z,iBAAA,aACA3Z,KAAA4iB,MAAAtJ,QAAAF,EAAApZ,KAAAqZ,cAGAwJ,YAAA,SAAAC,GACA,MAAA9iB,MAAA+iB,OAAAD,GAAAnc,UAEAqc,KAAA,SAAAC,GACA,GAAAC,GAAAlL,EAAAiL,EACA,IAAAjjB,KAAA,KAAAkjB,EACA,GAAAjJ,GAAAxB,EAAAwK,GAAA/hB,IAAA,GACAiiB,EAAAlJ,EAAAL,YAAA5Z,KAAAmD,OAAA,CAEA,OAAAnD,MAAA8e,KAAA,SAAAzX,GACAoR,EAAAzY,MAAAojB,QACAF,EAAAD,EAAA1iB,KAAAP,KAAAqH,GACA8b,EAAAlJ,EAAAoJ,WAAA,GAAApJ,MAIAmJ,QAAA,SAAAH,GACA,GAAAjjB,KAAA,IACAyY,EAAAzY,KAAA,IAAA+iB,OAAAE,EAAAxK,EAAAwK,GAGA,KAFA,GAAAvL,IAEAA,EAAAuL,EAAAvL,YAAAvU,QAAA8f,EAAAvL,EAAAkK,OACAnJ,GAAAwK,GAAAK,OAAAtjB,MAEA,MAAAA,OAEAujB,UAAA,SAAAN,GACA,GAAAC,GAAAlL,EAAAiL,EACA,OAAAjjB,MAAA8e,KAAA,SAAAzX,GACA,GAAAtH,GAAA0Y,EAAAzY,MAAAsiB,EAAAviB,EAAAuiB,WACArI,EAAAiJ,EAAAD,EAAA1iB,KAAAP,KAAAqH,GAAA4b,CACAX,GAAAnf,OAAAmf,EAAAc,QAAAnJ,GAAAla,EAAAujB,OAAArJ,MAGAuJ,OAAA,WAIA,MAHAxjB,MAAAkO,SAAA4Q,KAAA,WACArG,EAAAzY,MAAA6iB,YAAApK,EAAAzY,MAAA0X,cAEA1X,MAEAmjB,MAAA,WACA,MAAAnjB,MAAAoH,IAAA,WAAiC,MAAApH,MAAAqjB,WAAA,MAEjCI,KAAA,WACA,MAAAzjB,MAAA0jB,IAAA,mBAEAC,OAAA,SAAAC,GACA,MAAA5jB,MAAA8e,KAAA,WACA,GAAA9O,GAAAyI,EAAAzY,OACS4jB,IAAArU,EAAA,QAAAS,EAAA0T,IAAA,WAAAE,GAAA5T,EAAA2S,OAAA3S,EAAAyT,UAGTI,KAAA,SAAA3J,GAA6B,MAAAzB,GAAAzY,KAAAqiB,MAAA,2BAAA7a,OAAA0S,GAAA,MAC7B4J,KAAA,SAAA5J,GAA6B,MAAAzB,GAAAzY,KAAAqiB,MAAA,uBAAA7a,OAAA0S,GAAA,MAC7BwE,KAAA,SAAAA,GACA,WAAA3Y,WACA/F,KAAA8e,KAAA,SAAApE,GACA,GAAAqJ,GAAA/jB,KAAA6e,SACApG,GAAAzY,MAAA0iB,QAAAY,OAAA9I,EAAAxa,KAAA0e,EAAAhE,EAAAqJ,MAEA,IAAA/jB,WAAA,GAAA6e,UAAA,MAEAmF,KAAA,SAAAA,GACA,WAAAje,WACA/F,KAAA8e,KAAA,SAAApE,GACA,GAAAuJ,GAAAzJ,EAAAxa,KAAAgkB,EAAAtJ,EAAA1a,KAAAkkB,YACAlkB,MAAAkkB,YAAA,MAAAD,EAAA,MAAAA,IAEA,IAAAjkB,WAAAqiB,MAAA,eAAA/a,KAAA,UAEAyX,KAAA,SAAApe,EAAAgC,GACA,GAAA+P,EACA,uBAAA/R,IAAA,IAAAoF,WAEA/F,KAAA8e,KAAA,SAAApE,GACA,OAAA1a,KAAAmY,SACA,GAAAE,EAAA1X,GAAA,IAAA0C,IAAA1C,GAAAwR,EAAAnS,KAAAqD,EAAA1C,EAAA0C,QACA8O,GAAAnS,KAAAW,EAAA6Z,EAAAxa,KAAA2C,EAAA+X,EAAA1a,KAAAmkB,aAAAxjB,OAJA,IAAAX,OAAA,GAAAA,KAAA,GAAAmY,UAAA,OAAAzF,EAAA1S,KAAA,GAAAmkB,aAAAxjB,IAAA+R,EAAAnD,GAOA6U,WAAA,SAAAzjB,GACA,MAAAX,MAAA8e,KAAA,WAAkC,IAAA9e,KAAAmY,UAAAxX,EAAA8D,MAAA,KAAAmD,QAAA,SAAAyc,GAClClS,EAAAnS,KAAAqkB,IACOrkB,SAEP8N,KAAA,SAAAnN,EAAAgC,GAEA,MADAhC,GAAAyc,EAAAzc,MACA,IAAAoF,WACA/F,KAAA8e,KAAA,SAAApE,GACA1a,KAAAW,GAAA6Z,EAAAxa,KAAA2C,EAAA+X,EAAA1a,KAAAW,MAEAX,KAAA,IAAAA,KAAA,GAAAW,IAEA2jB,WAAA,SAAA3jB,GAEA,MADAA,GAAAyc,EAAAzc,MACAX,KAAA8e,KAAA,iBAAkC9e,MAAAW,MAElC4jB,KAAA,SAAA5jB,EAAAgC,GACA,GAAA6hB,GAAA,QAAA7jB,EAAAyV,QAAA+F,EAAA,OAAAhV,cAEAod,EAAA,IAAAxe,WACA/F,KAAA+e,KAAAyF,EAAA7hB,GACA3C,KAAA+e,KAAAyF,EAEA,eAAAD,EAAAvJ,EAAAuJ,GAAAhV,GAEAyQ,IAAA,SAAArd,GACA,WAAAoD,YACA,MAAApD,MAAA,IACA3C,KAAA8e,KAAA,SAAApE,GACA1a,KAAA2C,MAAA6X,EAAAxa,KAAA2C,EAAA+X,EAAA1a,KAAA2C,UAGA3C,KAAA,KAAAA,KAAA,GAAAykB,SACAhM,EAAAzY,KAAA,IAAAkf,KAAA,UAAA1X,OAAA,WAAuD,MAAAxH,MAAA0kB,WAAuBrC,MAAA,SAC9EriB,KAAA,GAAA2C,QAGAgiB,OAAA,SAAAC,GACA,GAAAA,EAAA,MAAA5kB,MAAA8e,KAAA,SAAAzX,GACA,GAAAya,GAAArJ,EAAAzY,MACA6kB,EAAArK,EAAAxa,KAAA4kB,EAAAvd,EAAAya,EAAA6C,UACAG,EAAAhD,EAAAiD,eAAAJ,SACAzhB,GACA8hB,IAAAH,EAAAG,IAAAF,EAAAE,IACAC,KAAAJ,EAAAI,KAAAH,EAAAG,KAGA,WAAAnD,EAAA4B,IAAA,cAAAxgB,EAAA,qBACA4e,EAAA4B,IAAAxgB,IAEA,KAAAlD,KAAAmD,OAAA,WACA,IAAAqN,EAAAqP,kBAAA7f,KAAA,KAAAyY,EAAAmH,SAAApP,EAAAqP,gBAAA7f,KAAA,IACA,OAAgBglB,IAAA,EAAAC,KAAA,EAChB,IAAAhjB,GAAAjC,KAAA,GAAAklB,uBACA,QACAD,KAAAhjB,EAAAgjB,KAAArU,OAAAuU,YACAH,IAAA/iB,EAAA+iB,IAAApU,OAAAwU,YACAC,MAAAC,KAAAC,MAAAtjB,EAAAojB,OACAG,OAAAF,KAAAC,MAAAtjB,EAAAujB,UAGA9B,IAAA,SAAApiB,EAAAqB,GACA,GAAAoD,UAAA5C,OAAA,GACA,GAAA8O,GAAAjS,KAAA,EACA,oBAAAsB,GAAA,CACA,IAAA2Q,EAAA,MACA,OAAAA,GAAA2Q,MAAAvH,EAAA/Z,KAAAoY,iBAAAzH,EAAA,IAAA0H,iBAAArY,GACS,GAAA+Y,EAAA/Y,GAAA,CACT,IAAA2Q,EAAA,MACA,IAAA/O,MACAuiB,EAAA/L,iBAAAzH,EAAA,GAIA,OAHAwG,GAAAqG,KAAAxd,EAAA,SAAA4gB,EAAApU,GACA5K,EAAA4K,GAAAmE,EAAA2Q,MAAAvH,EAAAvN,KAAA2X,EAAA9L,iBAAA7L,KAEA5K,GAIA,GAAAwgB,GAAA,EACA,cAAA5R,EAAAxQ,GACAqB,GAAA,IAAAA,EAGA+gB,EAAA7K,EAAAvX,GAAA,IAAA4X,EAAA5X,EAAAqB,GAFA3C,KAAA8e,KAAA,WAA+B9e,KAAA4iB,MAAA8C,eAAA7M,EAAAvX,UAI/B,KAAA+B,IAAA/B,GACAA,EAAA+B,IAAA,IAAA/B,EAAA+B,GAGAqgB,GAAA7K,EAAAxV,GAAA,IAAA6V,EAAA7V,EAAA/B,EAAA+B,IAAA,IAFArD,KAAA8e,KAAA,WAAiC9e,KAAA4iB,MAAA8C,eAAA7M,EAAAxV,KAKjC,OAAArD,MAAA8e,KAAA,WAAkC9e,KAAA4iB,MAAA+C,SAAA,IAAyBjC,KAE3Drc,MAAA,SAAA4K,GACA,MAAAA,GAAAjS,KAAAqR,QAAAoH,EAAAxG,GAAA,IAAAjS,KAAAkO,SAAAwJ,WAAArG,QAAArR,KAAA,KAEA4lB,SAAA,SAAAjlB,GACA,QAAAA,GACA4a,EAAAwG,KAAAxhB,KAAAP,KAAA,SAAAgQ,GACA,MAAAhQ,MAAAuE,KAAAsW,EAAA7K,KACO+I,EAAApY,KAEPklB,SAAA,SAAAllB,GACA,MAAAA,GACAX,KAAA8e,KAAA,SAAApE,GACA,gBAAA1a,MAAA,CACAob,IACA,IAAA0K,GAAAjL,EAAA7a,KAAAwa,GAAAxa,KAAAW,EAAA+Z,EAAAoL,GACArhB,MAAA,QAAAmD,QAAA,SAAA/C,GACA4T,EAAAzY,MAAA4lB,SAAA/gB,IAAAuW,EAAAzV,KAAAd,IACS7E,MACTob,EAAAjY,QAAA0X,EAAA7a,KAAA8lB,KAAA,QAAA1K,EAAA9T,KAAA,SARAtH,MAWA+lB,YAAA,SAAAplB,GACA,MAAAX,MAAA8e,KAAA,SAAApE,GACA,gBAAA1a,MAAA,CACA,GAAAW,IAAA4O,EAAA,MAAAsL,GAAA7a,KAAA,GACAob,GAAAP,EAAA7a,MACAwa,EAAAxa,KAAAW,EAAA+Z,EAAAU,GAAA3W,MAAA,QAAAmD,QAAA,SAAA/C,GACAuW,IAAAhF,QAAA2C,EAAAlU,GAAA,OAEAgW,EAAA7a,KAAAob,EAAAlU,YAGA8e,YAAA,SAAArlB,EAAAslB,GACA,MAAAtlB,GACAX,KAAA8e,KAAA,SAAApE,GACA,GAAAoH,GAAArJ,EAAAzY,KAAAwa,GAAAxa,KAAAW,EAAA+Z,EAAAG,EAAA7a,OACAyE,MAAA,QAAAmD,QAAA,SAAA/C,IACAohB,IAAA1W,GAAAuS,EAAA8D,SAAA/gB,GAAAohB,GACAnE,EAAA+D,SAAAhhB,GAAAid,EAAAiE,YAAAlhB,OALA7E,MASAkmB,UAAA,SAAAvjB,GACA,GAAA3C,KAAAmD,OAAA,CACA,GAAAgjB,GAAA,aAAAnmB,MAAA,EACA,OAAA2C,KAAA4M,EAAA4W,EAAAnmB,KAAA,GAAAkmB,UAAAlmB,KAAA,GAAAolB,YACAplB,KAAA8e,KAAAqH,EACA,WAAmBnmB,KAAAkmB,UAAAvjB,GACnB,WAAmB3C,KAAAomB,SAAApmB,KAAAqmB,QAAA1jB,OAEnB2jB,WAAA,SAAA3jB,GACA,GAAA3C,KAAAmD,OAAA,CACA,GAAAojB,GAAA,cAAAvmB,MAAA,EACA,OAAA2C,KAAA4M,EAAAgX,EAAAvmB,KAAA,GAAAsmB,WAAAtmB,KAAA,GAAAmlB,YACAnlB,KAAA8e,KAAAyH,EACA,WAAmBvmB,KAAAsmB,WAAA3jB,GACnB,WAAmB3C,KAAAomB,SAAAzjB,EAAA3C,KAAAwmB,aAEnBC,SAAA,WACA,GAAAzmB,KAAAmD,OAAA,CAEA,GAAAkd,GAAArgB,KAAA,GAEA+kB,EAAA/kB,KAAA+kB,eAEAJ,EAAA3kB,KAAA2kB,SACAG,EAAA5I,EAAA3X,KAAAwgB,EAAA,GAAA1L,WAAoE2L,IAAA,EAAAC,KAAA,GAAkBF,EAAAJ,QAatF,OARAA,GAAAK,KAAA3U,WAAAoI,EAAA4H,GAAAqD,IAAA,kBACAiB,EAAAM,MAAA5U,WAAAoI,EAAA4H,GAAAqD,IAAA,mBAGAoB,EAAAE,KAAA3U,WAAAoI,EAAAsM,EAAA,IAAArB,IAAA,wBACAoB,EAAAG,MAAA5U,WAAAoI,EAAAsM,EAAA,IAAArB,IAAA,0BAIAsB,IAAAL,EAAAK,IAAAF,EAAAE,IACAC,KAAAN,EAAAM,KAAAH,EAAAG,QAGAF,aAAA,WACA,MAAA/kB,MAAAoH,IAAA,WAEA,IADA,GAAA8G,GAAAlO,KAAA+kB,cAAAvU,EAAAgJ,KACAtL,IAAAgO,EAAA3X,KAAA2J,EAAAmL,WAAA,UAAAZ,EAAAvK,GAAAwV,IAAA,aACAxV,IAAA6W,YACA,OAAA7W,OAMAuK,EAAA3B,GAAA4P,OAAAjO,EAAA3B,GAAAnQ,QAGG,kBAAAiB,QAAA,SAAA+e,GACH,GAAAC,GACAD,EAAAvQ,QAAA,aAAA5V,GAAyC,MAAAA,GAAA,GAAAyG,eAEzCwR,GAAA3B,GAAA6P,GAAA,SAAAhkB,GACA,GAAAgiB,GAAA3U,EAAAhQ,KAAA,EACA,OAAA2C,KAAA4M,EAAA0I,EAAAjI,KAAA,QAAA4W,GACA1O,EAAAlI,KAAA6P,gBAAA,SAAA+G,IACAjC,EAAA3kB,KAAA2kB,aAAAgC,GACA3mB,KAAA8e,KAAA,SAAApE,GACA1K,EAAAyI,EAAAzY,MACAgQ,EAAA0T,IAAAiD,EAAAnM,EAAAxa,KAAA2C,EAAA+X,EAAA1K,EAAA2W,YAaAtK,EAAAzU,QAAA,SAAAif,EAAAC,GACA,GAAAC,GAAAD,EAAA,CAEArO,GAAA3B,GAAA+P,GAAA,WAEA,GAAAG,GAcA9Y,EAdAqM,EAAA9B,EAAArR,IAAArB,UAAA,SAAA0U,GACA,GAAAtJ,KAEA,OADA6V,GAAAlV,EAAA2I,GACA,SAAAuM,GACAvM,EAAA7S,QAAA,SAAAoI,GACA,MAAAA,GAAAmI,WAAA5I,EAAA4B,EAAAxL,KAAAqK,GACAyI,EAAAyE,MAAA8B,IAAAhP,GAAAmB,IAAA7M,OAAA0L,EAAA9O,YACAiQ,IAAA7M,OAAA4Y,EAAAuB,SAAAzO,OAEAmB,GAEA,UAAA6V,GAAA,MAAAvM,EACAA,EAAAyC,EAAAuB,SAAAhE,KAEAwM,EAAAjnB,KAAAmD,OAAA,CACA,OAAAoX,GAAApX,OAAA,EAAAnD,KAEAA,KAAA8e,KAAA,SAAAoD,EAAAjf,GACAiL,EAAA6Y,EAAA9jB,IAAA2W,WAGA3W,EAAA,GAAA6jB,EAAA7jB,EAAAikB,YACA,GAAAJ,EAAA7jB,EAAAkkB,WACA,GAAAL,EAAA7jB,EACA,IAEA,IAAAmkB,GAAA3O,EAAAmH,SAAApP,EAAAqP,gBAAA3R,EAEAqM,GAAA3S,QAAA,SAAAmS,GACA,GAAAkN,EAAAlN,IAAAsJ,WAAA,OACA,KAAAnV,EAAA,MAAAuK,GAAAsB,GAAApT,QAEAuH,GAAAmZ,aAAAtN,EAAA9W,GACAmkB,GAAAlM,EAAAnB,EAAA,SAAA/J,GACA,WAAAA,EAAAqJ,UAAA,WAAArJ,EAAAqJ,SAAApS,eACA+I,EAAA8B,MAAA,oBAAA9B,EAAA8B,MAAA9B,EAAAU,KAAA,CACA,GAAAzN,GAAA+M,EAAAsX,cAAAtX,EAAAsX,cAAAC,YAAA3W,MACA3N,GAAA,KAAA1C,KAAA0C,EAAA+M,EAAA6O,mBAWApG,EAAA3B,GAAAiQ,EAAAF,EAAA,eAAAC,EAAA,4BAAApI,GAEA,MADAjG,GAAAiG,GAAAmI,GAAA7mB,MACAA,QAIAkd,EAAAlD,EAAAzY,UAAAyY,EAAAzY,UAAAkX,EAAA3B,GAGAoG,EAAA5B,OACA4B,EAAAlC,mBACAvC,EAAAyE,QAEAzE,IAGA7H,QAAAgH,YACArI,KAAAqB,OAAA6H,IAAA7H,OAAA6H,EAAAb,GAEC,SAAAa,GAgBD,QAAA+O,GAAA/hB,EAAAsB,EAAAwd,GACA,GAAAkD,GAAAhP,EAAAiP,MAAA3gB,EAEA,OADA0R,GAAAhT,GAAAW,QAAAqhB,EAAAlD,IACAkD,EAAAE,qBAIA,QAAAC,GAAAC,EAAApiB,EAAAsB,EAAAwd,GACA,GAAAsD,EAAAC,OAAA,MAAAN,GAAA/hB,GAAA+K,EAAAzJ,EAAAwd,GAMA,QAAAwD,GAAAF,GACAA,EAAAC,QAAA,GAAArP,EAAAuP,UAAAJ,EAAAC,EAAA,kBAEA,QAAAI,GAAAJ,GACAA,EAAAC,WAAArP,EAAAuP,QAAAJ,EAAAC,EAAA,iBAIA,QAAAK,GAAAC,EAAAN,GACA,GAAApiB,GAAAoiB,EAAApiB,OACA,SAAAoiB,EAAAO,WAAA7nB,KAAAkF,EAAA0iB,EAAAN,KACA,IAAAD,EAAAC,EAAApiB,EAAA,kBAAA0iB,EAAAN,IACA,QAEAD,GAAAC,EAAApiB,EAAA,YAAA0iB,EAAAN,IAEA,QAAAQ,GAAA9D,EAAA4D,EAAAN,EAAAS,GACA,GAAA7iB,GAAAoiB,EAAApiB,OACAoiB,GAAAU,QAAAhoB,KAAAkF,EAAA8e,EADA,UACA4D,GACAG,KAAAE,YAAA/iB,GAAA8e,EAFA,UAEA4D,IACAP,EAAAC,EAAApiB,EAAA,eAAA0iB,EAAAN,EAAAtD,IACAkE,EAJA,UAIAN,EAAAN,GAGA,QAAAa,GAAApjB,EAAAwM,EAAAqW,EAAAN,EAAAS,GACA,GAAA7iB,GAAAoiB,EAAApiB,OACAoiB,GAAAviB,MAAA/E,KAAAkF,EAAA0iB,EAAArW,EAAAxM,GACAgjB,KAAAK,WAAAljB,GAAA0iB,EAAArW,EAAAxM,IACAsiB,EAAAC,EAAApiB,EAAA,aAAA0iB,EAAAN,EAAAviB,GAAAwM,IACA2W,EAAA3W,EAAAqW,EAAAN,GAGA,QAAAY,GAAAG,EAAAT,EAAAN,GACA,GAAApiB,GAAAoiB,EAAApiB,OACAoiB,GAAAgB,SAAAtoB,KAAAkF,EAAA0iB,EAAAS,GACAhB,EAAAC,EAAApiB,EAAA,gBAAA0iB,EAAAN,IACAI,EAAAJ,GAGA,QAAAiB,GAAAvE,EAAAzS,EAAA+V,GACA,GAAAA,EAAAkB,YAAArG,EAAA,MAAA6B,EACA,IAAA9e,GAAAoiB,EAAApiB,OACA,OAAAoiB,GAAAkB,WAAAxoB,KAAAkF,EAAA8e,EAAAzS,GAIA,QAAA4Q,MAgGA,QAAAsG,GAAAC,GAEA,MADAA,SAAAxkB,MAAA,IAAkC,OAClCwkB,OAAAC,EAAA,OACAD,GAAAE,EAAA,OACAC,EAAA7kB,KAAA0kB,GAAA,SACAI,EAAA9kB,KAAA0kB,IAAA,eAGA,QAAAK,GAAAC,EAAAjT,GACA,UAAAA,EAAAiT,GACAA,EAAA,IAAAjT,GAAAF,QAAA,YAAiD,KAIjD,QAAAoT,GAAA/X,GACAA,EAAAgY,aAAAhY,EAAA8S,MAAA,UAAA9L,EAAA3G,KAAAL,EAAA8S,QACA9S,EAAA8S,KAAA9L,EAAAiR,MAAAjY,EAAA8S,KAAA9S,EAAAkY,eACAlY,EAAA8S,MAAA9S,EAAAK,MAAA,OAAAL,EAAAK,KAAA7K,eAAA,SAAAwK,EAAAmY,WACAnY,EAAA8X,IAAAD,EAAA7X,EAAA8X,IAAA9X,EAAA8S,MAAA9S,EAAA8S,SAAAhV,IAsHA,QAAAsa,GAAAN,EAAAhF,EAAAgE,EAAAqB,GAGA,MAFAnR,GAAAT,WAAAuM,KAAAqF,EAAArB,IAAAhE,QAAAhV,IACAkJ,EAAAT,WAAAuQ,KAAAqB,EAAArB,QAAAhZ,KAEAga,MACAhF,OACAgE,UACAqB,YAsCA,QAAAE,GAAApa,EAAAzN,EAAA0nB,EAAAI,GACA,GAAAjY,GAAA6G,EAAAF,EAAA4B,QAAApY,GAAAyU,EAAA+B,EAAAH,cAAArW,EACAwW,GAAAqG,KAAA7c,EAAA,SAAAoB,EAAAV,GACAmP,EAAA2G,EAAA3G,KAAAnP,GACAonB,IAAA1mB,EAAAsmB,EAAAI,EACAA,EAAA,KAAArT,GAAA,UAAA5E,GAAA,SAAAA,EAAAzO,EAAA,UAEA0mB,GAAApR,EAAAjJ,EAAA6R,IAAA5e,EAAAhC,KAAAgC,SAEA,SAAAmP,IAAA6X,GAAA,UAAA7X,EACAgY,EAAApa,EAAA/M,EAAAgnB,EAAAtmB,GACAqM,EAAA6R,IAAAle,EAAAV,KA3WA,GAEAU,GACA1C,EAHAqpB,GAAA,GAAA/Y,MACAT,EAAAI,OAAAJ,SAGAyZ,EAAA,sDACAb,EAAA,qCACAC,EAAA,8BACAF,EAAA,mBACAD,EAAA,YACAgB,EAAA,QACAC,EAAA3Z,EAAA0B,cAAA,IAEAiY,GAAAC,KAAAxZ,OAAA2F,SAAA6T,KAeA3R,EAAAuP,OAAA,EAkDAvP,EAAA4R,UAAA,SAAA5Y,EAAA6W,GACA,aAAA7W,IAAA,MAAAgH,GAAA6R,KAAA7Y,EAEA,IAKA8Y,GAI4BC,EAT5BC,EAAAhZ,EAAAiZ,cACAC,GAAAlS,EAAAT,WAAAyS,GACAA,QAAA,QAAAT,IACAY,EAAApa,EAAA0B,cAAA,UACA2Y,EAAAja,OAAA+Z,GAEAG,EAAA,SAAAC,GACAtS,EAAAmS,GAAAI,eAAA,QAAAD,GAAA,UAEA5C,GAAa2C,QAqBb,OAnBAxC,MAAAlW,QAAA+V,GAEA1P,EAAAmS,GAAAplB,GAAA,sBAAAgQ,EAAAuV,GACApY,aAAA6X,GACA/R,EAAAmS,GAAA9kB,MAAAa,SAEA,SAAA6O,EAAA1D,MAAAyY,EAGAlC,EAAAkC,EAAA,GAAApC,EAAA1W,EAAA6W,GAFAI,EAAA,KAAAqC,GAAA,QAAA5C,EAAA1W,EAAA6W,GAKA1X,OAAA+Z,GAAAE,EACAN,GAAA9R,EAAAT,WAAA6S,IACAA,EAAAN,EAAA,IAEAM,EAAAN,MAAAhb,MAGA,IAAA2Y,EAAAC,EAAA1W,IACAqZ,EAAA,SACA3C,IAGAvX,OAAA+Z,GAAA,WACAJ,EAAAxkB,WAGA6kB,EAAAla,IAAAe,EAAA8X,IAAAnT,QAAA,mBAAAuU,GACAna,EAAAya,KAAAxR,YAAAmR,GAEAnZ,EAAAI,QAAA,IAAA2Y,EAAAjY,WAAA,WACAuY,EAAA,YACKrZ,EAAAI,UAELsW,IAGA1P,EAAAyS,cAEApZ,KAAA,MAEAsW,WAAA1F,EAEA6F,QAAA7F,EAEApd,MAAAod,EAEAmG,SAAAnG,EAEAjd,QAAA,KAEAqiB,QAAA,EAEAK,IAAA,WACA,UAAAvX,QAAAua,gBAIAC,SACAR,OAAA,oEACAS,KAAAlC,EACAmC,IAAA,4BACA5M,KAAAwK,EACAlF,KAAA,cAGAuH,aAAA,EAEA1Z,QAAA,EAEA4X,aAAA,EAEA+B,OAAA,EAIAzC,WAAArG,GAwBAjK,EAAA6R,KAAA,SAAA7Y,GACA,GAEAga,GAAAC,EAFA7D,EAAApP,EAAAxK,UAA8BwD,OAC9B6W,EAAA7P,EAAAkT,UAAAlT,EAAAkT,UAEA,KAAAtoB,IAAAoV,GAAAyS,iBAAA3b,KAAAsY,EAAAxkB,KAAAwkB,EAAAxkB,GAAAoV,EAAAyS,aAAA7nB,GAEA0kB,GAAAF,GAEAA,EAAA0D,cACAE,EAAAjb,EAAA0B,cAAA,KACAuZ,EAAArB,KAAAvC,EAAA0B,IAEAkC,EAAArB,KAAAqB,EAAArB,KACAvC,EAAA0D,YAAApB,EAAAyB,SAAA,KAAAzB,EAAA0B,MAAAJ,EAAAG,SAAA,KAAAH,EAAAI,MAGAhE,EAAA0B,MAAA1B,EAAA0B,IAAA3Y,OAAA2F,SAAAwB,aACA2T,EAAA7D,EAAA0B,IAAAlY,QAAA,WAAAwW,EAAA0B,IAAA1B,EAAA0B,IAAAxlB,MAAA,EAAA2nB,IACAlC,EAAA3B,EAEA,IAAA+B,GAAA/B,EAAA+B,SAAAkC,EAAA,UAAAvnB,KAAAsjB,EAAA0B,IASA,IARAuC,IAAAlC,EAAA,UAEA,IAAA/B,EAAA2D,QACA/Z,IAAA,IAAAA,EAAA+Z,OACA,UAAA5B,GAAA,SAAAA,KAEA/B,EAAA0B,IAAAD,EAAAzB,EAAA0B,IAAA,KAAAtY,KAAAF,QAEA,SAAA6Y,EAIA,MAHAkC,KACAjE,EAAA0B,IAAAD,EAAAzB,EAAA0B,IACA1B,EAAAkE,MAAAlE,EAAAkE,MAAA,UAAAlE,EAAAkE,MAAA,kBACAtT,EAAA4R,UAAAxC,EAAAS,EAGA,IAMAkC,GANAvB,EAAApB,EAAAuD,QAAAxB,GACAoC,KACAC,EAAA,SAAAtrB,EAAAgC,GAA2CqpB,EAAArrB,EAAAwG,gBAAAxG,EAAAgC,IAC3CipB,EAAA,iBAAArnB,KAAAsjB,EAAA0B,KAAAtQ,OAAA2F,GAAAhO,OAAA2F,SAAAqV,SACAzD,EAAAN,EAAAM,MACA+D,EAAA/D,EAAAgE,gBAcA,IAXA7D,KAAAlW,QAAA+V,GAEAN,EAAA0D,aAAAU,EAAA,qCACAA,EAAA,SAAAhD,GAAA,QACAA,EAAApB,EAAAuE,UAAAnD,KACAA,EAAA5X,QAAA,UAAA4X,IAAAxkB,MAAA,WACA0jB,EAAAkE,kBAAAlE,EAAAkE,iBAAApD,KAEApB,EAAAyE,cAAA,IAAAzE,EAAAyE,aAAAzE,EAAAtD,MAAA,OAAAsD,EAAA/V,KAAA7K,gBACAglB,EAAA,eAAApE,EAAAyE,aAAA,qCAEAzE,EAAAmE,QAAA,IAAArrB,IAAAknB,GAAAmE,QAAAC,EAAAtrB,EAAAknB,EAAAmE,QAAArrB,GAmCA,IAlCAwnB,EAAAgE,iBAAAF,EAEA9D,EAAAoE,mBAAA,WACA,MAAApE,EAAAjH,WAAA,CACAiH,EAAAoE,mBAAA7J,EACA/P,aAAA6X,EACA,IAAA9X,GAAApN,GAAA,CACA,IAAA6iB,EAAAS,QAAA,KAAAT,EAAAS,OAAA,UAAAT,EAAAS,QAAA,GAAAT,EAAAS,QAAA,SAAAgD,EAAA,CAGA,GAFAhC,KAAAZ,EAAAnB,EAAAuE,UAAAjE,EAAAqE,kBAAA,iBAEA,eAAArE,EAAAsE,cAAA,QAAAtE,EAAAsE,aACA/Z,EAAAyV,EAAAuE,aACA,CACAha,EAAAyV,EAAAwE,YAEA,KAGAja,EAAAoW,EAAApW,EAAAkX,EAAA/B,GACA,UAAA+B,GAAA,EAAAgD,MAAAla,GACA,OAAAkX,EAAAlX,EAAAyV,EAAA0E,YACA,QAAAjD,IAAAlX,EAAAwX,EAAA3lB,KAAAmO,GAAA,KAAA+F,EAAAwC,UAAAvI,IACa,MAAA8C,GAAYlQ,EAAAkQ,EAEzB,GAAAlQ,EAAA,MAAAojB,GAAApjB,EAAA,cAAA6iB,EAAAN,EAAAS,GAGAD,EAAA3V,EAAAyV,EAAAN,EAAAS,OAEAI,GAAAP,EAAA2E,YAAA,KAAA3E,EAAAS,OAAA,gBAAAT,EAAAN,EAAAS,MAKA,IAAAJ,EAAAC,EAAAN,GAGA,MAFAM,GAAA2C,QACApC,EAAA,aAAAP,EAAAN,EAAAS,GACAH,CAGA,IAAA4E,KAAA,SAAAlF,OAAAkF,KAGA,IAFA5E,EAAA6E,KAAAnF,EAAA/V,KAAA+V,EAAA0B,IAAAwD,EAAAlF,EAAAoF,SAAApF,EAAAqF,UAEArF,EAAAsF,UAAA,IAAAxsB,IAAAknB,GAAAsF,UAAAhF,EAAAxnB,GAAAknB,EAAAsF,UAAAxsB,EAEA,KAAAA,IAAAqrB,GAAAE,EAAA7nB,MAAA8jB,EAAA6D,EAAArrB,GAUA,OARAknB,GAAAhW,QAAA,IAAA2Y,EAAAjY,WAAA,WACA4V,EAAAoE,mBAAA7J,EACAyF,EAAA2C,QACApC,EAAA,eAAAP,EAAAN,EAAAS,IACOT,EAAAhW,UAGPsW,EAAAiF,KAAAvF,EAAAtD,KAAAsD,EAAAtD,KAAA,MACA4D,GAeA1P,EAAAvX,IAAA,WACA,MAAAuX,GAAA6R,KAAAT,EAAAxlB,MAAA,KAAA0B,aAGA0S,EAAA4U,KAAA,WACA,GAAA5b,GAAAoY,EAAAxlB,MAAA,KAAA0B,UAEA,OADA0L,GAAAK,KAAA,OACA2G,EAAA6R,KAAA7Y,IAGAgH,EAAA6U,QAAA,WACA,GAAA7b,GAAAoY,EAAAxlB,MAAA,KAAA0B,UAEA,OADA0L,GAAAmY,SAAA,OACAnR,EAAA6R,KAAA7Y,IAGAgH,EAAA3B,GAAAyW,KAAA,SAAAhE,EAAAhF,EAAAgE,GACA,IAAAvoB,KAAAmD,OAAA,MAAAnD,KACA,IAAAka,GAAAna,EAAAC,KAAA4P,EAAA2Z,EAAA9kB,MAAA,MACAgN,EAAAoY,EAAAN,EAAAhF,EAAAgE,GACAvjB,EAAAyM,EAAA8W,OASA,OARA3Y,GAAAzM,OAAA,IAAAsO,EAAA8X,IAAA3Z,EAAA,GAAAsK,EAAAtK,EAAA,IACA6B,EAAA8W,QAAA,SAAAmE,GACA3sB,EAAA2e,KAAAxE,EACAzB,EAAA,SAAAiG,KAAAgO,EAAAtW,QAAA6T,EAAA,KAAA/K,KAAAhF,GACAwS,GACA1nB,KAAAX,MAAAtE,EAAAgG,YAEA0S,EAAA6R,KAAA7Y,GACAzR,KAGA,IAAAwtB,GAAAC,kBAiBAhV,GAAAiR,MAAA,SAAAznB,EAAA0nB,GACA,GAAAja,KAOA,OANAA,GAAA6R,IAAA,SAAAle,EAAAV,GACA8V,EAAAT,WAAArV,YACA,MAAAA,MAAA,IACA3C,KAAA2F,KAAA6nB,EAAAnqB,GAAA,IAAAmqB,EAAA7qB,KAEAmnB,EAAApa,EAAAzN,EAAA0nB,GACAja,EAAApI,KAAA,KAAA8O,QAAA,cAECwB,GAEA,SAAAa,GAODA,EAAAiV,UAAA,SAAAjc,GACAA,EAAAgH,EAAAxK,UAAyBwD,EAEzB,IAAAkc,GACAC,EACAC,EACAC,EACAC,EACAC,EACAC,KACAC,GAAAzc,EAAA7L,SACAuoB,EAAA,SAAA5J,GAOA,IANAoJ,EAAAlc,EAAAkc,QAAApJ,EACAqJ,GAAA,EACAI,EAAAF,GAAA,EACAA,EAAA,EACAC,EAAAE,EAAA9qB,OACA0qB,GAAA,EACiBI,GAAAD,EAAAD,IAAqCC,EACtD,QAAAC,EAAAD,GAAA3pB,MAAAkgB,EAAA,GAAAA,EAAA,KAAA9S,EAAA2c,YAAA,CACAT,GAAA,CACA,OAGAE,GAAA,EACAI,IACAC,IAAA/qB,QAAAgrB,EAAAD,EAAA5W,SACAqW,EAAAM,EAAA9qB,OAAA,EACAuqB,EAAAW,YAIAX,GACAnM,IAAA,WACA,GAAA0M,EAAA,CACA,GAAAK,GAAAL,EAAA9qB,OACAoe,EAAA,SAAA3c,GACA6T,EAAAqG,KAAAla,EAAA,SAAAsd,EAAAzH,GACA,kBAAAA,GACAhJ,EAAA8c,QAAAb,EAAAhM,IAAAjH,IAAAwT,EAAAtoB,KAAA8U,GAEAA,KAAAtX,QAAA,gBAAAsX,IAAA8G,EAAA9G,KAGA8G,GAAAxb,WACA8nB,EAAAE,EAAAE,EAAA9qB,OACAwqB,IACAG,EAAAQ,EACAH,EAAAR,IAGA,MAAA3tB,OAEA2G,OAAA,WAcA,MAbAsnB,IACAxV,EAAAqG,KAAA/Y,UAAA,SAAAmc,EAAAzH,GAEA,IADA,GAAApT,IACAA,EAAAoR,EAAA2H,QAAA3F,EAAAwT,EAAA5mB,KAAA,GACA4mB,EAAA3c,OAAAjK,EAAA,GAEAwmB,IACAxmB,GAAA0mB,OACA1mB,GAAA2mB,UAKAhuB,MAEA0hB,IAAA,SAAA5K,GACA,SAAAmX,KAAAnX,EAAA2B,EAAA2H,QAAAtJ,EAAAmX,IAAA,EAAAA,EAAA9qB,UAEAuf,MAAA,WAEA,MADAqL,GAAAE,EAAA9qB,OAAA,EACAnD,MAEAquB,QAAA,WAEA,MADAJ,GAAAC,EAAAP,MAAApe,GACAvP,MAEAwuB,SAAA,WACA,OAAAP,GAEAQ,KAAA,WAGA,MAFAP,OAAA3e,GACAoe,GAAAD,EAAAW,UACAruB,MAEA0uB,OAAA,WACA,OAAAR,GAEAS,SAAA,SAAAlpB,EAAAb,GAOA,OANAqpB,GAAAL,IAAAM,IACAtpB,QACAA,GAAAa,EAAAb,EAAAb,MAAAa,EAAAb,QAAAa,GACAipB,EAAAK,EAAAvoB,KAAAf,GACAupB,EAAAvpB,IAEA5E,MAEAmuB,KAAA,WACA,MAAAT,GAAAiB,SAAA3uB,KAAA+F,YAEA6nB,MAAA,WACA,QAAAA,GAIA,OAAAF,KAEC9V,GAEA,SAAAa,GAGD,QAAAkT,GAAAzI,GACA,GAAA0L,KAEA,iBAAAnW,EAAAiV,WAA4C9nB,KAAA,EAAA+nB,OAAA,IAAiB,aAC7D,gBAAAlV,EAAAiV,WAA2C9nB,KAAA,EAAA+nB,OAAA,IAAiB,aAC5D,oBAAAlV,EAAAiV,WAA+CC,OAAA,MAE/CkB,EAAA,UACAzc,GACAyc,MAAA,WACA,MAAAA,IAEAC,OAAA,WAEA,MADAxG,GAAAyG,KAAAhpB,WAAAipB,KAAAjpB,WACA/F,MAEA4S,KAAA,WACA,GAAAqc,GAAAlpB,SACA,OAAA4lB,GAAA,SAAAuD,GACAzW,EAAAqG,KAAA8P,EAAA,SAAAvuB,EAAA8uB,GACA,GAAArY,GAAA2B,EAAAT,WAAAiX,EAAA5uB,KAAA4uB,EAAA5uB,EACAioB,GAAA6G,EAAA,eACA,GAAAC,GAAAtY,KAAAzS,MAAArE,KAAA+F,UACA,IAAAqpB,GAAA3W,EAAAT,WAAAoX,EAAAhd,SACAgd,EAAAhd,UACA2c,KAAAG,EAAAG,SACAL,KAAAE,EAAAI,QACAC,SAAAL,EAAAM,YACmB,CACnB,GAAA/pB,GAAAzF,OAAAoS,EAAA8c,EAAA9c,UAAApS,KACA4gB,EAAA9J,GAAAsY,GAAArpB,SACAmpB,GAAAC,EAAA,WAAA1pB,EAAAmb,QAIAqO,EAAA,OACa7c,WAGbA,QAAA,SAAAnQ,GACA,aAAAA,EAAAwW,EAAAxK,OAAAhM,EAAAmQ,OAGAkW,IAuBA,OArBA7P,GAAAqG,KAAA8P,EAAA,SAAAvuB,EAAA8uB,GACA,GAAAlB,GAAAkB,EAAA,GACAM,EAAAN,EAAA,EAEA/c,GAAA+c,EAAA,IAAAlB,EAAA1M,IAEAkO,GACAxB,EAAA1M,IAAA,WACAsN,EAAAY,GACSb,EAAA,EAAAvuB,GAAA,GAAAguB,QAAAO,EAAA,MAAAH,MAGTnG,EAAA6G,EAAA,eAEA,MADA7G,GAAA6G,EAAA,WAAAnvB,OAAAsoB,EAAAlW,EAAApS,KAAA+F,WACA/F,MAEAsoB,EAAA6G,EAAA,WAAAlB,EAAAU,WAGAvc,UAAAkW,GACApF,KAAA3iB,KAAA+nB,KACAA,EApEA,GAAAvkB,GAAAC,MAAAzC,UAAAwC,KAuEA0U,GAAAwN,KAAA,SAAAyJ,GACA,GAKAC,GAAAC,EAAAC,EALAC,EAAA/rB,EAAAxD,KAAAwF,WACAoU,EAAA2V,EAAA3sB,OACA9C,EAAA,EACA0vB,EAAA,IAAA5V,GAAAuV,GAAAjX,EAAAT,WAAA0X,EAAAtd,SAAA+H,EAAA,EACAmO,EAAA,IAAAyH,EAAAL,EAAA/D,IAEAqE,EAAA,SAAA3vB,EAAA4E,EAAA+a,GACA,gBAAArd,GACAsC,EAAA5E,GAAAL,KACAggB,EAAA3f,GAAA0F,UAAA5C,OAAA,EAAAY,EAAAxD,KAAAwF,WAAApD,EACAqd,IAAA2P,EACArH,EAAA2H,WAAAhrB,EAAA+a,KACa+P,GACbzH,EAAAE,YAAAvjB,EAAA+a,IAKA,IAAA7F,EAAA,EAIA,IAHAwV,EAAA,GAAA3rB,OAAAmW,GACAyV,EAAA,GAAA5rB,OAAAmW,GACA0V,EAAA,GAAA7rB,OAAAmW,GACa9Z,EAAA8Z,IAAS9Z,EACtByvB,EAAAzvB,IAAAoY,EAAAT,WAAA8X,EAAAzvB,GAAA+R,SACA0d,EAAAzvB,GAAA+R,UACA2c,KAAAiB,EAAA3vB,EAAAwvB,EAAAC,IACAd,KAAA1G,EAAAgH,QACAC,SAAAS,EAAA3vB,EAAAuvB,EAAAD,MAEAI,CAKA,OADAA,IAAAzH,EAAAE,YAAAqH,EAAAC,GACAxH,EAAAlW,WAGAqG,EAAAkT,YACC/T,GAEA,SAAAa,GAaD,QAAAyX,GAAAje,GACA,MAAAA,GAAAke,OAAAle,EAAAke,UAEA,QAAAC,GAAAne,EAAAwV,EAAA3Q,EAAAoD,GAEA,GADAuN,EAAAnS,EAAAmS,GACAA,EAAA4I,GAAA,GAAAC,GAAAC,EAAA9I,EAAA4I,GACA,QAAAG,EAAAN,EAAAje,SAAAzK,OAAA,SAAAipB,GACA,MAAAA,MACAhJ,EAAAjS,GAAAib,EAAAjb,GAAAiS,EAAAjS,MACAiS,EAAA4I,IAAAC,EAAA/rB,KAAAksB,EAAAJ,QACAvZ,GAAAoZ,EAAAO,EAAA3Z,MAAAoZ,EAAApZ,OACAoD,GAAAuW,EAAAC,KAAAxW,KAGA,QAAA5E,GAAAmS,GACA,GAAA7X,IAAA,GAAA6X,GAAAhjB,MAAA,IACA,QAAY+Q,EAAA5F,EAAA,GAAAygB,GAAAzgB,EAAA7L,MAAA,GAAAid,OAAA1Z,KAAA,MAEZ,QAAAipB,GAAAF,GACA,UAAApX,QAAA,UAAAoX,EAAAja,QAAA,wBAGA,QAAAua,GAAAF,EAAAG,GACA,MAAAH,GAAAI,MACAC,GAAAL,EAAAjb,IAAAub,MACAH,EAGA,QAAAI,GAAAlf,GACA,MAAAmf,GAAAnf,IAAAgf,GAAAC,EAAAjf,MAGA,QAAAyP,GAAAtP,EAAAtN,EAAAmS,EAAAyN,EAAArK,EAAAgX,EAAAC,GACA,GAAAtqB,GAAAqpB,EAAAje,GAAAmf,EAAAZ,EAAA3pB,KAAA2pB,EAAA3pB,MACAlC,GAAAF,MAAA,MAAAmD,QAAA,SAAA6f,GACA,YAAAA,EAAA,MAAAhP,GAAAjI,UAAA2O,MAAArI,EACA,IAAA2Z,GAAAnb,EAAAmS,EACAgJ,GAAA3Z,KACA2Z,EAAAC,IAAAxW,EAEAuW,EAAAjb,IAAAyb,KAAAna,EAAA,SAAAtB,GACA,GAAA6b,GAAA7b,EAAA8b,aACA,KAAAD,OAAArxB,OAAAyY,EAAAmH,SAAA5f,KAAAqxB,GACA,MAAAZ,GAAA3Z,GAAAzS,MAAArE,KAAA+F,aAEA0qB,EAAAI,IAAAK,CACA,IAAAlsB,GAAAksB,GAAApa,CACA2Z,GAAAc,MAAA,SAAA/b,GAEA,GADAA,EAAAgc,EAAAhc,IACAA,EAAAic,gCAAA,CACAjc,EAAA+O,MACA,IAAA7R,GAAA1N,EAAAX,MAAA4N,EAAAuD,EAAAkc,OAAAniB,GAAAiG,OAAAlR,OAAAkR,EAAAkc,OAEA,QADA,IAAAhf,IAAA8C,EAAAmc,iBAAAnc,EAAAoc,mBACAlf,IAEA+d,EAAApwB,EAAA+wB,EAAAjuB,OACAiuB,EAAAzrB,KAAA8qB,GACA,oBAAAxe,IACAA,EAAAkP,iBAAA6P,EAAAP,EAAAjb,GAAAib,EAAAc,MAAAZ,EAAAF,EAAAU,MAGA,QAAAxqB,GAAAsL,EAAAtN,EAAAmS,EAAAoD,EAAAiX,GACA,GAAAtqB,GAAAqpB,EAAAje,IACKtN,GAAA,IAAAF,MAAA,MAAAmD,QAAA,SAAA6f,GACL2I,EAAAne,EAAAwV,EAAA3Q,EAAAoD,GAAAtS,QAAA,SAAA6oB,SACAD,GAAA3pB,GAAA4pB,EAAApwB,GACA,uBAAA4R,IACAA,EAAA4f,oBAAAb,EAAAP,EAAAjb,GAAAib,EAAAc,MAAAZ,EAAAF,EAAAU,QA4CA,QAAAK,GAAA/J,EAAA5Z,GAoBA,OAnBAA,GAAA4Z,EAAAE,qBACA9Z,MAAA4Z,GAEAhP,EAAAqG,KAAAgT,EAAA,SAAAnxB,EAAAoxB,GACA,GAAAC,GAAAnkB,EAAAlN,EACA8mB,GAAA9mB,GAAA,WAEA,MADAX,MAAA+xB,GAAAE,EACAD,KAAA3tB,MAAAwJ,EAAA9H,YAEA0hB,EAAAsK,GAAAG,IAGAzK,EAAA0K,YAAA1K,EAAA0K,UAAAlhB,KAAAF,QAEAlD,EAAAukB,mBAAA7iB,EAAA1B,EAAAukB,iBACA,eAAAvkB,IAAA,IAAAA,EAAAwkB,YACAxkB,EAAAykB,mBAAAzkB,EAAAykB,uBACA7K,EAAAE,mBAAAsK,IAEAxK,EAGA,QAAA8K,GAAA9K,GACA,GAAApkB,GAAAkuB,GAAsBiB,cAAA/K,EACtB,KAAApkB,IAAAokB,GACAgL,EAAAluB,KAAAlB,IAAAokB,EAAApkB,KAAAkM,IAAAgiB,EAAAluB,GAAAokB,EAAApkB,GAEA,OAAAmuB,GAAAD,EAAA9J,GAvJA,GAAAlY,GAAA4gB,EAAA,EACApsB,EAAAC,MAAAzC,UAAAwC,MACAiU,EAAAS,EAAAT,WACA0a,EAAA,SAAAzwB,GAA+B,sBAAAA,IAC/BuuB,KACAmC,KACA7B,EAAA,aAAAlgB,QACAmgB,GAAeA,MAAA,UAAA6B,KAAA,YACf3B,GAAe4B,WAAA,YAAAC,WAAA,WAEfH,GAAAI,MAAAJ,EAAAK,UAAAL,EAAAM,QAAAN,EAAAO,UAAA,cA0EAza,EAAAgP,OAAalG,MAAA5a,UAEb8R,EAAA8Y,MAAA,SAAAza,EAAArR,GACA,GAAAb,GAAA,IAAAmB,YAAAhC,EAAAxD,KAAAwF,UAAA,EACA,IAAAiS,EAAAlB,GAAA,CACA,GAAAqc,GAAA,WAA+B,MAAArc,GAAAzS,MAAAoB,EAAAb,IAAAN,OAAAP,EAAAxD,KAAAwF,uBAE/B,OADAotB,GAAAhD,KAAAD,EAAApZ,GACAqc,EACK,GAAAT,EAAAjtB,GACL,MAAAb,IACAA,EAAAwuB,QAAAtc,EAAArR,GAAAqR,GACA2B,EAAA8Y,MAAAltB,MAAA,KAAAO,IAEA6T,EAAA8Y,MAAAza,EAAArR,GAAAqR,EAGA,UAAAhV,WAAA,sBAIA2W,EAAA3B,GAAAC,KAAA,SAAA0Q,EAAAlD,EAAAvf,GACA,MAAAhF,MAAAwF,GAAAiiB,EAAAlD,EAAAvf,IAEAyT,EAAA3B,GAAAuc,OAAA,SAAA5L,EAAAziB,GACA,MAAAhF,MAAA8F,IAAA2hB,EAAAziB,IAEAyT,EAAA3B,GAAAwc,IAAA,SAAA7L,EAAAvN,EAAAqK,EAAAvf,GACA,MAAAhF,MAAAwF,GAAAiiB,EAAAvN,EAAAqK,EAAAvf,EAAA,GAGA,IAAAitB,GAAA,WAA8B,UAC9BC,EAAA,WAA+B,UAC/BO,EAAA,uDACAX,GACAH,eAAA,qBACA4B,yBAAA,gCACA3B,gBAAA,uBAkCAnZ,GAAA3B,GAAA0c,SAAA,SAAAtZ,EAAAuN,EAAAziB,GACA,MAAAhF,MAAAwF,GAAAiiB,EAAAvN,EAAAlV,IAEAyT,EAAA3B,GAAA2c,WAAA,SAAAvZ,EAAAuN,EAAAziB,GACA,MAAAhF,MAAA8F,IAAA2hB,EAAAvN,EAAAlV,IAGAyT,EAAA3B,GAAA4c,KAAA,SAAAjM,EAAAziB,GAEA,MADAyT,GAAAjI,SAAAgJ,MAAAga,SAAAxzB,KAAAka,SAAAuN,EAAAziB,GACAhF,MAEAyY,EAAA3B,GAAA6c,IAAA,SAAAlM,EAAAziB,GAEA,MADAyT,GAAAjI,SAAAgJ,MAAAia,WAAAzzB,KAAAka,SAAAuN,EAAAziB,GACAhF,MAGAyY,EAAA3B,GAAAtR,GAAA,SAAAiiB,EAAAvN,EAAAqK,EAAAvf,EAAAsuB,GACA,GAAAM,GAAA1C,EAAApP,EAAA9hB,IACA,OAAAynB,KAAAiL,EAAAjL,IACAhP,EAAAqG,KAAA2I,EAAA,SAAA3V,EAAAgF,GACAgL,EAAAtc,GAAAsM,EAAAoI,EAAAqK,EAAAzN,EAAAwc,KAEAxR,IAGA4Q,EAAAxY,IAAAlC,EAAAhT,KAAA,IAAAA,IACAA,EAAAuf,IAAArK,IAAA3K,GACAvK,IAAAuK,IAAA,IAAAgV,IACAvf,EAAAuf,IAAAhV,IAEA,IAAAvK,MAAAktB,GAEApQ,EAAAhD,KAAA,SAAAoD,EAAAjQ,GACAqhB,IAAAM,EAAA,SAAApe,GAEA,MADA7O,GAAAsL,EAAAuD,EAAA1D,KAAA9M,GACAA,EAAAX,MAAArE,KAAA+F,aAGAmU,IAAAgX,EAAA,SAAA1b,GACA,GAAAqe,GAAAhkB,EAAA4I,EAAAjD,EAAAvS,QAAA+e,QAAA9H,EAAAjI,GAAA/Q,IAAA,EACA,IAAA2O,OAAAoC,EAEA,MADA4hB,GAAApb,EAAAxK,OAAAskB,EAAA/c,IAA0Cse,cAAAjkB,EAAAkkB,UAAA9hB,KAC1C2hB,GAAA5uB,GAAAX,MAAAwL,GAAAgkB,GAAAvvB,OAAAP,EAAAxD,KAAAwF,UAAA,OAIAwb,EAAAtP,EAAAwV,EAAAziB,EAAAuf,EAAArK,EAAAgX,GAAA0C,OAGAnb,EAAA3B,GAAAhR,IAAA,SAAA2hB,EAAAvN,EAAAlV,GACA,GAAA8c,GAAA9hB,IACA,OAAAynB,KAAAiL,EAAAjL,IACAhP,EAAAqG,KAAA2I,EAAA,SAAA3V,EAAAgF,GACAgL,EAAAhc,IAAAgM,EAAAoI,EAAApD,KAEAgL,IAGA4Q,EAAAxY,IAAAlC,EAAAhT,KAAA,IAAAA,IACAA,EAAAkV,IAAA3K,IAEA,IAAAvK,MAAAktB,GAEApQ,EAAAhD,KAAA,WACAnY,EAAA3G,KAAAynB,EAAAziB,EAAAkV,OAIAzB,EAAA3B,GAAA1Q,QAAA,SAAAqhB,EAAA7iB,GAGA,MAFA6iB,GAAAiL,EAAAjL,IAAAhP,EAAAH,cAAAmP,GAAAhP,EAAAiP,MAAAD,GAAA+J,EAAA/J,GACAA,EAAAiK,MAAA9sB,EACA5E,KAAA8e,KAAA,WAEA2I,EAAA3V,OAAAif,IAAA,kBAAA/wB,MAAAynB,EAAA3V,MAAA9R,KAAAynB,EAAA3V,QAEA,iBAAA9R,WAAAg0B,cAAAvM,GACAhP,EAAAzY,MAAAgrB,eAAAvD,EAAA7iB,MAMA6T,EAAA3B,GAAAkU,eAAA,SAAAvD,EAAA7iB,GACA,GAAA4Q,GAAA9C,CAUA,OATA1S,MAAA8e,KAAA,SAAAze,EAAA4R,GACAuD,EAAA+c,EAAAG,EAAAjL,GAAAhP,EAAAiP,MAAAD,MACAjS,EAAAkc,MAAA9sB,EACA4Q,EAAAvS,OAAAgP,EACAwG,EAAAqG,KAAAsR,EAAAne,EAAAwV,EAAA3V,MAAA2V,GAAA,SAAApnB,EAAAowB,GAEA,GADA/d,EAAA+d,EAAAc,MAAA/b,GACAA,EAAAic,gCAAA,aAGA/e,GAIG,uLAEHjO,MAAA,KAAAmD,QAAA,SAAA6f,GACAhP,EAAA3B,GAAA2Q,GAAA,SAAAziB,GACA,WAAAe,WACA/F,KAAA+W,KAAA0Q,EAAAziB,GACAhF,KAAAoG,QAAAqhB,MAIAhP,EAAAiP,MAAA,SAAA5V,EAAA5O,GACAwvB,EAAA5gB,KAAA5O,EAAA4O,IAAA5O,EAAA4O,KACA,IAAA2V,GAAAjX,SAAAyjB,YAAAtB,EAAA7gB,IAAA,UAAAoiB,GAAA,CACA,IAAAhxB,EAAA,OAAAvC,KAAAuC,GAAA,WAAAvC,EAAAuzB,IAAAhxB,EAAAvC,GAAA8mB,EAAA9mB,GAAAuC,EAAAvC,EAEA,OADA8mB,GAAA0M,UAAAriB,EAAAoiB,GAAA,GACA1C,EAAA/J,KAGC7P,GAEA,WAGD,IACA8B,qBAAAnK,IACG,MAAAiG,GACH,GAAA4e,GAAA1a,gBACA9I,QAAA8I,iBAAA,SAAAzH,EAAAoiB,GACA,IACA,MAAAD,GAAAniB,EAAAoiB,GACO,MAAA7e,GACP,kBAMC,SAAAiD,GAGD,QAAA6b,GAAAjU,GAEA,MADAA,GAAA5H,EAAA4H,MACAA,EAAAgF,UAAAhF,EAAAmF,WAAA,SAAAnF,EAAAqD,IAAA,WA+BA,QAAA6Q,GAAA7D,EAAA5Z,GAEA4Z,IAAAta,QAAA,gBACA,IAAA5O,GAAAiT,EAAA5K,EAAA2kB,EAAAne,KAAAqa,EACA,IAAA7gB,KAAA,IAAA4kB,KACAjtB,EAAAitB,EAAA5kB,EAAA,IAAA4K,EAAA5K,EAAA,GACA6gB,EAAA7gB,EAAA,GACA4K,GAAA,CACA,GAAAwF,GAAAC,OAAAzF,EACAA,GAAA0F,MAAAF,GAAAxF,EAAArE,QAAA,mBACA6J,EAGA,MAAAnJ,GAAA4Z,EAAAlpB,EAAAiT,GAhDA,GAAAyC,GAAAzE,EAAAyE,MAAAwX,EAAAxX,EAAAqB,IAAAoW,EAAAzX,EAAAe,QAkBAwW,EAAAhc,EAAAgI,KAAA,MACA6T,QAAA,WAAyB,GAAAA,EAAAt0B,MAAA,MAAAA,OACzB40B,OAAA,WAAyB,IAAAN,EAAAt0B,MAAA,MAAAA,OACzB0kB,SAAA,WAAyB,GAAA1kB,KAAA0kB,SAAA,MAAA1kB,OACzB60B,QAAA,WAAyB,GAAA70B,KAAA60B,QAAA,MAAA70B,OACzBkO,OAAA,WAAyB,MAAAlO,MAAA4Z,YACzBgI,MAAA,SAAAlH,GAA4B,OAAAA,EAAA,MAAA1a,OAC5B6hB,KAAA,SAAAnH,EAAAH,GAAmC,GAAAG,IAAAH,EAAApX,OAAA,QAAAnD,OACnC2hB,GAAA,SAAAjH,EAAAwH,EAAAvf,GAAsC,GAAA+X,IAAA/X,EAAA,MAAA3C,OACtC4f,SAAA,SAAAlF,EAAAwH,EAAA8B,GAAqC,GAAAvL,EAAAzY,MAAAgkB,OAAA3S,QAAA2S,IAAA,QAAAhkB,OACrC0hB,IAAA,SAAAhH,EAAAwH,EAAAwO,GAAoC,GAAAxT,EAAAqB,IAAAve,KAAA0wB,GAAAvtB,OAAA,MAAAnD,QAGpCw0B,EAAA,GAAAvb,QAAA,sCACA6b,EAAA,QACAC,EAAA,aAAA9jB,KAkBAiM,GAAAqB,IAAA,SAAAxE,EAAAG,GACA,MAAAqa,GAAAra,EAAA,SAAAwW,EAAAlpB,EAAAiT,GACA,IACA,GAAAua,IACAtE,GAAAlpB,EAAAkpB,EAAA,IACAoE,EAAAvwB,KAAAmsB,KAGAsE,EAAAvc,EAAAsB,GAAA8L,SAAAkP,GAAArE,EAAA,IAAAqE,EAAA,IAAArE,EAEA,IAAAnW,GAAAma,EAAA3a,EAAA2W,GACO,MAAAlb,GAEP,KADAyf,SAAA3vB,MAAA,gCAAA4U,GACA1E,EACO,QACPwf,KAAAjP,YAAAgP,GAEA,MAAAvtB,GACA0V,EAAA5B,KAAA7C,EAAArR,IAAAmT,EAAA,SAAApZ,EAAAd,GAA+C,MAAAmH,GAAAjH,KAAAY,EAAAd,EAAAka,EAAAE,MAD/CF,KAKA2C,EAAAe,QAAA,SAAAlE,EAAAG,GACA,MAAAqa,GAAAra,EAAA,SAAAwW,EAAAlpB,EAAAiT,GACA,QAAAiW,GAAAiE,EAAA5a,EAAA2W,OACAlpB,KAAAjH,KAAAwZ,EAAA,KAAAU,KAAAV,OAGCnC,GACDhY,EAAAD,QAAAiY,GRi9CM,SAAUhY,EAAQD,GSjyGxB,QAAAu1B,GAAA9jB,EAAA+jB,GACA,GAAAC,GAAAhkB,EAAA,OACAikB,EAAAjkB,EAAA,EACA,KAAAikB,EACA,MAAAD,EAGA,IAAAD,GAAA,kBAAAG,MAAA,CACA,GAAAC,GAAAC,EAAAH,EAKA,QAAAD,GAAA9wB,OAJA+wB,EAAAI,QAAAruB,IAAA,SAAAyG,GACA,uBAAAwnB,EAAAK,WAAA7nB,EAAA,SAGAvJ,QAAAixB,IAAAjuB,KAAA,MAGA,OAAA8tB,GAAA9tB,KAAA,MAIA,QAAAkuB,GAAAG,GAKA,yEAHAL,KAAAM,SAAAnI,mBAAA3M,KAAA+U,UAAAF,MAGA,MArEA/1B,EAAAD,QAAA,SAAAw1B,GACA,GAAAlH,KAwCA,OArCAA,GAAAlW,SAAA,WACA,MAAA/X,MAAAoH,IAAA,SAAAgK,GACA,GAAAgkB,GAAAF,EAAA9jB,EAAA+jB,EACA,OAAA/jB,GAAA,GACA,UAAAA,EAAA,OAAmCgkB,EAAA,IAEnCA,IAEG9tB,KAAA,KAIH2mB,EAAA5tB,EAAA,SAAAJ,EAAA61B,GACA,gBAAA71B,KACAA,IAAA,KAAAA,EAAA,KAEA,QADA81B,MACA11B,EAAA,EAAgBA,EAAAL,KAAAmD,OAAiB9C,IAAA,CACjC,GAAAwG,GAAA7G,KAAAK,GAAA,EACA,iBAAAwG,KACAkvB,EAAAlvB,IAAA,GAEA,IAAAxG,EAAA,EAAYA,EAAAJ,EAAAkD,OAAoB9C,IAAA,CAChC,GAAA+Q,GAAAnR,EAAAI,EAKA,iBAAA+Q,GAAA,IAAA2kB,EAAA3kB,EAAA,MACA0kB,IAAA1kB,EAAA,GACAA,EAAA,GAAA0kB,EACKA,IACL1kB,EAAA,OAAAA,EAAA,aAAA0kB,EAAA,KAEA7H,EAAAtoB,KAAAyL,MAIA6c,ITs3GM,SAAUruB,EAAQD,GUp6GxB,GAAAq2B,GAAAp2B,EAAAD,SAA6Bs2B,QAAA,QAC7B,iBAAAC,WAAAF,IV06GM,SAAUp2B,EAAQD,EAASO,GWvzGjC,QAAAi2B,GAAAC,EAAA3kB,GACA,OAAApR,GAAA,EAAgBA,EAAA+1B,EAAAjzB,OAAmB9C,IAAA,CACnC,GAAA+Q,GAAAglB,EAAA/1B,GACAg2B,EAAAC,EAAAllB,EAAAvK,GAEA,IAAAwvB,EAAA,CACAA,EAAAE,MAEA,QAAAtwB,GAAA,EAAiBA,EAAAowB,EAAAzmB,MAAAzM,OAA2B8C,IAC5CowB,EAAAzmB,MAAA3J,GAAAmL,EAAAxB,MAAA3J,GAGA,MAAQA,EAAAmL,EAAAxB,MAAAzM,OAAuB8C,IAC/BowB,EAAAzmB,MAAAjK,KAAA6wB,EAAAplB,EAAAxB,MAAA3J,GAAAwL,QAEG,CAGH,OAFA7B,MAEA3J,EAAA,EAAiBA,EAAAmL,EAAAxB,MAAAzM,OAAuB8C,IACxC2J,EAAAjK,KAAA6wB,EAAAplB,EAAAxB,MAAA3J,GAAAwL,GAGA6kB,GAAAllB,EAAAvK,KAA2BA,GAAAuK,EAAAvK,GAAA0vB,KAAA,EAAA3mB,WAK3B,QAAA6mB,GAAAxI,EAAAxc,GAIA,OAHA2kB,MACAM,KAEAr2B,EAAA,EAAgBA,EAAA4tB,EAAA9qB,OAAiB9C,IAAA,CACjC,GAAA+Q,GAAA6c,EAAA5tB,GACAwG,EAAA4K,EAAAklB,KAAAvlB,EAAA,GAAAK,EAAAklB,KAAAvlB,EAAA,GACAsS,EAAAtS,EAAA,GACAwlB,EAAAxlB,EAAA,GACAukB,EAAAvkB,EAAA,GACAylB,GAAcnT,MAAAkT,QAAAjB,YAEde,GAAA7vB,GACA6vB,EAAA7vB,GAAA+I,MAAAjK,KAAAkxB,GADAT,EAAAzwB,KAAA+wB,EAAA7vB,IAAkDA,KAAA+I,OAAAinB,KAIlD,MAAAT,GAGA,QAAAU,GAAArlB,EAAAmR,GACA,GAAA3f,GAAA8zB,EAAAtlB,EAAAulB,WAEA,KAAA/zB,EACA,SAAAwP,OAAA,8GAGA,IAAAwkB,GAAAC,IAAA/zB,OAAA,EAEA,YAAAsO,EAAA0lB,SACAF,EAEGA,EAAA/P,YACHjkB,EAAAokB,aAAAzE,EAAAqU,EAAA/P,aAEAjkB,EAAAwW,YAAAmJ,GAJA3f,EAAAokB,aAAAzE,EAAA3f,EAAAkkB,YAMA+P,EAAAvxB,KAAAid,OACE,eAAAnR,EAAA0lB,SACFl0B,EAAAwW,YAAAmJ,OACE,oBAAAnR,GAAA0lB,WAAA1lB,EAAA0lB,SAAApU,OAIF,SAAAtQ,OAAA,6LAHA,IAAAyU,GAAA6P,EAAAtlB,EAAAulB,WAAA,IAAAvlB,EAAA0lB,SAAApU,OACA9f,GAAAokB,aAAAzE,EAAAsE,IAMA,QAAAkQ,GAAAxU,GACA,UAAAA,EAAAhJ,WAAA,QACAgJ,GAAAhJ,WAAAC,YAAA+I,EAEA,IAAAlI,GAAAwc,EAAA7lB,QAAAuR,EACAlI,IAAA,GACAwc,EAAA5lB,OAAAoJ,EAAA,GAIA,QAAA2c,GAAA5lB,GACA,GAAAmR,GAAApS,SAAA0B,cAAA,QAOA,OALAT,GAAA6lB,MAAAxlB,KAAA,WAEAylB,EAAA3U,EAAAnR,EAAA6lB,OACAR,EAAArlB,EAAAmR,GAEAA,EAGA,QAAA4U,GAAA/lB,GACA,GAAAgmB,GAAAjnB,SAAA0B,cAAA,OAQA,OANAT,GAAA6lB,MAAAxlB,KAAA,WACAL,EAAA6lB,MAAAI,IAAA,aAEAH,EAAAE,EAAAhmB,EAAA6lB,OACAR,EAAArlB,EAAAgmB,GAEAA,EAGA,QAAAF,GAAAvnB,EAAAsnB,GACAx2B,OAAA62B,KAAAL,GAAA1vB,QAAA,SAAAvE,GACA2M,EAAAmC,aAAA9O,EAAAi0B,EAAAj0B,MAIA,QAAAmzB,GAAAv0B,EAAAwP,GACA,GAAAmR,GAAAgV,EAAAjxB,EAAA+L,CAGA,IAAAjB,EAAAomB,WAAA51B,EAAAyhB,IAAA,CAGA,KAFAhR,EAAAjB,EAAAomB,UAAA51B,EAAAyhB,MASA,mBAJAzhB,GAAAyhB,IAAAhR,EAUA,GAAAjB,EAAAqmB,UAAA,CACA,GAAAC,GAAAC,GAEApV,GAAAkV,MAAAT,EAAA5lB,IAEAmmB,EAAAK,EAAAlhB,KAAA,KAAA6L,EAAAmV,GAAA,GACApxB,EAAAsxB,EAAAlhB,KAAA,KAAA6L,EAAAmV,GAAA,OAGA91B,GAAA0zB,WACA,kBAAAuC,MACA,kBAAAA,KAAAC,iBACA,kBAAAD,KAAAE,iBACA,kBAAAC,OACA,kBAAA/C,OAEA1S,EAAA4U,EAAA/lB,GACAmmB,EAAAU,EAAAvhB,KAAA,KAAA6L,EAAAnR,GACA9K,EAAA,WACAywB,EAAAxU,GAEAA,EAAAwH,MAAA8N,IAAAE,gBAAAxV,EAAAwH,SAGAxH,EAAAyU,EAAA5lB,GACAmmB,EAAAW,EAAAxhB,KAAA,KAAA6L,GACAjc,EAAA,WACAywB,EAAAxU,IAMA,OAFAgV,GAAA31B,GAEA,SAAAu2B,GACA,GAAAA,EAAA,CACA,GACAA,EAAA9U,MAAAzhB,EAAAyhB,KACA8U,EAAA5B,QAAA30B,EAAA20B,OACA4B,EAAA7C,YAAA1zB,EAAA0zB,UAEA,MAGAiC,GAAA31B,EAAAu2B,OAEA7xB,MAeA,QAAAsxB,GAAArV,EAAAvb,EAAAV,EAAA1E,GACA,GAAAyhB,GAAA/c,EAAA,GAAA1E,EAAAyhB,GAEA,IAAAd,EAAA6V,WACA7V,EAAA6V,WAAA9S,QAAA+S,EAAArxB,EAAAqc,OACE,CACF,GAAAiV,GAAAnoB,SAAAooB,eAAAlV,GACA5J,EAAA8I,EAAA9I,UAEAA,GAAAzS,IAAAub,EAAA/I,YAAAC,EAAAzS,IAEAyS,EAAA3W,OACAyf,EAAAyE,aAAAsR,EAAA7e,EAAAzS,IAEAub,EAAAnJ,YAAAkf,IAKA,QAAAJ,GAAA3V,EAAA3gB,GACA,GAAAyhB,GAAAzhB,EAAAyhB,IACAkT,EAAA30B,EAAA20B,KAMA,IAJAA,GACAhU,EAAAzQ,aAAA,QAAAykB,GAGAhU,EAAA6V,WACA7V,EAAA6V,WAAA9S,QAAAjC,MACE,CACF,KAAAd,EAAAuE,YACAvE,EAAA/I,YAAA+I,EAAAuE,WAGAvE,GAAAnJ,YAAAjJ,SAAAooB,eAAAlV,KAIA,QAAA4U,GAAAb,EAAAhmB,EAAAxP,GACA,GAAAyhB,GAAAzhB,EAAAyhB,IACAiS,EAAA1zB,EAAA0zB,UAQAkD,MAAAtpB,KAAAkC,EAAAqnB,uBAAAnD,GAEAlkB,EAAAqnB,uBAAAD,KACAnV,EAAAqV,EAAArV,IAGAiS,IAEAjS,GAAA,uDAAuD4R,KAAAM,SAAAnI,mBAAA3M,KAAA+U,UAAAF,MAAA,MAGvD,IAAAqD,GAAA,GAAAX,OAAA3U,IAA6B5R,KAAA,aAE7BmnB,EAAAxB,EAAArN,IAEAqN,GAAArN,KAAA8N,IAAAC,gBAAAa,GAEAC,GAAAf,IAAAE,gBAAAa,GAjXA,GAAA3C,MAWA4C,EATA,SAAApiB,GACA,GAAAqiB,EAEA,mBAEA,WADA,KAAAA,MAAAriB,EAAAzS,MAAArE,KAAA+F,YACAozB,IAIA,WAMA,MAAAvoB,SAAAJ,mBAAAjK,MAAAqK,OAAAwoB,OAGAC,EAAA,SAAAp2B,GACA,MAAAuN,UAAAgE,cAAAvR,IAGA8zB,EAAA,SAAAjgB,GACA,GAAAqiB,KAEA,iBAAAl2B,GAMA,qBAAAA,GACA,MAAAA,IAEA,aAAAk2B,EAAAl2B,GAAA,CACA,GAAAq2B,GAAAD,EAAA94B,KAAAP,KAAAiD,EAEA,IAAA2N,OAAA2oB,mBAAAD,YAAA1oB,QAAA2oB,kBACA,IAGAD,IAAA/W,gBAAA0I,KACK,MAAAzV,GACL8jB,EAAA,KAGAH,EAAAl2B,GAAAq2B,EAEA,MAAAH,GAAAl2B,OAIA60B,EAAA,KACAE,EAAA,EACAd,KAEA6B,EAAA74B,EAAA,IAEAN,GAAAD,QAAA,SAAAsuB,EAAAxc,GACA,sBAAA+nB,eACA,gBAAAhpB,UAAA,SAAAiC,OAAA,+DAGAhB,SAEAA,EAAA6lB,MAAA,gBAAA7lB,GAAA6lB,MAAA7lB,EAAA6lB,SAIA7lB,EAAAqmB,WAAA,iBAAArmB,GAAAqmB,YAAArmB,EAAAqmB,UAAAoB,KAGAznB,EAAAulB,aAAAvlB,EAAAulB,WAAA,QAGAvlB,EAAA0lB,WAAA1lB,EAAA0lB,SAAA,SAEA,IAAAf,GAAAK,EAAAxI,EAAAxc,EAIA,OAFA0kB,GAAAC,EAAA3kB,GAEA,SAAAgoB,GAGA,OAFAC,MAEAr5B,EAAA,EAAiBA,EAAA+1B,EAAAjzB,OAAmB9C,IAAA,CACpC,GAAA+Q,GAAAglB,EAAA/1B,GACAg2B,EAAAC,EAAAllB,EAAAvK,GAEAwvB,GAAAE,OACAmD,EAAA/zB,KAAA0wB,GAGA,GAAAoD,EAAA,CAEAtD,EADAM,EAAAgD,EAAAhoB,GACAA,GAGA,OAAApR,GAAA,EAAiBA,EAAAq5B,EAAAv2B,OAAsB9C,IAAA,CACvC,GAAAg2B,GAAAqD,EAAAr5B,EAEA,QAAAg2B,EAAAE,KAAA,CACA,OAAAtwB,GAAA,EAAmBA,EAAAowB,EAAAzmB,MAAAzM,OAA2B8C,IAAAowB,EAAAzmB,MAAA3J,WAE9CqwB,GAAAD,EAAAxvB,OA6LA,IAAA6xB,GAAA,WACA,GAAAiB,KAEA,iBAAAtyB,EAAAuyB,GAGA,MAFAD,GAAAtyB,GAAAuyB,EAEAD,EAAAnyB,OAAAqyB,SAAAvyB,KAAA,WXw/GM,SAAU1H,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GYvyHT,IAAIklB,IACFiS,SAAc,kBACdC,YAAc,mBACdvM,OAAc,oBAMZwM,EAAU,OAIVC,GACFC,IAAW,IACXC,KAAU,KACVC,KAAU,IACVC,KAAU,IACVC,KAAU,IACVC,SAAU,QACVC,SAAU,SAGRC,EAAU,+BAGVC,GACFC,IAAK,QACLC,IAAK,OACLC,IAAK,OACLC,IAAK,SACLZ,IAAM,UAGJa,EAAW,GAAI9hB,QAAO,WAAY,KAElC+hB,EAAa,SAASC,GACxB,MAAe,QAAXA,EAAwB,IACpB,GAAKA,GAAQ7kB,QAAQ2kB,EAAU,SAASlrB,GAC9C,MAAO6qB,GAAa7qB,MAIpBqrB,EAAU,EAKVC,EAAO,SAASnX,EAAMO,GACxB,GAAI6W,GAGA9K,EAAU,GAAIrX,UACf4O,EAAS2F,QAAUwM,GAASnsB,QAC5Bga,EAASkS,aAAeC,GAASnsB,QACjCga,EAASiS,UAAYE,GAASnsB,QAC/BvG,KAAK,KAAO,KAAM,KAGhBD,EAAQ,EACRwG,EAAS,QACbmW,GAAK5N,QAAQka,EAAS,SAASzgB,EAAO2d,EAAQuM,EAAaD,EAAUnV,GAcnE,MAbA9W,IAAUmW,EAAKjgB,MAAMsD,EAAOsd,GACzBvO,QAAQqkB,EAAS,SAAS5qB,GAAS,MAAO,KAAOoqB,EAAQpqB,KAExD2d,IACF3f,GAAU,cAAiB2f,EAAS,oCAElCuM,IACFlsB,GAAU,cAAiBksB,EAAc,wBAEvCD,IACFjsB,GAAU,OAAUisB,EAAW,YAEjCzyB,EAAQsd,EAAS9U,EAAM1M,OAChB0M,IAEThC,GAAU,OAGLga,EAASwT,WAAUxtB,EAAS,mBAAqBA,EAAS,OAE/DA,EAAS,4FAEPA,EAAS,qDAAuDqtB,IAAY,GAE9E,KAGEE,EAAS,GAAIE,UAASzT,EAASwT,UAAY,MAAO,aAAcxtB,GAChE,MAAO2H,GAEP,KADAA,GAAE3H,OAASA,EACL2H,EAGR,GAAI+O,EAAM,MAAO6W,GAAO7W,EAAMyW,EAC9B,IAAIO,GAAW,SAAShX,GACtB,MAAO6W,GAAO76B,KAAKP,KAAMukB,EAAMyW,GAMjC,OAFAO,GAAS1tB,OAAS,aAAega,EAASwT,UAAY,OAAS,OAASxtB,EAAS,IAE1E0tB,EAETJ,GAAKtT,SAAWA,EZ0yHhBloB,EAAQgC,QYxyHOw5B,EZyyHfv7B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,Gah6HjCN,EAAAD,SAAkBgC,QAAAzB,EAAA,IAAAkB,YAAA,Ibs6HZ,SAAUxB,EAAQD,EAASO,Gct6HjC,GAAAs7B,GAAAt7B,EAAA,WACAu7B,EAAAv7B,EAAA,IACAw7B,EAAAx7B,EAAA,IAAAw7B,OACAC,EAAA,kBAAAD,IAEA97B,EAAAD,QAAA,SAAAgB,GACA,MAAA66B,GAAA76B,KAAA66B,EAAA76B,GACAg7B,GAAAD,EAAA/6B,KAAAg7B,EAAAD,EAAAD,GAAA,UAAA96B,MAGA66B,Sd46HM,SAAU57B,EAAQD,EAASO,GAEjC,YAyCA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAtCvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIyQ,GAAUlT,EAAoB,IAE9BwR,EAAWvP,EAAuBiR,GAElC1P,EAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,Gej9HxC1P,EAAA5D,EAAA,GACA07B,EAAA17B,EAAA,Ifs9HI27B,EAAc15B,EAAuBy5B,Ger9HzCE,EAAA57B,EAAA,Ify9HI67B,EAAgB55B,EAAuB25B,Gev9H3CloB,EAAA1T,EAAA,Gf29HI2T,EAAgB1R,EAAuByR,Gel9HtBooB,Ef69HN,SAAUC,Gep6HvB,QAAAD,GAAYvqB,EAASyqB,EAAMC,IAAa,EAAAx4B,EAAAhC,SAAA3B,KAAAg8B,EAAA,IAAAn2B,IAAA,EAAA2I,EAAA7M,SAAA3B,KACtCi8B,EAAA17B,KAAAP,KAAMyR,GADgC,OAEtC5L,GAAKgiB,YACLhiB,EAAKu2B,MAAQF,EACbr2B,EAAKs2B,YAAcA,EACnBt2B,EAAKw2B,YAAa,EALoBx2B,EfkuIxC,OA7TA,EAAI6I,EAAW/M,SAASq6B,EAAUC,IAClC,EAAI3oB,EAAc3R,SAASq6B,IACzB34B,IAAK,cAOLnC,IAAK,Weh+HL,OAAO,Kfo+HPmC,IAAK,aACLnC,IAAK,Wej+HL,OAAO,Kf4+HPmC,IAAK,QACLnC,IAAK,Wep+HL,OAAO,Kf++HPmC,IAAK,OACLnC,IAAK,Wev+HL,MAAOlB,MAAKo8B,Sfo/HZ/4B,IAAK,YACLnC,IAAK,We1+HL,OAAO,Kfq/HPmC,IAAK,YACLnC,IAAK,We7+HL,MAAOlB,MAAKq8B,ef2gIdL,EAASz6B,Uev/HT+6B,Qfu/H6B,Wet/H3Bt8B,KAAKq8B,YAAa,GfggIpBL,EAASz6B,Uez/HT8Q,Kfy/H0B,aAQ1B2pB,EAASz6B,Ue3/HTg7B,Mf2/H2B,aAQ3BP,EAASz6B,Ue7/HTi7B,Kf6/H0B,aAS1BR,EAASz6B,Ue//HTk7B,Kf+/H0B,Se//HrB7tB,KfwgILotB,EAASz6B,UejgITm7B,efigIoC,SejgIrBC,Kf4gIfX,EAASz6B,UengITq7B,mBfmgIwC,WengIjB,MAAO,If8gI9BZ,EAASz6B,UevgITs7B,YfugIiC,WevgIjB,MAAO,IfkhIvBb,EAASz6B,Ue3gITu7B,Uf2gI+B,We1gI7B,OAAO,GfmiITd,EAASz6B,Uez+HTw7B,gBfy+HqC,Wex+HnC,MAAOf,GAASgB,Ofm/HlBhB,EAASz6B,Ue3+HT07B,sBf2+H2C,We1+HzC,OAAO,Gfq/HTjB,EAASz6B,Ue7+HT8T,Of6+H4B,Se7+HrB1S,Kfs/HPq5B,EAASz6B,Ue/+HT4V,Uf++H+B,Se/+HrB1F,GACRzR,KAAKk9B,SAAWrpB,EAAAlS,QAAEsM,OAAOjO,KAAKk9B,SAAUzrB,Ifw/H1CuqB,EAASz6B,Uej/HT47B,Qfi/H6B,Weh/H3Bn9B,KAAK2G,Uf0/HPq1B,EAASz6B,Uen/HT67B,gBfm/HqC,Wen/HnB,GAAAC,GAAAr9B,IAChBA,MAAKs9B,YAAY,SAAC5qB,EAAQpN,GACxBoN,GAAU2qB,EAAKhrB,UfigInB2pB,EAASz6B,Uex/HT+7B,Yfw/HiC,Sex/HrB9rB,GACVA,GAAG,EAAM,Qf2/HX,EAAI8B,EAAc3R,SAASq6B,IACzB34B,IAAK,UACLnC,IAAK,WenmIL,OAAO,Kf8mIPmC,IAAK,0BACLnC,IAAK,WetmIL,MAAOlB,MAAKu9B,qBAAqBp6B,OAAS,KfinI1CE,IAAK,uBACLnC,IAAK,WezmIL,YfonIAmC,IAAK,wBACLnC,IAAK,We5mIL,OAAQ,GfsnIRkwB,IAAK,Se9mImBoM,QfgnInBxB,GACPH,EAAYl6B,QAEdhC,GAAQgC,Qe9xIaq6B,GAkPrB,EAAAtqB,EAAA/P,SAAcq6B,EAASz6B,UAAvBw6B,EAAAp6B,SAEAq6B,EAAS/tB,OAAS,SAASE,GACzB,OAAO,EAAArK,EAAAmK,QAAO+tB,EAAU7tB,IAa1B6tB,EAASyB,QAAU,SAAC5vB,EAAQue,GAC1B,OAAO,GAUT4P,EAAS0B,IAAM,MAQf1B,EAAS2B,IAAM,MAQf3B,EAAS4B,KAAO,OAQhB5B,EAASgB,MAAQ,QAQjBhB,EAASlqB,KAAO,WfijIhBlS,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YA6BA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GA1BvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GgBl4IxC1P,EAAA5D,EAAA,GACAwF,EAAAxF,EAAA,GhBu4II29B,EAAW17B,EAAuBuD,GgB/3IjBo4B,EhB64IJ,SAAUC,GgBj4IzB,QAAAD,KAAwB,GAAZrsB,GAAY1L,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,SAAApC,EAAAhC,SAAA3B,KAAA89B,EAAA,IAAAj4B,IAAA,EAAA2I,EAAA7M,SAAA3B,KACtB+9B,EAAAx9B,KAAAP,KAAMyR,GADgB,OAEtB5L,GAAKq3B,SAAWzrB,EAChB5L,EAAKiC,UAAW,EAAAhE,EAAAgE,UAAS,KAHHjC,EhBw6IxB,OAtCA,EAAI6I,EAAW/M,SAASm8B,EAAYC,IACpC,EAAIzqB,EAAc3R,SAASm8B,IACzBz6B,IAAK,UAOLnC,IAAK,WgBj5IS,MAAOlB,MAAKk9B,ahB86IrBY,GACPD,EAASl8B,QAEXhC,GAAQgC,QgBv7Iam8B,EhBw7IrBl+B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GiBz8IjC,GAAA4nB,GAAA5nB,EAAA,IACA81B,EAAA91B,EAAA,GACA+E,EAAA/E,EAAA,IACAujB,EAAAvjB,EAAA,IAGA89B,EAAA,SAAAlsB,EAAAnR,EAAAkN,GACA,GASAxK,GAAA46B,EAAA7uB,EATA8uB,EAAApsB,EAAAksB,EAAAG,EACAC,EAAAtsB,EAAAksB,EAAAK,EACAC,EAAAxsB,EAAAksB,EAAAO,EACAC,EAAA1sB,EAAAksB,EAAAS,EACAC,EAAA5sB,EAAAksB,EAAAW,EACAC,EAAA9sB,EAAAksB,EAAAa,EACAl/B,EAAAy+B,EAAApI,IAAAr1B,KAAAq1B,EAAAr1B,OACAm+B,EAAAn/B,EAAA,UACAsD,EAAAm7B,EAAAtW,EAAAwW,EAAAxW,EAAAnnB,IAAAmnB,EAAAnnB,QAAqF,SAErFy9B,KAAAvwB,EAAAlN,EACA,KAAA0C,IAAAwK,IAEAowB,GAAAC,GAAAj7B,OAAAsM,KAAAtM,EAAAI,KACAA,IAAA1D,KAEAyP,EAAA6uB,EAAAh7B,EAAAI,GAAAwK,EAAAxK,GAEA1D,EAAA0D,GAAA+6B,GAAA,kBAAAn7B,GAAAI,GAAAwK,EAAAxK,GAEAq7B,GAAAT,EAAAh5B,EAAAmK,EAAA0Y,GAEA8W,GAAA37B,EAAAI,IAAA+L,EAAA,SAAA2vB,GACA,GAAAZ,GAAA,SAAAa,EAAAC,EAAAx+B,GACA,GAAAT,eAAA++B,GAAA,CACA,OAAAh5B,UAAA5C,QACA,iBAAA47B,EACA,kBAAAA,GAAAC,EACA,kBAAAD,GAAAC,EAAAC,GACW,UAAAF,GAAAC,EAAAC,EAAAx+B,GACF,MAAAs+B,GAAA16B,MAAArE,KAAA+F,WAGT,OADAo4B,GAAA,UAAAY,EAAA,UACAZ,GAEK/uB,GAAAovB,GAAA,kBAAApvB,GAAAnK,EAAAq2B,SAAA/6B,KAAA6O,KAELovB,KACA7+B,EAAAu/B,UAAAv/B,EAAAu/B,aAA+C77B,GAAA+L,EAE/C0C,EAAAksB,EAAAmB,GAAAL,MAAAz7B,IAAAogB,EAAAqb,EAAAz7B,EAAA+L,KAKA4uB,GAAAG,EAAA,EACAH,EAAAK,EAAA,EACAL,EAAAO,EAAA,EACAP,EAAAS,EAAA,EACAT,EAAAW,EAAA,GACAX,EAAAa,EAAA,GACAb,EAAAoB,EAAA,GACApB,EAAAmB,EAAA,IACAv/B,EAAAD,QAAAq+B,GjB+8IM,SAAUp+B,EAAQD,GkB1gJxB,GAAAmoB,GAAAloB,EAAAD,QAAA,mBAAAiR,gBAAA0U,WACA1U,OAAA,mBAAA7Q,YAAAulB,WAAAvlB,KAAAu7B,SAAA,gBACA,iBAAA+D,WAAAvX,IlBihJM,SAAUloB,EAAQD,EAASO,GmBphJjC,GAAAo/B,GAAAp/B,EAAA,IACAq/B,EAAAr/B,EAAA,IACAs/B,EAAAt/B,EAAA,IACAu/B,EAAA3+B,OAAAC,cAEApB,GAAA+/B,EAAAx/B,EAAA,IAAAY,OAAAC,eAAA,SAAA4+B,EAAAlB,EAAAmB,GAIA,GAHAN,EAAAK,GACAlB,EAAAe,EAAAf,GAAA,GACAa,EAAAM,GACAL,EAAA,IACA,MAAAE,GAAAE,EAAAlB,EAAAmB,GACG,MAAApqB,IACH,UAAAoqB,IAAA,OAAAA,GAAA,KAAA99B,WAAA,2BAEA,OADA,SAAA89B,KAAAD,EAAAlB,GAAAmB,EAAAj9B,OACAg9B,InB2hJM,SAAU//B,EAAQD,EAASO,GoBxiJjC,GAAA2/B,GAAA3/B,EAAA,IACA4/B,EAAA5/B,EAAA,GACAN,GAAAD,QAAA,SAAAogC,GACA,MAAAF,GAAAC,EAAAC,MpBgjJM,SAAUngC,EAAQD,EAASO,GAEjC,YAmBA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAhBvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIyQ,GAAUlT,EAAoB,IAE9BwR,EAAWvP,EAAuBiR,GqB/jJtCxP,EAAA1D,EAAA,IrBmkJI2D,EAAQ1B,EAAuByB,GqBlkJnCo8B,EAAA9/B,EAAA,IrBskJI+/B,EAAU99B,EAAuB69B,GqBpkJ/BE,GAOJC,YAPiB,SAOL76B,GAA0C,GAAnCmM,GAAmC1L,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,IAAvBq6B,eAAe,GACtCrW,EAAQ/pB,KAAK0C,aAAe1C,KAAK0C,YAAYoP,MAAQ,GACrDuuB,EAASrgC,KAAKW,MAAQopB,EACtBmS,EAAOl8B,KAAKk8B,MAAQl8B,KAAKg2B,MAAQh2B,KAAKg2B,KAAKkG,MAAQl8B,KAAK2e,WAAa3e,KAAK2e,UAAUud,KAEpFoE,EAAkBD,EAAlB,KAA4B/6B,GAASA,EAAMi7B,MAAQ,WACnDC,GACJC,YAAa,GACbC,MAAOT,EAAAt+B,QAAYg/B,OAAOC,MAC1BP,SACAtW,QACA8W,QAGIC,GAAY,EAAApvB,EAAA/P,YAAkB6+B,EAAcl7B,GAChDi7B,KAAM9uB,EAAQ2uB,cAAgBE,EAAeh7B,EAAMi7B,MAGrD,IAAIrE,GAAQ4E,EAAUJ,OAAST,EAAAt+B,QAAYg/B,OAAOC,QAAUE,EAAUC,GAAI,CACxE,GAAMC,IACJC,MAAO/E,EAAKgF,EAAE,uBACdC,QAASjF,EAAKgF,EAAE,yBAElBJ,GAAUC,GAAKC,EAQjB,MALIhhC,MAAKm8B,YACPn8B,KAAKm8B,YAAYgE,YAAYW,GAE7Bj9B,EAAAlC,QAAIy/B,KAAKf,EAAQ,sCAAuCS,GAEnDA,GrB2kJXnhC,GAAQgC,QqBvkJOu+B,ErBwkJftgC,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GsBxnJjCN,EAAAD,SAAAO,EAAA,eACA,MAAsE,IAAtEY,OAAAC,kBAAiC,KAAQG,IAAA,WAAgB,YAAa89B,KtBgoJhE,SAAUp/B,EAAQD,GuBloJxB,GAAA6B,MAAuBA,cACvB5B,GAAAD,QAAA,SAAAogC,EAAA18B,GACA,MAAA7B,GAAAjB,KAAAw/B,EAAA18B,KvByoJM,SAAUzD,EAAQD,EAASO,GAEjC,YAiCA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GA9BvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GwB9pJxCI,EAAA1T,EAAA,GxBkqJI2T,EAAgB1R,EAAuByR,GwBjqJ3C9P,EAAA5D,EAAA,GACAmhC,EAAAnhC,EAAA,IxBsqJIohC,EAAgBn/B,EAAuBk/B,GwBpqJrCE,EAAwB,iBASTC,ExB4qJN,SAAUC,GwBjmJvB,QAAAD,GAAY/vB,IAAS,EAAA9N,EAAAhC,SAAA3B,KAAAwhC,EAAA,IAAA37B,IAAA,EAAA2I,EAAA7M,SAAA3B,KACnByhC,EAAAlhC,KAAAP,KAAMyR,GADa,OAEnB5L,GAAK67B,KAAM,EAAA59B,EAAAgE,UAAS,KACpBjC,EAAK87B,iBACL97B,EAAK+7B,iBAJc/7B,ExB4zJrB,OA1NA,EAAI6I,EAAW/M,SAAS6/B,EAAUC,IAClC,EAAInuB,EAAc3R,SAAS6/B,IACzBn+B,IAAK,UA2BLnC,IAAK,WwBhrJS,MAAO,SxBysJrBmC,IAAK,SACLnC,IAAK,WwBrrJQ,YxB2sJbmC,IAAK,aACLnC,IAAK,WwB1rJY,axBguJnBsgC,EAASjgC,UwBrsJTkX,ExBqsJuB,SwBrsJrByB,GACA,MAAOla,MAAKwX,IAAI0H,KAAKhF,IxB+sJvBsnB,EAASjgC,UwBvsJT65B,OxBusJ4B,WwBtsJ1B,MAAOp7B,OxBitJTwhC,EAASjgC,UwBzsJToF,OxBysJ4B,WwBrsJ1B,MAHA3G,MAAKwX,IAAI7Q,SACT3G,KAAKwG,gBACLxG,KAAK6hC,mBACE7hC,MxBqtJTwhC,EAASjgC,UwB3sJTugC,WxB2sJgC,SwB3sJrB7vB,EAASuhB,GAKlB,MAJIxzB,MAAKwX,KAAKxX,KAAK6hC,mBACnB7hC,KAAKwX,IAAM3D,EAAAlS,QAAEub,MAAM8B,IAAI/M,GAAWA,GAAU,EAAA4B,EAAAlS,SAAEsQ,GAC9CjS,KAAKgQ,GAAKhQ,KAAKwX,IAAI,IACF,IAAbgc,GAAoBxzB,KAAK4hC,iBACtB5hC,MxBstJTwhC,EAASjgC,UwB7sJTqgC,exB6sJoC,SwB7sJrBj9B,GACb,IAAMA,KAAWA,EAAS3E,KAAK2E,QAAU,MAAO3E,KAChDA,MAAK6hC,kBACL,KAAK,GAAMx+B,KAAOsB,GAAQ,CACxB,GAAIkD,GAASlD,EAAOtB,EAEpB,IADKwE,GAAUA,EAAOnF,cAAgB44B,WAAWzzB,EAAS7H,KAAK2E,EAAOtB,KACjEwE,EAAL,CAEA,GAAMgI,GAAQxM,EAAIwM,MAAM0xB,GACpBx6B,EAAY8I,EAAM,GAAIqK,EAAWrK,EAAM,EAC3C9I,IAAa,kBAAoB/G,KAAK0hC,IACrB,KAAbxnB,EACFla,KAAKwX,IAAIhS,GAAGuB,EAAWc,EAAOkP,KAAK/W,OAEnCA,KAAKwX,IAAIhS,GAAGuB,EAAWmT,EAAUrS,EAAOkP,KAAK/W,QAGjD,MAAOA,OxBotJTwhC,EAASjgC,UwB5sJTsgC,iBxB4sJsC,WwB1sJpC,MADA7hC,MAAKwX,IAAI1R,IAAI,kBAAoB9F,KAAK0hC,KAC/B1hC,MxBstJTwhC,EAASjgC,UwB9sJTogC,exB8sJoC,WwB7sJlC,GAAK3hC,KAAKgQ,GAMDhQ,KAAK8hC,WAAW9hC,KAAKgQ,IAAI,OANpB,CACZ,GAAMsnB,GAAQzjB,EAAAlS,QAAEsM,UAAWjO,KAAK+hC,WAC5B/hC,MAAK6G,KAAIywB,EAAMzwB,GAAK7G,KAAK6G,IACzB7G,KAAK6a,YAAWyc,EAAA,MAAiBt3B,KAAK6a,UAC1C,IAAMrD,GAAM1T,EAAAiP,YAAYqE,OAAOpX,KAAKyX,SAASsH,KAAKuY,EAClDt3B,MAAK8hC,WAAWtqB,GAAK,KxBotJlBgqB,GACPF,EAAc3/B,QAEhBhC,GAAQgC,QwB14Ja6/B,ExB24JrB5hC,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YyBl6JAN,GAAOD,YAAU,IzBy6JX,SAAUC,EAAQD,EAASO,G0Bz6JjC,GAAAu/B,GAAAv/B,EAAA,IACA8hC,EAAA9hC,EAAA,GACAN,GAAAD,QAAAO,EAAA,aAAAmB,EAAAgC,EAAAV,GACA,MAAA88B,GAAAC,EAAAr+B,EAAAgC,EAAA2+B,EAAA,EAAAr/B,KACC,SAAAtB,EAAAgC,EAAAV,GAED,MADAtB,GAAAgC,GAAAV,EACAtB,I1Bg7JM,SAAUzB,EAAQD,EAASO,G2Bt7JjC,GAAAmY,GAAAnY,EAAA,GACAN,GAAAD,QAAA,SAAAogC,GACA,IAAA1nB,EAAA0nB,GAAA,KAAAj+B,WAAAi+B,EAAA,qBACA,OAAAA,K3B67JM,SAAUngC,EAAQD,G4Bh8JxBC,EAAAD,QAAA,SAAA0W,GACA,IACA,QAAAA,IACG,MAAAb,GACH,Y5Bw8JM,SAAU5V,EAAQD,EAASO,G6B38JjC,GAAA+hC,GAAA/hC,EAAA,IACAgiC,EAAAhiC,EAAA,GAEAN,GAAAD,QAAAmB,OAAA62B,MAAA,SAAAgI,GACA,MAAAsC,GAAAtC,EAAAuC,K7Bm9JM,SAAUtiC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,G8B99JT,IAAA+Q,GAAAxT,EAAA,K9Bm+JIyT,EAEJ,SAAgC1R,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAFhDyR,EAIvC/T,GAAQgC,QAAUgS,EAAUhS,QAC5B/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,G+B5+JxBC,EAAAD,QAAA,SAAAogC,GACA,sBAAAA,GAAA,OAAAA,EAAA,kBAAAA,K/Bm/JM,SAAUngC,EAAQD,GgCp/JxBC,EAAAD,QAAA,SAAAwiC,EAAAx/B,GACA,OACA1B,aAAA,EAAAkhC,GACAnhC,eAAA,EAAAmhC,GACAv/B,WAAA,EAAAu/B,GACAx/B,WhC4/JM,SAAU/C,EAAQD,GiCjgKxBC,EAAAD,YjCugKM,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GkC7gKT,IAAAiB,GAAA1D,EAAA,KlCkhKI2D,EAEJ,SAAgC5B,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAFpD2B,EAInCjE,GAAQgC,QAAUkC,EAAMlC,QACxB/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GmCjiKT,IAAAq9B,GAAA9/B,EAAA,InCsiKI+/B,EAEJ,SAAgCh+B,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAFlD+9B,EAIrCrgC,GAAQgC,QAAUs+B,EAAQt+B,QAC1B/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAqCA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAlCvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIyQ,GAAUlT,EAAoB,IAE9BwR,EAAWvP,EAAuBiR,GAElC1P,EAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GoC1kKxC1P,EAAA5D,EAAA,GACA07B,EAAA17B,EAAA,IpC+kKI27B,EAAc15B,EAAuBy5B,GoC9kKzCE,EAAA57B,EAAA,IpCklKI67B,EAAgB55B,EAAuB25B,GoChlKtBsG,EpColKF,SAAUnG,GoCjlK3B,QAAAmG,GAAYpM,IAAM,EAAAryB,EAAAhC,SAAA3B,KAAAoiC,EAAA,IAAAv8B,IAAA,EAAA2I,EAAA7M,SAAA3B,KAChBi8B,EAAA17B,KAAAP,KAAMg2B,EAAKvkB,SADK,OAEhB5L,GAAKmwB,KAAOA,EACZnwB,EAAKw8B,SAAU,EACfx8B,EAAKy8B,aACLz8B,EAAKu1B,SALWv1B,EpCkoKlB,OAhDA,EAAI6I,EAAW/M,SAASygC,EAAcnG,IACtC,EAAI3oB,EAAc3R,SAASygC,IACzB/+B,IAAK,cACLnC,IAAK,WoCvlKa,MAAOlB,MAAKg2B,KAAKmG,gBpCwmKrCiG,EAAa7gC,UoC9lKb+gC,WpC8lKoC,aAEpCF,EAAa7gC,UoC9lKbghC,qBpC8lK8C,WoC9lKrB,UpCkmKzBH,EAAa7gC,UoChmKbihC,OpCgmKgC,WoC/lKzBxiC,KAAKqiC,UACRriC,KAAKsiC,aACLtiC,KAAKwX,IAAImL,OACT3iB,KAAKqiC,SAAU,IpComKnBD,EAAa7gC,UoChmKb8sB,QpCgmKiC,WoC/lK/BruB,KAAKwG,gBACLxG,KAAKwX,IAAIiM,OACTzjB,KAAKqiC,SAAU,GpCmmKjBD,EAAa7gC,UoChmKb47B,QpCgmKiC,WoC/lK/Bn9B,KAAK2G,UpCmmKPy7B,EAAa7gC,UoChmKb65B,OpCgmKgC,WoC/lK9B,MAAOp7B,OpCmmKFoiC,GACPvG,EAAYl6B,QAEdhC,GAAQgC,QoCxoKaygC,GAsCrB,EAAA1wB,EAAA/P,SAAcygC,EAAa7gC,UAA3Bw6B,EAAAp6B,SAEAygC,EAAan0B,OAAS,SAASE,GAC7B,OAAO,EAAArK,EAAAmK,QAAOm0B,EAAcj0B,IAG9Bi0B,EAAatwB,KAAO,OpCsmKpBlS,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAqCA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAlCvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIyQ,GAAUlT,EAAoB,IAE9BwR,EAAWvP,EAAuBiR,GAElC1P,EAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GqCrrKxC1P,EAAA5D,EAAA,GACAmhC,EAAAnhC,EAAA,IrC0rKIohC,EAAgBn/B,EAAuBk/B,GqCzrK3CvF,EAAA57B,EAAA,IrC6rKI67B,EAAgB55B,EAAuB25B,GqC3rKtB2G,ErC+rKJ,SAAUhB,GqC5rKzB,QAAAgB,GAAYzM,IAAM,EAAAryB,EAAAhC,SAAA3B,KAAAyiC,EAAA,IAAA58B,IAAA,EAAA2I,EAAA7M,SAAA3B,KAChByhC,EAAAlhC,KAAAP,KAAMg2B,EAAKvkB,SADK,OAEhB5L,GAAKmwB,KAAOA,EACZnwB,EAAKw8B,SAAU,EACfx8B,EAAKy8B,aAJWz8B,ErCwuKlB,OA3CA,EAAI6I,EAAW/M,SAAS8gC,EAAYhB,IACpC,EAAInuB,EAAc3R,SAAS8gC,IACzBp/B,IAAK,cACLnC,IAAK,WqClsKa,MAAOlB,MAAKg2B,KAAKmG,gBrCktKrCsG,EAAWlhC,UqCzsKX+gC,WrCysKkC,aAElCG,EAAWlhC,UqCzsKXihC,OrCysK8B,WqCxsKvBxiC,KAAKqiC,UACRriC,KAAKsiC,aACLtiC,KAAKqiC,SAAU,IrC6sKnBI,EAAWlhC,UqCzsKX8sB,QrCysK+B,WqCxsKzBruB,KAAKqiC,UACPriC,KAAKwG,gBACLxG,KAAKqiC,SAAU,IrC6sKnBI,EAAWlhC,UqCzsKXghC,qBrCysK4C,WqCzsKnB,UrC6sKzBE,EAAWlhC,UqC3sKX47B,QrC2sK+B,WqC1sK7Bn9B,KAAKwG,iBrC8sKAi8B,GACPnB,EAAc3/B,QAEhBhC,GAAQgC,QqC9uKa8gC,GAiCrB,EAAA/wB,EAAA/P,SAAc8gC,EAAWlhC,UAAzBw6B,EAAAp6B,SAEA8gC,EAAWx0B,OAAS,SAASE,GAC3B,OAAO,EAAArK,EAAAmK,QAAOw0B,EAAYt0B,IAG5Bs0B,EAAW3wB,KAAO,OrCitKlBlS,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,GsChwKxB,GAAAkH,GAAA,EACA67B,EAAApd,KAAAqd,QACA/iC,GAAAD,QAAA,SAAA0D,GACA,gBAAAiB,WAAAiL,KAAAlM,EAAA,GAAAA,EAAA,QAAAwD,EAAA67B,GAAA3qB,SAAA,OtCuwKM,SAAUnY,EAAQD,GuC1wKxBA,EAAA+/B,KAAckD,sBvCgxKR,SAAUhjC,EAAQD,EAASO,GwC/wKjC,GAAA4/B,GAAA5/B,EAAA,GACAN,GAAAD,QAAA,SAAAogC,GACA,MAAAj/B,QAAAg/B,EAAAC,MxCuxKM,SAAUngC,EAAQD,EAASO,GAEjC,YyC9wKA,SAAAiC,GAAAF,GAAsC,MAAAA,MAAAb,WAAAa,GAAuCN,QAAAM,GAZ7EtC,EAAAyB,YAAA,CAEA,IAAAyhC,GAAA3iC,EAAA,KAEA4iC,EAAA3gC,EAAA0gC,GAEAE,EAAA7iC,EAAA,KAEA8iC,EAAA7gC,EAAA4gC,GAEAE,EAAA,kBAAAD,GAAArhC,SAAA,gBAAAmhC,GAAAnhC,QAAA,SAAAM,GAAiH,aAAAA,IAAqB,SAAAA,GAAmB,MAAAA,IAAA,kBAAA+gC,GAAArhC,SAAAM,EAAAS,cAAAsgC,EAAArhC,SAAAM,IAAA+gC,EAAArhC,QAAAJ,UAAA,eAAAU,GAIzJtC,GAAAgC,QAAA,kBAAAqhC,GAAArhC,SAAA,WAAAshC,EAAAH,EAAAnhC,SAAA,SAAAM,GACA,gBAAAA,EAAA,YAAAghC,EAAAhhC,IACC,SAAAA,GACD,MAAAA,IAAA,kBAAA+gC,GAAArhC,SAAAM,EAAAS,cAAAsgC,EAAArhC,SAAAM,IAAA+gC,EAAArhC,QAAAJ,UAAA,kBAAAU,EAAA,YAAAghC,EAAAhhC,KzCkyKM,SAAUrC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAEJ,SAAgC1B,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAFzCyB,G0C5zKxCw/B,EACJ,QAAAA,MAAc,EAAAv/B,EAAAhC,SAAA3B,KAAAkjC,GACZljC,KAAKyR,WACLzR,KAAKmjC,mBACLnjC,KAAKojC,aAAgB/d,MAAO,EAAGG,OAAQ,GAI3C0d,GAAWG,YAEXH,EAAWI,YAAc,SAACC,GACxB,MAAOL,GAAWG,SAASE,KAAcL,EAAWG,SAASE,GAAY,GAAIL,K1Cu0K/EvjC,EAAQgC,Q0Cp0KOuhC,E1Cq0KftjC,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAqCA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAlCvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIyQ,GAAUlT,EAAoB,IAE9BwR,EAAWvP,EAAuBiR,GAElC1P,EAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,G2Cl3KxC1P,EAAA5D,EAAA,GACA07B,EAAA17B,EAAA,I3Cu3KI27B,EAAc15B,EAAuBy5B,G2Ct3KzCE,EAAA57B,EAAA,I3C03KI67B,EAAgB55B,EAAuB25B,G2Cj3KtB0H,E3C43KG,SAAUvH,G2Cz3KhC,QAAAuH,GAAY7kB,IAAW,EAAAhb,EAAAhC,SAAA3B,KAAAwjC,EAAA,IAAA39B,IAAA,EAAA2I,EAAA7M,SAAA3B,KACrBi8B,EAAA17B,KAAAP,KAAM2e,EAAUlN,SADK,OAErB5L,GAAK8Y,UAAYA,EACjB9Y,EAAKw8B,SAAU,EACfx8B,EAAKy8B,aAJgBz8B,E3Ci6KvB,OAvCA,EAAI6I,EAAW/M,SAAS6hC,EAAmBvH,IAC3C,EAAI3oB,EAAc3R,SAAS6hC,IACzBngC,IAAK,cACLnC,IAAK,W2C/3Ka,MAAOlB,MAAK2e,UAAUwd,gB3C+4K1CqH,EAAkBjiC,U2Ct4KlBihC,O3Cs4KqC,W2Cr4K9BxiC,KAAKqiC,UACRriC,KAAKsiC,aACLtiC,KAAKwX,IAAImL,OACT3iB,KAAKqiC,SAAU,I3C04KnBmB,EAAkBjiC,U2Ct4KlB8sB,Q3Cs4KsC,W2Cr4KpCruB,KAAKwG,gBACLxG,KAAKwX,IAAIiM,OACTzjB,KAAKqiC,SAAU,G3Cy4KjBmB,EAAkBjiC,U2Ct4KlB+gC,W3Cs4KyC,aAEzCkB,EAAkBjiC,U2Ct4KlB47B,Q3Cs4KsC,W2Cr4KpCn9B,KAAK2G,U3Cy4KA68B,GACP3H,EAAYl6B,QAIdhC,GAAQgC,Q2Cz6Ka6hC,GA+BrB,EAAA9xB,EAAA/P,SAAc6hC,EAAkBjiC,UAAhCw6B,EAAAp6B,SAEA6hC,EAAkBv1B,OAAS,SAASE,GAClC,OAAO,EAAArK,EAAAmK,QAAOu1B,EAAmBr1B,IAGnCq1B,EAAkB1xB,KAAO,Y3C84KzBlS,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAqCA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAlCvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIyQ,GAAUlT,EAAoB,IAE9BwR,EAAWvP,EAAuBiR,GAElC1P,EAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,G4Cj+KxC6tB,EAAAnhC,EAAA,I5Cq+KIohC,EAAgBn/B,EAAuBk/B,G4Cp+K3Cv9B,EAAA5D,EAAA,GACA47B,EAAA57B,EAAA,I5Cy+KI67B,EAAgB55B,EAAuB25B,G4Ch+KtB2H,E5C2+KC,SAAUhC,G4Cx+K9B,QAAAgC,GAAY9kB,IAAW,EAAAhb,EAAAhC,SAAA3B,KAAAyjC,EAAA,IAAA59B,IAAA,EAAA2I,EAAA7M,SAAA3B,KACrByhC,EAAAlhC,KAAAP,KAAM2e,EAAUlN,SADK,OAErB5L,GAAK8Y,UAAYA,EACjB9Y,EAAKw8B,SAAU,EACfx8B,EAAKy8B,aAJgBz8B,E5CghLvB,OAvCA,EAAI6I,EAAW/M,SAAS8hC,EAAiBhC,IACzC,EAAInuB,EAAc3R,SAAS8hC,IACzBpgC,IAAK,cACLnC,IAAK,W4C9+Ka,MAAOlB,MAAK2e,UAAUwd,gB5C8/K1CsH,EAAgBliC,U4Cr/KhBihC,O5Cq/KmC,W4Cp/K5BxiC,KAAKqiC,UACRriC,KAAKsiC,aACLtiC,KAAKqiC,SAAU,I5Cy/KnBoB,EAAgBliC,U4Cr/KhB8sB,Q5Cq/KoC,W4Cp/K9BruB,KAAKqiC,UACPriC,KAAKwG,gBACLxG,KAAKqiC,SAAU,I5Cy/KnBoB,EAAgBliC,U4Cr/KhB+gC,W5Cq/KuC,aAEvCmB,EAAgBliC,U4Cr/KhB47B,Q5Cq/KoC,W4Cp/KlCn9B,KAAKwG,iB5Cw/KAi9B,GACPnC,EAAc3/B,QAEhBhC,GAAQgC,Q4CthLa8hC,GA+BrB,EAAA/xB,EAAA/P,SAAc8hC,EAAgBliC,UAA9Bw6B,EAAAp6B,SAEA8hC,EAAgBx1B,OAAS,SAASE,GAChC,OAAO,EAAArK,EAAAmK,QAAOw1B,EAAiBt1B,IAGjCs1B,EAAgB3xB,KAAO,Y5C2/KvBlS,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,G6C9iLjC,GAAAwjC,GAAAxjC,EAAA,IACAN,GAAAD,QAAA,SAAAmX,EAAA6sB,EAAAxgC,GAEA,GADAugC,EAAA5sB,OACAvH,KAAAo0B,EAAA,MAAA7sB,EACA,QAAA3T,GACA,uBAAA67B,GACA,MAAAloB,GAAAvW,KAAAojC,EAAA3E,GAEA,wBAAAA,EAAAC,GACA,MAAAnoB,GAAAvW,KAAAojC,EAAA3E,EAAAC,GAEA,wBAAAD,EAAAC,EAAAx+B,GACA,MAAAqW,GAAAvW,KAAAojC,EAAA3E,EAAAC,EAAAx+B,IAGA,kBACA,MAAAqW,GAAAzS,MAAAs/B,EAAA59B,c7CujLM,SAAUnG,EAAQD,EAASO,G8CvkLjC,GAAAmY,GAAAnY,EAAA,GAGAN,GAAAD,QAAA,SAAAogC,EAAAxB,GACA,IAAAlmB,EAAA0nB,GAAA,MAAAA,EACA,IAAAjpB,GAAAkJ,CACA,IAAAue,GAAA,mBAAAznB,EAAAipB,EAAAhoB,YAAAM,EAAA2H,EAAAlJ,EAAAvW,KAAAw/B,IAAA,MAAA/f,EACA,uBAAAlJ,EAAAipB,EAAA6D,WAAAvrB,EAAA2H,EAAAlJ,EAAAvW,KAAAw/B,IAAA,MAAA/f,EACA,KAAAue,GAAA,mBAAAznB,EAAAipB,EAAAhoB,YAAAM,EAAA2H,EAAAlJ,EAAAvW,KAAAw/B,IAAA,MAAA/f,EACA,MAAAle,WAAA,6C9C+kLM,SAAUlC,EAAQD,G+CzlLxB,GAAAoY,MAAiBA,QAEjBnY,GAAAD,QAAA,SAAAogC,GACA,MAAAhoB,GAAAxX,KAAAw/B,GAAAh8B,MAAA,Q/CgmLM,SAAUnE,EAAQD,GgDlmLxBC,EAAAD,QAAA,SAAAogC,GACA,OAAAxwB,IAAAwwB,EAAA,KAAAj+B,WAAA,yBAAAi+B,EACA,OAAAA,KhD0mLM,SAAUngC,EAAQD,GiD5mLxB,GAAAkkC,GAAAve,KAAAue,KACAC,EAAAxe,KAAAwe,KACAlkC,GAAAD,QAAA,SAAAogC,GACA,MAAA5f,OAAA4f,MAAA,GAAAA,EAAA,EAAA+D,EAAAD,GAAA9D,KjDonLM,SAAUngC,EAAQD,EAASO,GkDxnLjC,GAAA6jC,GAAA7jC,EAAA,YACAu7B,EAAAv7B,EAAA,GACAN,GAAAD,QAAA,SAAA0D,GACA,MAAA0gC,GAAA1gC,KAAA0gC,EAAA1gC,GAAAo4B,EAAAp4B,MlD+nLM,SAAUzD,EAAQD,EAASO,GmDloLjC,GAAA4nB,GAAA5nB,EAAA,IAEAs7B,EAAA1T,EADA,wBACAA,EADA,yBAEAloB,GAAAD,QAAA,SAAA0D,GACA,MAAAm4B,GAAAn4B,KAAAm4B,EAAAn4B,SnDyoLM,SAAUzD,EAAQD,GoD5oLxBC,EAAAD,QAAA,gGAEA8E,MAAA,MpDmpLM,SAAU7E,EAAQD,GqDtpLxBA,EAAA+/B,EAAA5+B,OAAAkjC,uBrD4pLM,SAAUpkC,EAAQD,EAASO,GsD5pLjCN,EAAAD,SAAkBgC,QAAAzB,EAAA,KAAAkB,YAAA,ItDkqLZ,SAAUxB,EAAQD,GuDlqLxBC,EAAAD,SAAA,GvDwqLM,SAAUC,EAAQD,EAASO,GwDvqLjC,GAAAo/B,GAAAp/B,EAAA,IACA+jC,EAAA/jC,EAAA,KACAgiC,EAAAhiC,EAAA,IACAgkC,EAAAhkC,EAAA,gBACAikC,EAAA,aAIAC,EAAA,WAEA,GAIAC,GAJAC,EAAApkC,EAAA,cACAG,EAAA6hC,EAAA/+B,MAcA,KAVAmhC,EAAA1hB,MAAAtJ,QAAA,OACApZ,EAAA,KAAAuZ,YAAA6qB,GACAA,EAAA5zB,IAAA,cAGA2zB,EAAAC,EAAAC,cAAA/zB,SACA6zB,EAAArX,OACAqX,EAAAG,MAAAC,uCACAJ,EAAAK,QACAN,EAAAC,EAAAlG,EACA99B,WAAA+jC,GAAA,UAAAlC,EAAA7hC,GACA,OAAA+jC,KAGAxkC,GAAAD,QAAAmB,OAAAsW,QAAA,SAAAuoB,EAAAgF,GACA,GAAAjyB,EAQA,OAPA,QAAAitB,GACAwE,EAAA,UAAA7E,EAAAK,GACAjtB,EAAA,GAAAyxB,GACAA,EAAA,eAEAzxB,EAAAwxB,GAAAvE,GACGjtB,EAAA0xB,QACH70B,KAAAo1B,EAAAjyB,EAAAuxB,EAAAvxB,EAAAiyB,KxDgrLM,SAAU/kC,EAAQD,EAASO,GyDvtLjC,GAAA0kC,GAAA1kC,EAAA,IAAAw/B,EACAhe,EAAAxhB,EAAA,IACA2kC,EAAA3kC,EAAA,kBAEAN,GAAAD,QAAA,SAAAogC,EAAA+E,EAAAC,GACAhF,IAAAre,EAAAqe,EAAAgF,EAAAhF,IAAAx+B,UAAAsjC,IAAAD,EAAA7E,EAAA8E,GAAkE7jC,cAAA,EAAA2B,MAAAmiC,MzD8tL5D,SAAUllC,EAAQD,EAASO,G0DnuLjCP,EAAA+/B,EAAAx/B,EAAA,K1DyuLM,SAAUN,EAAQD,EAASO,G2DzuLjC,GAAA4nB,GAAA5nB,EAAA,IACA81B,EAAA91B,EAAA,GACA8kC,EAAA9kC,EAAA,IACA+kC,EAAA/kC,EAAA,IACAa,EAAAb,EAAA,IAAAw/B,CACA9/B,GAAAD,QAAA,SAAAgB,GACA,GAAAukC,GAAAlP,EAAA0F,SAAA1F,EAAA0F,OAAAsJ,KAA0Dld,EAAA4T,WAC1D,MAAA/6B,EAAAwkC,OAAA,IAAAxkC,IAAAukC,IAAAnkC,EAAAmkC,EAAAvkC,GAAgFgC,MAAAsiC,EAAAvF,EAAA/+B,O3DgvL1E,SAAUf,EAAQD,EAASO,G4DvvLjC,GAAAklC,GAAAllC,EAAA,IACA8hC,EAAA9hC,EAAA,IACAmlC,EAAAnlC,EAAA,IACAs/B,EAAAt/B,EAAA,IACAwhB,EAAAxhB,EAAA,IACAq/B,EAAAr/B,EAAA,IACAolC,EAAAxkC,OAAAykC,wBAEA5lC,GAAA+/B,EAAAx/B,EAAA,IAAAolC,EAAA,SAAA3F,EAAAlB,GAGA,GAFAkB,EAAA0F,EAAA1F,GACAlB,EAAAe,EAAAf,GAAA,GACAc,EAAA,IACA,MAAA+F,GAAA3F,EAAAlB,GACG,MAAAjpB,IACH,GAAAkM,EAAAie,EAAAlB,GAAA,MAAAuD,IAAAoD,EAAA1F,EAAAn/B,KAAAo/B,EAAAlB,GAAAkB,EAAAlB,M5D8vLM,SAAU7+B,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,G6DlxLT,IAAA6iC,GAAAtlC,EAAA,K7DuxLIulC,EAEJ,SAAgCxjC,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAFnDujC,EAIpC7lC,GAAQgC,S6DzxLS+jC,gB7D0xLjB9lC,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,G8DrxLxB,QAAAgmC,KACA,SAAAlzB,OAAA,mCAEA,QAAAmzB,KACA,SAAAnzB,OAAA,qCAsBA,QAAAozB,GAAA1qB,GACA,GAAA2qB,IAAAvzB,WAEA,MAAAA,YAAA4I,EAAA,EAGA,KAAA2qB,IAAAH,IAAAG,IAAAvzB,WAEA,MADAuzB,GAAAvzB,WACAA,WAAA4I,EAAA,EAEA,KAEA,MAAA2qB,GAAA3qB,EAAA,GACK,MAAA3F,GACL,IAEA,MAAAswB,GAAAvlC,KAAA,KAAA4a,EAAA,GACS,MAAA3F,GAET,MAAAswB,GAAAvlC,KAAAP,KAAAmb,EAAA,KAMA,QAAA4qB,GAAAC,GACA,GAAAC,IAAAtzB,aAEA,MAAAA,cAAAqzB,EAGA,KAAAC,IAAAL,IAAAK,IAAAtzB,aAEA,MADAszB,GAAAtzB,aACAA,aAAAqzB,EAEA,KAEA,MAAAC,GAAAD,GACK,MAAAxwB,GACL,IAEA,MAAAywB,GAAA1lC,KAAA,KAAAylC,GACS,MAAAxwB,GAGT,MAAAywB,GAAA1lC,KAAAP,KAAAgmC,KAYA,QAAAE,KACAC,GAAAC,IAGAD,GAAA,EACAC,EAAAjjC,OACAkjC,EAAAD,EAAA9hC,OAAA+hC,GAEAC,GAAA,EAEAD,EAAAljC,QACAojC,KAIA,QAAAA,KACA,IAAAJ,EAAA,CAGA,GAAAt0B,GAAAg0B,EAAAK,EACAC,IAAA,CAGA,KADA,GAAAhsB,GAAAksB,EAAAljC,OACAgX,GAAA,CAGA,IAFAisB,EAAAC,EACAA,OACAC,EAAAnsB,GACAisB,GACAA,EAAAE,GAAAxhC,KAGAwhC,IAAA,EACAnsB,EAAAksB,EAAAljC,OAEAijC,EAAA,KACAD,GAAA,EACAJ,EAAAl0B,IAiBA,QAAA20B,GAAArrB,EAAAxC,GACA3Y,KAAAmb,MACAnb,KAAA2Y,QAYA,QAAA+H,MAhKA,GAOAolB,GACAG,EARA1R,EAAA30B,EAAAD,YAgBA,WACA,IAEAmmC,EADA,kBAAAvzB,YACAA,WAEAozB,EAEK,MAAAnwB,GACLswB,EAAAH,EAEA,IAEAM,EADA,kBAAAtzB,cACAA,aAEAizB,EAEK,MAAApwB,GACLywB,EAAAL,KAuDA,IAEAQ,GAFAC,KACAF,GAAA,EAEAG,GAAA,CAyCA/R,GAAAkS,SAAA,SAAAtrB,GACA,GAAAvW,GAAA,GAAAZ,OAAA+B,UAAA5C,OAAA,EACA,IAAA4C,UAAA5C,OAAA,EACA,OAAA9C,GAAA,EAAuBA,EAAA0F,UAAA5C,OAAsB9C,IAC7CuE,EAAAvE,EAAA,GAAA0F,UAAA1F,EAGAgmC,GAAA1gC,KAAA,GAAA6gC,GAAArrB,EAAAvW,IACA,IAAAyhC,EAAAljC,QAAAgjC,GACAN,EAAAU,IASAC,EAAAjlC,UAAAuD,IAAA,WACA9E,KAAAmb,IAAA9W,MAAA,KAAArE,KAAA2Y,QAEA4b,EAAA0M,MAAA,UACA1M,EAAAmS,SAAA,EACAnS,EAAAoS,OACApS,EAAAqS,QACArS,EAAA0B,QAAA,GACA1B,EAAAsS,YAIAtS,EAAA/uB,GAAAkb,EACA6T,EAAAuS,YAAApmB,EACA6T,EAAA3uB,KAAA8a,EACA6T,EAAAzuB,IAAA4a,EACA6T,EAAAwS,eAAArmB,EACA6T,EAAAyS,mBAAAtmB,EACA6T,EAAA0S,KAAAvmB,EAEA6T,EAAA2S,QAAA,SAAAvmC,GACA,SAAA8R,OAAA,qCAGA8hB,EAAA4S,IAAA,WAA2B,WAC3B5S,EAAA6S,MAAA,SAAAC,GACA,SAAA50B,OAAA,mCAEA8hB,EAAA+S,MAAA,WAA4B,W9DuyLtB,SAAU1nC,EAAQD,EAASO,GAEjC,YAeA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAZvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,G+D79L9CgC,EAAAxF,EAAA,G/Di+LI29B,EAAW17B,EAAuBuD,G+D/9LhCf,EAAS,GAAAk5B,GAAAl8B,QAEM4lC,E/Dy+LN,QAASA,MACtB,EAAI5jC,EAAiBhC,SAAS3B,KAAMunC,GAGtC5nC,GAAQgC,Q+D7+La4lC,EAGrBA,EAAS/hC,GAAK,SAAS7E,EAAMqE,EAAUS,GACrCd,EAAOa,GAAG7E,EAAMqE,EAAUS,IAI5B8hC,EAAS3hC,KAAO,SAASjF,EAAMqE,EAAUS,GACvCd,EAAOiB,KAAKjF,EAAMqE,EAAUS,IAI9B8hC,EAASzhC,IAAM,SAASnF,EAAMqE,EAAUS,GACtCd,EAAOmB,IAAInF,EAAMqE,EAAUS,IAI7B8hC,EAASnhC,QAAU,SAASzF,GAAe,OAAA2N,GAAAvI,UAAA5C,OAANqkC,EAAMxjC,MAAAsK,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAANi5B,EAAMj5B,EAAA,GAAAxI,UAAAwI,EACzC5J,GAAOyB,QAAQ/B,MAAMM,GAAShE,GAA9B2D,OAAuCkjC,KAIzCD,EAAS/gC,cAAgB,SAASvE,EAAKtB,EAAMqE,GAC3CL,EAAO6B,cAAcvE,EAAKtB,EAAMqE,I/Do/LlCpF,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,GgE5hMxBC,EAAAD,QAAA,0IhEkiMM,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GiExiMT,IAAA8kC,GAAAvnC,EAAA,KjE6iMIwnC,EAEJ,SAAgCzlC,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAF5CwlC,EAI3C9nC,GAAQgC,QAAU+lC,EAAc/lC,QAChC/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GkEtjMjCN,EAAAD,SAAAO,EAAA,MAAAA,EAAA,eACA,MAAmG,IAAnGY,OAAAC,eAAAb,EAAA,gBAAsEgB,IAAA,WAAgB,YAAa89B,KlE6jM7F,SAAUp/B,EAAQD,EAASO,GmE9jMjC,GAAAmY,GAAAnY,EAAA,IACAsQ,EAAAtQ,EAAA,IAAAsQ,SAEAgR,EAAAnJ,EAAA7H,IAAA6H,EAAA7H,EAAA0B,cACAtS,GAAAD,QAAA,SAAAogC,GACA,MAAAve,GAAAhR,EAAA0B,cAAA6tB,QnEqkMM,SAAUngC,EAAQD,EAASO,GoE1kMjC,GAAAwhB,GAAAxhB,EAAA,IACAmlC,EAAAnlC,EAAA,IACAynC,EAAAznC,EAAA,SACAgkC,EAAAhkC,EAAA,eAEAN,GAAAD,QAAA,SAAA0B,EAAAmD,GACA,GAGAnB,GAHAs8B,EAAA0F,EAAAhkC,GACAhB,EAAA,EACAqS,IAEA,KAAArP,IAAAs8B,GAAAt8B,GAAA6gC,GAAAxiB,EAAAie,EAAAt8B,IAAAqP,EAAA/M,KAAAtC,EAEA,MAAAmB,EAAArB,OAAA9C,GAAAqhB,EAAAie,EAAAt8B,EAAAmB,EAAAnE,SACAsnC,EAAAj1B,EAAArP,IAAAqP,EAAA/M,KAAAtC,GAEA,OAAAqP,KpEilMM,SAAU9S,EAAQD,EAASO,GqE/lMjC,GAAA0nC,GAAA1nC,EAAA,GACAN,GAAAD,QAAAmB,OAAA,KAAA8hC,qBAAA,GAAA9hC,OAAA,SAAAi/B,GACA,gBAAA6H,EAAA7H,KAAAt7B,MAAA,IAAA3D,OAAAi/B,KrEumMM,SAAUngC,EAAQD,EAASO,GsEzmMjC,GAAA2nC,GAAA3nC,EAAA,IACA4nC,EAAAxiB,KAAAwiB,GACAloC,GAAAD,QAAA,SAAAogC,GACA,MAAAA,GAAA,EAAA+H,EAAAD,EAAA9H,GAAA,sBtEinMM,SAAUngC,EAAQD,EAASO,GuEpnMjC,GAAA89B,GAAA99B,EAAA,IACA81B,EAAA91B,EAAA,GACA6nC,EAAA7nC,EAAA,GACAN,GAAAD,QAAA,SAAAqoC,EAAA3xB,GACA,GAAAS,IAAAkf,EAAAl1B,YAA8BknC,IAAAlnC,OAAAknC,GAC9BC,IACAA,GAAAD,GAAA3xB,EAAAS,GACAknB,IAAAO,EAAAP,EAAAG,EAAA4J,EAAA,WAAmDjxB,EAAA,KAAS,SAAAmxB,KvE4nMtD,SAAUroC,EAAQD,EAASO,GAEjC,YwEroMA,IAAAgoC,GAAAhoC,EAAA,QAGAA,GAAA,IAAA2X,OAAA,kBAAAswB,GACAnoC,KAAAooC,GAAAvwB,OAAAswB,GACAnoC,KAAAqoC,GAAA,GAEC,WACD,GAEAC,GAFA3I,EAAA3/B,KAAAooC,GACA/gC,EAAArH,KAAAqoC,EAEA,OAAAhhC,IAAAs4B,EAAAx8B,QAA+BR,UAAA4M,GAAAwf,MAAA,IAC/BuZ,EAAAJ,EAAAvI,EAAAt4B,GACArH,KAAAqoC,IAAAC,EAAAnlC,QACUR,MAAA2lC,EAAAvZ,MAAA,OxE4oMJ,SAAUnvB,EAAQD,EAASO,GAEjC,YyE5pMA,IAAA8kC,GAAA9kC,EAAA,IACA89B,EAAA99B,EAAA,IACAqoC,EAAAroC,EAAA,IACAujB,EAAAvjB,EAAA,IACAwhB,EAAAxhB,EAAA,IACAsoC,EAAAtoC,EAAA,IACAuoC,EAAAvoC,EAAA,KACAwoC,EAAAxoC,EAAA,IACAqY,EAAArY,EAAA,KACAyoC,EAAAzoC,EAAA,gBACA0oC,OAAAjR,MAAA,WAAAA,QAKAkR,EAAA,WAA4B,MAAA7oC,MAE5BJ,GAAAD,QAAA,SAAAmpC,EAAAC,EAAAlnC,EAAAiiB,EAAAklB,EAAAC,EAAAC,GACAT,EAAA5mC,EAAAknC,EAAAjlB,EACA,IAeAqlB,GAAA9lC,EAAA+lC,EAfAC,EAAA,SAAAC,GACA,IAAAV,GAAAU,IAAAC,GAAA,MAAAA,GAAAD,EACA,QAAAA,GACA,IAVA,OAWA,IAVA,SAUA,kBAA4C,UAAAznC,GAAA7B,KAAAspC,IACvC,kBAA2B,UAAAznC,GAAA7B,KAAAspC,KAEhCzE,EAAAkE,EAAA,YACAS,EAdA,UAcAR,EACAS,GAAA,EACAF,EAAAT,EAAAvnC,UACAmoC,EAAAH,EAAAZ,IAAAY,EAnBA,eAmBAP,GAAAO,EAAAP,GACAW,EAAAD,GAAAL,EAAAL,GACAY,EAAAZ,EAAAQ,EAAAH,EAAA,WAAAM,MAAAp6B,GACAs6B,EAAA,SAAAd,EAAAQ,EAAAO,SAAAJ,GAwBA,IArBAG,IACAT,EAAA7wB,EAAAsxB,EAAAtpC,KAAA,GAAAuoC,QACAhoC,OAAAS,YAEAmnC,EAAAU,EAAAvE,GAAA,GAEAG,GAAAtjB,EAAA0nB,EAAAT,IAAAllB,EAAA2lB,EAAAT,EAAAE,IAIAW,GAAAE,GAjCA,WAiCAA,EAAA/oC,OACA8oC,GAAA,EACAE,EAAA,WAAiC,MAAAD,GAAAnpC,KAAAP,QAGjCglC,IAAAkE,IAAAN,IAAAa,GAAAF,EAAAZ,IACAllB,EAAA8lB,EAAAZ,EAAAgB,GAGAnB,EAAAO,GAAAY,EACAnB,EAAA3D,GAAAgE,EACAG,EAMA,GALAG,GACAvoB,OAAA4oB,EAAAG,EAAAN,EA9CA,UA+CA1R,KAAAsR,EAAAU,EAAAN,EAhDA,QAiDAS,QAAAF,GAEAV,EAAA,IAAA7lC,IAAA8lC,GACA9lC,IAAAkmC,IAAAhB,EAAAgB,EAAAlmC,EAAA8lC,EAAA9lC,QACK26B,KAAAS,EAAAT,EAAAG,GAAAyK,GAAAa,GAAAV,EAAAI,EAEL,OAAAA,KzEmqMM,SAAUvpC,EAAQD,EAASO,G0EvuMjCN,EAAAD,QAAAO,EAAA,K1E6uMM,SAAUN,EAAQD,EAASO,G2E5uMjC,GAAA+hC,GAAA/hC,EAAA,IACA6pC,EAAA7pC,EAAA,IAAAoE,OAAA,qBAEA3E,GAAA+/B,EAAA5+B,OAAAkpC,qBAAA,SAAArK,GACA,MAAAsC,GAAAtC,EAAAoK,K3EovMM,SAAUnqC,EAAQD,EAASO,G4EzvMjCN,EAAAD,SAAkBgC,QAAAzB,EAAA,KAAAkB,YAAA,I5E+vMZ,SAAUxB,EAAQD,EAASO,G6E/vMjCN,EAAAD,SAAkBgC,QAAAzB,EAAA,KAAAkB,YAAA,I7EqwMZ,SAAUxB,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,G8E3wMT,IAAAsnC,GAAA/pC,EAAA,K9EgxMIgqC,EAEJ,SAAgCjoC,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAFnDgoC,EAIpCtqC,GAAQgC,QAAUuoC,EAAOvoC,QACzB/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,G+E/xMT,IAAAwnC,GAAAjqC,EAAA,K/EoyMIkqC,EAEJ,SAAgCnoC,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAF9CkoC,EAIzCxqC,GAAQgC,QAAUyoC,EAAYzoC,QAC9B/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAmCA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAhCvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GgFp0MxC9N,EAAAxF,EAAA,GhFw0MI29B,EAAW17B,EAAuBuD,GgFv0MtC27B,EAAAnhC,EAAA,IhF20MIohC,EAAgBn/B,EAAuBk/B,GgF10M3Cz9B,EAAA1D,EAAA,IhF80MI2D,EAAQ1B,EAAuByB,GgFr0M7BymC,EhFg1MY,SAAU5I,GgFj0M1B,QAAA4I,KAA8B,GAAlB54B,GAAkB1L,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,MAANiwB,EAAMjwB,UAAA,MAAApC,EAAAhC,SAAA3B,KAAAqqC,EAAA,IAAAxkC,IAAA,EAAA2I,EAAA7M,SAAA3B,KAC5ByhC,EAAAlhC,KAAAP,KAAMyR,GADsB,OAE5B5L,GAAKmwB,KAAOA,EAFgBnwB,EhFm3M9B,OAjDA,EAAI6I,EAAW/M,SAAS0oC,EAAa5I,IACrC,EAAInuB,EAAc3R,SAAS0oC,IACzBhnC,IAAK,OACLnC,IAAK,WgFn1MM,MAAO,ahF61MlBmC,IAAK,SACLnC,IAAK,WgFv1ML,OACE0/B,MAAO,QACP0J,KAAM,OACNC,KAAM,YhF+2MVF,EAAY9oC,UgFj2MZ4+B,YhFi2MoC,SgFj2MxBrtB,GACV,IAAK9S,KAAKg2B,KAER,WADAnyB,GAAAlC,QAAIy/B,KAAKphC,KAAKW,KAAM,2BAA4BmS,EAGlD9S,MAAKg2B,KAAK5vB,QAAQy3B,EAAAl8B,QAAO6G,MAAOsK,IhFo2M3Bu3B,GACP/I,EAAc3/B,QAEhBhC,GAAQgC,QgFn2MO0oC,EhFo2MfzqC,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GiF35MT,IAAA6nC,GAAAtqC,EAAA,KjFg6MIuqC,EAEJ,SAAgCxoC,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAF1CuoC,EAI7C7qC,GAAQgC,QAAU8oC,EAAgB9oC,QAClC/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,GkFz6MxBC,EAAAD,QAAA,SAAA4pB,GACA,sBAAAA,GACAA,GAGA,eAAAhlB,KAAAglB,KACAA,IAAAxlB,MAAA,OAIA,cAAAQ,KAAAglB,GACA,IAAAA,EAAAnT,QAAA,YAAAA,QAAA,iBAGAmT,KlFi7MM,SAAU3pB,EAAQD,GmF/7MxBC,EAAAD,QAAA,qDnFq8MM,SAAUC,EAAQD,GoFr8MxBC,EAAAD,QAAA,oNpF28MM,SAAUC,EAAQD,EAASO,GAEjC,YAeA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAZvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GqF78MT,IAAAiR,GAAA1T,EAAA,GrFk9MI2T,EAAgB1R,EAAuByR,GqFj9M3C82B,EAAAxqC,EAAA,IrFq9MIyqC,EAAaxoC,EAAuBuoC,GqFn9MlCE,GACJC,YAAa,SAASjoB,GAAgC,GAAzBnR,GAAyB1L,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,IAAf+kC,QAAS,GAC9C,QAAO,EAAAj3B,EAAAlS,SAAE,wCAAwC+c,MAAK,EAAAisB,EAAAhpC,SAASihB,EAAM7K,YAAYtG,KrFi+MrF9R,GAAQgC,QqF79MOipC,ErF89MfhrC,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GsFr/MT,IAAAooC,GAAA7qC,EAAA,KtF0/MI8qC,EAEJ,SAAgC/oC,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAFjD8oC,EAItCprC,GAAQgC,QAAUqpC,EAASrpC,QAC3B/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YuFngNAP,GAAAyB,YAAA,CAEA,IAAA6pC,GAAA/qC,EAAA,IAEAgrC,EAEA,SAAAjpC,GAAsC,MAAAA,MAAAb,WAAAa,GAAuCN,QAAAM,IAF7EgpC,EAIAtrC,GAAAgC,QAAA,SAAAwP,GACA,GAAAnN,MAAAqW,QAAAlJ,GAAA,CACA,OAAA9Q,GAAA,EAAA8qC,EAAAnnC,MAAAmN,EAAAhO,QAA6C9C,EAAA8Q,EAAAhO,OAAgB9C,IAC7D8qC,EAAA9qC,GAAA8Q,EAAA9Q,EAGA,OAAA8qC,GAEA,SAAAD,EAAAvpC,SAAAwP,KvF4gNM,SAAUvR,EAAQD,EAASO,GwF9hNjCN,EAAAD,SAAkBgC,QAAAzB,EAAA,KAAAkB,YAAA,IxFoiNZ,SAAUxB,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GyF1iNT,IAAAyoC,GAAAlrC,EAAA,KzF+iNImrC,EAEJ,SAAgCppC,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAF5CmpC,EAI3CzrC,GAAQgC,QAAU0pC,EAAc1pC,QAChC/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,G0F9jNT,IAAA2oC,GAAAprC,EAAA,K1FmkNIqrC,EAEJ,SAAgCtpC,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAF/CqpC,EAIxC3rC,GAAQgC,QAAU4pC,EAAW5pC,QAC7B/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,G2FllNT,IAAA6oC,GAAAtrC,EAAA,K3FulNIurC,EAEJ,SAAgCxpC,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAFlDupC,EAIrC7rC,GAAQgC,QAAU8pC,EAAQ9pC,QAC1B/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,G4FtmNT,IAAA+oC,GAAAxrC,EAAA,K5F2mNIyrC,EAEJ,SAAgC1pC,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAFnCypC,EAIpD/rC,GAAQgC,QAAUgqC,EAAuBhqC,QACzC/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,G6F1nNT,IAAAipC,GAAA1rC,EAAA,K7F+nNI2rC,EAEJ,SAAgC5pC,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAF9C2pC,EAIzCjsC,GAAQgC,QAAUkqC,EAAYlqC,QAC9B/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,G8F9oNT,IAAAmpC,GAAA5rC,EAAA,K9FmpNI6rC,EAEJ,SAAgC9pC,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAFjD6pC,EAItCnsC,GAAQgC,QAAUoqC,EAASpqC,QAC3B/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,G+FlqNT,IAAAqpC,GAAA9rC,EAAA,K/FuqNI+rC,EAEJ,SAAgChqC,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAFzC+pC,EAI9CrsC,GAAQgC,QAAUsqC,EAAiBtqC,QACnC/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GgGtrNT,IAAAupC,GAAAhsC,EAAA,KhG2rNIisC,EAEJ,SAAgClqC,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAF3CiqC,EAI5CvsC,GAAQgC,QAAUwqC,EAAexqC,QACjC/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GiG1sNT,IAAAypC,GAAAlsC,EAAA,KjG+sNImsC,EAEJ,SAAgCpqC,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAFhDmqC,EAIvCzsC,GAAQgC,QAAU0qC,EAAU1qC,QAC5B/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YA2JA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAxJvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GkG1tNT,IAAA2pC,GAAApsC,EAAA,IlG+tNIqsC,EAAWpqC,EAAuBmqC,GkG9tNtCxoC,EAAA5D,EAAA,GlGkuNIssC,EAAUrqC,EAAuB2B,GkGjuNrC4B,EAAAxF,EAAA,GlGquNI29B,EAAW17B,EAAuBuD,GkGpuNtC+mC,EAAAvsC,EAAA,IlGwuNIwsC,EAAavqC,EAAuBsqC,GkGvuNxCE,EAAAzsC,EAAA,IlG2uNI0sC,EAAqBzqC,EAAuBwqC,GkG1uNhDE,EAAA3sC,EAAA,IlG8uNI4sC,EAAgB3qC,EAAuB0qC,GkG7uN3CE,EAAA7sC,EAAA,IlGivNI8sC,EAAmB7qC,EAAuB4qC,GkGhvN9CE,EAAA/sC,EAAA,IlGovNIgtC,EAAwB/qC,EAAuB8qC,GkGnvNnD5L,EAAAnhC,EAAA,IlGuvNIohC,EAAgBn/B,EAAuBk/B,GkGtvN3CzF,EAAA17B,EAAA,IlG0vNI27B,EAAc15B,EAAuBy5B,GkGzvNzCloB,EAAAxT,EAAA,IlG6vNIyT,EAAYxR,EAAuBuR,GkG5vNvCy2B,EAAAjqC,EAAA,IlGgwNIkqC,EAAcjoC,EAAuBgoC,GkG/vNzCF,EAAA/pC,EAAA,IlGmwNIgqC,EAAS/nC,EAAuB8nC,GkGlwNpCjK,EAAA9/B,EAAA,IlGswNI+/B,EAAU99B,EAAuB69B,GkGrwNrC+K,EAAA7qC,EAAA,IlGywNI8qC,EAAW7oC,EAAuB4oC,GkGxwNtCoC,EAAAjtC,EAAA,IlG4wNIktC,EAAajrC,EAAuBgrC,GkG3wNxC3C,EAAAtqC,EAAA,IlG+wNIuqC,EAAkBtoC,EAAuBqoC,GkG9wN7C6C,EAAAntC,EAAA,IlGkxNIotC,EAAgBnrC,EAAuBkrC,GkGjxN3CE,EAAArtC,EAAA,IlGqxNIstC,EAAwBrrC,EAAuBorC,GkGpxNnDE,EAAAvtC,EAAA,IlGwxNIwtC,EAAUvrC,EAAuBsrC,GkGvxNrCE,EAAAztC,EAAA,IlG2xNI0tC,EAAYzrC,EAAuBwrC,GkG1xNvCE,EAAA3tC,EAAA,IlG8xNI4tC,EAAQ3rC,EAAuB0rC,GkG7xNnCzC,EAAAlrC,EAAA,IlGiyNImrC,EAAgBlpC,EAAuBipC,GkGhyN3C3D,EAAAvnC,EAAA,IlGoyNIwnC,EAAgBvlC,EAAuBslC,GkGnyN3C6D,EAAAprC,EAAA,IlGuyNIqrC,EAAappC,EAAuBmpC,GkGtyNxCE,GAAAtrC,EAAA,IlG0yNIurC,GAAUtpC,EAAuBqpC,IkGzyNrCQ,GAAA9rC,EAAA,IlG6yNI+rC,GAAmB9pC,EAAuB6pC,IkG5yN9CE,GAAAhsC,EAAA,IlGgzNIisC,GAAiBhqC,EAAuB+pC,IkG/yN5CE,GAAAlsC,EAAA,IlGmzNImsC,GAAYlqC,EAAuBiqC,IkGlzNvCxoC,GAAA1D,EAAA,IlGszNI2D,GAAQ1B,EAAuByB,IkGrzNnCkoC,GAAA5rC,EAAA,IlGyzNI6rC,GAAW5pC,EAAuB2pC,IkGxzNtCJ,GAAAxrC,EAAA,IlG4zNIyrC,GAAyBxpC,EAAuBupC,IkG3zNpDE,GAAA1rC,EAAA,IlG+zNI2rC,GAAc1pC,EAAuBypC,IkG9zNzCmC,GAAA7tC,EAAA,IlGk0NI8tC,GAAW7rC,EAAuB4rC,IkGj0NtCE,GAAA/tC,EAAA,IlGq0NIguC,GAAW/rC,EAAuB8rC,IkGp0NtCvD,GAAAxqC,EAAA,IlGw0NIyqC,GAAaxoC,EAAuBuoC,IkGt0NxC92B,GAAA1T,EAAA,GlG00NI2T,GAAgB1R,EAAuByR,GAQ3CjU,GAAQgC,SkG70NNwsC,iBACA5G,mBACAhiC,iBACA6oC,kBACAlL,qBACAmL,uBACA5K,0BACAD,4BACAf,qBACAL,uBACApG,mBACAsS,oBACAC,eACAlE,sBACAmE,iBACA1Q,qBACA0D,mBACAiN,gBACAC,4BACAC,gBACAC,kBACAC,cACAC,qBACAC,qBACAC,kBACAC,gBACAC,8BACAC,uBACAC,mBACAC,eACAC,kBACAC,oCACAC,2BACA5E,kBACA6E,kBACAxZ,QAtCc,UAuCdsF,oBACA9iB,clGg1NF7Y,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAiEA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GA9DvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIyQ,GAAUlT,EAAoB,IAE9BwR,EAAWvP,EAAuBiR,GAElC5P,EAAQtD,EAAoB,IAE5BuD,EAAStB,EAAuBqB,GAEhCE,EAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GmGl8NxC1P,EAAA5D,EAAA,GAEAmhC,EAAAnhC,EAAA,InGs8NIohC,EAAgBn/B,EAAuBk/B,GmGr8N3C37B,EAAAxF,EAAA,GnGy8NI29B,EAAW17B,EAAuBuD,GmGx8NtCgO,EAAAxT,EAAA,InG48NIyT,EAAYxR,EAAuBuR,GmG38NvCg8B,EAAAxvC,EAAA,KnG+8NIyvC,EAAiBxtC,EAAuButC,GmG98N5C3E,EAAA7qC,EAAA,InGk9NI8qC,EAAW7oC,EAAuB4oC,GmGj9NtCsC,EAAAntC,EAAA,InGq9NIotC,EAAgBnrC,EAAuBkrC,GmGp9N3CvR,EAAA57B,EAAA,InGw9NI67B,EAAgB55B,EAAuB25B,GmGv9N3CloB,EAAA1T,EAAA,GnG29NI2T,EAAgB1R,EAAuByR,GmGz9NrCk3B,GAAU,EAAAhnC,EAAAwM,oBAAmB8F,QAAQ,YAAY,IA0BlC+3B,EnGi+NR,SAAU1M,GmGryNrB,QAAA0M,GAAY18B,IAAS,EAAA9N,EAAAhC,SAAA3B,KAAAmuC,EAAA,IAAAtoC,IAAA,EAAA2I,EAAA7M,SAAA3B,KACnByhC,EAAAlhC,KAAAP,KAAMyR,IACAm+B,GAAmBrM,UAAU,EAAAz/B,EAAAgE,UAAS,IAAK+nC,eAAe,EAAMxqB,MAAO,IAAKG,OAAQ,IAAKslB,QAASA,EAASgF,qBAAsBn8B,EAAAhS,QAAQouC,SAF5H,OAGnBlqC,GAAKq3B,SAAWrpB,EAAAlS,QAAEsM,OAAO2hC,EAAgBn+B,GACzC5L,EAAK4L,QAAQgkB,QAAU5vB,EAAKmqC,kBAAkBv+B,GACzC5L,EAAK4L,QAAQw+B,aAEhBpqC,EAAK4L,QAAQq+B,sBAAuB,GAEjCjqC,EAAK4L,QAAQq+B,uBAEhBjqC,EAAK4L,QAAQy+B,0BAA2B,GAE1CrqC,EAAKsqC,8BAA8BtqC,EAAK4L,QAAQ9M,QAChDkB,EAAKuqC,aAAe,GAAAT,GAAAhuC,QAAAkE,GACpBA,EAAKwqC,WAAa/C,EAAA3rC,QAAW2hC,YAAYz9B,EAAK4L,QAAQ8xB,UACtD19B,EAAKwqC,WAAWjN,aAAgB/d,MAAO5T,EAAQ4T,MAAOG,OAAQ/T,EAAQ+T,QACtE3f,EAAKwqC,WAAW5+B,QAAU5L,EAAK4L,QAC3B5L,EAAK4L,QAAQ6+B,SACfzqC,EAAK0qC,YAAY1qC,EAAK4L,QAAQ6+B,UAEvBzqC,EAAK4L,QAAQvD,QACpBrI,EAAK2qC,SAAS3qC,EAAK4L,QAAQvD,QAtBVrI,EnG26OrB,OAroBA,EAAI6I,EAAW/M,SAASwsC,EAAQ1M,IAChC,EAAInuB,EAAc3R,SAASwsC,IACzB9qC,IAAK,SACL+tB,IAAK,SmGn+NIqf,GAAUzwC,KAAK+qC,QAAU0F,GnGs+NlCvvC,IAAK,WmGj+NL,MAHKlB,MAAK+qC,UACR/qC,KAAK+qC,QAAU,GAAAC,GAAArpC,QAAW3B,KAAKyR,QAAQi/B,YAAe1wC,KAAKyR,QAAQ8xB,WAE9DvjC,KAAK+qC,WnG8+NZ1nC,IAAK,QACLnC,IAAK,WmGt+NL,MAAOlB,MAAKg2B,KAAK2a,aAAahyB,UAAUiyB,SnGm/NxCvtC,IAAK,YACLnC,IAAK,WmGz+NL,MAAOlB,MAAKg2B,KAAK2a,aAAahyB,UAAUkyB,anGo/NxCxtC,IAAK,UACLnC,IAAK,WmG5+NL,QAASlB,KAAK8wC,UnGu/NdztC,IAAK,gBACLnC,IAAK,WmG/+NL,OACE6vC,QAASlT,EAAAl8B,QAAOoG,aAChBipC,SAAUnT,EAAAl8B,QAAOqG,cACjBipC,OAAQpT,EAAAl8B,QAAOuG,YACfgpC,QAASrT,EAAAl8B,QAAOwG,aAChBgpC,OAAQtT,EAAAl8B,QAAOyG,YACfgpC,QAASvT,EAAAl8B,QAAO0G,aAChBgpC,OAAQxT,EAAAl8B,QAAO2G,YACfgpC,QAASzT,EAAAl8B,QAAO4G,aAChBgpC,aAAc1T,EAAAl8B,QAAO8G,kBACrB+oC,eAAgB3T,EAAAl8B,QAAO+G,oBACvB+oC,oBAAqB5T,EAAAl8B,QAAOgH,+BnGwpOhCwlC,EAAO5sC,UmGp/NPgvC,YnGo/N+B,SmGp/NnBD,GACV,GAAMtgC,GAAKQ,SAASgE,cAAc87B,EAIlC,OAHItgC,IACFhQ,KAAKwwC,SAASxgC,GAEThQ,MnG8/NTmuC,EAAO5sC,UmGr/NPivC,SnGq/N4B,SmGr/NnBv+B,GAIP,MAHAjS,MAAKyR,QAAQigC,cAAgBz/B,EAC7BjS,KAAKg2B,KAAOh2B,KAAKowC,aAAah5B,SAC9BpX,KAAK2xC,qBACE3xC,MnGw/NTmuC,EAAO5sC,UmGr/NPowC,mBnGq/NsC,WmG5+NpC,MARK3xC,MAAKg2B,KAAK4b,QAGb5xC,KAAK6xC,WAFL7xC,KAAK2H,aAAa3H,KAAKg2B,KAAM6H,EAAAl8B,QAAOgJ,WAAY3K,KAAK6xC,UAIvD7xC,KAAK0H,SAAS1H,KAAKg2B,KAAK2a,aAAc9S,EAAAl8B,QAAO+L,8BAA+B1N,KAAK8xC,mBACjF9xC,KAAK0H,SAAS1H,KAAKg2B,KAAM6H,EAAAl8B,QAAOiJ,gBAAiB5K,KAAK+xC,qBACtD/xC,KAAK0H,SAAS1H,KAAKg2B,KAAM6H,EAAAl8B,QAAOkJ,YAAa7K,KAAKgyC,WAC3ChyC,MnGq/NTmuC,EAAO5sC,UmGl/NP0wC,4BnGk/N+C,WmGj/N7C,GAAMtzB,GAAY3e,KAAKg2B,KAAK2a,aAAahyB,SAYzC,OAXIA,KACF3e,KAAK0H,SAASiX,EAAWkf,EAAAl8B,QAAOgK,eAAgB3L,KAAKkyC,SACrDlyC,KAAK0H,SAASiX,EAAWkf,EAAAl8B,QAAOkK,gBAAiB7L,KAAKmyC,UACtDnyC,KAAK0H,SAASiX,EAAWkf,EAAAl8B,QAAOiK,eAAgB5L,KAAKoyC,SACrDpyC,KAAK0H,SAASiX,EAAWkf,EAAAl8B,QAAOmK,gBAAiB9L,KAAKqyC,UACtDryC,KAAK0H,SAASiX,EAAWkf,EAAAl8B,QAAOyK,eAAgBpM,KAAKsyC,SACrDtyC,KAAK0H,SAASiX,EAAWkf,EAAAl8B,QAAO0J,gBAAiBrL,KAAKuyC,UACtDvyC,KAAK0H,SAASiX,EAAWkf,EAAAl8B,QAAO8J,qBAAsBzL,KAAKwyC,eAC3DxyC,KAAK0H,SAASiX,EAAWkf,EAAAl8B,QAAO2K,iBAAkBtM,KAAKyyC,iBACvDzyC,KAAK0H,SAASiX,EAAWkf,EAAAl8B,QAAO4J,6BAA8BvL,KAAK0yC,uBAE9D1yC,MnGq/NTmuC,EAAO5sC,UmGl/NP4uC,8BnGk/NiD,WmGl/NU,GAAA9S,GAAAr9B,KAA7B2yC,EAA6B5sC,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,MAAbpB,EAAaoB,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,KAezD,QAdqB,EAAAtC,EAAA9B,SAAYgxC,GAAWxvC,OAAS,IACrC,EAAAM,EAAA9B,SAAYgD,GAAQiD,QAAQ,SAACgrC,GAC3C,GAAMC,GAAYxV,EAAKyV,cAAcF,EACrCC,IAAaxV,EAAKv3B,IAAI+sC,EAAWluC,EAAOiuC,OAG1C,EAAAnvC,EAAA9B,SAAYgxC,GAAW/qC,QAAQ,SAACgrC,GAC9B,GAAMC,GAAYxV,EAAKyV,cAAcF,EACrC,IAAIC,EAAW,CACb,GAAIE,GAAgBJ,EAAUC,IAC9BG,EAAyC,kBAAlBA,IAAgCA,IACtC1V,EAAK73B,GAAGqtC,EAAWE,MAGjC/yC,MnG0/NTmuC,EAAO5sC,UmGv/NPuwC,kBnGu/NqC,WmGt/NnC9xC,KAAKwG,gBACLxG,KAAK2xC,sBnG0/NPxD,EAAO5sC,UmGv/NPswC,SnGu/N4B,WmGt/N1B7xC,KAAK8wC,QAAS,EACd9wC,KAAKiyC,8BACLjyC,KAAKoG,QAAQy3B,EAAAl8B,QAAOoG,enG0/NtBomC,EAAO5sC,UmGv/NPwwC,oBnGu/NuC,SmGv/NnBiB,GAClBhzC,KAAKoG,QAAQy3B,EAAAl8B,QAAOsG,kBAAmB+qC,InG0/NzC7E,EAAO5sC,UmGv/NPkxC,gBnGu/NmC,SmGv/NnBp9B,GACdrV,KAAKoG,QAAQy3B,EAAAl8B,QAAO+G,oBAAqB2M,InG0/N3C84B,EAAO5sC,UmGv/NPmxC,qBnGu/NwC,WmGt/NtC1yC,KAAKoG,QAAQy3B,EAAAl8B,QAAOgH,4BnG0/NtBwlC,EAAO5sC,UmGv/NPywC,UnGu/N6B,SmGv/NnB5wB,GACRphB,KAAKoG,QAAQy3B,EAAAl8B,QAAOqG,cAAeoZ,InG0/NrC+sB,EAAO5sC,UmGv/NP2wC,QnGu/N2B,WmGt/NzBlyC,KAAKoG,QAAQy3B,EAAAl8B,QAAOuG,cnG0/NtBimC,EAAO5sC,UmGv/NP4wC,SnGu/N4B,WmGt/N1BnyC,KAAKoG,QAAQy3B,EAAAl8B,QAAOwG,enG0/NtBgmC,EAAO5sC,UmGv/NP6wC,QnGu/N2B,WmGt/NzBpyC,KAAKoG,QAAQy3B,EAAAl8B,QAAOyG,YAAapI,KAAKizC,mBnG0/NxC9E,EAAO5sC,UmGv/NP8wC,SnGu/N4B,WmGt/N1BryC,KAAKoG,QAAQy3B,EAAAl8B,QAAO0G,enG0/NtB8lC,EAAO5sC,UmGv/NP+wC,QnGu/N2B,SmGv/NnB1jC,GACN5O,KAAKoG,QAAQy3B,EAAAl8B,QAAO2G,YAAasG,InG0/NnCu/B,EAAO5sC,UmGv/NPixC,cnGu/NiC,SmGv/NnBU,GACZlzC,KAAKoG,QAAQy3B,EAAAl8B,QAAO8G,kBAAmByqC,InG0/NzC/E,EAAO5sC,UmGv/NPgxC,SnGu/N4B,SmGv/NnBjtC,GACPtF,KAAKoG,QAAQy3B,EAAAl8B,QAAO4G,aAAcjD,InG0/NpC6oC,EAAO5sC,UmGv/NPyuC,kBnGu/NqC,SmGv/NnBv+B,GAChB,GAAMgkB,GAAUhkB,EAAQgkB,cAA+BlmB,KAAnBkC,EAAQ5D,QAAuB4D,EAAQ5D,WAC3E,OAA0B,KAAnB4nB,EAAQtyB,SAAkB0K,OAAO,GAAIue,SAAS,KAAQqJ,GnGsgO/D0Y,EAAO5sC,UmGz/NP4xC,OnGy/N0B,SmGz/NnB/xB,GAEL,MADAphB,MAAKg2B,KAAKmd,OAAO/xB,GACVphB,MnGugOTmuC,EAAO5sC,UmG3/NPgsB,KnG2/NwB,SmG3/NnBkI,EAASrJ,EAAUgnB,GAKtB,WAJiB7jC,KAAb6jC,GACFpzC,KAAKmX,WAAYi8B,WAAYA,IAE/BpzC,KAAKg2B,KAAKzI,KAAKkI,EAASrJ,GACjBpsB,MnGogOTmuC,EAAO5sC,UmG5/NP47B,QnG4/N2B,WmGz/NzB,MAFAn9B,MAAKwG,gBACLxG,KAAKg2B,KAAKmH,UACHn9B,MnGsgOTmuC,EAAO5sC,UmG9/NP+6B,QnG8/N2B,WmG5/NzB,MADAt8B,MAAKg2B,KAAKqd,qBAAqB/W,UACxBt8B,MnGwgOTmuC,EAAO5sC,UmGhgOP8Q,KnGggOwB,WmG9/NtB,MADArS,MAAKg2B,KAAK2a,aAAahyB,UAAUtM,OAC1BrS,MnG0gOTmuC,EAAO5sC,UmGlgOPg7B,MnGkgOyB,WmGhgOvB,MADAv8B,MAAKg2B,KAAK2a,aAAahyB,UAAU4d,QAC1Bv8B,MnG4gOTmuC,EAAO5sC,UmGpgOPi7B,KnGogOwB,WmGlgOtB,MADAx8B,MAAKg2B,KAAK2a,aAAahyB,UAAU6d,OAC1Bx8B,MnG+gOTmuC,EAAO5sC,UmGrgOPk7B,KnGqgOwB,SmGrgOnB7tB,GAEH,MADA5O,MAAKg2B,KAAK2a,aAAahyB,UAAU8d,KAAK7tB,GAC/B5O,MnGghOTmuC,EAAO5sC,UmGvgOPm7B,enGugOkC,SmGvgOnBC,GAEb,MADA38B,MAAKg2B,KAAK2a,aAAahyB,UAAU+d,eAAeC,GACzC38B,MnGkhOTmuC,EAAO5sC,UmGzgOP+xC,UnGygO6B,SmGzgOnBj+B,GAIR,MAHIrV,MAAKg2B,MAAQh2B,KAAKg2B,KAAK2a,cACzB3wC,KAAKg2B,KAAK2a,aAAa2C,UAAUj+B,GAE5BrV,MnGkhOTmuC,EAAO5sC,UmG1gOPgyC,UnG0gO6B,WmGzgO3B,MAAOvzC,MAAKg2B,MAAQh2B,KAAKg2B,KAAK2a,aAAe3wC,KAAKg2B,KAAK2a,aAAat7B,OAAS,GnGohO/E84B,EAAO5sC,UmG5gOPiyC,KnG4gOwB,WmGzgOtB,MAFAxzC,MAAKyzC,aAAezzC,KAAKuzC,YACzBvzC,KAAKszC,UAAU,GACRtzC,MnGshOTmuC,EAAO5sC,UmG9gOPmyC,OnG8gO0B,WmG3gOxB,MAFA1zC,MAAKszC,UAAuC,gBAAtBtzC,MAAKyzC,aAA4BzzC,KAAKyzC,aAAe,KAC3EzzC,KAAKyzC,aAAe,KACbzzC,MnGwhOTmuC,EAAO5sC,UmGhhOPu7B,UnGghO6B,WmG/gO3B,MAAO98B,MAAKg2B,KAAK2a,aAAahyB,UAAUme,anG0hO1CqR,EAAO5sC,UmGlhOPoyC,anGkhOgC,WmGjhO9B,MAAO3zC,MAAKg2B,KAAK2a,aAAahyB,UAAUg1B,gBnG4hO1CxF,EAAO5sC,UmGphOPqyC,WnGohO8B,WmGnhO5B,MAAO5zC,MAAKg2B,KAAK2a,aAAahyB,UAAUi1B,cnG+hO1CzF,EAAO5sC,UmGthOP4V,UnGshO6B,WmGthOL,GAAd1F,GAAc1L,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,KAGtB,OAFA/F,MAAKmwC,8BAA8B1+B,EAAQ9M,OAAQ3E,KAAKyR,QAAQ9M,QAChE3E,KAAKg2B,KAAK7e,UAAU1F,GACbzR,MnGwiOTmuC,EAAO5sC,UmG1hOPsyC,UnG0hO6B,SmG1hOnBlzC,GAER,MADgBX,MAAKg2B,KAAK0a,QAAQpsC,OAAOtE,KAAKg2B,KAAK2a,aAAahyB,UAAU+xB,SAC3DlpC,OAAO,SAAAssC,GAAA,MAAUA,GAAOnzC,OAASA,IAAM,InGsiOxDwtC,EAAO5sC,UmG9hOP0xC,enG8hOkC,WmG7hOhC,MAAOjzC,MAAKg2B,KAAK2a,aAAahyB,UAAUs0B,kBnG0iO1C9E,EAAO5sC,UmGhiOPq7B,mBnGgiOsC,WmG/hOpC,MAAO58B,MAAKg2B,KAAK2a,aAAahyB,UAAUie,sBnG0iO1CuR,EAAO5sC,UmGliOPs7B,YnGkiO+B,WmGjiO7B,MAAO78B,MAAKg2B,KAAK2a,aAAahyB,UAAUke,enGqiOnCsR,GACP7M,EAAc3/B,QAEhBhC,GAAQgC,QmG1mPawsC,GAskBrB,EAAAz8B,EAAA/P,SAAcwsC,EAAO5sC,UAArBw6B,EAAAp6B,SnGwiOA/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GoG3pPjCA,EAAA,IACAN,EAAAD,QAAAO,EAAA,GAAAY,OAAA8M,QpGiqPM,SAAUhO,EAAQD,EAASO,GqGjqPjC,GAAA89B,GAAA99B,EAAA,GAEA89B,KAAAO,EAAAP,EAAAG,EAAA,UAA0CvwB,OAAA1N,EAAA,QrGwqPpC,SAAUN,EAAQD,GsG3qPxBC,EAAAD,QAAA,SAAAogC,GACA,qBAAAA,GAAA,KAAAj+B,WAAAi+B,EAAA,sBACA,OAAAA,KtGkrPM,SAAUngC,EAAQD,EAASO,GAEjC,YuGprPA,IAAA6zC,GAAA7zC,EAAA,IACA8zC,EAAA9zC,EAAA,IACAklC,EAAAllC,EAAA,IACA+zC,EAAA/zC,EAAA,IACA2/B,EAAA3/B,EAAA,IACAg0C,EAAApzC,OAAA8M,MAGAhO,GAAAD,SAAAu0C,GAAAh0C,EAAA,eACA,GAAAi0C,MACAxV,KACAJ,EAAA7C,SACA0Y,EAAA,sBAGA,OAFAD,GAAA5V,GAAA,EACA6V,EAAA3vC,MAAA,IAAAmD,QAAA,SAAA1B,GAAkCy4B,EAAAz4B,OACf,GAAnBguC,KAAmBC,GAAA5V,IAAAz9B,OAAA62B,KAAAuc,KAAsCvV,IAAAr3B,KAAA,KAAA8sC,IACxD,SAAAnxC,EAAA4K,GAMD,IALA,GAAAwmC,GAAAJ,EAAAhxC,GACAqxC,EAAAvuC,UAAA5C,OACAkE,EAAA,EACAktC,EAAAP,EAAAtU,EACA8U,EAAApP,EAAA1F,EACA4U,EAAAjtC,GAMA,IALA,GAIAhE,GAJAk7B,EAAAsB,EAAA95B,UAAAsB,MACAswB,EAAA4c,EAAAR,EAAAxV,GAAAj6B,OAAAiwC,EAAAhW,IAAAwV,EAAAxV,GACAp7B,EAAAw0B,EAAAx0B,OACA8C,EAAA,EAEA9C,EAAA8C,GAAAuuC,EAAAj0C,KAAAg+B,EAAAl7B,EAAAs0B,EAAA1xB,QAAAouC,EAAAhxC,GAAAk7B,EAAAl7B,GACG,OAAAgxC,IACFH,GvG2rPK,SAAUt0C,EAAQD,EAASO,GwGztPjC,GAAAmlC,GAAAnlC,EAAA,IACAu0C,EAAAv0C,EAAA,IACAw0C,EAAAx0C,EAAA,IACAN,GAAAD,QAAA,SAAAg1C,GACA,gBAAA7yB,EAAA9R,EAAA4kC,GACA,GAGAjyC,GAHAg9B,EAAA0F,EAAAvjB,GACA3e,EAAAsxC,EAAA9U,EAAAx8B,QACAkE,EAAAqtC,EAAAE,EAAAzxC,EAGA,IAAAwxC,GAAA3kC,MAAA,KAAA7M,EAAAkE,GAEA,IADA1E,EAAAg9B,EAAAt4B,OACA1E,EAAA,aAEK,MAAWQ,EAAAkE,EAAeA,IAAA,IAAAstC,GAAAttC,IAAAs4B,KAC/BA,EAAAt4B,KAAA2I,EAAA,MAAA2kC,IAAAttC,GAAA,CACK,QAAAstC,IAAA,KxGmuPC,SAAU/0C,EAAQD,EAASO,GyGrvPjC,GAAA2nC,GAAA3nC,EAAA,IACA20C,EAAAvvB,KAAAuvB,IACA/M,EAAAxiB,KAAAwiB,GACAloC,GAAAD,QAAA,SAAA0H,EAAAlE,GAEA,MADAkE,GAAAwgC,EAAAxgC,GACAA,EAAA,EAAAwtC,EAAAxtC,EAAAlE,EAAA,GAAA2kC,EAAAzgC,EAAAlE,KzG4vPM,SAAUvD,EAAQD,EAASO,G0GjwPjCA,EAAA,KACAN,EAAAD,QAAAO,EAAA,GAAAY,OAAA62B,M1GuwPM,SAAU/3B,EAAQD,EAASO,G2GvwPjC,GAAA+zC,GAAA/zC,EAAA,IACA+hC,EAAA/hC,EAAA,GAEAA,GAAA,sBACA,gBAAA6/B,GACA,MAAAkC,GAAAgS,EAAAlU,Q3GgxPM,SAAUngC,EAAQD,EAASO,G4GtxPjCN,EAAAD,SAAkBgC,QAAAzB,EAAA,KAAAkB,YAAA,I5G4xPZ,SAAUxB,EAAQD,EAASO,G6G5xPjCA,EAAA,IACAA,EAAA,KACAN,EAAAD,QAAAO,EAAA,IAAAw/B,EAAA,a7GkyPM,SAAU9/B,EAAQD,EAASO,G8GpyPjC,GAAA2nC,GAAA3nC,EAAA,IACA4/B,EAAA5/B,EAAA,GAGAN,GAAAD,QAAA,SAAAm1C,GACA,gBAAAnR,EAAAoR,GACA,GAGA/V,GAAAC,EAHAv9B,EAAAmW,OAAAioB,EAAA6D,IACAtjC,EAAAwnC,EAAAkN,GACAz0C,EAAAoB,EAAAyB,MAEA,OAAA9C,GAAA,GAAAA,GAAAC,EAAAw0C,EAAA,OAAAvlC,IACAyvB,EAAAt9B,EAAAszC,WAAA30C,GACA2+B,EAAA,OAAAA,EAAA,OAAA3+B,EAAA,IAAAC,IAAA2+B,EAAAv9B,EAAAszC,WAAA30C,EAAA,WAAA4+B,EAAA,MACA6V,EAAApzC,EAAAyjC,OAAA9kC,GAAA2+B,EACA8V,EAAApzC,EAAAqC,MAAA1D,IAAA,GAAA4+B,EAAA,OAAAD,EAAA,qB9G4yPM,SAAUp/B,EAAQD,EAASO,GAEjC,Y+G3zPA,IAAAkX,GAAAlX,EAAA,IACAkD,EAAAlD,EAAA,IACAwoC,EAAAxoC,EAAA,IACAkpC,IAGAlpC,GAAA,IAAAkpC,EAAAlpC,EAAA,2BAAgF,MAAAF,QAEhFJ,EAAAD,QAAA,SAAAkC,EAAAknC,EAAAjlB,GACAjiB,EAAAN,UAAA6V,EAAAgyB,GAAqDtlB,KAAA1gB,EAAA,EAAA0gB,KACrD4kB,EAAA7mC,EAAAknC,EAAA,e/Gk0PM,SAAUnpC,EAAQD,EAASO,GgH70PjC,GAAAu/B,GAAAv/B,EAAA,IACAo/B,EAAAp/B,EAAA,IACA6zC,EAAA7zC,EAAA,GAEAN,GAAAD,QAAAO,EAAA,IAAAY,OAAAkC,iBAAA,SAAA28B,EAAAgF,GACArF,EAAAK,EAKA,KAJA,GAGAlB,GAHA9G,EAAAoc,EAAApP,GACAxhC,EAAAw0B,EAAAx0B,OACA9C,EAAA,EAEA8C,EAAA9C,GAAAo/B,EAAAC,EAAAC,EAAAlB,EAAA9G,EAAAt3B,KAAAskC,EAAAlG,GACA,OAAAkB,KhHo1PM,SAAU//B,EAAQD,EAASO,GiH/1PjCN,EAAAD,QAAAO,EAAA,IAAAsQ,mBAAAqP,iBjHq2PM,SAAUjgB,EAAQD,EAASO,GkHp2PjC,GAAAwhB,GAAAxhB,EAAA,IACA+zC,EAAA/zC,EAAA,IACAgkC,EAAAhkC,EAAA,gBACA+0C,EAAAn0C,OAAAS,SAEA3B,GAAAD,QAAAmB,OAAAyX,gBAAA,SAAAonB,GAEA,MADAA,GAAAsU,EAAAtU,GACAje,EAAAie,EAAAuE,GAAAvE,EAAAuE,GACA,kBAAAvE,GAAAj9B,aAAAi9B,eAAAj9B,YACAi9B,EAAAj9B,YAAAnB,UACGo+B,YAAA7+B,QAAAm0C,EAAA,OlH42PG,SAAUr1C,EAAQD,EAASO,GmHv3PjCA,EAAA,IAMA,QALA4nB,GAAA5nB,EAAA,IACAujB,EAAAvjB,EAAA,IACAsoC,EAAAtoC,EAAA,IACAg1C,EAAAh1C,EAAA,mBAEAi1C,GAAA,sEAAA90C,EAAA,EAAwGA,EAAA,EAAOA,IAAA,CAC/G,GAAA0oC,GAAAoM,EAAA90C,GACA+0C,EAAAttB,EAAAihB,GACAQ,EAAA6L,KAAA7zC,SACAgoC,OAAA2L,IAAAzxB,EAAA8lB,EAAA2L,EAAAnM,GACAP,EAAAO,GAAAP,EAAAxkC,QnH83PM,SAAUpE,EAAQD,EAASO,GAEjC,YoH14PA,IAAAm1C,GAAAn1C,EAAA,KACAo1C,EAAAp1C,EAAA,KACAsoC,EAAAtoC,EAAA,IACAmlC,EAAAnlC,EAAA,GAMAN,GAAAD,QAAAO,EAAA,IAAA8D,MAAA,iBAAAmkC,EAAAmB,GACAtpC,KAAAooC,GAAA/C,EAAA8C,GACAnoC,KAAAqoC,GAAA,EACAroC,KAAAu1C,GAAAjM,GAEC,WACD,GAAA3J,GAAA3/B,KAAAooC,GACAkB,EAAAtpC,KAAAu1C,GACAluC,EAAArH,KAAAqoC,IACA,QAAA1I,GAAAt4B,GAAAs4B,EAAAx8B,QACAnD,KAAAooC,OAAA74B,GACA+lC,EAAA,IAEA,QAAAhM,EAAAgM,EAAA,EAAAjuC,GACA,UAAAiiC,EAAAgM,EAAA,EAAA3V,EAAAt4B,IACAiuC,EAAA,GAAAjuC,EAAAs4B,EAAAt4B,MACC,UAGDmhC,EAAAgN,UAAAhN,EAAAxkC,MAEAqxC,EAAA,QACAA,EAAA,UACAA,EAAA,YpHg5PM,SAAUz1C,EAAQD,GqHj7PxBC,EAAAD,QAAA,crHu7PM,SAAUC,EAAQD,GsHv7PxBC,EAAAD,QAAA,SAAAovB,EAAApsB,GACA,OAAUA,QAAAosB,YtH87PJ,SAAUnvB,EAAQD,EAASO,GuH/7PjCN,EAAAD,SAAkBgC,QAAAzB,EAAA,KAAAkB,YAAA,IvHq8PZ,SAAUxB,EAAQD,EAASO,GwHr8PjCA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAN,EAAAD,QAAAO,EAAA,GAAAw7B,QxH28PM,SAAU97B,EAAQD,EAASO,GAEjC,YyH/8PA,IAAA4nB,GAAA5nB,EAAA,IACAwhB,EAAAxhB,EAAA,IACAu1C,EAAAv1C,EAAA,IACA89B,EAAA99B,EAAA,IACAqoC,EAAAroC,EAAA,IACAw1C,EAAAx1C,EAAA,KAAA8nC,IACA2N,EAAAz1C,EAAA,IACA6jC,EAAA7jC,EAAA,IACAwoC,EAAAxoC,EAAA,IACAu7B,EAAAv7B,EAAA,IACA01C,EAAA11C,EAAA,IACA+kC,EAAA/kC,EAAA,IACA21C,EAAA31C,EAAA,IACA41C,EAAA51C,EAAA,KACA61C,EAAA71C,EAAA,KACAma,EAAAna,EAAA,KACAo/B,EAAAp/B,EAAA,IACAmlC,EAAAnlC,EAAA,IACAs/B,EAAAt/B,EAAA,IACA8hC,EAAA9hC,EAAA,IACAoC,EAAApC,EAAA,IACA81C,EAAA91C,EAAA,KACA+1C,EAAA/1C,EAAA,IACAg2C,EAAAh2C,EAAA,IACA+hC,EAAA/hC,EAAA,IACAolC,EAAA2Q,EAAAvW,EACAD,EAAAyW,EAAAxW,EACAyW,EAAAH,EAAAtW,EACAwF,EAAApd,EAAA4T,OACA0a,EAAAtuB,EAAAhH,KACAu1B,EAAAD,KAAAvgB,UAEAygB,EAAAV,EAAA,WACAW,EAAAX,EAAA,eACApB,KAAuB5R,qBACvB4T,EAAAzS,EAAA,mBACA0S,EAAA1S,EAAA,WACA2S,EAAA3S,EAAA,cACAkR,EAAAn0C,OAAA,UACA61C,EAAA,kBAAAzR,GACA0R,EAAA9uB,EAAA8uB,QAEAC,GAAAD,MAAA,YAAAA,EAAA,UAAAE,UAGAC,EAAAtB,GAAAE,EAAA,WACA,MAEG,IAFHrzC,EAAAm9B,KAAsB,KACtBv+B,IAAA,WAAoB,MAAAu+B,GAAAz/B,KAAA,KAAuB2C,MAAA,IAASq8B,MACjDA,IACF,SAAAe,EAAA18B,EAAA2zC,GACD,GAAAC,GAAA3R,EAAA2P,EAAA5xC,EACA4zC,UAAAhC,GAAA5xC,GACAo8B,EAAAM,EAAA18B,EAAA2zC,GACAC,GAAAlX,IAAAkV,GAAAxV,EAAAwV,EAAA5xC,EAAA4zC,IACCxX,EAEDzc,EAAA,SAAA8hB,GACA,GAAAoS,GAAAT,EAAA3R,GAAAxiC,EAAA4iC,EAAA,UAEA,OADAgS,GAAA3B,GAAAzQ,EACAoS,GAGAC,EAAAR,GAAA,gBAAAzR,GAAAkS,SAAA,SAAArX,GACA,sBAAAA,IACC,SAAAA,GACD,MAAAA,aAAAmF,IAGAmS,EAAA,SAAAtX,EAAA18B,EAAA2zC,GAKA,MAJAjX,KAAAkV,GAAAoC,EAAAX,EAAArzC,EAAA2zC,GACA1X,EAAAS,GACA18B,EAAAm8B,EAAAn8B,GAAA,GACAi8B,EAAA0X,GACAt1B,EAAA+0B,EAAApzC,IACA2zC,EAAA/1C,YAIAygB,EAAAqe,EAAAuW,IAAAvW,EAAAuW,GAAAjzC,KAAA08B,EAAAuW,GAAAjzC,IAAA,GACA2zC,EAAA10C,EAAA00C,GAAsB/1C,WAAA+gC,EAAA,UAJtBtgB,EAAAqe,EAAAuW,IAAA7W,EAAAM,EAAAuW,EAAAtU,EAAA,OACAjC,EAAAuW,GAAAjzC,IAAA,GAIK0zC,EAAAhX,EAAA18B,EAAA2zC,IACFvX,EAAAM,EAAA18B,EAAA2zC,IAEHM,EAAA,SAAAvX,EAAAtB,GACAa,EAAAS,EAKA,KAJA,GAGA18B,GAHAs0B,EAAAoe,EAAAtX,EAAA4G,EAAA5G,IACAp+B,EAAA,EACAC,EAAAq3B,EAAAx0B,OAEA7C,EAAAD,GAAAg3C,EAAAtX,EAAA18B,EAAAs0B,EAAAt3B,KAAAo+B,EAAAp7B,GACA,OAAA08B,IAEAwX,EAAA,SAAAxX,EAAAtB,GACA,WAAAlvB,KAAAkvB,EAAAn8B,EAAAy9B,GAAAuX,EAAAh1C,EAAAy9B,GAAAtB,IAEA+Y,EAAA,SAAAn0C,GACA,GAAAo0C,GAAAjD,EAAAj0C,KAAAP,KAAAqD,EAAAm8B,EAAAn8B,GAAA,GACA,SAAArD,OAAAi1C,GAAAvzB,EAAA+0B,EAAApzC,KAAAqe,EAAAg1B,EAAArzC,QACAo0C,IAAA/1B,EAAA1hB,KAAAqD,KAAAqe,EAAA+0B,EAAApzC,IAAAqe,EAAA1hB,KAAAs2C,IAAAt2C,KAAAs2C,GAAAjzC,KAAAo0C,IAEAC,EAAA,SAAA3X,EAAA18B,GAGA,GAFA08B,EAAAsF,EAAAtF,GACA18B,EAAAm8B,EAAAn8B,GAAA,GACA08B,IAAAkV,IAAAvzB,EAAA+0B,EAAApzC,IAAAqe,EAAAg1B,EAAArzC,GAAA,CACA,GAAA2zC,GAAA1R,EAAAvF,EAAA18B,EAEA,QADA2zC,IAAAt1B,EAAA+0B,EAAApzC,IAAAqe,EAAAqe,EAAAuW,IAAAvW,EAAAuW,GAAAjzC,KAAA2zC,EAAA/1C,YAAA,GACA+1C,IAEAW,EAAA,SAAA5X,GAKA,IAJA,GAGA18B,GAHAmB,EAAA2xC,EAAA9Q,EAAAtF,IACArtB,KACArS,EAAA,EAEAmE,EAAArB,OAAA9C,GACAqhB,EAAA+0B,EAAApzC,EAAAmB,EAAAnE,OAAAgD,GAAAizC,GAAAjzC,GAAAqyC,GAAAhjC,EAAA/M,KAAAtC,EACG,OAAAqP,IAEHklC,EAAA,SAAA7X,GAMA,IALA,GAIA18B,GAJAw0C,EAAA9X,IAAAkV,EACAzwC,EAAA2xC,EAAA0B,EAAAnB,EAAArR,EAAAtF,IACArtB,KACArS,EAAA,EAEAmE,EAAArB,OAAA9C,IACAqhB,EAAA+0B,EAAApzC,EAAAmB,EAAAnE,OAAAw3C,IAAAn2B,EAAAuzB,EAAA5xC,IAAAqP,EAAA/M,KAAA8wC,EAAApzC,GACG,OAAAqP,GAIHikC,KACAzR,EAAA,WACA,GAAAllC,eAAAklC,GAAA,KAAApjC,WAAA,+BACA,IAAAgjC,GAAArJ,EAAA11B,UAAA5C,OAAA,EAAA4C,UAAA,OAAAwJ,IACAuoC,EAAA,SAAAn1C,GACA3C,OAAAi1C,GAAA6C,EAAAv3C,KAAAm2C,EAAA/zC,GACA+e,EAAA1hB,KAAAs2C,IAAA50B,EAAA1hB,KAAAs2C,GAAAxR,KAAA9kC,KAAAs2C,GAAAxR,IAAA,GACAiS,EAAA/2C,KAAA8kC,EAAA9C,EAAA,EAAAr/B,IAGA,OADA8yC,IAAAoB,GAAAE,EAAA9B,EAAAnQ,GAA8D9jC,cAAA,EAAAowB,IAAA0mB,IAC9D90B,EAAA8hB,IAEAyD,EAAArD,EAAA,gCACA,MAAAllC,MAAAu1C,KAGAU,EAAAvW,EAAAgY,EACAxB,EAAAxW,EAAA2X,EACAn3C,EAAA,IAAAw/B,EAAAsW,EAAAtW,EAAAiY,EACAz3C,EAAA,IAAAw/B,EAAA8X,EACAt3C,EAAA,IAAAw/B,EAAAkY,EAEAnC,IAAAv1C,EAAA,KACAqoC,EAAA0M,EAAA,uBAAAuC,GAAA,GAGAvS,EAAAvF,EAAA,SAAA/+B,GACA,MAAAqiB,GAAA4yB,EAAAj1C,MAIAq9B,IAAAK,EAAAL,EAAAa,EAAAb,EAAAG,GAAAwY,GAA0Djb,OAAAwJ,GAE1D,QAAA6S,IAAA,iHAGAtzC,MAAA,KAAApE,GAAA,EAAoB03C,GAAA50C,OAAA9C,IAAoBu1C,EAAAmC,GAAA13C,MAExC,QAAA03C,IAAA9V,EAAA2T,EAAApa,OAAAn7B,GAAA,EAA0C03C,GAAA50C,OAAA9C,IAAoBw1C,EAAAkC,GAAA13C,MAE9D29B,KAAAO,EAAAP,EAAAG,GAAAwY,EAAA,UAEAp5B,IAAA,SAAAla,GACA,MAAAqe,GAAA80B,EAAAnzC,GAAA,IACAmzC,EAAAnzC,GACAmzC,EAAAnzC,GAAA6hC,EAAA7hC,IAGA20C,OAAA,SAAA30C,GACA,GAAA8zC,EAAA9zC,GAAA,MAAAyyC,GAAAU,EAAAnzC,EACA,MAAAvB,WAAAuB,EAAA,sBAEA40C,UAAA,WAAwBpB,GAAA,GACxBqB,UAAA,WAAwBrB,GAAA,KAGxB7Y,IAAAO,EAAAP,EAAAG,GAAAwY,EAAA,UAEAv/B,OAAAmgC,EAEAx2C,eAAAs2C,EAEAr0C,iBAAAs0C,EAEA/R,yBAAAmS,EAEA1N,oBAAA2N,EAEA3T,sBAAA4T,IAIAxB,GAAApY,IAAAO,EAAAP,EAAAG,IAAAwY,GAAAhB,EAAA,WACA,GAAApX,GAAA2G,GAIA,iBAAAmR,GAAA9X,KAAyD,MAAzD8X,GAAoDrX,EAAAT,KAAa,MAAA8X,EAAAv1C,OAAAy9B,OAChE,QACD1I,UAAA,SAAAkK,GACA,OAAAxwB,KAAAwwB,IAAAoX,EAAApX,GAAA,CAIA,IAHA,GAEAoY,GAAAC,EAFAxzC,GAAAm7B,GACA1/B,EAAA,EAEA0F,UAAA5C,OAAA9C,GAAAuE,EAAAe,KAAAI,UAAA1F,KAQA,OAPA83C,GAAAvzC,EAAA,GACA,kBAAAuzC,KAAAC,EAAAD,IACAC,GAAA/9B,EAAA89B,OAAA,SAAA90C,EAAAV,GAEA,GADAy1C,IAAAz1C,EAAAy1C,EAAA73C,KAAAP,KAAAqD,EAAAV,KACAw0C,EAAAx0C,GAAA,MAAAA,KAEAiC,EAAA,GAAAuzC,EACA9B,EAAAhyC,MAAA+xC,EAAAxxC,OAKAsgC,EAAA,UAAAqR,IAAAr2C,EAAA,IAAAglC,EAAA,UAAAqR,EAAArR,EAAA,UAAAtB,SAEA8E,EAAAxD,EAAA,UAEAwD,EAAApjB,KAAA,WAEAojB,EAAA5gB,EAAAhH,KAAA,YzHs9PM,SAAUlhB,EAAQD,EAASO,G0HhsQjC,GAAAw1C,GAAAx1C,EAAA,YACAmY,EAAAnY,EAAA,IACAwhB,EAAAxhB,EAAA,IACAm4C,EAAAn4C,EAAA,IAAAw/B,EACA74B,EAAA,EACAyxC,EAAAx3C,OAAAw3C,cAAA,WACA,UAEAC,GAAAr4C,EAAA,eACA,MAAAo4C,GAAAx3C,OAAA03C,yBAEAC,EAAA,SAAA1Y,GACAsY,EAAAtY,EAAA2V,GAAqB/yC,OACrBtC,EAAA,OAAAwG,EACA6xC,SAGAC,EAAA,SAAA5Y,EAAA3oB,GAEA,IAAAiB,EAAA0nB,GAAA,sBAAAA,MAAA,gBAAAA,GAAA,SAAAA,CACA,KAAAre,EAAAqe,EAAA2V,GAAA,CAEA,IAAA4C,EAAAvY,GAAA,SAEA,KAAA3oB,EAAA,SAEAqhC,GAAA1Y,GAEG,MAAAA,GAAA2V,GAAAr1C,GAEHu4C,EAAA,SAAA7Y,EAAA3oB,GACA,IAAAsK,EAAAqe,EAAA2V,GAAA,CAEA,IAAA4C,EAAAvY,GAAA,QAEA,KAAA3oB,EAAA,QAEAqhC,GAAA1Y,GAEG,MAAAA,GAAA2V,GAAAgD,GAGHG,EAAA,SAAA9Y,GAEA,MADAwY,IAAAO,EAAAC,MAAAT,EAAAvY,KAAAre,EAAAqe,EAAA2V,IAAA+C,EAAA1Y,GACAA,GAEA+Y,EAAAl5C,EAAAD,SACAqoC,IAAA0N,EACAqD,MAAA,EACAJ,UACAC,UACAC,a1HusQM,SAAUj5C,EAAQD,EAASO,G2H1vQjC,GAAA6zC,GAAA7zC,EAAA,IACAmlC,EAAAnlC,EAAA,GACAN,GAAAD,QAAA,SAAA0B,EAAA2O,GAMA,IALA,GAIA3M,GAJAs8B,EAAA0F,EAAAhkC,GACAs2B,EAAAoc,EAAApU,GACAx8B,EAAAw0B,EAAAx0B,OACAkE,EAAA,EAEAlE,EAAAkE,GAAA,GAAAs4B,EAAAt8B,EAAAs0B,EAAAtwB,QAAA2I,EAAA,MAAA3M,K3HiwQM,SAAUzD,EAAQD,EAASO,G4HxwQjC,GAAA6zC,GAAA7zC,EAAA,IACA8zC,EAAA9zC,EAAA,IACAklC,EAAAllC,EAAA,GACAN,GAAAD,QAAA,SAAAogC,GACA,GAAArtB,GAAAqhC,EAAAhU,GACAwU,EAAAP,EAAAtU,CACA,IAAA6U,EAKA,IAJA,GAGAlxC,GAHA00C,EAAAxD,EAAAxU,GACAyU,EAAApP,EAAA1F,EACAr/B,EAAA,EAEA03C,EAAA50C,OAAA9C,GAAAm0C,EAAAj0C,KAAAw/B,EAAA18B,EAAA00C,EAAA13C,OAAAqS,EAAA/M,KAAAtC,EACG,OAAAqP,K5HgxQG,SAAU9S,EAAQD,EAASO,G6H5xQjC,GAAA0nC,GAAA1nC,EAAA,GACAN,GAAAD,QAAAqE,MAAAqW,SAAA,SAAAI,GACA,eAAAmtB,EAAAntB,K7HoyQM,SAAU7a,EAAQD,EAASO,G8HtyQjC,GAAAmlC,GAAAnlC,EAAA,IACAi2C,EAAAj2C,EAAA,IAAAw/B,EACA3nB,KAAkBA,SAElBihC,EAAA,gBAAApoC,iBAAA9P,OAAAkpC,oBACAlpC,OAAAkpC,oBAAAp5B,WAEAqoC,EAAA,SAAAlZ,GACA,IACA,MAAAoW,GAAApW,GACG,MAAAvqB,GACH,MAAAwjC,GAAAj1C,SAIAnE,GAAAD,QAAA+/B,EAAA,SAAAK,GACA,MAAAiZ,IAAA,mBAAAjhC,EAAAxX,KAAAw/B,GAAAkZ,EAAAlZ,GAAAoW,EAAA9Q,EAAAtF,M9H+yQM,SAAUngC,EAAQD,KAMlB,SAAUC,EAAQD,EAASO,G+Ht0QjCA,EAAA,sB/H40QM,SAAUN,EAAQD,EAASO,GgI50QjCA,EAAA,mBhIk1QM,SAAUN,EAAQD,EAASO,GiIl1QjCA,EAAA,IACA,IAAAg5C,GAAAh5C,EAAA,GAAAY,MACAlB,GAAAD,QAAA,SAAAogC,EAAA18B,EAAA81C,GACA,MAAAD,GAAAn4C,eAAAg/B,EAAA18B,EAAA81C,KjIy1QM,SAAUv5C,EAAQD,EAASO,GkI51QjC,GAAA89B,GAAA99B,EAAA,GAEA89B,KAAAO,EAAAP,EAAAG,GAAAj+B,EAAA,cAAuEa,eAAAb,EAAA,IAAAw/B,KlIk2QjE,SAAU9/B,EAAQD,EAASO,GmIp2QjCN,EAAAD,SAAkBgC,QAAAzB,EAAA,KAAAkB,YAAA,InI02QZ,SAAUxB,EAAQD,EAASO,GoI12QjCA,EAAA,KACAN,EAAAD,QAAAO,EAAA,GAAAY,OAAAs4C,gBpIg3QM,SAAUx5C,EAAQD,EAASO,GqIh3QjC,GAAA89B,GAAA99B,EAAA,GACA89B,KAAAO,EAAA,UAA8B6a,eAAAl5C,EAAA,KAAAkxB,OrIu3QxB,SAAUxxB,EAAQD,EAASO,GsIv3QjC,GAAAmY,GAAAnY,EAAA,IACAo/B,EAAAp/B,EAAA,IACAm5C,EAAA,SAAA1Z,EAAA4J,GAEA,GADAjK,EAAAK,IACAtnB,EAAAkxB,IAAA,OAAAA,EAAA,KAAAznC,WAAAynC,EAAA,6BAEA3pC,GAAAD,SACAyxB,IAAAtwB,OAAAs4C,iBAAA,gBACA,SAAA70C,EAAA+0C,EAAAloB,GACA,IACAA,EAAAlxB,EAAA,IAAAo7B,SAAA/6B,KAAAL,EAAA,IAAAw/B,EAAA5+B,OAAAS,UAAA,aAAA6vB,IAAA,GACAA,EAAA7sB,MACA+0C,IAAA/0C,YAAAP,QACO,MAAAwR,GAAU8jC,GAAA,EACjB,gBAAA3Z,EAAA4J,GAIA,MAHA8P,GAAA1Z,EAAA4J,GACA+P,EAAA3Z,EAAA98B,UAAA0mC,EACAnY,EAAAuO,EAAA4J,GACA5J,QAEQ,OAAApwB,IACR8pC,UtIg4QM,SAAUz5C,EAAQD,EAASO,GuIv5QjCA,EAAA,IACA,IAAAg5C,GAAAh5C,EAAA,GAAAY,MACAlB,GAAAD,QAAA,SAAA8+B,EAAAuY,GACA,MAAAkC,GAAA9hC,OAAAqnB,EAAAuY,KvI85QM,SAAUp3C,EAAQD,EAASO,GwIj6QjC,GAAA89B,GAAA99B,EAAA,GAEA89B,KAAAO,EAAA,UAA8BnnB,OAAAlX,EAAA,OxIu6QxB,SAAUN,EAAQD,EAASO,GyIz6QjCN,EAAAD,SAAkBgC,QAAAzB,EAAA,KAAAkB,YAAA,IzI+6QZ,SAAUxB,EAAQD,EAASO,G0I/6QjCA,EAAA,IACA,IAAAg5C,GAAAh5C,EAAA,GAAAY,MACAlB,GAAAD,QAAA,SAAAogC,EAAA18B,GACA,MAAA61C,GAAA3T,yBAAAxF,EAAA18B,K1Is7QM,SAAUzD,EAAQD,EAASO,G2Ix7QjC,GAAAmlC,GAAAnlC,EAAA,IACAw3C,EAAAx3C,EAAA,IAAAw/B,CAEAx/B,GAAA,0CACA,gBAAA6/B,EAAA18B,GACA,MAAAq0C,GAAArS,EAAAtF,GAAA18B,O3Ii8QM,SAAUzD,EAAQD,EAASO,GAEjC,Y4I/7QK8D,OAAMzC,UAAU2d,MAEnBpe,OAAOC,eAAeiD,MAAMzC,UAAW,QAErCoB,MAAO,SAASovB,GAEd,GAAY,MAAR/xB,KACF,KAAM,IAAI8B,WAAU,gCAGtB,IAAIjB,GAAIC,OAAOd,MAGXma,EAAMtZ,EAAEsC,SAAW,CAGvB,IAAyB,kBAAd4uB,GACT,KAAM,IAAIjwB,WAAU,+BAUtB,KANA,GAAIy3C,GAAUxzC,UAAU,GAGpBG,EAAI,EAGDA,EAAIiU,GAAK,CAKd,GAAIq/B,GAAS34C,EAAEqF,EACf,IAAI6rB,EAAUxxB,KAAKg5C,EAASC,EAAQtzC,EAAGrF,GACrC,MAAO24C,EAGTtzC,U5Ik9QF,SAAUtG,EAAQD,EAASO,GAEjC,YAoBA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAjBvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,IAEThD,EAAQ85C,UAAY95C,EAAQ+5C,gBAAkB/5C,EAAQg6C,UAAYh6C,EAAQi6C,eAAiBj6C,EAAQk6C,mBAAiBtqC,E6IzgRpH,IAAAqE,GAAA1T,EAAA,G7I6gRI2T,EAAgB1R,EAAuByR,G6I5gR3CkmC,EAAA55C,EAAA,K7IghRI65C,EAAiB53C,EAAuB23C,G6I/gR5CE,EAAA95C,EAAA,K7ImhRI+5C,EAAY93C,EAAuB63C,G6IjhRjC5L,KAsBOyL,mBAAiB,SAASK,GACrC,GAAItqC,GAAQsqC,EAAGrqC,MAAM,uFACnBsqC,QACF,IAAI,WAAW51C,KAAKqL,EAAM,IAExB,MADAuqC,GAAQ,kBAAkB9jC,KAAK6jC,QAE7Bv5C,KAAM,KACNs1B,QAASlnB,SAASorC,EAAM,IAAM,IAE3B,IAAiB,WAAbvqC,EAAM,GAAiB,CAEhC,GAAa,OADbuqC,EAAQD,EAAGrqC,MAAM,iBACE,OAASlP,KAAM,QAASs1B,QAASlnB,SAASorC,EAAM,IAGnE,IAAa,OADbA,EAAQD,EAAGrqC,MAAM,kBACE,OAASlP,KAAM,OAAQs1B,QAASlnB,SAASorC,EAAM,SAEzD,WAAW51C,KAAK21C,KAAQC,EAAQD,EAAGrqC,MAAM,sBAClDD,EAAM0B,OAAO,EAAG,EAAG,mBACnB1B,EAAM0B,OAAO,EAAG,EAAG6oC,EAAM,IAI3B,OAFAvqC,GAAQA,EAAM,IAAMA,EAAM,GAAIA,EAAM,KAAOiB,UAAUupC,QAASvpC,UAAUwpC,WAAY,OAGlF15C,KAAMiP,EAAM,GACZqmB,QAASlnB,SAASa,EAAM,MAKfgqC,mBAAiB,WAC5B,GAAIU,MACAC,EAAYnM,EAAQmM,UAAUpzC,aAGlC,KAAK,GAAI9G,KAAT05C,GAAAp4C,QAA4B,CAC1B,GAAI64C,GAAgB,GAAIvhC,QAAO8gC,EAAAp4C,QAAatB,GAAGo6C,WAAWtzC,eACtDuzC,EAAsBF,EAAcnkC,KAAKkkC,EAE7C,IAA2B,MAAvBG,GAA+BA,EAAoB,GAAI,CAKzD,GAJAJ,EAAc35C,KAAOo5C,EAAAp4C,QAAatB,GAAGM,KACrC25C,EAAcK,MAAQZ,EAAAp4C,QAAatB,GAAGs6C,MAGlCZ,EAAAp4C,QAAatB,GAAGu6C,kBAAmB,CACrC,GAAIC,GAAgB,GAAI5hC,QAAO8gC,EAAAp4C,QAAatB,GAAGu6C,kBAAkBzzC,eAC7D2zC,EAAsBD,EAAcxkC,KAAKkkC,EAElB,OAAvBO,GAA+BA,EAAoB,IACrDC,EAAkBD,EAAoB,GAAIR,OAG5CS,GAAkBL,EAAoB,GAAIJ,EAE5C,QAGJ,MAAOA,IAIHS,EAAoB,SAAS9kB,EAASqkB,GAC1C,GAAIU,GAAe/kB,EAAQxxB,MAAM,IAAK,EACtC61C,GAAcW,YAAchlB,EAGxB+kB,EAAa,KAAIV,EAAcY,aAAensC,SAASisC,EAAa,KAGpEA,EAAa,KAAIV,EAAca,aAAepsC,SAASisC,EAAa,MAI7DrB,cAAY,WACvB,GAAIyB,MACAb,EAAYnM,EAAQmM,UAAUpzC,aAGlC,KAAK,GAAI9G,KAAT45C,GAAAt4C,QAAuB,CACrB,GAAI05C,GAAW,GAAIpiC,QAAOghC,EAAAt4C,QAAQtB,GAAGo6C,WAAWtzC,eAC5Cm0C,EAAiBD,EAAShlC,KAAKkkC,EAEnC,IAAsB,MAAlBe,EAAwB,CAK1B,GAJAF,EAASz6C,KAAOs5C,EAAAt4C,QAAQtB,GAAGM,KAC3By6C,EAAST,MAAQV,EAAAt4C,QAAQtB,GAAGs6C,MAGxBV,EAAAt4C,QAAQtB,GAAG41B,QACbslB,EAAatB,EAAAt4C,QAAQtB,GAAG41B,QAAUgkB,EAAAt4C,QAAQtB,GAAGm7C,iBAAoBvB,EAAAt4C,QAAQtB,GAAGm7C,iBAAmB,IAAKJ,OAG/F,IAAIE,EAAe,GACxBC,EAAaD,EAAe,GAAKrB,EAAAt4C,QAAQtB,GAAGm7C,iBAAoBvB,EAAAt4C,QAAQtB,GAAGm7C,iBAAmB,IAAKJ,OAG9F,IAAInB,EAAAt4C,QAAQtB,GAAGu6C,kBAAmB,CACvC,GAAIC,GAAgB,GAAI5hC,QAAOghC,EAAAt4C,QAAQtB,GAAGu6C,kBAAkBzzC,eACxD2zC,EAAsBD,EAAcxkC,KAAKkkC,EAElB,OAAvBO,GAA+BA,EAAoB,IACrDS,EAAaT,EAAoB,GAAKb,EAAAt4C,QAAQtB,GAAGm7C,iBAAoBvB,EAAAt4C,QAAQtB,GAAGm7C,iBAAmB,IAAKJ,GAG5G,OAGJ,MAAOA,IAIHG,EAAe,SAAStlB,EAASwlB,EAAWL,GAChD,GAAIM,GAA2C,KAA1BD,EAAUE,OAAO,EAAG,GAAY,GAAI1iC,QAAOwiC,EAAW,KAAOA,EAC5ET,EAAe/kB,EAAQxxB,MAAMi3C,EAAgB,EAElC,MAAbD,IAAkBxlB,EAAUA,EAAQ7f,QAAQ,GAAI6C,QAAOwiC,EAAW,KAAM,MAE5EL,EAASH,YAAchlB,EAGnB+kB,GAAgBA,EAAa,KAC/BI,EAASF,aAAensC,SAASisC,EAAa,KAG5CA,GAAgBA,EAAa,KAC/BI,EAASD,aAAepsC,SAASisC,EAAa,MAIrCtB,oBAAkB,WAC7B,GAAIkC,KAKJ,OAHAA,GAAev2B,OAAQ,EAAAxR,EAAAlS,SAAEiP,QAAQyU,QACjCu2B,EAAep2B,QAAS,EAAA3R,EAAAlS,SAAEiP,QAAQ4U,SAE3Bo2B,GAgBInC,cAAY,SAASS,GAChC,GAAI2B,GAAiB,qDACjB59B,EAAU49B,EAAexlC,KAAK6jC,EAElC,OADaj8B,KAAYA,EAAQ,IAAMA,EAAQ,KAAO,IAIlD69B,EAAcjC,EAAehpC,UAAU0pC,UAE7CnM,GAAQ2N,OAAS,QAAQx3C,KAAKsM,UAAU0pC,WACxCnM,EAAQ4N,SAAW,gBAAgBz3C,KAAKsM,UAAU0pC,aAAenM,EAAQ2N,OACzE3N,EAAQ6N,SAAW,UAAU13C,KAAKsM,UAAU0pC,aAAenM,EAAQ4N,WAAa5N,EAAQ2N,OACxF3N,EAAQ8N,UAAY,WAAW33C,KAAKsM,UAAU0pC,WAC9CnM,EAAQ+N,aAAgBvrC,OAAOwrC,cAC/BhO,EAAQiO,KAAOjO,EAAQ+N,YAAc,mBAAmB53C,KAAKsM,UAAU0pC,WACvEnM,EAAQkO,OAAS,kBAAkB/3C,KAAKsM,UAAU0pC,WAClDnM,EAAQmO,aAAenO,EAAQ4N,UAAY,SAASz3C,KAAKsM,UAAU0pC,WACnEnM,EAAQ2B,SAAW,6FAA6FxrC,KAAKsM,UAAU0pC,WAC/HnM,EAAQoO,MAAQ,oBAAoBj4C,KAAKsM,UAAU0pC,WACnDnM,EAAQqO,UAAY,WAAWl4C,KAAKsM,UAAU0pC,WAC9CnM,EAAQsO,eAAiB,iBAAiBn4C,KAAKsM,UAAU0pC,WACzDnM,EAAQuO,UAAY,aAAap4C,KAAKsM,UAAU0pC,WAChDnM,EAAQwO,OAAS,QAAQr4C,KAAKsM,UAAU0pC,WACxCnM,EAAQyO,MAAQ,iBAAiBt4C,KAAKsM,UAAU0pC,WAChDnM,EAAQx4B,gBAjMgB,WACtB,IAGE,MAFAC,cAAainC,QAAQ,SAAU,UAC/BjnC,aAAaknC,WAAW,WACjB,EACP,MAAOvnC,GACP,OAAO,MA4LX44B,EAAQ4O,SAxLS,WACf,IAEE,QADW,GAAIZ,eAAc,iCAE7B,MAAO5mC,GACP,SAAU3E,UAAUosC,eAAsE1tC,KAAzDsB,UAAUosC,UAAU,mCACnDpsC,UAAUosC,UAAU,iCAAiCC,mBAyL3D9O,EAAQztC,KAAOm7C,EAAYn7C,KAO3BytC,EAAQnY,QAAU6lB,EAAY7lB,QAE9BmY,EAAQmM,UAAY1pC,UAAU0pC,UAC9BnM,EAAQ7pB,KAAOq1B,IACfxL,EAAQ+O,GAAKxD,IACbvL,EAAQgP,SAAW1D,IACnBtL,EAAQiP,OAAS5D,EAAUrL,EAAQmM,eACL,KAAvB3pC,OAAO0sC,aA1DiB,WAC7B,OAAQ1sC,OAAO0sC,aACf,KAAM,GACN,IAAK,IACHlP,EAAQgP,SAASE,YAAc,WAC/B,MACF,SACElP,EAAQgP,SAASE,YAAc,e7IkkRnC39C,EAAQgC,Q6I7gROysC,G7IihRT,SAAUxuC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,G8InvRT,IAAM46C,KACJ58C,KAAM,WACNg6C,MAAO,SACPF,WAAY,uBAEZ95C,KAAM,gBACNg6C,MAAO,SACPF,WAAY,0BACZG,kBAAmB,qBAEnBj6C,KAAM,SACNg6C,MAAO,SACPF,WAAY,qBAEZ95C,KAAM,iBACNg6C,MAAO,SACPF,WAAY,oBAEZ95C,KAAM,kBACNg6C,MAAO,SACPF,WAAY,mBAEZ95C,KAAM,UACNg6C,MAAO,UACPF,WAAY,sBAEZ95C,KAAM,aACNg6C,MAAO,QACPF,WAAY,yBAEZ95C,KAAM,QACNg6C,MAAO,QACPF,WAAY,oBAEZ95C,KAAM,QACNg6C,MAAO,QACPF,WAAY,kBACZG,kBAAmB,sBAEnBj6C,KAAM,WACNg6C,MAAO,WACPF,WAAY,uBAEZ95C,KAAM,oBACNg6C,MAAO,WACPF,WAAY,yBAEZ95C,KAAM,oBACNg6C,MAAO,WACPF,WAAY,oBACZG,kBAAmB,iBAEnBj6C,KAAM,UACNg6C,MAAO,UACPF,WAAY,iBACZG,kBAAmB,mBAEnBj6C,KAAM,SACNg6C,MAAO,SACPF,WAAY,mBACZG,kBAAmB,qB9I2vRrBj7C,GAAQgC,Q8IxvRO47C,E9IyvRf39C,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,G+Il0RT,IAAM66C,KACJ78C,KAAM,eACNg6C,MAAO,UACPF,WAAY,iBACZxkB,QAAS,QAETt1B,KAAM,aACNg6C,MAAO,UACPF,WAAY,iBACZxkB,QAAS,QAETt1B,KAAM,gBACNg6C,MAAO,UACPF,WAAY,iBACZxkB,QAAS,QAETt1B,KAAM,YACNg6C,MAAO,UACPF,WAAY,iBACZxkB,QAAS,QAETt1B,KAAM,YACNg6C,MAAO,UACPF,WAAY,iBACZxkB,QAAS,QAETt1B,KAAM,cACNg6C,MAAO,UACPF,WAAY,iBACZxkB,QAAS,QAETt1B,KAAM,aACNg6C,MAAO,UACPF,WAAY,kBACZxkB,QAAS,SAETt1B,KAAM,gBACNg6C,MAAO,gBACPF,WAAY,4BAEZ95C,KAAM,gBACNg6C,MAAO,gBACPF,WAAY,+BAEZ95C,KAAM,UACNg6C,MAAO,UACPF,WAAY,YAEZ95C,KAAM,YACNg6C,MAAO,YACPF,WAAY,SAEZ95C,KAAM,UACNg6C,MAAO,UACPF,WAAY,UACZG,kBAAmB,6BAEnBj6C,KAAM,OACNg6C,MAAO,MACPF,WAAY,OACZG,kBAAmB,eACnBY,iBAAkB,UAElB76C,KAAM,OACNg6C,MAAO,MACPF,WAAY,OACZG,kBAAmB,eACnBY,iBAAkB,UAElB76C,KAAM,SACNg6C,MAAO,MACPF,WAAY,YACZG,kBAAmB,eACnBY,iBAAkB,UAElB76C,KAAM,uBACNg6C,MAAO,SACPF,WAAY,mCACZe,iBAAkB,UAElB76C,KAAM,kBACNg6C,MAAO,SACPF,WAAY,mCACZe,iBAAkB,UAElB76C,KAAM,sBACNg6C,MAAO,SACPF,WAAY,mCACZe,iBAAkB,UAElB76C,KAAM,oBACNg6C,MAAO,SACPF,WAAY,mCACZe,iBAAkB,UAElB76C,KAAM,qBACNg6C,MAAO,SACPF,WAAY,kCACZe,iBAAkB,UAElB76C,KAAM,yBACNg6C,MAAO,SACPF,WAAY,kCACZe,iBAAkB,UAElB76C,KAAM,gBACNg6C,MAAO,SACPF,WAAY,kCACZe,iBAAkB,UAElB76C,KAAM,wBACNg6C,MAAO,SACPF,WAAY,kCACZe,iBAAkB,UAElB76C,KAAM,mBACNg6C,MAAO,SACPF,WAAY,kCACZe,iBAAkB,UAElB76C,KAAM,iBACNg6C,MAAO,SACPF,WAAY,kCACZe,iBAAkB,UAElB76C,KAAM,mBACNg6C,MAAO,SACPF,WAAY,kCACZe,iBAAkB,UAElB76C,KAAM,kBACNg6C,MAAO,SACPF,WAAY,kCACZe,iBAAkB,UAElB76C,KAAM,gBACNg6C,MAAO,SACPF,WAAY,kCACZe,iBAAkB,UAElB76C,KAAM,mBACNg6C,MAAO,SACPF,WAAY,kCACZe,iBAAkB,UAElB76C,KAAM,SACNg6C,MAAO,SACPF,WAAY,WAEZ95C,KAAM,SACNg6C,MAAO,QACPF,WAAY,SACZG,kBAAmB,qBAEnBj6C,KAAM,SACNg6C,MAAO,QACPF,WAAY,WAEZ95C,KAAM,SACNg6C,MAAO,QACPF,WAAY,WAEZ95C,KAAM,QACNg6C,MAAO,QACPF,WAAY,UAEZ95C,KAAM,aACNg6C,MAAO,aACPF,WAAY,c/I00Rd96C,GAAQgC,Q+Iv0RO67C,E/Iw0Rf59C,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GgJ//RF,IAAMqP,SAAM,g+DhJogSnBrS,GAAQgC,SgJjgSNqQ,IAAKA,IhJugSD,SAAUpS,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAIJ,SAAgC1B,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAJzCyB,GiJlhS9CuqC,EAAA/tC,EAAA,IAEMu9C,EAAO,sCAGPnT,EAAO,kBAAoBmT,EAC3Bj1C,EAAQ,kBAAoBi1C,EAG5BC,EAAa,EAGbC,EADc,EAGdC,GAVQ,qDADD,qDAWgBtT,EAAM9hC,EAAOA,GACpCq1C,GAAgB,QAAS,OAAQ,OAAQ,QAAS,YAEnCxO,EjJyhSX,WiJxhSR,QAAAA,KAA2D,GAAAxpC,GAAA7F,KAA/C0gC,EAA+C36B,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,GAAvC23C,EAAYI,EAA2B/3C,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,GAAhB43C,GAAgB,EAAAh6C,EAAAhC,SAAA3B,KAAAqvC,GACzDrvC,KAAK+9C,KAAO,GAAA9P,GAAAvI,KACZ1lC,KAAK+9C,KAAKC,MAAM,gBAAiB,iBAAMn4C,GAAKo4C,UAC5Cj+C,KAAKk+C,WAAa,aAAc,sBAAuB,oBAAqB,kBAAmB,uBAAwB,sBACvHl+C,KAAK0gC,MAAQA,EACb1gC,KAAK89C,SAAWA,EjJklSlB,MA9CAzO,GAAI9tC,UiJjiSJ8E,MjJiiSsB,SiJjiShBxB,GAAS7E,KAAKm+C,IAAIt5C,EAlBN,EAkB0Bb,MAAMzC,UAAUwC,MAAMxD,KAAKwF,UAAW,KjJqiSlFspC,EAAI9tC,UiJpiSJ68C,KjJoiSqB,SiJpiShBv5C,GAAS7E,KAAKm+C,IAAIt5C,EAAO64C,EAAY15C,MAAMzC,UAAUwC,MAAMxD,KAAKwF,UAAW,KjJwiShFspC,EAAI9tC,UiJviSJ6/B,KjJuiSqB,SiJviShBv8B,GAAS7E,KAAKm+C,IAAIt5C,EAlBN,EAkByBb,MAAMzC,UAAUwC,MAAMxD,KAAKwF,UAAW,KjJ2iShFspC,EAAI9tC,UiJ1iSJ+D,MjJ0iSsB,SiJ1iShBT,GAAS7E,KAAKm+C,IAAIt5C,EAlBN,EAkB0Bb,MAAMzC,UAAUwC,MAAMxD,KAAKwF,UAAW,KjJ8iSlFspC,EAAI9tC,UiJ5iSJ08C,MjJ4iSsB,WiJ3iShBj+C,KAAK0gC,QAAU1gC,KAAK89C,SAAY99C,KAAK0gC,MAAQ1gC,KAAKq+C,eACpDr+C,KAAKq+C,cAAgBr+C,KAAK0gC,MAC1B1gC,KAAK0gC,MAAQ1gC,KAAK89C,UAGhBltC,OAAOqkB,SAAWrkB,OAAOqkB,QAAQkpB,KACnCvtC,OAAOqkB,QAAQkpB,IAAI,mCAAqCN,EAAa79C,KAAK0gC,OAAQ4J,IjJgjStF+E,EAAI9tC,UiJ5iSJm/B,MjJ4iSsB,SiJ5iShB4d,GACJt+C,KAAK0gC,MAAQ4d,GjJ+iSfjP,EAAI9tC,UiJ5iSJ48C,IjJ4iSoB,SiJ5iShBt5C,EAAO67B,EAAOS,GAChB,KAAInhC,KAAKk+C,UAAU7sC,QAAQ8vB,EAAQ,KAAO,GACtCT,EAAQ1gC,KAAK0gC,OAAjB,CAEKS,IACHA,EAAUt8B,EACVA,EAAQ,KAEV,IAAM05C,GAAQX,EAAOld,GACjB8d,EAAmB,EACnB35C,KACF25C,EAAmB,IAAM35C,EAAQ,KAE/B+L,OAAOqkB,SAAWrkB,OAAOqkB,QAAQkpB,KACnCvtC,OAAOqkB,QAAQkpB,IAAI95C,MAAM4wB,SAAU,MAAQ4oB,EAAand,GAAS,IAAM8d,EAAkBD,GAAOj6C,OAAO68B,MjJ6iSpGkO,IAGT1vC,GAAQgC,QiJ3lSa0tC,EAgDrBA,EAAIoP,YAzDgB,EA0DpBpP,EAAIqO,WAAaA,EACjBrO,EAAIqP,WAzDe,EA0DnBrP,EAAIsP,YAzDgB,EA2DpBtP,EAAI/L,YAAc,WAMhB,WALuB/zB,KAAnBvP,KAAK4+C,YACP5+C,KAAK4+C,UAAY,GAAI5+C,MACrBA,KAAK4+C,UAAUP,cAAgBr+C,KAAK4+C,UAAUle,MAC9C1gC,KAAK4+C,UAAUle,MAAQ1gC,KAAK4+C,UAAUd,UAEjC99C,KAAK4+C,WAGdvP,EAAIwP,SAAW,SAASne,GAAS1gC,KAAKsjC,cAAc5C,MAAQA,GAE5D2O,EAAIhpC,MAAQ,WAAarG,KAAKsjC,cAAcj9B,MAAMhC,MAAMrE,KAAKsjC,cAAev9B,YAC5EspC,EAAI+O,KAAO,WAAap+C,KAAKsjC,cAAc8a,KAAK/5C,MAAMrE,KAAKsjC,cAAev9B,YAC1EspC,EAAIjO,KAAO,WAAaphC,KAAKsjC,cAAclC,KAAK/8B,MAAMrE,KAAKsjC,cAAev9B,YAC1EspC,EAAI/pC,MAAQ,WAAatF,KAAKsjC,cAAch+B,MAAMjB,MAAMrE,KAAKsjC,cAAev9B,YjJyjS5EnG,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GkJvpST,IAAI+iC,GAAO,SAASzzB,GAClBjS,KAAKiS,QAAUA,GAAWrB,OAAOJ,SACjCxQ,KAAKyO,aAGPi3B,GAAKoZ,mBACHC,EAAG,YAAaC,EAAG,MAAOC,GAAI,QAC9BC,GAAI,QAASC,GAAI,OAAQC,GAAI,MAC7BC,GAAI,YACJC,GAAI,MACJC,GAAI,QACJC,GAAI,OAAQC,GAAI,KAAMC,GAAI,QAASC,GAAI,OACvCC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IACrFC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IACrFC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IACrFC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,GAAI,IAAKC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KACjFC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,KAAMC,IAAK,MAAOC,IAAK,MAAOC,IAAK,OAGjGjd,EAAKkd,qBACL,WACE,IAAI,GAAIv/C,KAAOqiC,GAAKoZ,kBACfh+C,OAAOS,UAAUC,eAAejB,KAAKmlC,EAAKoZ,kBAAmBz7C,KAC9DqiC,EAAKkd,kBAAkBld,EAAKoZ,kBAAkBz7C,KAASA,MAK7DqiC,EAAKmd,WAAa,QAAS,OAAQ,OAEnCnd,EAAKod,cAAiB,WACpB,MAAGtyC,UAAS2Q,iBACH,SAASlP,EAASlL,EAAWmc,GAClCjR,EAAQkP,iBAAiBpa,EAAWmc,GAAM,IAGtC1S,SAASuyC,YACR,SAAS9wC,EAASlL,EAAWmc,GAClCjR,EAAQ8wC,YAAY,KAAOh8C,EAAWmc,QAFrC,MAOPwiB,EAAKsd,gBAAmB,WACtB,MAAGxyC,UAASqhB,oBACH,SAAS5f,EAASlL,EAAWmc,GAClCjR,EAAQ4f,oBAAoB9qB,EAAWmc,GAAM,IAGzC1S,SAASyyC,YACR,SAAShxC,EAASlL,EAAWmc,GAClCjR,EAAQgxC,YAAY,KAAOl8C,EAAWmc,QAFrC,MAOPwiB,EAAKwd,eAAiB,SAASjoB,EAAQzkB,GACrC,OAAsC,IAA/BykB,EAAO5pB,QAAQmF,IAGxBkvB,EAAKyd,WAAa,SAASloB,GACzB,MAAOA,GAAO7kB,QAAQ,aAAc,IAAIA,QAAQ,OAAQ,MAG1DsvB,EAAK0d,WAAa,SAASnoB,GACzB,MAAOA,GAAO9zB,cAAciP,QAAQ,KAAM,SAASvG,GAAS,MAAOA,GAAM5I,iBAG3Ey+B,EAAKhT,SAAW,SAAS2wB,GACvB,MAAO3d,GAAKwd,eAAepiD,OAAOS,UAAUwW,SAASxX,KAAK8iD,GAAO,WAGnE3d,EAAK4d,cAAiB,WACpB,MAAGt/C,OAAMzC,UAAU8P,QACV,SAASkyC,EAAUC,GACxB,OAAqC,IAA9BD,EAASlyC,QAAQmyC,IAInB,SAASD,EAAUC,GACxB,IAAI,GAAInjD,GAAI,EAAGA,EAAIkjD,EAASpgD,OAAQ9C,IAClC,GAAGkjD,EAASljD,KAAOmjD,EACjB,OAAO,CAGX,QAAO,MAKb9d,EAAK+d,iBAAmB,SAASC,GAC/B,GAAIC,GAAWtjD,CAEf,KADAsjD,KACItjD,EAAI,EAAGA,EAAIqlC,EAAKmd,UAAU1/C,OAAQ9C,IACjCqlC,EAAKwd,eAAeQ,EAAgBhe,EAAKmd,UAAUxiD,KACpDsjD,EAAUh+C,KAAK+/B,EAAKmd,UAAUxiD,GAGlC,OAAOsjD,IAGTje,EAAKke,WAAa,SAASF,GACzB,GAAI/rB,GAAMt3B,CAEV,KADAs3B,EAAO+N,EAAKyd,WAAWO,GAAgBj/C,MAAM,KACzCpE,EAAI,EAAGA,EAAIs3B,EAAKx0B,OAAQ9C,IAC1B,IAAIqlC,EAAK4d,cAAc5d,EAAKmd,UAAWlrB,EAAKt3B,IAC1C,MAAOs3B,GAAKt3B,IAKlBqlC,EAAKme,gBAAkB,SAASH,GAC9B,GAAIhxC,GAAQrP,CAEZ,OAAGqiC,GAAKwd,eAAeQ,EAAgB,OAC9Bhe,EAAKyd,WAAWO,GAAgBj/C,MAAM,KAAKV,MAAM,EAAG,GAAGuD,KAAK,MAGrEoL,EAASgzB,EAAK+d,iBAAiBC,GAE/BrgD,EAAMqiC,EAAKke,WAAWF,GACnBrgD,IAAQqiC,EAAK4d,cAAc5d,EAAKmd,UAAWx/C,IAC5CqP,EAAO/M,KAAKtC,GAGPqP,EAAOpL,KAAK,OAGrBo+B,EAAKoe,QAAU,SAASC,GACtB,MAAOre,GAAKoZ,kBAAkBiF,EAAU,KAG1Cre,EAAKqe,QAAU,SAASD,GACtB,OAAQpe,EAAKkd,kBAAkBkB,IAGjCpe,EAAKnkC,UAAUkN,WAAa,WAC1B,GAAIpO,GAAGsjC,EAAO3jC,IAId,KAFAA,KAAKgkD,aAAe,EACpBhkD,KAAKikD,iBACD5jD,EAAI,EAAGA,EAAIqlC,EAAKmd,UAAU1/C,OAAQ9C,IACpCL,KAAKikD,cAAcve,EAAKmd,UAAUxiD,KAAM,CAG1CL,MAAKkkD,UAAaC,QAClBnkD,KAAKokD,QAAWD,QAChBnkD,KAAKqkD,YAAcrkD,KAAKywB,QAAQ,QAChCzwB,KAAKskD,UAAYtkD,KAAKywB,QAAQ,MAE9BiV,EAAKod,cAAc9iD,KAAKiS,QAAS,UAAWjS,KAAKqkD,aACjD3e,EAAKod,cAAc9iD,KAAKiS,QAAS,QAASjS,KAAKskD,WAC/C5e,EAAKod,cAAclyC,OAAQ,SAAU,QAAS2zC,KAC5C7e,EAAKsd,gBAAgBrf,EAAK1xB,QAAS,UAAW0xB,EAAK0gB,aACnD3e,EAAKsd,gBAAgBrf,EAAK1xB,QAAS,QAAS0xB,EAAK2gB,WACjD5e,EAAKsd,gBAAgBpyC,OAAQ,SAAU2zC,MAI3C7e,EAAKnkC,UAAUkvB,QAAU,SAAS+zB,GAChC,GAAI7gB,GAAO3jC,IACX,OAAO,UAASwV,GACd,GAAInV,GAAGokD,EAAgBC,CAKvB,KAHAlvC,EAAIA,GAAK5E,OAAO6W,MAEhBkc,EAAKqgB,YAAcxuC,EAAEuuC,QACjB1jD,EAAI,EAAGA,EAAIqlC,EAAKmd,UAAU1/C,OAAQ9C,IACpCsjC,EAAKsgB,cAAcve,EAAKmd,UAAUxiD,IAAMmV,EAAEkwB,EAAKmd,UAAUxiD,GAAK,MAQhE,KANGqlC,EAAK4d,cAAc5d,EAAKmd,UAAWnd,EAAKoe,QAAQngB,EAAKqgB,gBACtDrgB,EAAKsgB,cAAcve,EAAKoe,QAAQngB,EAAKqgB,eAAgB,GAGvDS,EAAiB9gB,EAAK,OAAS+B,EAAK0d,WAAWoB,IAE3CnkD,EAAI,EAAGA,EAAIokD,EAAeN,IAAIhhD,OAAQ9C,KACP,IAA7BokD,EAAeN,IAAI9jD,GAAGmV,IAAiBA,EAAEmc,gBAC3Cnc,EAAEmc,gBAKN,IADA+yB,EAAsB/gB,EAAK+gB,sBACxBD,EAAeC,GAChB,IAAIrkD,EAAI,EAAGA,EAAIokD,EAAeC,GAAqBvhD,OAAQ9C,KACP,IAA9CokD,EAAeC,GAAqBrkD,GAAGmV,IAAiBA,EAAEmc,gBAC5Dnc,EAAEmc,mBAOZ+T,EAAKnkC,UAAUojD,aAAe,SAASH,EAAUI,EAAS1hC,GACxD,GAAI7iB,GAAGs3B,EAAM8sB,EAAiBzkD,KAAK,OAAS0lC,EAAK0d,WAAWoB,GAM5D,KAJG9e,EAAKhT,SAASkyB,KACfA,GAAWA,IAGTvkD,EAAI,EAAGA,EAAIukD,EAAQzhD,OAAQ9C,IAC7Bs3B,EAAOitB,EAAQvkD,GACfs3B,EAAO+N,EAAKme,gBAAgBlsB,EAAO,IAEhC8sB,EAAe9sB,GAChB8sB,EAAe9sB,GAAMhyB,KAAKud,GAE1BuhC,EAAe9sB,IAASzU,EAI5B,OAAOljB,OAIT0lC,EAAKnkC,UAAUsjD,eAAiB,SAASL,EAAUI,EAAS1hC,GAC1D,GAAI7iB,GAAG4F,EAAG0xB,EAAM8sB,EAAiBzkD,KAAK,OAAS0lC,EAAK0d,WAAWoB,GAM/D,KAJG9e,EAAKhT,SAASkyB,KACfA,GAAWA,IAGTvkD,EAAI,EAAGA,EAAIukD,EAAQzhD,OAAQ9C,IAI7B,GAHAs3B,EAAOitB,EAAQvkD,GACfs3B,EAAO+N,EAAKme,gBAAgBlsB,EAAO,IAEvB,OAATzU,QACMuhC,GAAe9sB,OAEtB,IAAG8sB,EAAe9sB,GAChB,IAAI1xB,EAAI,EAAGA,EAAIw+C,EAAe9sB,GAAMx0B,OAAQ8C,IAC1C,GAAG4R,OAAO4sC,EAAe9sB,GAAM1xB,MAAQ4R,OAAOqL,GAAO,CACnDuhC,EAAe9sB,GAAMrmB,OAAOrL,EAAG,EAC/B,OAOV,MAAOjG,OAGT0lC,EAAKnkC,UAAUuE,IAAM,SAAS6xB,GAC5B,MAAO33B,MAAK6kD,eAAe,OAAQltB,EAAM,OAG3C+N,EAAKnkC,UAAUiyB,SAAW,SAASgxB,EAAU7sB,EAAMzU,GACjD,MAAiB,QAATA,OAA0B3T,KAAT2T,EAAsBljB,KAAK2kD,aAAaH,EAAU7sB,EAAMzU,GAAQljB,KAAK6kD,eAAeL,EAAU7sB,EAAMzU,IAG/HwiB,EAAKnkC,UAAUy8C,KAAO,SAASrmB,EAAMzU,GACnC,MAAOljB,MAAKwzB,SAAS,OAAQmE,EAAMzU,IAGrCwiB,EAAKnkC,UAAUujD,GAAK,SAASntB,EAAMzU,GACjC,MAAOljB,MAAKwzB,SAAS,KAAMmE,EAAMzU,IAGnCwiB,EAAKnkC,UAAUwjD,QAAU,SAASC,GAChC,MAAIA,GAIGhlD,KAAKikD,cAAce,GAHjBtf,EAAKoe,QAAQ9jD,KAAKgkD,cAM7Bte,EAAKnkC,UAAUmjD,oBAAsB,WACnC,GAAIhyC,GAAQrS,CAGZ,KADAqS,KACIrS,EAAI,EAAGA,EAAIqlC,EAAKmd,UAAU1/C,OAAQ9C,IACjCL,KAAK+kD,QAAQrf,EAAKmd,UAAUxiD,KAC7BqS,EAAO/M,KAAK+/B,EAAKmd,UAAUxiD,GAQ/B,OAJIqlC,GAAK4d,cAAc5wC,EAAQ1S,KAAK+kD,YAClCryC,EAAO/M,KAAK3F,KAAK+kD,WAGZryC,EAAOpL,KAAK,MlJqqSrB3H,EAAQgC,QkJlqSO+jC,ElJmqSf9lC,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GmJ78ST,IAAA+sC,GAAAxvC,EAAA,KnJk9SIyvC,EAEJ,SAAgC1tC,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAF3CytC,EAI5C/vC,GAAQgC,QAAUguC,EAAehuC,QACjC/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YA+BA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GA5BvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GoJ9+SxC6tB,EAAAnhC,EAAA,IpJk/SIohC,EAAgBn/B,EAAuBk/B,GoJj/S3C4I,EAAA/pC,EAAA,IpJq/SIgqC,EAAS/nC,EAAuB8nC,GoJ5+Sfgb,EpJ2/SH,SAAUxjB,GoJl/S1B,QAAAwjB,GAAYC,IAAQ,EAAAvhD,EAAAhC,SAAA3B,KAAAilD,EAAA,IAAAp/C,IAAA,EAAA2I,EAAA7M,SAAA3B,KAClByhC,EAAAlhC,KAAAP,MADkB,OAElB6F,GAAKq/C,OAASA,EACdr/C,EAAKq3B,SAAWgoB,EAAOzzC,QAHL5L,EpJojTpB,OAjEA,EAAI6I,EAAW/M,SAASsjD,EAAaxjB,IACrC,EAAInuB,EAAc3R,SAASsjD,IACzB5hD,IAAK,SACLnC,IAAK,WoJ7/SQ,MAAOlB,MAAKklD,OAAOzU,WpJ0hTlCwU,EAAY1jD,UoJxgTZ6V,OpJwgT+B,WoJngT7B,MAJApX,MAAKyR,QAAQg/B,OAASzwC,KAAKywC,OAC3BzwC,KAAKg2B,KAAO,GAAAkU,GAAAvoC,QAAS3B,KAAKyR,SAC1BzR,KAAKmlD,iBACLnlD,KAAKg2B,KAAKovB,iBAAiBplD,KAAKyR,SACzBzR,KAAKg2B,MpJkhTdivB,EAAY1jD,UoJ1gTZ4jD,epJ0gTuC,WoJ1gTtB,GAAA9nB,GAAAr9B,IAMf,OALAA,MAAKywC,OAAO4U,YAAYz9C,QAAQ,SAAC09C,GAC/B,GAAMxR,GAAS,GAAIwR,GAAOjoB,EAAKrH,KAC/BqH,GAAKrH,KAAKuvB,UAAUzR,GACpBzW,EAAKmoB,uBAAuB1R,KAEvB9zC,KAAKg2B,MpJ+gTdivB,EAAY1jD,UoJ5gTZikD,uBpJ4gT+C,SoJ5gTxB1R,GACrB,GAAM2R,GAAoB3R,EAAOvR,sBACjC,KAAK,GAAMl/B,KAAOoiD,GAChBzlD,KAAKklD,OAAO7hD,GAAOoiD,EAAkBpiD,GAAK0T,KAAK+8B,IpJghT5CmR,GACP3jB,EAAc3/B,QAEhBhC,GAAQgC,QoJhkTasjD,EpJikTrBrlD,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YA+EA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GA5EvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIyQ,GAAUlT,EAAoB,IAE9BwR,EAAWvP,EAAuBiR,GAElC1P,EAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GqJ1mTxC1P,EAAA5D,EAAA,GAEAwF,EAAAxF,EAAA,GrJ8mTI29B,EAAW17B,EAAuBuD,GqJ7mTtCk2B,EAAA17B,EAAA,IrJinTI27B,EAAc15B,EAAuBy5B,GqJhnTzCloB,EAAAxT,EAAA,IrJonTIyT,EAAYxR,EAAuBuR,GqJnnTvCgyC,EAAAxlD,EAAA,KrJunTIylD,EAAsBxjD,EAAuBujD,GqJtnTjDlb,EAAAtqC,EAAA,IrJ0nTIuqC,EAAkBtoC,EAAuBqoC,GqJznT7C2C,EAAAjtC,EAAA,IrJ6nTIktC,EAAajrC,EAAuBgrC,GqJ5nTxCE,EAAAntC,EAAA,IrJgoTIotC,EAAgBnrC,EAAuBkrC,GqJ/nT3CrN,EAAA9/B,EAAA,IrJmoTI+/B,EAAU99B,EAAuB69B,GqJloTrClE,EAAA57B,EAAA,IrJsoTI67B,EAAgB55B,EAAuB25B,GqJpoT3CiS,EAAA7tC,EAAA,IrJwoTI8tC,EAAW7rC,EAAuB4rC,GqJtoTtCn6B,EAAA1T,EAAA,GrJ0oTI2T,EAAgB1R,EAAuByR,EqJxoT3C1T,GAAA,IACA,IAAA0lD,GAAA1lD,EAAA,KrJ6oTI2lD,EAAU1jD,EAAuByjD,GqJ3oTjChjC,SAUiB2rB,ErJopTV,SAAUtS,GqJlnTnB,QAAAsS,GAAY98B,IAAS,EAAA9N,EAAAhC,SAAA3B,KAAAuuC,EAAA,IAAA1oC,IAAA,EAAA2I,EAAA7M,SAAA3B,KACnBi8B,EAAA17B,KAAAP,KAAMyR,GADa,OAEnB5L,GAAKs2B,YAAc,GAAA8D,GAAAt+B,QAAgB8P,EAAhB5L,GACnBA,EAAKigD,uBACLjgD,EAAKwqC,WAAa/C,EAAA3rC,QAAW2hC,YAAY7xB,EAAQ8xB,UACjD19B,EAAKkgD,aAAc,EACnBlgD,EAAK6qC,WACL7qC,EAAK2W,cACL3W,EAAKmgD,kBAAkB,MAEvBngD,EAAKogD,wBAA0B,iBAAMpgD,GAAKqgD,2BAC1C,EAAAryC,EAAAlS,SAAE6O,UAAUuG,KAAK,mBAAoBlR,EAAKogD,0BAC1C,EAAApyC,EAAAlS,SAAE6O,UAAUuG,KAAK,qBAAsBlR,EAAKogD,0BAC5C,EAAApyC,EAAAlS,SAAE6O,UAAUuG,KAAK,sBAAuBlR,EAAKogD,yBAC7CtyC,EAAAhS,QAAQouC,WAAY,EAAAl8B,EAAAlS,SAAEiP,QAAQmG,KAAK,SAAU,SAAClW,GAAQgF,EAAKsgD,mBAAmBtlD,KAd3DgF,ErJm/TrB,OAhYA,EAAI6I,EAAW/M,SAAS4sC,EAAMtS,IAC9B,EAAI3oB,EAAc3R,SAAS4sC,IACzBlrC,IAAK,SACLnC,IAAK,WqJtpTL,OACEklD,uBAA0B,yBAC1BlzB,UAAa,mBACbJ,WAAc,uBrJ2pThBzvB,IAAK,aACLnC,IAAK,WqJvpTL,OACEmlD,cAAe,GACfhpC,SAAU,SrJmqTZha,IAAK,UACLnC,IAAK,WqJ1pTL,QAASlB,KAAKmf,SrJqqTd9b,IAAK,OACLnC,IAAK,WqJ7pTL,MAAOlB,MAAK6zC,UAAU,aAAgB3S,EAAG,SAAC79B,GAAD,MAASA,SrJ6rTpDkrC,EAAKhtC,UqJzqTLukD,qBrJyqTsC,WqJxqTpC,GAAIzuC,MAAgBrX,KAAKyR,SAAWzR,KAAKyR,QAAQ60C,UAAYtmD,KAAKyR,QAAQ60C,SAASjvC,aACnFvT,GAAAiP,YAAYoE,WACVE,aAAcA,KrJ6qTlBk3B,EAAKhtC,UqJzqTL6jD,iBrJyqTkC,SqJzqTjB3zC,GAAS,GAAA4rB,GAAAr9B,IACxBA,MAAKkvB,MAAQrb,EAAAlS,QAAEgqB,WACf3rB,KAAKkvB,MAAM9c,QAAQpS,MACnBA,KAAKumD,iBAAmB,GAAAZ,GAAAhkD,QAAqB8P,EAASA,EAAQg/B,OAAQzwC,KAAKk8B,KAAMl8B,KAAKm8B,aACtFn8B,KAAKumD,iBACFnB,mBACAxyC,KAAK,SAAC4J,GAAD,MAAgB6gB,GAAKmpB,gBAAgBhqC,KAC1C5J,KAAK,SAAC4J,GAAD,MAAgB6gB,GAAKopB,yBAAyBjqC,MrJ+qTxD+xB,EAAKhtC,UqJ5qTLmlD,WrJ4qT4B,WqJ3qTtB5iD,EAAAqP,WAAWY,eACb/T,KAAK2mD,gBAEL3mD,KAAK4mD,iBrJ4qTTrY,EAAKhtC,UqJxqTLolD,crJwqT+B,WqJvqTxBhzC,EAAAhS,QAAQ66C,QACXx8C,KAAKwX,IAAIqO,SAAS,cAClB7lB,KAAKwX,IAAI4M,WAAW,SACpBpkB,KAAKqwC,WAAWwW,cAAiBxhC,MAAOrlB,KAAKyR,QAAQ4T,MAAOG,OAAQxlB,KAAKyR,QAAQ+T,QACjFxlB,KAAKqwC,WAAWjN,aAAgB/d,OAAO,EAAAxR,EAAAlS,SAAEiP,QAAQyU,QAASG,QAAQ,EAAA3R,EAAAlS,SAAEiP,QAAQ4U,YrJ4qThF+oB,EAAKhtC,UqJxqTLqlD,crJwqT+B,WqJvqT7B5mD,KAAKwX,IAAIuO,YAAY,cACrB/lB,KAAKqwC,WAAWjN,YAAcpjC,KAAKqwC,WAAWwW,aAC9C7mD,KAAKqwC,WAAWwW,cAAiBxhC,OAAO,EAAAxR,EAAAlS,SAAEiP,QAAQyU,QAASG,QAAQ,EAAA3R,EAAAlS,SAAEiP,QAAQ4U,UAC7ExlB,KAAKmzC,OAAOnzC,KAAKqwC,WAAWjN,crJ2qT9BmL,EAAKhtC,UqJxqTL4xC,OrJwqTwB,SqJxqTjB1hC,IACA,EAAA3N,EAAAsM,UAASqB,EAAQ+T,UAAY,EAAA1hB,EAAAsM,UAASqB,EAAQ4T,QAIjDrlB,KAAKgQ,GAAG4S,MAAM4C,OAAY/T,EAAQ+T,OAAlC,KACAxlB,KAAKgQ,GAAG4S,MAAMyC,MAAW5T,EAAQ4T,MAAjC,OAJArlB,KAAKgQ,GAAG4S,MAAM4C,OAAd,GAA0B/T,EAAQ+T,OAClCxlB,KAAKgQ,GAAG4S,MAAMyC,MAAd,GAAyB5T,EAAQ4T,OAKnCrlB,KAAKqwC,WAAWwW,cAAiBxhC,MAAOrlB,KAAKyR,QAAQ4T,MAAOG,OAAQxlB,KAAKyR,QAAQ+T,QACjFxlB,KAAKyR,QAAQ4T,MAAQ5T,EAAQ4T,MAC7BrlB,KAAKyR,QAAQ+T,OAAS/T,EAAQ+T,OAC9BxlB,KAAKqwC,WAAWjN,YAAc3xB,EAC9BzR,KAAK8mD,cAAc9mD,KAAKqwC,WAAWjN,crJ2qTrCmL,EAAKhtC,UqJxqTLwlD,qBrJwqTsC,WqJxqTf,GAAAC,GAAAhnD,KACfinD,EAAoB,WACxBD,EAAKF,eAAgBzhC,MAAO2hC,EAAKh3C,GAAGk3C,YAAa1hC,OAAQwhC,EAAKh3C,GAAGm3C,eAEnEnnD,MAAKonD,uBAAyBC,YAAYJ,EAAmB,MrJ6qT/D1Y,EAAKhtC,UqJ1qTLulD,crJ0qT+B,SqJ1qTjBQ,IACWtnD,KAAK+lD,aAAe/lD,KAAKunD,YAAcD,EAAQ9hC,QAAUxlB,KAAKwnD,WAAaF,EAAQjiC,SAExGrlB,KAAKunD,UAAYD,EAAQ9hC,OACzBxlB,KAAKwnD,SAAWF,EAAQjiC,MACxBrlB,KAAKqwC,WAAWoX,aAAeH,EAC/BtnD,KAAK+lD,aAAc,EACnB3Y,EAAAzrC,QAASyE,QAAWpG,KAAKyR,QAAQ8xB,SAAjC,IAA6C1F,EAAAl8B,QAAOqG,cAAiBs/C,GACrEtnD,KAAKoG,QAAQy3B,EAAAl8B,QAAOkJ,YAAay8C,KrJ8qTrC/Y,EAAKhtC,UqJ1qTLmmD,sBrJ0qTuC,WqJzqTjC1nD,KAAKonD,wBAAwBO,cAAc3nD,KAAKonD,yBrJ6qTtD7Y,EAAKhtC,UqJ1qTLklD,yBrJ0qT0C,SqJ1qTjBjqC,GAAY,GAAAorC,GAAA5nD,IACnC6T,GAAAlS,QAAEskB,KAAK5hB,MAAPwP,EAAAlS,QAAgB6a,GAAYuS,KAAK,WAC/B64B,EAAK14B,MAAMG,QAAXu4B,GACAA,EAAKzoC,OAAQ,EACbyoC,EAAKxhD,QAAQy3B,EAAAl8B,QAAOgJ,erJgrTxB4jC,EAAKhtC,UqJ5qTLgkD,UrJ4qT2B,SqJ5qTjBzR,GACR9zC,KAAK0wC,QAAQ/qC,KAAKmuC,IrJ+qTpBvF,EAAKhtC,UqJ5qTLsmD,UrJ4qT2B,SqJ5qTjBlnD,GACR,QAASX,KAAK6zC,UAAUlzC,IrJ+qT1B4tC,EAAKhtC,UqJ5qTLsyC,UrJ4qT2B,SqJ5qTjBlzC,GACR,MAAOX,MAAK0wC,QAAQlpC,OAAO,SAAAssC,GAAA,MAAUA,GAAOnzC,OAASA,IAAM,IrJirT7D4tC,EAAKhtC,UqJ9qTLgsB,KrJ8qTsB,SqJ9qTjBkI,EAASrJ,GAAU,GAAA07B,GAAA9nD,IACtBA,MAAKyR,QAAQ2a,SAAWA,EACxBqJ,EAAUA,GAAWA,EAAQ/yB,cAAgBsB,MAAQyxB,GAAWA,GAChEz1B,KAAKyR,QAAQgkB,QAAUA,EACvBz1B,KAAKwc,WAAW5U,QAAQ,SAAC+W,GAAD,MAAeA,GAAUwe,YACjDn9B,KAAK2wC,aAAahyB,UAAY,KAC9B3e,KAAKumD,iBAAiB90C,QAAUoC,EAAAlS,QAAEsM,OAAOjO,KAAKyR,SAAWgkB,YACzDz1B,KAAKumD,iBAAiBnB,mBACnBxyC,KAAK,SAAC4J,GAAD,MAAgBsrC,GAAKtB,gBAAgBhqC,KAC1C5J,KAAK,SAAC4J,GAAD,MAAgBsrC,GAAKrB,yBAAyBjqC,MrJurTxD+xB,EAAKhtC,UqJprTL47B,QrJorTyB,WqJnrTvBn9B,KAAK0nD,wBACL1nD,KAAKwc,WAAW5U,QAAQ,SAAC+W,GAAD,MAAeA,GAAUwe,YACjDn9B,KAAK0wC,QAAQ9oC,QAAQ,SAACksC,GAAD,MAAYA,GAAO3W,YACxCn9B,KAAKwX,IAAI7Q,SACT3G,KAAK2wC,aAAaxT,WAClB,EAAAtpB,EAAAlS,SAAE6O,UAAU6iB,OAAO,mBAAoBrzB,KAAKimD,0BAC5C,EAAApyC,EAAAlS,SAAE6O,UAAU6iB,OAAO,qBAAsBrzB,KAAKimD,0BAC9C,EAAApyC,EAAAlS,SAAE6O,UAAU6iB,OAAO,sBAAuBrzB,KAAKimD,yBAC/CjmD,KAAKwG,iBrJ2rTP+nC,EAAKhtC,UqJxrTL2kD,uBrJwrTwC,WqJvrTtClmD,KAAKoG,QAAQy3B,EAAAl8B,QAAOiJ,gBAAiB9G,EAAAqP,WAAWY,gBAChD/T,KAAK0mD,aACL1mD,KAAK2wC,aAAahuB,QrJ2rTpB4rB,EAAKhtC,UqJxrTL4kD,mBrJwrToC,SqJxrTjB1+B,GACjB,GAAI61B,IAAe,EAAAzpC,EAAAlS,SAAEiP,QAAQyU,SAAU,EAAAxR,EAAAlS,SAAEiP,QAAQ4U,SAAY,YAAc,UACvExlB,MAAK+nD,qBAAuBzK,IAChCt9C,KAAK+nD,mBAAqBzK,EAE1Bt9C,KAAK8mD,eAAgBzhC,MAAOrlB,KAAKgQ,GAAGk3C,YAAa1hC,OAAQxlB,KAAKgQ,GAAGm3C,eACjEnnD,KAAKoG,QAAQy3B,EAAAl8B,QAAOmJ,iCAClB2c,MAAOA,EACP61B,YAAat9C,KAAK+nD,uBrJ4rTtBxZ,EAAKhtC,UqJxrTLymD,yBrJwrT0C,SqJxrTjBrpC,GACvB3e,KAAK2wC,aAAasX,aAAatpC,GAC/B3e,KAAK2wC,aAAavV,UrJ2rTpBmT,EAAKhtC,UqJxrTL2mD,oBrJwrTqC,WqJvrTnCloD,KAAK2wC,aAAatiB,UAClBruB,KAAKwX,IAAIuO,YAAY,arJ2rTvBwoB,EAAKhtC,UqJxrTL4mD,mBrJwrToC,WqJvrTlCnoD,KAAK2wC,aAAanO,UrJ2rTpB+L,EAAKhtC,UqJxrTL6mD,gBrJwrTiC,SqJxrTjBzpC,GACd3e,KAAKwG,cAAcmY,GACnB3e,KAAKwc,WAAaxc,KAAKwc,WAAWhV,OAAO,SAAC/G,GAAD,MAAOA,KAAMke,KrJ6rTxD4vB,EAAKhtC,UqJ1rTL8mD,erJ0rTgC,SqJ1rTjB1pC,GACb3e,KAAK0H,SAASiX,EAAWkf,EAAAl8B,QAAOwJ,oBAAqBnL,KAAKooD,iBAC1DpoD,KAAKwc,WAAW7W,KAAKgZ,IrJ6rTvB4vB,EAAKhtC,UqJ1rTLilD,gBrJ0rTiC,SqJ1rTjBhqC,GAOd,MANAA,GAAW5U,QAAQ5H,KAAKqoD,eAAetxC,KAAK/W,OAC5CA,KAAKoG,QAAQy3B,EAAAl8B,QAAO8I,yBACpBzK,KAAKsoD,mBACLtoD,KAAKgmD,kBAAkBhmD,KAAKuoD,uBAC5BvoD,KAAKo7B,SACLp7B,KAAKwoD,iBACExoD,KAAKwc,YrJ6rTd+xB,EAAKhtC,UqJ1rTL+mD,iBrJ0rTkC,WqJ1rTf,GAAAG,GAAAzoD,IACjBA,MAAKwc,WAAW5U,QAAQ,SAAC+W,GAAD,MAAe8pC,GAAKz4C,GAAGyJ,YAAYkF,EAAUyc,SAASprB,OrJisThFu+B,EAAKhtC,UqJ9rTLmnD,gBrJ8rTiC,SqJ9rTjB76C,EAAQ4D,GACtB,GAAMkN,GAAY3e,KAAKumD,iBAAiBmC,gBAAgB76C,EAAQ4D,EAGhE,OAFAzR,MAAKqoD,eAAe1pC,GACpB3e,KAAKgQ,GAAGyJ,YAAYkF,EAAUyc,SAASprB,IAChC2O,GrJisTT4vB,EAAKhtC,UqJ9rTLykD,kBrJ8rTmC,SqJ9rTjBrnC,GACZ3e,KAAK2wC,aAAgB3wC,KAAK2wC,aAAasX,aAAatpC,IACtD3e,KAAK2wC,aAAe3wC,KAAK2oD,mBAAmB90C,EAAAlS,QAAEsM,QAAS0Q,UAAWA,EAAWiqC,aAAc5oD,KAAKgQ,IAAMhQ,KAAKyR,UAC3GzR,KAAK0H,SAAS1H,KAAK2wC,aAAc9S,EAAAl8B,QAAOwL,wBAAyBnN,KAAK6oD,kBACtE7oD,KAAK0H,SAAS1H,KAAK2wC,aAAc9S,EAAAl8B,QAAOyL,kBAAmBpN,KAAK8oD,mBAAmB/xC,KAAK/W,MAAM,IAC9FA,KAAK0H,SAAS1H,KAAK2wC,aAAc9S,EAAAl8B,QAAO0L,kBAAmBrN,KAAK8oD,mBAAmB/xC,KAAK/W,MAAM,MrJosTlGuuC,EAAKhtC,UqJhsTLonD,mBrJgsToC,SqJhsTjBl3C,GACjB,MAAIA,GAAQs3C,cAAgBt3C,EAAQs3C,aAAaC,SACxC,GAAIv3C,GAAQs3C,aAAaC,SAASv3C,GAAS2pB,SAE3C,GAAAqP,GAAA9oC,QAAiB8P,GAAS2pB,UrJgsTrCmT,EAAKhtC,UqJ5rTLgnD,oBrJ4rTqC,WqJ3rTnC,MAAKvoD,MAAK2wC,cAAiB3wC,KAAK2wC,aAAahyB,UAGtC3e,KAAK2wC,aAAahyB,UAFhB3e,KAAKwc,WAAW,IrJgsT3B+xB,EAAKhtC,UqJ3rTL8xC,mBrJ2rToC,WqJ1rTlC,GAAM10B,GAAY3e,KAAKuoD,qBACvB,OAAO5pC,IAAaA,EAAU2nC,UrJ8rThC/X,EAAKhtC,UqJ3rTLw7B,gBrJ2rTiC,WqJ1rT/B,GAAMpe,GAAY3e,KAAKuoD,qBACvB,OAAO5pC,IAAaA,EAAUoe,mBrJ8rThCwR,EAAKhtC,UqJ3rTLsnD,iBrJ2rTkC,WqJ1rThC,GAAI/kD,EAAAqP,WAAWY,eACbjQ,EAAAqP,WAAWuB,mBACNf,EAAAhS,QAAQ66C,OACXx8C,KAAKwX,IAAIuO,YAAY,2BAElB,CACL,GAAI9T,GAAU0B,EAAAhS,QAAQ66C,MAAQx8C,KAAKuoD,sBAAsBv4C,GAAKhQ,KAAKgQ,EACnElM,GAAAqP,WAAWiB,kBAAkBnC,GAExB0B,EAAAhS,QAAQ66C,OACXx8C,KAAKwX,IAAIqO,SAAS,cAGtB7lB,KAAK2wC,aAAahuB,QrJ0rTpB4rB,EAAKhtC,UqJvrTL0nD,iBrJurTkC,SqJvrTjBxhC,GACfznB,KAAK2wC,aAAahuB,KAAK8E,IrJ0rTzB8mB,EAAKhtC,UqJvrTL2nD,iBrJurTkC,WqJtrThClpD,KAAK2wC,aAAaltB,KAAKzjB,KAAKyR,QAAQ03C,wBrJ0rTtC5a,EAAKhtC,UqJvrTLunD,mBrJurToC,SqJvrTjBM,GACjBppD,KAAKuoD,sBAAsBniD,QAAQgjD,EAAQvrB,EAAAl8B,QAAOiL,4BAA4BixB,EAAAl8B,QAAOkL,6BAEjFu8C,EACFppD,KAAKwX,IAAIuO,YAAY,YACdjiB,EAAAqP,WAAWY,gBAClB/T,KAAKwX,IAAIqO,SAAS,arJ8rTtB0oB,EAAKhtC,UqJtrTL4V,UrJsrT2B,SqJtrTjB1F,GAAS,GAAA43C,GAAArpD,IACjBA,MAAKk9B,SAAWrpB,EAAAlS,QAAEsM,OAAOjO,KAAKk9B,SAAUzrB,GACxCzR,KAAK8lD,sBACL,IAAMrwB,GAAUhkB,EAAQ5D,QAAU4D,EAAQgkB,OAEtCA,IAASz1B,KAAKutB,KAAKkI,EAAShkB,EAAQ2a,UAAYpsB,KAAKyR,QAAQ2a,UAEjEpsB,KAAKoG,QAAQy3B,EAAAl8B,QAAO+I,qBACpB1K,KAAKwc,WAAW5U,QAAQ,SAAC+W,GACvBA,EAAUxH,UAAUkyC,EAAK53C,WAE3BzR,KAAK2wC,aAAax5B,UAAUnX,KAAKyR,UrJ2rTnC88B,EAAKhtC,UqJxrTLinD,erJwrTgC,aqJvrTVxoD,KAAKwX,IAAItJ,UAAYlO,KAAKwX,IAAItJ,SAAS/K,SACzCnD,KAAKwX,IAAI8xC,SAAStpD,KAAKyR,QAAQigC,gBrJ2rTnDnD,EAAKhtC,UqJxrTL65B,OrJwrTwB,WqJvrTtBp7B,KAAKwX,IAAI8L,OAAOtjB,KAAK2wC,aAAavV,SAASprB,IAEtC4S,IACHA,EAAQorB,EAAArsC,QAAOkpC,YAAPgb,EAAAlkD,SAAgCmpC,QAAS9qC,KAAKyR,QAAQq5B,YAEhE,EAAAj3B,EAAAlS,SAAE,QAAQ2hB,OAAOV,GAEjB5iB,KAAKyR,QAAQ4T,MAAQrlB,KAAKyR,QAAQ4T,OAASrlB,KAAKwX,IAAI6N,QACpDrlB,KAAKyR,QAAQ+T,OAASxlB,KAAKyR,QAAQ+T,QAAUxlB,KAAKwX,IAAIgO,QACtD,IAAMpE,IAASiE,MAAOrlB,KAAKyR,QAAQ4T,MAAOG,OAAQxlB,KAAKyR,QAAQ+T,OAQ/D,OAPAxlB,MAAKqwC,WAAWwW,aAAe7mD,KAAKqwC,WAAWjN,YAAcpjC,KAAKqwC,WAAWoX,aAAermC,EAC5FphB,KAAK0mD,aAEL1mD,KAAK6mD,cAAiBxhC,MAAOrlB,KAAKwX,IAAI6N,QAASG,OAAQxlB,KAAKwX,IAAIgO,UAEhExlB,KAAK+mD,uBAEE/mD,MrJ0rTFuuC,GACP1S,EAAYl6B,QAEdhC,GAAQgC,QqJxhUa4sC,GA+VrB,EAAA78B,EAAA/P,SAAc4sC,EAAKhtC,UAAnBw6B,EAAAp6B,SrJ6rTA/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GsJvkUT,IAAA+iD,GAAAxlD,EAAA,KtJ4kUIylD,EAEJ,SAAgC1jD,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAFtCyjD,EAIjD/lD,GAAQgC,QAAUgkD,EAAoBhkD,QACtC/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YA2CA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAxCvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIZ,GAAW7B,EAAoB,IAE/B8B,EAAWG,EAAuBJ,GAElC2B,EAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GuJxmUxC6tB,EAAAnhC,EAAA,IvJ4mUIohC,EAAgBn/B,EAAuBk/B,GuJ3mU3C37B,EAAAxF,EAAA,GvJ+mUI29B,EAAW17B,EAAuBuD,GuJ9mUtCykC,EAAAjqC,EAAA,IvJknUIkqC,EAAcjoC,EAAuBgoC,GuJjnUzCv2B,EAAA1T,EAAA,GvJqnUI2T,EAAgB1R,EAAuByR,GuJnnUtB21C,EvJ+nUE,SAAU9nB,GuJ3nU/B,QAAA8nB,GAAY93C,EAASg/B,EAAQvU,EAAMC,IAAa,EAAAx4B,EAAAhC,SAAA3B,KAAAupD,EAAA,IAAA1jD,IAAA,EAAA2I,EAAA7M,SAAA3B,KAC9CyhC,EAAAlhC,KAAAP,KAAMyR,GADwC,OAE9C5L,GAAKu2B,MAAQF,EACbr2B,EAAK4qC,OAASA,EACd5qC,EAAKs2B,YAAcA,EAJ2Bt2B,EvJusUhD,OA3EA,EAAI6I,EAAW/M,SAAS4nD,EAAkB9nB,IAC1C,EAAInuB,EAAc3R,SAAS4nD,IACzBlmD,IAAK,UACLnC,IAAK,WuJloUS,MAAOlB,MAAKk9B,UvJqoU1B9L,IAAK,SuJpoUK3f,GAAWzR,KAAKk9B,SAAWzrB,MvJopUvC83C,EAAiBhoD,UuJ3oUjB6jD,iBvJ2oU8C,WuJ3oU3B,GAAA/nB,GAAAr9B,IACjB,OAAO6T,GAAAlS,QAAEgqB,SAAS,SAACvZ,GACjBA,EAAQid,QAAQgO,EAAK5rB,QAAQgkB,QAAQruB,IAAI,SAACyG,GACxC,MAAOwvB,GAAKqrB,gBAAgB76C,SvJkpUlC07C,EAAiBhoD,UuJ7oUjBioD,mBvJ6oUgD,SuJ7oU7B37C,EAAQue,GACzB,MAAOpsB,MAAKywC,OAAOtN,gBAAgB37B,OAAO,SAAA/F,GAAA,MAAKA,GAAEg8B,QAAQ5vB,EAAQue,KAAW,IvJkpU9Em9B,EAAiBhoD,UuJ/oUjBmnD,gBvJ+oU6C,SuJ/oU7B76C,GACd,GAAI47C,GAAiB,KACnBr9B,EAAWpsB,KAAKyR,QAAQ2a,QACJ,iBAAlB,KAAOve,EAAP,eAAA7L,EAAAL,SAAOkM,KACT47C,EAAiB57C,EAAOA,OAAOkK,WAC3BlK,EAAOue,WACTA,EAAWve,EAAOue,WAEbq9B,EAAiB57C,EAAOkK,WAG7B0xC,EAAe55C,MAAM,WAAU45C,EAAiB74C,OAAO2F,SAASqV,SAAW69B,EAE/E,IAAIh4C,GAAUoC,EAAAlS,QAAEsM,UAAWjO,KAAKyR,SAC9Bf,IAAK+4C,EACLr9B,SAAUA,IAENs9B,EAAiB1pD,KAAKwpD,mBAAmBC,EAAgBr9B,GACzDk6B,EAAW,GAAIoD,GAAej4C,EAASzR,KAAKo8B,MAAOp8B,KAAKm8B,YAE9D1qB,GAAUoC,EAAAlS,QAAEsM,UAAWwD,GAAW60C,SAAUA,GAE5C,IAAM3nC,GAAY,GAAAyrB,GAAAzoC,QAAc8P,EAASzR,KAAKo8B,MAAOp8B,KAAKm8B,aACpDjN,EAAQrb,EAAAlS,QAAEgqB,UAIhB,OAHAuD,GAAM9c,QAAQuM,GACd3e,KAAK2pD,oBAAoBhrC,GACzB3e,KAAK2H,aAAagX,EAAWkf,EAAAl8B,QAAOyJ,gBAAiB,iBAAM8jB,GAAMG,QAAQ1Q,KAClEA,GvJmpUT4qC,EAAiBhoD,UuJhpUjBooD,oBvJgpUiD,SuJhpU7BhrC,GAClB3e,KAAKywC,OAAOmZ,iBAAiBhiD,QAAQ,SAAC09C,GACpC3mC,EAAU4mC,UAAU,GAAID,GAAO3mC,OvJopU5B4qC,GACPjoB,EAAc3/B,QAEhBhC,GAAQgC,QuJ9sUa4nD,EvJ+sUrB3pD,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YA6CA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GA1CvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIyQ,GAAUlT,EAAoB,IAE9BwR,EAAWvP,EAAuBiR,GAElC1P,EAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GwJnvUxC9N,EAAAxF,EAAA,GxJuvUI29B,EAAW17B,EAAuBuD,GwJtvUtCk2B,EAAA17B,EAAA,IxJ0vUI27B,EAAc15B,EAAuBy5B,GwJzvUzCE,EAAA57B,EAAA,IxJ6vUI67B,EAAgB55B,EAAuB25B,EwJ3vU3C57B,GAAA,IAEA,IAAA0T,GAAA1T,EAAA,GxJ+vUI2T,EAAgB1R,EAAuByR,GwJrvUtB06B,ExJiwUL,SAAUrS,GwJtqUxB,QAAAqS,GAAY78B,EAASyqB,EAAMC,IAAa,EAAAx4B,EAAAhC,SAAA3B,KAAAsuC,EAAA,IAAAzoC,IAAA,EAAA2I,EAAA7M,SAAA3B,KACtCi8B,EAAA17B,KAAAP,KAAMyR,GADgC,OAEtC5L,GAAKu2B,MAAQF,EACbr2B,EAAKgkD,YAAc,EACnBhkD,EAAKwP,OAAS,IACdxP,EAAKygD,SAAW70C,EAAQ60C,SACxBzgD,EAAKs2B,YAAcA,EACnBt2B,EAAKgiB,SAAWhU,EAAAlS,QAAEsM,UAAWpI,EAAKygD,SAASz+B,UAC3ChiB,EAAK+rC,SAAU,EACf/rC,EAAKikD,sBAAuB,EAC5BjkD,EAAK6qC,SAAW7qC,EAAKygD,UACrBzgD,EAAKy8B,aAXiCz8B,ExJgqVxC,OAzfA,EAAI6I,EAAW/M,SAAS2sC,EAAWrS,IACnC,EAAI3oB,EAAc3R,SAAS2sC,IACzBjrC,IAAK,OAQLnC,IAAK,WwJrwUM,MAAO,exJywUlBmC,IAAK,aACLnC,IAAK,WwJzwUY,OAASsc,MAAO,YAAausC,iBAAkB,OxJ6wUhE1mD,IAAK,SACLnC,IAAK,WwJ5wUL,OACE6xB,MAAS,UACTi3B,SAAY,aACZC,UAAa,aACbC,YAAe,gBACfr3B,WAAc,aACdC,WAAc,iBxJwxUhBzvB,IAAK,QACLnC,IAAK,WwJ/wUL,MAAOlB,MAAKsmD,SAAS1V,SxJ4xUrBvtC,IAAK,YACLnC,IAAK,WwJlxUL,MAAOlB,MAAKsmD,SAASzV,axJ6xUrBxtC,IAAK,OACLnC,IAAK,WwJrxUL,MAAOlB,MAAKo8B,SxJgyUZ/4B,IAAK,0BACLnC,IAAK,WwJxxUL,MAAOlB,MAAKsmD,SAAS6D,2BxJmyUrB9mD,IAAK,uBACLnC,IAAK,WwJ3xUL,MAAOlB,MAAKsmD,SAAS/oB,wBxJsyUrBl6B,IAAK,wBACLnC,IAAK,WwJ9xUL,MAAOlB,MAAKsmD,SAAS8D,uBxJwyUrBh5B,IAAK,SwJhyUmBoM,GACxBx9B,KAAKsmD,SAAS8D,sBAAwB5sB,MxJ41UxC8Q,EAAU/sC,UwJzyUV+gC,WxJyyUiC,WwJxyU/BtiC,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAOiH,kBAAmB5I,KAAKuvB,UAC5DvvB,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAOkH,oBAAqB7I,KAAKqqD,aAC9DrqD,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAOmH,eAAgB9I,KAAKmf,OACzDnf,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAOoH,mBAAoB/I,KAAKsqD,aAC7DtqD,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAOqH,oBAAqBhJ,KAAKuqD,YAC9DvqD,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAOsH,wBAAyBjJ,KAAKwqD,gBAClExqD,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAOuH,wBAAyBlJ,KAAKyqD,gBAClEzqD,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAOwH,8BAA+BnJ,KAAK0qD,sBACxE1qD,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAOyH,iBAAkBpJ,KAAK2qD,eAC3D3qD,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAO6H,uBAAwBxJ,KAAK4qD,sBACjE5qD,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAO8H,aAAczJ,KAAK6qD,yBACvD7qD,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAO+H,8BAA+B1J,KAAKkoD,qBACxEloD,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAOgI,6BAA8B3J,KAAKmoD,oBACvEnoD,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAOsI,gBAAiBjK,KAAK8qD,UAC1D9qD,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAOiI,eAAgB5J,KAAKoxC,SACzDpxC,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAOmI,cAAe9J,KAAK+qD,SACxD/qD,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAOoI,eAAgB/J,KAAKgrD,QACzDhrD,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAOuI,cAAelK,KAAKirD,SACxDjrD,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAOwI,eAAgBnK,KAAKsF,OACzDtF,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAO4I,4BAA6BvK,KAAKkrD,mBACtElrD,KAAK0H,SAAS1H,KAAKsmD,SAAUzoB,EAAAl8B,QAAO6I,0BAA2BxK,KAAKmrD,kBxJ4yUtE7c,EAAU/sC,UwJzyUV2pD,kBxJyyUwC,WwJxyUtClrD,KAAKoG,QAAQy3B,EAAAl8B,QAAO4J,+BxJ4yUtB+iC,EAAU/sC,UwJzyUV4pD,gBxJyyUsC,SwJzyUtBC,GACdprD,KAAKoG,QAAQy3B,EAAAl8B,QAAO6J,2BAA4B4/C,IxJ4yUlD9c,EAAU/sC,UwJzyUVqpD,qBxJyyU2C,SwJzyUtB/7B,GACnB7uB,KAAKoG,QAAQy3B,EAAAl8B,QAAOoJ,wBAAyB8jB,IxJ4yU/Cyf,EAAU/sC,UwJzyUVspD,wBxJyyU8C,SwJzyUtBQ,GACtBrrD,KAAK6nB,SAAW7nB,KAAKsmD,SAASz+B,SAC9B7nB,KAAKqrD,SAAWA,EAChBrrD,KAAKoG,QAAQy3B,EAAAl8B,QAAOqJ,kCAAmCqgD,IxJ4yUzD/c,EAAU/sC,UwJzyUVopD,cxJyyUoC,SwJzyUtBW,GACZtrD,KAAKoG,QAAQy3B,EAAAl8B,QAAOsJ,kBAAmBqgD,IxJ4yUzChd,EAAU/sC,UwJzyUVgqD,YxJyyUkC,SwJzyUtBC,GACVxrD,KAAKoG,QAAQy3B,EAAAl8B,QAAOuJ,uBAAwBsgD,IxJ4yU9Cld,EAAU/sC,UwJzyUVw7B,gBxJyyUsC,WwJxyUpC,MAAO/8B,MAAKsmD,SAASvpB,mBxJmzUvBuR,EAAU/sC,UwJ3yUVoyC,axJ2yUmC,WwJ1yUjC,QAAS3zC,KAAKsmD,SAASmF,YxJqzUzBnd,EAAU/sC,UwJ7yUVqyC,WxJ6yUiC,WwJ5yU/B,QAAS5zC,KAAKqrD,UxJszUhB/c,EAAU/sC,UwJ/yUV47B,QxJ+yU8B,WwJ9yU5Bn9B,KAAKoG,QAAQy3B,EAAAl8B,QAAOwJ,oBAAqBnL,KAAMA,KAAKW,MACpDX,KAAKwG,gBACLxG,KAAK0wC,QAAQ9oC,QAAQ,SAACksC,GAAD,MAAYA,GAAO3W,YACxCn9B,KAAKwX,IAAI7Q,UxJozUX2nC,EAAU/sC,UwJjzUVmqD,SxJizU+B,SwJjzUtB9oC,GACP5iB,KAAKwX,IAAIkM,IAAId,IxJozUf0rB,EAAU/sC,UwJjzUVoqD,QxJizU8B,SwJjzUtB/oC,EAAOgpC,GACb,MAAO5rD,MAAKwX,IAAIm0C,QAAQ/oC,EAAOgpC,GAAUx5C,WxJozU3Ck8B,EAAU/sC,UwJjzUV4d,MxJizU4B,WwJhzU1Bnf,KAAK4xC,SAAU,EACf5xC,KAAKoG,QAAQy3B,EAAAl8B,QAAOyJ,gBAAiBpL,KAAKW,OxJozU5C2tC,EAAU/sC,UwJjzUVu7B,UxJizUgC,WwJhzU9B,MAAO98B,MAAKsmD,SAASxpB,axJozUvBwR,EAAU/sC,UwJjzUVq7B,mBxJizUyC,WwJhzUvC,MAAO58B,MAAKsmD,SAAS1pB,sBxJozUvB0R,EAAU/sC,UwJjzUV0xC,exJizUqC,WwJhzUnC,MAAOjzC,MAAK6pD,axJozUdvb,EAAU/sC,UwJjzUVs7B,YxJizUkC,WwJhzUhC,MAAO78B,MAAKsmD,SAASzpB,exJozUvByR,EAAU/sC,UwJjzUV+D,MxJizU4B,SwJjzUtBA,GACCtF,KAAK4xC,SACR5xC,KAAKmf,QAEPnf,KAAKoG,QAAQy3B,EAAAl8B,QAAO0J,gBAAiB/F,EAAOtF,KAAKW,OxJmzUnD2tC,EAAU/sC,UwJhzUVkpD,exJgzUqC,SwJhzUtBoB,GACb7rD,KAAKoG,QAAQy3B,EAAAl8B,QAAO2J,yBAA0BugD,IxJmzUhDvd,EAAU/sC,UwJhzUV8oD,YxJgzUkC,SwJhzUtBnX,GACVlzC,KAAK6pD,YAAc3W,EAAa4Y,QAChC9rD,KAAKoG,QAAQy3B,EAAAl8B,QAAO8J,qBAAsBynC,EAAclzC,KAAKW,OxJmzU/D2tC,EAAU/sC,UwJhzUVguB,SxJgzU+B,WwJhzUb,OAAAjhB,GAAAvI,UAAA5C,OAANyB,EAAMZ,MAAAsK,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAN3J,EAAM2J,GAAAxI,UAAAwI,EAChBvO,MAAKoG,QAAL/B,MAAArE,MAAa69B,EAAAl8B,QAAO+J,oBAApBpH,OAA2CM,GAAM5E,KAAKW,SxJuzUxD2tC,EAAU/sC,UwJpzUVwpD,QxJozU8B,WwJnzU5B/qD,KAAKoG,QAAQy3B,EAAAl8B,QAAOgK,eAAgB3L,KAAKW,OxJuzU3C2tC,EAAU/sC,UwJpzUVypD,OxJozU6B,WwJnzU3BhrD,KAAKoG,QAAQy3B,EAAAl8B,QAAOkK,gBAAiB7L,KAAKW,OxJ6zU5C2tC,EAAU/sC,UwJtzUV8Q,KxJszU2B,WwJrzUzBrS,KAAKsmD,SAASj0C,QxJ+zUhBi8B,EAAU/sC,UwJxzUVi7B,KxJwzU2B,WwJvzUzBx8B,KAAKsmD,SAAS9pB,OACdx8B,KAAK6pD,YAAc,GxJi0UrBvb,EAAU/sC,UwJ1zUVg7B,MxJ0zU4B,WwJzzU1Bv8B,KAAKsmD,SAAS/pB,SxJ6zUhB+R,EAAU/sC,UwJ1zUV6vC,QxJ0zU8B,WwJzzU5BpxC,KAAKoG,QAAQy3B,EAAAl8B,QAAOmK,gBAAiB9L,KAAMA,KAAKW,MAChDX,KAAK6pD,YAAc,GxJ6zUrBvb,EAAU/sC,UwJ1zUV0pD,QxJ0zU8B,WwJzzU5BjrD,KAAKoG,QAAQy3B,EAAAl8B,QAAOiK,iBxJ6zUtB0iC,EAAU/sC,UwJ1zUVwqD,QxJ0zU8B,WwJzzUvB/rD,KAAKyR,QAAQw+B,aAAcjwC,KAAKyR,QAAQq+B,sBAC3C9vC,KAAKoG,QAAQy3B,EAAAl8B,QAAOoK,gBAAiB/L,KAAMA,KAAKW,OxJ4zUpD2tC,EAAU/sC,UwJxzUVyqD,WxJwzUiC,WwJvzU1BhsD,KAAKyR,QAAQw+B,aAAcjwC,KAAKyR,QAAQq+B,sBAC3C9vC,KAAKoG,QAAQy3B,EAAAl8B,QAAOqK,mBAAoBhM,KAAMA,KAAKW,OxJ0zUvD2tC,EAAU/sC,UwJtzUV0qD,cxJszUoC,SwJtzUtBxkC,GACPznB,KAAKyR,QAAQw+B,aAAcjwC,KAAKyR,QAAQq+B,sBAC3C9vC,KAAKoG,QAAQy3B,EAAAl8B,QAAOsK,sBAAuBwb,EAAOznB,KAAKW,OxJwzU3D2tC,EAAU/sC,UwJpzUVk7B,KxJozU2B,SwJpzUtB7tB,GACH5O,KAAKoG,QAAQy3B,EAAAl8B,QAAOyK,eAAgBwC,EAAM5O,KAAKW,MAC/CX,KAAKsmD,SAAS7pB,KAAK7tB,IxJuzUrB0/B,EAAU/sC,UwJpzUVupD,SxJozU+B,WwJnzU7B9qD,KAAKoG,QAAQy3B,EAAAl8B,QAAO0K,iBAAkBrM,KAAKW,OxJuzU7C2tC,EAAU/sC,UwJpzUVm7B,exJozUqC,SwJpzUtBC,GACb,GAAMivB,GAAW5rD,KAAK68B,aACtB,IAAIF,GAAc,GAAKA,GAAc,IAAK,CACxC,GAAM/tB,GAAOg9C,GAAYjvB,EAAa,IACtC38B,MAAKy8B,KAAK7tB,KxJwzUd0/B,EAAU/sC,UwJpzUV+xC,UxJozUgC,SwJpzUtB3wC,GACR3C,KAAKqV,OAAStG,SAASpM,EAAO,IAC9B3C,KAAKoG,QAAQy3B,EAAAl8B,QAAO2K,iBAAkB3J,EAAO3C,KAAKW,MAClDX,KAAKsmD,SAASjxC,OAAO1S,IxJuzUvB2rC,EAAU/sC,UwJpzUVyxC,WxJozUiC,WwJnzU/BhzC,KAAKoG,QAAQy3B,EAAAl8B,QAAO4K,qBAAsBvM,KAAKW,OxJuzUjD2tC,EAAU/sC,UwJpzUV+oD,YxJozUkC,WwJnzUhCtqD,KAAKoG,QAAQy3B,EAAAl8B,QAAO6K,0BAA2BxM,KAAKW,OxJuzUtD2tC,EAAU/sC,UwJpzUVgpD,WxJozUiC,WwJnzU/BvqD,KAAKoG,QAAQy3B,EAAAl8B,QAAO8K,2BAA4BzM,KAAKW,OxJ8zUvD2tC,EAAU/sC,UwJtzUVgkD,UxJszUgC,SwJtzUtBzR,GACR9zC,KAAK0wC,QAAQ/qC,KAAKmuC,IxJi0UpBxF,EAAU/sC,UwJxzUVsmD,UxJwzUgC,SwJxzUtBlnD,GACR,QAASX,KAAK6zC,UAAUlzC,IxJk0U1B2tC,EAAU/sC,UwJ1zUVsyC,UxJ0zUgC,SwJ1zUtBlzC,GACR,MAAOX,MAAK0wC,QAAQlpC,OAAO,SAAAssC,GAAA,MAAUA,GAAOnzC,OAASA,IAAM,IxJ+zU7D2tC,EAAU/sC,UwJ5zUV2qD,WxJ4zUiC,WwJ3zU1BlsD,KAAKyR,QAAQw+B,aAAcjwC,KAAKyR,QAAQq+B,sBAC3C9vC,KAAKoG,QAAQy3B,EAAAl8B,QAAOuK,wBxJ8zUxBoiC,EAAU/sC,UwJ1zUV4qD,WxJ0zUiC,WwJzzU1BnsD,KAAKyR,QAAQw+B,aAAcjwC,KAAKyR,QAAQq+B,sBAC3C9vC,KAAKoG,QAAQy3B,EAAAl8B,QAAOwK,wBxJ4zUxBmiC,EAAU/sC,UwJxzUVipD,exJwzUqC,WwJvzUnCxqD,KAAK6nB,SAAW7nB,KAAKsmD,SAASz+B,SAC9B7nB,KAAKoG,QAAQy3B,EAAAl8B,QAAO+K,2BxJ2zUtB4hC,EAAU/sC,UwJxzUVmpD,qBxJwzU2C,SwJxzUtB0B,GACnBpsD,KAAKoG,QAAQy3B,EAAAl8B,QAAOgL,+BAAgCy/C,IxJ2zUtD9d,EAAU/sC,UwJxzUV07B,sBxJwzU4C,WwJvzU1C,MAAOj9B,MAAKsmD,SAASrpB,yBxJ2zUvBqR,EAAU/sC,UwJxzUV2mD,oBxJwzU0C,WwJvzUnCloD,KAAK8pD,uBACR9pD,KAAK8pD,sBAAuB,EAC5B9pD,KAAKoG,QAAQy3B,EAAAl8B,QAAOmL,kCxJ4zUxBwhC,EAAU/sC,UwJxzUV4mD,mBxJwzUyC,WwJvzUnCnoD,KAAK8pD,uBACP9pD,KAAK8pD,sBAAuB,EAC5B9pD,KAAKoG,QAAQy3B,EAAAl8B,QAAOoL,iCxJ4zUxBuhC,EAAU/sC,UwJxzUV8qD,YxJwzUkC,YwJvzU3BrsD,KAAKyR,QAAQw+B,YAAcjwC,KAAKyR,QAAQq+B,qBAC3C9vC,KAAKwX,IAAIuO,YAAY,cAErB/lB,KAAKwX,IAAIqO,SAAS,exJ+zUtByoB,EAAU/sC,UwJtzUV4V,UxJszUgC,SwJtzUtB1F,GACRzR,KAAKk9B,SAAWrpB,EAAAlS,QAAEsM,OAAOjO,KAAKk9B,SAAUzrB,GACxCzR,KAAKqsD,cACLrsD,KAAKsmD,SAASnvC,UAAUnX,KAAKyR,SAC7BzR,KAAKoG,QAAQy3B,EAAAl8B,QAAOsL,2BxJyzUtBqhC,EAAU/sC,UwJtzUV65B,OxJszU6B,WwJnzU3B,MAFAp7B,MAAKwX,IAAI8L,OAAOtjB,KAAKsmD,SAASlrB,SAASprB,IACvChQ,KAAKqsD,cACErsD,MxJyzUFsuC,GACPzS,EAAYl6B,QAQdhC,GAAQgC,QwJpwVa2sC,GAscrB,EAAA58B,EAAA/P,SAAc2sC,EAAU/sC,UAAxBw6B,EAAAp6B,SxJk0UA/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GyJnyVjC,GAAAk1B,GAAAl1B,EAAA,IAEA,iBAAAk1B,SAAAx1B,EAAAS,EAAA+0B,EAAA,KAEA,IAKA3jB,IAAeqmB,WAAA,EAAAw0B,KAAA,EAEf76C,GAAAomB,cAPAA,GAQApmB,EAAAulB,eAAAznB,EAEArP,GAAA,GAAAk1B,EAAA3jB,EAEA2jB,GAAAm3B,SAAA3sD,EAAAD,QAAAy1B,EAAAm3B,SzJq0VM,SAAU3sD,EAAQD,EAASO,G0Jt1VjCP,EAAAC,EAAAD,QAAAO,EAAA,OAKAP,EAAAgG,MAAA/F,EAAAS,EAAA,2PAAkR,M1J+1V5Q,SAAUT,EAAQD,G2Jt1VxBC,EAAAD,QAAA,SAAA+jB,GAEA,GAAAnN,GAAA,mBAAA3F,gBAAA2F,QAEA,KAAAA,EACA,SAAA9D,OAAA,mCAIA,KAAAiR,GAAA,gBAAAA,GACA,MAAAA,EAGA,IAAAonB,GAAAv0B,EAAAqV,SAAA,KAAArV,EAAAsV,KACA2gC,EAAA1hB,EAAAv0B,EAAAk2C,SAAAr2C,QAAA,gBA2DA,OA/BAsN,GAAAtN,QAAA,+DAAAs2C,EAAAC,GAEA,GAAAC,GAAAD,EACAzlD,OACAkP,QAAA,oBAAAvV,EAAA+d,GAAwC,MAAAA,KACxCxI,QAAA,oBAAAvV,EAAA+d,GAAwC,MAAAA,IAGxC,wDAAAra,KAAAqoD,GACA,MAAAF,EAIA,IAAAG,EAcA,OAVAA,GAFA,IAAAD,EAAAv7C,QAAA,MAEAu7C,EACG,IAAAA,EAAAv7C,QAAA,KAEHy5B,EAAA8hB,EAGAJ,EAAAI,EAAAx2C,QAAA,YAIA,OAAA0K,KAAA+U,UAAAg3B,GAAA,Q3Jg3VM,SAAUjtD,EAAQD,EAASO,GAEjC,cAC4B,SAASq0B,GAgGrC,QAASpyB,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GA9FvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAI0zC,GAAan2C,EAAoB,KAEjC4sD,EAAc3qD,EAAuBk0C,GAErC3yC,EAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,G4Jt9VxC1P,EAAA5D,EAAA,GACA+tC,EAAA/tC,EAAA,IAEAwF,EAAAxF,EAAA,G5J29VI29B,EAAW17B,EAAuBuD,G4J19VtCk2B,EAAA17B,EAAA,I5J89VI27B,EAAc15B,EAAuBy5B,G4J79VzCloB,EAAAxT,EAAA,I5Ji+VIyT,EAAYxR,EAAuBuR,G4Jh+VvCy5B,EAAAjtC,EAAA,I5Jo+VIktC,EAAajrC,EAAuBgrC,G4Jn+VxCzC,EAAAxqC,EAAA,I5Ju+VIyqC,EAAaxoC,EAAuBuoC,G4Jt+VxC+B,EAAAvsC,EAAA,I5J0+VIwsC,EAAavqC,EAAuBsqC,G4Jx+VxC74B,EAAA1T,EAAA,G5J4+VI2T,EAAgB1R,EAAuByR,E4J1+V3C1T,GAAA,IACA,IAAA6sD,GAAA7sD,EAAA,K5J++VI8sD,EAAiB7qD,EAAuB4qD,G4J7+V5CE,EAAA/sD,EAAA,I5Ji/VIgtD,EAAS/qD,EAAuB8qD,G4Jh/VpCE,EAAAjtD,EAAA,I5Jo/VIktD,EAAUjrD,EAAuBgrD,G4Jn/VrCE,EAAAntD,EAAA,K5Ju/VIotD,EAASnrD,EAAuBkrD,G4Jt/VpCE,EAAArtD,EAAA,K5J0/VIstD,EAAWrrD,EAAuBorD,G4Jz/VtCE,EAAAvtD,EAAA,K5J6/VIwtD,EAASvrD,EAAuBsrD,G4J5/VpCE,EAAAztD,EAAA,K5JggWI0tD,EAAWzrD,EAAuBwrD,G4J//VtCE,EAAA3tD,EAAA,K5JmgWI4tD,EAAW3rD,EAAuB0rD,G4JlgWtCE,EAAA7tD,EAAA,K5JsgWI8tD,EAAO7rD,EAAuB4rD,G4JpgWb1f,E5JwgWF,SAAUpS,G4Jj+V3B,QAAAoS,GAAY58B,IAAS,EAAA9N,EAAAhC,SAAA3B,KAAAquC,EAAA,IAAAxoC,IAAA,EAAA2I,EAAA7M,SAAA3B,KACnBi8B,EAAA17B,KAAAP,KAAMyR,GADa,OAEnB5L,GAAKgqC,cAAgBhqC,EAAK4L,QAAQo+B,cAClChqC,EAAK8Y,UAAYlN,EAAQkN,UACzB9Y,EAAKooD,qBAAuB,KAC5BpoD,EAAKqoD,qBAAuB,KAC5BroD,EAAKsoD,aAAc,EACnBtoD,EAAKuoD,8BAAgC,KACrCvoD,EAAKwoD,mBACLxoD,EAAKyoD,oBACLzoD,EAAKgiB,UACH5C,MAAO,OAAQ,OAAQ,SACvBspC,OAAQ,UACR5sD,SAAU,WAAY,UAAW,aAEnCkE,EAAKk4C,KAAO,GAAA9P,GAAAvI,KAAS7/B,EAAK4L,QAAQm3C,cAClC/iD,EAAK2oD,gBAED3oD,EAAK8Y,UACF9K,EAAAlS,QAAEme,cAAcja,EAAK8Y,UAAUkJ,YAClChiB,EAAKgiB,SAAWhU,EAAAlS,QAAEsM,UAAWpI,EAAK8Y,UAAUkJ,WAEvChiB,EAAKgiB,YAGdhiB,EAAK4oD,cAAe,GACf5oD,EAAK8Y,WAAa9Y,EAAK8Y,UAAUmrC,sBAAyBjkD,EAAK4L,QAAQw+B,aAC1EpqC,EAAKwoB,UAEPxoB,EAAK6oD,gBAAkB,SAACjnC,GAAD,MAAW5hB,GAAK8oD,SAASlnC,IAChD5hB,EAAK+oD,kBAAoB,SAACnnC,GAAD,MAAW5hB,GAAKgpD,WAAWpnC,KACpD,EAAA5T,EAAAlS,SAAE6O,UAAUuG,KAAK,UAAWlR,EAAK6oD,kBACjC,EAAA76C,EAAAlS,SAAE6O,UAAUuG,KAAK,YAAalR,EAAK+oD,mBAhChB/oD,E5J0rXrB,OAxtBA,EAAI6I,EAAW/M,SAAS0sC,EAAcpS,IACtC,EAAI3oB,EAAc3R,SAAS0sC,IACzBhrC,IAAK,OACLnC,IAAK,W4J3gWM,MAAO,kB5J+gWlBmC,IAAK,WACLnC,IAAK,W4J/gWU,MAAOlB,MAAKyuD,cAAiBzuD,KAAK2e,WAAa3e,KAAK2e,UAAUoe,oBAAsB2P,EAAA/qC,QAASq7B,S5JmhW5G35B,IAAK,aACLnC,IAAK,W4JjhWL,OACEsc,MAAS,gBACTsxC,qBAAsB,O5JshWxBzrD,IAAK,SACLnC,IAAK,W4JlhWL,OACE6tD,oBAAqB,OACrBC,qBAAsB,QACtBC,yBAA0B,kBAC1BC,oBAAqB,OACrBC,wBAAyB,iBACzBC,0BAA2B,mBAC3BC,qCAAsC,OACtCC,oCAAqC,gBACrCC,kCAAmC,aACnCC,4CAA6C,gBAC7CC,4CAA6C,gBAC7CC,wCAAyC,kBACzCC,wCAAyC,uBACzCC,wCAAyC,gBACzCC,yCAA0C,qBAC1CC,0CAA2C,sBAC3CC,iDAAkD,qBAClDC,iDAAkD,2B5JuhWpD3sD,IAAK,WACLnC,IAAK,W4JphWU,OAAO,EAAAypC,EAAAhpC,SAAAqrD,EAAArrD,Y5JwhWtB0B,IAAK,SACLnC,IAAK,W4JvhWQ,MAAQlB,MAAK2e,WAAa3e,KAAK2e,UAAUizB,QAAW5xC,KAAK2e,UAAUtJ,OAASrV,KAAKiwD,kB5J2hW9F5sD,IAAK,QACLnC,IAAK,W4J3hWO,MAAuB,KAAhBlB,KAAKqV,W5JykW1Bg5B,EAAa9sC,U4JpiWb+sD,kB5JoiW2C,W4JniWrCtuD,KAAK2e,YACPyuB,EAAAzrC,QAAS6D,GAAMxF,KAAKyR,QAAQ8xB,SAA5B,IAAwC1F,EAAAl8B,QAAOqG,cAAiBhI,KAAKkwD,aAAclwD,MACnFA,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOgK,eAAgB3L,KAAKmwD,kBAC1DnwD,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOkK,gBAAiB7L,KAAKmwD,kBAC3DnwD,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOiK,eAAgB5L,KAAKmwD,kBAC1DnwD,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOqK,mBAAoBhM,KAAK6oD,kBAC9D7oD,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAO8J,qBAAsBzL,KAAKuxC,cAChEvxC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAO+J,mBAAoB1L,KAAKowD,mBAC9DpwD,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAO+K,yBAA0B1M,KAAKwqD,gBACpExqD,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOqJ,kCAAmChL,KAAKwqD,gBAC7ExqD,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOgL,+BAAgC3M,KAAK0qD,sBAC1E1qD,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOmL,+BAAgC9M,KAAKquB,SAC1EruB,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOoL,8BAA+B/M,KAAKwiC,QACzExiC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOmK,gBAAiB9L,KAAK4wC,OAC3D5wC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAO2K,iBAAkBtM,KAAKqwD,iBAC5DrwD,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOsL,yBAA0BjN,KAAKquD,kBACV,UAAtDruD,KAAK2e,UAAU2nC,SAASt2C,GAAGqJ,SAASlS,eAEtCnH,KAAK2H,aAAa3H,KAAK2e,UAAWkf,EAAAl8B,QAAO2J,yBAA0BtL,KAAKswD,8B5JyiW9EjiB,EAAa9sC,U4JpiWb8sB,Q5JoiWiC,W4JniW/BruB,KAAKyuD,cAAe,EACpBzuD,KAAKyjB,OACLzjB,KAAKuwD,kBACLvwD,KAAKwX,IAAIiM,Q5JuiWX4qB,EAAa9sC,U4JpiWbihC,O5JoiWgC,W4JniW1BxiC,KAAKyR,QAAQw+B,aACjBjwC,KAAKyuD,cAAe,EACpBzuD,KAAKwuD,gBACLxuD,KAAK2iB,S5JuiWP0rB,EAAa9sC,U4JpiWb8Q,K5JoiW8B,W4JniW5BrS,KAAK2e,UAAUtM,Q5JuiWjBg8B,EAAa9sC,U4JpiWbg7B,M5JoiW+B,W4JniW7Bv8B,KAAK2e,UAAU4d,S5JuiWjB8R,EAAa9sC,U4JpiWbi7B,K5JoiW8B,W4JniW5Bx8B,KAAK2e,UAAU6d,Q5JuiWjB6R,EAAa9sC,U4JpiWb8sD,iB5JoiW0C,W4JniWxC,GAAMmC,GAAiBxwD,KAAK6vC,cAAiB/rC,EAAAoP,OAAOyC,QAAQ,UAAY,IAClElE,EAAUzR,KAAK2e,WAAa3e,KAAK2e,UAAUlN,SAAWzR,KAAKyR,OACjEzR,MAAKszC,UAAU7hC,EAAQ+hC,KAAO,EAAIgd,GAAe,I5JuiWnDniB,EAAa9sC,U4JpiWb8uD,gB5JoiWyC,W4JniWvCrwD,KAAKywD,kB5JuiWPpiB,EAAa9sC,U4JpiWb+uD,2B5JoiWoD,W4JniWlD,GAAII,GAAQ1wD,KAAK2e,UAAU2nC,SAASt2C,IAG/BlM,EAAAqP,WAAW6B,qBAAuB07C,EAAMC,2BAC3C3wD,KAAKouD,+BAAgC,EACrCpuD,KAAKwqD,mB5JwiWTnc,EAAa9sC,U4JpiWbkvD,e5JoiWwC,W4JniWtC,GAAKzwD,KAAK4wD,SAAV,CAKA5wD,KAAK6wD,oBAAoB3xC,KAAK,eAAewE,OAC7C,IAAMotC,GAAiB9wD,KAAK6wD,oBAAoBxrC,QAC1C0rC,EAAW/wD,KAAKgxD,qBAAqB3rC,QACrCV,GAAUmsC,EAAiBC,GAAY,EACvChc,EAAMgc,EAAW/wD,KAAKqV,OAAS,IAAQsP,CAC7C3kB,MAAKixD,eAAevtC,KAAM2B,MAAUrlB,KAAKqV,OAAf,MAC1BrV,KAAKkxD,mBAAmBxtC,KAAMuB,KAAM8vB,IAGpC/0C,KAAK6wD,oBAAoB3xC,KAAK,0BAA0B6G,YAAY,OACpE,IAAM3U,GAAOkU,KAAKue,KAAK7jC,KAAKqV,OAAS,GACrCrV,MAAK6wD,oBAAoB3xC,KAAK,0BAA0Bnb,MAAM,EAAGqN,GAAMyU,SAAS,QAChF7lB,KAAKmxD,YAAYzyC,KAAK,IACtB1e,KAAKmxD,YAAYprC,YAAY,SACxB/lB,KAAK4R,OACR5R,KAAKmxD,YAAY7tC,OAAjBoqC,EAAA/rD,SACA3B,KAAKmxD,YAAYtrC,SAAS,UAFT7lB,KAAKmxD,YAAY7tC,OAAjBkqC,EAAA7rD,SAInB3B,KAAKoxD,iBAAiBpxD,KAAKmxD,e5JyiW7B9iB,EAAa9sC,U4JtiWb4uD,iB5JsiW0C,W4JriWxCnwD,KAAKqxD,iBAAiB3yC,KAAK,IAC3B1e,KAAKsxD,gBAAgB5yC,KAAK,IACtB1e,KAAK2e,WAAa3e,KAAK2e,UAAUme,aACnC98B,KAAKqxD,iBAAiB/tC,OAAtB8pC,EAAAzrD,SACA3B,KAAKsxD,gBAAgBhuC,OAArBgqC,EAAA3rD,SACA3B,KAAKoG,QAAQy3B,EAAAl8B,QAAO6L,wBAEpBxN,KAAKqxD,iBAAiB/tC,OAAtB4pC,EAAAvrD,SACA3B,KAAKsxD,gBAAgBhuC,OAArB4pC,EAAAvrD,SACA3B,KAAKoG,QAAQy3B,EAAAl8B,QAAO8L,yBAChBkG,EAAAhS,QAAQouC,UACV/vC,KAAK2iB,QAGT3iB,KAAKoxD,iBAAiBpxD,KAAKqxD,kBAC3BrxD,KAAKoxD,iBAAiBpxD,KAAKsxD,kB5JuiW7BjjB,EAAa9sC,U4JpiWbgwD,mB5JoiW4C,S4JpiWzB9pC,GACjB,GAAIznB,KAAK6nB,SAAS2pC,YAAa,CAC7B,GAAMC,GAAUhqC,EAAMiqC,MAAQ1xD,KAAK2xD,kBAAkBhtC,SAASM,KAAQjlB,KAAK4xD,cAAcvsC,QAAU,CACnGrlB,MAAK4xD,cAAcluC,KAAMuB,KAAMwsC,IAEjCzxD,KAAKoG,QAAQy3B,EAAAl8B,QAAO2L,+BAAgCma,I5JuiWtD4mB,EAAa9sC,U4JpiWbswD,oB5JoiW6C,S4JpiWzBpqC,GAClBznB,KAAKoG,QAAQy3B,EAAAl8B,QAAO4L,gCAAiCka,I5JuiWvD4mB,EAAa9sC,U4JpiWbuwD,c5JoiWuC,S4JpiWzBrqC,GACZznB,KAAKszC,UAAUtzC,KAAK+xD,qBAAqBtqC,K5JuiW3C4mB,EAAa9sC,U4JpiWbywD,qB5JoiW8C,S4JpiWzBvqC,GACfznB,KAAKiyD,mBACPjyD,KAAKszC,UAAUtzC,KAAK+xD,qBAAqBtqC,K5JsiW7C4mB,EAAa9sC,U4JniWb2uD,a5JmiWsC,S4JniWzB9uC,GACXphB,KAAKkyD,kBAAkBxzC,KAAK,IACxB5a,EAAAqP,WAAWY,eACb/T,KAAKkyD,kBAAkB5uC,OAAvBwqC,EAAAnsD,SAEA3B,KAAKkyD,kBAAkB5uC,OAAvBsqC,EAAAjsD,SAEF3B,KAAKoxD,iBAAiBpxD,KAAKkyD,mBAC3BlyD,KAAKwX,IAAIuO,YAAY,SACjB3E,EAAKiE,OAAS,KAAOrlB,KAAKyR,QAAQ0gD,gBACpCnyD,KAAKwX,IAAIqO,SAAS,S5JkiWtBwoB,EAAa9sC,U4J9hWb6wD,gB5J8hWyC,W4JxhWvC,MALIpyD,MAAK2e,UAAUme,YACjB98B,KAAK2e,UAAU4d,QAEfv8B,KAAK2e,UAAUtM,QAEV,G5J8hWTg8B,EAAa9sC,U4J3hWb8wD,e5J2hWwC,W4J1hWlCryD,KAAK2e,UAAUme,YACjB98B,KAAK2e,UAAU6d,OAEfx8B,KAAK2e,UAAUtM,Q5J2hWnBg8B,EAAa9sC,U4JvhWb+wD,c5JuhWuC,S4JvhWzB7qC,GACPznB,KAAK6nB,SAAS2pC,cACnBxxD,KAAKuyD,iBAAkB,EACvBvyD,KAAKwX,IAAIqO,SAAS,YAClB7lB,KAAKwyD,eAAe3sC,SAAS,8BAC7B7lB,KAAKyyD,iBAAiB5sC,SAAS,8BAC/B7lB,KAAK0yD,iBAAiB7sC,SAAS,8BAC3B4B,GACFA,EAAMkK,mB5JyhWV0c,EAAa9sC,U4JrhWboxD,gB5JqhWyC,S4JrhWzBlrC,GACdznB,KAAKiyD,mBAAoB,EACzBjyD,KAAKwX,IAAIqO,SAAS,YACd4B,GACFA,EAAMkK,kB5JuhWV0c,EAAa9sC,U4JnhWbotD,S5JmhWkC,S4JnhWzBlnC,GACHznB,KAAKuyD,iBACPvyD,KAAKy8B,KAAKhV,GAEZznB,KAAKwX,IAAIuO,YAAY,YACrB/lB,KAAKwyD,eAAezsC,YAAY,8BAChC/lB,KAAKyyD,iBAAiB1sC,YAAY,8BAClC/lB,KAAK0yD,iBAAiB3sC,YAAY,uCAClC/lB,KAAKuyD,iBAAkB,EACvBvyD,KAAKiyD,mBAAoB,G5JqhW3B5jB,EAAa9sC,U4JlhWbstD,W5JkhWoC,S4JlhWzBpnC,GACT,GAAIznB,KAAKuyD,gBAAiB,CACxB9qC,EAAMkK,gBACN,IAAM8/B,GAAUhqC,EAAMiqC,MAAQ1xD,KAAK2xD,kBAAkBhtC,SAASM,KAC1D8vB,EAAM0c,EAAUzxD,KAAK2xD,kBAAkBtsC,QAAU,GACrD0vB,GAAMzvB,KAAKwiB,IAAI,IAAKxiB,KAAKuvB,IAAIE,EAAK,IAClC/0C,KAAK4yD,kBAAkB7d,OACd/0C,MAAKiyD,oBACdxqC,EAAMkK,iBACN3xB,KAAKszC,UAAUtzC,KAAK+xD,qBAAqBtqC,M5JshW7C4mB,EAAa9sC,U4JlhWbwwD,qB5JkhW8C,S4JlhWzBtqC,GAGnB,OAFgBA,EAAMiqC,MAAQ1xD,KAAK6wD,oBAAoBlsC,SAASM,MAChCjlB,KAAK6wD,oBAAoBxrC,QAAW,K5JshWtEgpB,EAAa9sC,U4JlhWbsxD,W5JkhWoC,W4JjhWlC7yD,KAAKszC,UAAUtzC,KAAK4R,MAAQ,IAAM,I5JqhWpCy8B,EAAa9sC,U4JlhWb+xC,U5JkhWmC,S4JlhWzB3wC,GAAgC,GAAA06B,GAAAr9B,KAAzB8yD,EAAyB/sD,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,IAAAA,UAAA,EACxCpD,GAAQ2iB,KAAKwiB,IAAI,IAAKxiB,KAAKuvB,IAAIlyC,EAAO,IAItC3C,KAAKiwD,eAAiBttD,EACtB3C,KAAK6vC,gBAAkBijB,GAAmBhvD,EAAAoP,OAAO4C,QAAQ,SAAUnT,EACnE,IAAMowD,GAAwB,WACxB11B,EAAK1e,UAAUizB,QAAWvU,EAAK1e,UAAU20B,UAAU3wC,GACrD06B,EAAK11B,aAAa01B,EAAK1e,UAAWkf,EAAAl8B,QAAOyJ,gBAAiB,WACxDiyB,EAAK1e,UAAU20B,UAAU3wC,KAK1B3C,MAAK2e,UAIDo0C,IAHP/yD,KAAK2H,aAAa3H,KAAM69B,EAAAl8B,QAAO+L,8BAA+B,WAC5DqlD,O5J+hWN1kB,EAAa9sC,U4JzhWbsnD,iB5JyhW0C,W4JxhWxC7oD,KAAKoG,QAAQy3B,EAAAl8B,QAAOwL,wBAAyBnN,KAAKW,MAClDX,KAAK2e,UAAUq0B,aACfhzC,KAAKgzD,wB5J4hWP3kB,EAAa9sC,U4JzhWb0mD,a5JyhWsC,S4JzhWzBtpC,GACP3e,KAAK2e,YACP3e,KAAKwG,cAAcxG,KAAK2e,WACxB3e,KAAKouD,8BAAgC,MAEvChhB,EAAAzrC,QAASmE,IAAO9F,KAAKyR,QAAQ8xB,SAA7B,IAAyC1F,EAAAl8B,QAAOqG,cAAiBhI,KAAKkwD,aAAclwD,MACpFA,KAAK2e,UAAYA,EAEjB3e,KAAKszC,UAAUtzC,KAAKiwD,gBAAgB,GACpCjwD,KAAKmwD,mBACLnwD,KAAKsuD,oBACLtuD,KAAKwqD,iBACLxqD,KAAK2e,UAAUvY,QAAQy3B,EAAAl8B,QAAOqJ,kCAAmChL,KAAK2e,UAAUi1B,cAC5E5zC,KAAK2e,UAAUmrC,sBACjB9pD,KAAKquB,UAEPruB,KAAKoG,QAAQy3B,EAAAl8B,QAAO+L,gC5J2hWtB2gC,EAAa9sC,U4JxhWb0xD,c5JwhWuC,W4JvhWjCjzD,KAAKkzD,cACPvgD,aAAa3S,KAAKkzD,cAEpBlzD,KAAK6wD,oBAAoB9qC,YAAY,oB5J0hWvCsoB,EAAa9sC,U4JvhWb4wD,c5JuhWuC,W4JvhWV,GAAAnL,GAAAhnD,KAAf6R,EAAe9L,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,GAAL,GACjB/F,MAAK6wD,sBACN7wD,KAAKiyD,kBAAqBjyD,KAAKkzD,aAAe3gD,WAAW,iBAAMy0C,GAAKmL,iBAAiBtgD,IACnF7R,KAAKkzD,cACPvgD,aAAa3S,KAAKkzD,cAEpBlzD,KAAKkzD,aAAe3gD,WAAW,iBAAMy0C,GAAK6J,oBAAoBhrC,SAAS,oBAAoBhU,M5JoiW/Fw8B,EAAa9sC,U4JhiWbqvC,M5JgiW+B,W4J/hW7B5wC,KAAKmwD,oB5JmiWP9hB,EAAa9sC,U4JhiWb6uD,kB5JgiW2C,S4JhiWzB7gC,GAChB,GAAM4jC,GAAc5jC,EAASjB,MAAQiB,EAAS6jC,MAAQ,IAChDC,EAAY9jC,EAASu8B,QAAUv8B,EAAS6jC,MAAQ,GACtDpzD,MAAKwyD,eAAe9uC,KAAMuB,KAASkuC,EAAT,IAAyB9tC,MAAUguC,EAAYF,EAAtB,O5JmiWrD9kB,EAAa9sC,U4JhiWbgwC,a5JgiWsC,S4JhiWzB2B,GACX,IAAIlzC,KAAKuyD,gBAAT,CAEA,GAAM9rC,GAAYysB,EAAa4Y,QAAU,EAAK5Y,EAAakgB,MAAQlgB,EAAa4Y,OAEhF9rD,MAAKiuD,qBAAuBxnC,EAC5BzmB,KAAKkuD,qBAAuBhb,EAAakgB,MACzCpzD,KAAKszD,kB5JmiWPjlB,EAAa9sC,U4JhiWb+xD,c5JgiWuC,W4J/hWrC,GAAkC,OAA9BtzD,KAAKiuD,sBAA+D,OAA9BjuD,KAAKkuD,qBAA/C,CAMAluD,KAAKuzD,yBAA2B,KAC5BvzD,KAAK2e,UAAUoe,oBAAsB2P,EAAA/qC,QAASi8B,MAAQ59B,KAAK2e,UAAUi1B,gBACvE5zC,KAAKuzD,yBAA4BvzD,KAAKiuD,qBAAuBjuD,KAAKkuD,qBAAwB,KAE5FluD,KAAK4yD,kBAAkB5yD,KAAKuzD,yBAE5B,IAAMC,IAAc,EAAA1vD,EAAA6K,YAAW3O,KAAKiuD,sBAC9BwF,GAAc,EAAA3vD,EAAA6K,YAAW3O,KAAKkuD,qBAChCsF,KAAgBxzD,KAAK0zD,oBACvB1zD,KAAK2zD,UAAU3vC,KAAKwvC,GACpBxzD,KAAK0zD,kBAAoBF,GAEvBC,IAAgBzzD,KAAK4zD,oBACvB5zD,KAAK6zD,UAAU7vC,KAAKyvC,GACpBzzD,KAAK4zD,kBAAoBH,K5JmiW7BplB,EAAa9sC,U4J/hWbk7B,K5J+hW8B,S4J/hWzBhV,GACH,GAAKznB,KAAK6nB,SAAS2pC,YAAnB,CACA,GAAMC,GAAUhqC,EAAMiqC,MAAQ1xD,KAAK2xD,kBAAkBhtC,SAASM,KAC1D8vB,EAAM0c,EAAUzxD,KAAK2xD,kBAAkBtsC,QAAU,GAIrD,OAHA0vB,GAAMzvB,KAAKwiB,IAAI,IAAKxiB,KAAKuvB,IAAIE,EAAK,IAClC/0C,KAAK2e,UAAU+d,eAAeqY,GAC9B/0C,KAAK4yD,kBAAkB7d,IAChB,I5JkiWT1G,EAAa9sC,U4J/hWbuyD,e5J+hWwC,W4J9hWtC9zD,KAAKmuD,aAAc,G5JkiWrB9f,EAAa9sC,U4J/hWbwyD,iB5J+hW0C,W4J9hWxC/zD,KAAKmuD,aAAc,G5JkiWrB9f,EAAa9sC,U4J/hWbyyD,mB5J+hW4C,W4J9hW1Ch0D,KAAKi0D,iBAAkB,G5JkiWzB5lB,EAAa9sC,U4J/hWbyxD,qB5J+hW8C,W4J9hW5ChzD,KAAKi0D,iBAAkB,G5JkiWzB5lB,EAAa9sC,U4J/hWb2yD,U5J+hWmC,W4J9hWjC,OAAQl0D,KAAKwX,IAAIoO,SAAS,uB5JkiW5ByoB,EAAa9sC,U4J/hWbohB,K5J+hW8B,S4J/hWzB8E,GAAO,GAAAmgC,GAAA5nD,IACV,KAAIA,KAAKwuB,SAAT,GAIK/G,GAAUA,EAAM0sC,UAAYn0D,KAAKo0D,YAAc3sC,EAAM4sC,UAAYr0D,KAAKs0D,YAAezjD,UAAU0pC,UAAU1qC,MAAM,eAClH8C,aAAa3S,KAAKu0D,QAClBv0D,KAAKwX,IAAImL,OACT3iB,KAAKoG,QAAQy3B,EAAAl8B,QAAOyL,kBAAmBpN,KAAKW,MAC5CX,KAAKwX,IAAIuO,YAAY,sBACrB/lB,KAAKu0D,OAAShiD,WAAW,iBAAMq1C,GAAKnkC,QANtB,KAOVgE,IACFznB,KAAKo0D,WAAa3sC,EAAM0sC,QACxBn0D,KAAKs0D,WAAa7sC,EAAM4sC,Y5JuiW9BhmB,EAAa9sC,U4JliWbkiB,K5JkiW8B,W4JliWd,GAAAqkC,GAAA9nD,KAAXw0D,EAAWzuD,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,GAAH,CACX,IAAK/F,KAAKk0D,YAAV,CAEA,GAAMriD,GAAU2iD,GAAS,GACzB7hD,cAAa3S,KAAKu0D,SACbv0D,KAAKwuB,WAA8C,IAAlCxuB,KAAKyR,QAAQy3C,qBAG9BlpD,KAAKwuB,WAAagmC,GAASx0D,KAAKi0D,iBAAmBj0D,KAAKmuD,aAAenuD,KAAKuyD,iBAAmBvyD,KAAKiyD,mBAAsBjyD,KAAKu0D,OAAShiD,WAAW,iBAAMu1C,GAAKrkC,QAAQ5R,IACzK7R,KAAKoG,QAAQy3B,EAAAl8B,QAAO0L,kBAAmBrN,KAAKW,MAC5CX,KAAKwX,IAAIqO,SAAS,sBAClB7lB,KAAKmyD,cAAc,O5J6iWvB9jB,EAAa9sC,U4JziWbipD,e5JyiWwC,W4JxiWtC,GAAMiK,GAAcz0D,KAAK00D,eACrBD,GAAgBz0D,KAAKouD,+BAAkCtqD,EAAAqP,WAAW6B,sBAEpEy/C,EAAY9yD,UAAW,EAAAmC,EAAAoN,iBAAgBujD,EAAY9yD,QAAS,cAC5D8yD,EAAYxvC,OAAQ,EAAAnhB,EAAAoN,iBAAgBujD,EAAYxvC,KAAM,cACtDwvC,EAAYlG,QAAS,EAAAzqD,EAAAoN,iBAAgBujD,EAAYlG,MAAO,gBAElC,EAAAzB,EAAAnrD,SAAe3B,KAAK6nB,aAAc,EAAAilC,EAAAnrD,SAAe8yD,KAEvEz0D,KAAK6nB,SAAW4sC,EAChBz0D,KAAKo7B,W5J6iWTiT,EAAa9sC,U4JziWbmzD,Y5JyiWqC,W4JxiWnC,MAAO7gD,GAAAlS,QAAEsM,QAAO,KAAUjO,KAAK2e,UAAUkJ,W5J4iW3CwmB,EAAa9sC,U4JziWbmpD,qB5JyiW8C,S4JziWzB0B,GACnBpsD,KAAKosD,KAAOA,CACZ,IAAMvkD,GAASukD,EAAO,WAAa,aACnCpsD,MAAK20D,aAAa9sD,GAAQ,Y5J4iW5BwmC,EAAa9sC,U4JziWbqzD,qB5JyiW8C,W4JxiW5C,GAAMC,GAAS70D,KAAKwX,IAAI0H,KAAK,uBAC7Blf,MAAK6zD,UAAYgB,EAAO31C,KAAK,2CAC7Blf,KAAKkyD,kBAAoB2C,EAAO31C,KAAK,gDACrClf,KAAKqxD,iBAAmBwD,EAAO31C,KAAK,+CACpClf,KAAKsxD,gBAAkBuD,EAAO31C,KAAK,8CACnClf,KAAK2zD,UAAYkB,EAAO31C,KAAK,2CAC7Blf,KAAK2xD,kBAAoBkD,EAAO31C,KAAK,gCACrClf,KAAK4xD,cAAgBiD,EAAO31C,KAAK,4BACjClf,KAAKwyD,eAAiBqC,EAAO31C,KAAK,6BAClClf,KAAKyyD,iBAAmBoC,EAAO31C,KAAK,6BACpClf,KAAK0yD,iBAAmBmC,EAAO31C,KAAK,+BACpClf,KAAK6wD,oBAAsBgE,EAAO31C,KAAK,+BACvClf,KAAK80D,iBAAmBD,EAAO31C,KAAK,kCACpClf,KAAKmxD,YAAc0D,EAAO31C,KAAK,6BAC/Blf,KAAKgxD,qBAAuBhxD,KAAKwX,IAAI0H,KAAK,gCAC1Clf,KAAKixD,eAAiBjxD,KAAKwX,IAAI0H,KAAK,4BACpClf,KAAKkxD,mBAAqBlxD,KAAKwX,IAAI0H,KAAK,8BACxClf,KAAK20D,aAAe30D,KAAKwX,IAAI0H,KAAK,kDAClClf,KAAK+0D,kBACL/0D,KAAKg1D,mB5J4iWP3mB,EAAa9sC,U4JziWbwzD,gB5JyiWyC,W4JxiWvC/0D,KAAK0zD,kBAAoB1zD,KAAK2zD,UAAU3vC,OACxChkB,KAAK4zD,kBAAoB5zD,KAAK6zD,UAAU7vC,Q5J4iW1CqqB,EAAa9sC,U4JziWbyzD,gB5JyiWyC,W4JxiWvC,GAAMH,GAAS70D,KAAKwX,IAAI0H,KAAK,uBAC7B21C,GAAO31C,KAAK,0CAA0CoE,OAAtD4pC,EAAAvrD,SACAkzD,EAAO31C,KAAK,2CAA2CoE,OAAvD8pC,EAAAzrD,SACAkzD,EAAO31C,KAAK,0CAA0CoE,OAAtDgqC,EAAA3rD,SACA3B,KAAKqxD,iBAAiB/tC,OAAtB4pC,EAAAvrD,SACA3B,KAAKsxD,gBAAgBhuC,OAArB4pC,EAAAvrD,SACA3B,KAAKmxD,YAAY7tC,OAAjBkqC,EAAA7rD,SACA3B,KAAKkyD,kBAAkB5uC,OAAvBsqC,EAAAjsD,SACA3B,KAAK20D,aAAarxC,OAAlB0qC,EAAArsD,U5J4iWF0sC,EAAa9sC,U4JziWbqxD,kB5JyiW2C,S4JziWzBjwD,GAChBA,EAAQ2iB,KAAKuvB,IAAIvvB,KAAKwiB,IAAInlC,EAAO,KAAQ,GACrC3C,KAAKi1D,6BAA+BtyD,IAIxC3C,KAAKi1D,2BAA6BtyD,EAElC3C,KAAKyyD,iBAAiB1sC,YAAY,8BAClC/lB,KAAK0yD,iBAAiB3sC,YAAY,8BAClC/lB,KAAKyyD,iBAAiB/uC,KAAM2B,MAAU1iB,EAAV,MAC5B3C,KAAK0yD,iBAAiBhvC,KAAMuB,KAAStiB,EAAT,Q5J4iW9B0rC,EAAa9sC,U4JziWb2zD,a5JyiWsC,S4JziWzBC,GACX,GAAKn1D,KAAK6nB,SAAS2pC,YAAnB,CACA,GAAM3H,GAAc7pD,KAAK2e,UAAUs0B,iBAC7B2Y,EAAW5rD,KAAK2e,UAAUke,cAC5BpW,EAAWnB,KAAKwiB,IAAIxiB,KAAKuvB,IAAIgV,EAAcsL,EAAO,GAAIvJ,EAC1DnlC,GAAWnB,KAAKwiB,IAAe,IAAXrhB,EAAiBmlC,EAAU,KAC/C5rD,KAAK2e,UAAU+d,eAAejW,K5J4iWhC4nB,EAAa9sC,U4JziWb6zD,e5JyiWwC,S4JziWzB/xD,EAAKmO,GAAI,GAAAi3C,GAAAzoD,IACtBA,MAAK+9C,KAAKC,KAAK36C,EAAK,WAElB,MADAolD,GAAK9lC,OACEnR,O5J+iWX68B,EAAa9sC,U4J3iWbitD,c5J2iWuC,W4J3iWvB,GAAAnF,GAAArpD,IACd,KAAI2T,EAAAhS,QAAQouC,WAAY/vC,KAAKyR,QAAQy+B,yBAArC,CAEAlwC,KAAKuwD,kBAELvwD,KAAKo1D,eAAe,QAAS,iBAAM/L,GAAK+I,oBACxCpyD,KAAKo1D,eAAe,OAAQ,iBAAM/L,GAAK6L,cAAc,KACrDl1D,KAAKo1D,eAAe,QAAS,iBAAM/L,GAAK6L,aAAa,KACrDl1D,KAAKo1D,eAAe,aAAc,iBAAM/L,GAAK6L,cAAc,MAC3Dl1D,KAAKo1D,eAAe,cAAe,iBAAM/L,GAAK6L,aAAa,MAC3Dl1D,KAAKo1D,eAAe,kBAAmB,iBAAM/L,GAAK6L,cAAc,MAChEl1D,KAAKo1D,eAAe,mBAAoB,iBAAM/L,GAAK6L,aAAa,OAClD,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAC7CttD,QAAQ,SAACvH,GAAQgpD,EAAK+L,eAAe/0D,EAAG,iBAAMgpD,GAAKxhC,SAAS2pC,aAAenI,EAAK1qC,UAAU+d,eAAmB,GAAJr8B,S5JkkWhHguC,EAAa9sC,U4J/jWbgvD,gB5J+jWyC,W4J9jWnCvwD,KAAK+9C,OACP/9C,KAAK+9C,KAAKj4C,IAAI,SACd9F,KAAK+9C,KAAKj4C,IAAI,QACd9F,KAAK+9C,KAAKj4C,IAAI,SACd9F,KAAK+9C,KAAKj4C,IAAI,cACd9F,KAAK+9C,KAAKj4C,IAAI,eACd9F,KAAK+9C,KAAKj4C,IAAI,mBACd9F,KAAK+9C,KAAKj4C,IAAI,oBACd9F,KAAK+9C,KAAKj4C,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,Q5JmkWvDuoC,EAAa9sC,U4J/jWb8zD,Y5J+jWqC,W4J9jWnC,GAAIr1D,KAAKyR,QAAQs3C,aAAc,CAC7B/oD,KAAKs1D,aAAet1D,KAAKyR,QAAQs3C,aAAawM,OAC9C,IAAMC,GAAex1D,KAAKyR,QAAQs3C,aAAa0M,OAC/Cz1D,MAAKwX,IAAI0H,KAAK,6BAA6BwE,IAAI,mBAAoB8xC,GACnEx1D,KAAKwX,IAAI0H,KAAK,gCAAgCwE,IAAI,OAAQ1jB,KAAKs1D,cAC/Dt1D,KAAKwX,IAAI0H,KAAK,uCAAuCwE,IAAI,YAAa,iBAAmB1jB,KAAKs1D,gB5JmkWlGjnB,EAAa9sC,U4J/jWb6vD,iB5J+jW0C,S4J/jWzBn/C,GACXjS,KAAKs1D,cAAgBrjD,IACvB,EAAA4B,EAAAlS,SAAEsQ,GAASiN,KAAK,YAAYwE,IAAI,OAAQ1jB,KAAKs1D,e5JikWjDjnB,EAAa9sC,U4J7jWb47B,Q5J6jWiC,W4J5jW/Bn9B,KAAK2G,UACL,EAAAkN,EAAAlS,SAAE6O,UAAU6iB,OAAO,UAAWrzB,KAAK0uD,kBACnC,EAAA76C,EAAAlS,SAAE6O,UAAU6iB,OAAO,YAAarzB,KAAK4uD,mBACrC5uD,KAAKuwD,kBACLvwD,KAAKwG,iB5JukWP6nC,EAAa9sC,U4J/jWb4V,U5J+jWmC,S4J/jWzB1F,GACRzR,KAAKk9B,SAAWrpB,EAAAlS,QAAEsM,OAAOjO,KAAKk9B,SAAUzrB,GACxCzR,KAAKoG,QAAQy3B,EAAAl8B,QAAOgM,8B5JkkWtB0gC,EAAa9sC,U4J/jWb65B,O5J+jWgC,W4J/jWvB,GAAAs6B,GAAA11D,KACD6R,EAAU7R,KAAKyR,QAAQ03C,uBAAyB,GACtDnpD,MAAKwX,IAAIkH,KAAK1e,KAAKu7B,UAAW1T,SAAU7nB,KAAK6nB,YAC7C7nB,KAAK40D,uBACL50D,KAAKqxD,iBAAiBxrC,SAAS,UAC/B7lB,KAAKsxD,gBAAgBzrC,SAAS,WAE9B7lB,KAAKmwD,mBACLnwD,KAAKu0D,OAAShiD,WAAW,iBAAMmjD,GAAKjyC,QAAQ5R,GACxC7R,KAAKwuB,UACPxuB,KAAKyjB,OAKH9P,EAAAhS,QAAQs6C,UAAYtoC,EAAAhS,QAAQouC,WAC1Bp8B,EAAAhS,QAAQs0B,QAAU,GACpBj2B,KAAK80D,iBAAiBpxC,IAAI,UAAU,QAEpC1jB,KAAK6wD,oBAAoBntC,IAAI,UAAU,SAI3C1jB,KAAKyyD,iBAAiB5sC,SAAS,8BAC/B7lB,KAAK0yD,iBAAiB7sC,SAAS,6BAE/B,IAAI8vC,GAAyB,CAqB7B,OApBI31D,MAAKi1D,6BACPU,EAAyB31D,KAAKi1D,4BAEhCj1D,KAAKi1D,2BAA6B,KAClCj1D,KAAK4yD,kBAAkB+C,GAEvBphC,EAAQkS,SAAS,WACVivB,EAAK7tC,SAAS2pC,aACjBkE,EAAK/D,kBAAkB9rC,SAAS,iBAElC6vC,EAAKxF,cAAe7qC,MAAOqwC,EAAKjkD,QAAQ4T,MAAOG,OAAQkwC,EAAKjkD,QAAQ+T,SACpEkwC,EAAKvD,cAAc,KAGrBnyD,KAAKq1D,cACLr1D,KAAK0qD,qBAAqB1qD,KAAKosD,MAE/BpsD,KAAK4wD,UAAW,EAChB5wD,KAAKywD,iBACLzwD,KAAKoG,QAAQy3B,EAAAl8B,QAAOuL,uBACblN,M5J8jWFquC,GACPxS,EAAYl6B,QAQdhC,GAAQgC,Q4J1uXa0sC,EAuqBrBA,EAAapgC,OAAS,SAASE,GAC7B,OAAO,EAAArK,EAAAmK,QAAOogC,EAAclgC,I5JwkW9BvO,EAAOD,QAAUA,EAAiB,UACLY,KAAKZ,EAASO,EAAoB,MAIzD,SAAUN,EAAQD,EAASO,G6JrxXjCN,EAAAD,SAAkBgC,QAAAzB,EAAA,KAAAkB,YAAA,I7J2xXZ,SAAUxB,EAAQD,EAASO,G8J3xXjC,GAAA81B,GAAA91B,EAAA,GACAk2C,EAAApgB,EAAAlV,OAAAkV,EAAAlV,MAAuC+U,UAAA/U,KAAA+U,WACvCj2B,GAAAD,QAAA,SAAAogC,GACA,MAAAqW,GAAAvgB,UAAAxxB,MAAA+xC,EAAArwC,a9JkyXM,SAAUnG,EAAQD,EAASO,G+JpyXjC,GAAAk1B,GAAAl1B,EAAA,IAEA,iBAAAk1B,SAAAx1B,EAAAS,EAAA+0B,EAAA,KAEA,IAKA3jB,IAAeqmB,WAAA,EAAAw0B,KAAA,EAEf76C,GAAAomB,cAPAA,GAQApmB,EAAAulB,eAAAznB,EAEArP,GAAA,GAAAk1B,EAAA3jB,EAEA2jB,GAAAm3B,SAAA3sD,EAAAD,QAAAy1B,EAAAm3B,S/Js0XM,SAAU3sD,EAAQD,EAASO,GgKv1XjC,GAAAstB,GAAAttB,EAAA,GACAP,GAAAC,EAAAD,QAAAO,EAAA,OAKAP,EAAAgG,MAAA/F,EAAAS,EAAA,6SAAyTmtB,EAAAttB,EAAA,oIAAwKstB,EAAAttB,EAAA,m1VAAo4V,MhKg2X/1W,SAAUN,EAAQD,GiKt2XxBC,EAAAD,QAAA,uxFjK42XM,SAAUC,EAAQD,GkK52XxBC,EAAAD,QAAA,4KlKk3XM,SAAUC,EAAQD,GmKl3XxBC,EAAAD,QAAA,0PnKw3XM,SAAUC,EAAQD,GoKx3XxBC,EAAAD,QAAA,qYpK83XM,SAAUC,EAAQD,GqK93XxBC,EAAAD,QAAA,mNrKo4XM,SAAUC,EAAQD,GsKp4XxBC,EAAAD,QAAA,kOtK04XM,SAAUC,EAAQD,GuK14XxBC,EAAAD,QAAA,8WvKg5XM,SAAUC,EAAQD,EAASO,GwK/4XjC,GAAAk1B,GAAAl1B,EAAA,IAEA,iBAAAk1B,SAAAx1B,EAAAS,EAAA+0B,EAAA,KAEA,IAKA3jB,IAAeqmB,WAAA,EAAAw0B,KAAA,EAEf76C,GAAAomB,cAPAA,GAQApmB,EAAAulB,eAAAznB,EAEArP,GAAA,GAAAk1B,EAAA3jB,EAEA2jB,GAAAm3B,SAAA3sD,EAAAD,QAAAy1B,EAAAm3B,SxKi7XM,SAAU3sD,EAAQD,EAASO,GyKl8XjCP,EAAAC,EAAAD,QAAAO,EAAA,OAKAP,EAAAgG,MAAA/F,EAAAS,EAAA,qrFAA8sF,MzK28XxsF,SAAUT,EAAQD,EAASO,G0Kh9XjC,GAAAstB,GAAAttB,EAAA,GACAP,GAAAC,EAAAD,QAAAO,EAAA,OAKAP,EAAAgG,MAAA/F,EAAAS,EAAA,mHAA0FmtB,EAAAttB,EAAA,8BAAkH,M1Ky9XtM,SAAUN,EAAQD,G2K/9XxBC,EAAAD,QAAA,qD3Kq+XM,SAAUC,EAAQD,EAASO,GAEjC,YAuHA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GApHvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIL,GAAUpC,EAAoB,IAE9BqC,EAAWJ,EAAuBG,GAElCszD,EAAsB11D,EAAoB,IAE1C21D,EAAsB1zD,EAAuByzD,GAE7ClyD,EAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDC,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,G4K5/XxC6tB,EAAAnhC,EAAA,I5KggYIohC,EAAgBn/B,EAAuBk/B,G4K//X3CgM,EAAAntC,EAAA,I5KmgYIotC,EAAgBnrC,EAAuBkrC,G4KhgY3C5F,EAAAvnC,EAAA,I5KogYIwnC,EAAgBvlC,EAAuBslC,G4KngY3CgG,EAAAvtC,EAAA,I5KugYIwtC,EAAUvrC,EAAuBsrC,G4KtgYrCrC,EAAAlrC,EAAA,I5K0gYImrC,EAAgBlpC,EAAuBipC,G4KzgY3CuC,EAAAztC,EAAA,I5K6gYI0tC,EAAYzrC,EAAuBwrC,G4K5gYvCE,EAAA3tC,EAAA,I5KghYI4tC,EAAQ3rC,EAAuB0rC,G4K/gYnCvC,EAAAprC,EAAA,I5KmhYIqrC,EAAappC,EAAuBmpC,G4KlhYxCE,EAAAtrC,EAAA,I5KshYIurC,EAAUtpC,EAAuBqpC,G4KnhYrCE,EAAAxrC,EAAA,I5KuhYIyrC,EAAyBxpC,EAAuBupC,G4KthYpDoqB,EAAA51D,EAAA,K5K0hYI61D,EAAU5zD,EAAuB2zD,G4KzhYrClqB,EAAA1rC,EAAA,I5K6hYI2rC,EAAc1pC,EAAuBypC,G4K5hYzCE,EAAA5rC,EAAA,I5KgiYI6rC,EAAW5pC,EAAuB2pC,G4K/hYtCkqB,EAAA91D,EAAA,K5KmiYI+1D,EAAqB9zD,EAAuB6zD,G4KliYhDhqB,EAAA9rC,EAAA,I5KsiYI+rC,EAAmB9pC,EAAuB6pC,G4KniY9CE,EAAAhsC,EAAA,I5KuiYIisC,EAAiBhqC,EAAuB+pC,G4KtiY5CgqB,EAAAh2D,EAAA,K5K0iYIi2D,EAAoBh0D,EAAuB+zD,G4KziY/C9pB,EAAAlsC,EAAA,I5K6iYImsC,EAAYlqC,EAAuBiqC,G4K5iYvCgqB,EAAAl2D,EAAA,K5KgjYIm2D,EAAcl0D,EAAuBi0D,G4K/iYzCE,EAAAp2D,EAAA,K5KmjYIq2D,EAAYp0D,EAAuBm0D,G4KljYvCE,GAAAt2D,EAAA,K5KsjYIu2D,GAAct0D,EAAuBq0D,I4KrjYzCE,GAAAx2D,EAAA,K5KyjYIy2D,GAAYx0D,EAAuBu0D,I4KxjYvCE,GAAA12D,EAAA,K5K4jYI22D,GAAiB10D,EAAuBy0D,I4KnjYvBpoB,G5KokYR,SAAU/M,G4K7jYrB,QAAA+M,KAA6F,GAAjFsoB,GAAiF/wD,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,MAA3Dw9B,EAA2Dx9B,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,GAAhD,EAAGgxD,IAA6ChxD,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,KAAAA,UAAA,MAAApC,EAAAhC,SAAA3B,KAAAwuC,EAAA,IAAA3oC,IAAA,EAAA2I,EAAA7M,SAAA3B,KAC3FyhC,EAAAlhC,KAAAP,MAD2F,OAE3F6F,GAAK09B,SAAWA,EAChB19B,EAAKs9B,mBAEA4zB,IACHlxD,EAAKs9B,mBAAL7+B,QAAA,EAAAuxD,EAAAl0D,SACKkE,EAAKs9B,kBADV2K,EAAAnsC,WAMFkE,EAAKs9B,mBAAL7+B,QAAA,EAAAuxD,EAAAl0D,SACKkE,EAAKs9B,kBADVuE,EAAA/lC,QAAA0pC,EAAA1pC,UAMKo1D,IACHlxD,EAAKs9B,mBAAL7+B,QAAA,EAAAuxD,EAAAl0D,SACKkE,EAAKs9B,kBADVuK,EAAA/rC,QAAAisC,EAAAjsC,WAOFkE,EAAKs9B,mBAAL7+B,QAAA,EAAAuxD,EAAAl0D,SACKkE,EAAKs9B,kBADVoI,EAAA5pC,QAAA8pC,EAAA9pC,UAMAkE,EAAK+jD,kBAAmBje,EAAAhqC,QAAAkqC,EAAAlqC,QAAAoqC,EAAApqC,QAAAo0D,EAAAp0D,QAAAs0D,EAAAt0D,QAAAsqC,EAAAtqC,SACxBkE,EAAKw/C,aAAclZ,EAAAxqC,QAAAw0D,EAAAx0D,QAAA0qC,EAAA1qC,QAAA00D,EAAA10D,QAAA40D,EAAA50D,QAAA80D,GAAA90D,QAAAg1D,GAAAh1D,QAAAk1D,GAAAl1D,SAEdqC,MAAMqW,QAAQy8C,IACjBjxD,EAAKmxD,4BAA4BF,GAEnCjxD,EAAKoxD,mBAAmBH,GAtCmEjxD,E5K6qY7F,OA/GA,EAAI6I,EAAW/M,SAAS6sC,EAAQ/M,GAiDhC+M,EAAOjtC,U4K/jYP21D,mB5K+jYsC,S4K/jYnBxmB,GAQjB,MAPI1sC,OAAMqW,QAAQq2B,KAChBA,EAAUA,EAAQ3vB,OAAO,SAASoY,EAAM2a,GAGtC,MAFA3a,GAAK2a,EAAOhiC,QAAUqnB,EAAK2a,EAAOhiC,UAClCqnB,EAAK2a,EAAOhiC,MAAMnM,KAAKmuC,GAChB3a,QAGJuX,G5KkkYTlC,EAAOjtC,U4K/jYP41D,W5K+jY8B,S4K/jYnBlpC,GACT,GAAMmpC,GAAU,SAAC1mB,EAASoD,GAGxB,MAFApD,GAAQoD,EAAOvyC,UAAUZ,aAAgB+vC,GAAQoD,EAAOvyC,UAAUZ,MAClE+vC,EAAQoD,EAAOvyC,UAAUZ,MAAQmzC,EAC1BpD,GAEH2mB,EAAappC,EAAKqpC,YAAYF,GAAS,EAAA70D,EAAAZ,SAAc,OAErD+uC,IACN,KAAK,GAAIrtC,KAAOg0D,GACd3mB,EAAQtd,QAAQikC,EAAWh0D,GAE7B,OAAOqtC,I5KykYTlC,EAAOjtC,U4KhkYP01D,mB5KgkYsC,S4KhkYnBvmB,GACjBA,EAAU1wC,KAAKk3D,mBAAmBxmB,GAC9BA,EAAQ4V,WACVtmD,KAAKmjC,gBAAkBnjC,KAAKm3D,WAAWzmB,EAAQ4V,SAAShiD,OAAOtE,KAAKmjC,mBAElEuN,EAAQ/xB,YACV3e,KAAK4pD,iBAAmB5pD,KAAKm3D,WAAWzmB,EAAQ/xB,UAAUra,OAAOtE,KAAK4pD,oBAEpElZ,EAAQ1a,OACVh2B,KAAKqlD,YAAcrlD,KAAKm3D,WAAWzmB,EAAQ1a,KAAK1xB,OAAOtE,KAAKqlD,eAG9D/X,EAAA3rC,QAAW2hC,YAAYtjC,KAAKujC,UAAUJ,gBAAkBnjC,KAAKmjC,iB5KukY/DqL,EAAOjtC,U4K9jYPy1D,4B5K8jY+C,S4K9jYnBtmB,IACL,WAAY,YAAa,QAClC9oC,QAAQ,SAACkK,IAClB4+B,EAAQ5+B,QAAalK,QAAQ,SAACoI,GAC7B,GAAMunD,GAAe,YAAcvnD,EAAG8B,KAAO,cAAgBA,EAAO,QACpE,IAAI9B,EAAG8B,OAASA,EAAO,KAAM,IAAI5P,gBAAeq1D,Q5KmkY/C/oB,GACPlN,EAAc3/B,QAOhBhC,GAAQgC,Q4K5rYa6sC,G5K6rYrB5uC,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,G6K1uYjCA,EAAA,IACAA,EAAA,KACAN,EAAAD,QAAAO,EAAA,GAAA8D,MAAAwzD,M7KgvYM,SAAU53D,EAAQD,EAASO,GAEjC,Y8KnvYA,IAAA+E,GAAA/E,EAAA,IACA89B,EAAA99B,EAAA,IACA+zC,EAAA/zC,EAAA,IACAK,EAAAL,EAAA,KACAu3D,EAAAv3D,EAAA,KACAu0C,EAAAv0C,EAAA,IACAw3D,EAAAx3D,EAAA,KACAy3D,EAAAz3D,EAAA,IAEA89B,KAAAO,EAAAP,EAAAG,GAAAj+B,EAAA,cAAA03D,GAA0E5zD,MAAAwzD,KAAAI,KAAoB,SAE9FJ,KAAA,SAAAK,GACA,GAOA10D,GAAAuP,EAAA4iC,EAAA8B,EAPAzX,EAAAsU,EAAA4jB,GACA94B,EAAA,kBAAA/+B,WAAAgE,MACAswC,EAAAvuC,UAAA5C,OACA20D,EAAAxjB,EAAA,EAAAvuC,UAAA,OAAAwJ,GACAwoD,MAAAxoD,KAAAuoD,EACAzwD,EAAA,EACA2wD,EAAAL,EAAAh4B,EAIA,IAFAo4B,IAAAD,EAAA7yD,EAAA6yD,EAAAxjB,EAAA,EAAAvuC,UAAA,OAAAwJ,GAAA,QAEAA,IAAAyoD,GAAAj5B,GAAA/6B,OAAAyzD,EAAAO,GAMA,IADA70D,EAAAsxC,EAAA9U,EAAAx8B,QACAuP,EAAA,GAAAqsB,GAAA57B,GAAiCA,EAAAkE,EAAgBA,IACjDqwD,EAAAhlD,EAAArL,EAAA0wD,EAAAD,EAAAn4B,EAAAt4B,MAAAs4B,EAAAt4B,QANA,KAAA+vC,EAAA4gB,EAAAz3D,KAAAo/B,GAAAjtB,EAAA,GAAAqsB,KAAoDuW,EAAA8B,EAAAtzB,QAAAiL,KAAgC1nB,IACpFqwD,EAAAhlD,EAAArL,EAAA0wD,EAAAx3D,EAAA62C,EAAA0gB,GAAAxiB,EAAA3yC,MAAA0E,IAAA,GAAAiuC,EAAA3yC,MASA,OADA+P,GAAAvP,OAAAkE,EACAqL,M9K4vYM,SAAU9S,EAAQD,EAASO,G+K7xYjC,GAAAo/B,GAAAp/B,EAAA,GACAN,GAAAD,QAAA,SAAAy3C,EAAAtgC,EAAAnU,EAAAmnC,GACA,IACA,MAAAA,GAAAhzB,EAAAwoB,EAAA38B,GAAA,GAAAA,EAAA,IAAAmU,EAAAnU,GAEG,MAAA6S,GACH,GAAAyiD,GAAA7gB,EAAA,MAEA,WADA7nC,KAAA0oD,GAAA34B,EAAA24B,EAAA13D,KAAA62C,IACA5hC,K/KsyYM,SAAU5V,EAAQD,EAASO,GgL9yYjC,GAAAsoC,GAAAtoC,EAAA,IACAyoC,EAAAzoC,EAAA,gBACAg4D,EAAAl0D,MAAAzC,SAEA3B,GAAAD,QAAA,SAAAogC,GACA,WAAAxwB,KAAAwwB,IAAAyI,EAAAxkC,QAAA+7B,GAAAm4B,EAAAvvB,KAAA5I,KhLszYM,SAAUngC,EAAQD,EAASO,GAEjC,YiL7zYA,IAAAm3C,GAAAn3C,EAAA,IACA8hC,EAAA9hC,EAAA,GAEAN,GAAAD,QAAA,SAAA0B,EAAAgG,EAAA1E,GACA0E,IAAAhG,GAAAg2C,EAAA3X,EAAAr+B,EAAAgG,EAAA26B,EAAA,EAAAr/B,IACAtB,EAAAgG,GAAA1E,IjLo0YM,SAAU/C,EAAQD,EAASO,GkL10YjC,GAAAi4D,GAAAj4D,EAAA,KACAyoC,EAAAzoC,EAAA,gBACAsoC,EAAAtoC,EAAA,GACAN,GAAAD,QAAAO,EAAA,GAAAk4D,kBAAA,SAAAr4B,GACA,OAAAxwB,IAAAwwB,EAAA,MAAAA,GAAA4I,IACA5I,EAAA,eACAyI,EAAA2vB,EAAAp4B,MlLi1YM,SAAUngC,EAAQD,EAASO,GmLt1YjC,GAAA0nC,GAAA1nC,EAAA,IACA2kC,EAAA3kC,EAAA,mBAEAm4D,EAA6C,aAA7CzwB,EAAA,WAAyB,MAAA7hC,eAGzBuyD,EAAA,SAAAv4B,EAAA18B,GACA,IACA,MAAA08B,GAAA18B,GACG,MAAAmS,KAGH5V,GAAAD,QAAA,SAAAogC,GACA,GAAAJ,GAAA0U,EAAA1V,CACA,YAAApvB,KAAAwwB,EAAA,mBAAAA,EAAA,OAEA,iBAAAsU,EAAAikB,EAAA34B,EAAA7+B,OAAAi/B,GAAA8E,IAAAwP,EAEAgkB,EAAAzwB,EAAAjI,GAEA,WAAAhB,EAAAiJ,EAAAjI,KAAA,kBAAAA,GAAA44B,OAAA,YAAA55B,InL81YM,SAAU/+B,EAAQD,EAASO,GoLn3YjC,GAAAyoC,GAAAzoC,EAAA,gBACAs4D,GAAA,CAEA,KACA,GAAAC,IAAA,GAAA9vB,IACA8vB,GAAA,kBAA+BD,GAAA,GAC/Bx0D,MAAAwzD,KAAAiB,EAAA,WAA+B,UAC9B,MAAAjjD,IAED5V,EAAAD,QAAA,SAAA0W,EAAAqiD,GACA,IAAAA,IAAAF,EAAA,QACA,IAAAG,IAAA,CACA,KACA,GAAAxnD,IAAA,GACAymD,EAAAzmD,EAAAw3B,IACAivB,GAAA9zC,KAAA,WAA2B,OAASiL,KAAA4pC,GAAA,IACpCxnD,EAAAw3B,GAAA,WAA+B,MAAAivB,IAC/BvhD,EAAAlF,GACG,MAAAqE,IACH,MAAAmjD,KpL03YM,SAAU/4D,EAAQD,EAASO,GAEjC,cAC4B,SAASq0B,GAsErC,QAASpyB,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GApEvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIsoC,GAAQ/qC,EAAoB,IAE5BgrC,EAAS/oC,EAAuB8oC,GAEhCvnC,EAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GAEpCoiD,EAAsB11D,EAAoB,IAE1C21D,EAAsB1zD,EAAuByzD,GAE7CpyD,EAAQtD,EAAoB,IAE5BuD,EAAStB,EAAuBqB,GqL56YpCM,EAAA5D,EAAA,GAEAusC,EAAAvsC,EAAA,IrLg7YIwsC,EAAavqC,EAAuBsqC,GqL/6YxC/4B,EAAAxT,EAAA,IrLm7YIyT,EAAYxR,EAAuBuR,GqLl7YvCssB,EAAA9/B,EAAA,IrLs7YI+/B,EAAU99B,EAAuB69B,GqLr7YrCt6B,EAAAxF,EAAA,GrLy7YI29B,EAAW17B,EAAuBuD,GqLx7YtC9B,EAAA1D,EAAA,IrL47YI2D,EAAQ1B,EAAuByB,GqL37YnCgQ,EAAA1T,EAAA,GrL+7YI2T,EAAgB1R,EAAuByR,GqL97Y3C82B,EAAAxqC,EAAA,IrLk8YIyqC,EAAaxoC,EAAuBuoC,GqLj8YxCkuB,EAAA14D,EAAA,KrLq8YI24D,EAAW12D,EAAuBy2D,EqLp8YtC14D,GAAA,IAEA,IAAM44D,IACJ9mD,KAAQ,cAAe,cAAe,cAAe,cAAe,YAAa,cAAe,aAAa5K,IAC3G,SAAC2xD,GAAY,MAAO,sBAAwBA,EAAQ,iBACtDC,KAAQ,qCAAsC,4BAA6B,qCAC3EC,QAAS,wCACTC,MAAS,oCACTC,KAAQ,6CACRC,MAAS,yBAEXN,GAAA,IAAmBA,EAAA,IACnBA,EAAU,OAASA,EAAU,OAE7B,IAAMO,IACJC,KAAQ,aACRC,KAAQ,YAAa,2BACrBC,KAAQ,gCACRC,KAAQ,cAGJC,GAAwB,EAAAj2D,EAAA9B,SAAY03D,GAAiBt4C,OAAO,SAAC44C,EAAKzzD,GAAN,SAAA5B,QAAA,EAAAuxD,EAAAl0D,SAAgBg4D,IAAhB,EAAA9D,EAAAl0D,SAAwB03D,EAAgBnzD,UAEpG0zD,GAAkBr5B,KAAM,UAAWY,QAAS,WAG7B4N,ErLg9YJ,SAAU8qB,GqLx5YzB,QAAA9qB,MAAqB,EAAAprC,EAAAhC,SAAA3B,KAAA+uC,EAAA,QAAAzgC,GAAAvI,UAAA5C,OAANyB,EAAMZ,MAAAsK,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAN3J,EAAM2J,GAAAxI,UAAAwI,EAAA,IAAA1I,IAAA,EAAA2I,EAAA7M,SAAA3B,KACnB65D,EAAAt5D,KAAA8D,MAAAw1D,GAAA75D,MAAAsE,OAASM,IACTiB,GAAKi0D,YAAa,EAClBj0D,EAAKk0D,cAAe,EACpBl0D,EAAKm0D,cAAe,EACpBn0D,EAAKo0D,iBAAkB,EACvBp0D,EAAKq0D,qBAAuB,KAC5Br0D,EAAKs0D,UAAW,EAChBt0D,EAAKu0D,YAAc,EACnBv0D,EAAKw0D,UAAUx0D,EAAK4L,QAAQf,KAE5B7K,EAAK4L,QAAQ60C,WAAazgD,EAAK4L,QAAQ60C,SAAWzgD,EAAK4L,aACvD5L,EAAK4L,QAAQ60C,SAASgU,mBAAqBz0D,EAAK4L,QAAQ60C,SAASgU,oBAAsBz0D,EAAK4L,QAAQ8oD,0BAEpG,IAAMC,GAAiB30D,EAAK4L,QAAQ60C,SAC9BmU,EAAUD,EAAeC,UAAY9mD,EAAAhS,QAAQs6C,SAAW,OAASp2C,EAAK4L,QAAQgpD,SAEhFC,QAjBe,OAkBf70D,GAAK4L,QAAQkpD,SACoB,gBAAxB90D,GAAK4L,QAAQkpD,OACtBD,EAAY70D,EAAK4L,QAAQkpD,OACiB,gBAA5B90D,GAAK4L,QAAQkpD,OAAOpxC,MAClCmxC,EAAY70D,EAAK4L,QAAQkpD,OAAOpxC,MAIpC1V,EAAAlS,QAAEsM,OAAOpI,EAAKmK,IACZ4B,MAAO/L,EAAK4L,QAAQ+hC,KACpBonB,aAAc/0D,EAAK4L,QAAQ+hC,KAC3BqnB,KAAMh1D,EAAK4L,QAAQopD,KACnBF,OAAQD,EACRD,QAASA,GAAW,WACpBK,UAAWN,EAAeM,UAAYj1D,EAAK4L,QAAQspD,6BAA+B,WAClFC,YAAaR,EAAeQ,YAC5BC,uBAAwBT,EAAeU,aAGzCV,EAAeU,YAAer1D,EAAK2R,IAAIuH,MAAOo8C,YAAa,gBAC3DX,EAAeQ,aAAgBn1D,EAAK2R,IAAIuH,MAAOq8C,YAAaZ,EAAeQ,cAG3En1D,EAAKgiB,UAAalmB,SAAU,YAC5BkE,EAAKgiB,SAAS5C,MAAQ,YAAa,WAAY,YAC/Cpf,EAAKgiB,SAAS0mC,OAAS,aAAc,SAAU,gBAE/CiM,EAAea,gBAAmBx1D,EAAKy1D,qBAAqBd,EAAea,gBAE3Ex1D,EAAK4L,QAAQ2hC,UAAYvtC,EAAKu3B,kBA/CXv3B,ErLo/ZrB,OA3lBA,EAAI6I,EAAW/M,SAASotC,EAAY8qB,IACpC,EAAIvmD,EAAc3R,SAASotC,IACzB1rC,IAAK,OACLnC,IAAK,WqLn9YM,MAAO,iBrLu9YlBmC,IAAK,UACLnC,IAAK,WqLv9YS,MAAOlB,MAAKu7D,YAAc,QAAU,WrL29YlDl4D,IAAK,cACLnC,IAAK,WqLz9YL,GAAMs6D,GAAcx7D,KAAKyR,QAAQf,IAC7BusC,EAAYlO,EAAW0sB,iBAAiBD,EAAanC,EAAiBr5D,KAAKyR,QAAQ2a,SACvF,OAAOpsB,MAAKyR,QAAQ60C,UAAYtmD,KAAKyR,QAAQ60C,SAASoV,WAAa17D,KAAKyR,QAAQiqD,WAAahC,EAAsBroD,QAAQ4rC,EAAU,KAAO,KrL69Y5I55C,IAAK,aACLnC,IAAK,WqL19YL,OACEy6D,mBAAoB,OrL+9YtBt4D,IAAK,SACLnC,IAAK,WqL39YL,OACE06D,QAAW,aACXC,eAAkB,yBAClBC,eAAkB,oBAClBlrB,MAAS,WACTtrC,MAAS,WACTy2D,WAAc,gBACdC,eAAkB,oBAClBz/B,MAAS,WACTwuB,QAAW,aACXx7B,SAAY,cACZ0sC,QAAW,aACXC,OAAU,YACVC,QAAW,yBACXC,WAAc,gBACdC,QAAW,iBrLu+Ybh5D,IAAK,QACLnC,IAAK,WqL99YL,MAAOlB,MAAKgQ,GAAG4gC,SrL2+YfvtC,IAAK,YACLnC,IAAK,WqLj+YL,MAAOlB,MAAKg6D,iBrL+hZdjrB,EAAWxtC,UqLz+YX67B,gBrLy+YuC,WqLz+YrB,GAAAC,GAAAr9B,IAChBA,MAAKs9B,YAAY,SAAC5qB,EAAQpN,GACxBA,GAASzB,EAAAlC,QAAIy/B,KAAK/D,EAAK18B,KAAM,mBAAqB+R,SAAQpN,UAG1DoN,GAAU6hB,EAAQkS,SAAS,kBAAOpJ,EAAKy8B,YAAcz8B,EAAKhrB,YrLo/Y9D08B,EAAWxtC,UqL/+YX+7B,YrL++YmC,SqL/+YvB9rB,GACNxR,KAAKyR,QAAQ6qD,oBACf9qD,GAAG,EAAM,KAEX,IAAIg2B,IACF31B,QAAS7R,KAAKyR,QAAQ8qD,iBAAmB,IACzC5qD,OAAQ3R,KAAKyR,QAAQ60C,SAAS4U,aAAc,EAC5CtpD,MAAO5R,KAAKyR,QAAQ+hC,OAAQ,EAI1B7/B,GAAAhS,QAAQouC,UAAYjsC,EAAAiP,YAAYtB,QAAQ4F,eAC1CmwB,EAAKv1B,QAAUjS,KAAKgQ,KAKtB,EAAAlM,EAAAyN,kBAAiBC,EAAIg2B,IrLg/YvBuH,EAAWxtC,UqL7+YX+5D,qBrL6+Y4C,SqL7+YvBkB,GACnBx8D,KAAKy8D,gBAAkBD,EAAOp1D,IAAI,SAAAgkD,GAChC,OACE9hB,KAAM8hB,EAAM9hB,MAAQ,YACpBozB,MAAOtR,EAAMsR,MACbC,KAAMvR,EAAMuR,KACZjsD,IAAK06C,EAAM16C,QrL0/YjBq+B,EAAWxtC,UqL/+YX84D,UrL++YiC,SqL/+YvBuC,GACJ58D,KAAKgQ,GAAGU,MAAQksD,IAGpB58D,KAAK68D,YAAa,EAClB78D,KAAKgQ,GAAGU,IAAMksD,EACd58D,KAAK88D,KAAO98D,KAAKgQ,GAAGU,MrLi/YtBq+B,EAAWxtC,UqL9+YXw7D,kBrL8+YyC,SqL9+YvBvnD,GAChBxV,KAAKg9D,yBACLh9D,KAAKoG,QAAQy3B,EAAAl8B,QAAOuH,yBAA2B0iD,SAAUp2C,EAAEvS,OAAO2oD,SAAUrnC,KAAM/O,IAClFxV,KAAKi9D,iBACL,IAAMC,OAA6D,KAAnCl9D,KAAKk9B,SAASggC,iBAAoCl9D,KAAKk9B,SAASggC,eAC5Fl9D,MAAK+8B,oBAAsB2P,EAAA/qC,QAASi8B,MAAQs/B,GAC9Cl9D,KAAKm9D,qBrLg/YTpuB,EAAWxtC,UqL5+YX67D,kBrL4+YyC,WqL3+YvCp9D,KAAKi9D,kBACLj9D,KAAKwyC,gBAELxyC,KAAKq9D,erL++YPtuB,EAAWxtC,UqL5+YX07D,gBrL4+YuC,WqLz+YjCj9D,KAAK+8B,oBAAsB2P,EAAA/qC,QAAS+7B,KAAO19B,KAAK+8B,oBAAsB2P,EAAA/qC,QAASg8B,IACjF39B,KAAK6nB,SAAS5C,MAAQ,YAAa,WAAY,YAE/CjlB,KAAK6nB,SAAS5C,MAAQ,YAExBjlB,KAAK6nB,SAAS2pC,YAAcxxD,KAAKs9D,gBACjCt9D,KAAKoG,QAAQy3B,EAAAl8B,QAAOsH,0BrL4+YtB8lC,EAAWxtC,UqLz+YX+7D,crLy+YqC,WqLx+YnC,MAAOxuD,UAAS9O,KAAK68B,gBrL4+YvBkS,EAAWxtC,UqLz+YXw7B,gBrLy+YuC,WqLx+YrC,GAAMwgC,GAAgC,UAAjBv9D,KAAKyX,QAAsBi1B,EAAA/qC,QAASg8B,IAAM+O,EAAA/qC,QAAS+7B,GACxE,QAAQ,MAAGnuB,GAAWiuD,KAAUnsD,QAAQrR,KAAKgQ,GAAG47C,WAAa,EAAIlf,EAAA/qC,QAASi8B,KAAO2/B,GrL4+YnFxuB,EAAWxtC,UqLz+YX07B,sBrLy+Y6C,WqLx+Y3C,OAAO,GrLg/YT8R,EAAWxtC,UqL3+YX+6B,QrL2+Y+B,WqL1+YxBt8B,KAAK88B,cACR+8B,EAAAt4D,UAAM+6B,QAAN/7B,KAAAP,MACAA,KAAKgQ,GAAGud,SrL++YZwhB,EAAWxtC,UqL3+YX8Q,KrL2+Y4B,WqL1+Y1BrS,KAAKoG,QAAQy3B,EAAAl8B,QAAOkI,sBACpB7J,KAAKm6D,UAAW,EAChBn6D,KAAKq6D,UAAUr6D,KAAK88D,MACpB98D,KAAKg9D,wBACL,IAAI5qD,GAAUpS,KAAKgQ,GAAGqC,MAElBD,IAAWA,EAAQS,OACrBT,EAAQS,MAAM,erL6+YlBk8B,EAAWxtC,UqLz+YXg7B,MrLy+Y6B,WqLx+Y3Bv8B,KAAKgQ,GAAGusB,SrL4+YVwS,EAAWxtC,UqLz+YXi7B,KrLy+Y4B,WqLx+Y1Bx8B,KAAKu8B,QACLv8B,KAAKm6D,UAAW,EAEhBn6D,KAAKgQ,GAAG4K,gBAAgB,OACxB5a,KAAKy9D,4BACLz9D,KAAKg9D,yBACLh9D,KAAKoG,QAAQy3B,EAAAl8B,QAAOuI,gBrL4+YtB6kC,EAAWxtC,UqLz+YX8T,OrLy+Y8B,SqLz+YvB1S,GACS,IAAVA,GACF3C,KAAKwX,IAAIuH,MAAOnN,MAAO,SACvB5R,KAAKgQ,GAAG4B,OAAQ,IAEhB5R,KAAKwX,IAAIuH,MAAOnN,MAAO,OACvB5R,KAAKgQ,GAAG4B,OAAQ,EAChB5R,KAAKgQ,GAAGqF,OAAS1S,EAAQ,MrLm/Y7BosC,EAAWxtC,UqL3+YXiyC,KrL2+Y4B,WqL1+Y1BxzC,KAAKgQ,GAAG4B,OAAQ,GrLo/YlBm9B,EAAWxtC,UqL7+YXmyC,OrL6+Y8B,WqL5+Y5B1zC,KAAKgQ,GAAG4B,OAAQ,GrLg/YlBm9B,EAAWxtC,UqL7+YXm8D,QrL6+Y+B,WqL5+Y7B,QAAS19D,KAAKgQ,GAAGqF,QrLg/YnB05B,EAAWxtC,UqL7+YXu7B,UrL6+YiC,WqL5+Y/B,OAAQ98B,KAAKgQ,GAAGg7C,SAAWhrD,KAAKgQ,GAAG4gC,OrLg/YrC7B,EAAWxtC,UqLz+YXo8D,2BrLy+YkD,WqLx+Yd,OAA9B39D,KAAKk6D,uBAGTl6D,KAAK49D,2BAA6B,KAClC59D,KAAK69D,6BACL79D,KAAKk6D,qBAAuB7S,YAAYrnD,KAAK69D,2BAA2B9mD,KAAK/W,MAAO,OrL2+YtF+uC,EAAWxtC,UqLx+YXk8D,0BrLw+YiD,WqLv+Yb,OAA9Bz9D,KAAKk6D,uBAGTvS,cAAc3nD,KAAKk6D,sBACnBl6D,KAAKk6D,qBAAuB,KAC5Bl6D,KAAKi6D,iBAAkB,IrL0+YzBlrB,EAAWxtC,UqLv+YXs8D,2BrLu+YkD,WqLt+YhD,GAAM96C,GAAS/iB,KAAK49D,2BACd7sD,EAAM/Q,KAAKgQ,GAAG65C,WACpB7pD,MAAKi6D,gBAAkBl3C,IAAWhS,EAClC/Q,KAAK49D,2BAA6B7sD,EAClC/Q,KAAKg9D,0BrLq/YPjuB,EAAWxtC,UqLz+YXu8D,WrLy+YkC,WqLx+YhC99D,KAAK+5D,cAAe,EACpB/5D,KAAKg9D,0BrLo/YPjuB,EAAWxtC,UqL3+YXw8D,crL2+YqC,WqL1+YnC/9D,KAAK+5D,cAAe,EACpB/5D,KAAKg9D,0BrLi/YPjuB,EAAWxtC,UqL7+YXy8D,WrL6+YkC,WqL5+YhCh+D,KAAKg9D,0BrLg/YPjuB,EAAWxtC,UqL7+YX08D,WrL6+YkC,WqL5+YhCj+D,KAAKk+D,0BACLl+D,KAAK29D,6BACL39D,KAAKg9D,yBACLh9D,KAAKoG,QAAQy3B,EAAAl8B,QAAOmI,gBrLg/YtBilC,EAAWxtC,UqL7+YX4wC,SrL6+YgC,WqL5+Y9BnyC,KAAKy9D,4BACLz9D,KAAKg9D,yBACLh9D,KAAKoG,QAAQy3B,EAAAl8B,QAAOoI,iBrLg/YtBglC,EAAWxtC,UqL7+YX48D,WrL6+YkC,WqL5+YhCn+D,KAAKg9D,yBACLh9D,KAAKoG,QAAQy3B,EAAAl8B,QAAOqI,gBrLg/YtB+kC,EAAWxtC,UqL7+YX68D,UrL6+YiC,WqL5+Y/Bp+D,KAAKg9D,yBACLh9D,KAAKoG,QAAQy3B,EAAAl8B,QAAOsI,kBrLg/YtB8kC,EAAWxtC,UqL7+YX8wC,SrL6+YgC,WqL5+Y9BryC,KAAKg9D,yBACLh9D,KAAKoG,QAAQy3B,EAAAl8B,QAAOiI,eAAgB5J,KAAKW,OrLu/Y3CouC,EAAWxtC,UqL/+YXy7D,uBrL++Y8C,WqL9+Y5C,GAAMqB,IAA0Br+D,KAAKgQ,GAAG4gC,QAAU5wC,KAAKgQ,GAAGg7C,OACpDna,EAAY7wC,KAAK+5D,eAAiB/5D,KAAKgQ,GAAG4gC,QAAU5wC,KAAKm6D,WAAckE,IAA2Br+D,KAAKi6D,iBAAoBj6D,KAAKgQ,GAAGkR,WAAalhB,KAAKgQ,GAAGsuD,iBAC1Jt+D,MAAKg6D,eAAiBnpB,IACxB7wC,KAAKg6D,aAAenpB,EAChBA,EACF7wC,KAAKoG,QAAQy3B,EAAAl8B,QAAOoH,mBAAoB/I,KAAKW,MAE7CX,KAAKoG,QAAQy3B,EAAAl8B,QAAOqH,oBAAqBhJ,KAAKW,QrLg/YpDouC,EAAWxtC,UqL3+YXgxC,SrL2+YgC,WqL3+YrB,GAAAgsB,GACiBv+D,KAAKgQ,GAAG1K,OAASs0D,EAAnCr5B,EADCg+B,EACDh+B,KAAMY,EADLo9B,EACKp9B,QACRq9B,EAAiBj+B,IAASq5B,EAAcr5B,KAExCk+B,EAAiBz+D,KAAKmgC,aAC1BI,OACAE,YAAaU,EACbN,IAAK7gC,KAAKgQ,GAAG1K,MACbo7B,MAAO89B,EAAiBv+B,EAAAt+B,QAAYg/B,OAAO2J,KAAOrK,EAAAt+B,QAAYg/B,OAAOC,OAGnE49B,GACF36D,EAAAlC,QAAIy/B,KAAKphC,KAAKW,KAAM,wBAAyB89D,GAE7Cz+D,KAAKoG,QAAQy3B,EAAAl8B,QAAOwI,eAAgBs0D,IrL8+YxC1vB,EAAWxtC,UqL3+YX47B,QrL2+Y+B,WqL1+Y7Bn9B,KAAK85D,YAAa,EAClB95D,KAAK0+D,uBAAyB1+D,KAAKgQ,GAAG2uD,WAAW9sC,oBAAoB,SAAU7xB,KAAK0+D,uBACpF7E,EAAAt4D,UAAM47B,QAAN58B,KAAAP,MACAA,KAAKgQ,GAAG4K,gBAAgB,OACxB5a,KAAK88D,KAAO,KACZh5D,EAAAiP,YAAYwE,QAAQvX,KAAKwX,MrL8+Y3Bu3B,EAAWxtC,UqL3+YXk7B,KrL2+Y4B,SqL3+YvB7tB,GACH5O,KAAKgQ,GAAG65C,YAAcj7C,GrL8+YxBmgC,EAAWxtC,UqL3+YXm7B,erL2+YsC,SqL3+YvBC,GACb,GAAM/tB,GAAO5O,KAAKgQ,GAAG47C,UAAYjvB,EAAa,IAC9C38B,MAAKy8B,KAAK7tB,IrL8+YZmgC,EAAWxtC,UqL3+YX47D,kBrL2+YyC,WqL1+YvC,GAAMyB,IAAW,EAAA96D,EAAAuL,sBACA,KAAbuvD,GACF5+D,KAAKy8B,KAAKmiC,IrL6+Yd7vB,EAAWxtC,UqLz+YX0xC,erLy+YsC,WqLx+YpC,MAAOjzC,MAAKgQ,GAAG65C,arL4+YjB9a,EAAWxtC,UqLz+YXs7B,YrLy+YmC,WqLx+YjC,MAAO78B,MAAKgQ,GAAG47C,UrL4+YjB7c,EAAWxtC,UqLz+YXixC,crLy+YqC,WqLx+Y/BxyC,KAAK+8B,oBAAsB2P,EAAA/qC,QAASi8B,KACtC59B,KAAKoG,QAAQy3B,EAAAl8B,QAAOkH,qBAAuBijD,QAAS,EAAGsH,MAAO,GAAKpzD,KAAKW,MAExEX,KAAKoG,QAAQy3B,EAAAl8B,QAAOkH,qBAAuBijD,QAAS9rD,KAAKgQ,GAAG65C,YAAauJ,MAAOpzD,KAAKgQ,GAAG47C,UAAY5rD,KAAKW,OrLy+Y7GouC,EAAWxtC,UqLr+YX87D,YrLq+YmC,WqLp+YjC,GAAKr9D,KAAKgQ,GAAG6uD,SAAS17D,OAAtB,CAKA,IAAK,GAFD07D,MACAC,EAAc,EACTz+D,EAAI,EAAIA,EAAIL,KAAKgQ,GAAG6uD,SAAS17D,OAAQ9C,IAC5Cw+D,0BAAeA,KAAYvwC,MAAOtuB,KAAKgQ,GAAG6uD,SAASvwC,MAAMjuB,GAAI0+D,IAAK/+D,KAAKgQ,GAAG6uD,SAASE,IAAI1+D,MACnFL,KAAKgQ,GAAG65C,aAAegV,EAASx+D,GAAGiuB,OAAStuB,KAAKgQ,GAAG65C,aAAegV,EAASx+D,GAAG0+D,MACjFD,EAAcz+D,EAGlB,IAAMkvB,IACJjB,MAAOuwC,EAASC,GAAaxwC,MAC7Bw9B,QAAS+S,EAASC,GAAaC,IAC/B3L,MAAOpzD,KAAKgQ,GAAG47C,SAEjB5rD,MAAKoG,QAAQy3B,EAAAl8B,QAAOiH,kBAAmB2mB,EAAUsvC,KrLq+YnD9vB,EAAWxtC,UqLl+YXy9D,SrLk+YgC,SqLl+YvBtuD,GACP,GAAIusC,GAAYlO,EAAW0sB,iBAAiB/qD,EAAKooD,EAAW94D,KAAKyR,QAAQ2a,SAKzE,OAJyB,KAArB6wB,EAAU95C,SACZ85C,EAAYlO,EAAW0sB,iBAAiB/qD,EAAK2oD,EAAiBr5D,KAAKyR,QAAQ2a,YAE5D6wB,EAAU,IAAM,IACjBx4C,MAAM,KAAK,IrLo+Y7BsqC,EAAWxtC,UqLj+YXuvC,OrLi+Y8B,WqLh+YxB9wC,KAAKi/D,gBAGTj/D,KAAKi/D,eAAgB,EACrBj/D,KAAKoG,QAAQy3B,EAAAl8B,QAAOmH,eAAgB9I,KAAKW,QrLm+Y3CouC,EAAWxtC,UqLh+YX28D,wBrLg+Y+C,WqL99Y7C,GAAIl+D,KAAKk/D,eAAiBl/D,KAAK68D,WAAY,CACzC,GAAI78D,KAAKmqD,wBAAyB,CAChCnqD,KAAKoG,QAAQy3B,EAAAl8B,QAAO4I,4BACpB,IAAMizB,GAAUx9B,KAAKoqD,qBACrBpqD,MAAKoqD,sBAAwB5sB,EAC7Bx9B,KAAK0+D,sBAAwB1+D,KAAKm/D,uBAAuBpoD,KAAK/W,MAC9DA,KAAKgQ,GAAG2uD,WAAWx9C,iBAAiB,SAAUnhB,KAAK0+D,uBAErD1+D,KAAK68D,YAAa,IrLo+YtB9tB,EAAWxtC,UqLh+YX49D,uBrLg+Y8C,WqL/9Y5C,GAAI3C,GAASx8D,KAAKu9B,qBACd6tB,EAAQoR,EAAOt9C,KAAK,SAAAksC,GAAA,MAA8B,YAArBA,EAAMA,MAAMgU,SAAyBv4D,IAAK,EAEvE7G,MAAKo6D,aAAehP,EAAMvkD,KAC5B7G,KAAKo6D,WAAahP,EAAMvkD,GACxB7G,KAAKoG,QAAQy3B,EAAAl8B,QAAO6I,2BAClB3D,GAAIukD,EAAMvkD,OrLu+YhBkoC,EAAWxtC,UqL76YX65B,OrL66Y8B,WqL/5Y5B,MAbIp7B,MAAKyR,QAAQ60C,SAASgU,oBACxBt6D,KAAKwX,IAAIhS,GAAG,cAAe,WACzB,OAAO,IAIPxF,KAAKy8D,iBAAmBz8D,KAAKy8D,gBAAgBt5D,OAAS,GACxDnD,KAAKwX,IAAIkH,KAAK1e,KAAKu7B,UACjBihC,OAAQx8D,KAAKy8D,mBAIjBz8D,KAAK8wC,SACE9wC,OrLg7YT,EAAIsT,EAAc3R,SAASotC,IACzB1rC,IAAK,UACLnC,IAAK,WqLvtZL,MAAOlB,MAAKi/D,iBrL2tZZ57D,IAAK,eACLnC,IAAK,WqLz/YL,MAAOlB,MAAKW,OAASouC,EAAWxtC,UAAUZ,QrL6/Y1C0C,IAAK,uBACLnC,IAAK,WqL1/YL,GAAI2F,GAAK,EACL22B,EAAU,WAAQ,MAAO32B,KAG7B,QAFiB7G,KAAKgQ,GAAG2uD,YAAa,EAAAzzB,EAAAvpC,SAAW3B,KAAKgQ,GAAG2uD,gBAGtDn3D,OAAO,SAAA4jD,GAAA,MAAwB,cAAfA,EAAM9hB,MAAuC,aAAf8hB,EAAM9hB,OACpDliC,IAAI,SAAAgkD,GAAW,OAASvkD,GAAI22B,IAAW78B,KAAMyqD,EAAMsR,MAAOtR,MAAOA,QrLkgZpE/nD,IAAK,wBACLnC,IAAK,WqL//YL,MAAOlB,MAAKo6D,YrLkgZZhpC,IAAK,SqL//YmBoM,GACxB,IAAK,EAAA15B,EAAAsM,UAASotB,GAAd,CAIA,GAAIg/B,GAASx8D,KAAKu9B,qBACd8hC,QAGJ,KAAiB,IAAb7hC,EAAgB,CAElB,KADA6hC,EAAe7C,EAAOt9C,KAAK,SAAAksC,GAAA,MAASA,GAAMvkD,KAAO22B,KAE/C,MAEF,IAAgC,YAA5B6hC,EAAajU,MAAMgU,KACrB,OAMJ5C,EACGh1D,OAAO,SAAA4jD,GAAA,MAA8B,WAArBA,EAAMA,MAAMgU,OAC5Bx3D,QAAQ,SAAAwjD,GAAA,MAASA,GAAMA,MAAMgU,KAAO,WAEvCC,IAAiBA,EAAajU,MAAMgU,KAAO,WAE3Cp/D,KAAKo6D,WAAa58B,EAClBx9B,KAAKoG,QAAQy3B,EAAAl8B,QAAO6I,2BAClB3D,GAAI22B,QrLkgZNn6B,IAAK,WACLnC,IAAK,WqL//YU,OAAO,EAAAypC,EAAAhpC,SAAAk3D,EAAAl3D,arLmgZjBotC,GACPrC,EAAW/qC,QAEbhC,GAAQgC,QqL/iaaotC,EA6jBrBA,EAAW0sB,iBAAmB,SAASD,EAAa8D,EAAsBlzC,GACxE,GAAMmzC,IAAa/D,EAAY/2D,MAAM,KAAK,GAAGoL,MAAM,kBAAoB,GACnEotC,EAAY7wB,GAAamzC,GAAaD,EAAqBC,EAAUp4D,kBACzE,OAAQ81C,GAAUv6C,cAAgBsB,MAASi5C,GAAaA,IAG1DlO,EAAWywB,SAAW,SAAS1tD,EAAMwtD,EAAsB9D,EAAapvC,GACtE,GAAI6wB,GAAYlO,EAAW0sB,iBAAiBD,EAAa8D,EAAsBlzC,GACzEwK,EAAQpmB,SAAS0B,cAAcJ,EACrC,SAAUmrC,EAAUz1C,OAAO,SAAAi4D,GAAA,QAAe7oC,EAAM8oC,YAAYD,GAAWrpD,QAAQ,KAAM,MAAK,IAG5F24B,EAAWtR,QAAU,SAAS+9B,EAAapvC,GACzC,MAAO2iB,GAAWywB,SAAS,QAASnG,EAAiBmC,EAAapvC,IAC3D2iB,EAAWywB,SAAS,QAAS1G,EAAW0C,EAAapvC,IrLw/Y9DxsB,EAAOD,QAAUA,EAAiB,UACLY,KAAKZ,EAASO,EAAoB,MAIzD,SAAUN,EAAQD,GsLhnaxBC,EAAAD,QAAA,qOtLsnaM,SAAUC,EAAQD,EAASO,GuLrnajC,GAAAk1B,GAAAl1B,EAAA,IAEA,iBAAAk1B,SAAAx1B,EAAAS,EAAA+0B,EAAA,KAEA,IAKA3jB,IAAeqmB,WAAA,EAAAw0B,KAAA,EAEf76C,GAAAomB,cAPAA,GAQApmB,EAAAulB,eAAAznB,EAEArP,GAAA,GAAAk1B,EAAA3jB,EAEA2jB,GAAAm3B,SAAA3sD,EAAAD,QAAAy1B,EAAAm3B,SvLupaM,SAAU3sD,EAAQD,EAASO,GwLxqajCP,EAAAC,EAAAD,QAAAO,EAAA,OAKAP,EAAAgG,MAAA/F,EAAAS,EAAA,6EAAoG,MxLira9F,SAAUT,EAAQD,EAASO,GAEjC,YAmCA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAhCvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C2P,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCE,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDC,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GyLzsaxC9N,EAAAxF,EAAA,GzL6saI29B,EAAW17B,EAAuBuD,GyL5satC+mC,EAAAvsC,EAAA,IzLgtaIwsC,EAAavqC,EAAuBsqC,GyL/saxChF,EAAAvnC,EAAA,IzLmtaIwnC,EAAgBvlC,EAAuBslC,GyLhtatBqH,EzLqtaJ,SAAU6wB,GAGzB,QAAS7wB,KAEP,OADA,EAAInrC,EAAiBhC,SAAS3B,KAAM8uC,IAC7B,EAAItgC,EAA4B7M,SAAS3B,KAAM2/D,EAAYt7D,MAAMrE,KAAM+F,YA6BhF,OAjCA,EAAI2I,EAAW/M,SAASmtC,EAAY6wB,GAOpC7wB,EAAWvtC,UyLrtaXq+D,ezLqtasC,WyLptapC5/D,KAAK6nB,SAAS5C,MAAQ,YAAa,WAAY,YAC/CjlB,KAAK6nB,SAAS2pC,YAAcxxD,KAAKs9D,gBACjCt9D,KAAKoG,QAAQy3B,EAAAl8B,QAAOsH,0BzLwtatB6lC,EAAWvtC,UyLrtaXw7B,gBzLqtauC,WyLptarC,MAAO2P,GAAA/qC,QAASg8B,MzLwtalB,EAAIrqB,EAAc3R,SAASmtC,IACzBzrC,IAAK,OACLnC,IAAK,WyLxuaM,MAAO,iBzL4ualBmC,IAAK,UACLnC,IAAK,WyL5uaS,MAAO,WzLgvarBmC,IAAK,cACLnC,IAAK,WyL9uaL,OAAO,MzLkvaF4tC,GACPpH,EAAc/lC,QAIhBhC,GAAQgC,QyL5vaamtC,EAmBrBA,EAAWrR,QAAU,SAAS+9B,EAAapvC,GACzC,GAAMyzC,IACJvG,KAAQ,aACRC,KAAQ,YAAa,2BACrBC,KAAQ,gCACRC,KAAQ,aAEV,OAAO/xB,GAAA/lC,QAAW69D,SAAS,QAASK,EAAWrE,EAAapvC,IzL8ua9DxsB,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAiCA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GA9BvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,G0LxyaxCi5B,EAAAvsC,EAAA,I1L4yaIwsC,EAAavqC,EAAuBsqC,G0L3yaxC/mC,EAAAxF,EAAA,G1L+yaI29B,EAAW17B,EAAuBuD,E0L9yatCxF,GAAA,I1LozaA,I0LlzaqB8uC,G1LkzaP,SAAU6qB,G0L7xatB,QAAA7qB,GAAYt/B,IAAQ,EAAA/L,EAAAhC,SAAA3B,KAAAgvC,EAAA,IAAAnpC,IAAA,EAAA2I,EAAA7M,SAAA3B,KAClB65D,EAAAt5D,KAAAP,KAAM0P,GADY,OAElB7J,GAAKmK,GAAGU,IAAMhB,EAAOgB,IAFH7K,E1Lu1apB,OAzDA,EAAI6I,EAAW/M,SAASqtC,EAAS6qB,GAEjC7qB,EAAQztC,U0LpyaRw7B,gB1LoyaoC,W0LnyalC,MAAO2P,GAAA/qC,QAASq7B,Q1LuyalB,EAAI1pB,EAAc3R,SAASqtC,IACzB3rC,IAAK,OACLnC,IAAK,W0L1zaM,MAAO,c1L8zalBmC,IAAK,UACLnC,IAAK,W0L9zaS,MAAO,S1Lk0arBmC,IAAK,aACLnC,IAAK,W0Lj0aL,OACE4+D,gBAAiB,O1Ls0anBz8D,IAAK,SACLnC,IAAK,W0Ll0aL,OACEqsB,KAAQ,UACRzC,MAAS,WACTxlB,MAAS,gB1Li1ab0pC,EAAQztC,U0Lp0aR65B,O1Lo0a2B,W0Ll0azB,MADAp7B,MAAKoG,QAAQy3B,EAAAl8B,QAAOmH,eAAgB9I,KAAKW,MAClCX,M1Lu0aTgvC,EAAQztC,U0Lp0aRw+D,Q1Lo0a4B,W0Ln0a1B//D,KAAKoG,QAAQy3B,EAAAl8B,QAAOiI,eAAgB5J,KAAKW,O1Lu0a3CquC,EAAQztC,U0Lp0aRgxC,S1Lo0a6B,S0Lp0apB1e,GACP,GAAMrzB,GAAkB,UAAbqzB,EAAI/hB,KAAoB,aAAe,iBAClD9R,MAAKoG,QAAQy3B,EAAAl8B,QAAOwI,gBAAkBg3B,QAAS3gC,GAAKR,KAAKW,O1Lu0apDquC,GACPtC,EAAW/qC,QAIbhC,GAAQgC,Q0Lj3aaqtC,EAyCrBA,EAAQvR,QAAU,SAASuiC,GACzB,MAAO,sDAAsDz7D,KAAKy7D,I1L80apEpgE,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,G2Ln4ajC,GAAAk1B,GAAAl1B,EAAA,IAEA,iBAAAk1B,SAAAx1B,EAAAS,EAAA+0B,EAAA,KAEA,IAKA3jB,IAAeqmB,WAAA,EAAAw0B,KAAA,EAEf76C,GAAAomB,cAPAA,GAQApmB,EAAAulB,eAAAznB,EAEArP,GAAA,GAAAk1B,EAAA3jB,EAEA2jB,GAAAm3B,SAAA3sD,EAAAD,QAAAy1B,EAAAm3B,S3Lq6aM,SAAU3sD,EAAQD,EAASO,G4Lt7ajCP,EAAAC,EAAAD,QAAAO,EAAA,OAKAP,EAAAgG,MAAA/F,EAAAS,EAAA,kDAAyE,M5L+7anE,SAAUT,EAAQD,EAASO,GAEjC,YA2CA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAxCvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,G6L39axC1P,EAAA5D,EAAA,GACAusC,EAAAvsC,EAAA,I7Lg+aIwsC,EAAavqC,EAAuBsqC,G6L/9axC/B,EAAAxqC,EAAA,I7Lm+aIyqC,EAAaxoC,EAAuBuoC,G6Ll+axChlC,EAAAxF,EAAA,G7Ls+aI29B,EAAW17B,EAAuBuD,G6Lr+atCs6B,EAAA9/B,EAAA,K7Ly+aI+/B,EAAU99B,EAAuB69B,E6Lx+arC9/B,GAAA,I7L8+aA,I6L5+aqB+uC,G7L4+aV,SAAU4qB,G6Lr+anB,QAAA5qB,MAAqB,EAAAtrC,EAAAhC,SAAA3B,KAAAivC,EAAA,QAAA3gC,GAAAvI,UAAA5C,OAANyB,EAAMZ,MAAAsK,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAN3J,EAAM2J,GAAAxI,UAAAwI,EAAA,IAAA1I,IAAA,EAAA2I,EAAA7M,SAAA3B,KACnB65D,EAAAt5D,KAAA8D,MAAAw1D,GAAA75D,MAAAsE,OAASM,IADU,OAEnBiB,GAAKo6D,gBAAkB,EAFJp6D,E7L0kbrB,OApGA,EAAI6I,EAAW/M,SAASstC,EAAM4qB,IAC9B,EAAIvmD,EAAc3R,SAASstC,IACzB5rC,IAAK,OACLnC,IAAK,W6L/+aM,MAAO,W7Lm/alBmC,IAAK,WACLnC,IAAK,W6Ln/aU,OAAO,EAAAypC,EAAAhpC,SAAAs+B,EAAAt+B,Y7Lu/atB0B,IAAK,aACLnC,IAAK,W6Lt/aL,OAASg/D,aAAc,Q7LwgbzBjxB,EAAK1tC,U6LhgbL65B,O7LggbwB,W6L//atB,GAAM+kC,GAAuBngE,KAAKyR,QAAQ2uD,6BAA+BpgE,KAAKk8B,KAAKgF,EAAE,yBACrFlhC,MAAKwX,IAAIkH,KAAK1e,KAAKu7B,UAAW4F,QAASg/B,KACvCngE,KAAKoG,QAAQy3B,EAAAl8B,QAAOmH,eAAgB9I,KAAKW,KACzC,IAAM0/D,MAAiBrgE,KAAKyR,QAAQkpD,SAAU36D,KAAKyR,QAAQkpD,OAAO0F,YAIlE,QAHIrgE,KAAKyR,QAAQ2hC,UAAaitB,GAC5BrgE,KAAKsgE,WAEAtgE,M7LkgbTivC,EAAK1tC,U6L//aLg/D,O7L+/awB,W6L7/atB,GADAvgE,KAAKigE,gBAAkBjgE,KAAKigE,eAAe,GAAG,GAC1CjgE,KAAKigE,eAAT,CAKA,GAAMO,GAAQxgE,KAAKyF,QAAQg7D,gBAAgBzgE,KAAKyF,QAAQi7D,OAAOr7C,MAAOrlB,KAAKyF,QAAQi7D,OAAOl7C,QACtFm7C,QACJ,KACEA,EAAW,GAAIC,aAAYJ,EAAMj8C,KAAKs8C,QACtC,MAAO/tD,GACP6tD,EAAW,GAAIC,aAAY5gE,KAAKyF,QAAQi7D,OAAOr7C,MAAQrlB,KAAKyF,QAAQi7D,OAAOl7C,OAAS,EAEpF,KAAK,GADCjB,GAAKi8C,EAAMj8C,KACRlkB,EAAI,EAAGA,EAAIkkB,EAAKphB,OAAQ9C,IAC/BsgE,EAAStgE,GAAGkkB,EAAKlkB,GAQrB,IAAK,GAJC8Z,GAAMwmD,EAASx9D,OACnB3C,EAAoB,EAAhB8kB,KAAKqd,SAAe,EACtB79B,EAAM,EACRy5C,EAAQ,EACDl+C,EAAI,EAAGA,EAAI8Z,GAAM,CACxB,GAAIrV,EAAM,EAAG,CACXA,EAAMtE,EAAI8kB,KAAKqd,QAEf4b,GAAS,IADCj5B,KAAKw7C,IAAIx7C,KAAKqd,SAAU,KACb,GAEvB79B,GAAO,EACP67D,EAAStgE,KAAOk+C,EAElBv+C,KAAKyF,QAAQs7D,aAAaP,EAAO,EAAG,K7LkgbtCvxB,EAAK1tC,U6L//aLy/D,M7L+/auB,W6L//af,GAAA3jC,GAAAr9B,IACFA,MAAKqtD,QAGTrtD,KAAKugE,SACLvgE,KAAKihE,kBAAmB,EAAAn9D,EAAAmP,uBAAsB,iBAAMoqB,GAAK2jC,Y7Lqgb3D/xB,EAAK1tC,U6LlgbL47B,Q7LkgbyB,W6LjgbnBn9B,KAAKihE,oBACP,EAAAn9D,EAAAkP,sBAAqBhT,KAAKihE,kBAC1BjhE,KAAKqtD,OAAQ,I7LsgbjBpe,EAAK1tC,U6LlgbL++D,S7Lkgb0B,W6LjgbxBtgE,KAAK0gE,OAAS1gE,KAAKwX,IAAI0H,KAAK,6BAA6B,GACzDlf,KAAKyF,QAAUzF,KAAK0gE,OAAOQ,WAAW,MACtClhE,KAAKghE,S7LqgbA/xB,GACPvC,EAAW/qC,QAEbhC,GAAQgC,Q6LplbastC,EAgFrBA,EAAKxR,QAAU,SAAC5vB,GACd,OAAO,G7L0gbTjO,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,G8LtmbxBC,EAAAD,QAAA,4E9L4mbM,SAAUC,EAAQD,EAASO,G+L3mbjC,GAAAk1B,GAAAl1B,EAAA,IAEA,iBAAAk1B,SAAAx1B,EAAAS,EAAA+0B,EAAA,KAEA,IAKA3jB,IAAeqmB,WAAA,EAAAw0B,KAAA,EAEf76C,GAAAomB,cAPAA,GAQApmB,EAAAulB,eAAAznB,EAEArP,GAAA,GAAAk1B,EAAA3jB,EAEA2jB,GAAAm3B,SAAA3sD,EAAAD,QAAAy1B,EAAAm3B,S/L6obM,SAAU3sD,EAAQD,EAASO,GgM9pbjCP,EAAAC,EAAAD,QAAAO,EAAA,OAKAP,EAAAgG,MAAA/F,EAAAS,EAAA,4XAAmZ,MhMuqb7Y,SAAUT,EAAQD,EAASO,GAEjC,YAyCA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAtCvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GiM/rbxCy5B,EAAA/sC,EAAA,IjMmsbIgtC,EAAwB/qC,EAAuB8qC,GiMlsbnDvnC,EAAAxF,EAAA,GjMssbI29B,EAAW17B,EAAuBuD,GiMrsbtCglC,EAAAxqC,EAAA,IjMysbIyqC,EAAaxoC,EAAuBuoC,GiMxsbxCy2B,EAAAjhE,EAAA,KjM4sbIkhE,EAAYj/D,EAAuBg/D,EiM3sbvCjhE,GAAA,IjMitbA,IiM/sbqBqvC,GjM+sbU,SAAU8xB,GiMtsbvC,QAAA9xB,GAAY5wB,IAAW,EAAAhb,EAAAhC,SAAA3B,KAAAuvC,EAAA,IAAA1pC,IAAA,EAAA2I,EAAA7M,SAAA3B,KACrBqhE,EAAA9gE,KAAAP,KAAM2e,GADe,OAErB9Y,GAAK01B,UAAW,EAAAoP,EAAAhpC,SAAAy/D,EAAAz/D,SAChBkE,EAAKy7D,YAAc,KACnBz7D,EAAK6B,SAAS7B,EAAK8Y,UAAWkf,EAAAl8B,QAAO6K,0BAA2B3G,EAAKykD,aACrEzkD,EAAK6B,SAAS7B,EAAK8Y,UAAWkf,EAAAl8B,QAAO8K,2BAA4B5G,EAAK07D,cACtE17D,EAAK6B,SAAS7B,EAAK8Y,UAAWkf,EAAAl8B,QAAOiK,eAAgB/F,EAAKsrC,QAC1DtrC,EAAK6B,SAAS7B,EAAK8Y,UAAWkf,EAAAl8B,QAAOmK,gBAAiBjG,EAAKsrC,QAC3DtrC,EAAK6B,SAAS7B,EAAK8Y,UAAWkf,EAAAl8B,QAAO0J,gBAAiBxF,EAAKsrC,QAC3DtrC,EAAKu1B,SATgBv1B,EjM4wbvB,OArEA,EAAI6I,EAAW/M,SAAS4tC,EAA0B8xB,IAClD,EAAI/tD,EAAc3R,SAAS4tC,IACzBlsC,IAAK,OACLnC,IAAK,WiMltbM,MAAO,ajMstblBmC,IAAK,aACLnC,IAAK,WiMrtbL,OACEsgE,eAAe,GACfhkD,MAAS,4BjM2ubb+xB,EAAyBhuC,UiM3tbzB+oD,YjM2tbiD,WiM1tb/CtqD,KAAK2iB,QjM8tbP4sB,EAAyBhuC,UiM3tbzBggE,ajM2tbkD,WiM1tbhDvhE,KAAKyjB,QjM8tbP8rB,EAAyBhuC,UiM3tbzB4vC,OjM2tb4C,WiM1tb1CnxC,KAAKyjB,QjM8tbP8rB,EAAyBhuC,UiM3tbzBohB,KjM2tb0C,WiM3tbnC,GAAA0a,GAAAr9B,IACoB,QAArBA,KAAKshE,cACPthE,KAAKshE,YAAc/uD,WAAW,iBAAM8qB,GAAK7lB,IAAImL,QAAQ,OjMiubzD4sB,EAAyBhuC,UiM7tbzBkiB,KjM6tb0C,WiM5tbf,OAArBzjB,KAAKshE,cACP3uD,aAAa3S,KAAKshE,aAClBthE,KAAKshE,YAAc,MAErBthE,KAAKwX,IAAIiM,QjMgubX8rB,EAAyBhuC,UiM7tbzB65B,OjM6tb4C,WiMttb1C,MANAp7B,MAAKwX,IAAIkH,KAAK1e,KAAKu7B,YACnBv7B,KAAK2e,UAAUnH,IAAI8L,OAAOtjB,KAAKwX,KAC/BxX,KAAKwX,IAAIiM,OACLzjB,KAAK2e,UAAUkyB,WACjB7wC,KAAKsqD,cAEAtqD,MjM+tbFuvC,GACPrC,EAAsBvrC,QAIxBhC,GAAQgC,QiM1xba4tC,EjM2xbrB3vC,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,GkMzybxBC,EAAAD,QAAA,8ElM+ybM,SAAUC,EAAQD,EAASO,GmM9ybjC,GAAAk1B,GAAAl1B,EAAA,IAEA,iBAAAk1B,SAAAx1B,EAAAS,EAAA+0B,EAAA,KAEA,IAKA3jB,IAAeqmB,WAAA,EAAAw0B,KAAA,EAEf76C,GAAAomB,cAPAA,GAQApmB,EAAAulB,eAAAznB,EAEArP,GAAA,GAAAk1B,EAAA3jB,EAEA2jB,GAAAm3B,SAAA3sD,EAAAD,QAAAy1B,EAAAm3B,SnMg1bM,SAAU3sD,EAAQD,EAASO,GoMj2bjCP,EAAAC,EAAAD,QAAAO,EAAA,OAKAP,EAAAgG,MAAA/F,EAAAS,EAAA,i+BAAw/B,MpM02bl/B,SAAUT,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GqMr3bT,IAAAmzD,GAAA51D,EAAA,KrM03bI61D,EAEJ,SAAgC9zD,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAFlD6zD,EAIrCn2D,GAAQgC,QAAUo0D,EAAQp0D,QAC1B/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAmCA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAhCvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GsMt5bxCm5B,EAAAzsC,EAAA,ItM05bI0sC,EAAqBzqC,EAAuBwqC,GsMz5bhDjnC,EAAAxF,EAAA,GtM65bI29B,EAAW17B,EAAuBuD,GsM55btCkO,EAAA1T,EAAA,GtMg6bI2T,EAAgB1R,EAAuByR,GsM95btB6tD,EtMk6bH,SAAUC,GsM/5b1B,QAAAD,GAAY9iD,IAAW,EAAAhb,EAAAhC,SAAA3B,KAAAyhE,EAAA,IAAA57D,IAAA,EAAA2I,EAAA7M,SAAA3B,KACrB0hE,EAAAnhE,KAAAP,KAAM2e,GADe,OAErB9Y,GAAK87D,kBACL97D,EAAK+7D,eAAiB/7D,EAAK4L,QAAQmwD,gBAAkB,IACrD/7D,EAAKgpB,MAAQ,OAJQhpB,EtMygcvB,OAzGA,EAAI6I,EAAW/M,SAAS8/D,EAAaC,IACrC,EAAIpuD,EAAc3R,SAAS8/D,IACzBp+D,IAAK,OACLnC,IAAK,WsMr6bM,MAAO,YtMq7bpBugE,EAAYlgE,UsM56bZ+gC,WtM46bmC,WsM36bjCtiC,KAAK0H,SAAS1H,KAAK2e,UAAU2nC,SAAUzoB,EAAAl8B,QAAOmI,cAAe9J,KAAKixC,QAClEjxC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOiK,eAAgB5L,KAAKmxC,QAC1DnxC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOmK,gBAAiB9L,KAAKmxC,QAC3DnxC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOwJ,oBAAqBnL,KAAKmxC,QAC/DnxC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAO6K,0BAA2BxM,KAAKsqD,aACrEtqD,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAO8K,2BAA4BzM,KAAKuhE,cACtEvhE,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOqL,oBAAqBhN,KAAK6hE,YAC/D7hE,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOsJ,kBAAmBjL,KAAK6hE,YAC7D7hE,KAAK0H,SAAS1H,KAAK2e,UAAU2nC,SAAUzoB,EAAAl8B,QAAOyI,mBAAoBpK,KAAK6hE,atM+6bzEJ,EAAYlgE,UsM56bZogE,gBtM46bwC,WsM36btC3hE,KAAK8hE,WAAY,EACjB9hE,KAAK+hE,YAAc,EACnB/hE,KAAKgiE,gBAAkB,EACvBhiE,KAAKiiE,aAAe,EACpBjiE,KAAKkiE,UAAY,EACjBliE,KAAKmiE,oBtM+6bPV,EAAYlgE,UsM56bZ0vC,OtM46b+B,WsM36b7BjxC,KAAK6uB,MAAQ,UACb7uB,KAAKoiE,iBAAmBnxD,KAAKF,MACxB/Q,KAAKqiE,aACRriE,KAAKqiE,WAAahb,YAAYrnD,KAAKsiE,OAAOvrD,KAAK/W,MAAOA,KAAK4hE,kBtM86b/DH,EAAYlgE,UsM16bZ4vC,OtM06b+B,WsMz6b7BwW,cAAc3nD,KAAKqiE,YACnBriE,KAAKsiE,SACLtiE,KAAKqiE,eAAa9yD,GAClBvP,KAAK6uB,MAAQ,WtM66bf4yC,EAAYlgE,UsM16bZ+oD,YtM06boC,WsMz6b9BtqD,KAAK8hE,UACP9hE,KAAKuiE,gBAAkBtxD,KAAKF,MAE5B/Q,KAAKwiE,oBAAsBvxD,KAAKF,MAElC/Q,KAAK6uB,MAAQ,YACb7uB,KAAKkiE,atM06bPT,EAAYlgE,UsMv6bZggE,atMu6bqC,WsMt6b/BvhE,KAAK8hE,WAAa9hE,KAAKuiE,iBACzBviE,KAAK8hE,WAAY,EACjB9hE,KAAK+hE,YAAc9wD,KAAKF,MAAQ/Q,KAAKuiE,gBACrCviE,KAAKoiE,iBAAmBnxD,KAAKF,OACpB/Q,KAAKwiE,sBAAuBxiE,KAAKgiE,iBAAmBhiE,KAAKyiE,sBAEpEziE,KAAKwiE,wBAAsBjzD,GAC3BvP,KAAK6uB,MAAQ,WtM46bf4yC,EAAYlgE,UsMz6bZkhE,mBtMy6b2C,WsMx6bzC,MAAOxxD,MAAKF,MAAQ/Q,KAAKwiE,qBtM46b3Bf,EAAYlgE,UsMz6bZmhE,gBtMy6bwC,WsMv6btC,MADmBzxD,MAAKF,MAAQ/Q,KAAKoiE,iBAClBpiE,KAAKgiE,iBtM46b1BP,EAAYlgE,UsMz6bZohE,ctMy6bsC,WsMx6bpC,QAAS3iE,KAAKwiE,qBtM46bhBf,EAAYlgE,UsMz6bZsgE,WtMy6bmC,SsMz6bxBe,GACT/uD,EAAAlS,QAAEsM,OAAOjO,KAAKmiE,gBAAiBS,ItM46bjCnB,EAAYlgE,UsMz6bZshE,StMy6biC,WsMx6b/B,GAAMrX,IACJuW,YAAiB/hE,KAAK+hE,YACtBG,UAAiBliE,KAAKkiE,UACtBF,gBAAiBhiE,KAAK2iE,gBAAiB3iE,KAAKgiE,gBAAkBhiE,KAAKyiE,qBAAsBziE,KAAKgiE,gBAC9FC,aAAiBjiE,KAAK2iE,gBAAiB3iE,KAAK0iE,kBAAoB1iE,KAAKyiE,qBAAsBziE,KAAK0iE,kBAGlG,OADA7uD,GAAAlS,QAAEsM,OAAOu9C,EAASxrD,KAAKmiE,iBAChB3W,GtM46bTiW,EAAYlgE,UsMz6bZ+gE,OtMy6b+B,WsMx6b7BtiE,KAAK2e,UAAU4sC,YAAYvrD,KAAK6iE,atM46b3BpB,GACP70B,EAAmBjrC,QAIrBhC,GAAQgC,QsMjhca8/D,EtMkhcrB7hE,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAyCA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAtCvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GuMjjcxCy5B,EAAA/sC,EAAA,IvMqjcIgtC,EAAwB/qC,EAAuB8qC,GuMpjcnDvnC,EAAAxF,EAAA,GvMwjcI29B,EAAW17B,EAAuBuD,GuMvjctCglC,EAAAxqC,EAAA,IvM2jcIyqC,EAAaxoC,EAAuBuoC,GuM1jcxCkB,EAAA1rC,EAAA,KvM8jcI2rC,EAAc1pC,EAAuBypC,EuM7jczC1rC,GAAA,IvMmkcA,IuMjkcqBsvC,GvMikcC,SAAU6xB,GuM5jc9B,QAAA7xB,GAAY7wB,IAAW,EAAAhb,EAAAhC,SAAA3B,KAAAwvC,EAAA,IAAA3pC,IAAA,EAAA2I,EAAA7M,SAAA3B,KACrBqhE,EAAA9gE,KAAAP,KAAM2e,GADe,OAErB9Y,GAAKsR,YAFgBtR,EvMoncvB,OAvDA,EAAI6I,EAAW/M,SAAS6tC,EAAiB6xB,IACzC,EAAI/tD,EAAc3R,SAAS6tC,IACzBnsC,IAAK,OACLnC,IAAK,WuMpkcM,MAAO,evMwkclBmC,IAAK,WACLnC,IAAK,WuMvkcU,OAAO,EAAAypC,EAAAhpC,SAAAkqC,EAAAlqC,avMqlcxB6tC,EAAgBjuC,UuM9kchB+gC,WvM8kcuC,WuM7kcrCtiC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOgK,eAAgB3L,KAAKixC,QAC1DjxC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOiK,eAAgB5L,KAAKmxC,QAC1DnxC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOsL,yBAA0BjN,KAAKmX,YvMilctEq4B,EAAgBjuC,UuM9kchB4V,UvM8kcsC,WuM7kcpCnX,KAAKymB,SAAWzmB,KAAKyR,QAAQgV,UAAY,eACrCzmB,KAAKyR,QAAQqxD,WACf9iE,KAAK+iE,SAAW/iE,KAAKyR,QAAQqxD,UAC7B9iE,KAAKgjE,UAAYhjE,KAAKyR,QAAQwxD,cAC9BjjE,KAAKo7B,UACEp7B,KAAKwX,IAAI7Q,UvMmlcpB6oC,EAAgBjuC,UuM/kchB0vC,OvM+kcmC,WuM9kc5BjxC,KAAK40B,QACR50B,KAAKwX,IAAImL,QvMilcb6sB,EAAgBjuC,UuM9kchB4vC,OvM8kcmC,WuM7kcjCnxC,KAAKwX,IAAIiM,QvMilcX+rB,EAAgBjuC,UuM9kchB65B,OvM8kcmC,WuM7kcjCp7B,KAAKwX,IAAIiM,MACT,IAAMy/C,IAAoBz8C,SAAUzmB,KAAKymB,SAAUs8C,SAAU/iE,KAAK+iE,SAAUC,UAAWhjE,KAAKgjE,UAG5F,OAFAhjE,MAAKwX,IAAIkH,KAAK1e,KAAKu7B,SAAS2nC,IAC5BljE,KAAK2e,UAAUnH,IAAI8L,OAAOtjB,KAAKwX,KACxBxX,MvMilcFwvC,GACPtC,EAAsBvrC,QAIxBhC,GAAQgC,QuM9nca6tC,EvM+ncrB5vC,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,GwM7ocxBC,EAAAD,QAAA,gQxMmpcM,SAAUC,EAAQD,EAASO,GyMlpcjC,GAAAk1B,GAAAl1B,EAAA,IAEA,iBAAAk1B,SAAAx1B,EAAAS,EAAA+0B,EAAA,KAEA,IAKA3jB,IAAeqmB,WAAA,EAAAw0B,KAAA,EAEf76C,GAAAomB,cAPAA,GAQApmB,EAAAulB,eAAAznB,EAEArP,GAAA,GAAAk1B,EAAA3jB,EAEA2jB,GAAAm3B,SAAA3sD,EAAAD,QAAAy1B,EAAAm3B,SzMorcM,SAAU3sD,EAAQD,EAASO,G0MrscjCP,EAAAC,EAAAD,QAAAO,EAAA,OAKAP,EAAAgG,MAAA/F,EAAAS,EAAA,mYAA0Z,M1M8scpZ,SAAUT,EAAQD,EAASO,GAEjC,cAC4B,SAASq0B,GAoDrC,QAASpyB,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAlDvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,G2MtucxCy5B,EAAA/sC,EAAA,I3M0ucIgtC,EAAwB/qC,EAAuB8qC,G2MzucnDvnC,EAAAxF,EAAA,G3M6ucI29B,EAAW17B,EAAuBuD,G2M5uctCglC,EAAAxqC,EAAA,I3MgvcIyqC,EAAaxoC,EAAuBuoC,G2M/ucxC+B,EAAAvsC,EAAA,I3MmvcIwsC,EAAavqC,EAAuBsqC,G2MlvcxCzM,EAAA9/B,EAAA,I3MsvcI+/B,EAAU99B,EAAuB69B,G2MrvcrC8L,EAAA5rC,EAAA,K3MyvcI6rC,EAAW5pC,EAAuB2pC,G2MxvctCmhB,EAAA/sD,EAAA,I3M4vcIgtD,EAAS/qD,EAAuB8qD,E2M3vcpC/sD,GAAA,I3MqwcA,I2MnwcqBijE,G3MmwcF,SAAU9B,G2M1uc3B,QAAA8B,GAAYxkD,IAAW,EAAAhb,EAAAhC,SAAA3B,KAAAmjE,EAAA,IAAAt9D,IAAA,EAAA2I,EAAA7M,SAAA3B,KACrBqhE,EAAA9gE,KAAAP,KAAM2e,GADe,OAErB9Y,GAAKu9D,mBAAoB,EACzBv9D,EAAKw9D,eAAgB,EACrBx9D,EAAKu1B,SACL7G,EAAQkS,SAAS,iBAAM5gC,GAAK+xB,WALP/xB,E3Mm5cvB,OAxKA,EAAI6I,EAAW/M,SAASwhE,EAAc9B,IACtC,EAAI/tD,EAAc3R,SAASwhE,IACzB9/D,IAAK,OACLnC,IAAK,W2MtwcM,MAAO,Y3M0wclBmC,IAAK,WACLnC,IAAK,W2M1wcU,OAAO,EAAAypC,EAAAhpC,SAAAoqC,EAAApqC,Y3M8wctB0B,IAAK,eACLnC,IAAK,W2M7wcL,GAAMm/D,MAAiBrgE,KAAKyR,QAAQkpD,SAAU36D,KAAKyR,QAAQkpD,OAAO0F,YAClE,OAAwC,aAAjCrgE,KAAK2e,UAAU2nC,SAAS3lD,OAAwBX,KAAK2e,UAAU2nC,SAASvpB,oBAAsB2P,EAAA/qC,QAASq7B,OAASqjC,M3MixcvHh9D,IAAK,aACLnC,IAAK,W2M9wcL,OACEsc,MAAS,gBACT8lD,cAAe,O3MmxcjBjgE,IAAK,SACLnC,IAAK,W2M/wcL,OACE6xB,MAAS,c3MoxcX1vB,IAAK,iBACLnC,IAAK,W2MhxcL,OAAQlB,KAAKyR,QAAQkpD,QAAU36D,KAAKyR,QAAQkpD,OAAO4I,oBAAyDh0D,KAAvCvP,KAAKyR,QAAQkpD,OAAO4I,mB3Mmyc3FJ,EAAa5hE,U2Mxxcb+gC,W3MwxcoC,W2MvxclCtiC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOiK,eAAgB5L,KAAKmxC,QAC1DnxC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOgK,eAAgB3L,KAAKixC,QAC1DjxC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAO6K,0BAA2BxM,KAAK43B,QACrE53B,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAO8K,2BAA4BzM,KAAK43B,QACtE53B,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOsL,yBAA0BjN,KAAKo7B,QACpEp7B,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAO0J,gBAAiBrL,KAAKsxC,SAC3DtxC,KAAKujE,gBAAkBvjE,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOmK,gBAAiB9L,KAAKmxC,S3M2xcpFgyB,EAAa5hE,U2Mxxcb+vC,Q3MwxciC,S2MxxczBhsC,GACNtF,KAAKwjE,cAAgBl+D,EAAMo7B,QAAUT,EAAAt+B,QAAYg/B,OAAOC,MAEpD5gC,KAAKwjE,gBACPxjE,KAAKojE,mBAAoB,EACzBpjE,KAAKqjE,eAAgB,EACrBrjE,KAAKyjE,mB3M4xcTN,EAAa5hE,U2Mxxcb0vC,O3MwxcgC,W2Mvxc9BjxC,KAAKojE,mBAAoB,EACzBpjE,KAAK43B,U3M2xcPurC,EAAa5hE,U2Mxxcb4vC,O3MwxcgC,W2Mvxc9BnxC,KAAKojE,mBAAoB,EACzBpjE,KAAKqjE,eAAgB,EACrBrjE,KAAK43B,U3M2xcPurC,EAAa5hE,U2MxxcbmiE,iB3Mwxc0C,S2MxxczB/gD,IACXA,GAAU3iB,KAAKyR,QAAQw+B,aAAcjwC,KAAKyR,QAAQq+B,qBAGpD9vC,KAAK2jE,iBAFL3jE,KAAKyjE,kB3M0xcTN,EAAa5hE,U2MrxcbkiE,e3MqxcwC,W2MpxclCzjE,KAAKwjE,gBAAkBxjE,KAAKyR,QAAQmyD,qBAExC5jE,KAAK6jE,YAAYlhD,OACjB3iB,KAAKwX,IAAIqO,SAAS,e3MwxcpBs9C,EAAa5hE,U2MrxcboiE,e3MqxcwC,W2MpxctC3jE,KAAK6jE,YAAYpgD,OACjBzjB,KAAKwX,IAAIuO,YAAY,c3MwxcvBo9C,EAAa5hE,U2MrxcbwqD,Q3MqxciC,W2M/wc/B,MALK/rD,MAAKyR,QAAQw+B,aAAcjwC,KAAKyR,QAAQq+B,uBAC3C9vC,KAAKqjE,eAAgB,EACrBrjE,KAAK43B,SACL53B,KAAK2e,UAAUtM,SAEV,G3MwxcT8wD,EAAa5hE,U2MrxcbuiE,iB3Mqxc0C,W2MnxcxC,OAAQ9jE,KAAK2e,UAAU2nC,SAASiV,a3MwxclC4H,EAAa5hE,U2Mrxcbq2B,O3MqxcgC,W2Mpxc9B,GAAK53B,KAAK+jE,aAAV,CAGA,GAAIN,IAAkBzjE,KAAKqjE,gBAAmBrjE,KAAKojE,oBAAsBpjE,KAAK2e,UAAUkyB,SACxF7wC,MAAK0jE,iBAAiBD,GACtBzjE,KAAKgkE,iB3MuxcPb,EAAa5hE,U2MpxcbyiE,a3MoxcsC,W2Mnxc/BhkE,KAAKojE,kBACLpjE,KAAKikE,aADmBjkE,KAAKkkE,c3MuxcpCf,EAAa5hE,U2Mnxcb2iE,W3MmxcoC,W2MlxclClkE,KAAK2e,UAAUupC,sBACfloD,KAAKwX,IAAImL,Q3MsxcXwgD,EAAa5hE,U2Mnxcb0iE,W3MmxcoC,W2MlxclCjkE,KAAK2e,UAAUwpC,qBACXnoD,KAAK8jE,oBACP9jE,KAAKwX,IAAIiM,Q3Mqxcb0/C,EAAa5hE,U2Mlxcb65B,O3MkxcgC,W2Mjxc9B,GAAKp7B,KAAK+jE,aAAV,CAGA/jE,KAAKwX,IAAIkH,KAAK1e,KAAKu7B,WAInB,IAFwBv7B,KAAKyR,QAAQkpD,YAAyCprD,KAA/BvP,KAAKyR,QAAQkpD,OAAOwJ,OAE9C,CACnB,GAAMzJ,GAAY16D,KAAKyR,QAAQkpD,OAAOpxC,KAAOvpB,KAAKyR,QAAQkpD,MAC1D36D,MAAKwX,IAAIkM,KAAM0gD,mBAAoB,OAAS1J,EAAY,UAC/C16D,MAAKyR,QAAQkpD,QAAU36D,KAAKwX,IAAIkM,KAAM2gD,WAAcrkE,KAAKyR,QAAQkpD,OAAOwJ,QAEnFnkE,MAAK2e,UAAUnH,IAAI8L,OAAOtjB,KAAKgQ,IAC/BhQ,KAAKskE,aAAetkE,KAAKwX,IAAI0H,KAAK,iBAClClf,KAAKskE,aAAahhD,OAAlB4pC,EAAAvrD,SACA3B,KAAK6jE,YAAc7jE,KAAKskE,aAAaplD,KAAK,OAC1Clf,KAAK6jE,YAAYh+C,SAAS,eAC1B7lB,KAAK6jE,YAAY9kD,KAAK,cAAe,GAErC,IAAIu2C,GAAet1D,KAAKyR,QAAQs3C,cAAgB/oD,KAAKyR,QAAQs3C,aAAawM,OAS1E,OARID,IACFt1D,KAAKwX,IAAI0H,KAAK,YAAYwE,IAAI,OAAQ4xC,GAEpCt1D,KAAKyR,QAAQs3C,cAAgB/oD,KAAKyR,QAAQs3C,aAAawM,UACzDD,EAAet1D,KAAKyR,QAAQs3C,aAAawM,QACzCv1D,KAAK6jE,YAAYngD,IAAI,QAAS4xC,IAEhCt1D,KAAK43B,SACE53B,O3MqxcFmjE,GACPj2B,EAAsBvrC,QAExBhC,GAAQgC,Q2M/6cawhE,E3Mg7crBvjE,EAAOD,QAAUA,EAAiB,UACLY,KAAKZ,EAASO,EAAoB,MAIzD,SAAUN,EAAQD,G4Ml8cxBC,EAAAD,QAAA,kD5Mw8cM,SAAUC,EAAQD,EAASO,G6Mv8cjC,GAAAk1B,GAAAl1B,EAAA,IAEA,iBAAAk1B,SAAAx1B,EAAAS,EAAA+0B,EAAA,KAEA,IAKA3jB,IAAeqmB,WAAA,EAAAw0B,KAAA,EAEf76C,GAAAomB,cAPAA,GAQApmB,EAAAulB,eAAAznB,EAEArP,GAAA,GAAAk1B,EAAA3jB,EAEA2jB,GAAAm3B,SAAA3sD,EAAAD,QAAAy1B,EAAAm3B,S7My+cM,SAAU3sD,EAAQD,EAASO,G8M1/cjCP,EAAAC,EAAAD,QAAAO,EAAA,OAKAP,EAAAgG,MAAA/F,EAAAS,EAAA,gxBAAuyB,M9MmgdjyB,SAAUT,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,G+M9gdT,IAAAqzD,GAAA91D,EAAA,K/MmhdI+1D,EAEJ,SAAgCh0D,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAFvC+zD,EAIhDr2D,GAAQgC,QAAUs0D,EAAmBt0D,QACrC/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YA+BA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GA5BvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GgN/idxCm5B,EAAAzsC,EAAA,IhNmjdI0sC,EAAqBzqC,EAAuBwqC,GgNljdhDjnC,EAAAxF,EAAA,GhNsjdI29B,EAAW17B,EAAuBuD,GgNpjdjB6+D,EhN4jdC,SAAU7C,GgN1jd9B,QAAA6C,GAAY5lD,IAAW,EAAAhb,EAAAhC,SAAA3B,KAAAukE,EAAA,IAAA1+D,IAAA,EAAA2I,EAAA7M,SAAA3B,KACrB0hE,EAAAnhE,KAAAP,KAAM2e,GADe,OAEjB9Y,GAAK8Y,UAAUlN,QAAQ+yD,YACzB3+D,EAAK4+D,QAAU5+D,EAAK8Y,UAAUlN,QAAQ+yD,UACtC3+D,EAAK6+D,YAAe7+D,EAAK8Y,UAAUlN,QAAQkzD,cAAiB9+D,EAAK8Y,UAAUlN,QAAQkzD,cAAgB,IAAM,UACzG9+D,EAAK++D,WAAa/+D,EAAK8Y,UAAUlN,QAAQozD,aACzCh/D,EAAKi/D,mBAAiBv1D,GACtB1J,EAAKk/D,eAPcl/D,EhNgsdvB,OArIA,EAAI6I,EAAW/M,SAAS4iE,EAAiB7C,IACzC,EAAIpuD,EAAc3R,SAAS4iE,IACzBlhE,IAAK,OACLnC,IAAK,WgN/jdM,MAAO,uBhNmldpBqjE,EAAgBhjE,UgNvkdhBwjE,YhNukdwC,WgNvkd1B,GAAA1nC,GAAAr9B,IACZ,IAAK4Q,OAAOo0D,KAOHhlE,KAAKsuD,wBAPI,CAChB,GAAM1jC,GAASpa,SAAS0B,cAAc,SACtC0Y,GAAOzY,aAAa,OAAQ,mBAC5ByY,EAAOzY,aAAa,QAAS,SAC7ByY,EAAOzY,aAAa,MAAO,oCAC3ByY,EAAOq6C,OAAS,iBAAM5nC,GAAKixB,qBAC3B99C,SAASgJ,KAAKC,YAAYmR,KhNild9B25C,EAAgBhjE,UgN5kdhB+sD,kBhN4kd8C,WgN5kd1B,GAAAtH,GAAAhnD,IACdA,MAAK2e,YACP3e,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOyJ,gBAAiBpL,KAAK+wC,SAC3D/wC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOgK,eAAgB3L,KAAKixC,QAC1DjxC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOiK,eAAgB5L,KAAKmxC,QAC1DnxC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOkK,gBAAiB7L,KAAKkxC,SAC3DlxC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOmK,gBAAiB9L,KAAKoxC,SAC3DpxC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAO6K,0BAA2BxM,KAAKsqD,aACrEtqD,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAO8K,2BAA4BzM,KAAKuhE,cACtEvhE,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAO0J,gBAAiBrL,KAAKsxC,SAC3DtxC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOoJ,wBAAyB/K,KAAKklE,mBACnEllE,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAO2K,iBAAkB,SAACmb,GAAD,MAAWu/B,GAAKqJ,gBAAgB5oC,KACvFznB,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOyK,eAAgB,SAACqb,GAAD,MAAWu/B,GAAK3V,OAAO5pB,KAC5EznB,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOwjE,sBAAuBnlE,KAAKolE,cACjEplE,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOgL,+BAAgC3M,KAAKqlE,MAC1ErlE,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOqJ,kCAAmChL,KAAKslE,QAE/EC,KAAK5/D,MAAM3F,KAAK0kE,YAAc,cAAe1kE,KAAKykE,UAC9CzkE,KAAK4kE,YACPW,KAAK5/D,MAAM3F,KAAK0kE,YAAc,iBAAkB1kE,KAAK4kE,chNoldzDL,EAAgBhjE,UgNjldhBwvC,QhNildoC,WgNhldlC/wC,KAAK2F,MAAM,QAAS,WAAY3F,KAAK2e,UAAU2nC,SAAS3lD,QhNold1D4jE,EAAgBhjE,UgNjldhB0vC,OhNildmC,WgNhldjCjxC,KAAK2F,MAAM,QAAS,OAAQ3F,KAAK2e,UAAU2nC,SAAS51C,OhNoldtD6zD,EAAgBhjE,UgNjldhB4vC,OhNildmC,WgNhldjCnxC,KAAK2F,MAAM,QAAS,OAAQ3F,KAAK2e,UAAU2nC,SAAS51C,OhNoldtD6zD,EAAgBhjE,UgNjldhB6vC,QhNildoC,WgNhldlCpxC,KAAK2F,MAAM,QAAS,QAAS3F,KAAK2e,UAAU2nC,SAAS51C,OhNoldvD6zD,EAAgBhjE,UgNjldhB+oD,YhNildwC,WgNhldtCtqD,KAAK2F,MAAM,QAAS,YAAa3F,KAAK2e,UAAU2nC,SAAS51C,OhNold3D6zD,EAAgBhjE,UgNjldhBggE,ahNildyC,WgNhldvCvhE,KAAK2F,MAAM,QAAS,aAAc3F,KAAK2e,UAAU2nC,SAAS51C,OhNold5D6zD,EAAgBhjE,UgNjldhB+vC,QhNildoC,WgNhldlCtxC,KAAK2F,MAAM,QAAS,QAAS3F,KAAK2e,UAAU2nC,SAAS51C,OhNoldvD6zD,EAAgBhjE,UgNjldhB8jE,KhNildiC,SgNjld5BjZ,GACH,GAAMxjC,GAASwjC,EAAO,KAAM,KACxBxjC,KAAW5oB,KAAK8kE,iBAClB9kE,KAAK8kE,eAAiBl8C,EACtB5oB,KAAK2F,MAAM,QAAS,QAAUijB,EAAQ5oB,KAAK2e,UAAU2nC,SAAS51C,QhNqldlE6zD,EAAgBhjE,UgNjldhB2jE,kBhNild8C,SgNjld5BM,GACW,OAAvBA,EAAc1zD,MAChB9R,KAAK2F,MAAM,QAAS,mBAAqB6/D,EAAc1zD,KAAM9R,KAAK2e,UAAU2nC,SAAS51C,OhNmldzF6zD,EAAgBhjE,UgN/kdhB+jE,MhN+kdkC,SgN/kd5Bja,GACJ,GAAMziC,GAASyiC,EAAU,KAAM,KAC/BrrD,MAAK2F,MAAM,cAAe,SAAWijB,EAAQ5oB,KAAK2e,UAAU2nC,SAAS51C,OhNkldvE6zD,EAAgBhjE,UgN/kdhB2vC,QhN+kdoC,WgN9kdlClxC,KAAK2F,MAAM,QAAS,QAAS3F,KAAK2e,UAAU2nC,SAAS51C,OhNkldvD6zD,EAAgBhjE,UgN/kdhB8vC,OhN+kdmC,WgN9kdjCrxC,KAAK2F,MAAM,QAAS,OAAQ3F,KAAK2e,UAAU2nC,SAAS51C,OhNkldtD6zD,EAAgBhjE,UgN/kdhB8uD,gBhN+kd4C,WgN9kd1CrwD,KAAK2F,MAAM,cAAe,SAAU3F,KAAK2e,UAAU2nC,SAAS51C,OhNkld9D6zD,EAAgBhjE,UgN/kdhB6jE,ahN+kdyC,WgN9kdvCplE,KAAK2F,MAAM,cAAe,aAAc3F,KAAK2e,UAAU2nC,SAAS51C,OhNkldlE6zD,EAAgBhjE,UgN9kdhBoE,KhN8kdiC,SgN9kd5BgT,GACH,GAAM8sD,IAAOzlE,KAAK0kE,YAAc,eAAepgE,OAAOqU,EACtD4sD,MAAK5/D,KAAK8/D,IhNildLlB,GACP33B,EAAmBjrC,QAErBhC,GAAQgC,QgNrsda4iE,EhNssdrB3kE,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAmCA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAhCvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GiNpudxCm5B,EAAAzsC,EAAA,IjNwudI0sC,EAAqBzqC,EAAuBwqC,GiNvudhDjnC,EAAAxF,EAAA,GjN2udI29B,EAAW17B,EAAuBuD,GiN1udtC+mC,EAAAvsC,EAAA,IjN8udIwsC,EAAavqC,EAAuBsqC,GiN5udnByC,EjNgvdI,SAAUwyB,GiN7udjC,QAAAxyB,GAAYvwB,GAAW,SAAAhb,EAAAhC,SAAA3B,KAAAkvC,IAAA,EAAA1gC,EAAA7M,SAAA3B,KACrB0hE,EAAAnhE,KAAAP,KAAM2e,IjN8wdR,OAjCA,EAAIjQ,EAAW/M,SAASutC,EAAoBwyB,IAC5C,EAAIpuD,EAAc3R,SAASutC,IACzB7rC,IAAK,OACLnC,IAAK,WiNnvdM,MAAO,qBjN6vdpBguC,EAAmB3tC,UiNvvdnB+gC,WjNuvd0C,WiNtvdxCtiC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOoK,gBAAiB/L,KAAK+yB,OAC3D/yB,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAO+K,yBAA0B1M,KAAKwqD,iBjN0vdtEtb,EAAmB3tC,UiNvvdnBwxB,MjNuvdqC,YiNtvd/B/yB,KAAK2e,UAAUoe,oBAAsB2P,EAAA/qC,QAASi8B,MAAQ59B,KAAK2e,UAAUg1B,kBACnE3zC,KAAK2e,UAAUme,YACjB98B,KAAK2e,UAAU4d,QAEfv8B,KAAK2e,UAAUtM,SjNwvdrB68B,EAAmB3tC,UiNnvdnBipD,ejNmvd8C,WiNlvd5C,GAAMkb,GAAiB1lE,KAAK2e,UAAUoe,oBAAsB2P,EAAA/qC,QAASi8B,MAAQ59B,KAAK2e,UAAUg1B,cAC5F,IAAI+xB,IAAmB1lE,KAAK0lE,eAA5B,CAEA,GAAM79D,GAAS69D,EAAiB,WAAa,aAC7C1lE,MAAK2e,UAAUnH,IAAI3P,GAAQ,mBAC3B7H,KAAK0lE,eAAiBA,IjNsvdjBx2B,GACPtC,EAAmBjrC,QAIrBhC,GAAQgC,QiNvxdautC,EjNwxdrBtvC,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YA6CA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GA1CvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GkN3zdxCu5B,EAAA7sC,EAAA,IlN+zdI8sC,EAAmB7qC,EAAuB4qC,GkN9zd9CrC,EAAAxqC,EAAA,IlNk0dIyqC,EAAaxoC,EAAuBuoC,GkNj0dxC+B,EAAAvsC,EAAA,IlNq0dIwsC,EAAavqC,EAAuBsqC,GkNp0dxC/mC,EAAAxF,EAAA,GlNw0dI29B,EAAW17B,EAAuBuD,GkNv0dtCigE,EAAAzlE,EAAA,KlN20dI0lE,EAAUzjE,EAAuBwjE,EkN10drCzlE,GAAA,IlNg1dA,IkN90dqBivC,GlN80dH,SAAU02B,GkN/zd1B,QAAA12B,GAAYnZ,IAAM,EAAAryB,EAAAhC,SAAA3B,KAAAmvC,EAAA,IAAAtpC,IAAA,EAAA2I,EAAA7M,SAAA3B,KAChB6lE,EAAAtlE,KAAAP,KAAMg2B,GADU,OAEhBnwB,GAAK2kD,iBAFW3kD,ElNu6dlB,OAvGA,EAAI6I,EAAW/M,SAASwtC,EAAa02B,IACrC,EAAIvyD,EAAc3R,SAASwtC,IACzB9rC,IAAK,WACLnC,IAAK,WkNj1dU,OAAO,EAAAypC,EAAAhpC,SAAAikE,EAAAjkE,YlNq1dtB0B,IAAK,OACLnC,IAAK,WkNr1dM,MAAO,kBlNy1dlBmC,IAAK,SACLnC,IAAK,WkNx1dL,OACE4kE,qBAAsB,YlN61dxBziE,IAAK,aACLnC,IAAK,WkN11dL,OACEsc,MAAS,eACTuoD,oBAAqB,QlNy2dzB52B,EAAY5tC,UkNh2dZ+gC,WlNg2dmC,WkN/1djCtiC,KAAK0H,SAAS1H,KAAKg2B,KAAK2a,aAAc9S,EAAAl8B,QAAO+L,8BAA+B1N,KAAKgmE,kBACjFhmE,KAAK0H,SAAS1H,KAAKg2B,KAAK2a,aAAc9S,EAAAl8B,QAAOuL,sBAAuBlN,KAAKwqD,gBACzExqD,KAAK0H,SAAS1H,KAAKg2B,KAAM6H,EAAAl8B,QAAO+I,oBAAqB1K,KAAKo7B,QACtDp7B,KAAKg2B,KAAKuyB,wBACZvoD,KAAK2H,aAAa3H,KAAKg2B,KAAKuyB,sBAAuB1qB,EAAAl8B,QAAO8J,qBAAsBzL,KAAKo7B,QACrFp7B,KAAK0H,SAAS1H,KAAKg2B,KAAKuyB,sBAAuB1qB,EAAAl8B,QAAOqJ,kCAAmChL,KAAKimE,clNo2dlG92B,EAAY5tC,UkNh2dZykE,iBlNg2dyC,WkN/1dvChmE,KAAKwG,gBACLxG,KAAKsiC,clNm2dP6M,EAAY5tC,UkNh2dZ0kE,WlNg2dmC,SkNh2dxBxa,GACLzrD,KAAKg2B,KAAK+G,oBAAsB2P,EAAA/qC,QAASi8B,OAC7C59B,KAAKwqD,iBACLxqD,KAAKg2B,KAAK2a,aAAan5B,IAAIqO,SAAS,QAChC4lC,GACFzrD,KAAKg2B,KAAK2a,aAAan5B,IAAIqO,SAAS,OACpC7lB,KAAKg2B,KAAK2a,aAAan5B,IAAI0H,KAAK,oFAAoFuE,QAC7GzjB,KAAKg2B,KAAK2a,aAAan5B,IAAIuO,YAAY,SlNq2dlDopB,EAAY5tC,UkNj2dZwxB,MlNi2d8B,WkNh2d5B,GAAM4d,GAAe3wC,KAAKg2B,KAAK2a,aACzBhyB,EAAYgyB,EAAahyB,SAC1BA,GAAUme,aACbne,EAAUtM,OAERs+B,EAAan5B,IAAIoO,SAAS,QAC5BjH,EAAU8d,KAAK9d,EAAUke,gBlNk2d7BsS,EAAY5tC,UkN91dZipD,elN81duC,WkN91dtB,GAAAntB,GAAAr9B,IACfA,MAAKwG,gBACLxG,KAAKg2B,KAAK2a,aAAan5B,IAAIuO,YAAY,QACnC/lB,KAAK+jE,iBACP/jE,KAAKo7B,SACLp7B,KAAKwX,IAAIub,MAAM,iBAAMsK,GAAKtK,WAE5B/yB,KAAKsiC,clNq2dP6M,EAAY5tC,UkNl2dZwiE,alNk2dqC,WkNh2dnC,WAD4Dx0D,KAArCvP,KAAKg2B,KAAKvkB,QAAQy0D,kBAAkClmE,KAAKg2B,KAAKvkB,QAAQy0D,iBACpElmE,KAAKg2B,KAAK+G,oBAAsB2P,EAAA/qC,QAASi8B,MlNq2dpEuR,EAAY5tC,UkNl2dZ65B,OlNk2d+B,WkNz1d7B,MARAp7B,MAAKwX,IAAIkH,KAAK1e,KAAKu7B,UACjB7H,KAAM1zB,KAAKg2B,KAAKkG,KAAKgF,EAAE,QACvBilC,WAAYnmE,KAAKg2B,KAAKkG,KAAKgF,EAAE,mBAE3BlhC,KAAK+jE,iBACP/jE,KAAKg2B,KAAK2a,aAAan5B,IAAIqO,SAAS,QACpC7lB,KAAKg2B,KAAK2a,aAAal4B,EAAE,iDAAiD6K,OAAOtjB,KAAKwX,MAEjFxX,MlNq2dFmvC,GACPnC,EAAiBrrC,QAEnBhC,GAAQgC,QkNz7dawtC,ElN07drBvvC,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,GmNr8dxBC,EAAAD,QAAA,mJnN28dM,SAAUC,EAAQD,EAASO,GoN18djC,GAAAk1B,GAAAl1B,EAAA,IAEA,iBAAAk1B,SAAAx1B,EAAAS,EAAA+0B,EAAA,KAEA,IAKA3jB,IAAeqmB,WAAA,EAAAw0B,KAAA,EAEf76C,GAAAomB,cAPAA,GAQApmB,EAAAulB,eAAAznB,EAEArP,GAAA,GAAAk1B,EAAA3jB,EAEA2jB,GAAAm3B,SAAA3sD,EAAAD,QAAAy1B,EAAAm3B,SpN4+dM,SAAU3sD,EAAQD,EAASO,GqN7/djCP,EAAAC,EAAAD,QAAAO,EAAA,OAKAP,EAAAgG,MAAA/F,EAAAS,EAAA,2nDAAspD,MrNsgehpD,SAAUT,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GsNjheT,IAAAuzD,GAAAh2D,EAAA,KtNsheIi2D,EAEJ,SAAgCl0D,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAFxCi0D,EAI/Cv2D,GAAQgC,QAAUw0D,EAAkBx0D,QACpC/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YA6CA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GA1CvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GuNtjexCu5B,EAAA7sC,EAAA,IvN0jeI8sC,EAAmB7qC,EAAuB4qC,GuNzje9CrC,EAAAxqC,EAAA,IvN6jeIyqC,EAAaxoC,EAAuBuoC,GuN5jexChlC,EAAAxF,EAAA,GvNgkeI29B,EAAW17B,EAAuBuD,GuN/jetC0gE,EAAAlmE,EAAA,KvNmkeImmE,EAAOlkE,EAAuBikE,GuNlkelClQ,EAAAh2D,EAAA,KvNskeIi2D,EAAoBh0D,EAAuB+zD,EuNrke/Ch2D,GAAA,IvN2keA,IuNzkeqBomE,GvNykeA,SAAUT,GuNtje7B,QAAAS,GAAYtwC,IAAM,EAAAryB,EAAAhC,SAAA3B,KAAAsmE,EAAA,IAAAzgE,IAAA,EAAA2I,EAAA7M,SAAA3B,KAChB6lE,EAAAtlE,KAAAP,KAAMg2B,IACAuwC,EAASvwC,EAAKvkB,QAAQ+0D,oBAFZ,OAGhB3gE,GAAK4gE,OAASF,GAAUA,EAAOtlC,MAAQslC,EAAOtlC,MAAQ,KACtDp7B,EAAK6gE,WAAaH,GAAUA,EAAOI,UAAYJ,EAAOI,UAAY,YAClE9gE,EAAK+gE,SAAWL,GAAUA,EAAOM,eAAiD,kBAAzBN,GAAOM,cAC5DN,EAAOM,cACP,SAAAzb,GAAW,MAAOA,GAAMzqD,MAPZkF,EvN6relB,OAtIA,EAAI6I,EAAW/M,SAAS2kE,EAAgBT,IACxC,EAAIvyD,EAAc3R,SAAS2kE,IACzBjjE,IAAK,OACLnC,IAAK,WuN5keM,MAAO,qBvNglelBmC,IAAK,WACLnC,IAAK,WuN/keU,OAAO,EAAAypC,EAAAhpC,SAAAw0D,EAAAx0D,YvNmletB0B,IAAK,SACLnC,IAAK,WuNjleL,OACE4lE,yBAA0B,oBAC1BC,yBAA0B,oBvNsle5B1jE,IAAK,aACLnC,IAAK,WuNlleL,OACEsc,MAAS,cACTwpD,mBAAoB,QvNsmexBV,EAAe/kE,UuNxlef+gC,WvNwlesC,WuNvlepCtiC,KAAK0H,SAAS1H,KAAKg2B,KAAK2a,aAAc9S,EAAAl8B,QAAO+L,8BAA+B1N,KAAKgmE,kBACjFhmE,KAAK0H,SAAS1H,KAAKg2B,KAAK2a,aAAc9S,EAAAl8B,QAAOuL,sBAAuBlN,KAAKo7B,QACzEp7B,KAAK0H,SAAS1H,KAAKg2B,KAAK2a,aAAc9S,EAAAl8B,QAAO0L,kBAAmBrN,KAAKinE,iBACrEjnE,KAAK2e,UAAY3e,KAAKg2B,KAAKuyB,sBACvBvoD,KAAK2e,YACP3e,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAO4J,6BAA8BvL,KAAKyxC,qBACxEzxC,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAO6J,2BAA4BxL,KAAKknE,mBACtElnE,KAAK0H,SAAS1H,KAAK2e,UAAWkf,EAAAl8B,QAAOiK,eAAgB5L,KAAKmnE,mBvN4le9Db,EAAe/kE,UuNxlef4lE,gBvNwle2C,WuNvlezCnnE,KAAKonE,aAAY,IvN2lenBd,EAAe/kE,UuNxlefykE,iBvNwle4C,WuNvle1ChmE,KAAKonE,aAAY,GACjBpnE,KAAKwG,gBACLxG,KAAKsiC,cvN2lePgkC,EAAe/kE,UuNxlefkwC,oBvNwle+C,WuNvle7CzxC,KAAKqnE,iBACLrnE,KAAKonE,aAAY,IvN2lenBd,EAAe/kE,UuNxlef2lE,kBvNwle6C,SuNxle3B9b,GAChBprD,KAAKsnE,6BAA6Blc,EAAMvkD,KvN2le1Cy/D,EAAe/kE,UuNxlefgmE,cvNwleyC,SuNxle3B9/C,GACZ,GAAM+V,GAAUzuB,SAAS0Y,EAAMxkB,OAAOukE,QAAQC,SAAU,GAIxD,OAHAznE,MAAK2e,UAAUyrC,sBAAwB5sB,EACvCx9B,KAAKinE,kBACLx/C,EAAMmK,mBACC,GvN2leT00C,EAAe/kE,UuNxlef6lE,YvNwleuC,SuNxle3BM,GACV,GAAM7/D,GAAS6/D,EAAQ,WAAa,aACpC1nE,MAAKwX,IAAI3P,GAAQ,cvN2lenBy+D,EAAe/kE,UuNxlefomE,kBvNwle6C,WuNvle3C3nE,KAAKwX,IAAI0H,KAAK,MAAMyE,UvN2letB2iD,EAAe/kE,UuNxlef0lE,gBvNwle2C,WuNvlezCjnE,KAAKwX,IAAI0H,KAAK,MAAMuE,QvN2letB6iD,EAAe/kE,UuNxlefqmE,mBvNwle8C,SuNxle3B/gE,GACjB,MAAO7G,MAAKwX,IAAI0H,KAAK,QAASiB,MAAMtZ,GAAoC,GAA9B,oBAAoBA,EAAG,OAAYqH,UvN2le/Eo4D,EAAe/kE,UuNxlef+lE,6BvNwlewD,SuNxle3B9pC,GAC3B,GAAIx9B,KAAK6nE,WAAarqC,EAAS,CAC7Bx9B,KAAK4nE,qBAAqB7hD,YAAY,WACtC/lB,KAAK4nE,mBAAmBpqC,GAAS3X,SAAS,UAC1C,IAAMhe,GAAS21B,GAAW,EAAI,WAAa,aAC3Cx9B,MAAK8nE,UAAUjgE,GAAQ,WACvB7H,KAAK6nE,SAAWrqC,IvN4lepB8oC,EAAe/kE,UuNxlef8lE,evNwle0C,WuNtlexC,IAAK,GADD7K,GAASx8D,KAAK2e,UAAY3e,KAAK2e,UAAU4e,wBACpCl9B,EAAI,EAAGA,EAAIm8D,EAAOr5D,OAAQ9C,IACjCm8D,EAAOn8D,GAAGq8D,MAAQ18D,KAAK4mE,SAASpK,EAAOn8D,GAGzCL,MAAKwX,IAAIkH,KAAK1e,KAAKu7B,UACjBorC,UAAW3mE,KAAK0mE,WAChBqB,cAAe/nE,KAAKg2B,KAAKkG,KAAKgF,EAAE,YAChCD,MAAOjhC,KAAKymE,OACZjK,OAAQA,KAGVx8D,KAAK8nE,UAAY9nE,KAAKwX,IAAI0H,KAAK,oCAC/Blf,KAAK8nE,UAAUxkD,OAAf+iD,EAAA1kE,SACA3B,KAAKwX,IAAI8L,OAAOtjB,KAAK4iB,QvNylevB0jD,EAAe/kE,UuNtlef65B,OvNslekC,WuNrlehCp7B,KAAKqnE,gBAEL,IAAMW,GAAchoE,KAAKg2B,KAAK2a,aAAan5B,IAAI0H,KAAK,0BAOpD,OANI8oD,GAAY,GACdhoE,KAAKwX,IAAIywD,YAAYD,GAErBhoE,KAAKg2B,KAAK2a,aAAan5B,IAAI0H,KAAK,kDAAkDgpD,QAAQloE,KAAKwX,KAG1FxX,MvNqleFsmE,GACPt5B,EAAiBrrC,QAEnBhC,GAAQgC,QuNntea2kE,EvNoterB1mE,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,GwN/texBC,EAAAD,QAAA,yyBxNqueM,SAAUC,EAAQD,GyNruexBC,EAAAD,QAAA,6bzN2ueM,SAAUC,EAAQD,EAASO,G0N1uejC,GAAAk1B,GAAAl1B,EAAA,IAEA,iBAAAk1B,SAAAx1B,EAAAS,EAAA+0B,EAAA,KAEA,IAKA3jB,IAAeqmB,WAAA,EAAAw0B,KAAA,EAEf76C,GAAAomB,cAPAA,GAQApmB,EAAAulB,eAAAznB,EAEArP,GAAA,GAAAk1B,EAAA3jB,EAEA2jB,GAAAm3B,SAAA3sD,EAAAD,QAAAy1B,EAAAm3B,S1N4weM,SAAU3sD,EAAQD,EAASO,G2N7xejCP,EAAAC,EAAAD,QAAAO,EAAA,OAKAP,EAAAgG,MAAA/F,EAAAS,EAAA,s6BAA67B,M3Nsyev7B,SAAUT,EAAQD,EAASO,GAEjC,YA2CA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GAxCvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,G4Nl0exCq5B,EAAA3sC,EAAA,I5Ns0eI4sC,EAAgB3qC,EAAuB0qC,G4Nr0e3CnnC,EAAAxF,EAAA,G5Ny0eI29B,EAAW17B,EAAuBuD,G4Nx0etCkO,EAAA1T,EAAA,G5N40eI2T,EAAgB1R,EAAuByR,G4N10e3Cq5C,EAAA/sD,EAAA,I5N80eIgtD,EAAS/qD,EAAuB8qD,G4N70epCE,EAAAjtD,EAAA,I5Ni1eIktD,EAAUjrD,EAAuBgrD,G4N/0e/Bgb,GAAU,EAAAt0D,EAAAlS,SAAE,6BAEGytC,E5Nm1eP,SAAUg5B,G4N/0etB,QAAAh5B,GAAYpZ,IAAM,EAAAryB,EAAAhC,SAAA3B,KAAAovC,EAAA,IAAAvpC,IAAA,EAAA2I,EAAA7M,SAAA3B,KAChBooE,EAAA7nE,KAAAP,KAAMg2B,GADU,OAEhBnwB,GAAKskC,WAAa,KAClBtkC,EAAKsR,YAHWtR,E5No7elB,OApGA,EAAI6I,EAAW/M,SAASytC,EAASg5B,IACjC,EAAI90D,EAAc3R,SAASytC,IACzB/rC,IAAK,OACLnC,IAAK,W4Nt1eM,MAAO,a5N01elBmC,IAAK,UACLnC,IAAK,W4N11eS,MAAOinE,O5Ny2evB/4B,EAAQ7tC,U4Nj2eR4V,U5Ni2e8B,W4Nh2exBnX,KAAKg2B,KAAKvkB,QAAQ42D,cACfroE,KAAKqiC,UACRriC,KAAKwG,cAAcxG,KAAKg2B,KAAM6H,EAAAl8B,QAAO+I,qBACrC1K,KAAKwiC,UAEExiC,KAAKqiC,UACdriC,KAAKquB,UACLruB,KAAK0H,SAAS1H,KAAKg2B,KAAM6H,EAAAl8B,QAAO+I,oBAAqB1K,KAAKmX,a5Nq2e9Di4B,EAAQ7tC,U4Nj2eR+gC,W5Ni2e+B,W4Nh2e7BtiC,KAAK0H,SAAS1H,KAAKg2B,KAAM6H,EAAAl8B,QAAO+I,oBAAqB1K,KAAKmX,WAC1DnX,KAAK0H,SAAS1H,KAAKg2B,KAAK2a,aAAc9S,EAAAl8B,QAAO+L,8BAA+B1N,KAAKgmE,kBAC7EhmE,KAAKg2B,KAAK2a,aAAahyB,WACzB3e,KAAKgmE,oB5Nm2eT52B,EAAQ7tC,U4N/1eRykE,iB5N+1eqC,W4N91enChmE,KAAKmqC,YAAcnqC,KAAKwG,cAAcxG,KAAKmqC,YAC3CnqC,KAAKmqC,WAAanqC,KAAKg2B,KAAK2a,aAAahyB,UACzC3e,KAAK0H,SAAS1H,KAAKmqC,WAAYtM,EAAAl8B,QAAOgK,eAAgB3L,KAAKsoE,aAC3DtoE,KAAK0H,SAAS1H,KAAKmqC,WAAYtM,EAAAl8B,QAAOkK,gBAAiB7L,KAAKuoE,cAC5DvoE,KAAK0H,SAAS1H,KAAKmqC,WAAYtM,EAAAl8B,QAAOiK,eAAgB5L,KAAKwoE,WAC3DxoE,KAAK0H,SAAS1H,KAAKmqC,WAAYtM,EAAAl8B,QAAOmK,gBAAiB9L,KAAKwoE,WAC5DxoE,KAAK0H,SAAS1H,KAAKmqC,WAAYtM,EAAAl8B,QAAO0J,gBAAiBrL,KAAKwoE,WAC5DxoE,KAAKwoE,a5Nk2ePp5B,EAAQ7tC,U4N/1eR8sB,Q5N+1e4B,W4N91e1B+5C,EAAA7mE,UAAM8sB,QAAN9tB,KAAAP,MACAA,KAAKwoE,a5Nk2ePp5B,EAAQ7tC,U4N/1eR47B,Q5N+1e4B,W4N91e1BirC,EAAA7mE,UAAM47B,QAAN58B,KAAAP,MACAA,KAAKwoE,a5Nk2ePp5B,EAAQ7tC,U4N/1eRknE,W5N+1e+B,S4N/1epB3tD,GACT,GAAM4lD,IAAS,EAAA7sD,EAAAlS,SAAE,YACjB++D,GAAO,GAAGr7C,MAAQ,GAClBq7C,EAAO,GAAGl7C,OAAS,EACnB,IAAMvgB,GAAMy7D,EAAO,GAAGQ,WAAW,KACjCj8D,GAAIyjE,UAAY,MAChB,IAAMhoE,IAAI,EAAAmT,EAAAlS,SAAEmZ,GAAKoE,KAAK,QAAQH,KAAK,KAC7B4pD,EAAO,GAAIC,QAAOloE,EACxBuE,GAAI4jE,KAAKF,EACT,IAAMG,IAAO,EAAAj1D,EAAAlS,SAAE,+CAEf,OADAmnE,GAAK/pD,KAAK,OAAQ2hD,EAAO,GAAGqI,UAAU,cAC/BD,G5Nk2eT15B,EAAQ7tC,U4N/1eR+mE,Y5N+1egC,W4N91ezBtoE,KAAKgpE,WACRhpE,KAAKgpE,SAAWhpE,KAAKyoE,WAALvb,EAAAvrD,UAElB3B,KAAKipE,WAAWjpE,KAAKgpE,W5Ni2evB55B,EAAQ7tC,U4N91eRgnE,a5N81eiC,W4N71e1BvoE,KAAKkpE,YACRlpE,KAAKkpE,UAAYlpE,KAAKyoE,WAALrb,EAAAzrD,UAEnB3B,KAAKipE,WAAWjpE,KAAKkpE,Y5Ng2evB95B,EAAQ7tC,U4N71eRinE,U5N61e8B,Y4N51e5B,EAAA30D,EAAAlS,SAAE,6BAA6BgF,UAC/B,EAAAkN,EAAAlS,SAAE,QAAQ2hB,OAAOtjB,KAAKmoE,U5Ng2exB/4B,EAAQ7tC,U4N71eR0nE,W5N61e+B,S4N71epBH,GACLA,KACF,EAAAj1D,EAAAlS,SAAE,6BAA6BgF,UAC/B,EAAAkN,EAAAlS,SAAE,QAAQ2hB,OAAOwlD,K5Ni2ed15B,GACPtC,EAAcnrC,QAEhBhC,GAAQgC,Q4N37eaytC,E5N47erBxvC,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,G6N/8eT,IAAAyzD,GAAAl2D,EAAA,K7No9eIm2D,EAEJ,SAAgCp0D,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAF9Cm0D,EAIzCz2D,GAAQgC,QAAU00D,EAAY10D,QAC9B/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YA+CA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GA5CvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,G8Nh/exC1P,EAAA5D,EAAA,GAEA6sC,EAAA7sC,EAAA,I9No/eI8sC,EAAmB7qC,EAAuB4qC,G8Nn/e9CrC,EAAAxqC,EAAA,I9Nu/eIyqC,EAAaxoC,EAAuBuoC,G8Nt/exChlC,EAAAxF,EAAA,G9N0/eI29B,EAAW17B,EAAuBuD,G8Nz/etC+mC,EAAAvsC,EAAA,I9N6/eIwsC,EAAavqC,EAAuBsqC,G8N5/exC2pB,EAAAl2D,EAAA,K9NggfIm2D,EAAcl0D,EAAuBi0D,E8N//ezCl2D,GAAA,I9NqgfA,I8NngfqBipE,G9NmgfN,SAAUtD,G8Nn/evB,QAAAsD,GAAYnzC,IAAM,EAAAryB,EAAAhC,SAAA3B,KAAAmpE,EAAA,IAAAtjE,IAAA,EAAA2I,EAAA7M,SAAA3B,KAChB6lE,EAAAtlE,KAAAP,KAAMg2B,GADU,OAEhBnwB,GAAKujE,qBAAsB,EAC3BvjE,EAAKwjE,cAAgB,KACrBxjE,EAAK+lD,SAAW,KAChB/lD,EAAKyjE,kBAAoB,KACzBzjE,EAAK0jE,iBAAmB1jE,EAAK8qC,aAAal/B,QAAQ83D,eAC9C1jE,EAAK0jE,iBACH1jE,EAAK8qC,aAAal/B,QAAQ+3D,qBAC5B3jE,EAAK4jE,0BAA2B,GAAIx4D,OAAOy4D,UAAY,GAAIz4D,MAAKpL,EAAK8qC,aAAal/B,QAAQ+3D,sBAAsBE,UAEhH7jE,EAAK4jE,yBAA2B,GAXpB5jE,E9N0qflB,OAtLA,EAAI6I,EAAW/M,SAASwnE,EAAUtD,IAClC,EAAIvyD,EAAc3R,SAASwnE,IACzB9lE,IAAK,OACLnC,IAAK,W8NtgfM,MAAO,e9N0gflBmC,IAAK,WACLnC,IAAK,W8NzgfL,OAAO,EAAAypC,EAAAhpC,SAAA00D,EAAA10D,Y9N6gfP0B,IAAK,aACLnC,IAAK,W8N3gfL,OACEsc,MAAS,YACTmsD,iBAAkB,O9NghfpBtmE,IAAK,eACLnC,IAAK,W8N9gfc,MAAOlB,MAAKg2B,KAAK2a,gB9NkhfpCttC,IAAK,wBACLnC,IAAK,W8NlhfuB,MAAOlB,MAAK2wC,aAAahyB,a9NshfrDtb,IAAK,sBACLnC,IAAK,W8NthfqB,MAAOlB,MAAK4pE,uBAAyB5pE,KAAK4pE,sBAAsB7sC,oBAAsB2P,EAAA/qC,QAASi8B,MAAQ59B,KAAK4pE,sBAAsBj2B,kB9N0hf5JtwC,IAAK,gBACLnC,IAAK,W8N1hfe,MAAOlB,MAAK6pE,sBAAwB7pE,KAAKupE,kB9N8hf7DlmE,IAAK,oBACLnC,IAAK,W8N9hfmB,MAAOlB,MAAKupE,gBAAkBvpE,KAAK6pE,wB9Nmjf7DV,EAAS5nE,U8NnifT+gC,W9NmifgC,W8Nlif9BtiC,KAAK0H,SAAS1H,KAAK2wC,aAAc9S,EAAAl8B,QAAOuL,sBAAuBlN,KAAKo7B,QACpEp7B,KAAK0H,SAAS1H,KAAK2wC,aAAc9S,EAAAl8B,QAAO2L,+BAAgCtN,KAAK8pE,UAC7E9pE,KAAK0H,SAAS1H,KAAK2wC,aAAc9S,EAAAl8B,QAAO4L,gCAAiCvN,KAAK+pE,UAC9E/pE,KAAK0H,SAAS1H,KAAK2wC,aAAc9S,EAAAl8B,QAAO+L,8BAA+B1N,KAAKgqE,oBACxEhqE,KAAK4pE,wBACP5pE,KAAK0H,SAAS1H,KAAK4pE,sBAAuB/rC,EAAAl8B,QAAOqJ,kCAAmChL,KAAK43B,QACzF53B,KAAK0H,SAAS1H,KAAK4pE,sBAAuB/rC,EAAAl8B,QAAO8J,qBAAsBzL,KAAKiqE,kB9NuifhFd,EAAS5nE,U8NnifTyoE,mB9NmifwC,W8NliftChqE,KAAKwG,gBACLxG,KAAKsiC,c9NsifP6mC,EAAS5nE,U8NnifT0oE,e9NmifoC,S8NnifrB/2B,GACblzC,KAAK4rD,SAAW1Y,EAAakgB,MAC7BpzD,KAAKspE,kBAAoBp2B,EAAao2B,kBACtCtpE,KAAK43B,U9NsifPuxC,EAAS5nE,U8NnifTuoE,S9Nmif8B,S8NnifrBriD,GACPznB,KAAKopE,qBAAsB,EAC3BppE,KAAKkqE,uBAAuBziD,GAC5BznB,KAAK43B,U9NsifPuxC,EAAS5nE,U8NnifTwoE,S9Nmif8B,W8Nlif5B/pE,KAAKopE,qBAAsB,EAC3BppE,KAAK43B,U9NsifPuxC,EAAS5nE,U8NnifT2oE,uB9Nmif4C,S8NnifrBziD,GACrB,GAAM9C,GAAS8C,EAAMiqC,MAAQ1xD,KAAK2wC,aAAaghB,kBAAkBhtC,SAASM,IAE1EjlB,MAAKqpE,cAAgB/jD,KAAKwiB,IAAI,EAAGxiB,KAAKuvB,IAAIlwB,EAAO3kB,KAAK2wC,aAAaghB,kBAAkBtsC,QAAS,K9NsifhG8jD,EAAS5nE,U8NnifT4oE,Y9NmifiC,W8Nlif/B,GAAIvL,UAAUwL,SAAsB1pE,SAAG8U,QAkBvC,OAjBIxV,MAAKqqE,mBACHrqE,KAAKspE,mBACP9zD,EAAI,GAAIvE,MAAKjR,KAAKspE,mBAClB5oE,EAAI,GAAIuQ,MAAKjR,KAAKspE,mBAClB5oE,EAAE4pE,SAAS,EAAE,EAAE,EAAE,GACjBF,GAAyB50D,EAAEk0D,UAAYhpE,EAAEgpE,WAAa,IAAQ1pE,KAAK4rD,WAEnElrD,EAAI,GAAIuQ,OAAK,GAAIA,OAAOy4D,UAAY1pE,KAAKypE,0BACzCj0D,EAAI,GAAIvE,MAAKvQ,GACb0pE,GAAwB50D,EAAI9U,EAAE4pE,SAAS,EAAE,EAAE,EAAE,IAAM,MAErD1L,EAAYwL,EAAuBpqE,KAAK4rD,SAAa5rD,KAAKqpE,cAAgBrpE,KAAK4rD,UAChE,IACbgT,GAAY,QAEPA,EAAW5+D,KAAKqpE,cAAgBrpE,KAAK4rD,UAErCgT,WAAUwL,yB9NyifrBjB,EAAS5nE,U8NtifTq2B,O9Nsif4B,W8Nrif1B,GAAK53B,KAAK4wD,SAIV,GAAK5wD,KAAKuqE,kBAGH,CACL,GAAM3L,GAAW5+D,KAAKmqE,cAChBK,GAAkB,EAAA1mE,EAAA6K,YAAWiwD,EAASA,SAAU5+D,KAAKqqE,kBAO3D,IALIG,IAAoBxqE,KAAKyqE,oBAC3BzqE,KAAK0qE,YAAY1mD,KAAKwmD,GACtBxqE,KAAKyqE,kBAAoBD,GAGvBxqE,KAAK2qE,cAAe,CACtB3qE,KAAK4qE,YAAYjoD,MACjB,IAAMkoD,IAAkB,EAAA/mE,EAAA6K,YAAW3O,KAAKupE,eAAiB3K,EAASwL,qBAAuBpqE,KAAK4rD,SAAU5rD,KAAKupE,eACzGsB,KAAoB7qE,KAAK4zD,oBAC3B5zD,KAAK4qE,YAAY5mD,KAAK6mD,GACtB7qE,KAAK4zD,kBAAoBiX,OAEpB7qE,MAAK4qE,YAAYnnD,MAI1BzjB,MAAKwX,IAAImL,MACT,IAAMmuC,GAAiB9wD,KAAK2wC,aAAaghB,kBAAkBtsC,QACrDylD,EAAU9qE,KAAKwX,IAAI6N,QACrB0lD,EAAY/qE,KAAKqpE,cAAgBvY,CACrCia,IAAaD,EAAU,EACvBC,EAAYzlD,KAAKuvB,IAAI,EAAGvvB,KAAKwiB,IAAIijC,EAAWja,EAAiBga,IAC7D9qE,KAAKwX,IAAIkM,IAAI,OAAQqnD,OA5BrB/qE,MAAKwX,IAAIiM,OACTzjB,KAAKwX,IAAIkM,IAAI,OAAQ,U9NskfzBylD,EAAS5nE,U8NvifTgpE,gB9NuifqC,W8NtifnC,MAAOvqE,MAAK4pE,uBAAyB5pE,KAAK4pE,sBAAsB/hD,SAAS2pC,aAAexxD,KAAKopE,qBAA8C,OAAvBppE,KAAKqpE,eAA4C,OAAlBrpE,KAAK4rD,U9N0if1Jud,EAAS5nE,U8NvifT65B,O9Nuif4B,W8Ntif1Bp7B,KAAK4wD,UAAW,EAChB5wD,KAAK4zD,kBAAoB,KACzB5zD,KAAKyqE,kBAAoB,KACzBzqE,KAAKwX,IAAIkH,KAAK1e,KAAKu7B,YACnBv7B,KAAKwX,IAAIiM,OACTzjB,KAAK2wC,aAAan5B,IAAI8L,OAAOtjB,KAAKgQ,IAClChQ,KAAK0qE,YAAc1qE,KAAKwX,IAAI0H,KAAK,oBACjClf,KAAK4qE,YAAc5qE,KAAKwX,IAAI0H,KAAK,mBACjClf,KAAK4qE,YAAYnnD,OACjBzjB,KAAK43B,U9N0ifAuxC,GACPn8B,EAAiBrrC,QAInBhC,GAAQgC,Q8N/rfawnE,E9NgsfrBvpE,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,G+NjtfxBC,EAAAD,QAAA,+D/NutfM,SAAUC,EAAQD,EAASO,GgOttfjC,GAAAk1B,GAAAl1B,EAAA,IAEA,iBAAAk1B,SAAAx1B,EAAAS,EAAA+0B,EAAA,KAEA,IAKA3jB,IAAeqmB,WAAA,EAAAw0B,KAAA,EAEf76C,GAAAomB,cAPAA,GAQApmB,EAAAulB,eAAAznB,EAEArP,GAAA,GAAAk1B,EAAA3jB,EAEA2jB,GAAAm3B,SAAA3sD,EAAAD,QAAAy1B,EAAAm3B,ShOwvfM,SAAU3sD,EAAQD,EAASO,GiOzwfjCP,EAAAC,EAAAD,QAAAO,EAAA,OAKAP,EAAAgG,MAAA/F,EAAAS,EAAA,qnBAA8oB,MjOkxfxoB,SAAUT,EAAQD,EAASO,GAEjC,YA+BA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GA5BvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C2P,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCE,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDC,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GkO9yfxCq5B,EAAA3sC,EAAA,IlOkzfI4sC,EAAgB3qC,EAAuB0qC,GkOhzf3CnnC,EAAAxF,EAAA,GlOozfI29B,EAAW17B,EAAuBuD,GkOlzfjBslE,ElOszfD,SAAU5C,GAG5B,QAAS4C,KAEP,OADA,EAAIrnE,EAAiBhC,SAAS3B,KAAMgrE,IAC7B,EAAIx8D,EAA4B7M,SAAS3B,KAAMooE,EAAY/jE,MAAMrE,KAAM+F,YAwBhF,OA5BA,EAAI2I,EAAW/M,SAASqpE,EAAe5C,GAOvC4C,EAAczpE,UkO3zfd+gC,WlO2zfqC,WkO1zfnCtiC,KAAK0H,SAAS1H,KAAKg2B,KAAM6H,EAAAl8B,QAAO8I,wBAAyBzK,KAAKirE,sBlO8zfhED,EAAczpE,UkO3zfd0pE,oBlO2zf8C,WkO1zf5C,GAAMC,GAAmBlrE,KAAKg2B,KAAKxZ,WAAWhV,OAAO,SAAAmX,GAAA,MAAyC,UAA5BA,EAAU2nC,SAAS3lD,OAAkB,IAAMX,KAAKg2B,KAAKxZ,WAAW,EAC9H0uD,IACFlrE,KAAKg2B,KAAKxZ,WAAW5U,QAAQ,SAAC+W,GACxBA,IAAcusD,GAChBvsD,EAAUwe,clOi0flB,EAAI7pB,EAAc3R,SAASqpE,IACzB3nE,IAAK,OACLnC,IAAK,WkO90fM,MAAO,clOk1fb8pE,GACPl+B,EAAcnrC,QAEhBhC,GAAQgC,QkOt1faqpE,ElOu1frBprE,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAiCA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GA9BvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C2P,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCE,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDC,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GmOt3fxC9N,EAAAxF,EAAA,GnO03fI29B,EAAW17B,EAAuBuD,GmOz3ftCmnC,EAAA3sC,EAAA,InO63fI4sC,EAAgB3qC,EAAuB0qC,GmO53f3C/oC,EAAA5D,EAAA,GAEqBirE,EnOg4fN,SAAU/C,GAGvB,QAAS+C,KAEP,OADA,EAAIxnE,EAAiBhC,SAAS3B,KAAMmrE,IAC7B,EAAI38D,EAA4B7M,SAAS3B,KAAMooE,EAAY/jE,MAAMrE,KAAM+F,YA4BhF,OAhCA,EAAI2I,EAAW/M,SAASwpE,EAAU/C,GAOlC+C,EAAS5pE,UmOt4fT+gC,WnOs4fgC,WmOr4f9BtiC,KAAK0H,SAAS1H,KAAKg2B,KAAK2a,aAAc9S,EAAAl8B,QAAO+L,8BAA+B1N,KAAKgmE,iBACjF,IAAMrnD,GAAY3e,KAAKg2B,KAAKuyB,qBACxB5pC,KACF3e,KAAK0H,SAASiX,EAAWkf,EAAAl8B,QAAOmK,gBAAiB9L,KAAK4wC,OACtD5wC,KAAK0H,SAASiX,EAAWkf,EAAAl8B,QAAOiK,eAAgB5L,KAAK4wC,SnO04fzDu6B,EAAS5pE,UmOt4fTykE,iBnOs4fsC,WmOr4fpChmE,KAAKwG,gBACLxG,KAAKsiC,cnOy4fP6oC,EAAS5pE,UmOt4fTqvC,MnOs4f2B,gBmOr4f4C,KAA3C5wC,KAAKg2B,KAAKvkB,QAAQ25D,qBAAwCprE,KAAKg2B,KAAKvkB,QAAQ25D,sBACrFtnE,EAAAqP,WAAWY,gBAC1B/T,KAAKg2B,KAAK6yB,qBnOw4fd,EAAIv1C,EAAc3R,SAASwpE,IACzB9nE,IAAK,OACLnC,IAAK,WmO55fM,MAAO,gBnOg6fbiqE,GACPr+B,EAAcnrC,QAEhBhC,GAAQgC,QmOp6fawpE,EnOq6frBvrE,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAiCA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GA9BvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GoOp8fxC1P,EAAA5D,EAAA,GACA0T,EAAA1T,EAAA,GpOy8fI2T,EAAgB1R,EAAuByR,GoOx8f3Ci5B,EAAA3sC,EAAA,IpO48fI4sC,EAAgB3qC,EAAuB0qC,GoOn8ftBw+B,EpO88fP,SAAUjD,GoO38ftB,QAAAiD,GAAYr1C,IAAM,EAAAryB,EAAAhC,SAAA3B,KAAAqrE,EAAA,IAAAxlE,IAAA,EAAA2I,EAAA7M,SAAA3B,KAChBooE,EAAA7nE,KAAAP,KAAMg2B,GADU,OAEhBnwB,GAAKylE,sBAFWzlE,EpO4igBlB,OAhGA,EAAI6I,EAAW/M,SAAS0pE,EAASjD,IACjC,EAAI90D,EAAc3R,SAAS0pE,IACzBhoE,IAAK,OACLnC,IAAK,WoOj9fM,MAAO,cpOs+fpBmqE,EAAQ9pE,UoO19fR2/B,EpO09fsB,SoO19fpB79B,GACA,GAAMs5D,GAAO38D,KAAKurE,YACZC,EAAexrE,KAAKyrE,UAAL,EAErB,QADa9O,GAAQ38D,KAAKyrE,UAAU9O,IAAS6O,GACjCnoE,IAAQmoE,EAAanoE,IAAQA,GpO69f3CgoE,EAAQ9pE,UoO19fRgqE,UpO09f8B,WoO19fhB,MAAOvrE,MAAKg2B,KAAKvkB,QAAQX,WAAY,EAAAhN,EAAA6M,uBpO89fnD06D,EAAQ9pE,UoO59fR+pE,oBpO49fwC,WoO39ftC,GAAMI,IACJC,IACEj4C,KAAQ,OACRk4C,aAAgB,eAChBp9C,SAAY,WACZq9C,uBAA0B,kGAC1BC,oBAAuB,wBACvBC,sBAAyB,iDAE3BC,IACEt4C,KAAQ,UACRk4C,aAAgB,wBAChBp9C,SAAY,aACZq9C,uBAA0B,qGAC1BC,oBAAuB,uCACvBC,sBAAyB,mDAE3BE,IACEv4C,KAAQ,OACRk4C,aAAgB,iBAChBp9C,SAAY,gBACZq9C,uBAA0B,yGAE5BK,IACEx4C,KAAQ,cACRk4C,aAAgB,kBAChBp9C,SAAY,YACZq9C,uBAA0B,mGAE5BM,IACEz4C,KAAQ,YACRk4C,aAAgB,mBAChBp9C,SAAY,YACZq9C,uBAA0B,uGAC1BC,oBAAuB,+BACvBC,sBAAyB,2DAE3BtvD,IACEiX,KAAQ,QACRk4C,aAAgB,mBAChBp9C,SAAY,UACZq9C,uBAA0B,iGAE5BO,IACE14C,KAAQ,eACRk4C,aAAgB,6BAChBp9C,SAAY,WACZq9C,uBAA0B,oFAI9B7rE,MAAKyrE,UAAY53D,EAAAlS,QAAEsM,QAAO,EAAMy9D,EAAiB1rE,KAAKg2B,KAAKvkB,QAAQ46D,aACnErsE,KAAKyrE,UAAU,SAAWzrE,KAAKyrE,UAAL,GAC1BzrE,KAAKyrE,UAAU,SAAWzrE,KAAKyrE,UAAL,GAC1BzrE,KAAKyrE,UAAU,UAAYzrE,KAAKyrE,UAAL,GAC3BzrE,KAAKyrE,UAAU,SAAWzrE,KAAKyrE,UAAL,GAC1BzrE,KAAKyrE,UAAU,SAAWzrE,KAAKyrE,UAAL,GAC1BzrE,KAAKyrE,UAAU,SAAWzrE,KAAKyrE,UAAL,IpO+9frBJ,GACPv+B,EAAcnrC,QAEhBhC,GAAQgC,QoOljgBa0pE,EpOmjgBrBzrE,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAGAY,QAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GqOxkgBT,IAAAi0D,GAAA12D,EAAA,KrO6kgBI22D,EAEJ,SAAgC50D,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,IAF3C20D,EAI5Cj3D,GAAQgC,QAAUk1D,EAAel1D,QACjC/B,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,EAASO,GAEjC,YAiDA,SAASiC,GAAuBF,GAAO,MAAOA,IAAOA,EAAIb,WAAaa,GAAQN,QAASM,GA9CvFnB,OAAOC,eAAepB,EAAS,cAC7BgD,OAAO,GAGT,IAAIe,GAAmBxD,EAAoB,GAEvCyD,EAAmBxB,EAAuBuB,GAE1C6P,EAA8BrT,EAAoB,GAElDsO,EAA8BrM,EAAuBoR,GAErDF,EAAgBnT,EAAoB,GAEpCoT,EAAgBnR,EAAuBkR,GAEvCG,EAAatT,EAAoB,GAEjCwO,EAAavM,EAAuBqR,GsO7mgBxC9N,EAAAxF,EAAA,GtOingBI29B,EAAW17B,EAAuBuD,GsOhngBtCqnC,EAAA7sC,EAAA,ItOongBI8sC,EAAmB7qC,EAAuB4qC,GsOnngB9CrC,EAAAxqC,EAAA,ItOungBIyqC,EAAaxoC,EAAuBuoC,GsOtngBxC1K,EAAA9/B,EAAA,ItO0ngBI+/B,EAAU99B,EAAuB69B,GsOxngBrCssC,EAAApsE,EAAA,KtO4ngBIqsE,EAAWpqE,EAAuBmqE,GsO3ngBtC1V,EAAA12D,EAAA,KtO+ngBI22D,EAAiB10D,EAAuBy0D,EsO9ngB5C12D,GAAA,ItOoogBA,IsOlogBqBssE,GtOkogBH,SAAU3G,GsOvngB1B,QAAA2G,GAAYx2C,GAAM,GAAAy2C,IAAA,EAAA9oE,EAAAhC,SAAA3B,KAAAwsE,EAAA,IAAA3mE,IAAA,EAAA2I,EAAA7M,SAAA3B,KAChB6lE,EAAAtlE,KAAAP,KAAMg2B,GAEN,OAAInwB,GAAK4L,QAAQmyD,oBAAoB6I,EAAO5mE,EAAKwoB,WAAZ,EAAA7f,EAAA7M,SAAAkE,EAAA4mE,IAHrB5mE,EtOiugBlB,OAzGA,EAAI6I,EAAW/M,SAAS6qE,EAAa3G,IACrC,EAAIvyD,EAAc3R,SAAS6qE,IACzBnpE,IAAK,OACLnC,IAAK,WsOrogBM,MAAO,kBtOyogBlBmC,IAAK,WACLnC,IAAK,WsOzogBU,OAAO,EAAAypC,EAAAhpC,SAAAk1D,EAAAl1D,YtO6ogBtB0B,IAAK,YACLnC,IAAK,WsO7ogBW,MAAOlB,MAAKg2B,KAAKuyB,yBtOipgBjCllD,IAAK,aACLnC,IAAK,WsOhpgBL,OACEsc,MAAS,sBACTkvD,oBAAqB,QtOiqgBzBF,EAAYjrE,UsOvpgBZ+gC,WtOupgBmC,WsOtpgBjCtiC,KAAK0H,SAAS1H,KAAKg2B,KAAM6H,EAAAl8B,QAAO6G,MAAOxI,KAAKsxC,SAC5CtxC,KAAK0H,SAAS1H,KAAKg2B,KAAK2a,aAAc9S,EAAAl8B,QAAO+L,8BAA+B1N,KAAKgqE,qBtO0pgBnFwC,EAAYjrE,UsOvpgBZorE,WtOupgBmC,WsOtpgBjC3sE,KAAK4sE,aAAe5sE,KAAKwX,IAAI0H,KAAK,gCAClClf,KAAK4sE,cAAgB5sE,KAAK4sE,aAAapnE,GAAG,QAASxF,KAAK6sE,OAAO91D,KAAK/W,QtO0pgBtEwsE,EAAYjrE,UsOvpgBZsrE,OtOupgB+B,WsOvpgBtB,GAAAxvC,GAAAr9B,IACPA,MAAK2H,aAAa3H,KAAKg2B,KAAM6H,EAAAl8B,QAAOgJ,WAAY,iBAAM0yB,GAAK1e,UAAUtM,SACrErS,KAAKg2B,KAAKzI,KAAKvtB,KAAKyR,QAAQgkB,QAASz1B,KAAKyR,QAAQ2a,UAClDpsB,KAAK8sE,gBtO8pgBPN,EAAYjrE,UsO3pgBZurE,atO2pgBqC,WsO1pgBnC9sE,KAAK4sE,cAAgB5sE,KAAK4sE,aAAa9mE,IAAI,UtO8pgB7C0mE,EAAYjrE,UsO3pgBZyoE,mBtO2pgB2C,WsO1pgBzChqE,KAAK8S,IAAM,KACX9S,KAAK8sE,eACL9sE,KAAKyjB,QtO8pgBP+oD,EAAYjrE,UsO3pgBZ+vC,QtO2pgBgC,WsO3pgBd,GAAVx+B,GAAU/M,UAAA5C,OAAA,OAAAoM,KAAAxJ,UAAA,GAAAA,UAAA,KACZ+M,GAAI4tB,QAAUT,EAAAt+B,QAAYg/B,OAAOC,QACnC5gC,KAAK8S,IAAMA,EACX9S,KAAK2e,UAAUupC,sBACfloD,KAAK2e,UAAU6d,OACfx8B,KAAK2iB,StOiqgBT6pD,EAAYjrE,UsO7pgBZohB,KtO6pgB6B,WsO5pgB3B3iB,KAAKo7B,SACLp7B,KAAKwX,IAAImL,QtOgqgBX6pD,EAAYjrE,UsO7pgBZkiB,KtO6pgB6B,WsO5pgB3BzjB,KAAKwX,IAAIiM,QtOgqgBX+oD,EAAYjrE,UsO7pgBZ65B,OtO6pgB+B,WsO5pgB7B,GAAKp7B,KAAK8S,IAcV,MAZA9S,MAAKwX,IAAIkH,KAAK1e,KAAKu7B,UACjB0F,MAAOjhC,KAAK8S,IAAIiuB,GAAGE,MACnBE,QAASnhC,KAAK8S,IAAIiuB,GAAGI,QACrBZ,KAAMvgC,KAAK8S,IAAIytB,KACfuoC,KAAM9oE,KAAK8S,IAAIiuB,GAAG+nC,MAAQ,GAC1BiE,wBAGF/sE,KAAKg2B,KAAKxe,IAAI8L,OAAOtjB,KAAKgQ,IAE1BhQ,KAAK2sE,aAEE3sE,MtOgqgBFwsE,GACPx/B,EAAiBrrC,QAEnBhC,GAAQgC,QsO/ugBa6qE,EtOgvgBrB5sE,EAAOD,QAAUA,EAAiB,SAI5B,SAAUC,EAAQD,GuO7vgBxBC,EAAAD,QAAA,4VvOmwgBM,SAAUC,EAAQD,GwOnwgBxBC,EAAAD,QAAA,4gBxOywgBM,SAAUC,EAAQD,EAASO,GyOxwgBjC,GAAAk1B,GAAAl1B,EAAA,IAEA,iBAAAk1B,SAAAx1B,EAAAS,EAAA+0B,EAAA,KAEA,IAKA3jB,IAAeqmB,WAAA,EAAAw0B,KAAA,EAEf76C,GAAAomB,cAPAA,GAQApmB,EAAAulB,eAAAznB,EAEArP,GAAA,GAAAk1B,EAAA3jB,EAEA2jB,GAAAm3B,SAAA3sD,EAAAD,QAAAy1B,EAAAm3B,SzO0ygBM,SAAU3sD,EAAQD,EAASO,G0O3zgBjCP,EAAAC,EAAAD,QAAAO,EAAA,OAKAP,EAAAgG,MAAA/F,EAAAS,EAAA,w1BAA+2B","file":"clappr.plainhtml5.min.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[\"Clappr\"] = factory();\n\telse\n\t\troot[\"Clappr\"] = factory();\n})(typeof self !== 'undefined' ? self : 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[\"Clappr\"] = factory();\n\telse\n\t\troot[\"Clappr\"] = factory();\n})(typeof self !== 'undefined' ? self : 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// 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 = 96);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(39);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(130);\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(75);\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(39);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(74);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\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 _keys = __webpack_require__(52);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _typeof2 = __webpack_require__(39);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _log = __webpack_require__(32);\n\nvar _log2 = _interopRequireDefault(_log);\n\nvar _utils = __webpack_require__(5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar slice = Array.prototype.slice;\n\nvar eventSplitter = /\\s+/;\n\nvar eventsApi = function eventsApi(obj, action, name, rest) {\n if (!name) return true;\n\n // Handle event maps.\n if ((typeof name === 'undefined' ? 'undefined' : (0, _typeof3.default)(name)) === 'object') {\n for (var key in name) {\n obj[action].apply(obj, [key, name[key]].concat(rest));\n }return false;\n }\n\n // Handle space separated event names.\n if (eventSplitter.test(name)) {\n var names = name.split(eventSplitter);\n for (var i = 0, l = names.length; i < l; i++) {\n obj[action].apply(obj, [names[i]].concat(rest));\n }return false;\n }\n\n return true;\n};\n\nvar triggerEvents = function triggerEvents(events, args, klass, name) {\n var ev = void 0,\n i = -1;\n var l = events.length,\n a1 = args[0],\n a2 = args[1],\n a3 = args[2];\n run();\n\n function run() {\n try {\n switch (args.length) {\n /* eslint-disable curly */\n case 0:\n while (++i < l) {\n (ev = events[i]).callback.call(ev.ctx);\n }return;\n case 1:\n while (++i < l) {\n (ev = events[i]).callback.call(ev.ctx, a1);\n }return;\n case 2:\n while (++i < l) {\n (ev = events[i]).callback.call(ev.ctx, a1, a2);\n }return;\n case 3:\n while (++i < l) {\n (ev = events[i]).callback.call(ev.ctx, a1, a2, a3);\n }return;\n default:\n while (++i < l) {\n (ev = events[i]).callback.apply(ev.ctx, args);\n }return;\n }\n } catch (exception) {\n _log2.default.error.apply(_log2.default, [klass, 'error on event', name, 'trigger', '-', exception]);\n run();\n }\n }\n};\n\n/**\n * @class Events\n * @constructor\n * @module base\n */\n\nvar Events = function () {\n function Events() {\n (0, _classCallCheck3.default)(this, Events);\n }\n\n /**\n * listen to an event indefinitely, if you want to stop you need to call `off`\n * @method on\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n */\n Events.prototype.on = function on(name, callback, context) {\n if (!eventsApi(this, 'on', name, [callback, context]) || !callback) return this;\n this._events || (this._events = {});\n var events = this._events[name] || (this._events[name] = []);\n events.push({ callback: callback, context: context, ctx: context || this });\n return this;\n };\n\n /**\n * listen to an event only once\n * @method once\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n */\n\n\n Events.prototype.once = function once(name, callback, context) {\n var _this = this;\n\n var _once = void 0;\n if (!eventsApi(this, 'once', name, [callback, context]) || !callback) return this;\n var off = function off() {\n return _this.off(name, _once);\n };\n _once = function once() {\n off(name, _once);\n callback.apply(this, arguments);\n };\n return this.on(name, _once, context);\n };\n\n /**\n * stop listening to an event\n * @method off\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n */\n\n\n Events.prototype.off = function off(name, callback, context) {\n var retain = void 0,\n ev = void 0,\n events = void 0,\n names = void 0,\n i = void 0,\n l = void 0,\n j = void 0,\n k = void 0;\n if (!this._events || !eventsApi(this, 'off', name, [callback, context])) return this;\n if (!name && !callback && !context) {\n this._events = void 0;\n return this;\n }\n names = name ? [name] : (0, _keys2.default)(this._events);\n // jshint maxdepth:5\n for (i = 0, l = names.length; i < l; i++) {\n name = names[i];\n events = this._events[name];\n if (events) {\n this._events[name] = retain = [];\n if (callback || context) {\n for (j = 0, k = events.length; j < k; j++) {\n ev = events[j];\n if (callback && callback !== ev.callback && callback !== ev.callback._callback || context && context !== ev.context) retain.push(ev);\n }\n }\n if (!retain.length) delete this._events[name];\n }\n }\n return this;\n };\n\n /**\n * triggers an event given its `name`\n * @method trigger\n * @param {String} name\n */\n\n\n Events.prototype.trigger = function trigger(name) {\n var klass = this.name || this.constructor.name;\n _log2.default.debug.apply(_log2.default, [klass].concat(Array.prototype.slice.call(arguments)));\n if (!this._events) return this;\n var args = slice.call(arguments, 1);\n if (!eventsApi(this, 'trigger', name, args)) return this;\n var events = this._events[name];\n var allEvents = this._events.all;\n if (events) triggerEvents(events, args, klass, name);\n if (allEvents) triggerEvents(allEvents, arguments, klass, name);\n return this;\n };\n\n /**\n * stop listening an event for a given object\n * @method stopListening\n * @param {Object} obj\n * @param {String} name\n * @param {Function} callback\n */\n\n\n Events.prototype.stopListening = function stopListening(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n var remove = !name && !callback;\n if (!callback && (typeof name === 'undefined' ? 'undefined' : (0, _typeof3.default)(name)) === 'object') callback = this;\n if (obj) (listeningTo = {})[obj._listenId] = obj;\n for (var id in listeningTo) {\n obj = listeningTo[id];\n obj.off(name, callback, this);\n if (remove || (0, _keys2.default)(obj._events).length === 0) delete this._listeningTo[id];\n }\n return this;\n };\n\n Events.register = function register(eventName) {\n Events.Custom || (Events.Custom = {});\n var property = typeof eventName === 'string' && eventName.toUpperCase().trim();\n\n if (property && !Events.Custom[property]) {\n Events.Custom[property] = property.toLowerCase().split('_').map(function (value, index) {\n return index === 0 ? value : value = value[0].toUpperCase() + value.slice(1);\n }).join('');\n } else _log2.default.error('Events', 'Error when register event: ' + eventName);\n };\n\n Events.listAvailableCustomEvents = function listAvailableCustomEvents() {\n Events.Custom || (Events.Custom = {});\n return (0, _keys2.default)(Events.Custom).filter(function (property) {\n return typeof Events.Custom[property] === 'string';\n });\n };\n\n return Events;\n}();\n\n/**\n * listen to an event indefinitely for a given `obj`\n * @method listenTo\n * @param {Object} obj\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n * @example\n * ```javascript\n * this.listenTo(this.core.playback, Events.PLAYBACK_PAUSE, this.callback)\n * ```\n */\n/**\n * listen to an event once for a given `obj`\n * @method listenToOnce\n * @param {Object} obj\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n * @example\n * ```javascript\n * this.listenToOnce(this.core.playback, Events.PLAYBACK_PAUSE, this.callback)\n * ```\n */\n\n\nexports.default = Events;\nvar listenMethods = { listenTo: 'on', listenToOnce: 'once' };\n\n(0, _keys2.default)(listenMethods).forEach(function (method) {\n Events.prototype[method] = function (obj, name, callback) {\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var id = obj._listenId || (obj._listenId = (0, _utils.uniqueId)('l'));\n listeningTo[id] = obj;\n if (!callback && (typeof name === 'undefined' ? 'undefined' : (0, _typeof3.default)(name)) === 'object') callback = this;\n obj[listenMethods[method]](name, callback, this);\n return this;\n };\n});\n\n// PLAYER EVENTS\n/**\n * Fired when the player is ready on startup\n *\n * @event PLAYER_READY\n */\nEvents.PLAYER_READY = 'ready';\n/**\n * Fired when player resizes\n *\n * @event PLAYER_RESIZE\n * @param {Object} currentSize an object with the current size\n */\nEvents.PLAYER_RESIZE = 'resize';\n/**\n * Fired when player changes its fullscreen state\n *\n * @event PLAYER_FULLSCREEN\n * @param {Boolean} whether or not the player is on fullscreen mode\n */\nEvents.PLAYER_FULLSCREEN = 'fullscreen';\n/**\n * Fired when player starts to play\n *\n * @event PLAYER_PLAY\n */\nEvents.PLAYER_PLAY = 'play';\n/**\n * Fired when player pauses\n *\n * @event PLAYER_PAUSE\n */\nEvents.PLAYER_PAUSE = 'pause';\n/**\n * Fired when player stops\n *\n * @event PLAYER_STOP\n */\nEvents.PLAYER_STOP = 'stop';\n/**\n * Fired when player ends the video\n *\n * @event PLAYER_ENDED\n */\nEvents.PLAYER_ENDED = 'ended';\n/**\n * Fired when player seeks the video\n *\n * @event PLAYER_SEEK\n * @param {Number} time the current time in seconds\n */\nEvents.PLAYER_SEEK = 'seek';\n/**\n * Fired when player receives an error\n *\n * @event PLAYER_ERROR\n * @param {Object} error the error\n */\nEvents.PLAYER_ERROR = 'playererror';\n/**\n * Fired when there is an error\n *\n * @event ERROR\n * @param {Object} error\n * the error with the following format `{code, description, level, raw, origin, scope}`\n * @param {String} [options.code]\n * error's code: code to identify error in the following format: origin:code\n * @param {String} [options.description]\n * error's description: description of the error\n * @param {String} [options.level]\n * error's level: FATAL or WARN.\n * @param {String} [options.origin]\n * error's origin. Example: hls, html5, etc\n * @param {String} [options.scope]\n * error's scope. Example: playback, container, etc\n * @param {String} [options.raw]\n * raw error: the initial error received\n */\nEvents.ERROR = 'error';\n/**\n * Fired when the time is updated on player\n *\n * @event PLAYER_TIMEUPDATE\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.current]\n * current time (in seconds)\n * @param {Number} [progress.total]\n * total time (in seconds)\n */\nEvents.PLAYER_TIMEUPDATE = 'timeupdate';\n/**\n * Fired when player updates its volume\n *\n * @event PLAYER_VOLUMEUPDATE\n * @param {Number} volume the current volume\n */\nEvents.PLAYER_VOLUMEUPDATE = 'volumeupdate';\n\n/**\n * Fired when subtitle is available\n *\n * @event PLAYER_SUBTITLE_AVAILABLE\n */\nEvents.PLAYER_SUBTITLE_AVAILABLE = 'subtitleavailable';\n\n// Playback Events\n/**\n * Fired when the playback is downloading the media\n *\n * @event PLAYBACK_PROGRESS\n * @param progress {Object}\n * Data progress object\n * @param [progress.start] {Number}\n * start position of buffered content at current position\n * @param [progress.current] {Number}\n * end position of buffered content at current position\n * @param [progress.total] {Number}\n * total content to be downloaded\n * @param buffered {Array}\n * array of buffered segments ({start, end}). [Only for supported playbacks]\n */\nEvents.PLAYBACK_PROGRESS = 'playback:progress';\n/**\n * Fired when the time is updated on playback\n *\n * @event PLAYBACK_TIMEUPDATE\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.current]\n * current time (in seconds)\n * @param {Number} [progress.total]\n * total time (in seconds)\n */\nEvents.PLAYBACK_TIMEUPDATE = 'playback:timeupdate';\n/**\n * Fired when playback is ready\n *\n * @event PLAYBACK_READY\n */\nEvents.PLAYBACK_READY = 'playback:ready';\n/**\n * Fired when the playback starts having to buffer because\n * playback can currently not be smooth.\n *\n * This corresponds to the playback `buffering` property being\n * `true`.\n *\n * @event PLAYBACK_BUFFERING\n */\nEvents.PLAYBACK_BUFFERING = 'playback:buffering';\n/**\n * Fired when the playback has enough in the buffer to be\n * able to play smoothly, after previously being unable to\n * do this.\n *\n * This corresponds to the playback `buffering` property being\n * `false`.\n *\n * @event PLAYBACK_BUFFERFULL\n */\nEvents.PLAYBACK_BUFFERFULL = 'playback:bufferfull';\n/**\n * Fired when playback changes any settings (volume, seek and etc)\n *\n * @event PLAYBACK_SETTINGSUPDATE\n */\nEvents.PLAYBACK_SETTINGSUPDATE = 'playback:settingsupdate';\n/**\n * Fired when playback loaded its metadata\n *\n * @event PLAYBACK_LOADEDMETADATA\n * @param {Object} metadata Data\n * settings object\n * @param {Number} [metadata.duration]\n * the playback duration\n * @param {Object} [metadata.data]\n * extra meta data\n */\nEvents.PLAYBACK_LOADEDMETADATA = 'playback:loadedmetadata';\n/**\n * Fired when playback updates its video quality\n *\n * @event PLAYBACK_HIGHDEFINITIONUPDATE\n * @param {Boolean} isHD\n * true when is on HD, false otherwise\n */\nEvents.PLAYBACK_HIGHDEFINITIONUPDATE = 'playback:highdefinitionupdate';\n/**\n * Fired when playback updates its bitrate\n *\n * @event PLAYBACK_BITRATE\n * @param {Object} bitrate Data\n * bitrate object\n * @param {Number} [bitrate.bandwidth]\n * bitrate bandwidth when it's available\n * @param {Number} [bitrate.width]\n * playback width (ex: 720, 640, 1080)\n * @param {Number} [bitrate.height]\n * playback height (ex: 240, 480, 720)\n * @param {Number} [bitrate.level]\n * playback level when it's available, it could be just a map for width (0 => 240, 1 => 480, 2 => 720)\n */\nEvents.PLAYBACK_BITRATE = 'playback:bitrate';\n/**\n * Fired when the playback has its levels\n *\n * @event PLAYBACK_LEVELS_AVAILABLE\n * @param {Array} levels\n * the ordered levels, each one with the following format `{id: 1, label: '500kbps'}` ps: id should be a number >= 0\n * @param {Number} initial\n * the initial level otherwise -1 (AUTO)\n */\nEvents.PLAYBACK_LEVELS_AVAILABLE = 'playback:levels:available';\n/**\n * Fired when the playback starts to switch level\n *\n * @event PLAYBACK_LEVEL_SWITCH_START\n *\n */\nEvents.PLAYBACK_LEVEL_SWITCH_START = 'playback:levels:switch:start';\n/**\n * Fired when the playback ends the level switch\n *\n * @event PLAYBACK_LEVEL_SWITCH_END\n *\n */\nEvents.PLAYBACK_LEVEL_SWITCH_END = 'playback:levels:switch:end';\n\n/**\n * Fired when playback internal state changes\n *\n * @event PLAYBACK_PLAYBACKSTATE\n * @param {Object} state Data\n * state object\n * @param {String} [state.type]\n * the playback type\n */\nEvents.PLAYBACK_PLAYBACKSTATE = 'playback:playbackstate';\n/**\n * Fired when DVR becomes enabled/disabled.\n *\n * @event PLAYBACK_DVR\n * @param {boolean} state true if dvr enabled\n */\nEvents.PLAYBACK_DVR = 'playback:dvr';\n// TODO doc\nEvents.PLAYBACK_MEDIACONTROL_DISABLE = 'playback:mediacontrol:disable';\n// TODO doc\nEvents.PLAYBACK_MEDIACONTROL_ENABLE = 'playback:mediacontrol:enable';\n/**\n * Fired when the media for a playback ends.\n *\n * @event PLAYBACK_ENDED\n * @param {String} name the name of the playback\n */\nEvents.PLAYBACK_ENDED = 'playback:ended';\n/**\n * Fired when user requests `play()`\n *\n * @event PLAYBACK_PLAY_INTENT\n */\nEvents.PLAYBACK_PLAY_INTENT = 'playback:play:intent';\n/**\n * Fired when the media for a playback starts playing.\n * This is not necessarily when the user requests `play()`\n * The media may have to buffer first.\n * I.e. `isPlaying()` might return `true` before this event is fired,\n * because `isPlaying()` represents the intended state.\n *\n * @event PLAYBACK_PLAY\n */\nEvents.PLAYBACK_PLAY = 'playback:play';\n/**\n * Fired when the media for a playback pauses.\n *\n * @event PLAYBACK_PAUSE\n */\nEvents.PLAYBACK_PAUSE = 'playback:pause';\n/**\n * Fired when the media for a playback is seeking.\n *\n * @event PLAYBACK_SEEK\n */\nEvents.PLAYBACK_SEEK = 'playback:seek';\n/**\n * Fired when the media for a playback is seeked.\n *\n * @event PLAYBACK_SEEKED\n */\nEvents.PLAYBACK_SEEKED = 'playback:seeked';\n/**\n * Fired when the media for a playback is stopped.\n *\n * @event PLAYBACK_STOP\n */\nEvents.PLAYBACK_STOP = 'playback:stop';\n/**\n * Fired if an error occurs in the playback.\n *\n * @event PLAYBACK_ERROR\n * @param {Object} error An object containing the error details\n * @param {String} name Playback name\n */\nEvents.PLAYBACK_ERROR = 'playback:error';\n// TODO doc\nEvents.PLAYBACK_STATS_ADD = 'playback:stats:add';\n// TODO doc\nEvents.PLAYBACK_FRAGMENT_LOADED = 'playback:fragment:loaded';\n// TODO doc\nEvents.PLAYBACK_LEVEL_SWITCH = 'playback:level:switch';\n/**\n * Fired when subtitle is available on playback for display\n *\n * @event PLAYBACK_SUBTITLE_AVAILABLE\n */\nEvents.PLAYBACK_SUBTITLE_AVAILABLE = 'playback:subtitle:available';\n/**\n * Fired when playback subtitle track has changed\n *\n * @event CONTAINER_SUBTITLE_CHANGED\n * @param {Object} track Data\n * track object\n * @param {Number} [track.id]\n * selected track id\n */\nEvents.PLAYBACK_SUBTITLE_CHANGED = 'playback:subtitle:changed';\n\n// Core Events\n/**\n * Fired when the containers are created\n *\n * @event CORE_CONTAINERS_CREATED\n */\nEvents.CORE_CONTAINERS_CREATED = 'core:containers:created';\n/**\n * Fired when the options were changed for the core\n *\n * @event CORE_OPTIONS_CHANGE\n */\nEvents.CORE_OPTIONS_CHANGE = 'core:options:change';\n/**\n * Fired after creating containers, when the core is ready\n *\n * @event CORE_READY\n */\nEvents.CORE_READY = 'core:ready';\n/**\n * Fired when the fullscreen state change\n *\n * @event CORE_FULLSCREEN\n * @param {Boolean} whether or not the player is on fullscreen mode\n */\nEvents.CORE_FULLSCREEN = 'core:fullscreen';\n/**\n * Fired when core updates size\n *\n * @event CORE_RESIZE\n * @param {Object} currentSize an object with the current size\n */\nEvents.CORE_RESIZE = 'core:resize';\n/**\n * Fired when the screen orientation has changed.\n * This event is trigger only for mobile devices.\n *\n * @event CORE_SCREEN_ORIENTATION_CHANGED\n * @param {Object} screen An object with screen orientation\n * screen object\n * @param {Object} [screen.event]\n * window resize event object\n * @param {String} [screen.orientation]\n * screen orientation (ie: 'landscape' or 'portrait')\n */\nEvents.CORE_SCREEN_ORIENTATION_CHANGED = 'core:screen:orientation:changed';\n\n// Container Events\n/**\n * Fired when the container internal state changes\n *\n * @event CONTAINER_PLAYBACKSTATE\n * @param {Object} state Data\n * state object\n * @param {String} [state.type]\n * the playback type\n */\nEvents.CONTAINER_PLAYBACKSTATE = 'container:playbackstate';\nEvents.CONTAINER_PLAYBACKDVRSTATECHANGED = 'container:dvr';\n/**\n * Fired when the container updates its bitrate\n *\n * @event CONTAINER_BITRATE\n * @param {Object} bitrate Data\n * bitrate object\n * @param {Number} [bitrate.bandwidth]\n * bitrate bandwidth when it's available\n * @param {Number} [bitrate.width]\n * playback width (ex: 720, 640, 1080)\n * @param {Number} [bitrate.height]\n * playback height (ex: 240, 480, 720)\n * @param {Number} [bitrate.level]\n * playback level when it's available, it could be just a map for width (0 => 240, 1 => 480, 2 => 720)\n */\nEvents.CONTAINER_BITRATE = 'container:bitrate';\nEvents.CONTAINER_STATS_REPORT = 'container:stats:report';\nEvents.CONTAINER_DESTROYED = 'container:destroyed';\n/**\n * Fired when the container is ready\n *\n * @event CONTAINER_READY\n */\nEvents.CONTAINER_READY = 'container:ready';\nEvents.CONTAINER_ERROR = 'container:error';\n/**\n * Fired when the container loaded its metadata\n *\n * @event CONTAINER_LOADEDMETADATA\n * @param {Object} metadata Data\n * settings object\n * @param {Number} [metadata.duration]\n * the playback duration\n * @param {Object} [metadata.data]\n * extra meta data\n */\nEvents.CONTAINER_LOADEDMETADATA = 'container:loadedmetadata';\n\n/**\n * Fired when subtitle is available on container for display\n *\n * @event CONTAINER_SUBTITLE_AVAILABLE\n */\nEvents.CONTAINER_SUBTITLE_AVAILABLE = 'container:subtitle:available';\n/**\n * Fired when subtitle track has changed\n *\n * @event CONTAINER_SUBTITLE_CHANGED\n * @param {Object} track Data\n * track object\n * @param {Number} [track.id]\n * selected track id\n */\nEvents.CONTAINER_SUBTITLE_CHANGED = 'container:subtitle:changed';\n\n/**\n * Fired when the time is updated on container\n *\n * @event CONTAINER_TIMEUPDATE\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.current]\n * current time (in seconds)\n * @param {Number} [progress.total]\n * total time (in seconds)\n */\nEvents.CONTAINER_TIMEUPDATE = 'container:timeupdate';\n/**\n * Fired when the container is downloading the media\n *\n * @event CONTAINER_PROGRESS\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.start]\n * initial downloaded content\n * @param {Number} [progress.current]\n * current dowloaded content\n * @param {Number} [progress.total]\n * total content to be downloaded\n */\nEvents.CONTAINER_PROGRESS = 'container:progress';\nEvents.CONTAINER_PLAY = 'container:play';\nEvents.CONTAINER_STOP = 'container:stop';\nEvents.CONTAINER_PAUSE = 'container:pause';\nEvents.CONTAINER_ENDED = 'container:ended';\nEvents.CONTAINER_CLICK = 'container:click';\nEvents.CONTAINER_DBLCLICK = 'container:dblclick';\nEvents.CONTAINER_CONTEXTMENU = 'container:contextmenu';\nEvents.CONTAINER_MOUSE_ENTER = 'container:mouseenter';\nEvents.CONTAINER_MOUSE_LEAVE = 'container:mouseleave';\n/**\n * Fired when the container seeks the video\n *\n * @event CONTAINER_SEEK\n * @param {Number} time the current time in seconds\n */\nEvents.CONTAINER_SEEK = 'container:seek';\n/**\n * Fired when the container was finished the seek video\n *\n * @event CONTAINER_SEEKED\n * @param {Number} time the current time in seconds\n */\nEvents.CONTAINER_SEEKED = 'container:seeked';\nEvents.CONTAINER_VOLUME = 'container:volume';\nEvents.CONTAINER_FULLSCREEN = 'container:fullscreen';\n/**\n * Fired when container is buffering\n *\n * @event CONTAINER_STATE_BUFFERING\n */\nEvents.CONTAINER_STATE_BUFFERING = 'container:state:buffering';\n/**\n * Fired when the container filled the buffer\n *\n * @event CONTAINER_STATE_BUFFERFULL\n */\nEvents.CONTAINER_STATE_BUFFERFULL = 'container:state:bufferfull';\n/**\n * Fired when the container changes any settings (volume, seek and etc)\n *\n * @event CONTAINER_SETTINGSUPDATE\n */\nEvents.CONTAINER_SETTINGSUPDATE = 'container:settingsupdate';\n/**\n * Fired when container updates its video quality\n *\n * @event CONTAINER_HIGHDEFINITIONUPDATE\n * @param {Boolean} isHD\n * true when is on HD, false otherwise\n */\nEvents.CONTAINER_HIGHDEFINITIONUPDATE = 'container:highdefinitionupdate';\n\n/**\n * Fired when the media control shows\n *\n * @event CONTAINER_MEDIACONTROL_SHOW\n */\nEvents.CONTAINER_MEDIACONTROL_SHOW = 'container:mediacontrol:show';\n/**\n * Fired when the media control hides\n *\n * @event CONTAINER_MEDIACONTROL_HIDE\n */\nEvents.CONTAINER_MEDIACONTROL_HIDE = 'container:mediacontrol:hide';\n\nEvents.CONTAINER_MEDIACONTROL_DISABLE = 'container:mediacontrol:disable';\nEvents.CONTAINER_MEDIACONTROL_ENABLE = 'container:mediacontrol:enable';\nEvents.CONTAINER_STATS_ADD = 'container:stats:add';\n/**\n * Fired when the options were changed for the container\n *\n * @event CONTAINER_OPTIONS_CHANGE\n */\nEvents.CONTAINER_OPTIONS_CHANGE = 'container:options:change';\n\n// MediaControl Events\nEvents.MEDIACONTROL_RENDERED = 'mediacontrol:rendered';\n/**\n * Fired when the player enters/exit on fullscreen\n *\n * @event MEDIACONTROL_FULLSCREEN\n */\nEvents.MEDIACONTROL_FULLSCREEN = 'mediacontrol:fullscreen';\n/**\n * Fired when the media control shows\n *\n * @event MEDIACONTROL_SHOW\n */\nEvents.MEDIACONTROL_SHOW = 'mediacontrol:show';\n/**\n * Fired when the media control hides\n *\n * @event MEDIACONTROL_HIDE\n */\nEvents.MEDIACONTROL_HIDE = 'mediacontrol:hide';\n/**\n * Fired when mouse enters on the seekbar\n *\n * @event MEDIACONTROL_MOUSEMOVE_SEEKBAR\n * @param {Object} event\n * the javascript event\n */\nEvents.MEDIACONTROL_MOUSEMOVE_SEEKBAR = 'mediacontrol:mousemove:seekbar';\n/**\n * Fired when mouse leaves the seekbar\n *\n * @event MEDIACONTROL_MOUSELEAVE_SEEKBAR\n * @param {Object} event\n * the javascript event\n */\nEvents.MEDIACONTROL_MOUSELEAVE_SEEKBAR = 'mediacontrol:mouseleave:seekbar';\n/**\n * Fired when the media is being played\n *\n * @event MEDIACONTROL_PLAYING\n */\nEvents.MEDIACONTROL_PLAYING = 'mediacontrol:playing';\n/**\n * Fired when the media is not being played\n *\n * @event MEDIACONTROL_NOTPLAYING\n */\nEvents.MEDIACONTROL_NOTPLAYING = 'mediacontrol:notplaying';\n/**\n * Fired when the container was changed\n *\n * @event MEDIACONTROL_CONTAINERCHANGED\n */\nEvents.MEDIACONTROL_CONTAINERCHANGED = 'mediacontrol:containerchanged';\n/**\n * Fired when the options were changed for the mediacontrol\n *\n * @event MEDIACONTROL_OPTIONS_CHANGE\n */\nEvents.MEDIACONTROL_OPTIONS_CHANGE = 'mediacontrol:options:change';\nmodule.exports = exports['default'];\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.DomRecycler = exports.cancelAnimationFrame = exports.requestAnimationFrame = exports.QueryString = exports.Config = exports.Fullscreen = undefined;\n\nvar _assign = __webpack_require__(11);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _defineProperty = __webpack_require__(74);\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nvar _getOwnPropertyDescriptor = __webpack_require__(136);\n\nvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\nexports.assign = assign;\nexports.extend = extend;\nexports.formatTime = formatTime;\nexports.seekStringToSeconds = seekStringToSeconds;\nexports.uniqueId = uniqueId;\nexports.isNumber = isNumber;\nexports.currentScriptUrl = currentScriptUrl;\nexports.getBrowserLanguage = getBrowserLanguage;\nexports.now = now;\nexports.removeArrayItem = removeArrayItem;\nexports.canAutoPlayMedia = canAutoPlayMedia;\n\n__webpack_require__(139);\n\nvar _browser = __webpack_require__(28);\n\nvar _browser2 = _interopRequireDefault(_browser);\n\nvar _clapprZepto = __webpack_require__(6);\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nvar _media = __webpack_require__(143);\n\nvar _media2 = _interopRequireDefault(_media);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n/*jshint -W079 */\n\nfunction assign(obj, source) {\n if (source) {\n for (var prop in source) {\n var propDescriptor = (0, _getOwnPropertyDescriptor2.default)(source, prop);\n propDescriptor ? (0, _defineProperty2.default)(obj, prop, propDescriptor) : obj[prop] = source[prop];\n }\n }\n return obj;\n}\n\nfunction extend(parent, properties) {\n var Surrogate = function (_parent) {\n (0, _inherits3.default)(Surrogate, _parent);\n\n function Surrogate() {\n (0, _classCallCheck3.default)(this, Surrogate);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _parent.call.apply(_parent, [this].concat(args)));\n\n if (properties.initialize) properties.initialize.apply(_this, args);\n\n return _this;\n }\n\n return Surrogate;\n }(parent);\n\n assign(Surrogate.prototype, properties);\n return Surrogate;\n}\n\nfunction formatTime(time, paddedHours) {\n if (!isFinite(time)) return '--:--';\n\n time = time * 1000;\n time = parseInt(time / 1000);\n var seconds = time % 60;\n time = parseInt(time / 60);\n var minutes = time % 60;\n time = parseInt(time / 60);\n var hours = time % 24;\n var days = parseInt(time / 24);\n var out = '';\n if (days && days > 0) {\n out += days + ':';\n if (hours < 1) out += '00:';\n }\n if (hours && hours > 0 || paddedHours) out += ('0' + hours).slice(-2) + ':';\n out += ('0' + minutes).slice(-2) + ':';\n out += ('0' + seconds).slice(-2);\n return out.trim();\n}\n\nvar Fullscreen = exports.Fullscreen = {\n isFullscreen: function isFullscreen() {\n return !!(document.webkitFullscreenElement || document.webkitIsFullScreen || document.mozFullScreen || document.msFullscreenElement);\n },\n requestFullscreen: function requestFullscreen(el) {\n if (el.requestFullscreen) el.requestFullscreen();else if (el.webkitRequestFullscreen) el.webkitRequestFullscreen();else if (el.mozRequestFullScreen) el.mozRequestFullScreen();else if (el.msRequestFullscreen) el.msRequestFullscreen();else if (el.querySelector && el.querySelector('video') && el.querySelector('video').webkitEnterFullScreen) el.querySelector('video').webkitEnterFullScreen();else if (el.webkitEnterFullScreen) el.webkitEnterFullScreen();\n },\n cancelFullscreen: function cancelFullscreen() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n\n if (el.exitFullscreen) el.exitFullscreen();else if (el.webkitCancelFullScreen) el.webkitCancelFullScreen();else if (el.webkitExitFullscreen) el.webkitExitFullscreen();else if (el.mozCancelFullScreen) el.mozCancelFullScreen();else if (el.msExitFullscreen) el.msExitFullscreen();\n },\n fullscreenEnabled: function fullscreenEnabled() {\n return !!(document.fullscreenEnabled || document.webkitFullscreenEnabled || document.mozFullScreenEnabled || document.msFullscreenEnabled);\n }\n};\n\nvar Config = exports.Config = function () {\n function Config() {\n (0, _classCallCheck3.default)(this, Config);\n }\n\n Config._defaultConfig = function _defaultConfig() {\n return {\n volume: {\n value: 100,\n parse: parseInt\n }\n };\n };\n\n Config._defaultValueFor = function _defaultValueFor(key) {\n try {\n return this._defaultConfig()[key].parse(this._defaultConfig()[key].value);\n } catch (e) {\n return undefined;\n }\n };\n\n Config._createKeyspace = function _createKeyspace(key) {\n return 'clappr.' + document.domain + '.' + key;\n };\n\n Config.restore = function restore(key) {\n if (_browser2.default.hasLocalstorage && localStorage[this._createKeyspace(key)]) return this._defaultConfig()[key].parse(localStorage[this._createKeyspace(key)]);\n\n return this._defaultValueFor(key);\n };\n\n Config.persist = function persist(key, value) {\n if (_browser2.default.hasLocalstorage) {\n try {\n localStorage[this._createKeyspace(key)] = value;\n return true;\n } catch (e) {\n return false;\n }\n }\n };\n\n return Config;\n}();\n\nvar QueryString = exports.QueryString = function () {\n function QueryString() {\n (0, _classCallCheck3.default)(this, QueryString);\n }\n\n QueryString.parse = function parse(paramsString) {\n var match = void 0;\n var pl = /\\+/g,\n // Regex for replacing addition symbol with a space\n search = /([^&=]+)=?([^&]*)/g,\n decode = function decode(s) {\n return decodeURIComponent(s.replace(pl, ' '));\n },\n params = {};\n while (match = search.exec(paramsString)) {\n // eslint-disable-line no-cond-assign\n params[decode(match[1]).toLowerCase()] = decode(match[2]);\n }\n return params;\n };\n\n (0, _createClass3.default)(QueryString, null, [{\n key: 'params',\n get: function get() {\n var query = window.location.search.substring(1);\n if (query !== this.query) {\n this._urlParams = this.parse(query);\n this.query = query;\n }\n return this._urlParams;\n }\n }, {\n key: 'hashParams',\n get: function get() {\n var hash = window.location.hash.substring(1);\n if (hash !== this.hash) {\n this._hashParams = this.parse(hash);\n this.hash = hash;\n }\n return this._hashParams;\n }\n }]);\n return QueryString;\n}();\n\nfunction seekStringToSeconds() {\n var paramName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 't';\n\n var seconds = 0;\n var seekString = QueryString.params[paramName] || QueryString.hashParams[paramName] || '';\n var parts = seekString.match(/[0-9]+[hms]+/g) || [];\n if (parts.length > 0) {\n var factor = { 'h': 3600, 'm': 60, 's': 1 };\n parts.forEach(function (el) {\n if (el) {\n var suffix = el[el.length - 1];\n var time = parseInt(el.slice(0, el.length - 1), 10);\n seconds += time * factor[suffix];\n }\n });\n } else if (seekString) {\n seconds = parseInt(seekString, 10);\n }\n\n return seconds;\n}\n\nvar idsCounter = {};\n\nfunction uniqueId(prefix) {\n idsCounter[prefix] || (idsCounter[prefix] = 0);\n var id = ++idsCounter[prefix];\n return prefix + id;\n}\n\nfunction isNumber(value) {\n return value - parseFloat(value) + 1 >= 0;\n}\n\nfunction currentScriptUrl() {\n var scripts = document.getElementsByTagName('script');\n return scripts.length ? scripts[scripts.length - 1].src : '';\n}\n\nvar requestAnimationFrame = exports.requestAnimationFrame = (window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function (fn) {\n window.setTimeout(fn, 1000 / 60);\n}).bind(window);\n\nvar cancelAnimationFrame = exports.cancelAnimationFrame = (window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout).bind(window);\n\nfunction getBrowserLanguage() {\n return window.navigator && window.navigator.language;\n}\n\nfunction now() {\n if (window.performance && window.performance.now) return performance.now();\n\n return Date.now();\n}\n\n// remove the item from the array if it exists in the array\nfunction removeArrayItem(arr, item) {\n var i = arr.indexOf(item);\n if (i >= 0) arr.splice(i, 1);\n}\n\n// https://github.com/video-dev/can-autoplay\nfunction canAutoPlayMedia(cb, options) {\n options = (0, _assign2.default)({\n inline: false,\n muted: false,\n timeout: 250,\n type: 'video',\n source: _media2.default.mp4,\n element: null\n }, options);\n\n var element = options.element ? options.element : document.createElement(options.type);\n\n element.muted = options.muted;\n if (options.muted === true) element.setAttribute('muted', 'muted');\n\n if (options.inline === true) element.setAttribute('playsinline', 'playsinline');\n\n element.src = options.source;\n\n var promise = element.play();\n\n var timeoutId = setTimeout(function () {\n setResult(false, new Error('Timeout ' + options.timeout + ' ms has been reached'));\n }, options.timeout);\n\n var setResult = function setResult(result) {\n var error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n clearTimeout(timeoutId);\n cb(result, error);\n };\n\n if (promise !== undefined) {\n promise.then(function () {\n return setResult(true);\n }).catch(function (err) {\n return setResult(false, err);\n });\n } else {\n setResult(true);\n }\n}\n\n// Simple Zepto element factory with video recycle feature.\nvar videoStack = [];\n\nvar DomRecycler = exports.DomRecycler = function () {\n function DomRecycler() {\n (0, _classCallCheck3.default)(this, DomRecycler);\n }\n\n DomRecycler.configure = function configure(options) {\n this.options = _clapprZepto2.default.extend(this.options, options);\n };\n\n DomRecycler.create = function create(name) {\n if (this.options.recycleVideo && name === 'video' && videoStack.length > 0) return videoStack.shift();\n\n return (0, _clapprZepto2.default)('<' + name + '>');\n };\n\n DomRecycler.garbage = function garbage($el) {\n // Expect Zepto collection with single element (does not iterate!)\n if (!this.options.recycleVideo || $el[0].tagName.toUpperCase() !== 'VIDEO') return;\n $el.children().remove();\n videoStack.push($el);\n };\n\n return DomRecycler;\n}();\n\nDomRecycler.options = { recycleVideo: false };\n\nexports.default = {\n Config: Config,\n Fullscreen: Fullscreen,\n QueryString: QueryString,\n DomRecycler: DomRecycler,\n extend: extend,\n formatTime: formatTime,\n seekStringToSeconds: seekStringToSeconds,\n uniqueId: uniqueId,\n currentScriptUrl: currentScriptUrl,\n isNumber: isNumber,\n requestAnimationFrame: requestAnimationFrame,\n cancelAnimationFrame: cancelAnimationFrame,\n getBrowserLanguage: getBrowserLanguage,\n now: now,\n removeArrayItem: removeArrayItem,\n canAutoPlayMedia: canAutoPlayMedia,\n Media: _media2.default\n};\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n/* Zepto v1.2.0 - zepto ajax callbacks deferred event ie selector - zeptojs.com/license */\n\n\nvar Zepto = (function() {\n var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice,\n document = window.document,\n elementDisplay = {}, classCache = {},\n cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1,'opacity': 1, 'z-index': 1, 'zoom': 1 },\n fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n rootNodeRE = /^(?:body|html)$/i,\n capitalRE = /([A-Z])/g,\n\n // special attributes that should be get/set via method calls\n methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\n\n adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ],\n table = document.createElement('table'),\n tableRow = document.createElement('tr'),\n containers = {\n 'tr': document.createElement('tbody'),\n 'tbody': table, 'thead': table, 'tfoot': table,\n 'td': tableRow, 'th': tableRow,\n '*': document.createElement('div')\n },\n readyRE = /complete|loaded|interactive/,\n simpleSelectorRE = /^[\\w-]*$/,\n class2type = {},\n toString = class2type.toString,\n zepto = {},\n camelize, uniq,\n tempParent = document.createElement('div'),\n propMap = {\n 'tabindex': 'tabIndex',\n 'readonly': 'readOnly',\n 'for': 'htmlFor',\n 'class': 'className',\n 'maxlength': 'maxLength',\n 'cellspacing': 'cellSpacing',\n 'cellpadding': 'cellPadding',\n 'rowspan': 'rowSpan',\n 'colspan': 'colSpan',\n 'usemap': 'useMap',\n 'frameborder': 'frameBorder',\n 'contenteditable': 'contentEditable'\n },\n isArray = Array.isArray ||\n function(object){ return object instanceof Array }\n\n zepto.matches = function(element, selector) {\n if (!selector || !element || element.nodeType !== 1) return false\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\n element.mozMatchesSelector || element.oMatchesSelector ||\n element.matchesSelector\n if (matchesSelector) return matchesSelector.call(element, selector)\n // fall back to performing a selector:\n var match, parent = element.parentNode, temp = !parent\n if (temp) (parent = tempParent).appendChild(element)\n match = ~zepto.qsa(parent, selector).indexOf(element)\n temp && tempParent.removeChild(element)\n return match\n }\n\n function type(obj) {\n return obj == null ? String(obj) :\n class2type[toString.call(obj)] || \"object\"\n }\n\n function isFunction(value) { return type(value) == \"function\" }\n function isWindow(obj) { return obj != null && obj == obj.window }\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }\n function isObject(obj) { return type(obj) == \"object\" }\n function isPlainObject(obj) {\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\n }\n\n function likeArray(obj) {\n var length = !!obj && 'length' in obj && obj.length,\n type = $.type(obj)\n\n return 'function' != type && !isWindow(obj) && (\n 'array' == type || length === 0 ||\n (typeof length == 'number' && length > 0 && (length - 1) in obj)\n )\n }\n\n function compact(array) { return filter.call(array, function(item){ return item != null }) }\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }\n camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }\n function dasherize(str) {\n return str.replace(/::/g, '/')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .replace(/_/g, '-')\n .toLowerCase()\n }\n uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }\n\n function classRE(name) {\n return name in classCache ?\n classCache[name] : (classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)'))\n }\n\n function maybeAddPx(name, value) {\n return (typeof value == \"number\" && !cssNumber[dasherize(name)]) ? value + \"px\" : value\n }\n\n function defaultDisplay(nodeName) {\n var element, display\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName)\n document.body.appendChild(element)\n display = getComputedStyle(element, '').getPropertyValue(\"display\")\n element.parentNode.removeChild(element)\n display == \"none\" && (display = \"block\")\n elementDisplay[nodeName] = display\n }\n return elementDisplay[nodeName]\n }\n\n function children(element) {\n return 'children' in element ?\n slice.call(element.children) :\n $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })\n }\n\n function Z(dom, selector) {\n var i, len = dom ? dom.length : 0\n for (i = 0; i < len; i++) this[i] = dom[i]\n this.length = len\n this.selector = selector || ''\n }\n\n // `$.zepto.fragment` takes a html string and an optional tag name\n // to generate DOM nodes from the given html string.\n // The generated DOM nodes are returned as an array.\n // This function can be overridden in plugins for example to make\n // it compatible with browsers that don't support the DOM fully.\n zepto.fragment = function(html, name, properties) {\n var dom, nodes, container\n\n // A special case optimization for a single tag\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))\n\n if (!dom) {\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1></$2>\")\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1\n if (!(name in containers)) name = '*'\n\n container = containers[name]\n container.innerHTML = '' + html\n dom = $.each(slice.call(container.childNodes), function(){\n container.removeChild(this)\n })\n }\n\n if (isPlainObject(properties)) {\n nodes = $(dom)\n $.each(properties, function(key, value) {\n if (methodAttributes.indexOf(key) > -1) nodes[key](value)\n else nodes.attr(key, value)\n })\n }\n\n return dom\n }\n\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\n // of nodes with `$.fn` and thus supplying all the Zepto functions\n // to the array. This method can be overridden in plugins.\n zepto.Z = function(dom, selector) {\n return new Z(dom, selector)\n }\n\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\n // collection. This method can be overridden in plugins.\n zepto.isZ = function(object) {\n return object instanceof zepto.Z\n }\n\n // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and\n // takes a CSS selector and an optional context (and handles various\n // special cases).\n // This method can be overridden in plugins.\n zepto.init = function(selector, context) {\n var dom\n // If nothing given, return an empty Zepto collection\n if (!selector) return zepto.Z()\n // Optimize for string selectors\n else if (typeof selector == 'string') {\n selector = selector.trim()\n // If it's a html fragment, create nodes from it\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\n // is thrown if the fragment doesn't begin with <\n if (selector[0] == '<' && fragmentRE.test(selector))\n dom = zepto.fragment(selector, RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // If it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // If a function is given, call it when the DOM is ready\n else if (isFunction(selector)) return $(document).ready(selector)\n // If a Zepto collection is given, just return it\n else if (zepto.isZ(selector)) return selector\n else {\n // normalize array if an array of nodes is given\n if (isArray(selector)) dom = compact(selector)\n // Wrap DOM nodes.\n else if (isObject(selector))\n dom = [selector], selector = null\n // If it's a html fragment, create nodes from it\n else if (fragmentRE.test(selector))\n dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // And last but no least, if it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // create a new Zepto collection from the nodes found\n return zepto.Z(dom, selector)\n }\n\n // `$` will be the base `Zepto` object. When calling this\n // function just call `$.zepto.init, which makes the implementation\n // details of selecting nodes and creating Zepto collections\n // patchable in plugins.\n $ = function(selector, context){\n return zepto.init(selector, context)\n }\n\n function extend(target, source, deep) {\n for (key in source)\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key]))\n target[key] = {}\n if (isArray(source[key]) && !isArray(target[key]))\n target[key] = []\n extend(target[key], source[key], deep)\n }\n else if (source[key] !== undefined) target[key] = source[key]\n }\n\n // Copy all but undefined properties from one or more\n // objects to the `target` object.\n $.extend = function(target){\n var deep, args = slice.call(arguments, 1)\n if (typeof target == 'boolean') {\n deep = target\n target = args.shift()\n }\n args.forEach(function(arg){ extend(target, arg, deep) })\n return target\n }\n\n // `$.zepto.qsa` is Zepto's CSS selector implementation which\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\n // This method can be overridden in plugins.\n zepto.qsa = function(element, selector){\n var found,\n maybeID = selector[0] == '#',\n maybeClass = !maybeID && selector[0] == '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\n isSimple = simpleSelectorRE.test(nameOnly)\n return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById\n ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\n slice.call(\n isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class\n element.getElementsByTagName(selector) : // Or a tag\n element.querySelectorAll(selector) // Or it's not simple, and we need to query all\n )\n }\n\n function filtered(nodes, selector) {\n return selector == null ? $(nodes) : $(nodes).filter(selector)\n }\n\n $.contains = document.documentElement.contains ?\n function(parent, node) {\n return parent !== node && parent.contains(node)\n } :\n function(parent, node) {\n while (node && (node = node.parentNode))\n if (node === parent) return true\n return false\n }\n\n function funcArg(context, arg, idx, payload) {\n return isFunction(arg) ? arg.call(context, idx, payload) : arg\n }\n\n function setAttribute(node, name, value) {\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value)\n }\n\n // access className property while respecting SVGAnimatedString\n function className(node, value){\n var klass = node.className || '',\n svg = klass && klass.baseVal !== undefined\n\n if (value === undefined) return svg ? klass.baseVal : klass\n svg ? (klass.baseVal = value) : (node.className = value)\n }\n\n // \"true\" => true\n // \"false\" => false\n // \"null\" => null\n // \"42\" => 42\n // \"42.5\" => 42.5\n // \"08\" => \"08\"\n // JSON => parse if valid\n // String => self\n function deserializeValue(value) {\n try {\n return value ?\n value == \"true\" ||\n ( value == \"false\" ? false :\n value == \"null\" ? null :\n +value + \"\" == value ? +value :\n /^[\\[\\{]/.test(value) ? $.parseJSON(value) :\n value )\n : value\n } catch(e) {\n return value\n }\n }\n\n $.type = type\n $.isFunction = isFunction\n $.isWindow = isWindow\n $.isArray = isArray\n $.isPlainObject = isPlainObject\n\n $.isEmptyObject = function(obj) {\n var name\n for (name in obj) return false\n return true\n }\n\n $.isNumeric = function(val) {\n var num = Number(val), type = typeof val\n return val != null && type != 'boolean' &&\n (type != 'string' || val.length) &&\n !isNaN(num) && isFinite(num) || false\n }\n\n $.inArray = function(elem, array, i){\n return emptyArray.indexOf.call(array, elem, i)\n }\n\n $.camelCase = camelize\n $.trim = function(str) {\n return str == null ? \"\" : String.prototype.trim.call(str)\n }\n\n // plugin compatibility\n $.uuid = 0\n $.support = { }\n $.expr = { }\n $.noop = function() {}\n\n $.map = function(elements, callback){\n var value, values = [], i, key\n if (likeArray(elements))\n for (i = 0; i < elements.length; i++) {\n value = callback(elements[i], i)\n if (value != null) values.push(value)\n }\n else\n for (key in elements) {\n value = callback(elements[key], key)\n if (value != null) values.push(value)\n }\n return flatten(values)\n }\n\n $.each = function(elements, callback){\n var i, key\n if (likeArray(elements)) {\n for (i = 0; i < elements.length; i++)\n if (callback.call(elements[i], i, elements[i]) === false) return elements\n } else {\n for (key in elements)\n if (callback.call(elements[key], key, elements[key]) === false) return elements\n }\n\n return elements\n }\n\n $.grep = function(elements, callback){\n return filter.call(elements, callback)\n }\n\n if (window.JSON) $.parseJSON = JSON.parse\n\n // Populate the class2type map\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase()\n })\n\n // Define methods that will be available on all\n // Zepto collections\n $.fn = {\n constructor: zepto.Z,\n length: 0,\n\n // Because a collection acts like an array\n // copy over these useful array functions.\n forEach: emptyArray.forEach,\n reduce: emptyArray.reduce,\n push: emptyArray.push,\n sort: emptyArray.sort,\n splice: emptyArray.splice,\n indexOf: emptyArray.indexOf,\n concat: function(){\n var i, value, args = []\n for (i = 0; i < arguments.length; i++) {\n value = arguments[i]\n args[i] = zepto.isZ(value) ? value.toArray() : value\n }\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)\n },\n\n // `map` and `slice` in the jQuery API work differently\n // from their array counterparts\n map: function(fn){\n return $($.map(this, function(el, i){ return fn.call(el, i, el) }))\n },\n slice: function(){\n return $(slice.apply(this, arguments))\n },\n\n ready: function(callback){\n // need to check if document.body exists for IE as that browser reports\n // document ready when it hasn't yet created the body element\n if (readyRE.test(document.readyState) && document.body) callback($)\n else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false)\n return this\n },\n get: function(idx){\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]\n },\n toArray: function(){ return this.get() },\n size: function(){\n return this.length\n },\n remove: function(){\n return this.each(function(){\n if (this.parentNode != null)\n this.parentNode.removeChild(this)\n })\n },\n each: function(callback){\n emptyArray.every.call(this, function(el, idx){\n return callback.call(el, idx, el) !== false\n })\n return this\n },\n filter: function(selector){\n if (isFunction(selector)) return this.not(this.not(selector))\n return $(filter.call(this, function(element){\n return zepto.matches(element, selector)\n }))\n },\n add: function(selector,context){\n return $(uniq(this.concat($(selector,context))))\n },\n is: function(selector){\n return this.length > 0 && zepto.matches(this[0], selector)\n },\n not: function(selector){\n var nodes=[]\n if (isFunction(selector) && selector.call !== undefined)\n this.each(function(idx){\n if (!selector.call(this,idx)) nodes.push(this)\n })\n else {\n var excludes = typeof selector == 'string' ? this.filter(selector) :\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)\n this.forEach(function(el){\n if (excludes.indexOf(el) < 0) nodes.push(el)\n })\n }\n return $(nodes)\n },\n has: function(selector){\n return this.filter(function(){\n return isObject(selector) ?\n $.contains(this, selector) :\n $(this).find(selector).size()\n })\n },\n eq: function(idx){\n return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)\n },\n first: function(){\n var el = this[0]\n return el && !isObject(el) ? el : $(el)\n },\n last: function(){\n var el = this[this.length - 1]\n return el && !isObject(el) ? el : $(el)\n },\n find: function(selector){\n var result, $this = this\n if (!selector) result = $()\n else if (typeof selector == 'object')\n result = $(selector).filter(function(){\n var node = this\n return emptyArray.some.call($this, function(parent){\n return $.contains(parent, node)\n })\n })\n else if (this.length == 1) result = $(zepto.qsa(this[0], selector))\n else result = this.map(function(){ return zepto.qsa(this, selector) })\n return result\n },\n closest: function(selector, context){\n var nodes = [], collection = typeof selector == 'object' && $(selector)\n this.each(function(_, node){\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))\n node = node !== context && !isDocument(node) && node.parentNode\n if (node && nodes.indexOf(node) < 0) nodes.push(node)\n })\n return $(nodes)\n },\n parents: function(selector){\n var ancestors = [], nodes = this\n while (nodes.length > 0)\n nodes = $.map(nodes, function(node){\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\n ancestors.push(node)\n return node\n }\n })\n return filtered(ancestors, selector)\n },\n parent: function(selector){\n return filtered(uniq(this.pluck('parentNode')), selector)\n },\n children: function(selector){\n return filtered(this.map(function(){ return children(this) }), selector)\n },\n contents: function() {\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })\n },\n siblings: function(selector){\n return filtered(this.map(function(i, el){\n return filter.call(children(el.parentNode), function(child){ return child!==el })\n }), selector)\n },\n empty: function(){\n return this.each(function(){ this.innerHTML = '' })\n },\n // `pluck` is borrowed from Prototype.js\n pluck: function(property){\n return $.map(this, function(el){ return el[property] })\n },\n show: function(){\n return this.each(function(){\n this.style.display == \"none\" && (this.style.display = '')\n if (getComputedStyle(this, '').getPropertyValue(\"display\") == \"none\")\n this.style.display = defaultDisplay(this.nodeName)\n })\n },\n replaceWith: function(newContent){\n return this.before(newContent).remove()\n },\n wrap: function(structure){\n var func = isFunction(structure)\n if (this[0] && !func)\n var dom = $(structure).get(0),\n clone = dom.parentNode || this.length > 1\n\n return this.each(function(index){\n $(this).wrapAll(\n func ? structure.call(this, index) :\n clone ? dom.cloneNode(true) : dom\n )\n })\n },\n wrapAll: function(structure){\n if (this[0]) {\n $(this[0]).before(structure = $(structure))\n var children\n // drill down to the inmost element\n while ((children = structure.children()).length) structure = children.first()\n $(structure).append(this)\n }\n return this\n },\n wrapInner: function(structure){\n var func = isFunction(structure)\n return this.each(function(index){\n var self = $(this), contents = self.contents(),\n dom = func ? structure.call(this, index) : structure\n contents.length ? contents.wrapAll(dom) : self.append(dom)\n })\n },\n unwrap: function(){\n this.parent().each(function(){\n $(this).replaceWith($(this).children())\n })\n return this\n },\n clone: function(){\n return this.map(function(){ return this.cloneNode(true) })\n },\n hide: function(){\n return this.css(\"display\", \"none\")\n },\n toggle: function(setting){\n return this.each(function(){\n var el = $(this)\n ;(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide()\n })\n },\n prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') },\n next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') },\n html: function(html){\n return 0 in arguments ?\n this.each(function(idx){\n var originHtml = this.innerHTML\n $(this).empty().append( funcArg(this, html, idx, originHtml) )\n }) :\n (0 in this ? this[0].innerHTML : null)\n },\n text: function(text){\n return 0 in arguments ?\n this.each(function(idx){\n var newText = funcArg(this, text, idx, this.textContent)\n this.textContent = newText == null ? '' : ''+newText\n }) :\n (0 in this ? this.pluck('textContent').join(\"\") : null)\n },\n attr: function(name, value){\n var result\n return (typeof name == 'string' && !(1 in arguments)) ?\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\n this.each(function(idx){\n if (this.nodeType !== 1) return\n if (isObject(name)) for (key in name) setAttribute(this, key, name[key])\n else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))\n })\n },\n removeAttr: function(name){\n return this.each(function(){ this.nodeType === 1 && name.split(' ').forEach(function(attribute){\n setAttribute(this, attribute)\n }, this)})\n },\n prop: function(name, value){\n name = propMap[name] || name\n return (1 in arguments) ?\n this.each(function(idx){\n this[name] = funcArg(this, value, idx, this[name])\n }) :\n (this[0] && this[0][name])\n },\n removeProp: function(name){\n name = propMap[name] || name\n return this.each(function(){ delete this[name] })\n },\n data: function(name, value){\n var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase()\n\n var data = (1 in arguments) ?\n this.attr(attrName, value) :\n this.attr(attrName)\n\n return data !== null ? deserializeValue(data) : undefined\n },\n val: function(value){\n if (0 in arguments) {\n if (value == null) value = \"\"\n return this.each(function(idx){\n this.value = funcArg(this, value, idx, this.value)\n })\n } else {\n return this[0] && (this[0].multiple ?\n $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') :\n this[0].value)\n }\n },\n offset: function(coordinates){\n if (coordinates) return this.each(function(index){\n var $this = $(this),\n coords = funcArg(this, coordinates, index, $this.offset()),\n parentOffset = $this.offsetParent().offset(),\n props = {\n top: coords.top - parentOffset.top,\n left: coords.left - parentOffset.left\n }\n\n if ($this.css('position') == 'static') props['position'] = 'relative'\n $this.css(props)\n })\n if (!this.length) return null\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))\n return {top: 0, left: 0}\n var obj = this[0].getBoundingClientRect()\n return {\n left: obj.left + window.pageXOffset,\n top: obj.top + window.pageYOffset,\n width: Math.round(obj.width),\n height: Math.round(obj.height)\n }\n },\n css: function(property, value){\n if (arguments.length < 2) {\n var element = this[0]\n if (typeof property == 'string') {\n if (!element) return\n return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property)\n } else if (isArray(property)) {\n if (!element) return\n var props = {}\n var computedStyle = getComputedStyle(element, '')\n $.each(property, function(_, prop){\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))\n })\n return props\n }\n }\n\n var css = ''\n if (type(property) == 'string') {\n if (!value && value !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(property)) })\n else\n css = dasherize(property) + \":\" + maybeAddPx(property, value)\n } else {\n for (key in property)\n if (!property[key] && property[key] !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(key)) })\n else\n css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';'\n }\n\n return this.each(function(){ this.style.cssText += ';' + css })\n },\n index: function(element){\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])\n },\n hasClass: function(name){\n if (!name) return false\n return emptyArray.some.call(this, function(el){\n return this.test(className(el))\n }, classRE(name))\n },\n addClass: function(name){\n if (!name) return this\n return this.each(function(idx){\n if (!('className' in this)) return\n classList = []\n var cls = className(this), newName = funcArg(this, name, idx, cls)\n newName.split(/\\s+/g).forEach(function(klass){\n if (!$(this).hasClass(klass)) classList.push(klass)\n }, this)\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"))\n })\n },\n removeClass: function(name){\n return this.each(function(idx){\n if (!('className' in this)) return\n if (name === undefined) return className(this, '')\n classList = className(this)\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function(klass){\n classList = classList.replace(classRE(klass), \" \")\n })\n className(this, classList.trim())\n })\n },\n toggleClass: function(name, when){\n if (!name) return this\n return this.each(function(idx){\n var $this = $(this), names = funcArg(this, name, idx, className(this))\n names.split(/\\s+/g).forEach(function(klass){\n (when === undefined ? !$this.hasClass(klass) : when) ?\n $this.addClass(klass) : $this.removeClass(klass)\n })\n })\n },\n scrollTop: function(value){\n if (!this.length) return\n var hasScrollTop = 'scrollTop' in this[0]\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset\n return this.each(hasScrollTop ?\n function(){ this.scrollTop = value } :\n function(){ this.scrollTo(this.scrollX, value) })\n },\n scrollLeft: function(value){\n if (!this.length) return\n var hasScrollLeft = 'scrollLeft' in this[0]\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset\n return this.each(hasScrollLeft ?\n function(){ this.scrollLeft = value } :\n function(){ this.scrollTo(value, this.scrollY) })\n },\n position: function() {\n if (!this.length) return\n\n var elem = this[0],\n // Get *real* offsetParent\n offsetParent = this.offsetParent(),\n // Get correct offsets\n offset = this.offset(),\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()\n\n // Subtract element margins\n // note: when an element has margin: auto the offsetLeft and marginLeft\n // are the same in Safari causing offset.left to incorrectly be 0\n offset.top -= parseFloat( $(elem).css('margin-top') ) || 0\n offset.left -= parseFloat( $(elem).css('margin-left') ) || 0\n\n // Add offsetParent borders\n parentOffset.top += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0\n parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0\n\n // Subtract the two offsets\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n }\n },\n offsetParent: function() {\n return this.map(function(){\n var parent = this.offsetParent || document.body\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\")\n parent = parent.offsetParent\n return parent\n })\n }\n }\n\n // for now\n $.fn.detach = $.fn.remove\n\n // Generate the `width` and `height` functions\n ;['width', 'height'].forEach(function(dimension){\n var dimensionProperty =\n dimension.replace(/./, function(m){ return m[0].toUpperCase() })\n\n $.fn[dimension] = function(value){\n var offset, el = this[0]\n if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] :\n isDocument(el) ? el.documentElement['scroll' + dimensionProperty] :\n (offset = this.offset()) && offset[dimension]\n else return this.each(function(idx){\n el = $(this)\n el.css(dimension, funcArg(this, value, idx, el[dimension]()))\n })\n }\n })\n\n function traverseNode(node, fun) {\n fun(node)\n for (var i = 0, len = node.childNodes.length; i < len; i++)\n traverseNode(node.childNodes[i], fun)\n }\n\n // Generate the `after`, `prepend`, `before`, `append`,\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\n adjacencyOperators.forEach(function(operator, operatorIndex) {\n var inside = operatorIndex % 2 //=> prepend, append\n\n $.fn[operator] = function(){\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\n var argType, nodes = $.map(arguments, function(arg) {\n var arr = []\n argType = type(arg)\n if (argType == \"array\") {\n arg.forEach(function(el) {\n if (el.nodeType !== undefined) return arr.push(el)\n else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())\n arr = arr.concat(zepto.fragment(el))\n })\n return arr\n }\n return argType == \"object\" || arg == null ?\n arg : zepto.fragment(arg)\n }),\n parent, copyByClone = this.length > 1\n if (nodes.length < 1) return this\n\n return this.each(function(_, target){\n parent = inside ? target : target.parentNode\n\n // convert all methods to a \"before\" operation\n target = operatorIndex == 0 ? target.nextSibling :\n operatorIndex == 1 ? target.firstChild :\n operatorIndex == 2 ? target :\n null\n\n var parentInDocument = $.contains(document.documentElement, parent)\n\n nodes.forEach(function(node){\n if (copyByClone) node = node.cloneNode(true)\n else if (!parent) return $(node).remove()\n\n parent.insertBefore(node, target)\n if (parentInDocument) traverseNode(node, function(el){\n if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' &&\n (!el.type || el.type === 'text/javascript') && !el.src){\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window\n target['eval'].call(target, el.innerHTML)\n }\n })\n })\n })\n }\n\n // after => insertAfter\n // prepend => prependTo\n // before => insertBefore\n // append => appendTo\n $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){\n $(html)[operator](this)\n return this\n }\n })\n\n zepto.Z.prototype = Z.prototype = $.fn\n\n // Export internal API functions in the `$.zepto` namespace\n zepto.uniq = uniq\n zepto.deserializeValue = deserializeValue\n $.zepto = zepto\n\n return $\n})()\n\nwindow.Zepto = Zepto\nwindow.$ === undefined && (window.$ = Zepto)\n\n;(function($){\n var jsonpID = +new Date(),\n document = window.document,\n key,\n name,\n rscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n scriptTypeRE = /^(?:text|application)\\/javascript/i,\n xmlTypeRE = /^(?:text|application)\\/xml/i,\n jsonType = 'application/json',\n htmlType = 'text/html',\n blankRE = /^\\s*$/,\n originAnchor = document.createElement('a')\n\n originAnchor.href = window.location.href\n\n // trigger a custom event and return false if it was cancelled\n function triggerAndReturn(context, eventName, data) {\n var event = $.Event(eventName)\n $(context).trigger(event, data)\n return !event.isDefaultPrevented()\n }\n\n // trigger an Ajax \"global\" event\n function triggerGlobal(settings, context, eventName, data) {\n if (settings.global) return triggerAndReturn(context || document, eventName, data)\n }\n\n // Number of active Ajax requests\n $.active = 0\n\n function ajaxStart(settings) {\n if (settings.global && $.active++ === 0) triggerGlobal(settings, null, 'ajaxStart')\n }\n function ajaxStop(settings) {\n if (settings.global && !(--$.active)) triggerGlobal(settings, null, 'ajaxStop')\n }\n\n // triggers an extra global event \"ajaxBeforeSend\" that's like \"ajaxSend\" but cancelable\n function ajaxBeforeSend(xhr, settings) {\n var context = settings.context\n if (settings.beforeSend.call(context, xhr, settings) === false ||\n triggerGlobal(settings, context, 'ajaxBeforeSend', [xhr, settings]) === false)\n return false\n\n triggerGlobal(settings, context, 'ajaxSend', [xhr, settings])\n }\n function ajaxSuccess(data, xhr, settings, deferred) {\n var context = settings.context, status = 'success'\n settings.success.call(context, data, status, xhr)\n if (deferred) deferred.resolveWith(context, [data, status, xhr])\n triggerGlobal(settings, context, 'ajaxSuccess', [xhr, settings, data])\n ajaxComplete(status, xhr, settings)\n }\n // type: \"timeout\", \"error\", \"abort\", \"parsererror\"\n function ajaxError(error, type, xhr, settings, deferred) {\n var context = settings.context\n settings.error.call(context, xhr, type, error)\n if (deferred) deferred.rejectWith(context, [xhr, type, error])\n triggerGlobal(settings, context, 'ajaxError', [xhr, settings, error || type])\n ajaxComplete(type, xhr, settings)\n }\n // status: \"success\", \"notmodified\", \"error\", \"timeout\", \"abort\", \"parsererror\"\n function ajaxComplete(status, xhr, settings) {\n var context = settings.context\n settings.complete.call(context, xhr, status)\n triggerGlobal(settings, context, 'ajaxComplete', [xhr, settings])\n ajaxStop(settings)\n }\n\n function ajaxDataFilter(data, type, settings) {\n if (settings.dataFilter == empty) return data\n var context = settings.context\n return settings.dataFilter.call(context, data, type)\n }\n\n // Empty function, used as default callback\n function empty() {}\n\n $.ajaxJSONP = function(options, deferred){\n if (!('type' in options)) return $.ajax(options)\n\n var _callbackName = options.jsonpCallback,\n callbackName = ($.isFunction(_callbackName) ?\n _callbackName() : _callbackName) || ('Zepto' + (jsonpID++)),\n script = document.createElement('script'),\n originalCallback = window[callbackName],\n responseData,\n abort = function(errorType) {\n $(script).triggerHandler('error', errorType || 'abort')\n },\n xhr = { abort: abort }, abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n $(script).on('load error', function(e, errorType){\n clearTimeout(abortTimeout)\n $(script).off().remove()\n\n if (e.type == 'error' || !responseData) {\n ajaxError(null, errorType || 'error', xhr, options, deferred)\n } else {\n ajaxSuccess(responseData[0], xhr, options, deferred)\n }\n\n window[callbackName] = originalCallback\n if (responseData && $.isFunction(originalCallback))\n originalCallback(responseData[0])\n\n originalCallback = responseData = undefined\n })\n\n if (ajaxBeforeSend(xhr, options) === false) {\n abort('abort')\n return xhr\n }\n\n window[callbackName] = function(){\n responseData = arguments\n }\n\n script.src = options.url.replace(/\\?(.+)=\\?/, '?$1=' + callbackName)\n document.head.appendChild(script)\n\n if (options.timeout > 0) abortTimeout = setTimeout(function(){\n abort('timeout')\n }, options.timeout)\n\n return xhr\n }\n\n $.ajaxSettings = {\n // Default type of request\n type: 'GET',\n // Callback that is executed before request\n beforeSend: empty,\n // Callback that is executed if the request succeeds\n success: empty,\n // Callback that is executed the the server drops error\n error: empty,\n // Callback that is executed on request complete (both: error and success)\n complete: empty,\n // The context for the callbacks\n context: null,\n // Whether to trigger \"global\" Ajax events\n global: true,\n // Transport\n xhr: function () {\n return new window.XMLHttpRequest()\n },\n // MIME types mapping\n // IIS returns Javascript as \"application/x-javascript\"\n accepts: {\n script: 'text/javascript, application/javascript, application/x-javascript',\n json: jsonType,\n xml: 'application/xml, text/xml',\n html: htmlType,\n text: 'text/plain'\n },\n // Whether the request is to another domain\n crossDomain: false,\n // Default timeout\n timeout: 0,\n // Whether data should be serialized to string\n processData: true,\n // Whether the browser should be allowed to cache GET responses\n cache: true,\n //Used to handle the raw response data of XMLHttpRequest.\n //This is a pre-filtering function to sanitize the response.\n //The sanitized response should be returned\n dataFilter: empty\n }\n\n function mimeToDataType(mime) {\n if (mime) mime = mime.split(';', 2)[0]\n return mime && ( mime == htmlType ? 'html' :\n mime == jsonType ? 'json' :\n scriptTypeRE.test(mime) ? 'script' :\n xmlTypeRE.test(mime) && 'xml' ) || 'text'\n }\n\n function appendQuery(url, query) {\n if (query == '') return url\n return (url + '&' + query).replace(/[&?]{1,2}/, '?')\n }\n\n // serialize payload and append it to the URL for GET requests\n function serializeData(options) {\n if (options.processData && options.data && $.type(options.data) != \"string\")\n options.data = $.param(options.data, options.traditional)\n if (options.data && (!options.type || options.type.toUpperCase() == 'GET' || 'jsonp' == options.dataType))\n options.url = appendQuery(options.url, options.data), options.data = undefined\n }\n\n $.ajax = function(options){\n var settings = $.extend({}, options || {}),\n deferred = $.Deferred && $.Deferred(),\n urlAnchor, hashIndex\n for (key in $.ajaxSettings) if (settings[key] === undefined) settings[key] = $.ajaxSettings[key]\n\n ajaxStart(settings)\n\n if (!settings.crossDomain) {\n urlAnchor = document.createElement('a')\n urlAnchor.href = settings.url\n // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049\n urlAnchor.href = urlAnchor.href\n settings.crossDomain = (originAnchor.protocol + '//' + originAnchor.host) !== (urlAnchor.protocol + '//' + urlAnchor.host)\n }\n\n if (!settings.url) settings.url = window.location.toString()\n if ((hashIndex = settings.url.indexOf('#')) > -1) settings.url = settings.url.slice(0, hashIndex)\n serializeData(settings)\n\n var dataType = settings.dataType, hasPlaceholder = /\\?.+=\\?/.test(settings.url)\n if (hasPlaceholder) dataType = 'jsonp'\n\n if (settings.cache === false || (\n (!options || options.cache !== true) &&\n ('script' == dataType || 'jsonp' == dataType)\n ))\n settings.url = appendQuery(settings.url, '_=' + Date.now())\n\n if ('jsonp' == dataType) {\n if (!hasPlaceholder)\n settings.url = appendQuery(settings.url,\n settings.jsonp ? (settings.jsonp + '=?') : settings.jsonp === false ? '' : 'callback=?')\n return $.ajaxJSONP(settings, deferred)\n }\n\n var mime = settings.accepts[dataType],\n headers = { },\n setHeader = function(name, value) { headers[name.toLowerCase()] = [name, value] },\n protocol = /^([\\w-]+:)\\/\\//.test(settings.url) ? RegExp.$1 : window.location.protocol,\n xhr = settings.xhr(),\n nativeSetHeader = xhr.setRequestHeader,\n abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n if (!settings.crossDomain) setHeader('X-Requested-With', 'XMLHttpRequest')\n setHeader('Accept', mime || '*/*')\n if (mime = settings.mimeType || mime) {\n if (mime.indexOf(',') > -1) mime = mime.split(',', 2)[0]\n xhr.overrideMimeType && xhr.overrideMimeType(mime)\n }\n if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != 'GET'))\n setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded')\n\n if (settings.headers) for (name in settings.headers) setHeader(name, settings.headers[name])\n xhr.setRequestHeader = setHeader\n\n xhr.onreadystatechange = function(){\n if (xhr.readyState == 4) {\n xhr.onreadystatechange = empty\n clearTimeout(abortTimeout)\n var result, error = false\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == 'file:')) {\n dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type'))\n\n if (xhr.responseType == 'arraybuffer' || xhr.responseType == 'blob')\n result = xhr.response\n else {\n result = xhr.responseText\n\n try {\n // http://perfectionkills.com/global-eval-what-are-the-options/\n // sanitize response accordingly if data filter callback provided\n result = ajaxDataFilter(result, dataType, settings)\n if (dataType == 'script') (1,eval)(result)\n else if (dataType == 'xml') result = xhr.responseXML\n else if (dataType == 'json') result = blankRE.test(result) ? null : $.parseJSON(result)\n } catch (e) { error = e }\n\n if (error) return ajaxError(error, 'parsererror', xhr, settings, deferred)\n }\n\n ajaxSuccess(result, xhr, settings, deferred)\n } else {\n ajaxError(xhr.statusText || null, xhr.status ? 'error' : 'abort', xhr, settings, deferred)\n }\n }\n }\n\n if (ajaxBeforeSend(xhr, settings) === false) {\n xhr.abort()\n ajaxError(null, 'abort', xhr, settings, deferred)\n return xhr\n }\n\n var async = 'async' in settings ? settings.async : true\n xhr.open(settings.type, settings.url, async, settings.username, settings.password)\n\n if (settings.xhrFields) for (name in settings.xhrFields) xhr[name] = settings.xhrFields[name]\n\n for (name in headers) nativeSetHeader.apply(xhr, headers[name])\n\n if (settings.timeout > 0) abortTimeout = setTimeout(function(){\n xhr.onreadystatechange = empty\n xhr.abort()\n ajaxError(null, 'timeout', xhr, settings, deferred)\n }, settings.timeout)\n\n // avoid sending empty string (#319)\n xhr.send(settings.data ? settings.data : null)\n return xhr\n }\n\n // handle optional data/success arguments\n function parseArguments(url, data, success, dataType) {\n if ($.isFunction(data)) dataType = success, success = data, data = undefined\n if (!$.isFunction(success)) dataType = success, success = undefined\n return {\n url: url\n , data: data\n , success: success\n , dataType: dataType\n }\n }\n\n $.get = function(/* url, data, success, dataType */){\n return $.ajax(parseArguments.apply(null, arguments))\n }\n\n $.post = function(/* url, data, success, dataType */){\n var options = parseArguments.apply(null, arguments)\n options.type = 'POST'\n return $.ajax(options)\n }\n\n $.getJSON = function(/* url, data, success */){\n var options = parseArguments.apply(null, arguments)\n options.dataType = 'json'\n return $.ajax(options)\n }\n\n $.fn.load = function(url, data, success){\n if (!this.length) return this\n var self = this, parts = url.split(/\\s/), selector,\n options = parseArguments(url, data, success),\n callback = options.success\n if (parts.length > 1) options.url = parts[0], selector = parts[1]\n options.success = function(response){\n self.html(selector ?\n $('<div>').html(response.replace(rscript, \"\")).find(selector)\n : response)\n callback && callback.apply(self, arguments)\n }\n $.ajax(options)\n return this\n }\n\n var escape = encodeURIComponent\n\n function serialize(params, obj, traditional, scope){\n var type, array = $.isArray(obj), hash = $.isPlainObject(obj)\n $.each(obj, function(key, value) {\n type = $.type(value)\n if (scope) key = traditional ? scope :\n scope + '[' + (hash || type == 'object' || type == 'array' ? key : '') + ']'\n // handle data in serializeArray() format\n if (!scope && array) params.add(value.name, value.value)\n // recurse into nested objects\n else if (type == \"array\" || (!traditional && type == \"object\"))\n serialize(params, value, traditional, key)\n else params.add(key, value)\n })\n }\n\n $.param = function(obj, traditional){\n var params = []\n params.add = function(key, value) {\n if ($.isFunction(value)) value = value()\n if (value == null) value = \"\"\n this.push(escape(key) + '=' + escape(value))\n }\n serialize(params, obj, traditional)\n return params.join('&').replace(/%20/g, '+')\n }\n})(Zepto)\n\n;(function($){\n // Create a collection of callbacks to be fired in a sequence, with configurable behaviour\n // Option flags:\n // - once: Callbacks fired at most one time.\n // - memory: Remember the most recent context and arguments\n // - stopOnFalse: Cease iterating over callback list\n // - unique: Permit adding at most one instance of the same callback\n $.Callbacks = function(options) {\n options = $.extend({}, options)\n\n var memory, // Last fire value (for non-forgettable lists)\n fired, // Flag to know if list was already fired\n firing, // Flag to know if list is currently firing\n firingStart, // First callback to fire (used internally by add and fireWith)\n firingLength, // End of the loop when firing\n firingIndex, // Index of currently firing callback (modified by remove if needed)\n list = [], // Actual callback list\n stack = !options.once && [], // Stack of fire calls for repeatable lists\n fire = function(data) {\n memory = options.memory && data\n fired = true\n firingIndex = firingStart || 0\n firingStart = 0\n firingLength = list.length\n firing = true\n for ( ; list && firingIndex < firingLength ; ++firingIndex ) {\n if (list[firingIndex].apply(data[0], data[1]) === false && options.stopOnFalse) {\n memory = false\n break\n }\n }\n firing = false\n if (list) {\n if (stack) stack.length && fire(stack.shift())\n else if (memory) list.length = 0\n else Callbacks.disable()\n }\n },\n\n Callbacks = {\n add: function() {\n if (list) {\n var start = list.length,\n add = function(args) {\n $.each(args, function(_, arg){\n if (typeof arg === \"function\") {\n if (!options.unique || !Callbacks.has(arg)) list.push(arg)\n }\n else if (arg && arg.length && typeof arg !== 'string') add(arg)\n })\n }\n add(arguments)\n if (firing) firingLength = list.length\n else if (memory) {\n firingStart = start\n fire(memory)\n }\n }\n return this\n },\n remove: function() {\n if (list) {\n $.each(arguments, function(_, arg){\n var index\n while ((index = $.inArray(arg, list, index)) > -1) {\n list.splice(index, 1)\n // Handle firing indexes\n if (firing) {\n if (index <= firingLength) --firingLength\n if (index <= firingIndex) --firingIndex\n }\n }\n })\n }\n return this\n },\n has: function(fn) {\n return !!(list && (fn ? $.inArray(fn, list) > -1 : list.length))\n },\n empty: function() {\n firingLength = list.length = 0\n return this\n },\n disable: function() {\n list = stack = memory = undefined\n return this\n },\n disabled: function() {\n return !list\n },\n lock: function() {\n stack = undefined\n if (!memory) Callbacks.disable()\n return this\n },\n locked: function() {\n return !stack\n },\n fireWith: function(context, args) {\n if (list && (!fired || stack)) {\n args = args || []\n args = [context, args.slice ? args.slice() : args]\n if (firing) stack.push(args)\n else fire(args)\n }\n return this\n },\n fire: function() {\n return Callbacks.fireWith(this, arguments)\n },\n fired: function() {\n return !!fired\n }\n }\n\n return Callbacks\n }\n})(Zepto)\n\n;(function($){\n var slice = Array.prototype.slice\n\n function Deferred(func) {\n var tuples = [\n // action, add listener, listener list, final state\n [ \"resolve\", \"done\", $.Callbacks({once:1, memory:1}), \"resolved\" ],\n [ \"reject\", \"fail\", $.Callbacks({once:1, memory:1}), \"rejected\" ],\n [ \"notify\", \"progress\", $.Callbacks({memory:1}) ]\n ],\n state = \"pending\",\n promise = {\n state: function() {\n return state\n },\n always: function() {\n deferred.done(arguments).fail(arguments)\n return this\n },\n then: function(/* fnDone [, fnFailed [, fnProgress]] */) {\n var fns = arguments\n return Deferred(function(defer){\n $.each(tuples, function(i, tuple){\n var fn = $.isFunction(fns[i]) && fns[i]\n deferred[tuple[1]](function(){\n var returned = fn && fn.apply(this, arguments)\n if (returned && $.isFunction(returned.promise)) {\n returned.promise()\n .done(defer.resolve)\n .fail(defer.reject)\n .progress(defer.notify)\n } else {\n var context = this === promise ? defer.promise() : this,\n values = fn ? [returned] : arguments\n defer[tuple[0] + \"With\"](context, values)\n }\n })\n })\n fns = null\n }).promise()\n },\n\n promise: function(obj) {\n return obj != null ? $.extend( obj, promise ) : promise\n }\n },\n deferred = {}\n\n $.each(tuples, function(i, tuple){\n var list = tuple[2],\n stateString = tuple[3]\n\n promise[tuple[1]] = list.add\n\n if (stateString) {\n list.add(function(){\n state = stateString\n }, tuples[i^1][2].disable, tuples[2][2].lock)\n }\n\n deferred[tuple[0]] = function(){\n deferred[tuple[0] + \"With\"](this === deferred ? promise : this, arguments)\n return this\n }\n deferred[tuple[0] + \"With\"] = list.fireWith\n })\n\n promise.promise(deferred)\n if (func) func.call(deferred, deferred)\n return deferred\n }\n\n $.when = function(sub) {\n var resolveValues = slice.call(arguments),\n len = resolveValues.length,\n i = 0,\n remain = len !== 1 || (sub && $.isFunction(sub.promise)) ? len : 0,\n deferred = remain === 1 ? sub : Deferred(),\n progressValues, progressContexts, resolveContexts,\n updateFn = function(i, ctx, val){\n return function(value){\n ctx[i] = this\n val[i] = arguments.length > 1 ? slice.call(arguments) : value\n if (val === progressValues) {\n deferred.notifyWith(ctx, val)\n } else if (!(--remain)) {\n deferred.resolveWith(ctx, val)\n }\n }\n }\n\n if (len > 1) {\n progressValues = new Array(len)\n progressContexts = new Array(len)\n resolveContexts = new Array(len)\n for ( ; i < len; ++i ) {\n if (resolveValues[i] && $.isFunction(resolveValues[i].promise)) {\n resolveValues[i].promise()\n .done(updateFn(i, resolveContexts, resolveValues))\n .fail(deferred.reject)\n .progress(updateFn(i, progressContexts, progressValues))\n } else {\n --remain\n }\n }\n }\n if (!remain) deferred.resolveWith(resolveContexts, resolveValues)\n return deferred.promise()\n }\n\n $.Deferred = Deferred\n})(Zepto)\n\n;(function($){\n var _zid = 1, undefined,\n slice = Array.prototype.slice,\n isFunction = $.isFunction,\n isString = function(obj){ return typeof obj == 'string' },\n handlers = {},\n specialEvents={},\n focusinSupported = 'onfocusin' in window,\n focus = { focus: 'focusin', blur: 'focusout' },\n hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' }\n\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents'\n\n function zid(element) {\n return element._zid || (element._zid = _zid++)\n }\n function findHandlers(element, event, fn, selector) {\n event = parse(event)\n if (event.ns) var matcher = matcherFor(event.ns)\n return (handlers[zid(element)] || []).filter(function(handler) {\n return handler\n && (!event.e || handler.e == event.e)\n && (!event.ns || matcher.test(handler.ns))\n && (!fn || zid(handler.fn) === zid(fn))\n && (!selector || handler.sel == selector)\n })\n }\n function parse(event) {\n var parts = ('' + event).split('.')\n return {e: parts[0], ns: parts.slice(1).sort().join(' ')}\n }\n function matcherFor(ns) {\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)')\n }\n\n function eventCapture(handler, captureSetting) {\n return handler.del &&\n (!focusinSupported && (handler.e in focus)) ||\n !!captureSetting\n }\n\n function realEvent(type) {\n return hover[type] || (focusinSupported && focus[type]) || type\n }\n\n function add(element, events, fn, data, selector, delegator, capture){\n var id = zid(element), set = (handlers[id] || (handlers[id] = []))\n events.split(/\\s/).forEach(function(event){\n if (event == 'ready') return $(document).ready(fn)\n var handler = parse(event)\n handler.fn = fn\n handler.sel = selector\n // emulate mouseenter, mouseleave\n if (handler.e in hover) fn = function(e){\n var related = e.relatedTarget\n if (!related || (related !== this && !$.contains(this, related)))\n return handler.fn.apply(this, arguments)\n }\n handler.del = delegator\n var callback = delegator || fn\n handler.proxy = function(e){\n e = compatible(e)\n if (e.isImmediatePropagationStopped()) return\n e.data = data\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args))\n if (result === false) e.preventDefault(), e.stopPropagation()\n return result\n }\n handler.i = set.length\n set.push(handler)\n if ('addEventListener' in element)\n element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n }\n function remove(element, events, fn, selector, capture){\n var id = zid(element)\n ;(events || '').split(/\\s/).forEach(function(event){\n findHandlers(element, event, fn, selector).forEach(function(handler){\n delete handlers[id][handler.i]\n if ('removeEventListener' in element)\n element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n })\n }\n\n $.event = { add: add, remove: remove }\n\n $.proxy = function(fn, context) {\n var args = (2 in arguments) && slice.call(arguments, 2)\n if (isFunction(fn)) {\n var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) }\n proxyFn._zid = zid(fn)\n return proxyFn\n } else if (isString(context)) {\n if (args) {\n args.unshift(fn[context], fn)\n return $.proxy.apply(null, args)\n } else {\n return $.proxy(fn[context], fn)\n }\n } else {\n throw new TypeError(\"expected function\")\n }\n }\n\n $.fn.bind = function(event, data, callback){\n return this.on(event, data, callback)\n }\n $.fn.unbind = function(event, callback){\n return this.off(event, callback)\n }\n $.fn.one = function(event, selector, data, callback){\n return this.on(event, selector, data, callback, 1)\n }\n\n var returnTrue = function(){return true},\n returnFalse = function(){return false},\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\n eventMethods = {\n preventDefault: 'isDefaultPrevented',\n stopImmediatePropagation: 'isImmediatePropagationStopped',\n stopPropagation: 'isPropagationStopped'\n }\n\n function compatible(event, source) {\n if (source || !event.isDefaultPrevented) {\n source || (source = event)\n\n $.each(eventMethods, function(name, predicate) {\n var sourceMethod = source[name]\n event[name] = function(){\n this[predicate] = returnTrue\n return sourceMethod && sourceMethod.apply(source, arguments)\n }\n event[predicate] = returnFalse\n })\n\n event.timeStamp || (event.timeStamp = Date.now())\n\n if (source.defaultPrevented !== undefined ? source.defaultPrevented :\n 'returnValue' in source ? source.returnValue === false :\n source.getPreventDefault && source.getPreventDefault())\n event.isDefaultPrevented = returnTrue\n }\n return event\n }\n\n function createProxy(event) {\n var key, proxy = { originalEvent: event }\n for (key in event)\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key]\n\n return compatible(proxy, event)\n }\n\n $.fn.delegate = function(selector, event, callback){\n return this.on(event, selector, callback)\n }\n $.fn.undelegate = function(selector, event, callback){\n return this.off(event, selector, callback)\n }\n\n $.fn.live = function(event, callback){\n $(document.body).delegate(this.selector, event, callback)\n return this\n }\n $.fn.die = function(event, callback){\n $(document.body).undelegate(this.selector, event, callback)\n return this\n }\n\n $.fn.on = function(event, selector, data, callback, one){\n var autoRemove, delegator, $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.on(type, selector, data, fn, one)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = data, data = selector, selector = undefined\n if (callback === undefined || data === false)\n callback = data, data = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(_, element){\n if (one) autoRemove = function(e){\n remove(element, e.type, callback)\n return callback.apply(this, arguments)\n }\n\n if (selector) delegator = function(e){\n var evt, match = $(e.target).closest(selector, element).get(0)\n if (match && match !== element) {\n evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element})\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)))\n }\n }\n\n add(element, event, callback, data, selector, delegator || autoRemove)\n })\n }\n $.fn.off = function(event, selector, callback){\n var $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.off(type, selector, fn)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = selector, selector = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(){\n remove(this, event, callback, selector)\n })\n }\n\n $.fn.trigger = function(event, args){\n event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event)\n event._args = args\n return this.each(function(){\n // handle focus(), blur() by calling them directly\n if (event.type in focus && typeof this[event.type] == \"function\") this[event.type]()\n // items in the collection might not be DOM elements\n else if ('dispatchEvent' in this) this.dispatchEvent(event)\n else $(this).triggerHandler(event, args)\n })\n }\n\n // triggers event handlers on current element just as if an event occurred,\n // doesn't trigger an actual event, doesn't bubble\n $.fn.triggerHandler = function(event, args){\n var e, result\n this.each(function(i, element){\n e = createProxy(isString(event) ? $.Event(event) : event)\n e._args = args\n e.target = element\n $.each(findHandlers(element, event.type || event), function(i, handler){\n result = handler.proxy(e)\n if (e.isImmediatePropagationStopped()) return false\n })\n })\n return result\n }\n\n // shortcut methods for `.bind(event, fn)` for each event type\n ;('focusin focusout focus blur load resize scroll unload click dblclick '+\n 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave '+\n 'change select keydown keypress keyup error').split(' ').forEach(function(event) {\n $.fn[event] = function(callback) {\n return (0 in arguments) ?\n this.bind(event, callback) :\n this.trigger(event)\n }\n })\n\n $.Event = function(type, props) {\n if (!isString(type)) props = type, type = props.type\n var event = document.createEvent(specialEvents[type] || 'Events'), bubbles = true\n if (props) for (var name in props) (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name])\n event.initEvent(type, bubbles, true)\n return compatible(event)\n }\n\n})(Zepto)\n\n;(function(){\n // getComputedStyle shouldn't freak out when called\n // without a valid element as argument\n try {\n getComputedStyle(undefined)\n } catch(e) {\n var nativeGetComputedStyle = getComputedStyle\n window.getComputedStyle = function(element, pseudoElement){\n try {\n return nativeGetComputedStyle(element, pseudoElement)\n } catch(e) {\n return null\n }\n }\n }\n})()\n\n;(function($){\n var zepto = $.zepto, oldQsa = zepto.qsa, oldMatches = zepto.matches\n\n function visible(elem){\n elem = $(elem)\n return !!(elem.width() || elem.height()) && elem.css(\"display\") !== \"none\"\n }\n\n // Implements a subset from:\n // http://api.jquery.com/category/selectors/jquery-selector-extensions/\n //\n // Each filter function receives the current index, all nodes in the\n // considered set, and a value if there were parentheses. The value\n // of `this` is the node currently being considered. The function returns the\n // resulting node(s), null, or undefined.\n //\n // Complex selectors are not supported:\n // li:has(label:contains(\"foo\")) + li:has(label:contains(\"bar\"))\n // ul.inner:first > li\n var filters = $.expr[':'] = {\n visible: function(){ if (visible(this)) return this },\n hidden: function(){ if (!visible(this)) return this },\n selected: function(){ if (this.selected) return this },\n checked: function(){ if (this.checked) return this },\n parent: function(){ return this.parentNode },\n first: function(idx){ if (idx === 0) return this },\n last: function(idx, nodes){ if (idx === nodes.length - 1) return this },\n eq: function(idx, _, value){ if (idx === value) return this },\n contains: function(idx, _, text){ if ($(this).text().indexOf(text) > -1) return this },\n has: function(idx, _, sel){ if (zepto.qsa(this, sel).length) return this }\n }\n\n var filterRe = new RegExp('(.*):(\\\\w+)(?:\\\\(([^)]+)\\\\))?$\\\\s*'),\n childRe = /^\\s*>/,\n classTag = 'Zepto' + (+new Date())\n\n function process(sel, fn) {\n // quote the hash in `a[href^=#]` expression\n sel = sel.replace(/=#\\]/g, '=\"#\"]')\n var filter, arg, match = filterRe.exec(sel)\n if (match && match[2] in filters) {\n filter = filters[match[2]], arg = match[3]\n sel = match[1]\n if (arg) {\n var num = Number(arg)\n if (isNaN(num)) arg = arg.replace(/^[\"']|[\"']$/g, '')\n else arg = num\n }\n }\n return fn(sel, filter, arg)\n }\n\n zepto.qsa = function(node, selector) {\n return process(selector, function(sel, filter, arg){\n try {\n var taggedParent\n if (!sel && filter) sel = '*'\n else if (childRe.test(sel))\n // support \"> *\" child queries by tagging the parent node with a\n // unique class and prepending that classname onto the selector\n taggedParent = $(node).addClass(classTag), sel = '.'+classTag+' '+sel\n\n var nodes = oldQsa(node, sel)\n } catch(e) {\n console.error('error performing selector: %o', selector)\n throw e\n } finally {\n if (taggedParent) taggedParent.removeClass(classTag)\n }\n return !filter ? nodes :\n zepto.uniq($.map(nodes, function(n, i){ return filter.call(n, i, nodes, arg) }))\n })\n }\n\n zepto.matches = function(node, selector){\n return process(selector, function(sel, filter, arg){\n return (!sel || oldMatches(node, sel)) &&\n (!filter || filter.call(node, null, arg) === node)\n })\n }\n})(Zepto)\nmodule.exports = Zepto\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\nvar core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target) {\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = __webpack_require__(154);\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n if (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertInto + \" \" + options.insertAt.before);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\toptions.attrs.type = \"text/css\";\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\toptions.attrs.type = \"text/css\";\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t result = options.transform(obj.css);\n\n\t if (result) {\n\t \t// If transform returns a value, use that instead of the original css.\n\t \t// This allows running runtime transformations on the css.\n\t \tobj.css = result;\n\t } else {\n\t \t// If the transform function returns a falsy value, don't add this css.\n\t \t// This allows conditional loading of css\n\t \treturn function() {\n\t \t\t// noop\n\t \t};\n\t }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default. Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* eslint-disable no-var */\n// Simple JavaScript Templating\n// Paul Miller (http://paulmillr.com)\n// http://underscorejs.org\n// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\n// By default, Underscore uses ERB-style template delimiters, change the\n// following template settings to use alternative delimiters.\nvar settings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n\n // When customizing `templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n};var noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n '\\'': '\\'',\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\t': 't',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escaper = /\\\\|'|\\r|\\n|\\t|\\u2028|\\u2029/g;\n\n// List of HTML entities for escaping.\nvar htmlEntities = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n};\n\nvar entityRe = new RegExp('[&<>\"\\']', 'g');\n\nvar escapeExpr = function escapeExpr(string) {\n if (string === null) return '';\n return ('' + string).replace(entityRe, function (match) {\n return htmlEntities[match];\n });\n};\n\nvar counter = 0;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\nvar tmpl = function tmpl(text, data) {\n var render;\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = new RegExp([(settings.escape || noMatch).source, (settings.interpolate || noMatch).source, (settings.evaluate || noMatch).source].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = '__p+=\\'';\n text.replace(matcher, function (match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escaper, function (match) {\n return '\\\\' + escapes[match];\n });\n\n if (escape) source += '\\'+\\n((__t=(' + escape + '))==null?\\'\\':escapeExpr(__t))+\\n\\'';\n\n if (interpolate) source += '\\'+\\n((__t=(' + interpolate + '))==null?\\'\\':__t)+\\n\\'';\n\n if (evaluate) source += '\\';\\n' + evaluate + '\\n__p+=\\'';\n\n index = offset + match.length;\n return match;\n });\n source += '\\';\\n';\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = 'var __t,__p=\\'\\',__j=Array.prototype.join,' + 'print=function(){__p+=__j.call(arguments,\\'\\');};\\n' + source + 'return __p;\\n//# sourceURL=/microtemplates/source[' + counter++ + ']';\n\n try {\n /*jshint -W054 */\n // TODO: find a way to avoid eval\n render = new Function(settings.variable || 'obj', 'escapeExpr', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n if (data) return render(data, escapeExpr);\n var template = function template(data) {\n return render.call(this, data, escapeExpr);\n };\n\n // Provide the compiled function source as a convenience for precompilation.\n template.source = 'function(' + (settings.variable || 'obj') + '){\\n' + source + '}';\n\n return template;\n};\ntmpl.settings = settings;\n\nexports.default = tmpl;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(98), __esModule: true };\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(49)('wks')\n , uid = __webpack_require__(36)\n , Symbol = __webpack_require__(16).Symbol\n , USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function(name){\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = __webpack_require__(11);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = __webpack_require__(5);\n\nvar _ui_object = __webpack_require__(22);\n\nvar _ui_object2 = _interopRequireDefault(_ui_object);\n\nvar _error_mixin = __webpack_require__(19);\n\nvar _error_mixin2 = _interopRequireDefault(_error_mixin);\n\nvar _clapprZepto = __webpack_require__(6);\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * An abstraction to represent a generic playback, it's like an interface to be implemented by subclasses.\n * @class Playback\n * @constructor\n * @extends UIObject\n * @module base\n */\nvar Playback = function (_UIObject) {\n (0, _inherits3.default)(Playback, _UIObject);\n (0, _createClass3.default)(Playback, [{\n key: 'isAudioOnly',\n\n /**\n * Determine if the playback does not contain video/has video but video should be ignored.\n * @property isAudioOnly\n * @type Boolean\n */\n get: function get() {\n return false;\n }\n }, {\n key: 'isAdaptive',\n get: function get() {\n return false;\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n\n }, {\n key: 'ended',\n get: function get() {\n return false;\n }\n\n /**\n * The internationalization plugin.\n * @property i18n\n * @type {Strings}\n */\n\n }, {\n key: 'i18n',\n get: function get() {\n return this._i18n;\n }\n\n /**\n * Determine if the playback is having to buffer in order for\n * playback to be smooth.\n * (i.e if a live stream is playing smoothly, this will be false)\n * @property buffering\n * @type Boolean\n */\n\n }, {\n key: 'buffering',\n get: function get() {\n return false;\n }\n\n /**\n * Determine if the playback has user consent.\n * @property consented\n * @type Boolean\n */\n\n }, {\n key: 'consented',\n get: function get() {\n return this._consented;\n }\n\n /**\n * @method constructor\n * @param {Object} options the options object\n * @param {Strings} i18n the internationalization component\n */\n\n }]);\n\n function Playback(options, i18n, playerError) {\n (0, _classCallCheck3.default)(this, Playback);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _UIObject.call(this, options));\n\n _this.settings = {};\n _this._i18n = i18n;\n _this.playerError = playerError;\n _this._consented = false;\n return _this;\n }\n\n /**\n * Gives user consent to playback (mobile devices).\n * @method consent\n */\n\n\n Playback.prototype.consent = function consent() {\n this._consented = true;\n };\n\n /**\n * plays the playback.\n * @method play\n */\n\n\n Playback.prototype.play = function play() {};\n\n /**\n * pauses the playback.\n * @method pause\n */\n\n\n Playback.prototype.pause = function pause() {};\n\n /**\n * stops the playback.\n * @method stop\n */\n\n\n Playback.prototype.stop = function stop() {};\n\n /**\n * seeks the playback to a given `time` in seconds\n * @method seek\n * @param {Number} time should be a number between 0 and the video duration\n */\n\n\n Playback.prototype.seek = function seek(time) {}; // eslint-disable-line no-unused-vars\n\n /**\n * seeks the playback to a given `percentage` in percentage\n * @method seekPercentage\n * @param {Number} time should be a number between 0 and 100\n */\n\n\n Playback.prototype.seekPercentage = function seekPercentage(percentage) {}; // eslint-disable-line no-unused-vars\n\n /**\n * The time that \"0\" now represents relative to when playback started.\n * For a stream with a sliding window this will increase as content is\n * removed from the beginning.\n * @method getStartTimeOffset\n * @return {Number} time (in seconds) that time \"0\" represents.\n */\n\n\n Playback.prototype.getStartTimeOffset = function getStartTimeOffset() {\n return 0;\n };\n\n /**\n * gets the duration in seconds\n * @method getDuration\n * @return {Number} duration (in seconds) of the current source\n */\n\n\n Playback.prototype.getDuration = function getDuration() {\n return 0;\n };\n\n /**\n * checks if the playback is playing.\n * @method isPlaying\n * @return {Boolean} `true` if the current playback is playing, otherwise `false`\n */\n\n\n Playback.prototype.isPlaying = function isPlaying() {\n return false;\n };\n\n /**\n * checks if the playback is ready.\n * @property isReady\n * @type {Boolean} `true` if the current playback is ready, otherwise `false`\n */\n\n\n // eslint-disable-line no-unused-vars\n\n /**\n * gets the playback type (`'vod', 'live', 'aod'`)\n * @method getPlaybackType\n * @return {String} you should write the playback type otherwise it'll assume `'no_op'`\n * @example\n * ```javascript\n * html5VideoPlayback.getPlaybackType() //vod\n * html5AudioPlayback.getPlaybackType() //aod\n * html5VideoPlayback.getPlaybackType() //live\n * flashHlsPlayback.getPlaybackType() //live\n * ```\n */\n Playback.prototype.getPlaybackType = function getPlaybackType() {\n return Playback.NO_OP;\n };\n\n /**\n * checks if the playback is in HD.\n * @method isHighDefinitionInUse\n * @return {Boolean} `true` if the playback is playing in HD, otherwise `false`\n */\n\n\n Playback.prototype.isHighDefinitionInUse = function isHighDefinitionInUse() {\n return false;\n };\n\n /**\n * sets the volume for the playback\n * @method volume\n * @param {Number} value a number between 0 (`muted`) to 100 (`max`)\n */\n\n\n Playback.prototype.volume = function volume(value) {}; // eslint-disable-line no-unused-vars\n\n /**\n * enables to configure the playback after its creation\n * @method configure\n * @param {Object} options all the options to change in form of a javascript object\n */\n\n\n Playback.prototype.configure = function configure(options) {\n this._options = _clapprZepto2.default.extend(this._options, options);\n };\n\n /**\n * destroys the playback, removing it from DOM\n * @method destroy\n */\n\n\n Playback.prototype.destroy = function destroy() {\n this.remove();\n };\n\n /**\n * attempt to autoplays the playback.\n * @method attemptAutoPlay\n */\n\n\n Playback.prototype.attemptAutoPlay = function attemptAutoPlay() {\n var _this2 = this;\n\n this.canAutoPlay(function (result, error) {\n // eslint-disable-line no-unused-vars\n result && _this2.play();\n });\n };\n\n /**\n * checks if the playback can autoplay.\n * @method canAutoPlay\n * @param {Function} callback function where first param is Boolean and second param is playback Error or null\n */\n\n\n Playback.prototype.canAutoPlay = function canAutoPlay(cb) {\n cb(true, null); // Assume playback can autoplay by default\n };\n\n (0, _createClass3.default)(Playback, [{\n key: 'isReady',\n get: function get() {\n return false;\n }\n\n /**\n * checks if the playback has closed caption tracks.\n * @property hasClosedCaptionsTracks\n * @type {Boolean}\n */\n\n }, {\n key: 'hasClosedCaptionsTracks',\n get: function get() {\n return this.closedCaptionsTracks.length > 0;\n }\n\n /**\n * gets the playback available closed caption tracks.\n * @property closedCaptionsTracks\n * @type {Array} an array of objects with at least 'id' and 'name' properties\n */\n\n }, {\n key: 'closedCaptionsTracks',\n get: function get() {\n return [];\n }\n\n /**\n * gets the selected closed caption track index. (-1 is disabled)\n * @property closedCaptionsTrackId\n * @type {Number}\n */\n\n }, {\n key: 'closedCaptionsTrackId',\n get: function get() {\n return -1;\n }\n\n /**\n * sets the selected closed caption track index. (-1 is disabled)\n * @property closedCaptionsTrackId\n * @type {Number}\n */\n ,\n set: function set(trackId) {}\n }]);\n return Playback;\n}(_ui_object2.default);\n\nexports.default = Playback;\n\n\n(0, _assign2.default)(Playback.prototype, _error_mixin2.default);\n\nPlayback.extend = function (properties) {\n return (0, _utils.extend)(Playback, properties);\n};\n\n/**\n * checks if the playback can play a given `source`\n * If a mimeType is provided then this will be used instead of inferring the mimetype\n * from the source extension.\n * @method canPlay\n * @static\n * @param {String} source the given source ex: `http://example.com/play.mp4`\n * @param {String} [mimeType] the given mime type, ex: `'application/vnd.apple.mpegurl'`\n * @return {Boolean} `true` if the playback is playable, otherwise `false`\n */\nPlayback.canPlay = function (source, mimeType) {\n // eslint-disable-line no-unused-vars\n return false;\n};\n\n/**\n * a playback type for video on demand\n *\n * @property VOD\n * @static\n * @type String\n */\nPlayback.VOD = 'vod';\n/**\n * a playback type for audio on demand\n *\n * @property AOD\n * @static\n * @type String\n */\nPlayback.AOD = 'aod';\n/**\n * a playback type for live video\n *\n * @property LIVE\n * @static\n * @type String\n */\nPlayback.LIVE = 'live';\n/**\n * a default playback type\n *\n * @property NO_OP\n * @static\n * @type String\n */\nPlayback.NO_OP = 'no_op';\n/**\n * the plugin type\n *\n * @property type\n * @static\n * @type String\n */\nPlayback.type = 'playback';\nmodule.exports = exports['default'];\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 _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = __webpack_require__(5);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @class BaseObject\n * @constructor\n * @extends Events\n * @module base\n */\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar BaseObject = function (_Events) {\n (0, _inherits3.default)(BaseObject, _Events);\n (0, _createClass3.default)(BaseObject, [{\n key: 'options',\n\n /**\n * returns the object options\n * @property options\n * @type Object\n */\n get: function get() {\n return this._options;\n }\n\n /**\n * @method constructor\n * @param {Object} options\n */\n\n }]);\n\n function BaseObject() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, _classCallCheck3.default)(this, BaseObject);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _Events.call(this, options));\n\n _this._options = options;\n _this.uniqueId = (0, _utils.uniqueId)('o');\n return _this;\n }\n /**\n * a unique id prefixed with `'o'`, `o1, o232`\n *\n * @property uniqueId\n * @type String\n */\n\n\n return BaseObject;\n}(_events2.default);\n\nexports.default = BaseObject;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(16)\n , core = __webpack_require__(8)\n , ctx = __webpack_require__(43)\n , hide = __webpack_require__(24)\n , PROTOTYPE = 'prototype';\n\nvar $export = function(type, name, source){\n var IS_FORCED = type & $export.F\n , IS_GLOBAL = type & $export.G\n , IS_STATIC = type & $export.S\n , IS_PROTO = type & $export.P\n , IS_BIND = type & $export.B\n , IS_WRAP = type & $export.W\n , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n , expProto = exports[PROTOTYPE]\n , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]\n , key, own, out;\n if(IS_GLOBAL)source = name;\n for(key in source){\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if(own && key in exports)continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C){\n var F = function(a, b, c){\n if(this instanceof C){\n switch(arguments.length){\n case 0: return new C;\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if(IS_PROTO){\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library` \nmodule.exports = $export;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(25)\n , IE8_DOM_DEFINE = __webpack_require__(64)\n , toPrimitive = __webpack_require__(44)\n , dP = Object.defineProperty;\n\nexports.f = __webpack_require__(20) ? Object.defineProperty : function defineProperty(O, P, Attributes){\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if(IE8_DOM_DEFINE)try {\n return dP(O, P, Attributes);\n } catch(e){ /* empty */ }\n if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n if('value' in Attributes)O[P] = Attributes.value;\n return O;\n};\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(67)\n , defined = __webpack_require__(46);\nmodule.exports = function(it){\n return IObject(defined(it));\n};\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\nvar _assign = __webpack_require__(11);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _log = __webpack_require__(32);\n\nvar _log2 = _interopRequireDefault(_log);\n\nvar _error = __webpack_require__(33);\n\nvar _error2 = _interopRequireDefault(_error);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ErrorMixin = {\n /**\n * creates an error.\n * @method createError\n * @param {Object} error should be an object with code, description, level and raw error.\n * @return {Object} Object with formatted error data including origin and scope\n */\n createError: function createError(error) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { useCodePrefix: true };\n\n var scope = this.constructor && this.constructor.type || '';\n var origin = this.name || scope;\n var i18n = this.i18n || this.core && this.core.i18n || this.container && this.container.i18n;\n\n var prefixedCode = origin + ':' + (error && error.code || 'unknown');\n var defaultError = {\n description: '',\n level: _error2.default.Levels.FATAL,\n origin: origin,\n scope: scope,\n raw: {}\n };\n\n var errorData = (0, _assign2.default)({}, defaultError, error, {\n code: options.useCodePrefix ? prefixedCode : error.code\n });\n\n if (i18n && errorData.level == _error2.default.Levels.FATAL && !errorData.UI) {\n var defaultUI = {\n title: i18n.t('default_error_title'),\n message: i18n.t('default_error_message')\n };\n errorData.UI = defaultUI;\n }\n\n if (this.playerError) this.playerError.createError(errorData);else _log2.default.warn(origin, 'PlayerError is not defined. Error: ', errorData);\n\n return errorData;\n }\n};\n\nexports.default = ErrorMixin;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(26)(function(){\n return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function(it, key){\n return hasOwnProperty.call(it, key);\n};\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 _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _clapprZepto = __webpack_require__(6);\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nvar _utils = __webpack_require__(5);\n\nvar _base_object = __webpack_require__(14);\n\nvar _base_object2 = _interopRequireDefault(_base_object);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n/**\n * A base class to create ui object.\n * @class UIObject\n * @constructor\n * @extends BaseObject\n * @module base\n */\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar UIObject = function (_BaseObject) {\n (0, _inherits3.default)(UIObject, _BaseObject);\n (0, _createClass3.default)(UIObject, [{\n key: 'tagName',\n\n /**\n * a unique id prefixed with `'c'`, `c1, c232`\n *\n * @property cid\n * @type String\n */\n /**\n * the dom element itself\n *\n * @property el\n * @type HTMLElement\n */\n /**\n * the dom element wrapped by `$`\n *\n * @property $el\n * @type HTMLElement\n */\n\n /**\n * gets the tag name for the ui component\n * @method tagName\n * @default div\n * @return {String} tag's name\n */\n get: function get() {\n return 'div';\n }\n /**\n * a literal object mapping element's events to methods\n * @property events\n * @type Object\n * @example\n *\n *```javascript\n *\n * class MyButton extends UIObject {\n * constructor(options) {\n * super(options)\n * this.myId = 0\n * }\n * get events() { return { 'click': 'myClick' } }\n * myClick(){ this.myId = 42 }\n * }\n *\n * // when you click on MyButton the method `myClick` will be called\n *```\n */\n\n }, {\n key: 'events',\n get: function get() {\n return {};\n }\n /**\n * a literal object mapping attributes and values to the element\n * element's attribute name and the value the attribute value\n * @property attributes\n * @type Object\n * @example\n *\n *```javascript\n *\n * class MyButton extends UIObject {\n * constructor(options) { super(options) }\n * get attributes() { return { class: 'my-button'} }\n * }\n *\n * // MyButton.el.className will be 'my-button'\n * ```\n */\n\n }, {\n key: 'attributes',\n get: function get() {\n return {};\n }\n\n /**\n * it builds an ui component by:\n * * creating an id for the component `cid`\n * * making sure the element is created `$el`\n * * delegating all `events` to the element\n * @method constructor\n * @param {Object} options the options object\n */\n\n }]);\n\n function UIObject(options) {\n (0, _classCallCheck3.default)(this, UIObject);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _BaseObject.call(this, options));\n\n _this.cid = (0, _utils.uniqueId)('c');\n _this._ensureElement();\n _this.delegateEvents();\n return _this;\n }\n\n /**\n * selects within the component.\n * @method $\n * @param {String} selector a selector to find within the component.\n * @return {HTMLElement} an element, if it exists.\n * @example\n * ```javascript\n * fullScreenBarUIComponent.$('.button-full') //will return only `.button-full` within the component\n * ```\n */\n\n\n UIObject.prototype.$ = function $(selector) {\n return this.$el.find(selector);\n };\n\n /**\n * render the component, usually attach it to a real existent `element`\n * @method render\n * @return {UIObject} itself\n */\n\n\n UIObject.prototype.render = function render() {\n return this;\n };\n\n /**\n * removes the ui component from DOM\n * @method remove\n * @return {UIObject} itself\n */\n\n\n UIObject.prototype.remove = function remove() {\n this.$el.remove();\n this.stopListening();\n this.undelegateEvents();\n return this;\n };\n\n /**\n * set element to `el` and `$el`\n * @method setElement\n * @param {HTMLElement} element\n * @param {Boolean} delegate whether is delegate or not\n * @return {UIObject} itself\n */\n\n\n UIObject.prototype.setElement = function setElement(element, delegate) {\n if (this.$el) this.undelegateEvents();\n this.$el = _clapprZepto2.default.zepto.isZ(element) ? element : (0, _clapprZepto2.default)(element);\n this.el = this.$el[0];\n if (delegate !== false) this.delegateEvents();\n return this;\n };\n\n /**\n * delegates all the original `events` on `element` to its callbacks\n * @method delegateEvents\n * @param {Object} events\n * @return {UIObject} itself\n */\n\n\n UIObject.prototype.delegateEvents = function delegateEvents(events) {\n if (!(events || (events = this.events))) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (method && method.constructor !== Function) method = this[events[key]];\n if (!method) continue;\n\n var match = key.match(delegateEventSplitter);\n var eventName = match[1],\n selector = match[2];\n eventName += '.delegateEvents' + this.cid;\n if (selector === '') this.$el.on(eventName, method.bind(this));else this.$el.on(eventName, selector, method.bind(this));\n }\n return this;\n };\n\n /**\n * undelegats all the `events`\n * @method undelegateEvents\n * @return {UIObject} itself\n */\n\n\n UIObject.prototype.undelegateEvents = function undelegateEvents() {\n this.$el.off('.delegateEvents' + this.cid);\n return this;\n };\n\n /**\n * ensures the creation of this ui component\n * @method _ensureElement\n * @private\n */\n\n\n UIObject.prototype._ensureElement = function _ensureElement() {\n if (!this.el) {\n var attrs = _clapprZepto2.default.extend({}, this.attributes);\n if (this.id) attrs.id = this.id;\n if (this.className) attrs['class'] = this.className;\n var $el = _utils.DomRecycler.create(this.tagName).attr(attrs);\n this.setElement($el, false);\n } else {\n this.setElement(this.el, false);\n }\n };\n\n return UIObject;\n}(_base_object2.default);\n\nexports.default = UIObject;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = void 0;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(17)\n , createDesc = __webpack_require__(30);\nmodule.exports = __webpack_require__(20) ? function(object, key, value){\n return dP.f(object, key, createDesc(1, value));\n} : function(object, key, value){\n object[key] = value;\n return object;\n};\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(29);\nmodule.exports = function(it){\n if(!isObject(it))throw TypeError(it + ' is not an object!');\n return it;\n};\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(exec){\n try {\n return !!exec();\n } catch(e){\n return true;\n }\n};\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(66)\n , enumBugKeys = __webpack_require__(50);\n\nmodule.exports = Object.keys || function keys(O){\n return $keys(O, enumBugKeys);\n};\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 _browser = __webpack_require__(140);\n\nvar _browser2 = _interopRequireDefault(_browser);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _browser2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(it){\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n};\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _log = __webpack_require__(144);\n\nvar _log2 = _interopRequireDefault(_log);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _log2.default;\nmodule.exports = exports['default'];\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 _error = __webpack_require__(78);\n\nvar _error2 = _interopRequireDefault(_error);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _error2.default;\nmodule.exports = exports['default'];\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 _assign = __webpack_require__(11);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = __webpack_require__(5);\n\nvar _ui_object = __webpack_require__(22);\n\nvar _ui_object2 = _interopRequireDefault(_ui_object);\n\nvar _error_mixin = __webpack_require__(19);\n\nvar _error_mixin2 = _interopRequireDefault(_error_mixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar UICorePlugin = function (_UIObject) {\n (0, _inherits3.default)(UICorePlugin, _UIObject);\n (0, _createClass3.default)(UICorePlugin, [{\n key: 'playerError',\n get: function get() {\n return this.core.playerError;\n }\n }]);\n\n function UICorePlugin(core) {\n (0, _classCallCheck3.default)(this, UICorePlugin);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _UIObject.call(this, core.options));\n\n _this.core = core;\n _this.enabled = true;\n _this.bindEvents();\n _this.render();\n return _this;\n }\n\n UICorePlugin.prototype.bindEvents = function bindEvents() {};\n\n UICorePlugin.prototype.getExternalInterface = function getExternalInterface() {\n return {};\n };\n\n UICorePlugin.prototype.enable = function enable() {\n if (!this.enabled) {\n this.bindEvents();\n this.$el.show();\n this.enabled = true;\n }\n };\n\n UICorePlugin.prototype.disable = function disable() {\n this.stopListening();\n this.$el.hide();\n this.enabled = false;\n };\n\n UICorePlugin.prototype.destroy = function destroy() {\n this.remove();\n };\n\n UICorePlugin.prototype.render = function render() {\n return this;\n };\n\n return UICorePlugin;\n}(_ui_object2.default);\n\nexports.default = UICorePlugin;\n\n\n(0, _assign2.default)(UICorePlugin.prototype, _error_mixin2.default);\n\nUICorePlugin.extend = function (properties) {\n return (0, _utils.extend)(UICorePlugin, properties);\n};\n\nUICorePlugin.type = 'core';\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = __webpack_require__(11);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = __webpack_require__(5);\n\nvar _base_object = __webpack_require__(14);\n\nvar _base_object2 = _interopRequireDefault(_base_object);\n\nvar _error_mixin = __webpack_require__(19);\n\nvar _error_mixin2 = _interopRequireDefault(_error_mixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CorePlugin = function (_BaseObject) {\n (0, _inherits3.default)(CorePlugin, _BaseObject);\n (0, _createClass3.default)(CorePlugin, [{\n key: 'playerError',\n get: function get() {\n return this.core.playerError;\n }\n }]);\n\n function CorePlugin(core) {\n (0, _classCallCheck3.default)(this, CorePlugin);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _BaseObject.call(this, core.options));\n\n _this.core = core;\n _this.enabled = true;\n _this.bindEvents();\n return _this;\n }\n\n CorePlugin.prototype.bindEvents = function bindEvents() {};\n\n CorePlugin.prototype.enable = function enable() {\n if (!this.enabled) {\n this.bindEvents();\n this.enabled = true;\n }\n };\n\n CorePlugin.prototype.disable = function disable() {\n if (this.enabled) {\n this.stopListening();\n this.enabled = false;\n }\n };\n\n CorePlugin.prototype.getExternalInterface = function getExternalInterface() {\n return {};\n };\n\n CorePlugin.prototype.destroy = function destroy() {\n this.stopListening();\n };\n\n return CorePlugin;\n}(_base_object2.default);\n\nexports.default = CorePlugin;\n\n\n(0, _assign2.default)(CorePlugin.prototype, _error_mixin2.default);\n\nCorePlugin.extend = function (properties) {\n return (0, _utils.extend)(CorePlugin, properties);\n};\n\nCorePlugin.type = 'core';\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports) {\n\nvar id = 0\n , px = Math.random();\nmodule.exports = function(key){\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(46);\nmodule.exports = function(it){\n return Object(defined(it));\n};\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(106);\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(117);\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};\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 _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar PlayerInfo = function PlayerInfo() {\n (0, _classCallCheck3.default)(this, PlayerInfo);\n\n this.options = {};\n this.playbackPlugins = [];\n this.currentSize = { width: 0, height: 0 };\n};\n\nPlayerInfo._players = {};\n\nPlayerInfo.getInstance = function (playerId) {\n return PlayerInfo._players[playerId] || (PlayerInfo._players[playerId] = new PlayerInfo());\n};\n\nexports.default = PlayerInfo;\nmodule.exports = exports[\"default\"];\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 _assign = __webpack_require__(11);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = __webpack_require__(5);\n\nvar _ui_object = __webpack_require__(22);\n\nvar _ui_object2 = _interopRequireDefault(_ui_object);\n\nvar _error_mixin = __webpack_require__(19);\n\nvar _error_mixin2 = _interopRequireDefault(_error_mixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The base class for an ui container plugin\n * @class UIContainerPlugin\n * @constructor\n * @extends UIObject\n * @module base\n */\nvar UIContainerPlugin = function (_UIObject) {\n (0, _inherits3.default)(UIContainerPlugin, _UIObject);\n (0, _createClass3.default)(UIContainerPlugin, [{\n key: 'playerError',\n get: function get() {\n return this.container.playerError;\n }\n }]);\n\n function UIContainerPlugin(container) {\n (0, _classCallCheck3.default)(this, UIContainerPlugin);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _UIObject.call(this, container.options));\n\n _this.container = container;\n _this.enabled = true;\n _this.bindEvents();\n return _this;\n }\n\n UIContainerPlugin.prototype.enable = function enable() {\n if (!this.enabled) {\n this.bindEvents();\n this.$el.show();\n this.enabled = true;\n }\n };\n\n UIContainerPlugin.prototype.disable = function disable() {\n this.stopListening();\n this.$el.hide();\n this.enabled = false;\n };\n\n UIContainerPlugin.prototype.bindEvents = function bindEvents() {};\n\n UIContainerPlugin.prototype.destroy = function destroy() {\n this.remove();\n };\n\n return UIContainerPlugin;\n}(_ui_object2.default); // Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexports.default = UIContainerPlugin;\n\n\n(0, _assign2.default)(UIContainerPlugin.prototype, _error_mixin2.default);\n\nUIContainerPlugin.extend = function (properties) {\n return (0, _utils.extend)(UIContainerPlugin, properties);\n};\n\nUIContainerPlugin.type = 'container';\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = __webpack_require__(11);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _base_object = __webpack_require__(14);\n\nvar _base_object2 = _interopRequireDefault(_base_object);\n\nvar _utils = __webpack_require__(5);\n\nvar _error_mixin = __webpack_require__(19);\n\nvar _error_mixin2 = _interopRequireDefault(_error_mixin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The base class for a container plugin\n * @class ContainerPlugin\n * @constructor\n * @extends UIObject\n * @module base\n */\nvar ContainerPlugin = function (_BaseObject) {\n (0, _inherits3.default)(ContainerPlugin, _BaseObject);\n (0, _createClass3.default)(ContainerPlugin, [{\n key: 'playerError',\n get: function get() {\n return this.container.playerError;\n }\n }]);\n\n function ContainerPlugin(container) {\n (0, _classCallCheck3.default)(this, ContainerPlugin);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _BaseObject.call(this, container.options));\n\n _this.container = container;\n _this.enabled = true;\n _this.bindEvents();\n return _this;\n }\n\n ContainerPlugin.prototype.enable = function enable() {\n if (!this.enabled) {\n this.bindEvents();\n this.enabled = true;\n }\n };\n\n ContainerPlugin.prototype.disable = function disable() {\n if (this.enabled) {\n this.stopListening();\n this.enabled = false;\n }\n };\n\n ContainerPlugin.prototype.bindEvents = function bindEvents() {};\n\n ContainerPlugin.prototype.destroy = function destroy() {\n this.stopListening();\n };\n\n return ContainerPlugin;\n}(_base_object2.default);\n\nexports.default = ContainerPlugin;\n\n\n(0, _assign2.default)(ContainerPlugin.prototype, _error_mixin2.default);\n\nContainerPlugin.extend = function (properties) {\n return (0, _utils.extend)(ContainerPlugin, properties);\n};\n\nContainerPlugin.type = 'container';\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(100);\nmodule.exports = function(fn, that, length){\n aFunction(fn);\n if(that === undefined)return fn;\n switch(length){\n case 1: return function(a){\n return fn.call(that, a);\n };\n case 2: return function(a, b){\n return fn.call(that, a, b);\n };\n case 3: return function(a, b, c){\n return fn.call(that, a, b, c);\n };\n }\n return function(/* ...args */){\n return fn.apply(that, arguments);\n };\n};\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(29);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function(it, S){\n if(!isObject(it))return it;\n var fn, val;\n if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function(it){\n return toString.call(it).slice(8, -1);\n};\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function(it){\n if(it == undefined)throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil\n , floor = Math.floor;\nmodule.exports = function(it){\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(49)('keys')\n , uid = __webpack_require__(36);\nmodule.exports = function(key){\n return shared[key] || (shared[key] = uid(key));\n};\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(16)\n , SHARED = '__core-js_shared__'\n , store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function(key){\n return store[key] || (store[key] = {});\n};\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(104), __esModule: true };\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nmodule.exports = true;\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(25)\n , dPs = __webpack_require__(110)\n , enumBugKeys = __webpack_require__(50)\n , IE_PROTO = __webpack_require__(48)('IE_PROTO')\n , Empty = function(){ /* empty */ }\n , PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function(){\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(65)('iframe')\n , i = enumBugKeys.length\n , lt = '<'\n , gt = '>'\n , iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(111).appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties){\n var result;\n if(O !== null){\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty;\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(17).f\n , has = __webpack_require__(21)\n , TAG = __webpack_require__(12)('toStringTag');\n\nmodule.exports = function(it, tag, stat){\n if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});\n};\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports.f = __webpack_require__(12);\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(16)\n , core = __webpack_require__(8)\n , LIBRARY = __webpack_require__(53)\n , wksExt = __webpack_require__(56)\n , defineProperty = __webpack_require__(17).f;\nmodule.exports = function(name){\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)});\n};\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pIE = __webpack_require__(37)\n , createDesc = __webpack_require__(30)\n , toIObject = __webpack_require__(18)\n , toPrimitive = __webpack_require__(44)\n , has = __webpack_require__(21)\n , IE8_DOM_DEFINE = __webpack_require__(64)\n , gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(20) ? gOPD : function getOwnPropertyDescriptor(O, P){\n O = toIObject(O);\n P = toPrimitive(P, true);\n if(IE8_DOM_DEFINE)try {\n return gOPD(O, P);\n } catch(e){ /* empty */ }\n if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _kibo = __webpack_require__(145);\n\nvar _kibo2 = _interopRequireDefault(_kibo);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = { Kibo: _kibo2.default };\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar events = new _events2.default(); // Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/**\n * The mediator is a singleton for handling global events.\n */\n\nvar Mediator = function Mediator() {\n (0, _classCallCheck3.default)(this, Mediator);\n};\n\nexports.default = Mediator;\n\n\nMediator.on = function (name, callback, context) {\n events.on(name, callback, context);\n return;\n};\n\nMediator.once = function (name, callback, context) {\n events.once(name, callback, context);\n return;\n};\n\nMediator.off = function (name, callback, context) {\n events.off(name, callback, context);\n return;\n};\n\nMediator.trigger = function (name) {\n for (var _len = arguments.length, opts = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n opts[_key - 1] = arguments[_key];\n }\n\n events.trigger.apply(events, [name].concat(opts));\n return;\n};\n\nMediator.stopListening = function (obj, name, callback) {\n events.stopListening(obj, name, callback);\n return;\n};\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><path fill=\\\"#010101\\\" d=\\\"M1.425.35L14.575 8l-13.15 7.65V.35z\\\"></path></svg>\"\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _html5_video = __webpack_require__(180);\n\nvar _html5_video2 = _interopRequireDefault(_html5_video);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _html5_video2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(20) && !__webpack_require__(26)(function(){\n return Object.defineProperty(__webpack_require__(65)('div'), 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(29)\n , document = __webpack_require__(16).document\n // in old IE typeof document.createElement is 'object'\n , is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it){\n return is ? document.createElement(it) : {};\n};\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(21)\n , toIObject = __webpack_require__(18)\n , arrayIndexOf = __webpack_require__(102)(false)\n , IE_PROTO = __webpack_require__(48)('IE_PROTO');\n\nmodule.exports = function(object, names){\n var O = toIObject(object)\n , i = 0\n , result = []\n , key;\n for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while(names.length > i)if(has(O, key = names[i++])){\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(45);\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(47)\n , min = Math.min;\nmodule.exports = function(it){\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(15)\n , core = __webpack_require__(8)\n , fails = __webpack_require__(26);\nmodule.exports = function(KEY, exec){\n var fn = (core.Object || {})[KEY] || Object[KEY]\n , exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);\n};\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $at = __webpack_require__(108)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(71)(String, 'String', function(iterated){\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function(){\n var O = this._t\n , index = this._i\n , point;\n if(index >= O.length)return {value: undefined, done: true};\n point = $at(O, index);\n this._i += point.length;\n return {value: point, done: false};\n});\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(53)\n , $export = __webpack_require__(15)\n , redefine = __webpack_require__(72)\n , hide = __webpack_require__(24)\n , has = __webpack_require__(21)\n , Iterators = __webpack_require__(31)\n , $iterCreate = __webpack_require__(109)\n , setToStringTag = __webpack_require__(55)\n , getPrototypeOf = __webpack_require__(112)\n , ITERATOR = __webpack_require__(12)('iterator')\n , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`\n , FF_ITERATOR = '@@iterator'\n , KEYS = 'keys'\n , VALUES = 'values';\n\nvar returnThis = function(){ return this; };\n\nmodule.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){\n $iterCreate(Constructor, NAME, next);\n var getMethod = function(kind){\n if(!BUGGY && kind in proto)return proto[kind];\n switch(kind){\n case KEYS: return function keys(){ return new Constructor(this, kind); };\n case VALUES: return function values(){ return new Constructor(this, kind); };\n } return function entries(){ return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator'\n , DEF_VALUES = DEFAULT == VALUES\n , VALUES_BUG = false\n , proto = Base.prototype\n , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]\n , $default = $native || getMethod(DEFAULT)\n , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined\n , $anyNative = NAME == 'Array' ? proto.entries || $native : $native\n , methods, key, IteratorPrototype;\n // Fix native\n if($anyNative){\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base));\n if(IteratorPrototype !== Object.prototype){\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if(DEF_VALUES && $native && $native.name !== VALUES){\n VALUES_BUG = true;\n $default = function values(){ return $native.call(this); };\n }\n // Define iterator\n if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if(DEFAULT){\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if(FORCED)for(key in methods){\n if(!(key in proto))redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(24);\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(66)\n , hiddenKeys = __webpack_require__(50).concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){\n return $keys(O, hiddenKeys);\n};\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(128), __esModule: true };\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(134), __esModule: true };\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _core = __webpack_require__(148);\n\nvar _core2 = _interopRequireDefault(_core);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _core2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _container = __webpack_require__(151);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _container2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _base_object = __webpack_require__(14);\n\nvar _base_object2 = _interopRequireDefault(_base_object);\n\nvar _log = __webpack_require__(32);\n\nvar _log2 = _interopRequireDefault(_log);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The PlayerError is responsible to receive and propagate errors.\n * @class PlayerError\n * @constructor\n * @extends BaseObject\n * @module components\n */\nvar PlayerError = function (_BaseObject) {\n (0, _inherits3.default)(PlayerError, _BaseObject);\n (0, _createClass3.default)(PlayerError, [{\n key: 'name',\n get: function get() {\n return 'error';\n }\n\n /**\n * @property Levels\n * @type {Object} object with error levels\n */\n\n }], [{\n key: 'Levels',\n get: function get() {\n return {\n FATAL: 'FATAL',\n WARN: 'WARN',\n INFO: 'INFO'\n };\n }\n }]);\n\n function PlayerError() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var core = arguments[1];\n (0, _classCallCheck3.default)(this, PlayerError);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _BaseObject.call(this, options));\n\n _this.core = core;\n return _this;\n }\n\n /**\n * creates and trigger an error.\n * @method createError\n * @param {Object} err should be an object with code, description, level, origin, scope and raw error.\n */\n\n\n PlayerError.prototype.createError = function createError(err) {\n if (!this.core) {\n _log2.default.warn(this.name, 'Core is not set. Error: ', err);\n return;\n }\n this.core.trigger(_events2.default.ERROR, err);\n };\n\n return PlayerError;\n}(_base_object2.default);\n\nexports.default = PlayerError;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _media_control = __webpack_require__(155);\n\nvar _media_control2 = _interopRequireDefault(_media_control);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _media_control2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports) {\n\nmodule.exports = function escape(url) {\n if (typeof url !== 'string') {\n return url\n }\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]/.test(url)) {\n return '\"' + url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n') + '\"'\n }\n\n return url\n}\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<%=baseUrl%>/a8c874b93b3d848f39a71260c57e3863.cur\";\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#010101\\\" d=\\\"M1.712 14.76H6.43V1.24H1.71v13.52zm7.86-13.52v13.52h4.716V1.24H9.573z\\\"></path></svg>\"\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _clapprZepto = __webpack_require__(6);\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nvar _template = __webpack_require__(10);\n\nvar _template2 = _interopRequireDefault(_template);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar Styler = {\n getStyleFor: function getStyleFor(style) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { baseUrl: '' };\n\n return (0, _clapprZepto2.default)('<style class=\"clappr-style\"></style>').html((0, _template2.default)(style.toString())(options));\n }\n};\n\nexports.default = Styler;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _loader = __webpack_require__(171);\n\nvar _loader2 = _interopRequireDefault(_loader);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _loader2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _from = __webpack_require__(86);\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(172), __esModule: true };\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _html5_audio = __webpack_require__(184);\n\nvar _html5_audio2 = _interopRequireDefault(_html5_audio);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _html5_audio2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _html_img = __webpack_require__(185);\n\nvar _html_img2 = _interopRequireDefault(_html_img);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _html_img2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _no_op = __webpack_require__(188);\n\nvar _no_op2 = _interopRequireDefault(_no_op);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _no_op2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _spinner_three_bounce = __webpack_require__(192);\n\nvar _spinner_three_bounce2 = _interopRequireDefault(_spinner_three_bounce);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _spinner_three_bounce2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _watermark = __webpack_require__(198);\n\nvar _watermark2 = _interopRequireDefault(_watermark);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _watermark2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _poster = __webpack_require__(202);\n\nvar _poster2 = _interopRequireDefault(_poster);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _poster2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _click_to_pause = __webpack_require__(208);\n\nvar _click_to_pause2 = _interopRequireDefault(_click_to_pause);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _click_to_pause2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dvr_controls = __webpack_require__(209);\n\nvar _dvr_controls2 = _interopRequireDefault(_dvr_controls);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _dvr_controls2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _favicon = __webpack_require__(219);\n\nvar _favicon2 = _interopRequireDefault(_favicon);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _favicon2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _player = __webpack_require__(97);\n\nvar _player2 = _interopRequireDefault(_player);\n\nvar _utils = __webpack_require__(5);\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _playback = __webpack_require__(13);\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nvar _container_plugin = __webpack_require__(42);\n\nvar _container_plugin2 = _interopRequireDefault(_container_plugin);\n\nvar _core_plugin = __webpack_require__(35);\n\nvar _core_plugin2 = _interopRequireDefault(_core_plugin);\n\nvar _ui_core_plugin = __webpack_require__(34);\n\nvar _ui_core_plugin2 = _interopRequireDefault(_ui_core_plugin);\n\nvar _ui_container_plugin = __webpack_require__(41);\n\nvar _ui_container_plugin2 = _interopRequireDefault(_ui_container_plugin);\n\nvar _base_object = __webpack_require__(14);\n\nvar _base_object2 = _interopRequireDefault(_base_object);\n\nvar _ui_object = __webpack_require__(22);\n\nvar _ui_object2 = _interopRequireDefault(_ui_object);\n\nvar _browser = __webpack_require__(28);\n\nvar _browser2 = _interopRequireDefault(_browser);\n\nvar _container = __webpack_require__(77);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _core = __webpack_require__(76);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _error = __webpack_require__(33);\n\nvar _error2 = _interopRequireDefault(_error);\n\nvar _loader = __webpack_require__(84);\n\nvar _loader2 = _interopRequireDefault(_loader);\n\nvar _mediator = __webpack_require__(61);\n\nvar _mediator2 = _interopRequireDefault(_mediator);\n\nvar _media_control = __webpack_require__(79);\n\nvar _media_control2 = _interopRequireDefault(_media_control);\n\nvar _player_info = __webpack_require__(40);\n\nvar _player_info2 = _interopRequireDefault(_player_info);\n\nvar _base_flash_playback = __webpack_require__(23);\n\nvar _base_flash_playback2 = _interopRequireDefault(_base_flash_playback);\n\nvar _flash = __webpack_require__(23);\n\nvar _flash2 = _interopRequireDefault(_flash);\n\nvar _flashls = __webpack_require__(23);\n\nvar _flashls2 = _interopRequireDefault(_flashls);\n\nvar _hls = __webpack_require__(23);\n\nvar _hls2 = _interopRequireDefault(_hls);\n\nvar _html5_audio = __webpack_require__(87);\n\nvar _html5_audio2 = _interopRequireDefault(_html5_audio);\n\nvar _html5_video = __webpack_require__(63);\n\nvar _html5_video2 = _interopRequireDefault(_html5_video);\n\nvar _html_img = __webpack_require__(88);\n\nvar _html_img2 = _interopRequireDefault(_html_img);\n\nvar _no_op = __webpack_require__(89);\n\nvar _no_op2 = _interopRequireDefault(_no_op);\n\nvar _click_to_pause = __webpack_require__(93);\n\nvar _click_to_pause2 = _interopRequireDefault(_click_to_pause);\n\nvar _dvr_controls = __webpack_require__(94);\n\nvar _dvr_controls2 = _interopRequireDefault(_dvr_controls);\n\nvar _favicon = __webpack_require__(95);\n\nvar _favicon2 = _interopRequireDefault(_favicon);\n\nvar _log = __webpack_require__(32);\n\nvar _log2 = _interopRequireDefault(_log);\n\nvar _poster = __webpack_require__(92);\n\nvar _poster2 = _interopRequireDefault(_poster);\n\nvar _spinner_three_bounce = __webpack_require__(90);\n\nvar _spinner_three_bounce2 = _interopRequireDefault(_spinner_three_bounce);\n\nvar _watermark = __webpack_require__(91);\n\nvar _watermark2 = _interopRequireDefault(_watermark);\n\nvar _styler = __webpack_require__(83);\n\nvar _styler2 = _interopRequireDefault(_styler);\n\nvar _vendor = __webpack_require__(59);\n\nvar _vendor2 = _interopRequireDefault(_vendor);\n\nvar _template = __webpack_require__(10);\n\nvar _template2 = _interopRequireDefault(_template);\n\nvar _clapprZepto = __webpack_require__(6);\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar version = \"0.2.100\"; // Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexports.default = {\n Player: _player2.default,\n Mediator: _mediator2.default,\n Events: _events2.default,\n Browser: _browser2.default,\n PlayerInfo: _player_info2.default,\n MediaControl: _media_control2.default,\n ContainerPlugin: _container_plugin2.default,\n UIContainerPlugin: _ui_container_plugin2.default,\n CorePlugin: _core_plugin2.default,\n UICorePlugin: _ui_core_plugin2.default,\n Playback: _playback2.default,\n Container: _container2.default,\n Core: _core2.default,\n PlayerError: _error2.default,\n Loader: _loader2.default,\n BaseObject: _base_object2.default,\n UIObject: _ui_object2.default,\n Utils: _utils2.default,\n BaseFlashPlayback: _base_flash_playback2.default,\n Flash: _flash2.default,\n FlasHLS: _flashls2.default,\n HLS: _hls2.default,\n HTML5Audio: _html5_audio2.default,\n HTML5Video: _html5_video2.default,\n HTMLImg: _html_img2.default,\n NoOp: _no_op2.default,\n ClickToPausePlugin: _click_to_pause2.default,\n DVRControls: _dvr_controls2.default,\n Favicon: _favicon2.default,\n Log: _log2.default,\n Poster: _poster2.default,\n SpinnerThreeBouncePlugin: _spinner_three_bounce2.default,\n WaterMarkPlugin: _watermark2.default,\n Styler: _styler2.default,\n Vendor: _vendor2.default,\n version: version,\n template: _template2.default,\n $: _clapprZepto2.default\n};\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = __webpack_require__(11);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _keys = __webpack_require__(52);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = __webpack_require__(5);\n\nvar _base_object = __webpack_require__(14);\n\nvar _base_object2 = _interopRequireDefault(_base_object);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _browser = __webpack_require__(28);\n\nvar _browser2 = _interopRequireDefault(_browser);\n\nvar _core_factory = __webpack_require__(146);\n\nvar _core_factory2 = _interopRequireDefault(_core_factory);\n\nvar _loader = __webpack_require__(84);\n\nvar _loader2 = _interopRequireDefault(_loader);\n\nvar _player_info = __webpack_require__(40);\n\nvar _player_info2 = _interopRequireDefault(_player_info);\n\nvar _error_mixin = __webpack_require__(19);\n\nvar _error_mixin2 = _interopRequireDefault(_error_mixin);\n\nvar _clapprZepto = __webpack_require__(6);\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar baseUrl = (0, _utils.currentScriptUrl)().replace(/\\/[^/]+$/, '');\n\n/**\n * @class Player\n * @constructor\n * @extends BaseObject\n * @module components\n * @example\n * ### Using the Player\n *\n * Add the following script on your HTML:\n * ```html\n * <head>\n * <script type=\"text/javascript\" src=\"http://cdn.clappr.io/latest/clappr.min.js\"></script>\n * </head>\n * ```\n * Now, create the player:\n * ```html\n * <body>\n * <div id=\"player\"></div>\n * <script>\n * var player = new Clappr.Player({source: \"http://your.video/here.mp4\", parentId: \"#player\"});\n * </script>\n * </body>\n * ```\n */\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar Player = function (_BaseObject) {\n (0, _inherits3.default)(Player, _BaseObject);\n (0, _createClass3.default)(Player, [{\n key: 'loader',\n set: function set(loader) {\n this._loader = loader;\n },\n get: function get() {\n if (!this._loader) this._loader = new _loader2.default(this.options.plugins || {}, this.options.playerId);\n\n return this._loader;\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n\n }, {\n key: 'ended',\n get: function get() {\n return this.core.mediaControl.container.ended;\n }\n\n /**\n * Determine if the playback is having to buffer in order for\n * playback to be smooth.\n * (i.e if a live stream is playing smoothly, this will be false)\n * @property buffering\n * @type Boolean\n */\n\n }, {\n key: 'buffering',\n get: function get() {\n return this.core.mediaControl.container.buffering;\n }\n\n /*\n * determine if the player is ready.\n * @property isReady\n * @type {Boolean} `true` if the player is ready. ie PLAYER_READY event has fired\n */\n\n }, {\n key: 'isReady',\n get: function get() {\n return !!this._ready;\n }\n\n /**\n * An events map that allows the user to add custom callbacks in player's options.\n * @property eventsMapping\n * @type {Object}\n */\n\n }, {\n key: 'eventsMapping',\n get: function get() {\n return {\n onReady: _events2.default.PLAYER_READY,\n onResize: _events2.default.PLAYER_RESIZE,\n onPlay: _events2.default.PLAYER_PLAY,\n onPause: _events2.default.PLAYER_PAUSE,\n onStop: _events2.default.PLAYER_STOP,\n onEnded: _events2.default.PLAYER_ENDED,\n onSeek: _events2.default.PLAYER_SEEK,\n onError: _events2.default.PLAYER_ERROR,\n onTimeUpdate: _events2.default.PLAYER_TIMEUPDATE,\n onVolumeUpdate: _events2.default.PLAYER_VOLUMEUPDATE,\n onSubtitleAvailable: _events2.default.PLAYER_SUBTITLE_AVAILABLE\n };\n }\n\n /**\n * @typedef {Object} PlaybackConfig\n * @prop {boolean} disableContextMenu\n * disables the context menu (right click) on the video element if a HTML5Video playback is used.\n * @prop {boolean} preload\n * video will be preloaded according to `preload` attribute options **default**: `'metadata'`\n * @prop {boolean} controls\n * enabled/disables displaying controls\n * @prop {boolean} crossOrigin\n * enables cross-origin capability for media-resources\n * @prop {boolean} playInline\n * enables in-line video elements\n * @prop {boolean} audioOnly\n * enforce audio-only playback (when possible)\n * @prop {Object} externalTracks\n * pass externaly loaded track to playback\n * @prop {Number} [maxBufferLength]\n * The default behavior for the **HLS playback** is to keep buffering indefinitely, even on VoD.\n * This replicates the behavior for progressive download, which continues buffering when pausing the video, thus making the video available for playback even on slow networks.\n * To change this behavior use `maxBufferLength` where **value is in seconds**.\n * @prop {Number} [maxBackBufferLength]\n * After how much distance of the playhead data should be pruned from the buffer (influences memory consumption\n * of adaptive media-engines like Hls.js or Shaka)\n * @prop {Number} [minBufferLength]\n * After how much data in the buffer at least we attempt to consume it (influences QoS-related behavior\n * of adaptive media-engines like Hls.js or Shaka). If this is too low, and the available bandwidth is varying a lot\n * and too close to the streamed bitrate, we may continuously hit under-runs.\n * @prop {Number} [initialBandwidthEstimate]\n * define an initial bandwidth \"guess\" (or previously stored/established value) for underlying adaptive-bitreate engines\n * of adaptive playback implementations, like Hls.js or Shaka\n * @prop {Number} [maxAdaptiveBitrate]\n * Limits the streamed bitrate (for adaptive media-engines in underlying playback implementations)\n * @prop {Object} [maxAdaptiveVideoDimensions]\n * Limits the video dimensions in adaptive media-engines. Should be a literal object with `height` and `width`.\n * @prop {Boolean}[enableAutomaticABR] **default**: `true`\n * Allows to enable/disable automatic bitrate switching in adaptive media-engines\n * @prop {String} [preferredTextLanguage] **default**: `'pt-BR'`\n * Allows to set a preferred text language, that may be enabled by the media-engine if available.\n * @prop {String} [preferredAudioLanguage] **default**: `'pt-BR'`\n * Allows to set a preferred audio language, that may be enabled by the media-engine if available.\n */\n\n /**\n * ## Player's constructor\n *\n * You might pass the options object to build the player.\n * ```javascript\n * var options = {source: \"http://example.com/video.mp4\", param1: \"val1\"};\n * var player = new Clappr.Player(options);\n * ```\n *\n * @method constructor\n * @param {Object} options Data\n * options to build a player instance\n * @param {Number} [options.width]\n * player's width **default**: `640`\n * @param {Number} [options.height]\n * player's height **default**: `360`\n * @param {String} [options.parentId]\n * the id of the element on the page that the player should be inserted into\n * @param {Object} [options.parent]\n * a reference to a dom element that the player should be inserted into\n * @param {String} [options.source]\n * The media source URL, or {source: <<source URL>>, mimeType: <<source mime type>>}\n * @param {Object} [options.sources]\n * An array of media source URL's, or an array of {source: <<source URL>>, mimeType: <<source mime type>>}\n * @param {Boolean} [options.autoPlay]\n * automatically play after page load **default**: `false`\n * @param {Boolean} [options.loop]\n * automatically replay after it ends **default**: `false`\n * @param {Boolean} [options.chromeless]\n * player acts in chromeless mode **default**: `false`\n * @param {Boolean} [options.allowUserInteraction]\n * whether or not the player should handle click events when in chromeless mode **default**: `false` on desktops browsers, `true` on mobile.\n * @param {Boolean} [options.disableKeyboardShortcuts]\n * disable keyboard shortcuts. **default**: `false`. `true` if `allowUserInteraction` is `false`.\n * @param {Boolean} [options.mute]\n * start the video muted **default**: `false`\n * @param {String} [options.mimeType]\n * add `mimeType: \"application/vnd.apple.mpegurl\"` if you need to use a url without extension.\n * @param {Boolean} [options.actualLiveTime]\n * show duration and seek time relative to actual time.\n * @param {String} [options.actualLiveServerTime]\n * specify server time as a string, format: \"2015/11/26 06:01:03\". This option is meant to be used with actualLiveTime.\n * @param {Boolean} [options.persistConfig]\n * persist player's settings (volume) through the same domain **default**: `true`\n * @param {String} [options.preload] @deprecated\n * video will be preloaded according to `preload` attribute options **default**: `'metadata'`\n * @param {Number} [options.maxBufferLength] @deprecated\n * the default behavior for the **HLS playback** is to keep buffering indefinitely, even on VoD.\n * This replicates the behavior for progressive download, which continues buffering when pausing the video, thus making the video available for playback even on slow networks.\n * To change this behavior use `maxBufferLength` where **value is in seconds**.\n * @param {String} [options.gaAccount]\n * enable Google Analytics events dispatch **(play/pause/stop/buffering/etc)** by adding your `gaAccount`\n * @param {String} [options.gaTrackerName]\n * besides `gaAccount` you can optionally, pass your favorite trackerName as `gaTrackerName`\n * @param {Object} [options.mediacontrol]\n * customize control bar colors, example: `mediacontrol: {seekbar: \"#E113D3\", buttons: \"#66B2FF\"}`\n * @param {Boolean} [options.hideMediaControl]\n * control media control auto hide **default**: `true`\n * @param {Boolean} [options.hideVolumeBar]\n * when embedded with width less than 320, volume bar will hide. You can force this behavior for all sizes by adding `true` **default**: `false`\n * @param {String} [options.watermark]\n * put `watermark: 'http://url/img.png'` on your embed parameters to automatically add watermark on your video.\n * You can customize corner position by defining position parameter. Positions can be `bottom-left`, `bottom-right`, `top-left` and `top-right`.\n * @param {String} [options.watermarkLink]\n * `watermarkLink: 'http://example.net/'` - define URL to open when the watermark is clicked. If not provided watermark will not be clickable.\n * @param {Boolean} [options.disableVideoTagContextMenu] @deprecated\n * disables the context menu (right click) on the video element if a HTML5Video playback is used.\n * @param {Boolean} [options.autoSeekFromUrl]\n * Automatically seek to the seconds provided in the url (e.g example.com?t=100) **default**: `true`\n * @param {Boolean} [options.exitFullscreenOnEnd]\n * Automatically exit full screen when the media finishes. **default**: `true`\n * @param {String} [options.poster]\n * define a poster by adding its address `poster: 'http://url/img.png'`. It will appear after video embed, disappear on play and go back when user stops the video.\n * @param {String} [options.playbackNotSupportedMessage]\n * define a custom message to be displayed when a playback is not supported.\n * @param {Object} [options.events]\n * Specify listeners which will be registered with their corresponding player events.\n * E.g. onReady -> \"PLAYER_READY\", onTimeUpdate -> \"PLAYER_TIMEUPDATE\"\n * @param {PlaybackConfig} [options.playback]\n * Generic `Playback` component related configuration\n * @param {Boolean} [options.disableErrorScreen]\n * disables the error screen plugin.\n * @param {Number} [options.autoPlayTimeout]\n * autoplay check timeout.\n */\n\n }]);\n\n function Player(options) {\n (0, _classCallCheck3.default)(this, Player);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _BaseObject.call(this, options));\n\n var defaultOptions = { playerId: (0, _utils.uniqueId)(''), persistConfig: true, width: 640, height: 360, baseUrl: baseUrl, allowUserInteraction: _browser2.default.isMobile };\n _this._options = _clapprZepto2.default.extend(defaultOptions, options);\n _this.options.sources = _this._normalizeSources(options);\n if (!_this.options.chromeless) {\n // \"allowUserInteraction\" cannot be false if not in chromeless mode.\n _this.options.allowUserInteraction = true;\n }\n if (!_this.options.allowUserInteraction) {\n // if user iteraction is not allowed ensure keyboard shortcuts are disabled\n _this.options.disableKeyboardShortcuts = true;\n }\n _this._registerOptionEventListeners(_this.options.events);\n _this._coreFactory = new _core_factory2.default(_this);\n _this.playerInfo = _player_info2.default.getInstance(_this.options.playerId);\n _this.playerInfo.currentSize = { width: options.width, height: options.height };\n _this.playerInfo.options = _this.options;\n if (_this.options.parentId) _this.setParentId(_this.options.parentId);else if (_this.options.parent) _this.attachTo(_this.options.parent);\n\n return _this;\n }\n\n /**\n * Specify a `parentId` to the player.\n * @method setParentId\n * @param {String} parentId the element parent id.\n * @return {Player} itself\n */\n\n\n Player.prototype.setParentId = function setParentId(parentId) {\n var el = document.querySelector(parentId);\n if (el) this.attachTo(el);\n\n return this;\n };\n\n /**\n * You can use this method to attach the player to a given element. You don't need to do this when you specify it during the player instantiation passing the `parentId` param.\n * @method attachTo\n * @param {Object} element a given element.\n * @return {Player} itself\n */\n\n\n Player.prototype.attachTo = function attachTo(element) {\n this.options.parentElement = element;\n this.core = this._coreFactory.create();\n this._addEventListeners();\n return this;\n };\n\n Player.prototype._addEventListeners = function _addEventListeners() {\n if (!this.core.isReady) this.listenToOnce(this.core, _events2.default.CORE_READY, this._onReady);else this._onReady();\n\n this.listenTo(this.core.mediaControl, _events2.default.MEDIACONTROL_CONTAINERCHANGED, this._containerChanged);\n this.listenTo(this.core, _events2.default.CORE_FULLSCREEN, this._onFullscreenChange);\n this.listenTo(this.core, _events2.default.CORE_RESIZE, this._onResize);\n return this;\n };\n\n Player.prototype._addContainerEventListeners = function _addContainerEventListeners() {\n var container = this.core.mediaControl.container;\n if (container) {\n this.listenTo(container, _events2.default.CONTAINER_PLAY, this._onPlay);\n this.listenTo(container, _events2.default.CONTAINER_PAUSE, this._onPause);\n this.listenTo(container, _events2.default.CONTAINER_STOP, this._onStop);\n this.listenTo(container, _events2.default.CONTAINER_ENDED, this._onEnded);\n this.listenTo(container, _events2.default.CONTAINER_SEEK, this._onSeek);\n this.listenTo(container, _events2.default.CONTAINER_ERROR, this._onError);\n this.listenTo(container, _events2.default.CONTAINER_TIMEUPDATE, this._onTimeUpdate);\n this.listenTo(container, _events2.default.CONTAINER_VOLUME, this._onVolumeUpdate);\n this.listenTo(container, _events2.default.CONTAINER_SUBTITLE_AVAILABLE, this._onSubtitleAvailable);\n }\n return this;\n };\n\n Player.prototype._registerOptionEventListeners = function _registerOptionEventListeners() {\n var _this2 = this;\n\n var newEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var hasNewEvents = (0, _keys2.default)(newEvents).length > 0;\n hasNewEvents && (0, _keys2.default)(events).forEach(function (userEvent) {\n var eventType = _this2.eventsMapping[userEvent];\n eventType && _this2.off(eventType, events[userEvent]);\n });\n\n (0, _keys2.default)(newEvents).forEach(function (userEvent) {\n var eventType = _this2.eventsMapping[userEvent];\n if (eventType) {\n var eventFunction = newEvents[userEvent];\n eventFunction = typeof eventFunction === 'function' && eventFunction;\n eventFunction && _this2.on(eventType, eventFunction);\n }\n });\n return this;\n };\n\n Player.prototype._containerChanged = function _containerChanged() {\n this.stopListening();\n this._addEventListeners();\n };\n\n Player.prototype._onReady = function _onReady() {\n this._ready = true;\n this._addContainerEventListeners();\n this.trigger(_events2.default.PLAYER_READY);\n };\n\n Player.prototype._onFullscreenChange = function _onFullscreenChange(fullscreen) {\n this.trigger(_events2.default.PLAYER_FULLSCREEN, fullscreen);\n };\n\n Player.prototype._onVolumeUpdate = function _onVolumeUpdate(volume) {\n this.trigger(_events2.default.PLAYER_VOLUMEUPDATE, volume);\n };\n\n Player.prototype._onSubtitleAvailable = function _onSubtitleAvailable() {\n this.trigger(_events2.default.PLAYER_SUBTITLE_AVAILABLE);\n };\n\n Player.prototype._onResize = function _onResize(size) {\n this.trigger(_events2.default.PLAYER_RESIZE, size);\n };\n\n Player.prototype._onPlay = function _onPlay() {\n this.trigger(_events2.default.PLAYER_PLAY);\n };\n\n Player.prototype._onPause = function _onPause() {\n this.trigger(_events2.default.PLAYER_PAUSE);\n };\n\n Player.prototype._onStop = function _onStop() {\n this.trigger(_events2.default.PLAYER_STOP, this.getCurrentTime());\n };\n\n Player.prototype._onEnded = function _onEnded() {\n this.trigger(_events2.default.PLAYER_ENDED);\n };\n\n Player.prototype._onSeek = function _onSeek(time) {\n this.trigger(_events2.default.PLAYER_SEEK, time);\n };\n\n Player.prototype._onTimeUpdate = function _onTimeUpdate(timeProgress) {\n this.trigger(_events2.default.PLAYER_TIMEUPDATE, timeProgress);\n };\n\n Player.prototype._onError = function _onError(error) {\n this.trigger(_events2.default.PLAYER_ERROR, error);\n };\n\n Player.prototype._normalizeSources = function _normalizeSources(options) {\n var sources = options.sources || (options.source !== undefined ? [options.source] : []);\n return sources.length === 0 ? [{ source: '', mimeType: '' }] : sources;\n };\n\n /**\n * resizes the current player canvas.\n * @method resize\n * @param {Object} size should be a literal object with `height` and `width`.\n * @return {Player} itself\n * @example\n * ```javascript\n * player.resize({height: 360, width: 640})\n * ```\n */\n\n\n Player.prototype.resize = function resize(size) {\n this.core.resize(size);\n return this;\n };\n\n /**\n * loads a new source.\n * @method load\n * @param {Array|String} sources source or sources of video.\n * An array item can be a string or {source: <<source URL>>, mimeType: <<source mime type>>}\n * @param {String} mimeType a mime type, example: `'application/vnd.apple.mpegurl'`\n * @param {Boolean} [autoPlay=false] whether playing should be started immediately\n * @return {Player} itself\n */\n\n\n Player.prototype.load = function load(sources, mimeType, autoPlay) {\n if (autoPlay !== undefined) this.configure({ autoPlay: !!autoPlay });\n\n this.core.load(sources, mimeType);\n return this;\n };\n\n /**\n * destroys the current player and removes it from the DOM.\n * @method destroy\n * @return {Player} itself\n */\n\n\n Player.prototype.destroy = function destroy() {\n this.stopListening();\n this.core.destroy();\n return this;\n };\n\n /**\n * Gives user consent to playback. Required by mobile device after a click event before Player.load().\n * @method consent\n * @return {Player} itself\n */\n\n\n Player.prototype.consent = function consent() {\n this.core.getCurrentPlayback().consent();\n return this;\n };\n\n /**\n * plays the current video (`source`).\n * @method play\n * @return {Player} itself\n */\n\n\n Player.prototype.play = function play() {\n this.core.mediaControl.container.play();\n return this;\n };\n\n /**\n * pauses the current video (`source`).\n * @method pause\n * @return {Player} itself\n */\n\n\n Player.prototype.pause = function pause() {\n this.core.mediaControl.container.pause();\n return this;\n };\n\n /**\n * stops the current video (`source`).\n * @method stop\n * @return {Player} itself\n */\n\n\n Player.prototype.stop = function stop() {\n this.core.mediaControl.container.stop();\n return this;\n };\n\n /**\n * seeks the current video (`source`). For example, `player.seek(120)` will seek to second 120 (2minutes) of the current video.\n * @method seek\n * @param {Number} time should be a number between 0 and the video duration.\n * @return {Player} itself\n */\n\n\n Player.prototype.seek = function seek(time) {\n this.core.mediaControl.container.seek(time);\n return this;\n };\n\n /**\n * seeks the current video (`source`). For example, `player.seek(50)` will seek to the middle of the current video.\n * @method seekPercentage\n * @param {Number} time should be a number between 0 and 100.\n * @return {Player} itself\n */\n\n\n Player.prototype.seekPercentage = function seekPercentage(percentage) {\n this.core.mediaControl.container.seekPercentage(percentage);\n return this;\n };\n\n /**\n * Set the volume for the current video (`source`).\n * @method setVolume\n * @param {Number} volume should be a number between 0 and 100, 0 being mute and 100 the max volume.\n * @return {Player} itself\n */\n\n\n Player.prototype.setVolume = function setVolume(volume) {\n if (this.core && this.core.mediaControl) this.core.mediaControl.setVolume(volume);\n\n return this;\n };\n\n /**\n * Get the volume for the current video\n * @method getVolume\n * @return {Number} volume should be a number between 0 and 100, 0 being mute and 100 the max volume.\n */\n\n\n Player.prototype.getVolume = function getVolume() {\n return this.core && this.core.mediaControl ? this.core.mediaControl.volume : 0;\n };\n\n /**\n * mutes the current video (`source`).\n * @method mute\n * @return {Player} itself\n */\n\n\n Player.prototype.mute = function mute() {\n this._mutedVolume = this.getVolume();\n this.setVolume(0);\n return this;\n };\n\n /**\n * unmutes the current video (`source`).\n * @method unmute\n * @return {Player} itself\n */\n\n\n Player.prototype.unmute = function unmute() {\n this.setVolume(typeof this._mutedVolume === 'number' ? this._mutedVolume : 100);\n this._mutedVolume = null;\n return this;\n };\n\n /**\n * checks if the player is playing.\n * @method isPlaying\n * @return {Boolean} `true` if the current source is playing, otherwise `false`\n */\n\n\n Player.prototype.isPlaying = function isPlaying() {\n return this.core.mediaControl.container.isPlaying();\n };\n\n /**\n * returns `true` if DVR is enable otherwise `false`.\n * @method isDvrEnabled\n * @return {Boolean}\n */\n\n\n Player.prototype.isDvrEnabled = function isDvrEnabled() {\n return this.core.mediaControl.container.isDvrEnabled();\n };\n\n /**\n * returns `true` if DVR is in use otherwise `false`.\n * @method isDvrInUse\n * @return {Boolean}\n */\n\n\n Player.prototype.isDvrInUse = function isDvrInUse() {\n return this.core.mediaControl.container.isDvrInUse();\n };\n\n /**\n * enables to configure a player after its creation\n * @method configure\n * @param {Object} options all the options to change in form of a javascript object\n * @return {Player} itself\n */\n\n\n Player.prototype.configure = function configure() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._registerOptionEventListeners(options.events, this.options.events);\n this.core.configure(options);\n return this;\n };\n\n /**\n * get a plugin by its name.\n * @method getPlugin\n * @param {String} name of the plugin.\n * @return {Object} the plugin instance\n * @example\n * ```javascript\n * var poster = player.getPlugin('poster');\n * poster.hidePlayButton();\n * ```\n */\n\n\n Player.prototype.getPlugin = function getPlugin(name) {\n var plugins = this.core.plugins.concat(this.core.mediaControl.container.plugins);\n return plugins.filter(function (plugin) {\n return plugin.name === name;\n })[0];\n };\n\n /**\n * the current time in seconds.\n * @method getCurrentTime\n * @return {Number} current time (in seconds) of the current source\n */\n\n\n Player.prototype.getCurrentTime = function getCurrentTime() {\n return this.core.mediaControl.container.getCurrentTime();\n };\n\n /**\n * The time that \"0\" now represents relative to when playback started.\n * For a stream with a sliding window this will increase as content is\n * removed from the beginning.\n * @method getStartTimeOffset\n * @return {Number} time (in seconds) that time \"0\" represents.\n */\n\n\n Player.prototype.getStartTimeOffset = function getStartTimeOffset() {\n return this.core.mediaControl.container.getStartTimeOffset();\n };\n\n /**\n * the duration time in seconds.\n * @method getDuration\n * @return {Number} duration time (in seconds) of the current source\n */\n\n\n Player.prototype.getDuration = function getDuration() {\n return this.core.mediaControl.container.getDuration();\n };\n\n return Player;\n}(_base_object2.default);\n\nexports.default = Player;\n\n\n(0, _assign2.default)(Player.prototype, _error_mixin2.default);\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(99);\nmodule.exports = __webpack_require__(8).Object.assign;\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(15);\n\n$export($export.S + $export.F, 'Object', {assign: __webpack_require__(101)});\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(it){\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n return it;\n};\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(27)\n , gOPS = __webpack_require__(51)\n , pIE = __webpack_require__(37)\n , toObject = __webpack_require__(38)\n , IObject = __webpack_require__(67)\n , $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(26)(function(){\n var A = {}\n , B = {}\n , S = Symbol()\n , K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function(k){ B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source){ // eslint-disable-line no-unused-vars\n var T = toObject(target)\n , aLen = arguments.length\n , index = 1\n , getSymbols = gOPS.f\n , isEnum = pIE.f;\n while(aLen > index){\n var S = IObject(arguments[index++])\n , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)\n , length = keys.length\n , j = 0\n , key;\n while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];\n } return T;\n} : $assign;\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(18)\n , toLength = __webpack_require__(68)\n , toIndex = __webpack_require__(103);\nmodule.exports = function(IS_INCLUDES){\n return function($this, el, fromIndex){\n var O = toIObject($this)\n , length = toLength(O.length)\n , index = toIndex(fromIndex, length)\n , value;\n // Array#includes uses SameValueZero equality algorithm\n if(IS_INCLUDES && el != el)while(length > index){\n value = O[index++];\n if(value != value)return true;\n // Array#toIndex ignores holes, Array#includes - not\n } else for(;length > index; index++)if(IS_INCLUDES || index in O){\n if(O[index] === el)return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(47)\n , max = Math.max\n , min = Math.min;\nmodule.exports = function(index, length){\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(105);\nmodule.exports = __webpack_require__(8).Object.keys;\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(38)\n , $keys = __webpack_require__(27);\n\n__webpack_require__(69)('keys', function(){\n return function keys(it){\n return $keys(toObject(it));\n };\n});\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(107), __esModule: true };\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(70);\n__webpack_require__(113);\nmodule.exports = __webpack_require__(56).f('iterator');\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(47)\n , defined = __webpack_require__(46);\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function(TO_STRING){\n return function(that, pos){\n var s = String(defined(that))\n , i = toInteger(pos)\n , l = s.length\n , a, b;\n if(i < 0 || i >= l)return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(54)\n , descriptor = __webpack_require__(30)\n , setToStringTag = __webpack_require__(55)\n , IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(24)(IteratorPrototype, __webpack_require__(12)('iterator'), function(){ return this; });\n\nmodule.exports = function(Constructor, NAME, next){\n Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(17)\n , anObject = __webpack_require__(25)\n , getKeys = __webpack_require__(27);\n\nmodule.exports = __webpack_require__(20) ? Object.defineProperties : function defineProperties(O, Properties){\n anObject(O);\n var keys = getKeys(Properties)\n , length = keys.length\n , i = 0\n , P;\n while(length > i)dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(16).document && document.documentElement;\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(21)\n , toObject = __webpack_require__(38)\n , IE_PROTO = __webpack_require__(48)('IE_PROTO')\n , ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function(O){\n O = toObject(O);\n if(has(O, IE_PROTO))return O[IE_PROTO];\n if(typeof O.constructor == 'function' && O instanceof O.constructor){\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(114);\nvar global = __webpack_require__(16)\n , hide = __webpack_require__(24)\n , Iterators = __webpack_require__(31)\n , TO_STRING_TAG = __webpack_require__(12)('toStringTag');\n\nfor(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){\n var NAME = collections[i]\n , Collection = global[NAME]\n , proto = Collection && Collection.prototype;\n if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(115)\n , step = __webpack_require__(116)\n , Iterators = __webpack_require__(31)\n , toIObject = __webpack_require__(18);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(71)(Array, 'Array', function(iterated, kind){\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function(){\n var O = this._t\n , kind = this._k\n , index = this._i++;\n if(!O || index >= O.length){\n this._t = undefined;\n return step(1);\n }\n if(kind == 'keys' )return step(0, index);\n if(kind == 'values')return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(){ /* empty */ };\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(done, value){\n return {value: value, done: !!done};\n};\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(118), __esModule: true };\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(119);\n__webpack_require__(125);\n__webpack_require__(126);\n__webpack_require__(127);\nmodule.exports = __webpack_require__(8).Symbol;\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(16)\n , has = __webpack_require__(21)\n , DESCRIPTORS = __webpack_require__(20)\n , $export = __webpack_require__(15)\n , redefine = __webpack_require__(72)\n , META = __webpack_require__(120).KEY\n , $fails = __webpack_require__(26)\n , shared = __webpack_require__(49)\n , setToStringTag = __webpack_require__(55)\n , uid = __webpack_require__(36)\n , wks = __webpack_require__(12)\n , wksExt = __webpack_require__(56)\n , wksDefine = __webpack_require__(57)\n , keyOf = __webpack_require__(121)\n , enumKeys = __webpack_require__(122)\n , isArray = __webpack_require__(123)\n , anObject = __webpack_require__(25)\n , toIObject = __webpack_require__(18)\n , toPrimitive = __webpack_require__(44)\n , createDesc = __webpack_require__(30)\n , _create = __webpack_require__(54)\n , gOPNExt = __webpack_require__(124)\n , $GOPD = __webpack_require__(58)\n , $DP = __webpack_require__(17)\n , $keys = __webpack_require__(27)\n , gOPD = $GOPD.f\n , dP = $DP.f\n , gOPN = gOPNExt.f\n , $Symbol = global.Symbol\n , $JSON = global.JSON\n , _stringify = $JSON && $JSON.stringify\n , PROTOTYPE = 'prototype'\n , HIDDEN = wks('_hidden')\n , TO_PRIMITIVE = wks('toPrimitive')\n , isEnum = {}.propertyIsEnumerable\n , SymbolRegistry = shared('symbol-registry')\n , AllSymbols = shared('symbols')\n , OPSymbols = shared('op-symbols')\n , ObjectProto = Object[PROTOTYPE]\n , USE_NATIVE = typeof $Symbol == 'function'\n , QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function(){\n return _create(dP({}, 'a', {\n get: function(){ return dP(this, 'a', {value: 7}).a; }\n })).a != 7;\n}) ? function(it, key, D){\n var protoDesc = gOPD(ObjectProto, key);\n if(protoDesc)delete ObjectProto[key];\n dP(it, key, D);\n if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function(tag){\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){\n return typeof it == 'symbol';\n} : function(it){\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D){\n if(it === ObjectProto)$defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if(has(AllSymbols, key)){\n if(!D.enumerable){\n if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;\n D = _create(D, {enumerable: createDesc(0, false)});\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P){\n anObject(it);\n var keys = enumKeys(P = toIObject(P))\n , i = 0\n , l = keys.length\n , key;\n while(l > i)$defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P){\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key){\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){\n it = toIObject(it);\n key = toPrimitive(key, true);\n if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return;\n var D = gOPD(it, key);\n if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it){\n var names = gOPN(toIObject(it))\n , result = []\n , i = 0\n , key;\n while(names.length > i){\n if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it){\n var IS_OP = it === ObjectProto\n , names = gOPN(IS_OP ? OPSymbols : toIObject(it))\n , result = []\n , i = 0\n , key;\n while(names.length > i){\n if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif(!USE_NATIVE){\n $Symbol = function Symbol(){\n if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function(value){\n if(this === ObjectProto)$set.call(OPSymbols, value);\n if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set});\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString(){\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(73).f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(37).f = $propertyIsEnumerable;\n __webpack_require__(51).f = $getOwnPropertySymbols;\n\n if(DESCRIPTORS && !__webpack_require__(53)){\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function(name){\n return wrap(wks(name));\n }\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});\n\nfor(var symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), i = 0; symbols.length > i; )wks(symbols[i++]);\n\nfor(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function(key){\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(key){\n if(isSymbol(key))return keyOf(SymbolRegistry, key);\n throw TypeError(key + ' is not a symbol!');\n },\n useSetter: function(){ setter = true; },\n useSimple: function(){ setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it){\n if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined\n var args = [it]\n , i = 1\n , replacer, $replacer;\n while(arguments.length > i)args.push(arguments[i++]);\n replacer = args[1];\n if(typeof replacer == 'function')$replacer = replacer;\n if($replacer || !isArray(replacer))replacer = function(key, value){\n if($replacer)value = $replacer.call(this, key, value);\n if(!isSymbol(value))return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(24)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar META = __webpack_require__(36)('meta')\n , isObject = __webpack_require__(29)\n , has = __webpack_require__(21)\n , setDesc = __webpack_require__(17).f\n , id = 0;\nvar isExtensible = Object.isExtensible || function(){\n return true;\n};\nvar FREEZE = !__webpack_require__(26)(function(){\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function(it){\n setDesc(it, META, {value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n }});\n};\nvar fastKey = function(it, create){\n // return primitive with prefix\n if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if(!has(it, META)){\n // can't set metadata to uncaught frozen object\n if(!isExtensible(it))return 'F';\n // not necessary to add metadata\n if(!create)return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function(it, create){\n if(!has(it, META)){\n // can't set metadata to uncaught frozen object\n if(!isExtensible(it))return true;\n // not necessary to add metadata\n if(!create)return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function(it){\n if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getKeys = __webpack_require__(27)\n , toIObject = __webpack_require__(18);\nmodule.exports = function(object, el){\n var O = toIObject(object)\n , keys = getKeys(O)\n , length = keys.length\n , index = 0\n , key;\n while(length > index)if(O[key = keys[index++]] === el)return key;\n};\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(27)\n , gOPS = __webpack_require__(51)\n , pIE = __webpack_require__(37);\nmodule.exports = function(it){\n var result = getKeys(it)\n , getSymbols = gOPS.f;\n if(getSymbols){\n var symbols = getSymbols(it)\n , isEnum = pIE.f\n , i = 0\n , key;\n while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);\n } return result;\n};\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(45);\nmodule.exports = Array.isArray || function isArray(arg){\n return cof(arg) == 'Array';\n};\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(18)\n , gOPN = __webpack_require__(73).f\n , toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function(it){\n try {\n return gOPN(it);\n } catch(e){\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it){\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(57)('asyncIterator');\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(57)('observable');\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(129);\nvar $Object = __webpack_require__(8).Object;\nmodule.exports = function defineProperty(it, key, desc){\n return $Object.defineProperty(it, key, desc);\n};\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(15);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(20), 'Object', {defineProperty: __webpack_require__(17).f});\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(131), __esModule: true };\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(132);\nmodule.exports = __webpack_require__(8).Object.setPrototypeOf;\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(15);\n$export($export.S, 'Object', {setPrototypeOf: __webpack_require__(133).set});\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(29)\n , anObject = __webpack_require__(25);\nvar check = function(O, proto){\n anObject(O);\n if(!isObject(proto) && proto !== null)throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function(test, buggy, set){\n try {\n set = __webpack_require__(43)(Function.call, __webpack_require__(58).f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch(e){ buggy = true; }\n return function setPrototypeOf(O, proto){\n check(O, proto);\n if(buggy)O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(135);\nvar $Object = __webpack_require__(8).Object;\nmodule.exports = function create(P, D){\n return $Object.create(P, D);\n};\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(15)\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', {create: __webpack_require__(54)});\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(137), __esModule: true };\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(138);\nvar $Object = __webpack_require__(8).Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key){\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = __webpack_require__(18)\n , $getOwnPropertyDescriptor = __webpack_require__(58).f;\n\n__webpack_require__(69)('getOwnPropertyDescriptor', function(){\n return function getOwnPropertyDescriptor(it, key){\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/**\n * Array.prototype.find\n *\n * Original source : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n * See also : https://tc39.github.io/ecma262/#sec-array.prototype.find\n */\nif (!Array.prototype.find) {\n // eslint-disable-next-line\n Object.defineProperty(Array.prototype, 'find', {\n // Note: ES6 arrow function syntax is not used on purpose to avoid this to be undefined\n value: function value(predicate) {\n // 1. Let O be ? ToObject(this value).\n if (this == null) throw new TypeError('\"this\" is null or not defined');\n\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\n if (typeof predicate !== 'function') throw new TypeError('predicate must be a function');\n\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n var thisArg = arguments[1];\n\n // 5. Let k be 0.\n var k = 0;\n\n // 6. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ! ToString(k).\n // b. Let kValue be ? Get(O, Pk).\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n // d. If testResult is true, return kValue.\n var kValue = o[k];\n if (predicate.call(thisArg, kValue, k, o)) return kValue;\n\n // e. Increase k by 1.\n k++;\n }\n\n // 7. Return undefined.\n return undefined;\n }\n });\n}\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getDevice = exports.getViewportSize = exports.getOsData = exports.getBrowserData = exports.getBrowserInfo = undefined;\n\nvar _clapprZepto = __webpack_require__(6);\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nvar _browser_data = __webpack_require__(141);\n\nvar _browser_data2 = _interopRequireDefault(_browser_data);\n\nvar _os_data = __webpack_require__(142);\n\nvar _os_data2 = _interopRequireDefault(_os_data);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Browser = {};\n\nvar hasLocalstorage = function hasLocalstorage() {\n try {\n localStorage.setItem('clappr', 'clappr');\n localStorage.removeItem('clappr');\n return true;\n } catch (e) {\n return false;\n }\n};\n\nvar hasFlash = function hasFlash() {\n try {\n var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');\n return !!fo;\n } catch (e) {\n return !!(navigator.mimeTypes && navigator.mimeTypes['application/x-shockwave-flash'] !== undefined && navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin);\n }\n};\n\nvar getBrowserInfo = exports.getBrowserInfo = function getBrowserInfo(ua) {\n var parts = ua.match(/\\b(playstation 4|nx|opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [],\n extra = void 0;\n if (/trident/i.test(parts[1])) {\n extra = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n return {\n name: 'IE',\n version: parseInt(extra[1] || '')\n };\n } else if (parts[1] === 'Chrome') {\n extra = ua.match(/\\bOPR\\/(\\d+)/);\n if (extra != null) return { name: 'Opera', version: parseInt(extra[1]) };\n\n extra = ua.match(/\\bEdge\\/(\\d+)/);\n if (extra != null) return { name: 'Edge', version: parseInt(extra[1]) };\n } else if (/android/i.test(ua) && (extra = ua.match(/version\\/(\\d+)/i))) {\n parts.splice(1, 1, 'Android WebView');\n parts.splice(2, 1, extra[1]);\n }\n parts = parts[2] ? [parts[1], parts[2]] : [navigator.appName, navigator.appVersion, '-?'];\n\n return {\n name: parts[0],\n version: parseInt(parts[1])\n };\n};\n\n// Get browser data\nvar getBrowserData = exports.getBrowserData = function getBrowserData() {\n var browserObject = {};\n var userAgent = Browser.userAgent.toLowerCase();\n\n // Check browser type\n for (var i in _browser_data2.default) {\n var browserRegExp = new RegExp(_browser_data2.default[i].identifier.toLowerCase());\n var browserRegExpResult = browserRegExp.exec(userAgent);\n\n if (browserRegExpResult != null && browserRegExpResult[1]) {\n browserObject.name = _browser_data2.default[i].name;\n browserObject.group = _browser_data2.default[i].group;\n\n // Check version\n if (_browser_data2.default[i].versionIdentifier) {\n var versionRegExp = new RegExp(_browser_data2.default[i].versionIdentifier.toLowerCase());\n var versionRegExpResult = versionRegExp.exec(userAgent);\n\n if (versionRegExpResult != null && versionRegExpResult[1]) setBrowserVersion(versionRegExpResult[1], browserObject);\n } else {\n setBrowserVersion(browserRegExpResult[1], browserObject);\n }\n break;\n }\n }\n return browserObject;\n};\n\n// Set browser version\nvar setBrowserVersion = function setBrowserVersion(version, browserObject) {\n var splitVersion = version.split('.', 2);\n browserObject.fullVersion = version;\n\n // Major version\n if (splitVersion[0]) browserObject.majorVersion = parseInt(splitVersion[0]);\n\n // Minor version\n if (splitVersion[1]) browserObject.minorVersion = parseInt(splitVersion[1]);\n};\n\n// Get OS data\nvar getOsData = exports.getOsData = function getOsData() {\n var osObject = {};\n var userAgent = Browser.userAgent.toLowerCase();\n\n // Check browser type\n for (var i in _os_data2.default) {\n var osRegExp = new RegExp(_os_data2.default[i].identifier.toLowerCase());\n var osRegExpResult = osRegExp.exec(userAgent);\n\n if (osRegExpResult != null) {\n osObject.name = _os_data2.default[i].name;\n osObject.group = _os_data2.default[i].group;\n\n // Version defined\n if (_os_data2.default[i].version) {\n setOsVersion(_os_data2.default[i].version, _os_data2.default[i].versionSeparator ? _os_data2.default[i].versionSeparator : '.', osObject);\n\n // Version detected\n } else if (osRegExpResult[1]) {\n setOsVersion(osRegExpResult[1], _os_data2.default[i].versionSeparator ? _os_data2.default[i].versionSeparator : '.', osObject);\n\n // Version identifier\n } else if (_os_data2.default[i].versionIdentifier) {\n var versionRegExp = new RegExp(_os_data2.default[i].versionIdentifier.toLowerCase());\n var versionRegExpResult = versionRegExp.exec(userAgent);\n\n if (versionRegExpResult != null && versionRegExpResult[1]) setOsVersion(versionRegExpResult[1], _os_data2.default[i].versionSeparator ? _os_data2.default[i].versionSeparator : '.', osObject);\n }\n break;\n }\n }\n return osObject;\n};\n\n// Set OS version\nvar setOsVersion = function setOsVersion(version, separator, osObject) {\n var finalSeparator = separator.substr(0, 1) == '[' ? new RegExp(separator, 'g') : separator;\n var splitVersion = version.split(finalSeparator, 2);\n\n if (separator != '.') version = version.replace(new RegExp(separator, 'g'), '.');\n\n osObject.fullVersion = version;\n\n // Major version\n if (splitVersion && splitVersion[0]) osObject.majorVersion = parseInt(splitVersion[0]);\n\n // Minor version\n if (splitVersion && splitVersion[1]) osObject.minorVersion = parseInt(splitVersion[1]);\n};\n\n// Set viewport size\nvar getViewportSize = exports.getViewportSize = function getViewportSize() {\n var viewportObject = {};\n\n viewportObject.width = (0, _clapprZepto2.default)(window).width();\n viewportObject.height = (0, _clapprZepto2.default)(window).height();\n\n return viewportObject;\n};\n\n// Set viewport orientation\nvar setViewportOrientation = function setViewportOrientation() {\n switch (window.orientation) {\n case -90:\n case 90:\n Browser.viewport.orientation = 'landscape';\n break;\n default:\n Browser.viewport.orientation = 'portrait';\n break;\n }\n};\n\nvar getDevice = exports.getDevice = function getDevice(ua) {\n var platformRegExp = /\\((iP(?:hone|ad|od))?(?:[^;]*; ){0,2}([^)]+(?=\\)))/;\n var matches = platformRegExp.exec(ua);\n var device = matches && (matches[1] || matches[2]) || '';\n return device;\n};\n\nvar browserInfo = getBrowserInfo(navigator.userAgent);\n\nBrowser.isEdge = /edge/i.test(navigator.userAgent);\nBrowser.isChrome = /chrome|CriOS/i.test(navigator.userAgent) && !Browser.isEdge;\nBrowser.isSafari = /safari/i.test(navigator.userAgent) && !Browser.isChrome && !Browser.isEdge;\nBrowser.isFirefox = /firefox/i.test(navigator.userAgent);\nBrowser.isLegacyIE = !!window.ActiveXObject;\nBrowser.isIE = Browser.isLegacyIE || /trident.*rv:1\\d/i.test(navigator.userAgent);\nBrowser.isIE11 = /trident.*rv:11/i.test(navigator.userAgent);\nBrowser.isChromecast = Browser.isChrome && /CrKey/i.test(navigator.userAgent);\nBrowser.isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone|IEMobile|Mobile Safari|Opera Mini/i.test(navigator.userAgent);\nBrowser.isiOS = /iPad|iPhone|iPod/i.test(navigator.userAgent);\nBrowser.isAndroid = /Android/i.test(navigator.userAgent);\nBrowser.isWindowsPhone = /Windows Phone/i.test(navigator.userAgent);\nBrowser.isWin8App = /MSAppHost/i.test(navigator.userAgent);\nBrowser.isWiiU = /WiiU/i.test(navigator.userAgent);\nBrowser.isPS4 = /PlayStation 4/i.test(navigator.userAgent);\nBrowser.hasLocalstorage = hasLocalstorage();\nBrowser.hasFlash = hasFlash();\n\n/**\n* @deprecated\n* This parameter currently exists for retrocompatibility reasons.\n* Use Browser.data.name instead.\n*/\nBrowser.name = browserInfo.name;\n\n/**\n* @deprecated\n* This parameter currently exists for retrocompatibility reasons.\n* Use Browser.data.fullVersion instead.\n*/\nBrowser.version = browserInfo.version;\n\nBrowser.userAgent = navigator.userAgent;\nBrowser.data = getBrowserData();\nBrowser.os = getOsData();\nBrowser.viewport = getViewportSize();\nBrowser.device = getDevice(Browser.userAgent);\ntypeof window.orientation !== 'undefined' && setViewportOrientation();\n\nexports.default = Browser;\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* eslint-disable no-useless-escape */\n// The order of the following arrays is important, be careful if you change it.\n\nvar BROWSER_DATA = [{\n name: 'Chromium',\n group: 'Chrome',\n identifier: 'Chromium/([0-9\\.]*)'\n}, {\n name: 'Chrome Mobile',\n group: 'Chrome',\n identifier: 'Chrome/([0-9\\.]*) Mobile',\n versionIdentifier: 'Chrome/([0-9\\.]*)'\n}, {\n name: 'Chrome',\n group: 'Chrome',\n identifier: 'Chrome/([0-9\\.]*)'\n}, {\n name: 'Chrome for iOS',\n group: 'Chrome',\n identifier: 'CriOS/([0-9\\.]*)'\n}, {\n name: 'Android Browser',\n group: 'Chrome',\n identifier: 'CrMo/([0-9\\.]*)'\n}, {\n name: 'Firefox',\n group: 'Firefox',\n identifier: 'Firefox/([0-9\\.]*)'\n}, {\n name: 'Opera Mini',\n group: 'Opera',\n identifier: 'Opera Mini/([0-9\\.]*)'\n}, {\n name: 'Opera',\n group: 'Opera',\n identifier: 'Opera ([0-9\\.]*)'\n}, {\n name: 'Opera',\n group: 'Opera',\n identifier: 'Opera/([0-9\\.]*)',\n versionIdentifier: 'Version/([0-9\\.]*)'\n}, {\n name: 'IEMobile',\n group: 'Explorer',\n identifier: 'IEMobile/([0-9\\.]*)'\n}, {\n name: 'Internet Explorer',\n group: 'Explorer',\n identifier: 'MSIE ([a-zA-Z0-9\\.]*)'\n}, {\n name: 'Internet Explorer',\n group: 'Explorer',\n identifier: 'Trident/([0-9\\.]*)',\n versionIdentifier: 'rv:([0-9\\.]*)'\n}, {\n name: 'Spartan',\n group: 'Spartan',\n identifier: 'Edge/([0-9\\.]*)',\n versionIdentifier: 'Edge/([0-9\\.]*)'\n}, {\n name: 'Safari',\n group: 'Safari',\n identifier: 'Safari/([0-9\\.]*)',\n versionIdentifier: 'Version/([0-9\\.]*)'\n}];\n\nexports.default = BROWSER_DATA;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* eslint-disable no-useless-escape */\n// The order of the following arrays is important, be careful if you change it.\n\nvar OS_DATA = [{\n name: 'Windows 2000',\n group: 'Windows',\n identifier: 'Windows NT 5.0',\n version: '5.0'\n}, {\n name: 'Windows XP',\n group: 'Windows',\n identifier: 'Windows NT 5.1',\n version: '5.1'\n}, {\n name: 'Windows Vista',\n group: 'Windows',\n identifier: 'Windows NT 6.0',\n version: '6.0'\n}, {\n name: 'Windows 7',\n group: 'Windows',\n identifier: 'Windows NT 6.1',\n version: '7.0'\n}, {\n name: 'Windows 8',\n group: 'Windows',\n identifier: 'Windows NT 6.2',\n version: '8.0'\n}, {\n name: 'Windows 8.1',\n group: 'Windows',\n identifier: 'Windows NT 6.3',\n version: '8.1'\n}, {\n name: 'Windows 10',\n group: 'Windows',\n identifier: 'Windows NT 10.0',\n version: '10.0'\n}, {\n name: 'Windows Phone',\n group: 'Windows Phone',\n identifier: 'Windows Phone ([0-9\\.]*)'\n}, {\n name: 'Windows Phone',\n group: 'Windows Phone',\n identifier: 'Windows Phone OS ([0-9\\.]*)'\n}, {\n name: 'Windows',\n group: 'Windows',\n identifier: 'Windows'\n}, {\n name: 'Chrome OS',\n group: 'Chrome OS',\n identifier: 'CrOS'\n}, {\n name: 'Android',\n group: 'Android',\n identifier: 'Android',\n versionIdentifier: 'Android ([a-zA-Z0-9\\.-]*)'\n}, {\n name: 'iPad',\n group: 'iOS',\n identifier: 'iPad',\n versionIdentifier: 'OS ([0-9_]*)',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'iPod',\n group: 'iOS',\n identifier: 'iPod',\n versionIdentifier: 'OS ([0-9_]*)',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'iPhone',\n group: 'iOS',\n identifier: 'iPhone OS',\n versionIdentifier: 'OS ([0-9_]*)',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X High Sierra',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])13([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Sierra',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])12([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X El Capitan',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])11([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Yosemite',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])10([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Mavericks',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])9([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Mountain Lion',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])8([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Lion',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])7([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Snow Leopard',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])6([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Leopard',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])5([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Tiger',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])4([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Panther',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])3([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Jaguar',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])2([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Puma',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])1([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Cheetah',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])0([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS',\n group: 'Mac OS',\n identifier: 'Mac OS'\n}, {\n name: 'Ubuntu',\n group: 'Linux',\n identifier: 'Ubuntu',\n versionIdentifier: 'Ubuntu/([0-9\\.]*)'\n}, {\n name: 'Debian',\n group: 'Linux',\n identifier: 'Debian'\n}, {\n name: 'Gentoo',\n group: 'Linux',\n identifier: 'Gentoo'\n}, {\n name: 'Linux',\n group: 'Linux',\n identifier: 'Linux'\n}, {\n name: 'BlackBerry',\n group: 'BlackBerry',\n identifier: 'BlackBerry'\n}];\n\nexports.default = OS_DATA;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n// https://github.com/mathiasbynens/small\nvar mp4 = exports.mp4 = 'data:video/mp4;base64,AAAAHGZ0eXBpc29tAAACAGlzb21pc28ybXA0MQAAAAhmcmVlAAAC721kYXQhEAUgpBv/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3pwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcCEQBSCkG//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADengAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAsJtb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAALwABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAB7HRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAIAAAAAAAAALwAAAAAAAAAAAAAAAQEAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAAC8AAAAAAAEAAAAAAWRtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAAKxEAAAIAFXEAAAAAAAtaGRscgAAAAAAAAAAc291bgAAAAAAAAAAAAAAAFNvdW5kSGFuZGxlcgAAAAEPbWluZgAAABBzbWhkAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAADTc3RibAAAAGdzdHNkAAAAAAAAAAEAAABXbXA0YQAAAAAAAAABAAAAAAAAAAAAAgAQAAAAAKxEAAAAAAAzZXNkcwAAAAADgICAIgACAASAgIAUQBUAAAAAAfQAAAHz+QWAgIACEhAGgICAAQIAAAAYc3R0cwAAAAAAAAABAAAAAgAABAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAIAAAABAAAAHHN0c3oAAAAAAAAAAAAAAAIAAAFzAAABdAAAABRzdGNvAAAAAAAAAAEAAAAsAAAAYnVkdGEAAABabWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAtaWxzdAAAACWpdG9vAAAAHWRhdGEAAAABAAAAAExhdmY1Ni40MC4xMDE=';\n\nexports.default = {\n mp4: mp4\n};\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _vendor = __webpack_require__(59);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BOLD = 'font-weight: bold; font-size: 13px;';\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar INFO = 'color: #006600;' + BOLD;\nvar DEBUG = 'color: #0000ff;' + BOLD;\nvar WARN = 'color: #ff8000;' + BOLD;\nvar ERROR = 'color: #ff0000;' + BOLD;\n\nvar LEVEL_DEBUG = 0;\nvar LEVEL_INFO = 1;\nvar LEVEL_WARN = 2;\nvar LEVEL_ERROR = 3;\nvar LEVEL_DISABLED = LEVEL_ERROR;\n\nvar COLORS = [DEBUG, INFO, WARN, ERROR, ERROR];\nvar DESCRIPTIONS = ['debug', 'info', 'warn', 'error', 'disabled'];\n\nvar Log = function () {\n function Log() {\n var _this = this;\n\n var level = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : LEVEL_INFO;\n var offLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : LEVEL_DISABLED;\n (0, _classCallCheck3.default)(this, Log);\n\n this.kibo = new _vendor.Kibo();\n this.kibo.down(['ctrl shift d'], function () {\n return _this.onOff();\n });\n this.BLACKLIST = ['timeupdate', 'playback:timeupdate', 'playback:progress', 'container:hover', 'container:timeupdate', 'container:progress'];\n this.level = level;\n this.offLevel = offLevel;\n }\n\n Log.prototype.debug = function debug(klass) {\n this.log(klass, LEVEL_DEBUG, Array.prototype.slice.call(arguments, 1));\n };\n\n Log.prototype.info = function info(klass) {\n this.log(klass, LEVEL_INFO, Array.prototype.slice.call(arguments, 1));\n };\n\n Log.prototype.warn = function warn(klass) {\n this.log(klass, LEVEL_WARN, Array.prototype.slice.call(arguments, 1));\n };\n\n Log.prototype.error = function error(klass) {\n this.log(klass, LEVEL_ERROR, Array.prototype.slice.call(arguments, 1));\n };\n\n Log.prototype.onOff = function onOff() {\n if (this.level === this.offLevel) {\n this.level = this.previousLevel;\n } else {\n this.previousLevel = this.level;\n this.level = this.offLevel;\n }\n // handle instances where console.log is unavailable\n if (window.console && window.console.log) window.console.log('%c[Clappr.Log] set log level to ' + DESCRIPTIONS[this.level], WARN);\n };\n\n Log.prototype.level = function level(newLevel) {\n this.level = newLevel;\n };\n\n Log.prototype.log = function log(klass, level, message) {\n if (this.BLACKLIST.indexOf(message[0]) >= 0) return;\n if (level < this.level) return;\n\n if (!message) {\n message = klass;\n klass = null;\n }\n var color = COLORS[level];\n var klassDescription = '';\n if (klass) klassDescription = '[' + klass + ']';\n\n if (window.console && window.console.log) window.console.log.apply(console, ['%c[' + DESCRIPTIONS[level] + ']' + klassDescription, color].concat(message));\n };\n\n return Log;\n}();\n\nexports.default = Log;\n\n\nLog.LEVEL_DEBUG = LEVEL_DEBUG;\nLog.LEVEL_INFO = LEVEL_INFO;\nLog.LEVEL_WARN = LEVEL_WARN;\nLog.LEVEL_ERROR = LEVEL_ERROR;\n\nLog.getInstance = function () {\n if (this._instance === undefined) {\n this._instance = new this();\n this._instance.previousLevel = this._instance.level;\n this._instance.level = this._instance.offLevel;\n }\n return this._instance;\n};\n\nLog.setLevel = function (level) {\n this.getInstance().level = level;\n};\n\nLog.debug = function () {\n this.getInstance().debug.apply(this.getInstance(), arguments);\n};\nLog.info = function () {\n this.getInstance().info.apply(this.getInstance(), arguments);\n};\nLog.warn = function () {\n this.getInstance().warn.apply(this.getInstance(), arguments);\n};\nLog.error = function () {\n this.getInstance().error.apply(this.getInstance(), arguments);\n};\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* eslint-disable */\n// Kibo is released under the MIT License. Copyright (c) 2013 marquete.\n// see https://github.com/marquete/kibo\n\nvar Kibo = function Kibo(element) {\n this.element = element || window.document;\n this.initialize();\n};\n\nKibo.KEY_NAMES_BY_CODE = {\n 8: 'backspace', 9: 'tab', 13: 'enter',\n 16: 'shift', 17: 'ctrl', 18: 'alt',\n 20: 'caps_lock',\n 27: 'esc',\n 32: 'space',\n 37: 'left', 38: 'up', 39: 'right', 40: 'down',\n 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5', 54: '6', 55: '7', 56: '8', 57: '9',\n 65: 'a', 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h', 73: 'i', 74: 'j',\n 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o', 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't',\n 85: 'u', 86: 'v', 87: 'w', 88: 'x', 89: 'y', 90: 'z', 112: 'f1', 113: 'f2', 114: 'f3',\n 115: 'f4', 116: 'f5', 117: 'f6', 118: 'f7', 119: 'f8', 120: 'f9', 121: 'f10', 122: 'f11', 123: 'f12'\n};\n\nKibo.KEY_CODES_BY_NAME = {};\n(function () {\n for (var key in Kibo.KEY_NAMES_BY_CODE) {\n if (Object.prototype.hasOwnProperty.call(Kibo.KEY_NAMES_BY_CODE, key)) {\n Kibo.KEY_CODES_BY_NAME[Kibo.KEY_NAMES_BY_CODE[key]] = +key;\n }\n }\n})();\n\nKibo.MODIFIERS = ['shift', 'ctrl', 'alt'];\n\nKibo.registerEvent = function () {\n if (document.addEventListener) {\n return function (element, eventName, func) {\n element.addEventListener(eventName, func, false);\n };\n } else if (document.attachEvent) {\n return function (element, eventName, func) {\n element.attachEvent('on' + eventName, func);\n };\n }\n}();\n\nKibo.unregisterEvent = function () {\n if (document.removeEventListener) {\n return function (element, eventName, func) {\n element.removeEventListener(eventName, func, false);\n };\n } else if (document.detachEvent) {\n return function (element, eventName, func) {\n element.detachEvent('on' + eventName, func);\n };\n }\n}();\n\nKibo.stringContains = function (string, substring) {\n return string.indexOf(substring) !== -1;\n};\n\nKibo.neatString = function (string) {\n return string.replace(/^\\s+|\\s+$/g, '').replace(/\\s+/g, ' ');\n};\n\nKibo.capitalize = function (string) {\n return string.toLowerCase().replace(/^./, function (match) {\n return match.toUpperCase();\n });\n};\n\nKibo.isString = function (what) {\n return Kibo.stringContains(Object.prototype.toString.call(what), 'String');\n};\n\nKibo.arrayIncludes = function () {\n if (Array.prototype.indexOf) {\n return function (haystack, needle) {\n return haystack.indexOf(needle) !== -1;\n };\n } else {\n return function (haystack, needle) {\n for (var i = 0; i < haystack.length; i++) {\n if (haystack[i] === needle) {\n return true;\n }\n }\n return false;\n };\n }\n}();\n\nKibo.extractModifiers = function (keyCombination) {\n var modifiers, i;\n modifiers = [];\n for (i = 0; i < Kibo.MODIFIERS.length; i++) {\n if (Kibo.stringContains(keyCombination, Kibo.MODIFIERS[i])) {\n modifiers.push(Kibo.MODIFIERS[i]);\n }\n }\n return modifiers;\n};\n\nKibo.extractKey = function (keyCombination) {\n var keys, i;\n keys = Kibo.neatString(keyCombination).split(' ');\n for (i = 0; i < keys.length; i++) {\n if (!Kibo.arrayIncludes(Kibo.MODIFIERS, keys[i])) {\n return keys[i];\n }\n }\n};\n\nKibo.modifiersAndKey = function (keyCombination) {\n var result, key;\n\n if (Kibo.stringContains(keyCombination, 'any')) {\n return Kibo.neatString(keyCombination).split(' ').slice(0, 2).join(' ');\n }\n\n result = Kibo.extractModifiers(keyCombination);\n\n key = Kibo.extractKey(keyCombination);\n if (key && !Kibo.arrayIncludes(Kibo.MODIFIERS, key)) {\n result.push(key);\n }\n\n return result.join(' ');\n};\n\nKibo.keyName = function (keyCode) {\n return Kibo.KEY_NAMES_BY_CODE[keyCode + ''];\n};\n\nKibo.keyCode = function (keyName) {\n return +Kibo.KEY_CODES_BY_NAME[keyName];\n};\n\nKibo.prototype.initialize = function () {\n var i,\n that = this;\n\n this.lastKeyCode = -1;\n this.lastModifiers = {};\n for (i = 0; i < Kibo.MODIFIERS.length; i++) {\n this.lastModifiers[Kibo.MODIFIERS[i]] = false;\n }\n\n this.keysDown = { any: [] };\n this.keysUp = { any: [] };\n this.downHandler = this.handler('down');\n this.upHandler = this.handler('up');\n\n Kibo.registerEvent(this.element, 'keydown', this.downHandler);\n Kibo.registerEvent(this.element, 'keyup', this.upHandler);\n Kibo.registerEvent(window, 'unload', function unloader() {\n Kibo.unregisterEvent(that.element, 'keydown', that.downHandler);\n Kibo.unregisterEvent(that.element, 'keyup', that.upHandler);\n Kibo.unregisterEvent(window, 'unload', unloader);\n });\n};\n\nKibo.prototype.handler = function (upOrDown) {\n var that = this;\n return function (e) {\n var i, registeredKeys, lastModifiersAndKey;\n\n e = e || window.event;\n\n that.lastKeyCode = e.keyCode;\n for (i = 0; i < Kibo.MODIFIERS.length; i++) {\n that.lastModifiers[Kibo.MODIFIERS[i]] = e[Kibo.MODIFIERS[i] + 'Key'];\n }\n if (Kibo.arrayIncludes(Kibo.MODIFIERS, Kibo.keyName(that.lastKeyCode))) {\n that.lastModifiers[Kibo.keyName(that.lastKeyCode)] = true;\n }\n\n registeredKeys = that['keys' + Kibo.capitalize(upOrDown)];\n\n for (i = 0; i < registeredKeys.any.length; i++) {\n if (registeredKeys.any[i](e) === false && e.preventDefault) {\n e.preventDefault();\n }\n }\n\n lastModifiersAndKey = that.lastModifiersAndKey();\n if (registeredKeys[lastModifiersAndKey]) {\n for (i = 0; i < registeredKeys[lastModifiersAndKey].length; i++) {\n if (registeredKeys[lastModifiersAndKey][i](e) === false && e.preventDefault) {\n e.preventDefault();\n }\n }\n }\n };\n};\n\nKibo.prototype.registerKeys = function (upOrDown, newKeys, func) {\n var i,\n keys,\n registeredKeys = this['keys' + Kibo.capitalize(upOrDown)];\n\n if (Kibo.isString(newKeys)) {\n newKeys = [newKeys];\n }\n\n for (i = 0; i < newKeys.length; i++) {\n keys = newKeys[i];\n keys = Kibo.modifiersAndKey(keys + '');\n\n if (registeredKeys[keys]) {\n registeredKeys[keys].push(func);\n } else {\n registeredKeys[keys] = [func];\n }\n }\n\n return this;\n};\n\n// jshint maxdepth:5\nKibo.prototype.unregisterKeys = function (upOrDown, newKeys, func) {\n var i,\n j,\n keys,\n registeredKeys = this['keys' + Kibo.capitalize(upOrDown)];\n\n if (Kibo.isString(newKeys)) {\n newKeys = [newKeys];\n }\n\n for (i = 0; i < newKeys.length; i++) {\n keys = newKeys[i];\n keys = Kibo.modifiersAndKey(keys + '');\n\n if (func === null) {\n delete registeredKeys[keys];\n } else {\n if (registeredKeys[keys]) {\n for (j = 0; j < registeredKeys[keys].length; j++) {\n if (String(registeredKeys[keys][j]) === String(func)) {\n registeredKeys[keys].splice(j, 1);\n break;\n }\n }\n }\n }\n }\n\n return this;\n};\n\nKibo.prototype.off = function (keys) {\n return this.unregisterKeys('down', keys, null);\n};\n\nKibo.prototype.delegate = function (upOrDown, keys, func) {\n return func !== null || func !== undefined ? this.registerKeys(upOrDown, keys, func) : this.unregisterKeys(upOrDown, keys, func);\n};\n\nKibo.prototype.down = function (keys, func) {\n return this.delegate('down', keys, func);\n};\n\nKibo.prototype.up = function (keys, func) {\n return this.delegate('up', keys, func);\n};\n\nKibo.prototype.lastKey = function (modifier) {\n if (!modifier) {\n return Kibo.keyName(this.lastKeyCode);\n }\n\n return this.lastModifiers[modifier];\n};\n\nKibo.prototype.lastModifiersAndKey = function () {\n var result, i;\n\n result = [];\n for (i = 0; i < Kibo.MODIFIERS.length; i++) {\n if (this.lastKey(Kibo.MODIFIERS[i])) {\n result.push(Kibo.MODIFIERS[i]);\n }\n }\n\n if (!Kibo.arrayIncludes(result, this.lastKey())) {\n result.push(this.lastKey());\n }\n\n return result.join(' ');\n};\n\nexports.default = Kibo;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _core_factory = __webpack_require__(147);\n\nvar _core_factory2 = _interopRequireDefault(_core_factory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _core_factory2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _base_object = __webpack_require__(14);\n\nvar _base_object2 = _interopRequireDefault(_base_object);\n\nvar _core = __webpack_require__(76);\n\nvar _core2 = _interopRequireDefault(_core);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The Core Factory is responsible for instantiate the core and it's plugins.\n * @class CoreFactory\n * @constructor\n * @extends BaseObject\n * @module components\n */\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar CoreFactory = function (_BaseObject) {\n (0, _inherits3.default)(CoreFactory, _BaseObject);\n (0, _createClass3.default)(CoreFactory, [{\n key: 'loader',\n get: function get() {\n return this.player.loader;\n }\n\n /**\n * it builds the core factory\n * @method constructor\n * @param {Player} player the player object\n */\n\n }]);\n\n function CoreFactory(player) {\n (0, _classCallCheck3.default)(this, CoreFactory);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _BaseObject.call(this));\n\n _this.player = player;\n _this._options = player.options;\n return _this;\n }\n\n /**\n * creates a core and its plugins\n * @method create\n * @return {Core} created core\n */\n\n\n CoreFactory.prototype.create = function create() {\n this.options.loader = this.loader;\n this.core = new _core2.default(this.options);\n this.addCorePlugins();\n this.core.createContainers(this.options);\n return this.core;\n };\n\n /**\n * given the core plugins (`loader.corePlugins`) it builds each one\n * @method addCorePlugins\n * @return {Core} the core with all plugins\n */\n\n\n CoreFactory.prototype.addCorePlugins = function addCorePlugins() {\n var _this2 = this;\n\n this.loader.corePlugins.forEach(function (Plugin) {\n var plugin = new Plugin(_this2.core);\n _this2.core.addPlugin(plugin);\n _this2.setupExternalInterface(plugin);\n });\n return this.core;\n };\n\n CoreFactory.prototype.setupExternalInterface = function setupExternalInterface(plugin) {\n var externalFunctions = plugin.getExternalInterface();\n for (var key in externalFunctions) {\n this.player[key] = externalFunctions[key].bind(plugin);\n }\n };\n\n return CoreFactory;\n}(_base_object2.default);\n\nexports.default = CoreFactory;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = __webpack_require__(11);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = __webpack_require__(5);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _ui_object = __webpack_require__(22);\n\nvar _ui_object2 = _interopRequireDefault(_ui_object);\n\nvar _browser = __webpack_require__(28);\n\nvar _browser2 = _interopRequireDefault(_browser);\n\nvar _container_factory = __webpack_require__(149);\n\nvar _container_factory2 = _interopRequireDefault(_container_factory);\n\nvar _media_control = __webpack_require__(79);\n\nvar _media_control2 = _interopRequireDefault(_media_control);\n\nvar _mediator = __webpack_require__(61);\n\nvar _mediator2 = _interopRequireDefault(_mediator);\n\nvar _player_info = __webpack_require__(40);\n\nvar _player_info2 = _interopRequireDefault(_player_info);\n\nvar _error = __webpack_require__(33);\n\nvar _error2 = _interopRequireDefault(_error);\n\nvar _error_mixin = __webpack_require__(19);\n\nvar _error_mixin2 = _interopRequireDefault(_error_mixin);\n\nvar _styler = __webpack_require__(83);\n\nvar _styler2 = _interopRequireDefault(_styler);\n\nvar _clapprZepto = __webpack_require__(6);\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\n__webpack_require__(167);\n\nvar _fonts = __webpack_require__(169);\n\nvar _fonts2 = _interopRequireDefault(_fonts);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar style = void 0;\n\n/**\n * The Core is responsible to manage Containers, the mediator, MediaControl\n * and the player state.\n * @class Core\n * @constructor\n * @extends UIObject\n * @module components\n */\n\nvar Core = function (_UIObject) {\n (0, _inherits3.default)(Core, _UIObject);\n (0, _createClass3.default)(Core, [{\n key: 'events',\n get: function get() {\n return {\n 'webkitfullscreenchange': 'handleFullscreenChange',\n 'mousemove': 'showMediaControl',\n 'mouseleave': 'hideMediaControl'\n };\n }\n }, {\n key: 'attributes',\n get: function get() {\n return {\n 'data-player': '',\n tabindex: 9999\n };\n }\n\n /**\n * checks if the core is ready.\n * @property isReady\n * @type {Boolean} `true` if the core is ready, otherwise `false`\n */\n\n }, {\n key: 'isReady',\n get: function get() {\n return !!this.ready;\n }\n\n /**\n * The internationalization plugin.\n * @property i18n\n * @type {Strings}\n */\n\n }, {\n key: 'i18n',\n get: function get() {\n return this.getPlugin('strings') || { t: function t(key) {\n return key;\n } };\n }\n }]);\n\n function Core(options) {\n (0, _classCallCheck3.default)(this, Core);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _UIObject.call(this, options));\n\n _this.playerError = new _error2.default(options, _this);\n _this.configureDomRecycler();\n _this.playerInfo = _player_info2.default.getInstance(options.playerId);\n _this.firstResize = true;\n _this.plugins = [];\n _this.containers = [];\n _this.setupMediaControl(null);\n //FIXME fullscreen api sucks\n _this._boundFullscreenHandler = function () {\n return _this.handleFullscreenChange();\n };\n (0, _clapprZepto2.default)(document).bind('fullscreenchange', _this._boundFullscreenHandler);\n (0, _clapprZepto2.default)(document).bind('MSFullscreenChange', _this._boundFullscreenHandler);\n (0, _clapprZepto2.default)(document).bind('mozfullscreenchange', _this._boundFullscreenHandler);\n _browser2.default.isMobile && (0, _clapprZepto2.default)(window).bind('resize', function (o) {\n _this.handleWindowResize(o);\n });\n return _this;\n }\n\n Core.prototype.configureDomRecycler = function configureDomRecycler() {\n var recycleVideo = this.options && this.options.playback && this.options.playback.recycleVideo ? true : false;\n _utils.DomRecycler.configure({\n recycleVideo: recycleVideo\n });\n };\n\n Core.prototype.createContainers = function createContainers(options) {\n var _this2 = this;\n\n this.defer = _clapprZepto2.default.Deferred();\n this.defer.promise(this);\n this.containerFactory = new _container_factory2.default(options, options.loader, this.i18n, this.playerError);\n this.containerFactory.createContainers().then(function (containers) {\n return _this2.setupContainers(containers);\n }).then(function (containers) {\n return _this2.resolveOnContainersReady(containers);\n });\n };\n\n Core.prototype.updateSize = function updateSize() {\n if (_utils.Fullscreen.isFullscreen()) this.setFullscreen();else this.setPlayerSize();\n };\n\n Core.prototype.setFullscreen = function setFullscreen() {\n if (!_browser2.default.isiOS) {\n this.$el.addClass('fullscreen');\n this.$el.removeAttr('style');\n this.playerInfo.previousSize = { width: this.options.width, height: this.options.height };\n this.playerInfo.currentSize = { width: (0, _clapprZepto2.default)(window).width(), height: (0, _clapprZepto2.default)(window).height() };\n }\n };\n\n Core.prototype.setPlayerSize = function setPlayerSize() {\n this.$el.removeClass('fullscreen');\n this.playerInfo.currentSize = this.playerInfo.previousSize;\n this.playerInfo.previousSize = { width: (0, _clapprZepto2.default)(window).width(), height: (0, _clapprZepto2.default)(window).height() };\n this.resize(this.playerInfo.currentSize);\n };\n\n Core.prototype.resize = function resize(options) {\n if (!(0, _utils.isNumber)(options.height) && !(0, _utils.isNumber)(options.width)) {\n this.el.style.height = '' + options.height;\n this.el.style.width = '' + options.width;\n } else {\n this.el.style.height = options.height + 'px';\n this.el.style.width = options.width + 'px';\n }\n this.playerInfo.previousSize = { width: this.options.width, height: this.options.height };\n this.options.width = options.width;\n this.options.height = options.height;\n this.playerInfo.currentSize = options;\n this.triggerResize(this.playerInfo.currentSize);\n };\n\n Core.prototype.enableResizeObserver = function enableResizeObserver() {\n var _this3 = this;\n\n var checkSizeCallback = function checkSizeCallback() {\n _this3.triggerResize({ width: _this3.el.clientWidth, height: _this3.el.clientHeight });\n };\n this.resizeObserverInterval = setInterval(checkSizeCallback, 500);\n };\n\n Core.prototype.triggerResize = function triggerResize(newSize) {\n var thereWasChange = this.firstResize || this.oldHeight !== newSize.height || this.oldWidth !== newSize.width;\n if (thereWasChange) {\n this.oldHeight = newSize.height;\n this.oldWidth = newSize.width;\n this.playerInfo.computedSize = newSize;\n this.firstResize = false;\n _mediator2.default.trigger(this.options.playerId + ':' + _events2.default.PLAYER_RESIZE, newSize);\n this.trigger(_events2.default.CORE_RESIZE, newSize);\n }\n };\n\n Core.prototype.disableResizeObserver = function disableResizeObserver() {\n if (this.resizeObserverInterval) clearInterval(this.resizeObserverInterval);\n };\n\n Core.prototype.resolveOnContainersReady = function resolveOnContainersReady(containers) {\n var _this4 = this;\n\n _clapprZepto2.default.when.apply(_clapprZepto2.default, containers).done(function () {\n _this4.defer.resolve(_this4);\n _this4.ready = true;\n _this4.trigger(_events2.default.CORE_READY);\n });\n };\n\n Core.prototype.addPlugin = function addPlugin(plugin) {\n this.plugins.push(plugin);\n };\n\n Core.prototype.hasPlugin = function hasPlugin(name) {\n return !!this.getPlugin(name);\n };\n\n Core.prototype.getPlugin = function getPlugin(name) {\n return this.plugins.filter(function (plugin) {\n return plugin.name === name;\n })[0];\n };\n\n Core.prototype.load = function load(sources, mimeType) {\n var _this5 = this;\n\n this.options.mimeType = mimeType;\n sources = sources && sources.constructor === Array ? sources : [sources];\n this.options.sources = sources;\n this.containers.forEach(function (container) {\n return container.destroy();\n });\n this.mediaControl.container = null;\n this.containerFactory.options = _clapprZepto2.default.extend(this.options, { sources: sources });\n this.containerFactory.createContainers().then(function (containers) {\n return _this5.setupContainers(containers);\n }).then(function (containers) {\n return _this5.resolveOnContainersReady(containers);\n });\n };\n\n Core.prototype.destroy = function destroy() {\n this.disableResizeObserver();\n this.containers.forEach(function (container) {\n return container.destroy();\n });\n this.plugins.forEach(function (plugin) {\n return plugin.destroy();\n });\n this.$el.remove();\n this.mediaControl.destroy();\n (0, _clapprZepto2.default)(document).unbind('fullscreenchange', this._boundFullscreenHandler);\n (0, _clapprZepto2.default)(document).unbind('MSFullscreenChange', this._boundFullscreenHandler);\n (0, _clapprZepto2.default)(document).unbind('mozfullscreenchange', this._boundFullscreenHandler);\n this.stopListening();\n };\n\n Core.prototype.handleFullscreenChange = function handleFullscreenChange() {\n this.trigger(_events2.default.CORE_FULLSCREEN, _utils.Fullscreen.isFullscreen());\n this.updateSize();\n this.mediaControl.show();\n };\n\n Core.prototype.handleWindowResize = function handleWindowResize(event) {\n var orientation = (0, _clapprZepto2.default)(window).width() > (0, _clapprZepto2.default)(window).height() ? 'landscape' : 'portrait';\n if (this._screenOrientation === orientation) return;\n this._screenOrientation = orientation;\n\n this.triggerResize({ width: this.el.clientWidth, height: this.el.clientHeight });\n this.trigger(_events2.default.CORE_SCREEN_ORIENTATION_CHANGED, {\n event: event,\n orientation: this._screenOrientation\n });\n };\n\n Core.prototype.setMediaControlContainer = function setMediaControlContainer(container) {\n this.mediaControl.setContainer(container);\n this.mediaControl.render();\n };\n\n Core.prototype.disableMediaControl = function disableMediaControl() {\n this.mediaControl.disable();\n this.$el.removeClass('nocursor');\n };\n\n Core.prototype.enableMediaControl = function enableMediaControl() {\n this.mediaControl.enable();\n };\n\n Core.prototype.removeContainer = function removeContainer(container) {\n this.stopListening(container);\n this.containers = this.containers.filter(function (c) {\n return c !== container;\n });\n };\n\n Core.prototype.setupContainer = function setupContainer(container) {\n this.listenTo(container, _events2.default.CONTAINER_DESTROYED, this.removeContainer);\n this.containers.push(container);\n };\n\n Core.prototype.setupContainers = function setupContainers(containers) {\n containers.forEach(this.setupContainer.bind(this));\n this.trigger(_events2.default.CORE_CONTAINERS_CREATED);\n this.renderContainers();\n this.setupMediaControl(this.getCurrentContainer());\n this.render();\n this.appendToParent();\n return this.containers;\n };\n\n Core.prototype.renderContainers = function renderContainers() {\n var _this6 = this;\n\n this.containers.forEach(function (container) {\n return _this6.el.appendChild(container.render().el);\n });\n };\n\n Core.prototype.createContainer = function createContainer(source, options) {\n var container = this.containerFactory.createContainer(source, options);\n this.setupContainer(container);\n this.el.appendChild(container.render().el);\n return container;\n };\n\n Core.prototype.setupMediaControl = function setupMediaControl(container) {\n if (this.mediaControl) {\n this.mediaControl.setContainer(container);\n } else {\n this.mediaControl = this.createMediaControl(_clapprZepto2.default.extend({ container: container, focusElement: this.el }, this.options));\n this.listenTo(this.mediaControl, _events2.default.MEDIACONTROL_FULLSCREEN, this.toggleFullscreen);\n this.listenTo(this.mediaControl, _events2.default.MEDIACONTROL_SHOW, this.onMediaControlShow.bind(this, true));\n this.listenTo(this.mediaControl, _events2.default.MEDIACONTROL_HIDE, this.onMediaControlShow.bind(this, false));\n }\n };\n\n Core.prototype.createMediaControl = function createMediaControl(options) {\n if (options.mediacontrol && options.mediacontrol.external) return new options.mediacontrol.external(options).render();else return new _media_control2.default(options).render();\n };\n\n Core.prototype.getCurrentContainer = function getCurrentContainer() {\n if (!this.mediaControl || !this.mediaControl.container) return this.containers[0];\n\n return this.mediaControl.container;\n };\n\n Core.prototype.getCurrentPlayback = function getCurrentPlayback() {\n var container = this.getCurrentContainer();\n return container && container.playback;\n };\n\n Core.prototype.getPlaybackType = function getPlaybackType() {\n var container = this.getCurrentContainer();\n return container && container.getPlaybackType();\n };\n\n Core.prototype.toggleFullscreen = function toggleFullscreen() {\n if (_utils.Fullscreen.isFullscreen()) {\n _utils.Fullscreen.cancelFullscreen();\n if (!_browser2.default.isiOS) this.$el.removeClass('fullscreen nocursor');\n } else {\n var element = _browser2.default.isiOS ? this.getCurrentContainer().el : this.el;\n _utils.Fullscreen.requestFullscreen(element);\n\n if (!_browser2.default.isiOS) this.$el.addClass('fullscreen');\n }\n this.mediaControl.show();\n };\n\n Core.prototype.showMediaControl = function showMediaControl(event) {\n this.mediaControl.show(event);\n };\n\n Core.prototype.hideMediaControl = function hideMediaControl() {\n this.mediaControl.hide(this.options.hideMediaControlDelay);\n };\n\n Core.prototype.onMediaControlShow = function onMediaControlShow(showing) {\n this.getCurrentContainer().trigger(showing ? _events2.default.CONTAINER_MEDIACONTROL_SHOW : _events2.default.CONTAINER_MEDIACONTROL_HIDE);\n\n if (showing) this.$el.removeClass('nocursor');else if (_utils.Fullscreen.isFullscreen()) this.$el.addClass('nocursor');\n };\n\n /**\n * enables to configure the container after its creation\n * @method configure\n * @param {Object} options all the options to change in form of a javascript object\n */\n\n\n Core.prototype.configure = function configure(options) {\n var _this7 = this;\n\n this._options = _clapprZepto2.default.extend(this._options, options);\n this.configureDomRecycler();\n var sources = options.source || options.sources;\n\n if (sources) this.load(sources, options.mimeType || this.options.mimeType);\n\n this.trigger(_events2.default.CORE_OPTIONS_CHANGE);\n this.containers.forEach(function (container) {\n container.configure(_this7.options);\n });\n this.mediaControl.configure(this.options);\n };\n\n Core.prototype.appendToParent = function appendToParent() {\n var hasCoreParent = this.$el.parent() && this.$el.parent().length;\n !hasCoreParent && this.$el.appendTo(this.options.parentElement);\n };\n\n Core.prototype.render = function render() {\n this.$el.append(this.mediaControl.render().el);\n\n if (!style) style = _styler2.default.getStyleFor(_fonts2.default, { baseUrl: this.options.baseUrl });\n\n (0, _clapprZepto2.default)('head').append(style);\n\n this.options.width = this.options.width || this.$el.width();\n this.options.height = this.options.height || this.$el.height();\n var size = { width: this.options.width, height: this.options.height };\n this.playerInfo.previousSize = this.playerInfo.currentSize = this.playerInfo.computedSize = size;\n this.updateSize();\n\n this.previousSize = { width: this.$el.width(), height: this.$el.height() };\n\n this.enableResizeObserver();\n\n return this;\n };\n\n return Core;\n}(_ui_object2.default);\n\nexports.default = Core;\n\n\n(0, _assign2.default)(Core.prototype, _error_mixin2.default);\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _container_factory = __webpack_require__(150);\n\nvar _container_factory2 = _interopRequireDefault(_container_factory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _container_factory2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof2 = __webpack_require__(39);\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _base_object = __webpack_require__(14);\n\nvar _base_object2 = _interopRequireDefault(_base_object);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _container = __webpack_require__(77);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _clapprZepto = __webpack_require__(6);\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/**\n * The ContainerFactory is responsible for manage playback bootstrap and create containers.\n */\n\nvar ContainerFactory = function (_BaseObject) {\n (0, _inherits3.default)(ContainerFactory, _BaseObject);\n (0, _createClass3.default)(ContainerFactory, [{\n key: 'options',\n get: function get() {\n return this._options;\n },\n set: function set(options) {\n this._options = options;\n }\n }]);\n\n function ContainerFactory(options, loader, i18n, playerError) {\n (0, _classCallCheck3.default)(this, ContainerFactory);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _BaseObject.call(this, options));\n\n _this._i18n = i18n;\n _this.loader = loader;\n _this.playerError = playerError;\n return _this;\n }\n\n ContainerFactory.prototype.createContainers = function createContainers() {\n var _this2 = this;\n\n return _clapprZepto2.default.Deferred(function (promise) {\n promise.resolve(_this2.options.sources.map(function (source) {\n return _this2.createContainer(source);\n }));\n });\n };\n\n ContainerFactory.prototype.findPlaybackPlugin = function findPlaybackPlugin(source, mimeType) {\n return this.loader.playbackPlugins.filter(function (p) {\n return p.canPlay(source, mimeType);\n })[0];\n };\n\n ContainerFactory.prototype.createContainer = function createContainer(source) {\n var resolvedSource = null,\n mimeType = this.options.mimeType;\n if ((typeof source === 'undefined' ? 'undefined' : (0, _typeof3.default)(source)) === 'object') {\n resolvedSource = source.source.toString();\n if (source.mimeType) mimeType = source.mimeType;\n } else {\n resolvedSource = source.toString();\n }\n\n if (resolvedSource.match(/^\\/\\//)) resolvedSource = window.location.protocol + resolvedSource;\n\n var options = _clapprZepto2.default.extend({}, this.options, {\n src: resolvedSource,\n mimeType: mimeType\n });\n var playbackPlugin = this.findPlaybackPlugin(resolvedSource, mimeType);\n var playback = new playbackPlugin(options, this._i18n, this.playerError);\n\n options = _clapprZepto2.default.extend({}, options, { playback: playback });\n\n var container = new _container2.default(options, this._i18n, this.playerError);\n var defer = _clapprZepto2.default.Deferred();\n defer.promise(container);\n this.addContainerPlugins(container);\n this.listenToOnce(container, _events2.default.CONTAINER_READY, function () {\n return defer.resolve(container);\n });\n return container;\n };\n\n ContainerFactory.prototype.addContainerPlugins = function addContainerPlugins(container) {\n this.loader.containerPlugins.forEach(function (Plugin) {\n container.addPlugin(new Plugin(container));\n });\n };\n\n return ContainerFactory;\n}(_base_object2.default);\n\nexports.default = ContainerFactory;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = __webpack_require__(11);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _ui_object = __webpack_require__(22);\n\nvar _ui_object2 = _interopRequireDefault(_ui_object);\n\nvar _error_mixin = __webpack_require__(19);\n\nvar _error_mixin2 = _interopRequireDefault(_error_mixin);\n\n__webpack_require__(152);\n\nvar _clapprZepto = __webpack_require__(6);\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * An abstraction to represent a container for a given playback\n * TODO: describe its responsabilities\n * @class Container\n * @constructor\n * @extends UIObject\n * @module base\n */\nvar Container = function (_UIObject) {\n (0, _inherits3.default)(Container, _UIObject);\n (0, _createClass3.default)(Container, [{\n key: 'name',\n\n /**\n * container's name\n * @method name\n * @default Container\n * @return {String} container's name\n */\n get: function get() {\n return 'Container';\n }\n }, {\n key: 'attributes',\n get: function get() {\n return { class: 'container', 'data-container': '' };\n }\n }, {\n key: 'events',\n get: function get() {\n return {\n 'click': 'clicked',\n 'dblclick': 'dblClicked',\n 'doubleTap': 'dblClicked',\n 'contextmenu': 'onContextMenu',\n 'mouseenter': 'mouseEnter',\n 'mouseleave': 'mouseLeave'\n };\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n\n }, {\n key: 'ended',\n get: function get() {\n return this.playback.ended;\n }\n\n /**\n * Determine if the playback is having to buffer in order for\n * playback to be smooth.\n * (i.e if a live stream is playing smoothly, this will be false)\n * @property buffering\n * @type Boolean\n */\n\n }, {\n key: 'buffering',\n get: function get() {\n return this.playback.buffering;\n }\n\n /**\n * The internationalization plugin.\n * @property i18n\n * @type {Strings}\n */\n\n }, {\n key: 'i18n',\n get: function get() {\n return this._i18n;\n }\n\n /**\n * checks if has closed caption tracks.\n * @property hasClosedCaptionsTracks\n * @type {Boolean}\n */\n\n }, {\n key: 'hasClosedCaptionsTracks',\n get: function get() {\n return this.playback.hasClosedCaptionsTracks;\n }\n\n /**\n * gets the available closed caption tracks.\n * @property closedCaptionsTracks\n * @type {Array} an array of objects with at least 'id' and 'name' properties\n */\n\n }, {\n key: 'closedCaptionsTracks',\n get: function get() {\n return this.playback.closedCaptionsTracks;\n }\n\n /**\n * gets the selected closed caption track index. (-1 is disabled)\n * @property closedCaptionsTrackId\n * @type {Number}\n */\n\n }, {\n key: 'closedCaptionsTrackId',\n get: function get() {\n return this.playback.closedCaptionsTrackId;\n }\n\n /**\n * sets the selected closed caption track index. (-1 is disabled)\n * @property closedCaptionsTrackId\n * @type {Number}\n */\n ,\n set: function set(trackId) {\n this.playback.closedCaptionsTrackId = trackId;\n }\n\n /**\n * it builds a container\n * @method constructor\n * @param {Object} options the options object\n * @param {Strings} i18n the internationalization component\n */\n\n }]);\n\n function Container(options, i18n, playerError) {\n (0, _classCallCheck3.default)(this, Container);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _UIObject.call(this, options));\n\n _this._i18n = i18n;\n _this.currentTime = 0;\n _this.volume = 100;\n _this.playback = options.playback;\n _this.playerError = playerError;\n _this.settings = _clapprZepto2.default.extend({}, _this.playback.settings);\n _this.isReady = false;\n _this.mediaControlDisabled = false;\n _this.plugins = [_this.playback];\n _this.bindEvents();\n return _this;\n }\n\n /**\n * binds playback events to the methods of the container.\n * it listens to playback's events and triggers them as container events.\n *\n * | Playback |\n * |----------|\n * | progress |\n * | timeupdate |\n * | ready |\n * | buffering |\n * | bufferfull |\n * | settingsupdate |\n * | loadedmetadata |\n * | highdefinitionupdate |\n * | bitrate |\n * | playbackstate |\n * | dvr |\n * | mediacontrol_disable |\n * | mediacontrol_enable |\n * | ended |\n * | play |\n * | pause |\n * | error |\n *\n * ps: the events usually translate from PLABACK_x to CONTAINER_x, you can check all the events at `Event` class.\n *\n * @method bindEvents\n */\n\n\n Container.prototype.bindEvents = function bindEvents() {\n this.listenTo(this.playback, _events2.default.PLAYBACK_PROGRESS, this.progress);\n this.listenTo(this.playback, _events2.default.PLAYBACK_TIMEUPDATE, this.timeUpdated);\n this.listenTo(this.playback, _events2.default.PLAYBACK_READY, this.ready);\n this.listenTo(this.playback, _events2.default.PLAYBACK_BUFFERING, this.onBuffering);\n this.listenTo(this.playback, _events2.default.PLAYBACK_BUFFERFULL, this.bufferfull);\n this.listenTo(this.playback, _events2.default.PLAYBACK_SETTINGSUPDATE, this.settingsUpdate);\n this.listenTo(this.playback, _events2.default.PLAYBACK_LOADEDMETADATA, this.loadedMetadata);\n this.listenTo(this.playback, _events2.default.PLAYBACK_HIGHDEFINITIONUPDATE, this.highDefinitionUpdate);\n this.listenTo(this.playback, _events2.default.PLAYBACK_BITRATE, this.updateBitrate);\n this.listenTo(this.playback, _events2.default.PLAYBACK_PLAYBACKSTATE, this.playbackStateChanged);\n this.listenTo(this.playback, _events2.default.PLAYBACK_DVR, this.playbackDvrStateChanged);\n this.listenTo(this.playback, _events2.default.PLAYBACK_MEDIACONTROL_DISABLE, this.disableMediaControl);\n this.listenTo(this.playback, _events2.default.PLAYBACK_MEDIACONTROL_ENABLE, this.enableMediaControl);\n this.listenTo(this.playback, _events2.default.PLAYBACK_SEEKED, this.onSeeked);\n this.listenTo(this.playback, _events2.default.PLAYBACK_ENDED, this.onEnded);\n this.listenTo(this.playback, _events2.default.PLAYBACK_PLAY, this.playing);\n this.listenTo(this.playback, _events2.default.PLAYBACK_PAUSE, this.paused);\n this.listenTo(this.playback, _events2.default.PLAYBACK_STOP, this.stopped);\n this.listenTo(this.playback, _events2.default.PLAYBACK_ERROR, this.error);\n this.listenTo(this.playback, _events2.default.PLAYBACK_SUBTITLE_AVAILABLE, this.subtitleAvailable);\n this.listenTo(this.playback, _events2.default.PLAYBACK_SUBTITLE_CHANGED, this.subtitleChanged);\n };\n\n Container.prototype.subtitleAvailable = function subtitleAvailable() {\n this.trigger(_events2.default.CONTAINER_SUBTITLE_AVAILABLE);\n };\n\n Container.prototype.subtitleChanged = function subtitleChanged(track) {\n this.trigger(_events2.default.CONTAINER_SUBTITLE_CHANGED, track);\n };\n\n Container.prototype.playbackStateChanged = function playbackStateChanged(state) {\n this.trigger(_events2.default.CONTAINER_PLAYBACKSTATE, state);\n };\n\n Container.prototype.playbackDvrStateChanged = function playbackDvrStateChanged(dvrInUse) {\n this.settings = this.playback.settings;\n this.dvrInUse = dvrInUse;\n this.trigger(_events2.default.CONTAINER_PLAYBACKDVRSTATECHANGED, dvrInUse);\n };\n\n Container.prototype.updateBitrate = function updateBitrate(newBitrate) {\n this.trigger(_events2.default.CONTAINER_BITRATE, newBitrate);\n };\n\n Container.prototype.statsReport = function statsReport(metrics) {\n this.trigger(_events2.default.CONTAINER_STATS_REPORT, metrics);\n };\n\n Container.prototype.getPlaybackType = function getPlaybackType() {\n return this.playback.getPlaybackType();\n };\n\n /**\n * returns `true` if DVR is enable otherwise `false`.\n * @method isDvrEnabled\n * @return {Boolean}\n */\n\n\n Container.prototype.isDvrEnabled = function isDvrEnabled() {\n return !!this.playback.dvrEnabled;\n };\n\n /**\n * returns `true` if DVR is in use otherwise `false`.\n * @method isDvrInUse\n * @return {Boolean}\n */\n\n\n Container.prototype.isDvrInUse = function isDvrInUse() {\n return !!this.dvrInUse;\n };\n\n /**\n * destroys the container\n * @method destroy\n */\n\n\n Container.prototype.destroy = function destroy() {\n this.trigger(_events2.default.CONTAINER_DESTROYED, this, this.name);\n this.stopListening();\n this.plugins.forEach(function (plugin) {\n return plugin.destroy();\n });\n this.$el.remove();\n };\n\n Container.prototype.setStyle = function setStyle(style) {\n this.$el.css(style);\n };\n\n Container.prototype.animate = function animate(style, duration) {\n return this.$el.animate(style, duration).promise();\n };\n\n Container.prototype.ready = function ready() {\n this.isReady = true;\n this.trigger(_events2.default.CONTAINER_READY, this.name);\n };\n\n Container.prototype.isPlaying = function isPlaying() {\n return this.playback.isPlaying();\n };\n\n Container.prototype.getStartTimeOffset = function getStartTimeOffset() {\n return this.playback.getStartTimeOffset();\n };\n\n Container.prototype.getCurrentTime = function getCurrentTime() {\n return this.currentTime;\n };\n\n Container.prototype.getDuration = function getDuration() {\n return this.playback.getDuration();\n };\n\n Container.prototype.error = function error(_error) {\n if (!this.isReady) this.ready();\n\n this.trigger(_events2.default.CONTAINER_ERROR, _error, this.name);\n };\n\n Container.prototype.loadedMetadata = function loadedMetadata(metadata) {\n this.trigger(_events2.default.CONTAINER_LOADEDMETADATA, metadata);\n };\n\n Container.prototype.timeUpdated = function timeUpdated(timeProgress) {\n this.currentTime = timeProgress.current;\n this.trigger(_events2.default.CONTAINER_TIMEUPDATE, timeProgress, this.name);\n };\n\n Container.prototype.progress = function progress() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n this.trigger.apply(this, [_events2.default.CONTAINER_PROGRESS].concat(args, [this.name]));\n };\n\n Container.prototype.playing = function playing() {\n this.trigger(_events2.default.CONTAINER_PLAY, this.name);\n };\n\n Container.prototype.paused = function paused() {\n this.trigger(_events2.default.CONTAINER_PAUSE, this.name);\n };\n\n /**\n * plays the playback\n * @method play\n */\n\n\n Container.prototype.play = function play() {\n this.playback.play();\n };\n\n /**\n * stops the playback\n * @method stop\n */\n\n\n Container.prototype.stop = function stop() {\n this.playback.stop();\n this.currentTime = 0;\n };\n\n /**\n * pauses the playback\n * @method pause\n */\n\n\n Container.prototype.pause = function pause() {\n this.playback.pause();\n };\n\n Container.prototype.onEnded = function onEnded() {\n this.trigger(_events2.default.CONTAINER_ENDED, this, this.name);\n this.currentTime = 0;\n };\n\n Container.prototype.stopped = function stopped() {\n this.trigger(_events2.default.CONTAINER_STOP);\n };\n\n Container.prototype.clicked = function clicked() {\n if (!this.options.chromeless || this.options.allowUserInteraction) this.trigger(_events2.default.CONTAINER_CLICK, this, this.name);\n };\n\n Container.prototype.dblClicked = function dblClicked() {\n if (!this.options.chromeless || this.options.allowUserInteraction) this.trigger(_events2.default.CONTAINER_DBLCLICK, this, this.name);\n };\n\n Container.prototype.onContextMenu = function onContextMenu(event) {\n if (!this.options.chromeless || this.options.allowUserInteraction) this.trigger(_events2.default.CONTAINER_CONTEXTMENU, event, this.name);\n };\n\n Container.prototype.seek = function seek(time) {\n this.trigger(_events2.default.CONTAINER_SEEK, time, this.name);\n this.playback.seek(time);\n };\n\n Container.prototype.onSeeked = function onSeeked() {\n this.trigger(_events2.default.CONTAINER_SEEKED, this.name);\n };\n\n Container.prototype.seekPercentage = function seekPercentage(percentage) {\n var duration = this.getDuration();\n if (percentage >= 0 && percentage <= 100) {\n var time = duration * (percentage / 100);\n this.seek(time);\n }\n };\n\n Container.prototype.setVolume = function setVolume(value) {\n this.volume = parseInt(value, 10);\n this.trigger(_events2.default.CONTAINER_VOLUME, value, this.name);\n this.playback.volume(value);\n };\n\n Container.prototype.fullscreen = function fullscreen() {\n this.trigger(_events2.default.CONTAINER_FULLSCREEN, this.name);\n };\n\n Container.prototype.onBuffering = function onBuffering() {\n this.trigger(_events2.default.CONTAINER_STATE_BUFFERING, this.name);\n };\n\n Container.prototype.bufferfull = function bufferfull() {\n this.trigger(_events2.default.CONTAINER_STATE_BUFFERFULL, this.name);\n };\n\n /**\n * adds plugin to the container\n * @method addPlugin\n * @param {Object} plugin\n */\n\n\n Container.prototype.addPlugin = function addPlugin(plugin) {\n this.plugins.push(plugin);\n };\n\n /**\n * checks if a plugin, given its name, exist\n * @method hasPlugin\n * @param {String} name\n * @return {Boolean}\n */\n\n\n Container.prototype.hasPlugin = function hasPlugin(name) {\n return !!this.getPlugin(name);\n };\n\n /**\n * get the plugin given its name\n * @method getPlugin\n * @param {String} name\n */\n\n\n Container.prototype.getPlugin = function getPlugin(name) {\n return this.plugins.filter(function (plugin) {\n return plugin.name === name;\n })[0];\n };\n\n Container.prototype.mouseEnter = function mouseEnter() {\n if (!this.options.chromeless || this.options.allowUserInteraction) this.trigger(_events2.default.CONTAINER_MOUSE_ENTER);\n };\n\n Container.prototype.mouseLeave = function mouseLeave() {\n if (!this.options.chromeless || this.options.allowUserInteraction) this.trigger(_events2.default.CONTAINER_MOUSE_LEAVE);\n };\n\n Container.prototype.settingsUpdate = function settingsUpdate() {\n this.settings = this.playback.settings;\n this.trigger(_events2.default.CONTAINER_SETTINGSUPDATE);\n };\n\n Container.prototype.highDefinitionUpdate = function highDefinitionUpdate(isHD) {\n this.trigger(_events2.default.CONTAINER_HIGHDEFINITIONUPDATE, isHD);\n };\n\n Container.prototype.isHighDefinitionInUse = function isHighDefinitionInUse() {\n return this.playback.isHighDefinitionInUse();\n };\n\n Container.prototype.disableMediaControl = function disableMediaControl() {\n if (!this.mediaControlDisabled) {\n this.mediaControlDisabled = true;\n this.trigger(_events2.default.CONTAINER_MEDIACONTROL_DISABLE);\n }\n };\n\n Container.prototype.enableMediaControl = function enableMediaControl() {\n if (this.mediaControlDisabled) {\n this.mediaControlDisabled = false;\n this.trigger(_events2.default.CONTAINER_MEDIACONTROL_ENABLE);\n }\n };\n\n Container.prototype.updateStyle = function updateStyle() {\n if (!this.options.chromeless || this.options.allowUserInteraction) this.$el.removeClass('chromeless');else this.$el.addClass('chromeless');\n };\n\n /**\n * enables to configure the container after its creation\n * @method configure\n * @param {Object} options all the options to change in form of a javascript object\n */\n\n\n Container.prototype.configure = function configure(options) {\n this._options = _clapprZepto2.default.extend(this._options, options);\n this.updateStyle();\n this.playback.configure(this.options);\n this.trigger(_events2.default.CONTAINER_OPTIONS_CHANGE);\n };\n\n Container.prototype.render = function render() {\n this.$el.append(this.playback.render().el);\n this.updateStyle();\n return this;\n };\n\n return Container;\n}(_ui_object2.default); // Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/**\n * Container is responsible for the video rendering and state\n */\n\nexports.default = Container;\n\n\n(0, _assign2.default)(Container.prototype, _error_mixin2.default);\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(153);\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(9)(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 153 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(7)(false);\n// imports\n\n\n// module\nexports.push([module.i, \".container[data-container]{position:absolute;background-color:#000;height:100%;width:100%}.container[data-container] .chromeless{cursor:default}[data-player]:not(.nocursor) .container[data-container]:not(.chromeless).pointer-enabled{cursor:pointer}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 154 */\n/***/ (function(module, exports) {\n\n\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n // get current location\n var location = typeof window !== \"undefined\" && window.location;\n\n if (!location) {\n throw new Error(\"fixUrls requires window.location\");\n }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t return css;\n }\n\n var baseUrl = location.protocol + \"//\" + location.host;\n var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\( = Match on the word \"url\" with any whitespace after it and then a parens\n\t ( = Start a capturing group\n\t (?: = Start a non-capturing group\n\t [^)(] = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t (?: = Start another non-capturing groups\n\t [^)(]+ = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t [^)(]* = Match anything that isn't a parentheses\n\t \\) = Match a end parentheses\n\t ) = End Group\n *\\) = Match anything and then a close parens\n ) = Close non-capturing group\n * = Match anything\n ) = Close capturing group\n\t \\) = Match a close parens\n\n\t /gi = Get all matches, not the first. Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(unquotedOrigUrl)) {\n\t\t return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n\n\n/***/ }),\n/* 155 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(156);\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = __webpack_require__(5);\n\nvar _vendor = __webpack_require__(59);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _ui_object = __webpack_require__(22);\n\nvar _ui_object2 = _interopRequireDefault(_ui_object);\n\nvar _browser = __webpack_require__(28);\n\nvar _browser2 = _interopRequireDefault(_browser);\n\nvar _mediator = __webpack_require__(61);\n\nvar _mediator2 = _interopRequireDefault(_mediator);\n\nvar _template = __webpack_require__(10);\n\nvar _template2 = _interopRequireDefault(_template);\n\nvar _playback = __webpack_require__(13);\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nvar _clapprZepto = __webpack_require__(6);\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\n__webpack_require__(158);\n\nvar _mediaControl = __webpack_require__(160);\n\nvar _mediaControl2 = _interopRequireDefault(_mediaControl);\n\nvar _play = __webpack_require__(62);\n\nvar _play2 = _interopRequireDefault(_play);\n\nvar _pause = __webpack_require__(82);\n\nvar _pause2 = _interopRequireDefault(_pause);\n\nvar _stop = __webpack_require__(161);\n\nvar _stop2 = _interopRequireDefault(_stop);\n\nvar _volume = __webpack_require__(162);\n\nvar _volume2 = _interopRequireDefault(_volume);\n\nvar _mute = __webpack_require__(163);\n\nvar _mute2 = _interopRequireDefault(_mute);\n\nvar _expand = __webpack_require__(164);\n\nvar _expand2 = _interopRequireDefault(_expand);\n\nvar _shrink = __webpack_require__(165);\n\nvar _shrink2 = _interopRequireDefault(_shrink);\n\nvar _hd = __webpack_require__(166);\n\nvar _hd2 = _interopRequireDefault(_hd);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MediaControl = function (_UIObject) {\n (0, _inherits3.default)(MediaControl, _UIObject);\n (0, _createClass3.default)(MediaControl, [{\n key: 'name',\n get: function get() {\n return 'MediaControl';\n }\n }, {\n key: 'disabled',\n get: function get() {\n return this.userDisabled || this.container && this.container.getPlaybackType() === _playback2.default.NO_OP;\n }\n }, {\n key: 'attributes',\n get: function get() {\n return {\n 'class': 'media-control',\n 'data-media-control': ''\n };\n }\n }, {\n key: 'events',\n get: function get() {\n return {\n 'click [data-play]': 'play',\n 'click [data-pause]': 'pause',\n 'click [data-playpause]': 'togglePlayPause',\n 'click [data-stop]': 'stop',\n 'click [data-playstop]': 'togglePlayStop',\n 'click [data-fullscreen]': 'toggleFullscreen',\n 'click .bar-container[data-seekbar]': 'seek',\n 'click .bar-container[data-volume]': 'onVolumeClick',\n 'click .drawer-icon[data-volume]': 'toggleMute',\n 'mouseenter .drawer-container[data-volume]': 'showVolumeBar',\n 'mouseleave .drawer-container[data-volume]': 'hideVolumeBar',\n 'mousedown .bar-container[data-volume]': 'startVolumeDrag',\n 'mousemove .bar-container[data-volume]': 'mousemoveOnVolumeBar',\n 'mousedown .bar-scrubber[data-seekbar]': 'startSeekDrag',\n 'mousemove .bar-container[data-seekbar]': 'mousemoveOnSeekBar',\n 'mouseleave .bar-container[data-seekbar]': 'mouseleaveOnSeekBar',\n 'mouseenter .media-control-layer[data-controls]': 'setUserKeepVisible',\n 'mouseleave .media-control-layer[data-controls]': 'resetUserKeepVisible'\n };\n }\n }, {\n key: 'template',\n get: function get() {\n return (0, _template2.default)(_mediaControl2.default);\n }\n }, {\n key: 'volume',\n get: function get() {\n return this.container && this.container.isReady ? this.container.volume : this.intendedVolume;\n }\n }, {\n key: 'muted',\n get: function get() {\n return this.volume === 0;\n }\n }]);\n\n function MediaControl(options) {\n (0, _classCallCheck3.default)(this, MediaControl);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _UIObject.call(this, options));\n\n _this.persistConfig = _this.options.persistConfig;\n _this.container = options.container;\n _this.currentPositionValue = null;\n _this.currentDurationValue = null;\n _this.keepVisible = false;\n _this.fullScreenOnVideoTagSupported = null; // unknown\n _this.setInitialVolume();\n _this.addEventListeners();\n _this.settings = {\n left: ['play', 'stop', 'pause'],\n right: ['volume'],\n default: ['position', 'seekbar', 'duration']\n };\n _this.kibo = new _vendor.Kibo(_this.options.focusElement);\n _this.bindKeyEvents();\n\n if (_this.container) {\n if (!_clapprZepto2.default.isEmptyObject(_this.container.settings)) _this.settings = _clapprZepto2.default.extend({}, _this.container.settings);\n } else {\n _this.settings = {};\n }\n\n _this.userDisabled = false;\n if (_this.container && _this.container.mediaControlDisabled || _this.options.chromeless) _this.disable();\n\n _this.stopDragHandler = function (event) {\n return _this.stopDrag(event);\n };\n _this.updateDragHandler = function (event) {\n return _this.updateDrag(event);\n };\n (0, _clapprZepto2.default)(document).bind('mouseup', _this.stopDragHandler);\n (0, _clapprZepto2.default)(document).bind('mousemove', _this.updateDragHandler);\n return _this;\n }\n\n MediaControl.prototype.addEventListeners = function addEventListeners() {\n if (this.container) {\n _mediator2.default.on(this.options.playerId + ':' + _events2.default.PLAYER_RESIZE, this.playerResize, this);\n this.listenTo(this.container, _events2.default.CONTAINER_PLAY, this.changeTogglePlay);\n this.listenTo(this.container, _events2.default.CONTAINER_PAUSE, this.changeTogglePlay);\n this.listenTo(this.container, _events2.default.CONTAINER_STOP, this.changeTogglePlay);\n this.listenTo(this.container, _events2.default.CONTAINER_DBLCLICK, this.toggleFullscreen);\n this.listenTo(this.container, _events2.default.CONTAINER_TIMEUPDATE, this.onTimeUpdate);\n this.listenTo(this.container, _events2.default.CONTAINER_PROGRESS, this.updateProgressBar);\n this.listenTo(this.container, _events2.default.CONTAINER_SETTINGSUPDATE, this.settingsUpdate);\n this.listenTo(this.container, _events2.default.CONTAINER_PLAYBACKDVRSTATECHANGED, this.settingsUpdate);\n this.listenTo(this.container, _events2.default.CONTAINER_HIGHDEFINITIONUPDATE, this.highDefinitionUpdate);\n this.listenTo(this.container, _events2.default.CONTAINER_MEDIACONTROL_DISABLE, this.disable);\n this.listenTo(this.container, _events2.default.CONTAINER_MEDIACONTROL_ENABLE, this.enable);\n this.listenTo(this.container, _events2.default.CONTAINER_ENDED, this.ended);\n this.listenTo(this.container, _events2.default.CONTAINER_VOLUME, this.onVolumeChanged);\n this.listenTo(this.container, _events2.default.CONTAINER_OPTIONS_CHANGE, this.setInitialVolume);\n if (this.container.playback.el.nodeName.toLowerCase() === 'video') {\n // wait until the metadata has loaded and then check if fullscreen on video tag is supported\n this.listenToOnce(this.container, _events2.default.CONTAINER_LOADEDMETADATA, this.onLoadedMetadataOnVideoTag);\n }\n }\n };\n\n MediaControl.prototype.disable = function disable() {\n this.userDisabled = true;\n this.hide();\n this.unbindKeyEvents();\n this.$el.hide();\n };\n\n MediaControl.prototype.enable = function enable() {\n if (this.options.chromeless) return;\n this.userDisabled = false;\n this.bindKeyEvents();\n this.show();\n };\n\n MediaControl.prototype.play = function play() {\n this.container.play();\n };\n\n MediaControl.prototype.pause = function pause() {\n this.container.pause();\n };\n\n MediaControl.prototype.stop = function stop() {\n this.container.stop();\n };\n\n MediaControl.prototype.setInitialVolume = function setInitialVolume() {\n var initialVolume = this.persistConfig ? _utils.Config.restore('volume') : 100;\n var options = this.container && this.container.options || this.options;\n this.setVolume(options.mute ? 0 : initialVolume, true);\n };\n\n MediaControl.prototype.onVolumeChanged = function onVolumeChanged() {\n this.updateVolumeUI();\n };\n\n MediaControl.prototype.onLoadedMetadataOnVideoTag = function onLoadedMetadataOnVideoTag() {\n var video = this.container.playback.el;\n // video.webkitSupportsFullscreen is deprecated but iOS appears to only use this\n // see https://github.com/clappr/clappr/issues/1127\n if (!_utils.Fullscreen.fullscreenEnabled() && video.webkitSupportsFullscreen) {\n this.fullScreenOnVideoTagSupported = true;\n this.settingsUpdate();\n }\n };\n\n MediaControl.prototype.updateVolumeUI = function updateVolumeUI() {\n if (!this.rendered) {\n // this will be called after a render\n return;\n }\n // update volume bar scrubber/fill on bar mode\n this.$volumeBarContainer.find('.bar-fill-2').css({});\n var containerWidth = this.$volumeBarContainer.width();\n var barWidth = this.$volumeBarBackground.width();\n var offset = (containerWidth - barWidth) / 2.0;\n var pos = barWidth * this.volume / 100.0 + offset;\n this.$volumeBarFill.css({ width: this.volume + '%' });\n this.$volumeBarScrubber.css({ left: pos });\n\n // update volume bar segments on segmented bar mode\n this.$volumeBarContainer.find('.segmented-bar-element').removeClass('fill');\n var item = Math.ceil(this.volume / 10.0);\n this.$volumeBarContainer.find('.segmented-bar-element').slice(0, item).addClass('fill');\n this.$volumeIcon.html('');\n this.$volumeIcon.removeClass('muted');\n if (!this.muted) {\n this.$volumeIcon.append(_volume2.default);\n } else {\n this.$volumeIcon.append(_mute2.default);\n this.$volumeIcon.addClass('muted');\n }\n this.applyButtonStyle(this.$volumeIcon);\n };\n\n MediaControl.prototype.changeTogglePlay = function changeTogglePlay() {\n this.$playPauseToggle.html('');\n this.$playStopToggle.html('');\n if (this.container && this.container.isPlaying()) {\n this.$playPauseToggle.append(_pause2.default);\n this.$playStopToggle.append(_stop2.default);\n this.trigger(_events2.default.MEDIACONTROL_PLAYING);\n } else {\n this.$playPauseToggle.append(_play2.default);\n this.$playStopToggle.append(_play2.default);\n this.trigger(_events2.default.MEDIACONTROL_NOTPLAYING);\n if (_browser2.default.isMobile) this.show();\n }\n this.applyButtonStyle(this.$playPauseToggle);\n this.applyButtonStyle(this.$playStopToggle);\n };\n\n MediaControl.prototype.mousemoveOnSeekBar = function mousemoveOnSeekBar(event) {\n if (this.settings.seekEnabled) {\n var offsetX = event.pageX - this.$seekBarContainer.offset().left - this.$seekBarHover.width() / 2;\n this.$seekBarHover.css({ left: offsetX });\n }\n this.trigger(_events2.default.MEDIACONTROL_MOUSEMOVE_SEEKBAR, event);\n };\n\n MediaControl.prototype.mouseleaveOnSeekBar = function mouseleaveOnSeekBar(event) {\n this.trigger(_events2.default.MEDIACONTROL_MOUSELEAVE_SEEKBAR, event);\n };\n\n MediaControl.prototype.onVolumeClick = function onVolumeClick(event) {\n this.setVolume(this.getVolumeFromUIEvent(event));\n };\n\n MediaControl.prototype.mousemoveOnVolumeBar = function mousemoveOnVolumeBar(event) {\n if (this.draggingVolumeBar) this.setVolume(this.getVolumeFromUIEvent(event));\n };\n\n MediaControl.prototype.playerResize = function playerResize(size) {\n this.$fullscreenToggle.html('');\n if (_utils.Fullscreen.isFullscreen()) this.$fullscreenToggle.append(_shrink2.default);else this.$fullscreenToggle.append(_expand2.default);\n\n this.applyButtonStyle(this.$fullscreenToggle);\n this.$el.removeClass('w320');\n if (size.width <= 320 || this.options.hideVolumeBar) this.$el.addClass('w320');\n };\n\n MediaControl.prototype.togglePlayPause = function togglePlayPause() {\n if (this.container.isPlaying()) this.container.pause();else this.container.play();\n\n return false;\n };\n\n MediaControl.prototype.togglePlayStop = function togglePlayStop() {\n if (this.container.isPlaying()) this.container.stop();else this.container.play();\n };\n\n MediaControl.prototype.startSeekDrag = function startSeekDrag(event) {\n if (!this.settings.seekEnabled) return;\n this.draggingSeekBar = true;\n this.$el.addClass('dragging');\n this.$seekBarLoaded.addClass('media-control-notransition');\n this.$seekBarPosition.addClass('media-control-notransition');\n this.$seekBarScrubber.addClass('media-control-notransition');\n if (event) event.preventDefault();\n };\n\n MediaControl.prototype.startVolumeDrag = function startVolumeDrag(event) {\n this.draggingVolumeBar = true;\n this.$el.addClass('dragging');\n if (event) event.preventDefault();\n };\n\n MediaControl.prototype.stopDrag = function stopDrag(event) {\n if (this.draggingSeekBar) this.seek(event);\n\n this.$el.removeClass('dragging');\n this.$seekBarLoaded.removeClass('media-control-notransition');\n this.$seekBarPosition.removeClass('media-control-notransition');\n this.$seekBarScrubber.removeClass('media-control-notransition dragging');\n this.draggingSeekBar = false;\n this.draggingVolumeBar = false;\n };\n\n MediaControl.prototype.updateDrag = function updateDrag(event) {\n if (this.draggingSeekBar) {\n event.preventDefault();\n var offsetX = event.pageX - this.$seekBarContainer.offset().left;\n var pos = offsetX / this.$seekBarContainer.width() * 100;\n pos = Math.min(100, Math.max(pos, 0));\n this.setSeekPercentage(pos);\n } else if (this.draggingVolumeBar) {\n event.preventDefault();\n this.setVolume(this.getVolumeFromUIEvent(event));\n }\n };\n\n MediaControl.prototype.getVolumeFromUIEvent = function getVolumeFromUIEvent(event) {\n var offsetY = event.pageX - this.$volumeBarContainer.offset().left;\n var volumeFromUI = offsetY / this.$volumeBarContainer.width() * 100;\n return volumeFromUI;\n };\n\n MediaControl.prototype.toggleMute = function toggleMute() {\n this.setVolume(this.muted ? 100 : 0);\n };\n\n MediaControl.prototype.setVolume = function setVolume(value) {\n var _this2 = this;\n\n var isInitialVolume = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n value = Math.min(100, Math.max(value, 0));\n // this will hold the intended volume\n // it may not actually get set to this straight away\n // if the container is not ready etc\n this.intendedVolume = value;\n this.persistConfig && !isInitialVolume && _utils.Config.persist('volume', value);\n var setWhenContainerReady = function setWhenContainerReady() {\n if (_this2.container.isReady) {\n _this2.container.setVolume(value);\n } else {\n _this2.listenToOnce(_this2.container, _events2.default.CONTAINER_READY, function () {\n _this2.container.setVolume(value);\n });\n }\n };\n\n if (!this.container) {\n this.listenToOnce(this, _events2.default.MEDIACONTROL_CONTAINERCHANGED, function () {\n setWhenContainerReady();\n });\n } else {\n setWhenContainerReady();\n }\n };\n\n MediaControl.prototype.toggleFullscreen = function toggleFullscreen() {\n this.trigger(_events2.default.MEDIACONTROL_FULLSCREEN, this.name);\n this.container.fullscreen();\n this.resetUserKeepVisible();\n };\n\n MediaControl.prototype.setContainer = function setContainer(container) {\n if (this.container) {\n this.stopListening(this.container);\n this.fullScreenOnVideoTagSupported = null;\n }\n _mediator2.default.off(this.options.playerId + ':' + _events2.default.PLAYER_RESIZE, this.playerResize, this);\n this.container = container;\n // set the new container to match the volume of the last one\n this.setVolume(this.intendedVolume, true);\n this.changeTogglePlay();\n this.addEventListeners();\n this.settingsUpdate();\n this.container.trigger(_events2.default.CONTAINER_PLAYBACKDVRSTATECHANGED, this.container.isDvrInUse());\n if (this.container.mediaControlDisabled) this.disable();\n\n this.trigger(_events2.default.MEDIACONTROL_CONTAINERCHANGED);\n };\n\n MediaControl.prototype.showVolumeBar = function showVolumeBar() {\n if (this.hideVolumeId) clearTimeout(this.hideVolumeId);\n\n this.$volumeBarContainer.removeClass('volume-bar-hide');\n };\n\n MediaControl.prototype.hideVolumeBar = function hideVolumeBar() {\n var _this3 = this;\n\n var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 400;\n\n if (!this.$volumeBarContainer) return;\n if (this.draggingVolumeBar) {\n this.hideVolumeId = setTimeout(function () {\n return _this3.hideVolumeBar();\n }, timeout);\n } else {\n if (this.hideVolumeId) clearTimeout(this.hideVolumeId);\n\n this.hideVolumeId = setTimeout(function () {\n return _this3.$volumeBarContainer.addClass('volume-bar-hide');\n }, timeout);\n }\n };\n\n MediaControl.prototype.ended = function ended() {\n this.changeTogglePlay();\n };\n\n MediaControl.prototype.updateProgressBar = function updateProgressBar(progress) {\n var loadedStart = progress.start / progress.total * 100;\n var loadedEnd = progress.current / progress.total * 100;\n this.$seekBarLoaded.css({ left: loadedStart + '%', width: loadedEnd - loadedStart + '%' });\n };\n\n MediaControl.prototype.onTimeUpdate = function onTimeUpdate(timeProgress) {\n if (this.draggingSeekBar) return;\n // TODO why should current time ever be negative?\n var position = timeProgress.current < 0 ? timeProgress.total : timeProgress.current;\n\n this.currentPositionValue = position;\n this.currentDurationValue = timeProgress.total;\n this.renderSeekBar();\n };\n\n MediaControl.prototype.renderSeekBar = function renderSeekBar() {\n if (this.currentPositionValue === null || this.currentDurationValue === null) {\n // this will be triggered as soon as these beocome available\n return;\n }\n\n // default to 100%\n this.currentSeekBarPercentage = 100;\n if (this.container.getPlaybackType() !== _playback2.default.LIVE || this.container.isDvrInUse()) this.currentSeekBarPercentage = this.currentPositionValue / this.currentDurationValue * 100;\n\n this.setSeekPercentage(this.currentSeekBarPercentage);\n\n var newPosition = (0, _utils.formatTime)(this.currentPositionValue);\n var newDuration = (0, _utils.formatTime)(this.currentDurationValue);\n if (newPosition !== this.displayedPosition) {\n this.$position.text(newPosition);\n this.displayedPosition = newPosition;\n }\n if (newDuration !== this.displayedDuration) {\n this.$duration.text(newDuration);\n this.displayedDuration = newDuration;\n }\n };\n\n MediaControl.prototype.seek = function seek(event) {\n if (!this.settings.seekEnabled) return;\n var offsetX = event.pageX - this.$seekBarContainer.offset().left;\n var pos = offsetX / this.$seekBarContainer.width() * 100;\n pos = Math.min(100, Math.max(pos, 0));\n this.container.seekPercentage(pos);\n this.setSeekPercentage(pos);\n return false;\n };\n\n MediaControl.prototype.setKeepVisible = function setKeepVisible() {\n this.keepVisible = true;\n };\n\n MediaControl.prototype.resetKeepVisible = function resetKeepVisible() {\n this.keepVisible = false;\n };\n\n MediaControl.prototype.setUserKeepVisible = function setUserKeepVisible() {\n this.userKeepVisible = true;\n };\n\n MediaControl.prototype.resetUserKeepVisible = function resetUserKeepVisible() {\n this.userKeepVisible = false;\n };\n\n MediaControl.prototype.isVisible = function isVisible() {\n return !this.$el.hasClass('media-control-hide');\n };\n\n MediaControl.prototype.show = function show(event) {\n var _this4 = this;\n\n if (this.disabled) return;\n\n var timeout = 2000;\n if (!event || event.clientX !== this.lastMouseX && event.clientY !== this.lastMouseY || navigator.userAgent.match(/firefox/i)) {\n clearTimeout(this.hideId);\n this.$el.show();\n this.trigger(_events2.default.MEDIACONTROL_SHOW, this.name);\n this.$el.removeClass('media-control-hide');\n this.hideId = setTimeout(function () {\n return _this4.hide();\n }, timeout);\n if (event) {\n this.lastMouseX = event.clientX;\n this.lastMouseY = event.clientY;\n }\n }\n };\n\n MediaControl.prototype.hide = function hide() {\n var _this5 = this;\n\n var delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (!this.isVisible()) return;\n\n var timeout = delay || 2000;\n clearTimeout(this.hideId);\n if (!this.disabled && this.options.hideMediaControl === false) return;\n\n if (!this.disabled && (delay || this.userKeepVisible || this.keepVisible || this.draggingSeekBar || this.draggingVolumeBar)) {\n this.hideId = setTimeout(function () {\n return _this5.hide();\n }, timeout);\n } else {\n this.trigger(_events2.default.MEDIACONTROL_HIDE, this.name);\n this.$el.addClass('media-control-hide');\n this.hideVolumeBar(0);\n }\n };\n\n MediaControl.prototype.settingsUpdate = function settingsUpdate() {\n var newSettings = this.getSettings();\n if (newSettings && !this.fullScreenOnVideoTagSupported && !_utils.Fullscreen.fullscreenEnabled()) {\n // remove fullscreen from settings if it is present\n newSettings.default && (0, _utils.removeArrayItem)(newSettings.default, 'fullscreen');\n newSettings.left && (0, _utils.removeArrayItem)(newSettings.left, 'fullscreen');\n newSettings.right && (0, _utils.removeArrayItem)(newSettings.right, 'fullscreen');\n }\n var settingsChanged = (0, _stringify2.default)(this.settings) !== (0, _stringify2.default)(newSettings);\n if (settingsChanged) {\n this.settings = newSettings;\n this.render();\n }\n };\n\n MediaControl.prototype.getSettings = function getSettings() {\n return _clapprZepto2.default.extend(true, {}, this.container.settings);\n };\n\n MediaControl.prototype.highDefinitionUpdate = function highDefinitionUpdate(isHD) {\n this.isHD = isHD;\n var method = isHD ? 'addClass' : 'removeClass';\n this.$hdIndicator[method]('enabled');\n };\n\n MediaControl.prototype.createCachedElements = function createCachedElements() {\n var $layer = this.$el.find('.media-control-layer');\n this.$duration = $layer.find('.media-control-indicator[data-duration]');\n this.$fullscreenToggle = $layer.find('button.media-control-button[data-fullscreen]');\n this.$playPauseToggle = $layer.find('button.media-control-button[data-playpause]');\n this.$playStopToggle = $layer.find('button.media-control-button[data-playstop]');\n this.$position = $layer.find('.media-control-indicator[data-position]');\n this.$seekBarContainer = $layer.find('.bar-container[data-seekbar]');\n this.$seekBarHover = $layer.find('.bar-hover[data-seekbar]');\n this.$seekBarLoaded = $layer.find('.bar-fill-1[data-seekbar]');\n this.$seekBarPosition = $layer.find('.bar-fill-2[data-seekbar]');\n this.$seekBarScrubber = $layer.find('.bar-scrubber[data-seekbar]');\n this.$volumeBarContainer = $layer.find('.bar-container[data-volume]');\n this.$volumeContainer = $layer.find('.drawer-container[data-volume]');\n this.$volumeIcon = $layer.find('.drawer-icon[data-volume]');\n this.$volumeBarBackground = this.$el.find('.bar-background[data-volume]');\n this.$volumeBarFill = this.$el.find('.bar-fill-1[data-volume]');\n this.$volumeBarScrubber = this.$el.find('.bar-scrubber[data-volume]');\n this.$hdIndicator = this.$el.find('button.media-control-button[data-hd-indicator]');\n this.resetIndicators();\n this.initializeIcons();\n };\n\n MediaControl.prototype.resetIndicators = function resetIndicators() {\n this.displayedPosition = this.$position.text();\n this.displayedDuration = this.$duration.text();\n };\n\n MediaControl.prototype.initializeIcons = function initializeIcons() {\n var $layer = this.$el.find('.media-control-layer');\n $layer.find('button.media-control-button[data-play]').append(_play2.default);\n $layer.find('button.media-control-button[data-pause]').append(_pause2.default);\n $layer.find('button.media-control-button[data-stop]').append(_stop2.default);\n this.$playPauseToggle.append(_play2.default);\n this.$playStopToggle.append(_play2.default);\n this.$volumeIcon.append(_volume2.default);\n this.$fullscreenToggle.append(_expand2.default);\n this.$hdIndicator.append(_hd2.default);\n };\n\n MediaControl.prototype.setSeekPercentage = function setSeekPercentage(value) {\n value = Math.max(Math.min(value, 100.0), 0);\n if (this.displayedSeekBarPercentage === value) {\n // not changed since last update\n return;\n }\n this.displayedSeekBarPercentage = value;\n\n this.$seekBarPosition.removeClass('media-control-notransition');\n this.$seekBarScrubber.removeClass('media-control-notransition');\n this.$seekBarPosition.css({ width: value + '%' });\n this.$seekBarScrubber.css({ left: value + '%' });\n };\n\n MediaControl.prototype.seekRelative = function seekRelative(delta) {\n if (!this.settings.seekEnabled) return;\n var currentTime = this.container.getCurrentTime();\n var duration = this.container.getDuration();\n var position = Math.min(Math.max(currentTime + delta, 0), duration);\n position = Math.min(position * 100 / duration, 100);\n this.container.seekPercentage(position);\n };\n\n MediaControl.prototype.bindKeyAndShow = function bindKeyAndShow(key, cb) {\n var _this6 = this;\n\n this.kibo.down(key, function () {\n _this6.show();\n return cb();\n });\n };\n\n MediaControl.prototype.bindKeyEvents = function bindKeyEvents() {\n var _this7 = this;\n\n if (_browser2.default.isMobile || this.options.disableKeyboardShortcuts) return;\n\n this.unbindKeyEvents();\n\n this.bindKeyAndShow('space', function () {\n return _this7.togglePlayPause();\n });\n this.bindKeyAndShow('left', function () {\n return _this7.seekRelative(-5);\n });\n this.bindKeyAndShow('right', function () {\n return _this7.seekRelative(5);\n });\n this.bindKeyAndShow('shift left', function () {\n return _this7.seekRelative(-10);\n });\n this.bindKeyAndShow('shift right', function () {\n return _this7.seekRelative(10);\n });\n this.bindKeyAndShow('shift ctrl left', function () {\n return _this7.seekRelative(-15);\n });\n this.bindKeyAndShow('shift ctrl right', function () {\n return _this7.seekRelative(15);\n });\n var keys = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];\n keys.forEach(function (i) {\n _this7.bindKeyAndShow(i, function () {\n return _this7.settings.seekEnabled && _this7.container.seekPercentage(i * 10);\n });\n });\n };\n\n MediaControl.prototype.unbindKeyEvents = function unbindKeyEvents() {\n if (this.kibo) {\n this.kibo.off('space');\n this.kibo.off('left');\n this.kibo.off('right');\n this.kibo.off('shift left');\n this.kibo.off('shift right');\n this.kibo.off('shift ctrl left');\n this.kibo.off('shift ctrl right');\n this.kibo.off(['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']);\n }\n };\n\n MediaControl.prototype.parseColors = function parseColors() {\n if (this.options.mediacontrol) {\n this.buttonsColor = this.options.mediacontrol.buttons;\n var seekbarColor = this.options.mediacontrol.seekbar;\n this.$el.find('.bar-fill-2[data-seekbar]').css('background-color', seekbarColor);\n this.$el.find('.media-control-icon svg path').css('fill', this.buttonsColor);\n this.$el.find('.segmented-bar-element[data-volume]').css('boxShadow', 'inset 2px 0 0 ' + this.buttonsColor);\n }\n };\n\n MediaControl.prototype.applyButtonStyle = function applyButtonStyle(element) {\n if (this.buttonsColor && element) (0, _clapprZepto2.default)(element).find('svg path').css('fill', this.buttonsColor);\n };\n\n MediaControl.prototype.destroy = function destroy() {\n this.remove();\n (0, _clapprZepto2.default)(document).unbind('mouseup', this.stopDragHandler);\n (0, _clapprZepto2.default)(document).unbind('mousemove', this.updateDragHandler);\n this.unbindKeyEvents();\n this.stopListening();\n };\n\n /**\n * enables to configure the media control after its creation\n * @method configure\n * @param {Object} options all the options to change in form of a javascript object\n */\n\n\n MediaControl.prototype.configure = function configure(options) {\n this._options = _clapprZepto2.default.extend(this._options, options);\n this.trigger(_events2.default.MEDIACONTROL_OPTIONS_CHANGE);\n };\n\n MediaControl.prototype.render = function render() {\n var _this8 = this;\n\n var timeout = this.options.hideMediaControlDelay || 2000;\n this.$el.html(this.template({ settings: this.settings }));\n this.createCachedElements();\n this.$playPauseToggle.addClass('paused');\n this.$playStopToggle.addClass('stopped');\n\n this.changeTogglePlay();\n this.hideId = setTimeout(function () {\n return _this8.hide();\n }, timeout);\n if (this.disabled) this.hide();\n\n // Video volume cannot be changed with Safari on mobile devices\n // Display mute/unmute icon only if Safari version >= 10\n if (_browser2.default.isSafari && _browser2.default.isMobile) {\n if (_browser2.default.version < 10) this.$volumeContainer.css('display', 'none');else this.$volumeBarContainer.css('display', 'none');\n }\n\n this.$seekBarPosition.addClass('media-control-notransition');\n this.$seekBarScrubber.addClass('media-control-notransition');\n\n var previousSeekPercentage = 0;\n if (this.displayedSeekBarPercentage) previousSeekPercentage = this.displayedSeekBarPercentage;\n\n this.displayedSeekBarPercentage = null;\n this.setSeekPercentage(previousSeekPercentage);\n\n process.nextTick(function () {\n if (!_this8.settings.seekEnabled) _this8.$seekBarContainer.addClass('seek-disabled');\n\n _this8.playerResize({ width: _this8.options.width, height: _this8.options.height });\n _this8.hideVolumeBar(0);\n });\n\n this.parseColors();\n this.highDefinitionUpdate(this.isHD);\n\n this.rendered = true;\n this.updateVolumeUI();\n this.trigger(_events2.default.MEDIACONTROL_RENDERED);\n return this;\n };\n\n return MediaControl;\n}(_ui_object2.default); // Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/**\n * The MediaControl is responsible for displaying the Player controls.\n */\n\nexports.default = MediaControl;\n\n\nMediaControl.extend = function (properties) {\n return (0, _utils.extend)(MediaControl, properties);\n};\nmodule.exports = exports['default'];\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(60)))\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(157), __esModule: true };\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(8)\n , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});\nmodule.exports = function stringify(it){ // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(159);\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(9)(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./media-control.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./media-control.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar escape = __webpack_require__(80);\nexports = module.exports = __webpack_require__(7)(false);\n// imports\n\n\n// module\nexports.push([module.i, \".media-control-notransition{transition:none!important}.media-control[data-media-control]{position:absolute;width:100%;height:100%;z-index:9999;pointer-events:none}.media-control[data-media-control].dragging{pointer-events:auto;cursor:-webkit-grabbing!important;cursor:grabbing!important;cursor:url(\" + escape(__webpack_require__(81)) + \"),move}.media-control[data-media-control].dragging *{cursor:-webkit-grabbing!important;cursor:grabbing!important;cursor:url(\" + escape(__webpack_require__(81)) + \"),move}.media-control[data-media-control] .media-control-background[data-background]{position:absolute;height:40%;width:100%;bottom:0;background:linear-gradient(transparent,rgba(0,0,0,.9));transition:opacity .6s ease-out}.media-control[data-media-control] .media-control-icon{line-height:0;letter-spacing:0;speak:none;color:#fff;opacity:.5;vertical-align:middle;text-align:left;transition:all .1s ease}.media-control[data-media-control] .media-control-icon:hover{color:#fff;opacity:.75;text-shadow:hsla(0,0%,100%,.8) 0 0 5px}.media-control[data-media-control].media-control-hide .media-control-background[data-background]{opacity:0}.media-control[data-media-control].media-control-hide .media-control-layer[data-controls]{bottom:-50px}.media-control[data-media-control].media-control-hide .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar]{opacity:0}.media-control[data-media-control] .media-control-layer[data-controls]{position:absolute;bottom:7px;width:100%;height:32px;font-size:0;vertical-align:middle;pointer-events:auto;transition:bottom .4s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-left-panel[data-media-control]{position:absolute;top:0;left:4px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-center-panel[data-media-control]{height:100%;text-align:center;line-height:32px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-right-panel[data-media-control]{position:absolute;top:0;right:4px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button{background-color:transparent;border:0;margin:0 6px;padding:0;cursor:pointer;display:inline-block;width:32px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button svg{width:100%;height:22px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button svg path{fill:#fff}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button:focus{outline:none}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-pause],.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-play],.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-stop]{float:left;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen]{float:right;background-color:transparent;border:0;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator]{background-color:transparent;border:0;cursor:default;display:none;float:right;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled{display:block;opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled:hover{opacity:1;text-shadow:none}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause],.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop]{float:left}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration],.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position]{display:inline-block;font-size:10px;color:#fff;cursor:default;line-height:32px;position:relative}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position]{margin:0 6px 0 7px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]{color:hsla(0,0%,100%,.5);margin-right:6px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]:before{content:\\\"|\\\";margin-right:7px}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]{position:absolute;top:-20px;left:0;display:inline-block;vertical-align:middle;width:100%;height:25px;cursor:pointer}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar]{width:100%;height:1px;position:relative;top:12px;background-color:#666}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-1[data-seekbar]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#c2c2c2;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#005aff;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:0;position:absolute;top:-3px;width:5px;height:7px;background-color:hsla(0,0%,100%,.5);transition:opacity .1s ease}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]:hover .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled{cursor:default}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled:hover .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:0}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar]{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);top:2px;left:0;width:20px;height:20px;opacity:1;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar] .bar-scrubber-icon[data-seekbar]{position:absolute;left:6px;top:6px;width:8px;height:8px;border-radius:10px;box-shadow:0 0 0 6px hsla(0,0%,100%,.2);background-color:#fff}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume]{float:right;display:inline-block;height:32px;cursor:pointer;margin:0 6px;box-sizing:border-box}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume]{float:left;bottom:0}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]{background-color:transparent;border:0;box-sizing:content-box;width:32px;height:32px;opacity:.5}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]:hover{opacity:.75}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] svg{height:24px;position:relative;top:3px}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] svg path{fill:#fff}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted svg{margin-left:2px}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume]{float:left;position:relative;overflow:hidden;top:6px;width:42px;height:18px;padding:3px 0;transition:width .2s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume]{height:1px;position:relative;top:7px;margin:0 3px;background-color:#666}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] .bar-fill-1[data-volume]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#c2c2c2;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] .bar-fill-2[data-volume]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#005aff;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] .bar-hover[data-volume]{opacity:0;position:absolute;top:-3px;width:5px;height:7px;background-color:hsla(0,0%,100%,.5);transition:opacity .1s ease}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-scrubber[data-volume]{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);top:0;left:0;width:20px;height:20px;opacity:1;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-scrubber[data-volume] .bar-scrubber-icon[data-volume]{position:absolute;left:6px;top:6px;width:8px;height:8px;border-radius:10px;box-shadow:0 0 0 6px hsla(0,0%,100%,.2);background-color:#fff}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]{float:left;width:4px;padding-left:2px;height:12px;opacity:.5;box-shadow:inset 2px 0 0 #fff;transition:-webkit-transform .2s ease-out;transition:transform .2s ease-out;transition:transform .2s ease-out,-webkit-transform .2s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume].fill{box-shadow:inset 2px 0 0 #fff;opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:first-of-type{padding-left:0}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:hover{-webkit-transform:scaleY(1.5);transform:scaleY(1.5)}.media-control[data-media-control].w320 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume].volume-bar-hide{width:0;height:12px;top:9px;padding:0}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<div class=\\\"media-control-background\\\" data-background></div>\\n<div class=\\\"media-control-layer\\\" data-controls>\\n <% var renderBar = function(name) { %>\\n <div class=\\\"bar-container\\\" data-<%= name %>>\\n <div class=\\\"bar-background\\\" data-<%= name %>>\\n <div class=\\\"bar-fill-1\\\" data-<%= name %>></div>\\n <div class=\\\"bar-fill-2\\\" data-<%= name %>></div>\\n <div class=\\\"bar-hover\\\" data-<%= name %>></div>\\n </div>\\n <div class=\\\"bar-scrubber\\\" data-<%= name %>>\\n <div class=\\\"bar-scrubber-icon\\\" data-<%= name %>></div>\\n </div>\\n </div>\\n <% }; %>\\n <% var renderSegmentedBar = function(name, segments) {\\n segments = segments || 10; %>\\n <div class=\\\"bar-container\\\" data-<%= name %>>\\n <% for (var i = 0; i < segments; i++) { %>\\n <div class=\\\"segmented-bar-element\\\" data-<%= name %>></div>\\n <% } %>\\n </div>\\n <% }; %>\\n <% var renderDrawer = function(name, renderContent) { %>\\n <div class=\\\"drawer-container\\\" data-<%= name %>>\\n <div class=\\\"drawer-icon-container\\\" data-<%= name %>>\\n <div class=\\\"drawer-icon media-control-icon\\\" data-<%= name %>></div>\\n <span class=\\\"drawer-text\\\" data-<%= name %>></span>\\n </div>\\n <% renderContent(name); %>\\n </div>\\n <% }; %>\\n <% var renderIndicator = function(name) { %>\\n <div class=\\\"media-control-indicator\\\" data-<%= name %>></div>\\n <% }; %>\\n <% var renderButton = function(name) { %>\\n <button type=\\\"button\\\" class=\\\"media-control-button media-control-icon\\\" data-<%= name %> aria-label=\\\"<%= name %>\\\"></button>\\n <% }; %>\\n <% var templates = {\\n bar: renderBar,\\n segmentedBar: renderSegmentedBar,\\n };\\n var render = function(settingsList) {\\n settingsList.forEach(function(setting) {\\n if(setting === \\\"seekbar\\\") {\\n renderBar(setting);\\n } else if (setting === \\\"volume\\\") {\\n renderDrawer(setting, settings.volumeBarTemplate ? templates[settings.volumeBarTemplate] : function(name) { return renderSegmentedBar(name); });\\n } else if (setting === \\\"duration\\\" || setting === \\\"position\\\") {\\n renderIndicator(setting);\\n } else {\\n renderButton(setting);\\n }\\n });\\n }; %>\\n <% if (settings.default && settings.default.length) { %>\\n <div class=\\\"media-control-center-panel\\\" data-media-control>\\n <% render(settings.default); %>\\n </div>\\n <% } %>\\n <% if (settings.left && settings.left.length) { %>\\n <div class=\\\"media-control-left-panel\\\" data-media-control>\\n <% render(settings.left); %>\\n </div>\\n <% } %>\\n <% if (settings.right && settings.right.length) { %>\\n <div class=\\\"media-control-right-panel\\\" data-media-control>\\n <% render(settings.right); %>\\n </div>\\n <% } %>\\n</div>\\n\";\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#010101\\\" d=\\\"M1.712 1.24h12.6v13.52h-12.6z\\\"></path></svg>\"\n\n/***/ }),\n/* 162 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#010101\\\" d=\\\"M11.5 11h-.002v1.502L7.798 10H4.5V6h3.297l3.7-2.502V4.5h.003V11zM11 4.49L7.953 6.5H5v3h2.953L11 11.51V4.49z\\\"></path></svg>\"\n\n/***/ }),\n/* 163 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#010101\\\" d=\\\"M9.75 11.51L6.7 9.5H3.75v-3H6.7L9.75 4.49v.664l.497.498V3.498L6.547 6H3.248v4h3.296l3.7 2.502v-2.154l-.497.5v.662zm3-5.165L12.404 6l-1.655 1.653L9.093 6l-.346.345L10.402 8 8.747 9.654l.346.347 1.655-1.653L12.403 10l.348-.346L11.097 8l1.655-1.655z\\\"></path></svg>\"\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><path fill=\\\"#010101\\\" d=\\\"M7.156 8L4 11.156V8.5H3V13h4.5v-1H4.844L8 8.844 7.156 8zM8.5 3v1h2.657L8 7.157 8.846 8 12 4.844V7.5h1V3H8.5z\\\"></path></svg>\"\n\n/***/ }),\n/* 165 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><path fill=\\\"#010101\\\" d=\\\"M13.5 3.344l-.844-.844L9.5 5.656V3h-1v4.5H13v-1h-2.656L13.5 3.344zM3 9.5h2.656L2.5 12.656l.844.844L6.5 10.344V13h1V8.5H3v1z\\\"></path></svg>\"\n\n/***/ }),\n/* 166 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><path fill=\\\"#010101\\\" d=\\\"M5.375 7.062H2.637V4.26H.502v7.488h2.135V8.9h2.738v2.848h2.133V4.26H5.375v2.802zm5.97-2.81h-2.84v7.496h2.798c2.65 0 4.195-1.607 4.195-3.77v-.022c0-2.162-1.523-3.704-4.154-3.704zm2.06 3.758c0 1.21-.81 1.896-2.03 1.896h-.83V6.093h.83c1.22 0 2.03.696 2.03 1.896v.02z\\\"></path></svg>\"\n\n/***/ }),\n/* 167 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(168);\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(9)(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(7)(false);\n// imports\n\n\n// module\nexports.push([module.i, \"[data-player]{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transform:translateZ(0);transform:translateZ(0);position:relative;margin:0;padding:0;border:0;font-style:normal;font-weight:400;text-align:center;overflow:hidden;font-size:100%;font-family:Roboto,Open Sans,Arial,sans-serif;text-shadow:0 0 0;box-sizing:border-box}[data-player] a,[data-player] abbr,[data-player] acronym,[data-player] address,[data-player] applet,[data-player] article,[data-player] aside,[data-player] audio,[data-player] b,[data-player] big,[data-player] blockquote,[data-player] canvas,[data-player] caption,[data-player] center,[data-player] cite,[data-player] code,[data-player] dd,[data-player] del,[data-player] details,[data-player] dfn,[data-player] div,[data-player] dl,[data-player] dt,[data-player] em,[data-player] embed,[data-player] fieldset,[data-player] figcaption,[data-player] figure,[data-player] footer,[data-player] form,[data-player] h1,[data-player] h2,[data-player] h3,[data-player] h4,[data-player] h5,[data-player] h6,[data-player] header,[data-player] hgroup,[data-player] i,[data-player] iframe,[data-player] img,[data-player] ins,[data-player] kbd,[data-player] label,[data-player] legend,[data-player] li,[data-player] mark,[data-player] menu,[data-player] nav,[data-player] object,[data-player] ol,[data-player] output,[data-player] p,[data-player] pre,[data-player] q,[data-player] ruby,[data-player] s,[data-player] samp,[data-player] section,[data-player] small,[data-player] span,[data-player] strike,[data-player] strong,[data-player] sub,[data-player] summary,[data-player] sup,[data-player] table,[data-player] tbody,[data-player] td,[data-player] tfoot,[data-player] th,[data-player] thead,[data-player] time,[data-player] tr,[data-player] tt,[data-player] u,[data-player] ul,[data-player] var,[data-player] video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}[data-player] table{border-collapse:collapse;border-spacing:0}[data-player] caption,[data-player] td,[data-player] th{text-align:left;font-weight:400;vertical-align:middle}[data-player] blockquote,[data-player] q{quotes:none}[data-player] blockquote:after,[data-player] blockquote:before,[data-player] q:after,[data-player] q:before{content:\\\"\\\";content:none}[data-player] a img{border:none}[data-player]:focus{outline:0}[data-player] *{max-width:none;box-sizing:inherit;float:none}[data-player] div{display:block}[data-player].fullscreen{width:100%!important;height:100%!important;top:0;left:0}[data-player].nocursor{cursor:none}.clappr-style{display:none!important}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar escape = __webpack_require__(80);\nexports = module.exports = __webpack_require__(7)(false);\n// imports\n\n\n// module\nexports.push([module.i, \"@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:local(\\\"Roboto\\\"),local(\\\"Roboto-Regular\\\"),url(\" + escape(__webpack_require__(170)) + \") format(\\\"truetype\\\")}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<%=baseUrl%>/38861cba61c66739c1452c3a71e39852.ttf\";\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _create = __webpack_require__(75);\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _toConsumableArray2 = __webpack_require__(85);\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _base_object = __webpack_require__(14);\n\nvar _base_object2 = _interopRequireDefault(_base_object);\n\nvar _player_info = __webpack_require__(40);\n\nvar _player_info2 = _interopRequireDefault(_player_info);\n\nvar _html5_video = __webpack_require__(63);\n\nvar _html5_video2 = _interopRequireDefault(_html5_video);\n\nvar _flash = __webpack_require__(23);\n\nvar _flash2 = _interopRequireDefault(_flash);\n\nvar _html5_audio = __webpack_require__(87);\n\nvar _html5_audio2 = _interopRequireDefault(_html5_audio);\n\nvar _flashls = __webpack_require__(23);\n\nvar _flashls2 = _interopRequireDefault(_flashls);\n\nvar _hls = __webpack_require__(23);\n\nvar _hls2 = _interopRequireDefault(_hls);\n\nvar _html_img = __webpack_require__(88);\n\nvar _html_img2 = _interopRequireDefault(_html_img);\n\nvar _no_op = __webpack_require__(89);\n\nvar _no_op2 = _interopRequireDefault(_no_op);\n\nvar _spinner_three_bounce = __webpack_require__(90);\n\nvar _spinner_three_bounce2 = _interopRequireDefault(_spinner_three_bounce);\n\nvar _stats = __webpack_require__(196);\n\nvar _stats2 = _interopRequireDefault(_stats);\n\nvar _watermark = __webpack_require__(91);\n\nvar _watermark2 = _interopRequireDefault(_watermark);\n\nvar _poster = __webpack_require__(92);\n\nvar _poster2 = _interopRequireDefault(_poster);\n\nvar _google_analytics = __webpack_require__(206);\n\nvar _google_analytics2 = _interopRequireDefault(_google_analytics);\n\nvar _click_to_pause = __webpack_require__(93);\n\nvar _click_to_pause2 = _interopRequireDefault(_click_to_pause);\n\nvar _dvr_controls = __webpack_require__(94);\n\nvar _dvr_controls2 = _interopRequireDefault(_dvr_controls);\n\nvar _closed_captions = __webpack_require__(213);\n\nvar _closed_captions2 = _interopRequireDefault(_closed_captions);\n\nvar _favicon = __webpack_require__(95);\n\nvar _favicon2 = _interopRequireDefault(_favicon);\n\nvar _seek_time = __webpack_require__(220);\n\nvar _seek_time2 = _interopRequireDefault(_seek_time);\n\nvar _sources = __webpack_require__(225);\n\nvar _sources2 = _interopRequireDefault(_sources);\n\nvar _end_video = __webpack_require__(226);\n\nvar _end_video2 = _interopRequireDefault(_end_video);\n\nvar _strings = __webpack_require__(227);\n\nvar _strings2 = _interopRequireDefault(_strings);\n\nvar _error_screen = __webpack_require__(228);\n\nvar _error_screen2 = _interopRequireDefault(_error_screen);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * It keeps a list of the default plugins (playback, container, core) and it merges external plugins with its internals.\n * @class Loader\n * @constructor\n * @extends BaseObject\n * @module components\n */\n\n\n/* Core Plugins */\n\n\n/* Container Plugins */\nvar Loader = function (_BaseObject) {\n (0, _inherits3.default)(Loader, _BaseObject);\n\n /**\n * builds the loader\n * @method constructor\n * @param {Object} externalPlugins the external plugins\n * @param {Number} playerId you can embed multiple instances of clappr, therefore this is the unique id of each one.\n */\n function Loader() {\n var externalPlugins = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var playerId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var useOnlyPlainHtml5Plugins = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n (0, _classCallCheck3.default)(this, Loader);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _BaseObject.call(this));\n\n _this.playerId = playerId;\n _this.playbackPlugins = [];\n\n if (!useOnlyPlainHtml5Plugins) {\n _this.playbackPlugins = [].concat((0, _toConsumableArray3.default)(_this.playbackPlugins), [_hls2.default]);\n }\n\n _this.playbackPlugins = [].concat((0, _toConsumableArray3.default)(_this.playbackPlugins), [_html5_video2.default, _html5_audio2.default]);\n\n if (!useOnlyPlainHtml5Plugins) {\n _this.playbackPlugins = [].concat((0, _toConsumableArray3.default)(_this.playbackPlugins), [_flash2.default, _flashls2.default]);\n }\n\n _this.playbackPlugins = [].concat((0, _toConsumableArray3.default)(_this.playbackPlugins), [_html_img2.default, _no_op2.default]);\n\n _this.containerPlugins = [_spinner_three_bounce2.default, _watermark2.default, _poster2.default, _stats2.default, _google_analytics2.default, _click_to_pause2.default];\n _this.corePlugins = [_dvr_controls2.default, _closed_captions2.default, _favicon2.default, _seek_time2.default, _sources2.default, _end_video2.default, _strings2.default, _error_screen2.default];\n\n if (!Array.isArray(externalPlugins)) _this.validateExternalPluginsType(externalPlugins);\n\n _this.addExternalPlugins(externalPlugins);\n return _this;\n }\n\n /**\n * groups by type the external plugins that were passed through `options.plugins` it they're on a flat array\n * @method addExternalPlugins\n * @private\n * @param {Object} an config object or an array of plugins\n * @return {Object} plugins the config object with the plugins separated by type\n */\n\n\n Loader.prototype.groupPluginsByType = function groupPluginsByType(plugins) {\n if (Array.isArray(plugins)) {\n plugins = plugins.reduce(function (memo, plugin) {\n memo[plugin.type] || (memo[plugin.type] = []);\n memo[plugin.type].push(plugin);\n return memo;\n }, {});\n }\n return plugins;\n };\n\n Loader.prototype.removeDups = function removeDups(list) {\n var groupUp = function groupUp(plugins, plugin) {\n plugins[plugin.prototype.name] && delete plugins[plugin.prototype.name];\n plugins[plugin.prototype.name] = plugin;\n return plugins;\n };\n var pluginsMap = list.reduceRight(groupUp, (0, _create2.default)(null));\n\n var plugins = [];\n for (var key in pluginsMap) {\n plugins.unshift(pluginsMap[key]);\n }return plugins;\n };\n\n /**\n * adds all the external plugins that were passed through `options.plugins`\n * @method addExternalPlugins\n * @private\n * @param {Object} plugins the config object with all plugins\n */\n\n\n Loader.prototype.addExternalPlugins = function addExternalPlugins(plugins) {\n plugins = this.groupPluginsByType(plugins);\n if (plugins.playback) this.playbackPlugins = this.removeDups(plugins.playback.concat(this.playbackPlugins));\n\n if (plugins.container) this.containerPlugins = this.removeDups(plugins.container.concat(this.containerPlugins));\n\n if (plugins.core) this.corePlugins = this.removeDups(plugins.core.concat(this.corePlugins));\n\n _player_info2.default.getInstance(this.playerId).playbackPlugins = this.playbackPlugins;\n };\n\n /**\n * validate if the external plugins that were passed through `options.plugins` are associated to the correct type\n * @method validateExternalPluginsType\n * @private\n * @param {Object} plugins the config object with all plugins\n */\n\n\n Loader.prototype.validateExternalPluginsType = function validateExternalPluginsType(plugins) {\n var plugintypes = ['playback', 'container', 'core'];\n plugintypes.forEach(function (type) {\n (plugins[type] || []).forEach(function (el) {\n var errorMessage = 'external ' + el.type + ' plugin on ' + type + ' array';\n if (el.type !== type) throw new ReferenceError(errorMessage);\n });\n });\n };\n\n return Loader;\n}(_base_object2.default);\n\n/* Playback Plugins */\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexports.default = Loader;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(70);\n__webpack_require__(173);\nmodule.exports = __webpack_require__(8).Array.from;\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ctx = __webpack_require__(43)\n , $export = __webpack_require__(15)\n , toObject = __webpack_require__(38)\n , call = __webpack_require__(174)\n , isArrayIter = __webpack_require__(175)\n , toLength = __webpack_require__(68)\n , createProperty = __webpack_require__(176)\n , getIterFn = __webpack_require__(177);\n\n$export($export.S + $export.F * !__webpack_require__(179)(function(iter){ Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){\n var O = toObject(arrayLike)\n , C = typeof this == 'function' ? this : Array\n , aLen = arguments.length\n , mapfn = aLen > 1 ? arguments[1] : undefined\n , mapping = mapfn !== undefined\n , index = 0\n , iterFn = getIterFn(O)\n , length, result, step, iterator;\n if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){\n for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for(result = new C(length); length > index; index++){\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(25);\nmodule.exports = function(iterator, fn, value, entries){\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch(e){\n var ret = iterator['return'];\n if(ret !== undefined)anObject(ret.call(iterator));\n throw e;\n }\n};\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// check on default Array iterator\nvar Iterators = __webpack_require__(31)\n , ITERATOR = __webpack_require__(12)('iterator')\n , ArrayProto = Array.prototype;\n\nmodule.exports = function(it){\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $defineProperty = __webpack_require__(17)\n , createDesc = __webpack_require__(30);\n\nmodule.exports = function(object, index, value){\n if(index in object)$defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(178)\n , ITERATOR = __webpack_require__(12)('iterator')\n , Iterators = __webpack_require__(31);\nmodule.exports = __webpack_require__(8).getIteratorMethod = function(it){\n if(it != undefined)return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(45)\n , TAG = __webpack_require__(12)('toStringTag')\n // ES3 wrong here\n , ARG = cof(function(){ return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function(it, key){\n try {\n return it[key];\n } catch(e){ /* empty */ }\n};\n\nmodule.exports = function(it){\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ITERATOR = __webpack_require__(12)('iterator')\n , SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function(){ SAFE_CLOSING = true; };\n Array.from(riter, function(){ throw 2; });\n} catch(e){ /* empty */ }\n\nmodule.exports = function(exec, skipClosing){\n if(!skipClosing && !SAFE_CLOSING)return false;\n var safe = false;\n try {\n var arr = [7]\n , iter = arr[ITERATOR]();\n iter.next = function(){ return {done: safe = true}; };\n arr[ITERATOR] = function(){ return iter; };\n exec(arr);\n } catch(e){ /* empty */ }\n return safe;\n};\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _from = __webpack_require__(86);\n\nvar _from2 = _interopRequireDefault(_from);\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _toConsumableArray2 = __webpack_require__(85);\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _keys = __webpack_require__(52);\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _utils = __webpack_require__(5);\n\nvar _playback = __webpack_require__(13);\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nvar _browser = __webpack_require__(28);\n\nvar _browser2 = _interopRequireDefault(_browser);\n\nvar _error = __webpack_require__(33);\n\nvar _error2 = _interopRequireDefault(_error);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _log = __webpack_require__(32);\n\nvar _log2 = _interopRequireDefault(_log);\n\nvar _clapprZepto = __webpack_require__(6);\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nvar _template = __webpack_require__(10);\n\nvar _template2 = _interopRequireDefault(_template);\n\nvar _tracks = __webpack_require__(181);\n\nvar _tracks2 = _interopRequireDefault(_tracks);\n\n__webpack_require__(182);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar MIMETYPES = {\n 'mp4': ['avc1.42E01E', 'avc1.58A01E', 'avc1.4D401E', 'avc1.64001E', 'mp4v.20.8', 'mp4v.20.240', 'mp4a.40.2'].map(function (codec) {\n return 'video/mp4; codecs=\"' + codec + ', mp4a.40.2\"';\n }),\n 'ogg': ['video/ogg; codecs=\"theora, vorbis\"', 'video/ogg; codecs=\"dirac\"', 'video/ogg; codecs=\"theora, speex\"'],\n '3gpp': ['video/3gpp; codecs=\"mp4v.20.8, samr\"'],\n 'webm': ['video/webm; codecs=\"vp8, vorbis\"'],\n 'mkv': ['video/x-matroska; codecs=\"theora, vorbis\"'],\n 'm3u8': ['application/x-mpegurl']\n};\nMIMETYPES['ogv'] = MIMETYPES['ogg'];\nMIMETYPES['3gp'] = MIMETYPES['3gpp'];\n\nvar AUDIO_MIMETYPES = {\n 'wav': ['audio/wav'],\n 'mp3': ['audio/mp3', 'audio/mpeg;codecs=\"mp3\"'],\n 'aac': ['audio/mp4;codecs=\"mp4a.40.5\"'],\n 'oga': ['audio/ogg']\n};\n\nvar KNOWN_AUDIO_MIMETYPES = (0, _keys2.default)(AUDIO_MIMETYPES).reduce(function (acc, k) {\n return [].concat((0, _toConsumableArray3.default)(acc), (0, _toConsumableArray3.default)(AUDIO_MIMETYPES[k]));\n}, []);\n\nvar UNKNOWN_ERROR = { code: 'unknown', message: 'unknown'\n\n // TODO: rename this Playback to HTML5Playback (breaking change, only after 0.3.0)\n};\nvar HTML5Video = function (_Playback) {\n (0, _inherits3.default)(HTML5Video, _Playback);\n (0, _createClass3.default)(HTML5Video, [{\n key: 'name',\n get: function get() {\n return 'html5_video';\n }\n }, {\n key: 'tagName',\n get: function get() {\n return this.isAudioOnly ? 'audio' : 'video';\n }\n }, {\n key: 'isAudioOnly',\n get: function get() {\n var resourceUrl = this.options.src;\n var mimeTypes = HTML5Video._mimeTypesForUrl(resourceUrl, AUDIO_MIMETYPES, this.options.mimeType);\n return this.options.playback && this.options.playback.audioOnly || this.options.audioOnly || KNOWN_AUDIO_MIMETYPES.indexOf(mimeTypes[0]) >= 0;\n }\n }, {\n key: 'attributes',\n get: function get() {\n return {\n 'data-html5-video': ''\n };\n }\n }, {\n key: 'events',\n get: function get() {\n return {\n 'canplay': '_onCanPlay',\n 'canplaythrough': '_handleBufferingEvents',\n 'durationchange': '_onDurationChange',\n 'ended': '_onEnded',\n 'error': '_onError',\n 'loadeddata': '_onLoadedData',\n 'loadedmetadata': '_onLoadedMetadata',\n 'pause': '_onPause',\n 'playing': '_onPlaying',\n 'progress': '_onProgress',\n 'seeking': '_onSeeking',\n 'seeked': '_onSeeked',\n 'stalled': '_handleBufferingEvents',\n 'timeupdate': '_onTimeUpdate',\n 'waiting': '_onWaiting'\n };\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n\n }, {\n key: 'ended',\n get: function get() {\n return this.el.ended;\n }\n\n /**\n * Determine if the playback is having to buffer in order for\n * playback to be smooth.\n * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n * @property buffering\n * @type Boolean\n */\n\n }, {\n key: 'buffering',\n get: function get() {\n return this._isBuffering;\n }\n }]);\n\n function HTML5Video() {\n (0, _classCallCheck3.default)(this, HTML5Video);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _Playback.call.apply(_Playback, [this].concat(args)));\n\n _this._destroyed = false;\n _this._loadStarted = false;\n _this._isBuffering = false;\n _this._playheadMoving = false;\n _this._playheadMovingTimer = null;\n _this._stopped = false;\n _this._ccTrackId = -1;\n _this._setupSrc(_this.options.src);\n // backwards compatibility (TODO: remove on 0.3.0)\n _this.options.playback || (_this.options.playback = _this.options || {});\n _this.options.playback.disableContextMenu = _this.options.playback.disableContextMenu || _this.options.disableVideoTagContextMenu;\n\n var playbackConfig = _this.options.playback;\n var preload = playbackConfig.preload || (_browser2.default.isSafari ? 'auto' : _this.options.preload);\n\n var posterUrl = void 0; // FIXME: poster plugin should always convert poster to object with expected properties ?\n if (_this.options.poster) {\n if (typeof _this.options.poster === 'string') posterUrl = _this.options.poster;else if (typeof _this.options.poster.url === 'string') posterUrl = _this.options.poster.url;\n }\n\n _clapprZepto2.default.extend(_this.el, {\n muted: _this.options.mute,\n defaultMuted: _this.options.mute,\n loop: _this.options.loop,\n poster: posterUrl,\n preload: preload || 'metadata',\n controls: (playbackConfig.controls || _this.options.useVideoTagDefaultControls) && 'controls',\n crossOrigin: playbackConfig.crossOrigin,\n 'x-webkit-playsinline': playbackConfig.playInline\n });\n\n playbackConfig.playInline && _this.$el.attr({ playsinline: 'playsinline' });\n playbackConfig.crossOrigin && _this.$el.attr({ crossorigin: playbackConfig.crossOrigin });\n\n // TODO should settings be private?\n _this.settings = { default: ['seekbar'] };\n _this.settings.left = ['playpause', 'position', 'duration'];\n _this.settings.right = ['fullscreen', 'volume', 'hd-indicator'];\n\n playbackConfig.externalTracks && _this._setupExternalTracks(playbackConfig.externalTracks);\n\n _this.options.autoPlay && _this.attemptAutoPlay();\n return _this;\n }\n\n // See Playback.attemptAutoPlay()\n\n\n HTML5Video.prototype.attemptAutoPlay = function attemptAutoPlay() {\n var _this2 = this;\n\n this.canAutoPlay(function (result, error) {\n error && _log2.default.warn(_this2.name, 'autoplay error.', { result: result, error: error });\n\n // https://github.com/clappr/clappr/issues/1076\n result && process.nextTick(function () {\n return !_this2._destroyed && _this2.play();\n });\n });\n };\n\n // See Playback.canAutoPlay()\n\n\n HTML5Video.prototype.canAutoPlay = function canAutoPlay(cb) {\n if (this.options.disableCanAutoPlay) cb(true, null);\n\n var opts = {\n timeout: this.options.autoPlayTimeout || 500,\n inline: this.options.playback.playInline || false,\n muted: this.options.mute || false // Known issue: mediacontrols may asynchronously mute video\n\n\n // Use current video element if recycling feature enabled with mobile devices\n };if (_browser2.default.isMobile && _utils.DomRecycler.options.recycleVideo) opts.element = this.el;\n\n // Desktop browser autoplay policy may require user action\n // Mobile browser autoplay require user consent and video recycling feature enabled\n // It may returns a false positive with source-less player consent\n (0, _utils.canAutoPlayMedia)(cb, opts);\n };\n\n HTML5Video.prototype._setupExternalTracks = function _setupExternalTracks(tracks) {\n this._externalTracks = tracks.map(function (track) {\n return {\n kind: track.kind || 'subtitles', // Default is 'subtitles'\n label: track.label,\n lang: track.lang,\n src: track.src\n };\n });\n };\n\n /**\n * Sets the source url on the <video> element, and also the 'src' property.\n * @method setupSrc\n * @private\n * @param {String} srcUrl The source URL.\n */\n\n\n HTML5Video.prototype._setupSrc = function _setupSrc(srcUrl) {\n if (this.el.src === srcUrl) return;\n\n this._ccIsSetup = false;\n this.el.src = srcUrl;\n this._src = this.el.src;\n };\n\n HTML5Video.prototype._onLoadedMetadata = function _onLoadedMetadata(e) {\n this._handleBufferingEvents();\n this.trigger(_events2.default.PLAYBACK_LOADEDMETADATA, { duration: e.target.duration, data: e });\n this._updateSettings();\n var autoSeekFromUrl = typeof this._options.autoSeekFromUrl === 'undefined' || this._options.autoSeekFromUrl;\n if (this.getPlaybackType() !== _playback2.default.LIVE && autoSeekFromUrl) this._checkInitialSeek();\n };\n\n HTML5Video.prototype._onDurationChange = function _onDurationChange() {\n this._updateSettings();\n this._onTimeUpdate();\n // onProgress uses the duration\n this._onProgress();\n };\n\n HTML5Video.prototype._updateSettings = function _updateSettings() {\n // we can't figure out if hls resource is VoD or not until it is being loaded or duration has changed.\n // that's why we check it again and update media control accordingly.\n if (this.getPlaybackType() === _playback2.default.VOD || this.getPlaybackType() === _playback2.default.AOD) this.settings.left = ['playpause', 'position', 'duration'];else this.settings.left = ['playstop'];\n\n this.settings.seekEnabled = this.isSeekEnabled();\n this.trigger(_events2.default.PLAYBACK_SETTINGSUPDATE);\n };\n\n HTML5Video.prototype.isSeekEnabled = function isSeekEnabled() {\n return isFinite(this.getDuration());\n };\n\n HTML5Video.prototype.getPlaybackType = function getPlaybackType() {\n var onDemandType = this.tagName === 'audio' ? _playback2.default.AOD : _playback2.default.VOD;\n return [0, undefined, Infinity].indexOf(this.el.duration) >= 0 ? _playback2.default.LIVE : onDemandType;\n };\n\n HTML5Video.prototype.isHighDefinitionInUse = function isHighDefinitionInUse() {\n return false;\n };\n\n // On mobile device, HTML5 video element \"retains\" user action consent if\n // load() method is called. See Player.consent().\n\n\n HTML5Video.prototype.consent = function consent() {\n if (!this.isPlaying()) {\n _Playback.prototype.consent.call(this);\n this.el.load();\n }\n };\n\n HTML5Video.prototype.play = function play() {\n this.trigger(_events2.default.PLAYBACK_PLAY_INTENT);\n this._stopped = false;\n this._setupSrc(this._src);\n this._handleBufferingEvents();\n var promise = this.el.play();\n // For more details, see https://developers.google.com/web/updates/2016/03/play-returns-promise\n if (promise && promise.catch) promise.catch(function () {});\n };\n\n HTML5Video.prototype.pause = function pause() {\n this.el.pause();\n };\n\n HTML5Video.prototype.stop = function stop() {\n this.pause();\n this._stopped = true;\n // src will be added again in play()\n this.el.removeAttribute('src');\n this._stopPlayheadMovingChecks();\n this._handleBufferingEvents();\n this.trigger(_events2.default.PLAYBACK_STOP);\n };\n\n HTML5Video.prototype.volume = function volume(value) {\n if (value === 0) {\n this.$el.attr({ muted: 'true' });\n this.el.muted = true;\n } else {\n this.$el.attr({ muted: null });\n this.el.muted = false;\n this.el.volume = value / 100;\n }\n };\n\n /**\n * @deprecated\n * @private\n */\n\n\n HTML5Video.prototype.mute = function mute() {\n this.el.muted = true;\n };\n\n /**\n * @deprecated\n * @private\n */\n\n\n HTML5Video.prototype.unmute = function unmute() {\n this.el.muted = false;\n };\n\n HTML5Video.prototype.isMuted = function isMuted() {\n return !!this.el.volume;\n };\n\n HTML5Video.prototype.isPlaying = function isPlaying() {\n return !this.el.paused && !this.el.ended;\n };\n\n HTML5Video.prototype._startPlayheadMovingChecks = function _startPlayheadMovingChecks() {\n if (this._playheadMovingTimer !== null) return;\n\n this._playheadMovingTimeOnCheck = null;\n this._determineIfPlayheadMoving();\n this._playheadMovingTimer = setInterval(this._determineIfPlayheadMoving.bind(this), 500);\n };\n\n HTML5Video.prototype._stopPlayheadMovingChecks = function _stopPlayheadMovingChecks() {\n if (this._playheadMovingTimer === null) return;\n\n clearInterval(this._playheadMovingTimer);\n this._playheadMovingTimer = null;\n this._playheadMoving = false;\n };\n\n HTML5Video.prototype._determineIfPlayheadMoving = function _determineIfPlayheadMoving() {\n var before = this._playheadMovingTimeOnCheck;\n var now = this.el.currentTime;\n this._playheadMoving = before !== now;\n this._playheadMovingTimeOnCheck = now;\n this._handleBufferingEvents();\n };\n\n // this seems to happen when the user is having to wait\n // for something to happen AFTER A USER INTERACTION\n // e.g the player might be buffering, but when `play()` is called\n // only at this point will this be called.\n // Or the user may seek somewhere but the new area requires buffering,\n // so it will fire then as well.\n // On devices where playing is blocked until requested with a user action,\n // buffering may start, but never finish until the user initiates a play,\n // but this only happens when play is actually requested\n\n\n HTML5Video.prototype._onWaiting = function _onWaiting() {\n this._loadStarted = true;\n this._handleBufferingEvents();\n };\n\n // called after the first frame has loaded\n // note this doesn't fire on ios before the user has requested play\n // ideally the \"loadstart\" event would be used instead, but this fires\n // before a user has requested play on iOS, and also this is always fired\n // even if the preload setting is \"none\". In both these cases this causes\n // infinite buffering until the user does something which isn't great.\n\n\n HTML5Video.prototype._onLoadedData = function _onLoadedData() {\n this._loadStarted = true;\n this._handleBufferingEvents();\n };\n\n // note this doesn't fire on ios before user has requested play\n\n\n HTML5Video.prototype._onCanPlay = function _onCanPlay() {\n this._handleBufferingEvents();\n };\n\n HTML5Video.prototype._onPlaying = function _onPlaying() {\n this._checkForClosedCaptions();\n this._startPlayheadMovingChecks();\n this._handleBufferingEvents();\n this.trigger(_events2.default.PLAYBACK_PLAY);\n };\n\n HTML5Video.prototype._onPause = function _onPause() {\n this._stopPlayheadMovingChecks();\n this._handleBufferingEvents();\n this.trigger(_events2.default.PLAYBACK_PAUSE);\n };\n\n HTML5Video.prototype._onSeeking = function _onSeeking() {\n this._handleBufferingEvents();\n this.trigger(_events2.default.PLAYBACK_SEEK);\n };\n\n HTML5Video.prototype._onSeeked = function _onSeeked() {\n this._handleBufferingEvents();\n this.trigger(_events2.default.PLAYBACK_SEEKED);\n };\n\n HTML5Video.prototype._onEnded = function _onEnded() {\n this._handleBufferingEvents();\n this.trigger(_events2.default.PLAYBACK_ENDED, this.name);\n };\n\n // The playback should be classed as buffering if the following are true:\n // - the ready state is less then HAVE_FUTURE_DATA or the playhead isn't moving and it should be\n // - the media hasn't \"ended\",\n // - the media hasn't been stopped\n // - loading has started\n\n\n HTML5Video.prototype._handleBufferingEvents = function _handleBufferingEvents() {\n var playheadShouldBeMoving = !this.el.ended && !this.el.paused;\n var buffering = this._loadStarted && !this.el.ended && !this._stopped && (playheadShouldBeMoving && !this._playheadMoving || this.el.readyState < this.el.HAVE_FUTURE_DATA);\n if (this._isBuffering !== buffering) {\n this._isBuffering = buffering;\n if (buffering) this.trigger(_events2.default.PLAYBACK_BUFFERING, this.name);else this.trigger(_events2.default.PLAYBACK_BUFFERFULL, this.name);\n }\n };\n\n HTML5Video.prototype._onError = function _onError() {\n var _ref = this.el.error || UNKNOWN_ERROR,\n code = _ref.code,\n message = _ref.message;\n\n var isUnknownError = code === UNKNOWN_ERROR.code;\n\n var formattedError = this.createError({\n code: code,\n description: message,\n raw: this.el.error,\n level: isUnknownError ? _error2.default.Levels.WARN : _error2.default.Levels.FATAL\n });\n\n if (isUnknownError) _log2.default.warn(this.name, 'HTML5 unknown error: ', formattedError);else this.trigger(_events2.default.PLAYBACK_ERROR, formattedError);\n };\n\n HTML5Video.prototype.destroy = function destroy() {\n this._destroyed = true;\n this.handleTextTrackChange && this.el.textTracks.removeEventListener('change', this.handleTextTrackChange);\n _Playback.prototype.destroy.call(this);\n this.el.removeAttribute('src');\n this._src = null;\n _utils.DomRecycler.garbage(this.$el);\n };\n\n HTML5Video.prototype.seek = function seek(time) {\n this.el.currentTime = time;\n };\n\n HTML5Video.prototype.seekPercentage = function seekPercentage(percentage) {\n var time = this.el.duration * (percentage / 100);\n this.seek(time);\n };\n\n HTML5Video.prototype._checkInitialSeek = function _checkInitialSeek() {\n var seekTime = (0, _utils.seekStringToSeconds)();\n if (seekTime !== 0) this.seek(seekTime);\n };\n\n HTML5Video.prototype.getCurrentTime = function getCurrentTime() {\n return this.el.currentTime;\n };\n\n HTML5Video.prototype.getDuration = function getDuration() {\n return this.el.duration;\n };\n\n HTML5Video.prototype._onTimeUpdate = function _onTimeUpdate() {\n if (this.getPlaybackType() === _playback2.default.LIVE) this.trigger(_events2.default.PLAYBACK_TIMEUPDATE, { current: 1, total: 1 }, this.name);else this.trigger(_events2.default.PLAYBACK_TIMEUPDATE, { current: this.el.currentTime, total: this.el.duration }, this.name);\n };\n\n HTML5Video.prototype._onProgress = function _onProgress() {\n if (!this.el.buffered.length) return;\n\n var buffered = [];\n var bufferedPos = 0;\n for (var i = 0; i < this.el.buffered.length; i++) {\n buffered = [].concat((0, _toConsumableArray3.default)(buffered), [{ start: this.el.buffered.start(i), end: this.el.buffered.end(i) }]);\n if (this.el.currentTime >= buffered[i].start && this.el.currentTime <= buffered[i].end) bufferedPos = i;\n }\n var progress = {\n start: buffered[bufferedPos].start,\n current: buffered[bufferedPos].end,\n total: this.el.duration\n };\n this.trigger(_events2.default.PLAYBACK_PROGRESS, progress, buffered);\n };\n\n HTML5Video.prototype._typeFor = function _typeFor(src) {\n var mimeTypes = HTML5Video._mimeTypesForUrl(src, MIMETYPES, this.options.mimeType);\n if (mimeTypes.length === 0) mimeTypes = HTML5Video._mimeTypesForUrl(src, AUDIO_MIMETYPES, this.options.mimeType);\n\n var mimeType = mimeTypes[0] || '';\n return mimeType.split(';')[0];\n };\n\n HTML5Video.prototype._ready = function _ready() {\n if (this._isReadyState) return;\n\n this._isReadyState = true;\n this.trigger(_events2.default.PLAYBACK_READY, this.name);\n };\n\n HTML5Video.prototype._checkForClosedCaptions = function _checkForClosedCaptions() {\n // Check if CC available only if current playback is HTML5Video\n if (this.isHTML5Video && !this._ccIsSetup) {\n if (this.hasClosedCaptionsTracks) {\n this.trigger(_events2.default.PLAYBACK_SUBTITLE_AVAILABLE);\n var trackId = this.closedCaptionsTrackId;\n this.closedCaptionsTrackId = trackId;\n this.handleTextTrackChange = this._handleTextTrackChange.bind(this);\n this.el.textTracks.addEventListener('change', this.handleTextTrackChange);\n }\n this._ccIsSetup = true;\n }\n };\n\n HTML5Video.prototype._handleTextTrackChange = function _handleTextTrackChange() {\n var tracks = this.closedCaptionsTracks;\n var track = tracks.find(function (track) {\n return track.track.mode === 'showing';\n }) || { id: -1 };\n\n if (this._ccTrackId !== track.id) {\n this._ccTrackId = track.id;\n this.trigger(_events2.default.PLAYBACK_SUBTITLE_CHANGED, {\n id: track.id\n });\n }\n };\n\n HTML5Video.prototype.render = function render() {\n if (this.options.playback.disableContextMenu) {\n this.$el.on('contextmenu', function () {\n return false;\n });\n }\n\n if (this._externalTracks && this._externalTracks.length > 0) {\n this.$el.html(this.template({\n tracks: this._externalTracks\n }));\n }\n\n this._ready();\n return this;\n };\n\n (0, _createClass3.default)(HTML5Video, [{\n key: 'isReady',\n get: function get() {\n return this._isReadyState;\n }\n }, {\n key: 'isHTML5Video',\n get: function get() {\n return this.name === HTML5Video.prototype.name;\n }\n }, {\n key: 'closedCaptionsTracks',\n get: function get() {\n var id = 0;\n var trackId = function trackId() {\n return id++;\n };\n var textTracks = this.el.textTracks ? (0, _from2.default)(this.el.textTracks) : [];\n\n return textTracks.filter(function (track) {\n return track.kind === 'subtitles' || track.kind === 'captions';\n }).map(function (track) {\n return { id: trackId(), name: track.label, track: track };\n });\n }\n }, {\n key: 'closedCaptionsTrackId',\n get: function get() {\n return this._ccTrackId;\n },\n set: function set(trackId) {\n if (!(0, _utils.isNumber)(trackId)) return;\n\n var tracks = this.closedCaptionsTracks;\n var showingTrack = void 0;\n\n // Note: -1 is for hide all tracks\n if (trackId !== -1) {\n showingTrack = tracks.find(function (track) {\n return track.id === trackId;\n });\n if (!showingTrack) return; // Track id not found\n\n if (showingTrack.track.mode === 'showing') return; // Track already showing\n }\n\n // Since it is possible to display multiple tracks,\n // ensure that all tracks are hidden.\n tracks.filter(function (track) {\n return track.track.mode !== 'hidden';\n }).forEach(function (track) {\n return track.track.mode = 'hidden';\n });\n\n showingTrack && (showingTrack.track.mode = 'showing');\n\n this._ccTrackId = trackId;\n this.trigger(_events2.default.PLAYBACK_SUBTITLE_CHANGED, {\n id: trackId\n });\n }\n }, {\n key: 'template',\n get: function get() {\n return (0, _template2.default)(_tracks2.default);\n }\n }]);\n return HTML5Video;\n}(_playback2.default);\n\nexports.default = HTML5Video;\n\n\nHTML5Video._mimeTypesForUrl = function (resourceUrl, mimeTypesByExtension, mimeType) {\n var extension = (resourceUrl.split('?')[0].match(/.*\\.(.*)$/) || [])[1];\n var mimeTypes = mimeType || extension && mimeTypesByExtension[extension.toLowerCase()] || [];\n return mimeTypes.constructor === Array ? mimeTypes : [mimeTypes];\n};\n\nHTML5Video._canPlay = function (type, mimeTypesByExtension, resourceUrl, mimeType) {\n var mimeTypes = HTML5Video._mimeTypesForUrl(resourceUrl, mimeTypesByExtension, mimeType);\n var media = document.createElement(type);\n return !!mimeTypes.filter(function (mediaType) {\n return !!media.canPlayType(mediaType).replace(/no/, '');\n })[0];\n};\n\nHTML5Video.canPlay = function (resourceUrl, mimeType) {\n return HTML5Video._canPlay('audio', AUDIO_MIMETYPES, resourceUrl, mimeType) || HTML5Video._canPlay('video', MIMETYPES, resourceUrl, mimeType);\n};\nmodule.exports = exports['default'];\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(60)))\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<% for (var i = 0; i < tracks.length; i++) { %>\\n <track data-html5-video-track=\\\"<%= i %>\\\" kind=\\\"<%= tracks[i].kind %>\\\" label=\\\"<%= tracks[i].label %>\\\" srclang=\\\"<%= tracks[i].lang %>\\\" src=\\\"<%= tracks[i].src %>\\\" />\\n<% }; %>\\n\";\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(183);\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(9)(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(7)(false);\n// imports\n\n\n// module\nexports.push([module.i, \"[data-html5-video]{position:absolute;height:100%;width:100%;display:block}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _playback = __webpack_require__(13);\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nvar _html5_video = __webpack_require__(63);\n\nvar _html5_video2 = _interopRequireDefault(_html5_video);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// TODO: remove this playback and change HTML5Video to HTML5Playback (breaking change, only after 0.3.0)\nvar HTML5Audio = function (_HTML5Video) {\n (0, _inherits3.default)(HTML5Audio, _HTML5Video);\n\n function HTML5Audio() {\n (0, _classCallCheck3.default)(this, HTML5Audio);\n return (0, _possibleConstructorReturn3.default)(this, _HTML5Video.apply(this, arguments));\n }\n\n HTML5Audio.prototype.updateSettings = function updateSettings() {\n this.settings.left = ['playpause', 'position', 'duration'];\n this.settings.seekEnabled = this.isSeekEnabled();\n this.trigger(_events2.default.PLAYBACK_SETTINGSUPDATE);\n };\n\n HTML5Audio.prototype.getPlaybackType = function getPlaybackType() {\n return _playback2.default.AOD;\n };\n\n (0, _createClass3.default)(HTML5Audio, [{\n key: 'name',\n get: function get() {\n return 'html5_audio';\n }\n }, {\n key: 'tagName',\n get: function get() {\n return 'audio';\n }\n }, {\n key: 'isAudioOnly',\n get: function get() {\n return true;\n }\n }]);\n return HTML5Audio;\n}(_html5_video2.default); // Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexports.default = HTML5Audio;\n\n\nHTML5Audio.canPlay = function (resourceUrl, mimeType) {\n var mimetypes = {\n 'wav': ['audio/wav'],\n 'mp3': ['audio/mp3', 'audio/mpeg;codecs=\"mp3\"'],\n 'aac': ['audio/mp4;codecs=\"mp4a.40.5\"'],\n 'oga': ['audio/ogg']\n };\n return _html5_video2.default._canPlay('audio', mimetypes, resourceUrl, mimeType);\n};\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _playback = __webpack_require__(13);\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\n__webpack_require__(186);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HTMLImg = function (_Playback) {\n (0, _inherits3.default)(HTMLImg, _Playback);\n\n HTMLImg.prototype.getPlaybackType = function getPlaybackType() {\n return _playback2.default.NO_OP;\n };\n\n (0, _createClass3.default)(HTMLImg, [{\n key: 'name',\n get: function get() {\n return 'html_img';\n }\n }, {\n key: 'tagName',\n get: function get() {\n return 'img';\n }\n }, {\n key: 'attributes',\n get: function get() {\n return {\n 'data-html-img': ''\n };\n }\n }, {\n key: 'events',\n get: function get() {\n return {\n 'load': '_onLoad',\n 'abort': '_onError',\n 'error': '_onError'\n };\n }\n }]);\n\n function HTMLImg(params) {\n (0, _classCallCheck3.default)(this, HTMLImg);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _Playback.call(this, params));\n\n _this.el.src = params.src;\n return _this;\n }\n\n HTMLImg.prototype.render = function render() {\n this.trigger(_events2.default.PLAYBACK_READY, this.name);\n return this;\n };\n\n HTMLImg.prototype._onLoad = function _onLoad() {\n this.trigger(_events2.default.PLAYBACK_ENDED, this.name);\n };\n\n HTMLImg.prototype._onError = function _onError(evt) {\n var m = evt.type === 'error' ? 'load error' : 'loading aborted';\n this.trigger(_events2.default.PLAYBACK_ERROR, { message: m }, this.name);\n };\n\n return HTMLImg;\n}(_playback2.default); // Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexports.default = HTMLImg;\n\n\nHTMLImg.canPlay = function (resource) {\n return (/\\.(png|jpg|jpeg|gif|bmp|tiff|pgm|pnm|webp)(|\\?.*)$/i.test(resource)\n );\n};\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(187);\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(9)(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(7)(false);\n// imports\n\n\n// module\nexports.push([module.i, \"[data-html-img]{max-width:100%;max-height:100%}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = __webpack_require__(5);\n\nvar _playback = __webpack_require__(13);\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nvar _template = __webpack_require__(10);\n\nvar _template2 = _interopRequireDefault(_template);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _error = __webpack_require__(189);\n\nvar _error2 = _interopRequireDefault(_error);\n\n__webpack_require__(190);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NoOp = function (_Playback) {\n (0, _inherits3.default)(NoOp, _Playback);\n (0, _createClass3.default)(NoOp, [{\n key: 'name',\n get: function get() {\n return 'no_op';\n }\n }, {\n key: 'template',\n get: function get() {\n return (0, _template2.default)(_error2.default);\n }\n }, {\n key: 'attributes',\n get: function get() {\n return { 'data-no-op': '' };\n }\n }]);\n\n function NoOp() {\n (0, _classCallCheck3.default)(this, NoOp);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _Playback.call.apply(_Playback, [this].concat(args)));\n\n _this._noiseFrameNum = -1;\n return _this;\n }\n\n NoOp.prototype.render = function render() {\n var playbackNotSupported = this.options.playbackNotSupportedMessage || this.i18n.t('playback_not_supported');\n this.$el.html(this.template({ message: playbackNotSupported }));\n this.trigger(_events2.default.PLAYBACK_READY, this.name);\n var showForNoOp = !!(this.options.poster && this.options.poster.showForNoOp);\n if (this.options.autoPlay || !showForNoOp) this._animate();\n\n return this;\n };\n\n NoOp.prototype._noise = function _noise() {\n this._noiseFrameNum = (this._noiseFrameNum + 1) % 5;\n if (this._noiseFrameNum) {\n // only update noise every 5 frames to save cpu\n return;\n }\n\n var idata = this.context.createImageData(this.context.canvas.width, this.context.canvas.height);\n var buffer32 = void 0;\n try {\n buffer32 = new Uint32Array(idata.data.buffer);\n } catch (err) {\n buffer32 = new Uint32Array(this.context.canvas.width * this.context.canvas.height * 4);\n var data = idata.data;\n for (var i = 0; i < data.length; i++) {\n buffer32[i] = data[i];\n }\n }\n\n var len = buffer32.length,\n m = Math.random() * 6 + 4;\n var run = 0,\n color = 0;\n for (var _i = 0; _i < len;) {\n if (run < 0) {\n run = m * Math.random();\n var p = Math.pow(Math.random(), 0.4);\n color = 255 * p << 24;\n }\n run -= 1;\n buffer32[_i++] = color;\n }\n this.context.putImageData(idata, 0, 0);\n };\n\n NoOp.prototype._loop = function _loop() {\n var _this2 = this;\n\n if (this._stop) return;\n\n this._noise();\n this._animationHandle = (0, _utils.requestAnimationFrame)(function () {\n return _this2._loop();\n });\n };\n\n NoOp.prototype.destroy = function destroy() {\n if (this._animationHandle) {\n (0, _utils.cancelAnimationFrame)(this._animationHandle);\n this._stop = true;\n }\n };\n\n NoOp.prototype._animate = function _animate() {\n this.canvas = this.$el.find('canvas[data-no-op-canvas]')[0];\n this.context = this.canvas.getContext('2d');\n this._loop();\n };\n\n return NoOp;\n}(_playback2.default);\n\nexports.default = NoOp;\n\n\nNoOp.canPlay = function (source) {\n // eslint-disable-line no-unused-vars\n return true;\n};\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 189 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<canvas data-no-op-canvas></canvas>\\n<p data-no-op-msg><%=message%><p>\\n\";\n\n/***/ }),\n/* 190 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(191);\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(9)(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 191 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(7)(false);\n// imports\n\n\n// module\nexports.push([module.i, \"[data-no-op]{position:absolute;height:100%;width:100%;text-align:center}[data-no-op] p[data-no-op-msg]{position:absolute;text-align:center;font-size:25px;left:0;right:0;color:#fff;padding:10px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);max-height:100%;overflow:auto}[data-no-op] canvas[data-no-op-canvas]{background-color:#777;height:100%;width:100%}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 192 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _ui_container_plugin = __webpack_require__(41);\n\nvar _ui_container_plugin2 = _interopRequireDefault(_ui_container_plugin);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _template = __webpack_require__(10);\n\nvar _template2 = _interopRequireDefault(_template);\n\nvar _spinner = __webpack_require__(193);\n\nvar _spinner2 = _interopRequireDefault(_spinner);\n\n__webpack_require__(194);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SpinnerThreeBouncePlugin = function (_UIContainerPlugin) {\n (0, _inherits3.default)(SpinnerThreeBouncePlugin, _UIContainerPlugin);\n (0, _createClass3.default)(SpinnerThreeBouncePlugin, [{\n key: 'name',\n get: function get() {\n return 'spinner';\n }\n }, {\n key: 'attributes',\n get: function get() {\n return {\n 'data-spinner': '',\n 'class': 'spinner-three-bounce'\n };\n }\n }]);\n\n function SpinnerThreeBouncePlugin(container) {\n (0, _classCallCheck3.default)(this, SpinnerThreeBouncePlugin);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _UIContainerPlugin.call(this, container));\n\n _this.template = (0, _template2.default)(_spinner2.default);\n _this.showTimeout = null;\n _this.listenTo(_this.container, _events2.default.CONTAINER_STATE_BUFFERING, _this.onBuffering);\n _this.listenTo(_this.container, _events2.default.CONTAINER_STATE_BUFFERFULL, _this.onBufferFull);\n _this.listenTo(_this.container, _events2.default.CONTAINER_STOP, _this.onStop);\n _this.listenTo(_this.container, _events2.default.CONTAINER_ENDED, _this.onStop);\n _this.listenTo(_this.container, _events2.default.CONTAINER_ERROR, _this.onStop);\n _this.render();\n return _this;\n }\n\n SpinnerThreeBouncePlugin.prototype.onBuffering = function onBuffering() {\n this.show();\n };\n\n SpinnerThreeBouncePlugin.prototype.onBufferFull = function onBufferFull() {\n this.hide();\n };\n\n SpinnerThreeBouncePlugin.prototype.onStop = function onStop() {\n this.hide();\n };\n\n SpinnerThreeBouncePlugin.prototype.show = function show() {\n var _this2 = this;\n\n if (this.showTimeout === null) this.showTimeout = setTimeout(function () {\n return _this2.$el.show();\n }, 300);\n };\n\n SpinnerThreeBouncePlugin.prototype.hide = function hide() {\n if (this.showTimeout !== null) {\n clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n this.$el.hide();\n };\n\n SpinnerThreeBouncePlugin.prototype.render = function render() {\n this.$el.html(this.template());\n this.container.$el.append(this.$el);\n this.$el.hide();\n if (this.container.buffering) this.onBuffering();\n\n return this;\n };\n\n return SpinnerThreeBouncePlugin;\n}(_ui_container_plugin2.default); // Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexports.default = SpinnerThreeBouncePlugin;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 193 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<div data-bounce1></div><div data-bounce2></div><div data-bounce3></div>\\n\";\n\n/***/ }),\n/* 194 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(195);\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(9)(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./spinner.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./spinner.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 195 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(7)(false);\n// imports\n\n\n// module\nexports.push([module.i, \".spinner-three-bounce[data-spinner]{position:absolute;margin:0 auto;width:70px;text-align:center;z-index:999;left:0;right:0;margin-left:auto;margin-right:auto;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.spinner-three-bounce[data-spinner]>div{width:18px;height:18px;background-color:#fff;border-radius:100%;display:inline-block;-webkit-animation:bouncedelay 1.4s infinite ease-in-out;animation:bouncedelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.spinner-three-bounce[data-spinner] [data-bounce1]{-webkit-animation-delay:-.32s;animation-delay:-.32s}.spinner-three-bounce[data-spinner] [data-bounce2]{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 196 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stats = __webpack_require__(197);\n\nvar _stats2 = _interopRequireDefault(_stats);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _stats2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 197 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _container_plugin = __webpack_require__(42);\n\nvar _container_plugin2 = _interopRequireDefault(_container_plugin);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _clapprZepto = __webpack_require__(6);\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar StatsPlugin = function (_ContainerPlugin) {\n (0, _inherits3.default)(StatsPlugin, _ContainerPlugin);\n (0, _createClass3.default)(StatsPlugin, [{\n key: 'name',\n get: function get() {\n return 'stats';\n }\n }]);\n\n function StatsPlugin(container) {\n (0, _classCallCheck3.default)(this, StatsPlugin);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _ContainerPlugin.call(this, container));\n\n _this.setInitialAttrs();\n _this.reportInterval = _this.options.reportInterval || 5000;\n _this.state = 'IDLE';\n return _this;\n }\n\n StatsPlugin.prototype.bindEvents = function bindEvents() {\n this.listenTo(this.container.playback, _events2.default.PLAYBACK_PLAY, this.onPlay);\n this.listenTo(this.container, _events2.default.CONTAINER_STOP, this.onStop);\n this.listenTo(this.container, _events2.default.CONTAINER_ENDED, this.onStop);\n this.listenTo(this.container, _events2.default.CONTAINER_DESTROYED, this.onStop);\n this.listenTo(this.container, _events2.default.CONTAINER_STATE_BUFFERING, this.onBuffering);\n this.listenTo(this.container, _events2.default.CONTAINER_STATE_BUFFERFULL, this.onBufferFull);\n this.listenTo(this.container, _events2.default.CONTAINER_STATS_ADD, this.onStatsAdd);\n this.listenTo(this.container, _events2.default.CONTAINER_BITRATE, this.onStatsAdd);\n this.listenTo(this.container.playback, _events2.default.PLAYBACK_STATS_ADD, this.onStatsAdd);\n };\n\n StatsPlugin.prototype.setInitialAttrs = function setInitialAttrs() {\n this.firstPlay = true;\n this.startupTime = 0;\n this.rebufferingTime = 0;\n this.watchingTime = 0;\n this.rebuffers = 0;\n this.externalMetrics = {};\n };\n\n StatsPlugin.prototype.onPlay = function onPlay() {\n this.state = 'PLAYING';\n this.watchingTimeInit = Date.now();\n if (!this.intervalId) this.intervalId = setInterval(this.report.bind(this), this.reportInterval);\n };\n\n StatsPlugin.prototype.onStop = function onStop() {\n clearInterval(this.intervalId);\n this.report();\n this.intervalId = undefined;\n this.state = 'STOPPED';\n };\n\n StatsPlugin.prototype.onBuffering = function onBuffering() {\n if (this.firstPlay) this.startupTimeInit = Date.now();else this.rebufferingTimeInit = Date.now();\n\n this.state = 'BUFFERING';\n this.rebuffers++;\n };\n\n StatsPlugin.prototype.onBufferFull = function onBufferFull() {\n if (this.firstPlay && this.startupTimeInit) {\n this.firstPlay = false;\n this.startupTime = Date.now() - this.startupTimeInit;\n this.watchingTimeInit = Date.now();\n } else if (this.rebufferingTimeInit) {\n this.rebufferingTime += this.getRebufferingTime();\n }\n\n this.rebufferingTimeInit = undefined;\n this.state = 'PLAYING';\n };\n\n StatsPlugin.prototype.getRebufferingTime = function getRebufferingTime() {\n return Date.now() - this.rebufferingTimeInit;\n };\n\n StatsPlugin.prototype.getWatchingTime = function getWatchingTime() {\n var totalTime = Date.now() - this.watchingTimeInit;\n return totalTime - this.rebufferingTime;\n };\n\n StatsPlugin.prototype.isRebuffering = function isRebuffering() {\n return !!this.rebufferingTimeInit;\n };\n\n StatsPlugin.prototype.onStatsAdd = function onStatsAdd(metric) {\n _clapprZepto2.default.extend(this.externalMetrics, metric);\n };\n\n StatsPlugin.prototype.getStats = function getStats() {\n var metrics = {\n startupTime: this.startupTime,\n rebuffers: this.rebuffers,\n rebufferingTime: this.isRebuffering() ? this.rebufferingTime + this.getRebufferingTime() : this.rebufferingTime,\n watchingTime: this.isRebuffering() ? this.getWatchingTime() - this.getRebufferingTime() : this.getWatchingTime()\n };\n _clapprZepto2.default.extend(metrics, this.externalMetrics);\n return metrics;\n };\n\n StatsPlugin.prototype.report = function report() {\n this.container.statsReport(this.getStats());\n };\n\n return StatsPlugin;\n}(_container_plugin2.default); // Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexports.default = StatsPlugin;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 198 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _ui_container_plugin = __webpack_require__(41);\n\nvar _ui_container_plugin2 = _interopRequireDefault(_ui_container_plugin);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _template = __webpack_require__(10);\n\nvar _template2 = _interopRequireDefault(_template);\n\nvar _watermark = __webpack_require__(199);\n\nvar _watermark2 = _interopRequireDefault(_watermark);\n\n__webpack_require__(200);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar WaterMarkPlugin = function (_UIContainerPlugin) {\n (0, _inherits3.default)(WaterMarkPlugin, _UIContainerPlugin);\n (0, _createClass3.default)(WaterMarkPlugin, [{\n key: 'name',\n get: function get() {\n return 'watermark';\n }\n }, {\n key: 'template',\n get: function get() {\n return (0, _template2.default)(_watermark2.default);\n }\n }]);\n\n function WaterMarkPlugin(container) {\n (0, _classCallCheck3.default)(this, WaterMarkPlugin);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _UIContainerPlugin.call(this, container));\n\n _this.configure();\n return _this;\n }\n\n WaterMarkPlugin.prototype.bindEvents = function bindEvents() {\n this.listenTo(this.container, _events2.default.CONTAINER_PLAY, this.onPlay);\n this.listenTo(this.container, _events2.default.CONTAINER_STOP, this.onStop);\n this.listenTo(this.container, _events2.default.CONTAINER_OPTIONS_CHANGE, this.configure);\n };\n\n WaterMarkPlugin.prototype.configure = function configure() {\n this.position = this.options.position || 'bottom-right';\n if (this.options.watermark) {\n this.imageUrl = this.options.watermark;\n this.imageLink = this.options.watermarkLink;\n this.render();\n } else {\n this.$el.remove();\n }\n };\n\n WaterMarkPlugin.prototype.onPlay = function onPlay() {\n if (!this.hidden) this.$el.show();\n };\n\n WaterMarkPlugin.prototype.onStop = function onStop() {\n this.$el.hide();\n };\n\n WaterMarkPlugin.prototype.render = function render() {\n this.$el.hide();\n var templateOptions = { position: this.position, imageUrl: this.imageUrl, imageLink: this.imageLink };\n this.$el.html(this.template(templateOptions));\n this.container.$el.append(this.$el);\n return this;\n };\n\n return WaterMarkPlugin;\n}(_ui_container_plugin2.default); // Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexports.default = WaterMarkPlugin;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 199 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<div data-watermark data-watermark-<%=position %>>\\n<% if(typeof imageLink !== 'undefined') { %>\\n<a target=_blank href=\\\"<%= imageLink %>\\\">\\n<% } %>\\n<img src=\\\"<%= imageUrl %>\\\">\\n<% if(typeof imageLink !== 'undefined') { %>\\n</a>\\n<% } %>\\n</div>\\n\";\n\n/***/ }),\n/* 200 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(201);\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(9)(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./watermark.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./watermark.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 201 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(7)(false);\n// imports\n\n\n// module\nexports.push([module.i, \"[data-watermark]{position:absolute;min-width:70px;max-width:200px;width:12%;text-align:center;z-index:10}[data-watermark] a{outline:none;cursor:pointer}[data-watermark] img{max-width:100%}[data-watermark-bottom-left]{bottom:10px;left:10px}[data-watermark-bottom-right]{bottom:10px;right:42px}[data-watermark-top-left]{top:10px;left:10px}[data-watermark-top-right]{top:10px;right:37px}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 202 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _ui_container_plugin = __webpack_require__(41);\n\nvar _ui_container_plugin2 = _interopRequireDefault(_ui_container_plugin);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _template = __webpack_require__(10);\n\nvar _template2 = _interopRequireDefault(_template);\n\nvar _playback = __webpack_require__(13);\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nvar _error = __webpack_require__(78);\n\nvar _error2 = _interopRequireDefault(_error);\n\nvar _poster = __webpack_require__(203);\n\nvar _poster2 = _interopRequireDefault(_poster);\n\nvar _play = __webpack_require__(62);\n\nvar _play2 = _interopRequireDefault(_play);\n\n__webpack_require__(204);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n//Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar PosterPlugin = function (_UIContainerPlugin) {\n (0, _inherits3.default)(PosterPlugin, _UIContainerPlugin);\n (0, _createClass3.default)(PosterPlugin, [{\n key: 'name',\n get: function get() {\n return 'poster';\n }\n }, {\n key: 'template',\n get: function get() {\n return (0, _template2.default)(_poster2.default);\n }\n }, {\n key: 'shouldRender',\n get: function get() {\n var showForNoOp = !!(this.options.poster && this.options.poster.showForNoOp);\n return this.container.playback.name !== 'html_img' && (this.container.playback.getPlaybackType() !== _playback2.default.NO_OP || showForNoOp);\n }\n }, {\n key: 'attributes',\n get: function get() {\n return {\n 'class': 'player-poster',\n 'data-poster': ''\n };\n }\n }, {\n key: 'events',\n get: function get() {\n return {\n 'click': 'clicked'\n };\n }\n }, {\n key: 'showOnVideoEnd',\n get: function get() {\n return !this.options.poster || this.options.poster.showOnVideoEnd || this.options.poster.showOnVideoEnd === undefined;\n }\n }]);\n\n function PosterPlugin(container) {\n (0, _classCallCheck3.default)(this, PosterPlugin);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _UIContainerPlugin.call(this, container));\n\n _this.hasStartedPlaying = false;\n _this.playRequested = false;\n _this.render();\n process.nextTick(function () {\n return _this.update();\n });\n return _this;\n }\n\n PosterPlugin.prototype.bindEvents = function bindEvents() {\n this.listenTo(this.container, _events2.default.CONTAINER_STOP, this.onStop);\n this.listenTo(this.container, _events2.default.CONTAINER_PLAY, this.onPlay);\n this.listenTo(this.container, _events2.default.CONTAINER_STATE_BUFFERING, this.update);\n this.listenTo(this.container, _events2.default.CONTAINER_STATE_BUFFERFULL, this.update);\n this.listenTo(this.container, _events2.default.CONTAINER_OPTIONS_CHANGE, this.render);\n this.listenTo(this.container, _events2.default.CONTAINER_ERROR, this.onError);\n this.showOnVideoEnd && this.listenTo(this.container, _events2.default.CONTAINER_ENDED, this.onStop);\n };\n\n PosterPlugin.prototype.onError = function onError(error) {\n this.hasFatalError = error.level === _error2.default.Levels.FATAL;\n\n if (this.hasFatalError) {\n this.hasStartedPlaying = false;\n this.playRequested = false;\n this.showPlayButton();\n }\n };\n\n PosterPlugin.prototype.onPlay = function onPlay() {\n this.hasStartedPlaying = true;\n this.update();\n };\n\n PosterPlugin.prototype.onStop = function onStop() {\n this.hasStartedPlaying = false;\n this.playRequested = false;\n this.update();\n };\n\n PosterPlugin.prototype.updatePlayButton = function updatePlayButton(show) {\n if (show && (!this.options.chromeless || this.options.allowUserInteraction)) this.showPlayButton();else this.hidePlayButton();\n };\n\n PosterPlugin.prototype.showPlayButton = function showPlayButton() {\n if (this.hasFatalError && !this.options.disableErrorScreen) return;\n\n this.$playButton.show();\n this.$el.addClass('clickable');\n };\n\n PosterPlugin.prototype.hidePlayButton = function hidePlayButton() {\n this.$playButton.hide();\n this.$el.removeClass('clickable');\n };\n\n PosterPlugin.prototype.clicked = function clicked() {\n if (!this.options.chromeless || this.options.allowUserInteraction) {\n this.playRequested = true;\n this.update();\n this.container.play();\n }\n return false;\n };\n\n PosterPlugin.prototype.shouldHideOnPlay = function shouldHideOnPlay() {\n // Audio broadcasts should keep the poster up; video should hide poster while playing.\n return !this.container.playback.isAudioOnly;\n };\n\n PosterPlugin.prototype.update = function update() {\n if (!this.shouldRender) return;\n\n var showPlayButton = !this.playRequested && !this.hasStartedPlaying && !this.container.buffering;\n this.updatePlayButton(showPlayButton);\n this.updatePoster();\n };\n\n PosterPlugin.prototype.updatePoster = function updatePoster() {\n if (!this.hasStartedPlaying) this.showPoster();else this.hidePoster();\n };\n\n PosterPlugin.prototype.showPoster = function showPoster() {\n this.container.disableMediaControl();\n this.$el.show();\n };\n\n PosterPlugin.prototype.hidePoster = function hidePoster() {\n this.container.enableMediaControl();\n if (this.shouldHideOnPlay()) this.$el.hide();\n };\n\n PosterPlugin.prototype.render = function render() {\n if (!this.shouldRender) return;\n\n this.$el.html(this.template());\n\n var isRegularPoster = this.options.poster && this.options.poster.custom === undefined;\n\n if (isRegularPoster) {\n var posterUrl = this.options.poster.url || this.options.poster;\n this.$el.css({ 'background-image': 'url(' + posterUrl + ')' });\n } else if (this.options.poster) {\n this.$el.css({ 'background': this.options.poster.custom });\n }\n\n this.container.$el.append(this.el);\n this.$playWrapper = this.$el.find('.play-wrapper');\n this.$playWrapper.append(_play2.default);\n this.$playButton = this.$playWrapper.find('svg');\n this.$playButton.addClass('poster-icon');\n this.$playButton.attr('data-poster', '');\n\n var buttonsColor = this.options.mediacontrol && this.options.mediacontrol.buttons;\n if (buttonsColor) this.$el.find('svg path').css('fill', buttonsColor);\n\n if (this.options.mediacontrol && this.options.mediacontrol.buttons) {\n buttonsColor = this.options.mediacontrol.buttons;\n this.$playButton.css('color', buttonsColor);\n }\n this.update();\n return this;\n };\n\n return PosterPlugin;\n}(_ui_container_plugin2.default);\n\nexports.default = PosterPlugin;\nmodule.exports = exports['default'];\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(60)))\n\n/***/ }),\n/* 203 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<div class=\\\"play-wrapper\\\" data-poster></div>\\n\";\n\n/***/ }),\n/* 204 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(205);\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(9)(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./poster.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./poster.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 205 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(7)(false);\n// imports\n\n\n// module\nexports.push([module.i, \".player-poster[data-poster]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:absolute;height:100%;width:100%;z-index:998;top:0;left:0;background-color:#000;background-size:cover;background-repeat:no-repeat;background-position:50% 50%}.player-poster[data-poster].clickable{cursor:pointer}.player-poster[data-poster]:hover .play-wrapper[data-poster]{opacity:1}.player-poster[data-poster] .play-wrapper[data-poster]{width:100%;height:25%;margin:0 auto;opacity:.75;transition:opacity .1s ease}.player-poster[data-poster] .play-wrapper[data-poster] svg{height:100%}.player-poster[data-poster] .play-wrapper[data-poster] svg path{fill:#fff}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 206 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _google_analytics = __webpack_require__(207);\n\nvar _google_analytics2 = _interopRequireDefault(_google_analytics);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _google_analytics2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 207 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _container_plugin = __webpack_require__(42);\n\nvar _container_plugin2 = _interopRequireDefault(_container_plugin);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nvar GoogleAnalytics = function (_ContainerPlugin) {\n (0, _inherits3.default)(GoogleAnalytics, _ContainerPlugin);\n (0, _createClass3.default)(GoogleAnalytics, [{\n key: 'name',\n get: function get() {\n return 'google_analytics';\n }\n }]);\n\n function GoogleAnalytics(container) {\n (0, _classCallCheck3.default)(this, GoogleAnalytics);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _ContainerPlugin.call(this, container));\n\n if (_this.container.options.gaAccount) {\n _this.account = _this.container.options.gaAccount;\n _this.trackerName = _this.container.options.gaTrackerName ? _this.container.options.gaTrackerName + '.' : 'Clappr.';\n _this.domainName = _this.container.options.gaDomainName;\n _this.currentHDState = undefined;\n _this.embedScript();\n }\n return _this;\n }\n\n GoogleAnalytics.prototype.embedScript = function embedScript() {\n var _this2 = this;\n\n if (!window._gat) {\n var script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('async', 'async');\n script.setAttribute('src', '//www.google-analytics.com/ga.js');\n script.onload = function () {\n return _this2.addEventListeners();\n };\n document.body.appendChild(script);\n } else {\n this.addEventListeners();\n }\n };\n\n GoogleAnalytics.prototype.addEventListeners = function addEventListeners() {\n var _this3 = this;\n\n if (this.container) {\n this.listenTo(this.container, _events2.default.CONTAINER_READY, this.onReady);\n this.listenTo(this.container, _events2.default.CONTAINER_PLAY, this.onPlay);\n this.listenTo(this.container, _events2.default.CONTAINER_STOP, this.onStop);\n this.listenTo(this.container, _events2.default.CONTAINER_PAUSE, this.onPause);\n this.listenTo(this.container, _events2.default.CONTAINER_ENDED, this.onEnded);\n this.listenTo(this.container, _events2.default.CONTAINER_STATE_BUFFERING, this.onBuffering);\n this.listenTo(this.container, _events2.default.CONTAINER_STATE_BUFFERFULL, this.onBufferFull);\n this.listenTo(this.container, _events2.default.CONTAINER_ERROR, this.onError);\n this.listenTo(this.container, _events2.default.CONTAINER_PLAYBACKSTATE, this.onPlaybackChanged);\n this.listenTo(this.container, _events2.default.CONTAINER_VOLUME, function (event) {\n return _this3.onVolumeChanged(event);\n });\n this.listenTo(this.container, _events2.default.CONTAINER_SEEK, function (event) {\n return _this3.onSeek(event);\n });\n this.listenTo(this.container, _events2.default.CONTAINER_FULL_SCREEN, this.onFullscreen);\n this.listenTo(this.container, _events2.default.CONTAINER_HIGHDEFINITIONUPDATE, this.onHD);\n this.listenTo(this.container, _events2.default.CONTAINER_PLAYBACKDVRSTATECHANGED, this.onDVR);\n }\n _gaq.push([this.trackerName + '_setAccount', this.account]);\n if (this.domainName) _gaq.push([this.trackerName + '_setDomainName', this.domainName]);\n };\n\n GoogleAnalytics.prototype.onReady = function onReady() {\n this.push(['Video', 'Playback', this.container.playback.name]);\n };\n\n GoogleAnalytics.prototype.onPlay = function onPlay() {\n this.push(['Video', 'Play', this.container.playback.src]);\n };\n\n GoogleAnalytics.prototype.onStop = function onStop() {\n this.push(['Video', 'Stop', this.container.playback.src]);\n };\n\n GoogleAnalytics.prototype.onEnded = function onEnded() {\n this.push(['Video', 'Ended', this.container.playback.src]);\n };\n\n GoogleAnalytics.prototype.onBuffering = function onBuffering() {\n this.push(['Video', 'Buffering', this.container.playback.src]);\n };\n\n GoogleAnalytics.prototype.onBufferFull = function onBufferFull() {\n this.push(['Video', 'Bufferfull', this.container.playback.src]);\n };\n\n GoogleAnalytics.prototype.onError = function onError() {\n this.push(['Video', 'Error', this.container.playback.src]);\n };\n\n GoogleAnalytics.prototype.onHD = function onHD(isHD) {\n var status = isHD ? 'ON' : 'OFF';\n if (status !== this.currentHDState) {\n this.currentHDState = status;\n this.push(['Video', 'HD - ' + status, this.container.playback.src]);\n }\n };\n\n GoogleAnalytics.prototype.onPlaybackChanged = function onPlaybackChanged(playbackState) {\n if (playbackState.type !== null) this.push(['Video', 'Playback Type - ' + playbackState.type, this.container.playback.src]);\n };\n\n GoogleAnalytics.prototype.onDVR = function onDVR(dvrInUse) {\n var status = dvrInUse ? 'ON' : 'OFF';\n this.push(['Interaction', 'DVR - ' + status, this.container.playback.src]);\n };\n\n GoogleAnalytics.prototype.onPause = function onPause() {\n this.push(['Video', 'Pause', this.container.playback.src]);\n };\n\n GoogleAnalytics.prototype.onSeek = function onSeek() {\n this.push(['Video', 'Seek', this.container.playback.src]);\n };\n\n GoogleAnalytics.prototype.onVolumeChanged = function onVolumeChanged() {\n this.push(['Interaction', 'Volume', this.container.playback.src]);\n };\n\n GoogleAnalytics.prototype.onFullscreen = function onFullscreen() {\n this.push(['Interaction', 'Fullscreen', this.container.playback.src]);\n };\n\n GoogleAnalytics.prototype.push = function push(array) {\n var res = [this.trackerName + '_trackEvent'].concat(array);\n _gaq.push(res);\n };\n\n return GoogleAnalytics;\n}(_container_plugin2.default);\n\nexports.default = GoogleAnalytics;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 208 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _container_plugin = __webpack_require__(42);\n\nvar _container_plugin2 = _interopRequireDefault(_container_plugin);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _playback = __webpack_require__(13);\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ClickToPausePlugin = function (_ContainerPlugin) {\n (0, _inherits3.default)(ClickToPausePlugin, _ContainerPlugin);\n (0, _createClass3.default)(ClickToPausePlugin, [{\n key: 'name',\n get: function get() {\n return 'click_to_pause';\n }\n }]);\n\n function ClickToPausePlugin(container) {\n (0, _classCallCheck3.default)(this, ClickToPausePlugin);\n return (0, _possibleConstructorReturn3.default)(this, _ContainerPlugin.call(this, container));\n }\n\n ClickToPausePlugin.prototype.bindEvents = function bindEvents() {\n this.listenTo(this.container, _events2.default.CONTAINER_CLICK, this.click);\n this.listenTo(this.container, _events2.default.CONTAINER_SETTINGSUPDATE, this.settingsUpdate);\n };\n\n ClickToPausePlugin.prototype.click = function click() {\n if (this.container.getPlaybackType() !== _playback2.default.LIVE || this.container.isDvrEnabled()) {\n if (this.container.isPlaying()) this.container.pause();else this.container.play();\n }\n };\n\n ClickToPausePlugin.prototype.settingsUpdate = function settingsUpdate() {\n var pointerEnabled = this.container.getPlaybackType() !== _playback2.default.LIVE || this.container.isDvrEnabled();\n if (pointerEnabled === this.pointerEnabled) return;\n\n var method = pointerEnabled ? 'addClass' : 'removeClass';\n this.container.$el[method]('pointer-enabled');\n this.pointerEnabled = pointerEnabled;\n };\n\n return ClickToPausePlugin;\n}(_container_plugin2.default); //Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexports.default = ClickToPausePlugin;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 209 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _ui_core_plugin = __webpack_require__(34);\n\nvar _ui_core_plugin2 = _interopRequireDefault(_ui_core_plugin);\n\nvar _template = __webpack_require__(10);\n\nvar _template2 = _interopRequireDefault(_template);\n\nvar _playback = __webpack_require__(13);\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _index = __webpack_require__(210);\n\nvar _index2 = _interopRequireDefault(_index);\n\n__webpack_require__(211);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DVRControls = function (_UICorePlugin) {\n (0, _inherits3.default)(DVRControls, _UICorePlugin);\n (0, _createClass3.default)(DVRControls, [{\n key: 'template',\n get: function get() {\n return (0, _template2.default)(_index2.default);\n }\n }, {\n key: 'name',\n get: function get() {\n return 'dvr_controls';\n }\n }, {\n key: 'events',\n get: function get() {\n return {\n 'click .live-button': 'click'\n };\n }\n }, {\n key: 'attributes',\n get: function get() {\n return {\n 'class': 'dvr-controls',\n 'data-dvr-controls': ''\n };\n }\n }]);\n\n function DVRControls(core) {\n (0, _classCallCheck3.default)(this, DVRControls);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _UICorePlugin.call(this, core));\n\n _this.settingsUpdate();\n return _this;\n }\n\n DVRControls.prototype.bindEvents = function bindEvents() {\n this.listenTo(this.core.mediaControl, _events2.default.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged);\n this.listenTo(this.core.mediaControl, _events2.default.MEDIACONTROL_RENDERED, this.settingsUpdate);\n this.listenTo(this.core, _events2.default.CORE_OPTIONS_CHANGE, this.render);\n if (this.core.getCurrentContainer()) {\n this.listenToOnce(this.core.getCurrentContainer(), _events2.default.CONTAINER_TIMEUPDATE, this.render);\n this.listenTo(this.core.getCurrentContainer(), _events2.default.CONTAINER_PLAYBACKDVRSTATECHANGED, this.dvrChanged);\n }\n };\n\n DVRControls.prototype.containerChanged = function containerChanged() {\n this.stopListening();\n this.bindEvents();\n };\n\n DVRControls.prototype.dvrChanged = function dvrChanged(dvrEnabled) {\n if (this.core.getPlaybackType() !== _playback2.default.LIVE) return;\n this.settingsUpdate();\n this.core.mediaControl.$el.addClass('live');\n if (dvrEnabled) {\n this.core.mediaControl.$el.addClass('dvr');\n this.core.mediaControl.$el.find('.media-control-indicator[data-position], .media-control-indicator[data-duration]').hide();\n } else {\n this.core.mediaControl.$el.removeClass('dvr');\n }\n };\n\n DVRControls.prototype.click = function click() {\n var mediaControl = this.core.mediaControl;\n var container = mediaControl.container;\n if (!container.isPlaying()) container.play();\n\n if (mediaControl.$el.hasClass('dvr')) container.seek(container.getDuration());\n };\n\n DVRControls.prototype.settingsUpdate = function settingsUpdate() {\n var _this2 = this;\n\n this.stopListening();\n this.core.mediaControl.$el.removeClass('live');\n if (this.shouldRender()) {\n this.render();\n this.$el.click(function () {\n return _this2.click();\n });\n }\n this.bindEvents();\n };\n\n DVRControls.prototype.shouldRender = function shouldRender() {\n var useDvrControls = this.core.options.useDvrControls === undefined || !!this.core.options.useDvrControls;\n return useDvrControls && this.core.getPlaybackType() === _playback2.default.LIVE;\n };\n\n DVRControls.prototype.render = function render() {\n this.$el.html(this.template({\n live: this.core.i18n.t('live'),\n backToLive: this.core.i18n.t('back_to_live')\n }));\n if (this.shouldRender()) {\n this.core.mediaControl.$el.addClass('live');\n this.core.mediaControl.$('.media-control-left-panel[data-media-control]').append(this.$el);\n }\n return this;\n };\n\n return DVRControls;\n}(_ui_core_plugin2.default);\n\nexports.default = DVRControls;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 210 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<div class=\\\"live-info\\\"><%= live %></div>\\n<button type=\\\"button\\\" class=\\\"live-button\\\" aria-label=\\\"<%= backToLive %>\\\"><%= backToLive %></button>\\n\";\n\n/***/ }),\n/* 211 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(212);\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(9)(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./dvr_controls.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./dvr_controls.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 212 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(7)(false);\n// imports\n\n\n// module\nexports.push([module.i, \".dvr-controls[data-dvr-controls]{display:inline-block;float:left;color:#fff;line-height:32px;font-size:10px;font-weight:700;margin-left:6px}.dvr-controls[data-dvr-controls] .live-info{cursor:default;font-family:Roboto,Open Sans,Arial,sans-serif;text-transform:uppercase}.dvr-controls[data-dvr-controls] .live-info:before{content:\\\"\\\";display:inline-block;position:relative;width:7px;height:7px;border-radius:3.5px;margin-right:3.5px;background-color:#ff0101}.dvr-controls[data-dvr-controls] .live-info.disabled{opacity:.3}.dvr-controls[data-dvr-controls] .live-info.disabled:before{background-color:#fff}.dvr-controls[data-dvr-controls] .live-button{cursor:pointer;outline:none;display:none;border:0;color:#fff;background-color:transparent;height:32px;padding:0;opacity:.7;font-family:Roboto,Open Sans,Arial,sans-serif;text-transform:uppercase;transition:all .1s ease}.dvr-controls[data-dvr-controls] .live-button:before{content:\\\"\\\";display:inline-block;position:relative;width:7px;height:7px;border-radius:3.5px;margin-right:3.5px;background-color:#fff}.dvr-controls[data-dvr-controls] .live-button:hover{opacity:1;text-shadow:hsla(0,0%,100%,.75) 0 0 5px}.dvr .dvr-controls[data-dvr-controls] .live-info{display:none}.dvr .dvr-controls[data-dvr-controls] .live-button{display:block}.dvr.media-control.live[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{background-color:#005aff}.media-control.live[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{background-color:#ff0101}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 213 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _closed_captions = __webpack_require__(214);\n\nvar _closed_captions2 = _interopRequireDefault(_closed_captions);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _closed_captions2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 214 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _ui_core_plugin = __webpack_require__(34);\n\nvar _ui_core_plugin2 = _interopRequireDefault(_ui_core_plugin);\n\nvar _template = __webpack_require__(10);\n\nvar _template2 = _interopRequireDefault(_template);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _cc = __webpack_require__(215);\n\nvar _cc2 = _interopRequireDefault(_cc);\n\nvar _closed_captions = __webpack_require__(216);\n\nvar _closed_captions2 = _interopRequireDefault(_closed_captions);\n\n__webpack_require__(217);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ClosedCaptions = function (_UICorePlugin) {\n (0, _inherits3.default)(ClosedCaptions, _UICorePlugin);\n (0, _createClass3.default)(ClosedCaptions, [{\n key: 'name',\n get: function get() {\n return 'closed_captions';\n }\n }, {\n key: 'template',\n get: function get() {\n return (0, _template2.default)(_closed_captions2.default);\n }\n }, {\n key: 'events',\n get: function get() {\n return {\n 'click [data-cc-button]': 'toggleContextMenu',\n 'click [data-cc-select]': 'onTrackSelect'\n };\n }\n }, {\n key: 'attributes',\n get: function get() {\n return {\n 'class': 'cc-controls',\n 'data-cc-controls': ''\n };\n }\n }]);\n\n function ClosedCaptions(core) {\n (0, _classCallCheck3.default)(this, ClosedCaptions);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _UICorePlugin.call(this, core));\n\n var config = core.options.closedCaptionsConfig;\n _this._title = config && config.title ? config.title : null;\n _this._ariaLabel = config && config.ariaLabel ? config.ariaLabel : 'cc-button';\n _this._labelCb = config && config.labelCallback && typeof config.labelCallback === 'function' ? config.labelCallback : function (track) {\n return track.name;\n };\n return _this;\n }\n\n ClosedCaptions.prototype.bindEvents = function bindEvents() {\n this.listenTo(this.core.mediaControl, _events2.default.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged);\n this.listenTo(this.core.mediaControl, _events2.default.MEDIACONTROL_RENDERED, this.render);\n this.listenTo(this.core.mediaControl, _events2.default.MEDIACONTROL_HIDE, this.hideContextMenu);\n this.container = this.core.getCurrentContainer();\n if (this.container) {\n this.listenTo(this.container, _events2.default.CONTAINER_SUBTITLE_AVAILABLE, this.onSubtitleAvailable);\n this.listenTo(this.container, _events2.default.CONTAINER_SUBTITLE_CHANGED, this.onSubtitleChanged);\n this.listenTo(this.container, _events2.default.CONTAINER_STOP, this.onContainerStop);\n }\n };\n\n ClosedCaptions.prototype.onContainerStop = function onContainerStop() {\n this.ccAvailable(false);\n };\n\n ClosedCaptions.prototype.containerChanged = function containerChanged() {\n this.ccAvailable(false);\n this.stopListening();\n this.bindEvents();\n };\n\n ClosedCaptions.prototype.onSubtitleAvailable = function onSubtitleAvailable() {\n this.renderCcButton();\n this.ccAvailable(true);\n };\n\n ClosedCaptions.prototype.onSubtitleChanged = function onSubtitleChanged(track) {\n this.setCurrentContextMenuElement(track.id);\n };\n\n ClosedCaptions.prototype.onTrackSelect = function onTrackSelect(event) {\n var trackId = parseInt(event.target.dataset.ccSelect, 10);\n this.container.closedCaptionsTrackId = trackId;\n this.hideContextMenu();\n event.stopPropagation();\n return false;\n };\n\n ClosedCaptions.prototype.ccAvailable = function ccAvailable(hasCC) {\n var method = hasCC ? 'addClass' : 'removeClass';\n this.$el[method]('available');\n };\n\n ClosedCaptions.prototype.toggleContextMenu = function toggleContextMenu() {\n this.$el.find('ul').toggle();\n };\n\n ClosedCaptions.prototype.hideContextMenu = function hideContextMenu() {\n this.$el.find('ul').hide();\n };\n\n ClosedCaptions.prototype.contextMenuElement = function contextMenuElement(id) {\n return this.$el.find('ul a' + (!isNaN(id) ? '[data-cc-select=\"' + id + '\"]' : '')).parent();\n };\n\n ClosedCaptions.prototype.setCurrentContextMenuElement = function setCurrentContextMenuElement(trackId) {\n if (this._trackId !== trackId) {\n this.contextMenuElement().removeClass('current');\n this.contextMenuElement(trackId).addClass('current');\n var method = trackId > -1 ? 'addClass' : 'removeClass';\n this.$ccButton[method]('enabled');\n this._trackId = trackId;\n }\n };\n\n ClosedCaptions.prototype.renderCcButton = function renderCcButton() {\n var tracks = this.container ? this.container.closedCaptionsTracks : [];\n for (var i = 0; i < tracks.length; i++) {\n tracks[i].label = this._labelCb(tracks[i]);\n }this.$el.html(this.template({\n ariaLabel: this._ariaLabel,\n disabledLabel: this.core.i18n.t('disabled'),\n title: this._title,\n tracks: tracks\n }));\n\n this.$ccButton = this.$el.find('button.cc-button[data-cc-button]');\n this.$ccButton.append(_cc2.default);\n this.$el.append(this.style);\n };\n\n ClosedCaptions.prototype.render = function render() {\n this.renderCcButton();\n\n var $fullscreen = this.core.mediaControl.$el.find('button[data-fullscreen]');\n if ($fullscreen[0]) this.$el.insertAfter($fullscreen);else this.core.mediaControl.$el.find('.media-control-right-panel[data-media-control]').prepend(this.$el);\n\n return this;\n };\n\n return ClosedCaptions;\n}(_ui_core_plugin2.default);\n\nexports.default = ClosedCaptions;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 215 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 49 41.8\\\" style=\\\"enable-background:new 0 0 49 41.8;\\\" xml:space=\\\"preserve\\\"><path d=\\\"M47.1,0H3.2C1.6,0,0,1.2,0,2.8v31.5C0,35.9,1.6,37,3.2,37h11.9l3.2,1.9l4.7,2.7c0.9,0.5,2-0.1,2-1.1V37h22.1 c1.6,0,1.9-1.1,1.9-2.7V2.8C49,1.2,48.7,0,47.1,0z M7.2,18.6c0-4.8,3.5-9.3,9.9-9.3c4.8,0,7.1,2.7,7.1,2.7l-2.5,4 c0,0-1.7-1.7-4.2-1.7c-2.8,0-4.3,2.1-4.3,4.3c0,2.1,1.5,4.4,4.5,4.4c2.5,0,4.9-2.1,4.9-2.1l2.2,4.2c0,0-2.7,2.9-7.6,2.9 C10.8,27.9,7.2,23.5,7.2,18.6z M36.9,27.9c-6.4,0-9.9-4.4-9.9-9.3c0-4.8,3.5-9.3,9.9-9.3C41.7,9.3,44,12,44,12l-2.5,4 c0,0-1.7-1.7-4.2-1.7c-2.8,0-4.3,2.1-4.3,4.3c0,2.1,1.5,4.4,4.5,4.4c2.5,0,4.9-2.1,4.9-2.1l2.2,4.2C44.5,25,41.9,27.9,36.9,27.9z\\\"></path></svg>\"\n\n/***/ }),\n/* 216 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<button type=\\\"button\\\" class=\\\"cc-button media-control-button media-control-icon\\\" data-cc-button aria-label=\\\"<%= ariaLabel %>\\\"></button>\\n<ul>\\n <% if (title) { %>\\n <li data-title><%= title %></li>\\n <% }; %>\\n <li><a href=\\\"#\\\" data-cc-select=\\\"-1\\\"><%= disabledLabel %></a></li>\\n <% for (var i = 0; i < tracks.length; i++) { %>\\n <li><a href=\\\"#\\\" data-cc-select=\\\"<%= tracks[i].id %>\\\"><%= tracks[i].label %></a></li>\\n <% }; %>\\n</ul>\\n\";\n\n/***/ }),\n/* 217 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(218);\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(9)(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./closed_captions.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./closed_captions.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 218 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(7)(false);\n// imports\n\n\n// module\nexports.push([module.i, \".cc-controls[data-cc-controls]{float:right;position:relative;display:none}.cc-controls[data-cc-controls].available{display:block}.cc-controls[data-cc-controls] .cc-button{padding:6px!important}.cc-controls[data-cc-controls] .cc-button.enabled{display:block;opacity:1}.cc-controls[data-cc-controls] .cc-button.enabled:hover{opacity:1;text-shadow:none}.cc-controls[data-cc-controls]>ul{list-style-type:none;position:absolute;bottom:25px;border:1px solid #000;display:none;background-color:#e6e6e6}.cc-controls[data-cc-controls] li{font-size:10px}.cc-controls[data-cc-controls] li[data-title]{background-color:#c3c2c2;padding:5px}.cc-controls[data-cc-controls] li a{color:#444;padding:2px 10px;display:block;text-decoration:none}.cc-controls[data-cc-controls] li a:hover{background-color:#555;color:#fff}.cc-controls[data-cc-controls] li a:hover a{color:#fff;text-decoration:none}.cc-controls[data-cc-controls] li.current a{color:red}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 219 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _core_plugin = __webpack_require__(35);\n\nvar _core_plugin2 = _interopRequireDefault(_core_plugin);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _clapprZepto = __webpack_require__(6);\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nvar _play = __webpack_require__(62);\n\nvar _play2 = _interopRequireDefault(_play);\n\nvar _pause = __webpack_require__(82);\n\nvar _pause2 = _interopRequireDefault(_pause);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar oldIcon = (0, _clapprZepto2.default)('link[rel=\"shortcut icon\"]');\n\nvar Favicon = function (_CorePlugin) {\n (0, _inherits3.default)(Favicon, _CorePlugin);\n (0, _createClass3.default)(Favicon, [{\n key: 'name',\n get: function get() {\n return 'favicon';\n }\n }, {\n key: 'oldIcon',\n get: function get() {\n return oldIcon;\n }\n }]);\n\n function Favicon(core) {\n (0, _classCallCheck3.default)(this, Favicon);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _CorePlugin.call(this, core));\n\n _this._container = null;\n _this.configure();\n return _this;\n }\n\n Favicon.prototype.configure = function configure() {\n if (this.core.options.changeFavicon) {\n if (!this.enabled) {\n this.stopListening(this.core, _events2.default.CORE_OPTIONS_CHANGE);\n this.enable();\n }\n } else if (this.enabled) {\n this.disable();\n this.listenTo(this.core, _events2.default.CORE_OPTIONS_CHANGE, this.configure);\n }\n };\n\n Favicon.prototype.bindEvents = function bindEvents() {\n this.listenTo(this.core, _events2.default.CORE_OPTIONS_CHANGE, this.configure);\n this.listenTo(this.core.mediaControl, _events2.default.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged);\n if (this.core.mediaControl.container) this.containerChanged();\n };\n\n Favicon.prototype.containerChanged = function containerChanged() {\n this._container && this.stopListening(this._container);\n this._container = this.core.mediaControl.container;\n this.listenTo(this._container, _events2.default.CONTAINER_PLAY, this.setPlayIcon);\n this.listenTo(this._container, _events2.default.CONTAINER_PAUSE, this.setPauseIcon);\n this.listenTo(this._container, _events2.default.CONTAINER_STOP, this.resetIcon);\n this.listenTo(this._container, _events2.default.CONTAINER_ENDED, this.resetIcon);\n this.listenTo(this._container, _events2.default.CONTAINER_ERROR, this.resetIcon);\n this.resetIcon();\n };\n\n Favicon.prototype.disable = function disable() {\n _CorePlugin.prototype.disable.call(this);\n this.resetIcon();\n };\n\n Favicon.prototype.destroy = function destroy() {\n _CorePlugin.prototype.destroy.call(this);\n this.resetIcon();\n };\n\n Favicon.prototype.createIcon = function createIcon(svg) {\n var canvas = (0, _clapprZepto2.default)('<canvas/>');\n canvas[0].width = 16;\n canvas[0].height = 16;\n var ctx = canvas[0].getContext('2d');\n ctx.fillStyle = '#000';\n var d = (0, _clapprZepto2.default)(svg).find('path').attr('d');\n var path = new Path2D(d);\n ctx.fill(path);\n var icon = (0, _clapprZepto2.default)('<link rel=\"shortcut icon\" type=\"image/png\"/>');\n icon.attr('href', canvas[0].toDataURL('image/png'));\n return icon;\n };\n\n Favicon.prototype.setPlayIcon = function setPlayIcon() {\n if (!this.playIcon) this.playIcon = this.createIcon(_play2.default);\n\n this.changeIcon(this.playIcon);\n };\n\n Favicon.prototype.setPauseIcon = function setPauseIcon() {\n if (!this.pauseIcon) this.pauseIcon = this.createIcon(_pause2.default);\n\n this.changeIcon(this.pauseIcon);\n };\n\n Favicon.prototype.resetIcon = function resetIcon() {\n (0, _clapprZepto2.default)('link[rel=\"shortcut icon\"]').remove();\n (0, _clapprZepto2.default)('head').append(this.oldIcon);\n };\n\n Favicon.prototype.changeIcon = function changeIcon(icon) {\n if (icon) {\n (0, _clapprZepto2.default)('link[rel=\"shortcut icon\"]').remove();\n (0, _clapprZepto2.default)('head').append(icon);\n }\n };\n\n return Favicon;\n}(_core_plugin2.default);\n\nexports.default = Favicon;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 220 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _seek_time = __webpack_require__(221);\n\nvar _seek_time2 = _interopRequireDefault(_seek_time);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _seek_time2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 221 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = __webpack_require__(5);\n\nvar _ui_core_plugin = __webpack_require__(34);\n\nvar _ui_core_plugin2 = _interopRequireDefault(_ui_core_plugin);\n\nvar _template = __webpack_require__(10);\n\nvar _template2 = _interopRequireDefault(_template);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _playback = __webpack_require__(13);\n\nvar _playback2 = _interopRequireDefault(_playback);\n\nvar _seek_time = __webpack_require__(222);\n\nvar _seek_time2 = _interopRequireDefault(_seek_time);\n\n__webpack_require__(223);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SeekTime = function (_UICorePlugin) {\n (0, _inherits3.default)(SeekTime, _UICorePlugin);\n (0, _createClass3.default)(SeekTime, [{\n key: 'name',\n get: function get() {\n return 'seek_time';\n }\n }, {\n key: 'template',\n get: function get() {\n return (0, _template2.default)(_seek_time2.default);\n }\n }, {\n key: 'attributes',\n get: function get() {\n return {\n 'class': 'seek-time',\n 'data-seek-time': ''\n };\n }\n }, {\n key: 'mediaControl',\n get: function get() {\n return this.core.mediaControl;\n }\n }, {\n key: 'mediaControlContainer',\n get: function get() {\n return this.mediaControl.container;\n }\n }, {\n key: 'isLiveStreamWithDvr',\n get: function get() {\n return this.mediaControlContainer && this.mediaControlContainer.getPlaybackType() === _playback2.default.LIVE && this.mediaControlContainer.isDvrEnabled();\n }\n }, {\n key: 'durationShown',\n get: function get() {\n return this.isLiveStreamWithDvr && !this.actualLiveTime;\n }\n }, {\n key: 'useActualLiveTime',\n get: function get() {\n return this.actualLiveTime && this.isLiveStreamWithDvr;\n }\n }]);\n\n function SeekTime(core) {\n (0, _classCallCheck3.default)(this, SeekTime);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _UICorePlugin.call(this, core));\n\n _this.hoveringOverSeekBar = false;\n _this.hoverPosition = null;\n _this.duration = null;\n _this.firstFragDateTime = null;\n _this.actualLiveTime = !!_this.mediaControl.options.actualLiveTime;\n if (_this.actualLiveTime) {\n if (_this.mediaControl.options.actualLiveServerTime) _this.actualLiveServerTimeDiff = new Date().getTime() - new Date(_this.mediaControl.options.actualLiveServerTime).getTime();else _this.actualLiveServerTimeDiff = 0;\n }\n return _this;\n }\n\n SeekTime.prototype.bindEvents = function bindEvents() {\n this.listenTo(this.mediaControl, _events2.default.MEDIACONTROL_RENDERED, this.render);\n this.listenTo(this.mediaControl, _events2.default.MEDIACONTROL_MOUSEMOVE_SEEKBAR, this.showTime);\n this.listenTo(this.mediaControl, _events2.default.MEDIACONTROL_MOUSELEAVE_SEEKBAR, this.hideTime);\n this.listenTo(this.mediaControl, _events2.default.MEDIACONTROL_CONTAINERCHANGED, this.onContainerChanged);\n if (this.mediaControlContainer) {\n this.listenTo(this.mediaControlContainer, _events2.default.CONTAINER_PLAYBACKDVRSTATECHANGED, this.update);\n this.listenTo(this.mediaControlContainer, _events2.default.CONTAINER_TIMEUPDATE, this.updateDuration);\n }\n };\n\n SeekTime.prototype.onContainerChanged = function onContainerChanged() {\n this.stopListening();\n this.bindEvents();\n };\n\n SeekTime.prototype.updateDuration = function updateDuration(timeProgress) {\n this.duration = timeProgress.total;\n this.firstFragDateTime = timeProgress.firstFragDateTime;\n this.update();\n };\n\n SeekTime.prototype.showTime = function showTime(event) {\n this.hoveringOverSeekBar = true;\n this.calculateHoverPosition(event);\n this.update();\n };\n\n SeekTime.prototype.hideTime = function hideTime() {\n this.hoveringOverSeekBar = false;\n this.update();\n };\n\n SeekTime.prototype.calculateHoverPosition = function calculateHoverPosition(event) {\n var offset = event.pageX - this.mediaControl.$seekBarContainer.offset().left;\n // proportion into the seek bar that the mouse is hovered over 0-1\n this.hoverPosition = Math.min(1, Math.max(offset / this.mediaControl.$seekBarContainer.width(), 0));\n };\n\n SeekTime.prototype.getSeekTime = function getSeekTime() {\n var seekTime = void 0,\n secondsSinceMidnight = void 0,\n d = void 0,\n e = void 0;\n if (this.useActualLiveTime) {\n if (this.firstFragDateTime) {\n e = new Date(this.firstFragDateTime);\n d = new Date(this.firstFragDateTime);\n d.setHours(0, 0, 0, 0);\n secondsSinceMidnight = (e.getTime() - d.getTime()) / 1000 + this.duration;\n } else {\n d = new Date(new Date().getTime() - this.actualLiveServerTimeDiff);\n e = new Date(d);\n secondsSinceMidnight = (e - d.setHours(0, 0, 0, 0)) / 1000;\n }\n seekTime = secondsSinceMidnight - this.duration + this.hoverPosition * this.duration;\n if (seekTime < 0) seekTime += 86400;\n } else {\n seekTime = this.hoverPosition * this.duration;\n }\n\n return { seekTime: seekTime, secondsSinceMidnight: secondsSinceMidnight };\n };\n\n SeekTime.prototype.update = function update() {\n if (!this.rendered) {\n // update() is always called after a render\n return;\n }\n if (!this.shouldBeVisible()) {\n this.$el.hide();\n this.$el.css('left', '-100%');\n } else {\n var seekTime = this.getSeekTime();\n var currentSeekTime = (0, _utils.formatTime)(seekTime.seekTime, this.useActualLiveTime);\n // only update dom if necessary, ie time actually changed\n if (currentSeekTime !== this.displayedSeekTime) {\n this.$seekTimeEl.text(currentSeekTime);\n this.displayedSeekTime = currentSeekTime;\n }\n\n if (this.durationShown) {\n this.$durationEl.show();\n var currentDuration = (0, _utils.formatTime)(this.actualLiveTime ? seekTime.secondsSinceMidnight : this.duration, this.actualLiveTime);\n if (currentDuration !== this.displayedDuration) {\n this.$durationEl.text(currentDuration);\n this.displayedDuration = currentDuration;\n }\n } else {\n this.$durationEl.hide();\n }\n\n // the element must be unhidden before its width is requested, otherwise it's width will be reported as 0\n this.$el.show();\n var containerWidth = this.mediaControl.$seekBarContainer.width();\n var elWidth = this.$el.width();\n var elLeftPos = this.hoverPosition * containerWidth;\n elLeftPos -= elWidth / 2;\n elLeftPos = Math.max(0, Math.min(elLeftPos, containerWidth - elWidth));\n this.$el.css('left', elLeftPos);\n }\n };\n\n SeekTime.prototype.shouldBeVisible = function shouldBeVisible() {\n return this.mediaControlContainer && this.mediaControlContainer.settings.seekEnabled && this.hoveringOverSeekBar && this.hoverPosition !== null && this.duration !== null;\n };\n\n SeekTime.prototype.render = function render() {\n this.rendered = true;\n this.displayedDuration = null;\n this.displayedSeekTime = null;\n this.$el.html(this.template());\n this.$el.hide();\n this.mediaControl.$el.append(this.el);\n this.$seekTimeEl = this.$el.find('[data-seek-time]');\n this.$durationEl = this.$el.find('[data-duration]');\n this.$durationEl.hide();\n this.update();\n };\n\n return SeekTime;\n}(_ui_core_plugin2.default); // Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nexports.default = SeekTime;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 222 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<span data-seek-time></span>\\n<span data-duration></span>\\n\";\n\n/***/ }),\n/* 223 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(224);\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(9)(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./seek_time.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./seek_time.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 224 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(7)(false);\n// imports\n\n\n// module\nexports.push([module.i, \".seek-time[data-seek-time]{position:absolute;white-space:nowrap;height:20px;line-height:20px;font-size:0;left:-100%;bottom:55px;background-color:rgba(2,2,2,.5);z-index:9999;transition:opacity .1s ease}.seek-time[data-seek-time].hidden[data-seek-time]{opacity:0}.seek-time[data-seek-time] [data-seek-time]{display:inline-block;color:#fff;font-size:10px;padding-left:7px;padding-right:7px;vertical-align:top}.seek-time[data-seek-time] [data-duration]{display:inline-block;color:hsla(0,0%,100%,.5);font-size:10px;padding-right:7px;vertical-align:top}.seek-time[data-seek-time] [data-duration]:before{content:\\\"|\\\";margin-right:7px}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 225 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _core_plugin = __webpack_require__(35);\n\nvar _core_plugin2 = _interopRequireDefault(_core_plugin);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SourcesPlugin = function (_CorePlugin) {\n (0, _inherits3.default)(SourcesPlugin, _CorePlugin);\n\n function SourcesPlugin() {\n (0, _classCallCheck3.default)(this, SourcesPlugin);\n return (0, _possibleConstructorReturn3.default)(this, _CorePlugin.apply(this, arguments));\n }\n\n SourcesPlugin.prototype.bindEvents = function bindEvents() {\n this.listenTo(this.core, _events2.default.CORE_CONTAINERS_CREATED, this.onContainersCreated);\n };\n\n SourcesPlugin.prototype.onContainersCreated = function onContainersCreated() {\n var firstValidSource = this.core.containers.filter(function (container) {\n return container.playback.name !== 'no_op';\n })[0] || this.core.containers[0];\n if (firstValidSource) {\n this.core.containers.forEach(function (container) {\n if (container !== firstValidSource) container.destroy();\n });\n }\n };\n\n (0, _createClass3.default)(SourcesPlugin, [{\n key: 'name',\n get: function get() {\n return 'sources';\n }\n }]);\n return SourcesPlugin;\n}(_core_plugin2.default);\n\nexports.default = SourcesPlugin;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 226 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _core_plugin = __webpack_require__(35);\n\nvar _core_plugin2 = _interopRequireDefault(_core_plugin);\n\nvar _utils = __webpack_require__(5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EndVideo = function (_CorePlugin) {\n (0, _inherits3.default)(EndVideo, _CorePlugin);\n\n function EndVideo() {\n (0, _classCallCheck3.default)(this, EndVideo);\n return (0, _possibleConstructorReturn3.default)(this, _CorePlugin.apply(this, arguments));\n }\n\n EndVideo.prototype.bindEvents = function bindEvents() {\n this.listenTo(this.core.mediaControl, _events2.default.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged);\n var container = this.core.getCurrentContainer();\n if (container) {\n this.listenTo(container, _events2.default.CONTAINER_ENDED, this.ended);\n this.listenTo(container, _events2.default.CONTAINER_STOP, this.ended);\n }\n };\n\n EndVideo.prototype.containerChanged = function containerChanged() {\n this.stopListening();\n this.bindEvents();\n };\n\n EndVideo.prototype.ended = function ended() {\n var exitOnEnd = typeof this.core.options.exitFullscreenOnEnd === 'undefined' || this.core.options.exitFullscreenOnEnd;\n if (exitOnEnd && _utils.Fullscreen.isFullscreen()) this.core.toggleFullscreen();\n };\n\n (0, _createClass3.default)(EndVideo, [{\n key: 'name',\n get: function get() {\n return 'end_video';\n }\n }]);\n return EndVideo;\n}(_core_plugin2.default);\n\nexports.default = EndVideo;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 227 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = __webpack_require__(5);\n\nvar _clapprZepto = __webpack_require__(6);\n\nvar _clapprZepto2 = _interopRequireDefault(_clapprZepto);\n\nvar _core_plugin = __webpack_require__(35);\n\nvar _core_plugin2 = _interopRequireDefault(_core_plugin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The internationalization (i18n) plugin\n * @class Strings\n * @constructor\n * @extends CorePlugin\n * @module plugins\n */\nvar Strings = function (_CorePlugin) {\n (0, _inherits3.default)(Strings, _CorePlugin);\n (0, _createClass3.default)(Strings, [{\n key: 'name',\n get: function get() {\n return 'strings';\n }\n }]);\n\n function Strings(core) {\n (0, _classCallCheck3.default)(this, Strings);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _CorePlugin.call(this, core));\n\n _this._initializeMessages();\n return _this;\n }\n /**\n * Gets a translated string for the given key.\n * @method t\n * @param {String} key the key to all messages\n * @return {String} translated label\n */\n\n\n Strings.prototype.t = function t(key) {\n var lang = this._language();\n var fallbackLang = this._messages['en'];\n var i18n = lang && this._messages[lang] || fallbackLang;\n return i18n[key] || fallbackLang[key] || key;\n };\n\n Strings.prototype._language = function _language() {\n return this.core.options.language || (0, _utils.getBrowserLanguage)();\n };\n\n Strings.prototype._initializeMessages = function _initializeMessages() {\n var defaultMessages = {\n 'en': {\n 'live': 'live',\n 'back_to_live': 'back to live',\n 'disabled': 'Disabled',\n 'playback_not_supported': 'Your browser does not support the playback of this video. Please try using a different browser.',\n 'default_error_title': 'Could not play video.',\n 'default_error_message': 'There was a problem trying to load the video.'\n },\n 'pt': {\n 'live': 'ao vivo',\n 'back_to_live': 'voltar para o ao vivo',\n 'disabled': 'Desativado',\n 'playback_not_supported': 'Seu navegador não supporta a reprodução deste video. Por favor, tente usar um navegador diferente.',\n 'default_error_title': 'Não foi possÃvel reproduzir o vÃdeo.',\n 'default_error_message': 'Ocorreu um problema ao tentar carregar o vÃdeo.'\n },\n 'es': {\n 'live': 'vivo',\n 'back_to_live': 'volver en vivo',\n 'disabled': 'Discapacitado',\n 'playback_not_supported': 'Su navegador no soporta la reproducción de un video. Por favor, trate de usar un navegador diferente.'\n },\n 'ru': {\n 'live': 'прÑмой Ñфир',\n 'back_to_live': 'к прÑмому Ñфиру',\n 'disabled': 'Отключено',\n 'playback_not_supported': 'Ваш браузер не поддерживает воÑпроизведение Ñтого видео. ПожалуйÑта, попробуйте другой браузер.'\n },\n 'fr': {\n 'live': 'en direct',\n 'back_to_live': 'retour au direct',\n 'disabled': 'Désactivé',\n 'playback_not_supported': 'Votre navigateur ne supporte pas la lecture de cette vidéo. Merci de tenter sur un autre navigateur.',\n 'default_error_title': 'Impossible de lire la vidéo.',\n 'default_error_message': 'Un problème est survenu lors du chargement de la vidéo.'\n },\n 'tr': {\n 'live': 'canlı',\n 'back_to_live': 'canlı yayına dön',\n 'disabled': 'Engelli',\n 'playback_not_supported': 'Tarayıcınız bu videoyu oynatma desteÄŸine sahip deÄŸil. Lütfen farklı bir tarayıcı ile deneyin.'\n },\n 'et': {\n 'live': 'Otseülekanne',\n 'back_to_live': 'Tagasi otseülekande juurde',\n 'disabled': 'Keelatud',\n 'playback_not_supported': 'Teie brauser ei toeta selle video taasesitust. Proovige kasutada muud brauserit.'\n }\n };\n\n this._messages = _clapprZepto2.default.extend(true, defaultMessages, this.core.options.strings || {});\n this._messages['pt-BR'] = this._messages['pt'];\n this._messages['en-US'] = this._messages['en'];\n this._messages['es-419'] = this._messages['es'];\n this._messages['fr-FR'] = this._messages['fr'];\n this._messages['tr-TR'] = this._messages['tr'];\n this._messages['et-EE'] = this._messages['et'];\n };\n\n return Strings;\n}(_core_plugin2.default);\n\nexports.default = Strings;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 228 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _error_screen = __webpack_require__(229);\n\nvar _error_screen2 = _interopRequireDefault(_error_screen);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _error_screen2.default;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 229 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(0);\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(1);\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _createClass2 = __webpack_require__(3);\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _inherits2 = __webpack_require__(2);\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _events = __webpack_require__(4);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _ui_core_plugin = __webpack_require__(34);\n\nvar _ui_core_plugin2 = _interopRequireDefault(_ui_core_plugin);\n\nvar _template = __webpack_require__(10);\n\nvar _template2 = _interopRequireDefault(_template);\n\nvar _error = __webpack_require__(33);\n\nvar _error2 = _interopRequireDefault(_error);\n\nvar _reload = __webpack_require__(230);\n\nvar _reload2 = _interopRequireDefault(_reload);\n\nvar _error_screen = __webpack_require__(231);\n\nvar _error_screen2 = _interopRequireDefault(_error_screen);\n\n__webpack_require__(232);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ErrorScreen = function (_UICorePlugin) {\n (0, _inherits3.default)(ErrorScreen, _UICorePlugin);\n (0, _createClass3.default)(ErrorScreen, [{\n key: 'name',\n get: function get() {\n return 'error_screen';\n }\n }, {\n key: 'template',\n get: function get() {\n return (0, _template2.default)(_error_screen2.default);\n }\n }, {\n key: 'container',\n get: function get() {\n return this.core.getCurrentContainer();\n }\n }, {\n key: 'attributes',\n get: function get() {\n return {\n 'class': 'player-error-screen',\n 'data-error-screen': ''\n };\n }\n }]);\n\n function ErrorScreen(core) {\n var _ret;\n\n (0, _classCallCheck3.default)(this, ErrorScreen);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, _UICorePlugin.call(this, core));\n\n if (_this.options.disableErrorScreen) return _ret = _this.disable(), (0, _possibleConstructorReturn3.default)(_this, _ret);\n return _this;\n }\n\n ErrorScreen.prototype.bindEvents = function bindEvents() {\n this.listenTo(this.core, _events2.default.ERROR, this.onError);\n this.listenTo(this.core.mediaControl, _events2.default.MEDIACONTROL_CONTAINERCHANGED, this.onContainerChanged);\n };\n\n ErrorScreen.prototype.bindReload = function bindReload() {\n this.reloadButton = this.$el.find('.player-error-screen__reload');\n this.reloadButton && this.reloadButton.on('click', this.reload.bind(this));\n };\n\n ErrorScreen.prototype.reload = function reload() {\n var _this2 = this;\n\n this.listenToOnce(this.core, _events2.default.CORE_READY, function () {\n return _this2.container.play();\n });\n this.core.load(this.options.sources, this.options.mimeType);\n this.unbindReload();\n };\n\n ErrorScreen.prototype.unbindReload = function unbindReload() {\n this.reloadButton && this.reloadButton.off('click');\n };\n\n ErrorScreen.prototype.onContainerChanged = function onContainerChanged() {\n this.err = null;\n this.unbindReload();\n this.hide();\n };\n\n ErrorScreen.prototype.onError = function onError() {\n var err = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (err.level === _error2.default.Levels.FATAL) {\n this.err = err;\n this.container.disableMediaControl();\n this.container.stop();\n this.show();\n }\n };\n\n ErrorScreen.prototype.show = function show() {\n this.render();\n this.$el.show();\n };\n\n ErrorScreen.prototype.hide = function hide() {\n this.$el.hide();\n };\n\n ErrorScreen.prototype.render = function render() {\n if (!this.err) return;\n\n this.$el.html(this.template({\n title: this.err.UI.title,\n message: this.err.UI.message,\n code: this.err.code,\n icon: this.err.UI.icon || '',\n reloadIcon: _reload2.default\n }));\n\n this.core.$el.append(this.el);\n\n this.bindReload();\n\n return this;\n };\n\n return ErrorScreen;\n}(_ui_core_plugin2.default);\n\nexports.default = ErrorScreen;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 230 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<svg fill=\\\"#FFFFFF\\\" viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\\\"></path><path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\"></path></svg>\"\n\n/***/ }),\n/* 231 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"<div class=\\\"player-error-screen__content\\\" data-error-screen>\\n <% if (icon) { %>\\n <div class=\\\"player-error-screen__icon\\\" data-error-screen><%= icon %></div>\\n <% } %>\\n <div class=\\\"player-error-screen__title\\\" data-error-screen><%= title %></div>\\n <div class=\\\"player-error-screen__message\\\" data-error-screen><%= message %></div>\\n <div class=\\\"player-error-screen__code\\\" data-error-screen>Error code: <%= code %></div>\\n <div class=\\\"player-error-screen__reload\\\" data-error-screen><%= reloadIcon %></div>\\n</div>\\n\";\n\n/***/ }),\n/* 232 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(233);\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(9)(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./error_screen.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./error_screen.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 233 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(7)(false);\n// imports\n\n\n// module\nexports.push([module.i, \"div.player-error-screen{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#cccaca;position:absolute;top:0;height:100%;width:100%;background-color:rgba(0,0,0,.7);z-index:2000;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}div.player-error-screen__content[data-error-screen]{font-size:14px;color:#cccaca;margin-top:45px}div.player-error-screen__title[data-error-screen]{font-weight:700;line-height:30px;font-size:18px}div.player-error-screen__message[data-error-screen]{width:90%;margin:0 auto}div.player-error-screen__code[data-error-screen]{font-size:13px;margin-top:15px}div.player-error-screen__reload{cursor:pointer;width:30px;margin:15px auto 0}\", \"\"]);\n\n// exports\n\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// clappr.plainhtml5.min.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// 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 = 96);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 514e5774376a76eb6142","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/classCallCheck.js\n// module id = 0\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\n// module id = 1\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/inherits.js\n// module id = 2\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/createClass.js\n// module id = 3\n// module chunks = 0","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport Log from '../plugins/log'\nimport { uniqueId } from './utils'\n\nconst slice = Array.prototype.slice\n\nconst eventSplitter = /\\s+/\n\nconst eventsApi = function(obj, action, name, rest) {\n if (!name) return true\n\n // Handle event maps.\n if (typeof name === 'object') {\n for (const key in name)\n obj[action].apply(obj, [key, name[key]].concat(rest))\n\n return false\n }\n\n // Handle space separated event names.\n if (eventSplitter.test(name)) {\n const names = name.split(eventSplitter)\n for (let i = 0, l = names.length; i < l; i++)\n obj[action].apply(obj, [names[i]].concat(rest))\n\n return false\n }\n\n return true\n}\n\nconst triggerEvents = function(events, args, klass, name) {\n let ev, i = -1\n const l = events.length, a1 = args[0], a2 = args[1], a3 = args[2]\n run()\n\n function run() {\n try {\n switch (args.length) {\n /* eslint-disable curly */\n case 0: while (++i < l) { (ev = events[i]).callback.call(ev.ctx) } return\n case 1: while (++i < l) { (ev = events[i]).callback.call(ev.ctx, a1) } return\n case 2: while (++i < l) { (ev = events[i]).callback.call(ev.ctx, a1, a2) } return\n case 3: while (++i < l) { (ev = events[i]).callback.call(ev.ctx, a1, a2, a3) } return\n default: while (++i < l) { (ev = events[i]).callback.apply(ev.ctx, args) } return\n }\n } catch (exception) {\n Log.error.apply(Log, [klass, 'error on event', name, 'trigger','-', exception])\n run()\n }\n }\n}\n\n/**\n * @class Events\n * @constructor\n * @module base\n */\nexport default class Events {\n /**\n * listen to an event indefinitely, if you want to stop you need to call `off`\n * @method on\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n */\n on(name, callback, context) {\n if (!eventsApi(this, 'on', name, [callback, context]) || !callback) return this\n this._events || (this._events = {})\n const events = this._events[name] || (this._events[name] = [])\n events.push({ callback: callback, context: context, ctx: context || this })\n return this\n }\n\n /**\n * listen to an event only once\n * @method once\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n */\n once(name, callback, context) {\n let once\n if (!eventsApi(this, 'once', name, [callback, context]) || !callback) return this\n const off = () => this.off(name, once)\n once = function() {\n off(name, once)\n callback.apply(this, arguments)\n }\n return this.on(name, once, context)\n }\n\n /**\n * stop listening to an event\n * @method off\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n */\n off(name, callback, context) {\n let retain, ev, events, names, i, l, j, k\n if (!this._events || !eventsApi(this, 'off', name, [callback, context])) return this\n if (!name && !callback && !context) {\n this._events = void 0\n return this\n }\n names = name ? [name] : Object.keys(this._events)\n // jshint maxdepth:5\n for (i = 0, l = names.length; i < l; i++) {\n name = names[i]\n events = this._events[name]\n if (events) {\n this._events[name] = retain = []\n if (callback || context) {\n for (j = 0, k = events.length; j < k; j++) {\n ev = events[j]\n if ((callback && callback !== ev.callback && callback !== ev.callback._callback) ||\n (context && context !== ev.context))\n retain.push(ev)\n\n }\n }\n if (!retain.length) delete this._events[name]\n }\n }\n return this\n }\n\n /**\n * triggers an event given its `name`\n * @method trigger\n * @param {String} name\n */\n trigger(name) {\n const klass = this.name || this.constructor.name\n Log.debug.apply(Log, [klass].concat(Array.prototype.slice.call(arguments)))\n if (!this._events) return this\n const args = slice.call(arguments, 1)\n if (!eventsApi(this, 'trigger', name, args)) return this\n const events = this._events[name]\n const allEvents = this._events.all\n if (events) triggerEvents(events, args, klass, name)\n if (allEvents) triggerEvents(allEvents, arguments, klass, name)\n return this\n }\n\n /**\n * stop listening an event for a given object\n * @method stopListening\n * @param {Object} obj\n * @param {String} name\n * @param {Function} callback\n */\n stopListening(obj, name, callback) {\n let listeningTo = this._listeningTo\n if (!listeningTo) return this\n const remove = !name && !callback\n if (!callback && typeof name === 'object') callback = this\n if (obj) (listeningTo = {})[obj._listenId] = obj\n for (const id in listeningTo) {\n obj = listeningTo[id]\n obj.off(name, callback, this)\n if (remove || Object.keys(obj._events).length === 0) delete this._listeningTo[id]\n }\n return this\n }\n\n static register(eventName) {\n Events.Custom || (Events.Custom = {})\n let property = typeof eventName === 'string' && eventName.toUpperCase().trim()\n\n if (property && !Events.Custom[property]) {\n Events.Custom[property] = property.toLowerCase().split('_').map(\n (value, index) => index === 0 ? value : value = (value[0].toUpperCase() + value.slice(1))\n ).join('')\n } else\n Log.error('Events', 'Error when register event: ' + eventName)\n\n }\n\n static listAvailableCustomEvents() {\n Events.Custom || (Events.Custom = {})\n return Object.keys(Events.Custom).filter((property) => typeof Events.Custom[property] === 'string')\n }\n}\n\n/**\n * listen to an event indefinitely for a given `obj`\n * @method listenTo\n * @param {Object} obj\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n * @example\n * ```javascript\n * this.listenTo(this.core.playback, Events.PLAYBACK_PAUSE, this.callback)\n * ```\n */\n/**\n * listen to an event once for a given `obj`\n * @method listenToOnce\n * @param {Object} obj\n * @param {String} name\n * @param {Function} callback\n * @param {Object} context\n * @example\n * ```javascript\n * this.listenToOnce(this.core.playback, Events.PLAYBACK_PAUSE, this.callback)\n * ```\n */\nconst listenMethods = { listenTo: 'on', listenToOnce: 'once' }\n\nObject.keys(listenMethods).forEach(function(method) {\n Events.prototype[method] = function(obj, name, callback) {\n const listeningTo = this._listeningTo || (this._listeningTo = {})\n const id = obj._listenId || (obj._listenId = uniqueId('l'))\n listeningTo[id] = obj\n if (!callback && typeof name === 'object') callback = this\n obj[listenMethods[method]](name, callback, this)\n return this\n }\n})\n\n// PLAYER EVENTS\n/**\n * Fired when the player is ready on startup\n *\n * @event PLAYER_READY\n */\nEvents.PLAYER_READY = 'ready'\n/**\n * Fired when player resizes\n *\n * @event PLAYER_RESIZE\n * @param {Object} currentSize an object with the current size\n */\nEvents.PLAYER_RESIZE = 'resize'\n/**\n * Fired when player changes its fullscreen state\n *\n * @event PLAYER_FULLSCREEN\n * @param {Boolean} whether or not the player is on fullscreen mode\n */\nEvents.PLAYER_FULLSCREEN = 'fullscreen'\n/**\n * Fired when player starts to play\n *\n * @event PLAYER_PLAY\n */\nEvents.PLAYER_PLAY = 'play'\n/**\n * Fired when player pauses\n *\n * @event PLAYER_PAUSE\n */\nEvents.PLAYER_PAUSE = 'pause'\n/**\n * Fired when player stops\n *\n * @event PLAYER_STOP\n */\nEvents.PLAYER_STOP = 'stop'\n/**\n * Fired when player ends the video\n *\n * @event PLAYER_ENDED\n */\nEvents.PLAYER_ENDED = 'ended'\n/**\n * Fired when player seeks the video\n *\n * @event PLAYER_SEEK\n * @param {Number} time the current time in seconds\n */\nEvents.PLAYER_SEEK = 'seek'\n/**\n * Fired when player receives an error\n *\n * @event PLAYER_ERROR\n * @param {Object} error the error\n */\nEvents.PLAYER_ERROR = 'playererror'\n/**\n * Fired when there is an error\n *\n * @event ERROR\n * @param {Object} error\n * the error with the following format `{code, description, level, raw, origin, scope}`\n * @param {String} [options.code]\n * error's code: code to identify error in the following format: origin:code\n * @param {String} [options.description]\n * error's description: description of the error\n * @param {String} [options.level]\n * error's level: FATAL or WARN.\n * @param {String} [options.origin]\n * error's origin. Example: hls, html5, etc\n * @param {String} [options.scope]\n * error's scope. Example: playback, container, etc\n * @param {String} [options.raw]\n * raw error: the initial error received\n */\nEvents.ERROR = 'error'\n/**\n * Fired when the time is updated on player\n *\n * @event PLAYER_TIMEUPDATE\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.current]\n * current time (in seconds)\n * @param {Number} [progress.total]\n * total time (in seconds)\n */\nEvents.PLAYER_TIMEUPDATE = 'timeupdate'\n/**\n * Fired when player updates its volume\n *\n * @event PLAYER_VOLUMEUPDATE\n * @param {Number} volume the current volume\n */\nEvents.PLAYER_VOLUMEUPDATE = 'volumeupdate'\n\n/**\n * Fired when subtitle is available\n *\n * @event PLAYER_SUBTITLE_AVAILABLE\n */\nEvents.PLAYER_SUBTITLE_AVAILABLE = 'subtitleavailable'\n\n// Playback Events\n/**\n * Fired when the playback is downloading the media\n *\n * @event PLAYBACK_PROGRESS\n * @param progress {Object}\n * Data progress object\n * @param [progress.start] {Number}\n * start position of buffered content at current position\n * @param [progress.current] {Number}\n * end position of buffered content at current position\n * @param [progress.total] {Number}\n * total content to be downloaded\n * @param buffered {Array}\n * array of buffered segments ({start, end}). [Only for supported playbacks]\n */\nEvents.PLAYBACK_PROGRESS = 'playback:progress'\n/**\n * Fired when the time is updated on playback\n *\n * @event PLAYBACK_TIMEUPDATE\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.current]\n * current time (in seconds)\n * @param {Number} [progress.total]\n * total time (in seconds)\n */\nEvents.PLAYBACK_TIMEUPDATE = 'playback:timeupdate'\n/**\n * Fired when playback is ready\n *\n * @event PLAYBACK_READY\n */\nEvents.PLAYBACK_READY = 'playback:ready'\n/**\n * Fired when the playback starts having to buffer because\n * playback can currently not be smooth.\n *\n * This corresponds to the playback `buffering` property being\n * `true`.\n *\n * @event PLAYBACK_BUFFERING\n */\nEvents.PLAYBACK_BUFFERING = 'playback:buffering'\n/**\n * Fired when the playback has enough in the buffer to be\n * able to play smoothly, after previously being unable to\n * do this.\n *\n * This corresponds to the playback `buffering` property being\n * `false`.\n *\n * @event PLAYBACK_BUFFERFULL\n */\nEvents.PLAYBACK_BUFFERFULL = 'playback:bufferfull'\n/**\n * Fired when playback changes any settings (volume, seek and etc)\n *\n * @event PLAYBACK_SETTINGSUPDATE\n */\nEvents.PLAYBACK_SETTINGSUPDATE = 'playback:settingsupdate'\n/**\n * Fired when playback loaded its metadata\n *\n * @event PLAYBACK_LOADEDMETADATA\n * @param {Object} metadata Data\n * settings object\n * @param {Number} [metadata.duration]\n * the playback duration\n * @param {Object} [metadata.data]\n * extra meta data\n */\nEvents.PLAYBACK_LOADEDMETADATA = 'playback:loadedmetadata'\n/**\n * Fired when playback updates its video quality\n *\n * @event PLAYBACK_HIGHDEFINITIONUPDATE\n * @param {Boolean} isHD\n * true when is on HD, false otherwise\n */\nEvents.PLAYBACK_HIGHDEFINITIONUPDATE = 'playback:highdefinitionupdate'\n/**\n * Fired when playback updates its bitrate\n *\n * @event PLAYBACK_BITRATE\n * @param {Object} bitrate Data\n * bitrate object\n * @param {Number} [bitrate.bandwidth]\n * bitrate bandwidth when it's available\n * @param {Number} [bitrate.width]\n * playback width (ex: 720, 640, 1080)\n * @param {Number} [bitrate.height]\n * playback height (ex: 240, 480, 720)\n * @param {Number} [bitrate.level]\n * playback level when it's available, it could be just a map for width (0 => 240, 1 => 480, 2 => 720)\n */\nEvents.PLAYBACK_BITRATE = 'playback:bitrate'\n/**\n * Fired when the playback has its levels\n *\n * @event PLAYBACK_LEVELS_AVAILABLE\n * @param {Array} levels\n * the ordered levels, each one with the following format `{id: 1, label: '500kbps'}` ps: id should be a number >= 0\n * @param {Number} initial\n * the initial level otherwise -1 (AUTO)\n */\nEvents.PLAYBACK_LEVELS_AVAILABLE = 'playback:levels:available'\n/**\n * Fired when the playback starts to switch level\n *\n * @event PLAYBACK_LEVEL_SWITCH_START\n *\n */\nEvents.PLAYBACK_LEVEL_SWITCH_START = 'playback:levels:switch:start'\n/**\n * Fired when the playback ends the level switch\n *\n * @event PLAYBACK_LEVEL_SWITCH_END\n *\n */\nEvents.PLAYBACK_LEVEL_SWITCH_END = 'playback:levels:switch:end'\n\n/**\n * Fired when playback internal state changes\n *\n * @event PLAYBACK_PLAYBACKSTATE\n * @param {Object} state Data\n * state object\n * @param {String} [state.type]\n * the playback type\n */\nEvents.PLAYBACK_PLAYBACKSTATE = 'playback:playbackstate'\n/**\n * Fired when DVR becomes enabled/disabled.\n *\n * @event PLAYBACK_DVR\n * @param {boolean} state true if dvr enabled\n */\nEvents.PLAYBACK_DVR = 'playback:dvr'\n// TODO doc\nEvents.PLAYBACK_MEDIACONTROL_DISABLE = 'playback:mediacontrol:disable'\n// TODO doc\nEvents.PLAYBACK_MEDIACONTROL_ENABLE = 'playback:mediacontrol:enable'\n/**\n * Fired when the media for a playback ends.\n *\n * @event PLAYBACK_ENDED\n * @param {String} name the name of the playback\n */\nEvents.PLAYBACK_ENDED = 'playback:ended'\n/**\n * Fired when user requests `play()`\n *\n * @event PLAYBACK_PLAY_INTENT\n */\nEvents.PLAYBACK_PLAY_INTENT = 'playback:play:intent'\n/**\n * Fired when the media for a playback starts playing.\n * This is not necessarily when the user requests `play()`\n * The media may have to buffer first.\n * I.e. `isPlaying()` might return `true` before this event is fired,\n * because `isPlaying()` represents the intended state.\n *\n * @event PLAYBACK_PLAY\n */\nEvents.PLAYBACK_PLAY = 'playback:play'\n/**\n * Fired when the media for a playback pauses.\n *\n * @event PLAYBACK_PAUSE\n */\nEvents.PLAYBACK_PAUSE = 'playback:pause'\n/**\n * Fired when the media for a playback is seeking.\n *\n * @event PLAYBACK_SEEK\n */\nEvents.PLAYBACK_SEEK = 'playback:seek'\n/**\n * Fired when the media for a playback is seeked.\n *\n * @event PLAYBACK_SEEKED\n */\nEvents.PLAYBACK_SEEKED = 'playback:seeked'\n/**\n * Fired when the media for a playback is stopped.\n *\n * @event PLAYBACK_STOP\n */\nEvents.PLAYBACK_STOP = 'playback:stop'\n/**\n * Fired if an error occurs in the playback.\n *\n * @event PLAYBACK_ERROR\n * @param {Object} error An object containing the error details\n * @param {String} name Playback name\n */\nEvents.PLAYBACK_ERROR = 'playback:error'\n// TODO doc\nEvents.PLAYBACK_STATS_ADD = 'playback:stats:add'\n// TODO doc\nEvents.PLAYBACK_FRAGMENT_LOADED = 'playback:fragment:loaded'\n// TODO doc\nEvents.PLAYBACK_LEVEL_SWITCH = 'playback:level:switch'\n/**\n * Fired when subtitle is available on playback for display\n *\n * @event PLAYBACK_SUBTITLE_AVAILABLE\n */\nEvents.PLAYBACK_SUBTITLE_AVAILABLE = 'playback:subtitle:available'\n/**\n * Fired when playback subtitle track has changed\n *\n * @event CONTAINER_SUBTITLE_CHANGED\n * @param {Object} track Data\n * track object\n * @param {Number} [track.id]\n * selected track id\n */\nEvents.PLAYBACK_SUBTITLE_CHANGED = 'playback:subtitle:changed'\n\n// Core Events\n/**\n * Fired when the containers are created\n *\n * @event CORE_CONTAINERS_CREATED\n */\nEvents.CORE_CONTAINERS_CREATED = 'core:containers:created'\n/**\n * Fired when the options were changed for the core\n *\n * @event CORE_OPTIONS_CHANGE\n */\nEvents.CORE_OPTIONS_CHANGE = 'core:options:change'\n/**\n * Fired after creating containers, when the core is ready\n *\n * @event CORE_READY\n */\nEvents.CORE_READY = 'core:ready'\n/**\n * Fired when the fullscreen state change\n *\n * @event CORE_FULLSCREEN\n * @param {Boolean} whether or not the player is on fullscreen mode\n */\nEvents.CORE_FULLSCREEN = 'core:fullscreen'\n/**\n * Fired when core updates size\n *\n * @event CORE_RESIZE\n * @param {Object} currentSize an object with the current size\n */\nEvents.CORE_RESIZE = 'core:resize'\n/**\n * Fired when the screen orientation has changed.\n * This event is trigger only for mobile devices.\n *\n * @event CORE_SCREEN_ORIENTATION_CHANGED\n * @param {Object} screen An object with screen orientation\n * screen object\n * @param {Object} [screen.event]\n * window resize event object\n * @param {String} [screen.orientation]\n * screen orientation (ie: 'landscape' or 'portrait')\n */\nEvents.CORE_SCREEN_ORIENTATION_CHANGED = 'core:screen:orientation:changed'\n\n\n// Container Events\n/**\n * Fired when the container internal state changes\n *\n * @event CONTAINER_PLAYBACKSTATE\n * @param {Object} state Data\n * state object\n * @param {String} [state.type]\n * the playback type\n */\nEvents.CONTAINER_PLAYBACKSTATE = 'container:playbackstate'\nEvents.CONTAINER_PLAYBACKDVRSTATECHANGED = 'container:dvr'\n/**\n * Fired when the container updates its bitrate\n *\n * @event CONTAINER_BITRATE\n * @param {Object} bitrate Data\n * bitrate object\n * @param {Number} [bitrate.bandwidth]\n * bitrate bandwidth when it's available\n * @param {Number} [bitrate.width]\n * playback width (ex: 720, 640, 1080)\n * @param {Number} [bitrate.height]\n * playback height (ex: 240, 480, 720)\n * @param {Number} [bitrate.level]\n * playback level when it's available, it could be just a map for width (0 => 240, 1 => 480, 2 => 720)\n */\nEvents.CONTAINER_BITRATE = 'container:bitrate'\nEvents.CONTAINER_STATS_REPORT = 'container:stats:report'\nEvents.CONTAINER_DESTROYED = 'container:destroyed'\n/**\n * Fired when the container is ready\n *\n * @event CONTAINER_READY\n */\nEvents.CONTAINER_READY = 'container:ready'\nEvents.CONTAINER_ERROR = 'container:error'\n/**\n * Fired when the container loaded its metadata\n *\n * @event CONTAINER_LOADEDMETADATA\n * @param {Object} metadata Data\n * settings object\n * @param {Number} [metadata.duration]\n * the playback duration\n * @param {Object} [metadata.data]\n * extra meta data\n */\nEvents.CONTAINER_LOADEDMETADATA = 'container:loadedmetadata'\n\n/**\n * Fired when subtitle is available on container for display\n *\n * @event CONTAINER_SUBTITLE_AVAILABLE\n */\nEvents.CONTAINER_SUBTITLE_AVAILABLE = 'container:subtitle:available'\n/**\n * Fired when subtitle track has changed\n *\n * @event CONTAINER_SUBTITLE_CHANGED\n * @param {Object} track Data\n * track object\n * @param {Number} [track.id]\n * selected track id\n */\nEvents.CONTAINER_SUBTITLE_CHANGED = 'container:subtitle:changed'\n\n/**\n * Fired when the time is updated on container\n *\n * @event CONTAINER_TIMEUPDATE\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.current]\n * current time (in seconds)\n * @param {Number} [progress.total]\n * total time (in seconds)\n */\nEvents.CONTAINER_TIMEUPDATE = 'container:timeupdate'\n/**\n * Fired when the container is downloading the media\n *\n * @event CONTAINER_PROGRESS\n * @param {Object} progress Data\n * progress object\n * @param {Number} [progress.start]\n * initial downloaded content\n * @param {Number} [progress.current]\n * current dowloaded content\n * @param {Number} [progress.total]\n * total content to be downloaded\n */\nEvents.CONTAINER_PROGRESS = 'container:progress'\nEvents.CONTAINER_PLAY = 'container:play'\nEvents.CONTAINER_STOP = 'container:stop'\nEvents.CONTAINER_PAUSE = 'container:pause'\nEvents.CONTAINER_ENDED = 'container:ended'\nEvents.CONTAINER_CLICK = 'container:click'\nEvents.CONTAINER_DBLCLICK = 'container:dblclick'\nEvents.CONTAINER_CONTEXTMENU = 'container:contextmenu'\nEvents.CONTAINER_MOUSE_ENTER = 'container:mouseenter'\nEvents.CONTAINER_MOUSE_LEAVE = 'container:mouseleave'\n/**\n * Fired when the container seeks the video\n *\n * @event CONTAINER_SEEK\n * @param {Number} time the current time in seconds\n */\nEvents.CONTAINER_SEEK = 'container:seek'\n/**\n * Fired when the container was finished the seek video\n *\n * @event CONTAINER_SEEKED\n * @param {Number} time the current time in seconds\n */\nEvents.CONTAINER_SEEKED = 'container:seeked'\nEvents.CONTAINER_VOLUME = 'container:volume'\nEvents.CONTAINER_FULLSCREEN = 'container:fullscreen'\n/**\n * Fired when container is buffering\n *\n * @event CONTAINER_STATE_BUFFERING\n */\nEvents.CONTAINER_STATE_BUFFERING = 'container:state:buffering'\n/**\n * Fired when the container filled the buffer\n *\n * @event CONTAINER_STATE_BUFFERFULL\n */\nEvents.CONTAINER_STATE_BUFFERFULL = 'container:state:bufferfull'\n/**\n * Fired when the container changes any settings (volume, seek and etc)\n *\n * @event CONTAINER_SETTINGSUPDATE\n */\nEvents.CONTAINER_SETTINGSUPDATE = 'container:settingsupdate'\n/**\n * Fired when container updates its video quality\n *\n * @event CONTAINER_HIGHDEFINITIONUPDATE\n * @param {Boolean} isHD\n * true when is on HD, false otherwise\n */\nEvents.CONTAINER_HIGHDEFINITIONUPDATE = 'container:highdefinitionupdate'\n\n/**\n * Fired when the media control shows\n *\n * @event CONTAINER_MEDIACONTROL_SHOW\n */\nEvents.CONTAINER_MEDIACONTROL_SHOW = 'container:mediacontrol:show'\n/**\n * Fired when the media control hides\n *\n * @event CONTAINER_MEDIACONTROL_HIDE\n */\nEvents.CONTAINER_MEDIACONTROL_HIDE = 'container:mediacontrol:hide'\n\nEvents.CONTAINER_MEDIACONTROL_DISABLE = 'container:mediacontrol:disable'\nEvents.CONTAINER_MEDIACONTROL_ENABLE = 'container:mediacontrol:enable'\nEvents.CONTAINER_STATS_ADD = 'container:stats:add'\n/**\n * Fired when the options were changed for the container\n *\n * @event CONTAINER_OPTIONS_CHANGE\n */\nEvents.CONTAINER_OPTIONS_CHANGE = 'container:options:change'\n\n// MediaControl Events\nEvents.MEDIACONTROL_RENDERED = 'mediacontrol:rendered'\n/**\n * Fired when the player enters/exit on fullscreen\n *\n * @event MEDIACONTROL_FULLSCREEN\n */\nEvents.MEDIACONTROL_FULLSCREEN = 'mediacontrol:fullscreen'\n/**\n * Fired when the media control shows\n *\n * @event MEDIACONTROL_SHOW\n */\nEvents.MEDIACONTROL_SHOW = 'mediacontrol:show'\n/**\n * Fired when the media control hides\n *\n * @event MEDIACONTROL_HIDE\n */\nEvents.MEDIACONTROL_HIDE = 'mediacontrol:hide'\n/**\n * Fired when mouse enters on the seekbar\n *\n * @event MEDIACONTROL_MOUSEMOVE_SEEKBAR\n * @param {Object} event\n * the javascript event\n */\nEvents.MEDIACONTROL_MOUSEMOVE_SEEKBAR = 'mediacontrol:mousemove:seekbar'\n/**\n * Fired when mouse leaves the seekbar\n *\n * @event MEDIACONTROL_MOUSELEAVE_SEEKBAR\n * @param {Object} event\n * the javascript event\n */\nEvents.MEDIACONTROL_MOUSELEAVE_SEEKBAR = 'mediacontrol:mouseleave:seekbar'\n/**\n * Fired when the media is being played\n *\n * @event MEDIACONTROL_PLAYING\n */\nEvents.MEDIACONTROL_PLAYING = 'mediacontrol:playing'\n/**\n * Fired when the media is not being played\n *\n * @event MEDIACONTROL_NOTPLAYING\n */\nEvents.MEDIACONTROL_NOTPLAYING = 'mediacontrol:notplaying'\n/**\n * Fired when the container was changed\n *\n * @event MEDIACONTROL_CONTAINERCHANGED\n */\nEvents.MEDIACONTROL_CONTAINERCHANGED = 'mediacontrol:containerchanged'\n/**\n * Fired when the options were changed for the mediacontrol\n *\n * @event MEDIACONTROL_OPTIONS_CHANGE\n */\nEvents.MEDIACONTROL_OPTIONS_CHANGE = 'mediacontrol:options:change'\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/events.js","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n/*jshint -W079 */\n\nimport './polyfills'\nimport Browser from '../components/browser'\nimport $ from 'clappr-zepto'\nimport Media from './media'\n\nexport function assign(obj, source) {\n if (source) {\n for (const prop in source) {\n const propDescriptor = Object.getOwnPropertyDescriptor(source, prop)\n propDescriptor ? Object.defineProperty(obj, prop, propDescriptor) : obj[prop] = source[prop]\n }\n }\n return obj\n}\n\nexport function extend(parent, properties) {\n class Surrogate extends parent {\n constructor(...args) {\n super(...args)\n if (properties.initialize)\n properties.initialize.apply(this, args)\n\n }\n }\n assign(Surrogate.prototype, properties)\n return Surrogate\n}\n\nexport function formatTime(time, paddedHours) {\n if (!isFinite(time))\n return '--:--'\n\n time = time * 1000\n time = parseInt(time/1000)\n const seconds = time % 60\n time = parseInt(time/60)\n const minutes = time % 60\n time = parseInt(time/60)\n const hours = time % 24\n const days = parseInt(time/24)\n let out = ''\n if (days && days > 0) {\n out += days + ':'\n if (hours < 1) out += '00:'\n }\n if (hours && hours > 0 || paddedHours) out += ('0' + hours).slice(-2) + ':'\n out += ('0' + minutes).slice(-2) + ':'\n out += ('0' + seconds).slice(-2)\n return out.trim()\n}\n\nexport const Fullscreen = {\n isFullscreen: function() {\n return !!(\n document.webkitFullscreenElement ||\n document.webkitIsFullScreen ||\n document.mozFullScreen ||\n document.msFullscreenElement\n )\n },\n requestFullscreen: function(el) {\n if (el.requestFullscreen)\n el.requestFullscreen()\n else if (el.webkitRequestFullscreen)\n el.webkitRequestFullscreen()\n else if (el.mozRequestFullScreen)\n el.mozRequestFullScreen()\n else if (el.msRequestFullscreen)\n el.msRequestFullscreen()\n else if (el.querySelector && el.querySelector('video') && el.querySelector('video').webkitEnterFullScreen)\n el.querySelector('video').webkitEnterFullScreen()\n else if (el.webkitEnterFullScreen)\n el.webkitEnterFullScreen()\n\n },\n cancelFullscreen: function(el=document) {\n if (el.exitFullscreen)\n el.exitFullscreen()\n else if (el.webkitCancelFullScreen)\n el.webkitCancelFullScreen()\n else if (el.webkitExitFullscreen)\n el.webkitExitFullscreen()\n else if (el.mozCancelFullScreen)\n el.mozCancelFullScreen()\n else if (el.msExitFullscreen)\n el.msExitFullscreen()\n\n },\n fullscreenEnabled: function() {\n return !!(\n document.fullscreenEnabled ||\n document.webkitFullscreenEnabled ||\n document.mozFullScreenEnabled ||\n document.msFullscreenEnabled\n )\n }\n}\n\nexport class Config {\n\n static _defaultConfig() {\n return {\n volume: {\n value: 100,\n parse: parseInt\n }\n }\n }\n\n static _defaultValueFor(key) {\n try {\n return this._defaultConfig()[key].parse(this._defaultConfig()[key].value)\n } catch (e) {\n return undefined\n }\n }\n\n static _createKeyspace(key) {\n return `clappr.${document.domain}.${key}`\n }\n\n static restore(key) {\n if (Browser.hasLocalstorage && localStorage[this._createKeyspace(key)])\n return this._defaultConfig()[key].parse(localStorage[this._createKeyspace(key)])\n\n return this._defaultValueFor(key)\n }\n\n static persist(key, value) {\n if (Browser.hasLocalstorage) {\n try {\n localStorage[this._createKeyspace(key)] = value\n return true\n } catch (e) {\n return false\n }\n }\n }\n}\n\nexport class QueryString {\n static get params() {\n const query = window.location.search.substring(1)\n if (query !== this.query) {\n this._urlParams = this.parse(query)\n this.query = query\n }\n return this._urlParams\n }\n\n static get hashParams() {\n const hash = window.location.hash.substring(1)\n if (hash !== this.hash) {\n this._hashParams = this.parse(hash)\n this.hash = hash\n }\n return this._hashParams\n }\n\n static parse(paramsString) {\n let match\n const pl = /\\+/g, // Regex for replacing addition symbol with a space\n search = /([^&=]+)=?([^&]*)/g,\n decode = (s) => decodeURIComponent(s.replace(pl, ' ')),\n params = {}\n while (match = search.exec(paramsString)) { // eslint-disable-line no-cond-assign\n params[decode(match[1]).toLowerCase()] = decode(match[2])\n }\n return params\n }\n}\n\nexport function seekStringToSeconds(paramName = 't') {\n let seconds = 0\n const seekString = QueryString.params[paramName] || QueryString.hashParams[paramName] || ''\n const parts = seekString.match(/[0-9]+[hms]+/g) || []\n if (parts.length > 0) {\n const factor = { 'h': 3600, 'm': 60, 's': 1 }\n parts.forEach(function(el) {\n if (el) {\n const suffix = el[el.length - 1]\n const time = parseInt(el.slice(0, el.length - 1), 10)\n seconds += time * (factor[suffix])\n }\n })\n } else if (seekString) { seconds = parseInt(seekString, 10) }\n\n return seconds\n}\n\nconst idsCounter = {}\n\nexport function uniqueId(prefix) {\n idsCounter[prefix] || (idsCounter[prefix] = 0)\n const id = ++idsCounter[prefix]\n return prefix + id\n}\n\nexport function isNumber(value) {\n return value - parseFloat(value) + 1 >= 0\n}\n\nexport function currentScriptUrl() {\n const scripts = document.getElementsByTagName('script')\n return scripts.length ? scripts[scripts.length - 1].src : ''\n}\n\nexport const requestAnimationFrame = (window.requestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n function(fn) { window.setTimeout(fn, 1000/60) }).bind(window)\n\nexport const cancelAnimationFrame = (window.cancelAnimationFrame ||\n window.mozCancelAnimationFrame ||\n window.webkitCancelAnimationFrame ||\n window.clearTimeout).bind(window)\n\nexport function getBrowserLanguage() {\n return window.navigator && window.navigator.language\n}\n\nexport function now() {\n if (window.performance && window.performance.now)\n return performance.now()\n\n return Date.now()\n}\n\n// remove the item from the array if it exists in the array\nexport function removeArrayItem(arr, item) {\n const i = arr.indexOf(item)\n if (i >= 0)\n arr.splice(i, 1)\n\n}\n\n// https://github.com/video-dev/can-autoplay\nexport function canAutoPlayMedia(cb, options) {\n options = Object.assign({\n inline: false,\n muted: false,\n timeout: 250,\n type: 'video',\n source: Media.mp4,\n element: null\n }, options)\n\n let element = options.element ? options.element : document.createElement(options.type)\n\n element.muted = options.muted\n if (options.muted === true)\n element.setAttribute('muted', 'muted')\n\n if (options.inline === true)\n element.setAttribute('playsinline', 'playsinline')\n\n element.src = options.source\n\n let promise = element.play()\n\n let timeoutId = setTimeout(() => {\n setResult(false, new Error(`Timeout ${options.timeout} ms has been reached`))\n }, options.timeout)\n\n let setResult = (result, error = null) => {\n clearTimeout(timeoutId)\n cb(result, error)\n }\n\n if (promise !== undefined) {\n promise\n .then(() => setResult(true))\n .catch(err => setResult(false, err))\n } else {\n setResult(true)\n }\n}\n\n// Simple Zepto element factory with video recycle feature.\nconst videoStack = []\n\nexport class DomRecycler {\n static configure(options) {\n this.options = $.extend(this.options, options)\n }\n\n static create(name) {\n if (this.options.recycleVideo && name === 'video' && videoStack.length > 0)\n return videoStack.shift()\n\n return $('<' + name + '>')\n }\n\n static garbage($el) {\n // Expect Zepto collection with single element (does not iterate!)\n if (!this.options.recycleVideo || $el[0].tagName.toUpperCase() !== 'VIDEO') return\n $el.children().remove()\n videoStack.push($el)\n }\n}\n\nDomRecycler.options = { recycleVideo: false }\n\nexport default {\n Config,\n Fullscreen,\n QueryString,\n DomRecycler,\n extend,\n formatTime,\n seekStringToSeconds,\n uniqueId,\n currentScriptUrl,\n isNumber,\n requestAnimationFrame,\n cancelAnimationFrame,\n getBrowserLanguage,\n now,\n removeArrayItem,\n canAutoPlayMedia,\n Media\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/utils.js","/* Zepto v1.2.0 - zepto ajax callbacks deferred event ie selector - zeptojs.com/license */\n\n\nvar Zepto = (function() {\n var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice,\n document = window.document,\n elementDisplay = {}, classCache = {},\n cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1,'opacity': 1, 'z-index': 1, 'zoom': 1 },\n fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n rootNodeRE = /^(?:body|html)$/i,\n capitalRE = /([A-Z])/g,\n\n // special attributes that should be get/set via method calls\n methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\n\n adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ],\n table = document.createElement('table'),\n tableRow = document.createElement('tr'),\n containers = {\n 'tr': document.createElement('tbody'),\n 'tbody': table, 'thead': table, 'tfoot': table,\n 'td': tableRow, 'th': tableRow,\n '*': document.createElement('div')\n },\n readyRE = /complete|loaded|interactive/,\n simpleSelectorRE = /^[\\w-]*$/,\n class2type = {},\n toString = class2type.toString,\n zepto = {},\n camelize, uniq,\n tempParent = document.createElement('div'),\n propMap = {\n 'tabindex': 'tabIndex',\n 'readonly': 'readOnly',\n 'for': 'htmlFor',\n 'class': 'className',\n 'maxlength': 'maxLength',\n 'cellspacing': 'cellSpacing',\n 'cellpadding': 'cellPadding',\n 'rowspan': 'rowSpan',\n 'colspan': 'colSpan',\n 'usemap': 'useMap',\n 'frameborder': 'frameBorder',\n 'contenteditable': 'contentEditable'\n },\n isArray = Array.isArray ||\n function(object){ return object instanceof Array }\n\n zepto.matches = function(element, selector) {\n if (!selector || !element || element.nodeType !== 1) return false\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\n element.mozMatchesSelector || element.oMatchesSelector ||\n element.matchesSelector\n if (matchesSelector) return matchesSelector.call(element, selector)\n // fall back to performing a selector:\n var match, parent = element.parentNode, temp = !parent\n if (temp) (parent = tempParent).appendChild(element)\n match = ~zepto.qsa(parent, selector).indexOf(element)\n temp && tempParent.removeChild(element)\n return match\n }\n\n function type(obj) {\n return obj == null ? String(obj) :\n class2type[toString.call(obj)] || \"object\"\n }\n\n function isFunction(value) { return type(value) == \"function\" }\n function isWindow(obj) { return obj != null && obj == obj.window }\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }\n function isObject(obj) { return type(obj) == \"object\" }\n function isPlainObject(obj) {\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\n }\n\n function likeArray(obj) {\n var length = !!obj && 'length' in obj && obj.length,\n type = $.type(obj)\n\n return 'function' != type && !isWindow(obj) && (\n 'array' == type || length === 0 ||\n (typeof length == 'number' && length > 0 && (length - 1) in obj)\n )\n }\n\n function compact(array) { return filter.call(array, function(item){ return item != null }) }\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }\n camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }\n function dasherize(str) {\n return str.replace(/::/g, '/')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .replace(/_/g, '-')\n .toLowerCase()\n }\n uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }\n\n function classRE(name) {\n return name in classCache ?\n classCache[name] : (classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)'))\n }\n\n function maybeAddPx(name, value) {\n return (typeof value == \"number\" && !cssNumber[dasherize(name)]) ? value + \"px\" : value\n }\n\n function defaultDisplay(nodeName) {\n var element, display\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName)\n document.body.appendChild(element)\n display = getComputedStyle(element, '').getPropertyValue(\"display\")\n element.parentNode.removeChild(element)\n display == \"none\" && (display = \"block\")\n elementDisplay[nodeName] = display\n }\n return elementDisplay[nodeName]\n }\n\n function children(element) {\n return 'children' in element ?\n slice.call(element.children) :\n $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })\n }\n\n function Z(dom, selector) {\n var i, len = dom ? dom.length : 0\n for (i = 0; i < len; i++) this[i] = dom[i]\n this.length = len\n this.selector = selector || ''\n }\n\n // `$.zepto.fragment` takes a html string and an optional tag name\n // to generate DOM nodes from the given html string.\n // The generated DOM nodes are returned as an array.\n // This function can be overridden in plugins for example to make\n // it compatible with browsers that don't support the DOM fully.\n zepto.fragment = function(html, name, properties) {\n var dom, nodes, container\n\n // A special case optimization for a single tag\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))\n\n if (!dom) {\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1></$2>\")\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1\n if (!(name in containers)) name = '*'\n\n container = containers[name]\n container.innerHTML = '' + html\n dom = $.each(slice.call(container.childNodes), function(){\n container.removeChild(this)\n })\n }\n\n if (isPlainObject(properties)) {\n nodes = $(dom)\n $.each(properties, function(key, value) {\n if (methodAttributes.indexOf(key) > -1) nodes[key](value)\n else nodes.attr(key, value)\n })\n }\n\n return dom\n }\n\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\n // of nodes with `$.fn` and thus supplying all the Zepto functions\n // to the array. This method can be overridden in plugins.\n zepto.Z = function(dom, selector) {\n return new Z(dom, selector)\n }\n\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\n // collection. This method can be overridden in plugins.\n zepto.isZ = function(object) {\n return object instanceof zepto.Z\n }\n\n // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and\n // takes a CSS selector and an optional context (and handles various\n // special cases).\n // This method can be overridden in plugins.\n zepto.init = function(selector, context) {\n var dom\n // If nothing given, return an empty Zepto collection\n if (!selector) return zepto.Z()\n // Optimize for string selectors\n else if (typeof selector == 'string') {\n selector = selector.trim()\n // If it's a html fragment, create nodes from it\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\n // is thrown if the fragment doesn't begin with <\n if (selector[0] == '<' && fragmentRE.test(selector))\n dom = zepto.fragment(selector, RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // If it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // If a function is given, call it when the DOM is ready\n else if (isFunction(selector)) return $(document).ready(selector)\n // If a Zepto collection is given, just return it\n else if (zepto.isZ(selector)) return selector\n else {\n // normalize array if an array of nodes is given\n if (isArray(selector)) dom = compact(selector)\n // Wrap DOM nodes.\n else if (isObject(selector))\n dom = [selector], selector = null\n // If it's a html fragment, create nodes from it\n else if (fragmentRE.test(selector))\n dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // And last but no least, if it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // create a new Zepto collection from the nodes found\n return zepto.Z(dom, selector)\n }\n\n // `$` will be the base `Zepto` object. When calling this\n // function just call `$.zepto.init, which makes the implementation\n // details of selecting nodes and creating Zepto collections\n // patchable in plugins.\n $ = function(selector, context){\n return zepto.init(selector, context)\n }\n\n function extend(target, source, deep) {\n for (key in source)\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key]))\n target[key] = {}\n if (isArray(source[key]) && !isArray(target[key]))\n target[key] = []\n extend(target[key], source[key], deep)\n }\n else if (source[key] !== undefined) target[key] = source[key]\n }\n\n // Copy all but undefined properties from one or more\n // objects to the `target` object.\n $.extend = function(target){\n var deep, args = slice.call(arguments, 1)\n if (typeof target == 'boolean') {\n deep = target\n target = args.shift()\n }\n args.forEach(function(arg){ extend(target, arg, deep) })\n return target\n }\n\n // `$.zepto.qsa` is Zepto's CSS selector implementation which\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\n // This method can be overridden in plugins.\n zepto.qsa = function(element, selector){\n var found,\n maybeID = selector[0] == '#',\n maybeClass = !maybeID && selector[0] == '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\n isSimple = simpleSelectorRE.test(nameOnly)\n return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById\n ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\n slice.call(\n isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class\n element.getElementsByTagName(selector) : // Or a tag\n element.querySelectorAll(selector) // Or it's not simple, and we need to query all\n )\n }\n\n function filtered(nodes, selector) {\n return selector == null ? $(nodes) : $(nodes).filter(selector)\n }\n\n $.contains = document.documentElement.contains ?\n function(parent, node) {\n return parent !== node && parent.contains(node)\n } :\n function(parent, node) {\n while (node && (node = node.parentNode))\n if (node === parent) return true\n return false\n }\n\n function funcArg(context, arg, idx, payload) {\n return isFunction(arg) ? arg.call(context, idx, payload) : arg\n }\n\n function setAttribute(node, name, value) {\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value)\n }\n\n // access className property while respecting SVGAnimatedString\n function className(node, value){\n var klass = node.className || '',\n svg = klass && klass.baseVal !== undefined\n\n if (value === undefined) return svg ? klass.baseVal : klass\n svg ? (klass.baseVal = value) : (node.className = value)\n }\n\n // \"true\" => true\n // \"false\" => false\n // \"null\" => null\n // \"42\" => 42\n // \"42.5\" => 42.5\n // \"08\" => \"08\"\n // JSON => parse if valid\n // String => self\n function deserializeValue(value) {\n try {\n return value ?\n value == \"true\" ||\n ( value == \"false\" ? false :\n value == \"null\" ? null :\n +value + \"\" == value ? +value :\n /^[\\[\\{]/.test(value) ? $.parseJSON(value) :\n value )\n : value\n } catch(e) {\n return value\n }\n }\n\n $.type = type\n $.isFunction = isFunction\n $.isWindow = isWindow\n $.isArray = isArray\n $.isPlainObject = isPlainObject\n\n $.isEmptyObject = function(obj) {\n var name\n for (name in obj) return false\n return true\n }\n\n $.isNumeric = function(val) {\n var num = Number(val), type = typeof val\n return val != null && type != 'boolean' &&\n (type != 'string' || val.length) &&\n !isNaN(num) && isFinite(num) || false\n }\n\n $.inArray = function(elem, array, i){\n return emptyArray.indexOf.call(array, elem, i)\n }\n\n $.camelCase = camelize\n $.trim = function(str) {\n return str == null ? \"\" : String.prototype.trim.call(str)\n }\n\n // plugin compatibility\n $.uuid = 0\n $.support = { }\n $.expr = { }\n $.noop = function() {}\n\n $.map = function(elements, callback){\n var value, values = [], i, key\n if (likeArray(elements))\n for (i = 0; i < elements.length; i++) {\n value = callback(elements[i], i)\n if (value != null) values.push(value)\n }\n else\n for (key in elements) {\n value = callback(elements[key], key)\n if (value != null) values.push(value)\n }\n return flatten(values)\n }\n\n $.each = function(elements, callback){\n var i, key\n if (likeArray(elements)) {\n for (i = 0; i < elements.length; i++)\n if (callback.call(elements[i], i, elements[i]) === false) return elements\n } else {\n for (key in elements)\n if (callback.call(elements[key], key, elements[key]) === false) return elements\n }\n\n return elements\n }\n\n $.grep = function(elements, callback){\n return filter.call(elements, callback)\n }\n\n if (window.JSON) $.parseJSON = JSON.parse\n\n // Populate the class2type map\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase()\n })\n\n // Define methods that will be available on all\n // Zepto collections\n $.fn = {\n constructor: zepto.Z,\n length: 0,\n\n // Because a collection acts like an array\n // copy over these useful array functions.\n forEach: emptyArray.forEach,\n reduce: emptyArray.reduce,\n push: emptyArray.push,\n sort: emptyArray.sort,\n splice: emptyArray.splice,\n indexOf: emptyArray.indexOf,\n concat: function(){\n var i, value, args = []\n for (i = 0; i < arguments.length; i++) {\n value = arguments[i]\n args[i] = zepto.isZ(value) ? value.toArray() : value\n }\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)\n },\n\n // `map` and `slice` in the jQuery API work differently\n // from their array counterparts\n map: function(fn){\n return $($.map(this, function(el, i){ return fn.call(el, i, el) }))\n },\n slice: function(){\n return $(slice.apply(this, arguments))\n },\n\n ready: function(callback){\n // need to check if document.body exists for IE as that browser reports\n // document ready when it hasn't yet created the body element\n if (readyRE.test(document.readyState) && document.body) callback($)\n else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false)\n return this\n },\n get: function(idx){\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]\n },\n toArray: function(){ return this.get() },\n size: function(){\n return this.length\n },\n remove: function(){\n return this.each(function(){\n if (this.parentNode != null)\n this.parentNode.removeChild(this)\n })\n },\n each: function(callback){\n emptyArray.every.call(this, function(el, idx){\n return callback.call(el, idx, el) !== false\n })\n return this\n },\n filter: function(selector){\n if (isFunction(selector)) return this.not(this.not(selector))\n return $(filter.call(this, function(element){\n return zepto.matches(element, selector)\n }))\n },\n add: function(selector,context){\n return $(uniq(this.concat($(selector,context))))\n },\n is: function(selector){\n return this.length > 0 && zepto.matches(this[0], selector)\n },\n not: function(selector){\n var nodes=[]\n if (isFunction(selector) && selector.call !== undefined)\n this.each(function(idx){\n if (!selector.call(this,idx)) nodes.push(this)\n })\n else {\n var excludes = typeof selector == 'string' ? this.filter(selector) :\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)\n this.forEach(function(el){\n if (excludes.indexOf(el) < 0) nodes.push(el)\n })\n }\n return $(nodes)\n },\n has: function(selector){\n return this.filter(function(){\n return isObject(selector) ?\n $.contains(this, selector) :\n $(this).find(selector).size()\n })\n },\n eq: function(idx){\n return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)\n },\n first: function(){\n var el = this[0]\n return el && !isObject(el) ? el : $(el)\n },\n last: function(){\n var el = this[this.length - 1]\n return el && !isObject(el) ? el : $(el)\n },\n find: function(selector){\n var result, $this = this\n if (!selector) result = $()\n else if (typeof selector == 'object')\n result = $(selector).filter(function(){\n var node = this\n return emptyArray.some.call($this, function(parent){\n return $.contains(parent, node)\n })\n })\n else if (this.length == 1) result = $(zepto.qsa(this[0], selector))\n else result = this.map(function(){ return zepto.qsa(this, selector) })\n return result\n },\n closest: function(selector, context){\n var nodes = [], collection = typeof selector == 'object' && $(selector)\n this.each(function(_, node){\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))\n node = node !== context && !isDocument(node) && node.parentNode\n if (node && nodes.indexOf(node) < 0) nodes.push(node)\n })\n return $(nodes)\n },\n parents: function(selector){\n var ancestors = [], nodes = this\n while (nodes.length > 0)\n nodes = $.map(nodes, function(node){\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\n ancestors.push(node)\n return node\n }\n })\n return filtered(ancestors, selector)\n },\n parent: function(selector){\n return filtered(uniq(this.pluck('parentNode')), selector)\n },\n children: function(selector){\n return filtered(this.map(function(){ return children(this) }), selector)\n },\n contents: function() {\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })\n },\n siblings: function(selector){\n return filtered(this.map(function(i, el){\n return filter.call(children(el.parentNode), function(child){ return child!==el })\n }), selector)\n },\n empty: function(){\n return this.each(function(){ this.innerHTML = '' })\n },\n // `pluck` is borrowed from Prototype.js\n pluck: function(property){\n return $.map(this, function(el){ return el[property] })\n },\n show: function(){\n return this.each(function(){\n this.style.display == \"none\" && (this.style.display = '')\n if (getComputedStyle(this, '').getPropertyValue(\"display\") == \"none\")\n this.style.display = defaultDisplay(this.nodeName)\n })\n },\n replaceWith: function(newContent){\n return this.before(newContent).remove()\n },\n wrap: function(structure){\n var func = isFunction(structure)\n if (this[0] && !func)\n var dom = $(structure).get(0),\n clone = dom.parentNode || this.length > 1\n\n return this.each(function(index){\n $(this).wrapAll(\n func ? structure.call(this, index) :\n clone ? dom.cloneNode(true) : dom\n )\n })\n },\n wrapAll: function(structure){\n if (this[0]) {\n $(this[0]).before(structure = $(structure))\n var children\n // drill down to the inmost element\n while ((children = structure.children()).length) structure = children.first()\n $(structure).append(this)\n }\n return this\n },\n wrapInner: function(structure){\n var func = isFunction(structure)\n return this.each(function(index){\n var self = $(this), contents = self.contents(),\n dom = func ? structure.call(this, index) : structure\n contents.length ? contents.wrapAll(dom) : self.append(dom)\n })\n },\n unwrap: function(){\n this.parent().each(function(){\n $(this).replaceWith($(this).children())\n })\n return this\n },\n clone: function(){\n return this.map(function(){ return this.cloneNode(true) })\n },\n hide: function(){\n return this.css(\"display\", \"none\")\n },\n toggle: function(setting){\n return this.each(function(){\n var el = $(this)\n ;(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide()\n })\n },\n prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') },\n next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') },\n html: function(html){\n return 0 in arguments ?\n this.each(function(idx){\n var originHtml = this.innerHTML\n $(this).empty().append( funcArg(this, html, idx, originHtml) )\n }) :\n (0 in this ? this[0].innerHTML : null)\n },\n text: function(text){\n return 0 in arguments ?\n this.each(function(idx){\n var newText = funcArg(this, text, idx, this.textContent)\n this.textContent = newText == null ? '' : ''+newText\n }) :\n (0 in this ? this.pluck('textContent').join(\"\") : null)\n },\n attr: function(name, value){\n var result\n return (typeof name == 'string' && !(1 in arguments)) ?\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\n this.each(function(idx){\n if (this.nodeType !== 1) return\n if (isObject(name)) for (key in name) setAttribute(this, key, name[key])\n else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))\n })\n },\n removeAttr: function(name){\n return this.each(function(){ this.nodeType === 1 && name.split(' ').forEach(function(attribute){\n setAttribute(this, attribute)\n }, this)})\n },\n prop: function(name, value){\n name = propMap[name] || name\n return (1 in arguments) ?\n this.each(function(idx){\n this[name] = funcArg(this, value, idx, this[name])\n }) :\n (this[0] && this[0][name])\n },\n removeProp: function(name){\n name = propMap[name] || name\n return this.each(function(){ delete this[name] })\n },\n data: function(name, value){\n var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase()\n\n var data = (1 in arguments) ?\n this.attr(attrName, value) :\n this.attr(attrName)\n\n return data !== null ? deserializeValue(data) : undefined\n },\n val: function(value){\n if (0 in arguments) {\n if (value == null) value = \"\"\n return this.each(function(idx){\n this.value = funcArg(this, value, idx, this.value)\n })\n } else {\n return this[0] && (this[0].multiple ?\n $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') :\n this[0].value)\n }\n },\n offset: function(coordinates){\n if (coordinates) return this.each(function(index){\n var $this = $(this),\n coords = funcArg(this, coordinates, index, $this.offset()),\n parentOffset = $this.offsetParent().offset(),\n props = {\n top: coords.top - parentOffset.top,\n left: coords.left - parentOffset.left\n }\n\n if ($this.css('position') == 'static') props['position'] = 'relative'\n $this.css(props)\n })\n if (!this.length) return null\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))\n return {top: 0, left: 0}\n var obj = this[0].getBoundingClientRect()\n return {\n left: obj.left + window.pageXOffset,\n top: obj.top + window.pageYOffset,\n width: Math.round(obj.width),\n height: Math.round(obj.height)\n }\n },\n css: function(property, value){\n if (arguments.length < 2) {\n var element = this[0]\n if (typeof property == 'string') {\n if (!element) return\n return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property)\n } else if (isArray(property)) {\n if (!element) return\n var props = {}\n var computedStyle = getComputedStyle(element, '')\n $.each(property, function(_, prop){\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))\n })\n return props\n }\n }\n\n var css = ''\n if (type(property) == 'string') {\n if (!value && value !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(property)) })\n else\n css = dasherize(property) + \":\" + maybeAddPx(property, value)\n } else {\n for (key in property)\n if (!property[key] && property[key] !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(key)) })\n else\n css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';'\n }\n\n return this.each(function(){ this.style.cssText += ';' + css })\n },\n index: function(element){\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])\n },\n hasClass: function(name){\n if (!name) return false\n return emptyArray.some.call(this, function(el){\n return this.test(className(el))\n }, classRE(name))\n },\n addClass: function(name){\n if (!name) return this\n return this.each(function(idx){\n if (!('className' in this)) return\n classList = []\n var cls = className(this), newName = funcArg(this, name, idx, cls)\n newName.split(/\\s+/g).forEach(function(klass){\n if (!$(this).hasClass(klass)) classList.push(klass)\n }, this)\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"))\n })\n },\n removeClass: function(name){\n return this.each(function(idx){\n if (!('className' in this)) return\n if (name === undefined) return className(this, '')\n classList = className(this)\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function(klass){\n classList = classList.replace(classRE(klass), \" \")\n })\n className(this, classList.trim())\n })\n },\n toggleClass: function(name, when){\n if (!name) return this\n return this.each(function(idx){\n var $this = $(this), names = funcArg(this, name, idx, className(this))\n names.split(/\\s+/g).forEach(function(klass){\n (when === undefined ? !$this.hasClass(klass) : when) ?\n $this.addClass(klass) : $this.removeClass(klass)\n })\n })\n },\n scrollTop: function(value){\n if (!this.length) return\n var hasScrollTop = 'scrollTop' in this[0]\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset\n return this.each(hasScrollTop ?\n function(){ this.scrollTop = value } :\n function(){ this.scrollTo(this.scrollX, value) })\n },\n scrollLeft: function(value){\n if (!this.length) return\n var hasScrollLeft = 'scrollLeft' in this[0]\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset\n return this.each(hasScrollLeft ?\n function(){ this.scrollLeft = value } :\n function(){ this.scrollTo(value, this.scrollY) })\n },\n position: function() {\n if (!this.length) return\n\n var elem = this[0],\n // Get *real* offsetParent\n offsetParent = this.offsetParent(),\n // Get correct offsets\n offset = this.offset(),\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()\n\n // Subtract element margins\n // note: when an element has margin: auto the offsetLeft and marginLeft\n // are the same in Safari causing offset.left to incorrectly be 0\n offset.top -= parseFloat( $(elem).css('margin-top') ) || 0\n offset.left -= parseFloat( $(elem).css('margin-left') ) || 0\n\n // Add offsetParent borders\n parentOffset.top += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0\n parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0\n\n // Subtract the two offsets\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n }\n },\n offsetParent: function() {\n return this.map(function(){\n var parent = this.offsetParent || document.body\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\")\n parent = parent.offsetParent\n return parent\n })\n }\n }\n\n // for now\n $.fn.detach = $.fn.remove\n\n // Generate the `width` and `height` functions\n ;['width', 'height'].forEach(function(dimension){\n var dimensionProperty =\n dimension.replace(/./, function(m){ return m[0].toUpperCase() })\n\n $.fn[dimension] = function(value){\n var offset, el = this[0]\n if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] :\n isDocument(el) ? el.documentElement['scroll' + dimensionProperty] :\n (offset = this.offset()) && offset[dimension]\n else return this.each(function(idx){\n el = $(this)\n el.css(dimension, funcArg(this, value, idx, el[dimension]()))\n })\n }\n })\n\n function traverseNode(node, fun) {\n fun(node)\n for (var i = 0, len = node.childNodes.length; i < len; i++)\n traverseNode(node.childNodes[i], fun)\n }\n\n // Generate the `after`, `prepend`, `before`, `append`,\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\n adjacencyOperators.forEach(function(operator, operatorIndex) {\n var inside = operatorIndex % 2 //=> prepend, append\n\n $.fn[operator] = function(){\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\n var argType, nodes = $.map(arguments, function(arg) {\n var arr = []\n argType = type(arg)\n if (argType == \"array\") {\n arg.forEach(function(el) {\n if (el.nodeType !== undefined) return arr.push(el)\n else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())\n arr = arr.concat(zepto.fragment(el))\n })\n return arr\n }\n return argType == \"object\" || arg == null ?\n arg : zepto.fragment(arg)\n }),\n parent, copyByClone = this.length > 1\n if (nodes.length < 1) return this\n\n return this.each(function(_, target){\n parent = inside ? target : target.parentNode\n\n // convert all methods to a \"before\" operation\n target = operatorIndex == 0 ? target.nextSibling :\n operatorIndex == 1 ? target.firstChild :\n operatorIndex == 2 ? target :\n null\n\n var parentInDocument = $.contains(document.documentElement, parent)\n\n nodes.forEach(function(node){\n if (copyByClone) node = node.cloneNode(true)\n else if (!parent) return $(node).remove()\n\n parent.insertBefore(node, target)\n if (parentInDocument) traverseNode(node, function(el){\n if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' &&\n (!el.type || el.type === 'text/javascript') && !el.src){\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window\n target['eval'].call(target, el.innerHTML)\n }\n })\n })\n })\n }\n\n // after => insertAfter\n // prepend => prependTo\n // before => insertBefore\n // append => appendTo\n $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){\n $(html)[operator](this)\n return this\n }\n })\n\n zepto.Z.prototype = Z.prototype = $.fn\n\n // Export internal API functions in the `$.zepto` namespace\n zepto.uniq = uniq\n zepto.deserializeValue = deserializeValue\n $.zepto = zepto\n\n return $\n})()\n\nwindow.Zepto = Zepto\nwindow.$ === undefined && (window.$ = Zepto)\n\n;(function($){\n var jsonpID = +new Date(),\n document = window.document,\n key,\n name,\n rscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n scriptTypeRE = /^(?:text|application)\\/javascript/i,\n xmlTypeRE = /^(?:text|application)\\/xml/i,\n jsonType = 'application/json',\n htmlType = 'text/html',\n blankRE = /^\\s*$/,\n originAnchor = document.createElement('a')\n\n originAnchor.href = window.location.href\n\n // trigger a custom event and return false if it was cancelled\n function triggerAndReturn(context, eventName, data) {\n var event = $.Event(eventName)\n $(context).trigger(event, data)\n return !event.isDefaultPrevented()\n }\n\n // trigger an Ajax \"global\" event\n function triggerGlobal(settings, context, eventName, data) {\n if (settings.global) return triggerAndReturn(context || document, eventName, data)\n }\n\n // Number of active Ajax requests\n $.active = 0\n\n function ajaxStart(settings) {\n if (settings.global && $.active++ === 0) triggerGlobal(settings, null, 'ajaxStart')\n }\n function ajaxStop(settings) {\n if (settings.global && !(--$.active)) triggerGlobal(settings, null, 'ajaxStop')\n }\n\n // triggers an extra global event \"ajaxBeforeSend\" that's like \"ajaxSend\" but cancelable\n function ajaxBeforeSend(xhr, settings) {\n var context = settings.context\n if (settings.beforeSend.call(context, xhr, settings) === false ||\n triggerGlobal(settings, context, 'ajaxBeforeSend', [xhr, settings]) === false)\n return false\n\n triggerGlobal(settings, context, 'ajaxSend', [xhr, settings])\n }\n function ajaxSuccess(data, xhr, settings, deferred) {\n var context = settings.context, status = 'success'\n settings.success.call(context, data, status, xhr)\n if (deferred) deferred.resolveWith(context, [data, status, xhr])\n triggerGlobal(settings, context, 'ajaxSuccess', [xhr, settings, data])\n ajaxComplete(status, xhr, settings)\n }\n // type: \"timeout\", \"error\", \"abort\", \"parsererror\"\n function ajaxError(error, type, xhr, settings, deferred) {\n var context = settings.context\n settings.error.call(context, xhr, type, error)\n if (deferred) deferred.rejectWith(context, [xhr, type, error])\n triggerGlobal(settings, context, 'ajaxError', [xhr, settings, error || type])\n ajaxComplete(type, xhr, settings)\n }\n // status: \"success\", \"notmodified\", \"error\", \"timeout\", \"abort\", \"parsererror\"\n function ajaxComplete(status, xhr, settings) {\n var context = settings.context\n settings.complete.call(context, xhr, status)\n triggerGlobal(settings, context, 'ajaxComplete', [xhr, settings])\n ajaxStop(settings)\n }\n\n function ajaxDataFilter(data, type, settings) {\n if (settings.dataFilter == empty) return data\n var context = settings.context\n return settings.dataFilter.call(context, data, type)\n }\n\n // Empty function, used as default callback\n function empty() {}\n\n $.ajaxJSONP = function(options, deferred){\n if (!('type' in options)) return $.ajax(options)\n\n var _callbackName = options.jsonpCallback,\n callbackName = ($.isFunction(_callbackName) ?\n _callbackName() : _callbackName) || ('Zepto' + (jsonpID++)),\n script = document.createElement('script'),\n originalCallback = window[callbackName],\n responseData,\n abort = function(errorType) {\n $(script).triggerHandler('error', errorType || 'abort')\n },\n xhr = { abort: abort }, abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n $(script).on('load error', function(e, errorType){\n clearTimeout(abortTimeout)\n $(script).off().remove()\n\n if (e.type == 'error' || !responseData) {\n ajaxError(null, errorType || 'error', xhr, options, deferred)\n } else {\n ajaxSuccess(responseData[0], xhr, options, deferred)\n }\n\n window[callbackName] = originalCallback\n if (responseData && $.isFunction(originalCallback))\n originalCallback(responseData[0])\n\n originalCallback = responseData = undefined\n })\n\n if (ajaxBeforeSend(xhr, options) === false) {\n abort('abort')\n return xhr\n }\n\n window[callbackName] = function(){\n responseData = arguments\n }\n\n script.src = options.url.replace(/\\?(.+)=\\?/, '?$1=' + callbackName)\n document.head.appendChild(script)\n\n if (options.timeout > 0) abortTimeout = setTimeout(function(){\n abort('timeout')\n }, options.timeout)\n\n return xhr\n }\n\n $.ajaxSettings = {\n // Default type of request\n type: 'GET',\n // Callback that is executed before request\n beforeSend: empty,\n // Callback that is executed if the request succeeds\n success: empty,\n // Callback that is executed the the server drops error\n error: empty,\n // Callback that is executed on request complete (both: error and success)\n complete: empty,\n // The context for the callbacks\n context: null,\n // Whether to trigger \"global\" Ajax events\n global: true,\n // Transport\n xhr: function () {\n return new window.XMLHttpRequest()\n },\n // MIME types mapping\n // IIS returns Javascript as \"application/x-javascript\"\n accepts: {\n script: 'text/javascript, application/javascript, application/x-javascript',\n json: jsonType,\n xml: 'application/xml, text/xml',\n html: htmlType,\n text: 'text/plain'\n },\n // Whether the request is to another domain\n crossDomain: false,\n // Default timeout\n timeout: 0,\n // Whether data should be serialized to string\n processData: true,\n // Whether the browser should be allowed to cache GET responses\n cache: true,\n //Used to handle the raw response data of XMLHttpRequest.\n //This is a pre-filtering function to sanitize the response.\n //The sanitized response should be returned\n dataFilter: empty\n }\n\n function mimeToDataType(mime) {\n if (mime) mime = mime.split(';', 2)[0]\n return mime && ( mime == htmlType ? 'html' :\n mime == jsonType ? 'json' :\n scriptTypeRE.test(mime) ? 'script' :\n xmlTypeRE.test(mime) && 'xml' ) || 'text'\n }\n\n function appendQuery(url, query) {\n if (query == '') return url\n return (url + '&' + query).replace(/[&?]{1,2}/, '?')\n }\n\n // serialize payload and append it to the URL for GET requests\n function serializeData(options) {\n if (options.processData && options.data && $.type(options.data) != \"string\")\n options.data = $.param(options.data, options.traditional)\n if (options.data && (!options.type || options.type.toUpperCase() == 'GET' || 'jsonp' == options.dataType))\n options.url = appendQuery(options.url, options.data), options.data = undefined\n }\n\n $.ajax = function(options){\n var settings = $.extend({}, options || {}),\n deferred = $.Deferred && $.Deferred(),\n urlAnchor, hashIndex\n for (key in $.ajaxSettings) if (settings[key] === undefined) settings[key] = $.ajaxSettings[key]\n\n ajaxStart(settings)\n\n if (!settings.crossDomain) {\n urlAnchor = document.createElement('a')\n urlAnchor.href = settings.url\n // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049\n urlAnchor.href = urlAnchor.href\n settings.crossDomain = (originAnchor.protocol + '//' + originAnchor.host) !== (urlAnchor.protocol + '//' + urlAnchor.host)\n }\n\n if (!settings.url) settings.url = window.location.toString()\n if ((hashIndex = settings.url.indexOf('#')) > -1) settings.url = settings.url.slice(0, hashIndex)\n serializeData(settings)\n\n var dataType = settings.dataType, hasPlaceholder = /\\?.+=\\?/.test(settings.url)\n if (hasPlaceholder) dataType = 'jsonp'\n\n if (settings.cache === false || (\n (!options || options.cache !== true) &&\n ('script' == dataType || 'jsonp' == dataType)\n ))\n settings.url = appendQuery(settings.url, '_=' + Date.now())\n\n if ('jsonp' == dataType) {\n if (!hasPlaceholder)\n settings.url = appendQuery(settings.url,\n settings.jsonp ? (settings.jsonp + '=?') : settings.jsonp === false ? '' : 'callback=?')\n return $.ajaxJSONP(settings, deferred)\n }\n\n var mime = settings.accepts[dataType],\n headers = { },\n setHeader = function(name, value) { headers[name.toLowerCase()] = [name, value] },\n protocol = /^([\\w-]+:)\\/\\//.test(settings.url) ? RegExp.$1 : window.location.protocol,\n xhr = settings.xhr(),\n nativeSetHeader = xhr.setRequestHeader,\n abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n if (!settings.crossDomain) setHeader('X-Requested-With', 'XMLHttpRequest')\n setHeader('Accept', mime || '*/*')\n if (mime = settings.mimeType || mime) {\n if (mime.indexOf(',') > -1) mime = mime.split(',', 2)[0]\n xhr.overrideMimeType && xhr.overrideMimeType(mime)\n }\n if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != 'GET'))\n setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded')\n\n if (settings.headers) for (name in settings.headers) setHeader(name, settings.headers[name])\n xhr.setRequestHeader = setHeader\n\n xhr.onreadystatechange = function(){\n if (xhr.readyState == 4) {\n xhr.onreadystatechange = empty\n clearTimeout(abortTimeout)\n var result, error = false\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == 'file:')) {\n dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type'))\n\n if (xhr.responseType == 'arraybuffer' || xhr.responseType == 'blob')\n result = xhr.response\n else {\n result = xhr.responseText\n\n try {\n // http://perfectionkills.com/global-eval-what-are-the-options/\n // sanitize response accordingly if data filter callback provided\n result = ajaxDataFilter(result, dataType, settings)\n if (dataType == 'script') (1,eval)(result)\n else if (dataType == 'xml') result = xhr.responseXML\n else if (dataType == 'json') result = blankRE.test(result) ? null : $.parseJSON(result)\n } catch (e) { error = e }\n\n if (error) return ajaxError(error, 'parsererror', xhr, settings, deferred)\n }\n\n ajaxSuccess(result, xhr, settings, deferred)\n } else {\n ajaxError(xhr.statusText || null, xhr.status ? 'error' : 'abort', xhr, settings, deferred)\n }\n }\n }\n\n if (ajaxBeforeSend(xhr, settings) === false) {\n xhr.abort()\n ajaxError(null, 'abort', xhr, settings, deferred)\n return xhr\n }\n\n var async = 'async' in settings ? settings.async : true\n xhr.open(settings.type, settings.url, async, settings.username, settings.password)\n\n if (settings.xhrFields) for (name in settings.xhrFields) xhr[name] = settings.xhrFields[name]\n\n for (name in headers) nativeSetHeader.apply(xhr, headers[name])\n\n if (settings.timeout > 0) abortTimeout = setTimeout(function(){\n xhr.onreadystatechange = empty\n xhr.abort()\n ajaxError(null, 'timeout', xhr, settings, deferred)\n }, settings.timeout)\n\n // avoid sending empty string (#319)\n xhr.send(settings.data ? settings.data : null)\n return xhr\n }\n\n // handle optional data/success arguments\n function parseArguments(url, data, success, dataType) {\n if ($.isFunction(data)) dataType = success, success = data, data = undefined\n if (!$.isFunction(success)) dataType = success, success = undefined\n return {\n url: url\n , data: data\n , success: success\n , dataType: dataType\n }\n }\n\n $.get = function(/* url, data, success, dataType */){\n return $.ajax(parseArguments.apply(null, arguments))\n }\n\n $.post = function(/* url, data, success, dataType */){\n var options = parseArguments.apply(null, arguments)\n options.type = 'POST'\n return $.ajax(options)\n }\n\n $.getJSON = function(/* url, data, success */){\n var options = parseArguments.apply(null, arguments)\n options.dataType = 'json'\n return $.ajax(options)\n }\n\n $.fn.load = function(url, data, success){\n if (!this.length) return this\n var self = this, parts = url.split(/\\s/), selector,\n options = parseArguments(url, data, success),\n callback = options.success\n if (parts.length > 1) options.url = parts[0], selector = parts[1]\n options.success = function(response){\n self.html(selector ?\n $('<div>').html(response.replace(rscript, \"\")).find(selector)\n : response)\n callback && callback.apply(self, arguments)\n }\n $.ajax(options)\n return this\n }\n\n var escape = encodeURIComponent\n\n function serialize(params, obj, traditional, scope){\n var type, array = $.isArray(obj), hash = $.isPlainObject(obj)\n $.each(obj, function(key, value) {\n type = $.type(value)\n if (scope) key = traditional ? scope :\n scope + '[' + (hash || type == 'object' || type == 'array' ? key : '') + ']'\n // handle data in serializeArray() format\n if (!scope && array) params.add(value.name, value.value)\n // recurse into nested objects\n else if (type == \"array\" || (!traditional && type == \"object\"))\n serialize(params, value, traditional, key)\n else params.add(key, value)\n })\n }\n\n $.param = function(obj, traditional){\n var params = []\n params.add = function(key, value) {\n if ($.isFunction(value)) value = value()\n if (value == null) value = \"\"\n this.push(escape(key) + '=' + escape(value))\n }\n serialize(params, obj, traditional)\n return params.join('&').replace(/%20/g, '+')\n }\n})(Zepto)\n\n;(function($){\n // Create a collection of callbacks to be fired in a sequence, with configurable behaviour\n // Option flags:\n // - once: Callbacks fired at most one time.\n // - memory: Remember the most recent context and arguments\n // - stopOnFalse: Cease iterating over callback list\n // - unique: Permit adding at most one instance of the same callback\n $.Callbacks = function(options) {\n options = $.extend({}, options)\n\n var memory, // Last fire value (for non-forgettable lists)\n fired, // Flag to know if list was already fired\n firing, // Flag to know if list is currently firing\n firingStart, // First callback to fire (used internally by add and fireWith)\n firingLength, // End of the loop when firing\n firingIndex, // Index of currently firing callback (modified by remove if needed)\n list = [], // Actual callback list\n stack = !options.once && [], // Stack of fire calls for repeatable lists\n fire = function(data) {\n memory = options.memory && data\n fired = true\n firingIndex = firingStart || 0\n firingStart = 0\n firingLength = list.length\n firing = true\n for ( ; list && firingIndex < firingLength ; ++firingIndex ) {\n if (list[firingIndex].apply(data[0], data[1]) === false && options.stopOnFalse) {\n memory = false\n break\n }\n }\n firing = false\n if (list) {\n if (stack) stack.length && fire(stack.shift())\n else if (memory) list.length = 0\n else Callbacks.disable()\n }\n },\n\n Callbacks = {\n add: function() {\n if (list) {\n var start = list.length,\n add = function(args) {\n $.each(args, function(_, arg){\n if (typeof arg === \"function\") {\n if (!options.unique || !Callbacks.has(arg)) list.push(arg)\n }\n else if (arg && arg.length && typeof arg !== 'string') add(arg)\n })\n }\n add(arguments)\n if (firing) firingLength = list.length\n else if (memory) {\n firingStart = start\n fire(memory)\n }\n }\n return this\n },\n remove: function() {\n if (list) {\n $.each(arguments, function(_, arg){\n var index\n while ((index = $.inArray(arg, list, index)) > -1) {\n list.splice(index, 1)\n // Handle firing indexes\n if (firing) {\n if (index <= firingLength) --firingLength\n if (index <= firingIndex) --firingIndex\n }\n }\n })\n }\n return this\n },\n has: function(fn) {\n return !!(list && (fn ? $.inArray(fn, list) > -1 : list.length))\n },\n empty: function() {\n firingLength = list.length = 0\n return this\n },\n disable: function() {\n list = stack = memory = undefined\n return this\n },\n disabled: function() {\n return !list\n },\n lock: function() {\n stack = undefined\n if (!memory) Callbacks.disable()\n return this\n },\n locked: function() {\n return !stack\n },\n fireWith: function(context, args) {\n if (list && (!fired || stack)) {\n args = args || []\n args = [context, args.slice ? args.slice() : args]\n if (firing) stack.push(args)\n else fire(args)\n }\n return this\n },\n fire: function() {\n return Callbacks.fireWith(this, arguments)\n },\n fired: function() {\n return !!fired\n }\n }\n\n return Callbacks\n }\n})(Zepto)\n\n;(function($){\n var slice = Array.prototype.slice\n\n function Deferred(func) {\n var tuples = [\n // action, add listener, listener list, final state\n [ \"resolve\", \"done\", $.Callbacks({once:1, memory:1}), \"resolved\" ],\n [ \"reject\", \"fail\", $.Callbacks({once:1, memory:1}), \"rejected\" ],\n [ \"notify\", \"progress\", $.Callbacks({memory:1}) ]\n ],\n state = \"pending\",\n promise = {\n state: function() {\n return state\n },\n always: function() {\n deferred.done(arguments).fail(arguments)\n return this\n },\n then: function(/* fnDone [, fnFailed [, fnProgress]] */) {\n var fns = arguments\n return Deferred(function(defer){\n $.each(tuples, function(i, tuple){\n var fn = $.isFunction(fns[i]) && fns[i]\n deferred[tuple[1]](function(){\n var returned = fn && fn.apply(this, arguments)\n if (returned && $.isFunction(returned.promise)) {\n returned.promise()\n .done(defer.resolve)\n .fail(defer.reject)\n .progress(defer.notify)\n } else {\n var context = this === promise ? defer.promise() : this,\n values = fn ? [returned] : arguments\n defer[tuple[0] + \"With\"](context, values)\n }\n })\n })\n fns = null\n }).promise()\n },\n\n promise: function(obj) {\n return obj != null ? $.extend( obj, promise ) : promise\n }\n },\n deferred = {}\n\n $.each(tuples, function(i, tuple){\n var list = tuple[2],\n stateString = tuple[3]\n\n promise[tuple[1]] = list.add\n\n if (stateString) {\n list.add(function(){\n state = stateString\n }, tuples[i^1][2].disable, tuples[2][2].lock)\n }\n\n deferred[tuple[0]] = function(){\n deferred[tuple[0] + \"With\"](this === deferred ? promise : this, arguments)\n return this\n }\n deferred[tuple[0] + \"With\"] = list.fireWith\n })\n\n promise.promise(deferred)\n if (func) func.call(deferred, deferred)\n return deferred\n }\n\n $.when = function(sub) {\n var resolveValues = slice.call(arguments),\n len = resolveValues.length,\n i = 0,\n remain = len !== 1 || (sub && $.isFunction(sub.promise)) ? len : 0,\n deferred = remain === 1 ? sub : Deferred(),\n progressValues, progressContexts, resolveContexts,\n updateFn = function(i, ctx, val){\n return function(value){\n ctx[i] = this\n val[i] = arguments.length > 1 ? slice.call(arguments) : value\n if (val === progressValues) {\n deferred.notifyWith(ctx, val)\n } else if (!(--remain)) {\n deferred.resolveWith(ctx, val)\n }\n }\n }\n\n if (len > 1) {\n progressValues = new Array(len)\n progressContexts = new Array(len)\n resolveContexts = new Array(len)\n for ( ; i < len; ++i ) {\n if (resolveValues[i] && $.isFunction(resolveValues[i].promise)) {\n resolveValues[i].promise()\n .done(updateFn(i, resolveContexts, resolveValues))\n .fail(deferred.reject)\n .progress(updateFn(i, progressContexts, progressValues))\n } else {\n --remain\n }\n }\n }\n if (!remain) deferred.resolveWith(resolveContexts, resolveValues)\n return deferred.promise()\n }\n\n $.Deferred = Deferred\n})(Zepto)\n\n;(function($){\n var _zid = 1, undefined,\n slice = Array.prototype.slice,\n isFunction = $.isFunction,\n isString = function(obj){ return typeof obj == 'string' },\n handlers = {},\n specialEvents={},\n focusinSupported = 'onfocusin' in window,\n focus = { focus: 'focusin', blur: 'focusout' },\n hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' }\n\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents'\n\n function zid(element) {\n return element._zid || (element._zid = _zid++)\n }\n function findHandlers(element, event, fn, selector) {\n event = parse(event)\n if (event.ns) var matcher = matcherFor(event.ns)\n return (handlers[zid(element)] || []).filter(function(handler) {\n return handler\n && (!event.e || handler.e == event.e)\n && (!event.ns || matcher.test(handler.ns))\n && (!fn || zid(handler.fn) === zid(fn))\n && (!selector || handler.sel == selector)\n })\n }\n function parse(event) {\n var parts = ('' + event).split('.')\n return {e: parts[0], ns: parts.slice(1).sort().join(' ')}\n }\n function matcherFor(ns) {\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)')\n }\n\n function eventCapture(handler, captureSetting) {\n return handler.del &&\n (!focusinSupported && (handler.e in focus)) ||\n !!captureSetting\n }\n\n function realEvent(type) {\n return hover[type] || (focusinSupported && focus[type]) || type\n }\n\n function add(element, events, fn, data, selector, delegator, capture){\n var id = zid(element), set = (handlers[id] || (handlers[id] = []))\n events.split(/\\s/).forEach(function(event){\n if (event == 'ready') return $(document).ready(fn)\n var handler = parse(event)\n handler.fn = fn\n handler.sel = selector\n // emulate mouseenter, mouseleave\n if (handler.e in hover) fn = function(e){\n var related = e.relatedTarget\n if (!related || (related !== this && !$.contains(this, related)))\n return handler.fn.apply(this, arguments)\n }\n handler.del = delegator\n var callback = delegator || fn\n handler.proxy = function(e){\n e = compatible(e)\n if (e.isImmediatePropagationStopped()) return\n e.data = data\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args))\n if (result === false) e.preventDefault(), e.stopPropagation()\n return result\n }\n handler.i = set.length\n set.push(handler)\n if ('addEventListener' in element)\n element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n }\n function remove(element, events, fn, selector, capture){\n var id = zid(element)\n ;(events || '').split(/\\s/).forEach(function(event){\n findHandlers(element, event, fn, selector).forEach(function(handler){\n delete handlers[id][handler.i]\n if ('removeEventListener' in element)\n element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n })\n }\n\n $.event = { add: add, remove: remove }\n\n $.proxy = function(fn, context) {\n var args = (2 in arguments) && slice.call(arguments, 2)\n if (isFunction(fn)) {\n var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) }\n proxyFn._zid = zid(fn)\n return proxyFn\n } else if (isString(context)) {\n if (args) {\n args.unshift(fn[context], fn)\n return $.proxy.apply(null, args)\n } else {\n return $.proxy(fn[context], fn)\n }\n } else {\n throw new TypeError(\"expected function\")\n }\n }\n\n $.fn.bind = function(event, data, callback){\n return this.on(event, data, callback)\n }\n $.fn.unbind = function(event, callback){\n return this.off(event, callback)\n }\n $.fn.one = function(event, selector, data, callback){\n return this.on(event, selector, data, callback, 1)\n }\n\n var returnTrue = function(){return true},\n returnFalse = function(){return false},\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\n eventMethods = {\n preventDefault: 'isDefaultPrevented',\n stopImmediatePropagation: 'isImmediatePropagationStopped',\n stopPropagation: 'isPropagationStopped'\n }\n\n function compatible(event, source) {\n if (source || !event.isDefaultPrevented) {\n source || (source = event)\n\n $.each(eventMethods, function(name, predicate) {\n var sourceMethod = source[name]\n event[name] = function(){\n this[predicate] = returnTrue\n return sourceMethod && sourceMethod.apply(source, arguments)\n }\n event[predicate] = returnFalse\n })\n\n event.timeStamp || (event.timeStamp = Date.now())\n\n if (source.defaultPrevented !== undefined ? source.defaultPrevented :\n 'returnValue' in source ? source.returnValue === false :\n source.getPreventDefault && source.getPreventDefault())\n event.isDefaultPrevented = returnTrue\n }\n return event\n }\n\n function createProxy(event) {\n var key, proxy = { originalEvent: event }\n for (key in event)\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key]\n\n return compatible(proxy, event)\n }\n\n $.fn.delegate = function(selector, event, callback){\n return this.on(event, selector, callback)\n }\n $.fn.undelegate = function(selector, event, callback){\n return this.off(event, selector, callback)\n }\n\n $.fn.live = function(event, callback){\n $(document.body).delegate(this.selector, event, callback)\n return this\n }\n $.fn.die = function(event, callback){\n $(document.body).undelegate(this.selector, event, callback)\n return this\n }\n\n $.fn.on = function(event, selector, data, callback, one){\n var autoRemove, delegator, $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.on(type, selector, data, fn, one)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = data, data = selector, selector = undefined\n if (callback === undefined || data === false)\n callback = data, data = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(_, element){\n if (one) autoRemove = function(e){\n remove(element, e.type, callback)\n return callback.apply(this, arguments)\n }\n\n if (selector) delegator = function(e){\n var evt, match = $(e.target).closest(selector, element).get(0)\n if (match && match !== element) {\n evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element})\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)))\n }\n }\n\n add(element, event, callback, data, selector, delegator || autoRemove)\n })\n }\n $.fn.off = function(event, selector, callback){\n var $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.off(type, selector, fn)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = selector, selector = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(){\n remove(this, event, callback, selector)\n })\n }\n\n $.fn.trigger = function(event, args){\n event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event)\n event._args = args\n return this.each(function(){\n // handle focus(), blur() by calling them directly\n if (event.type in focus && typeof this[event.type] == \"function\") this[event.type]()\n // items in the collection might not be DOM elements\n else if ('dispatchEvent' in this) this.dispatchEvent(event)\n else $(this).triggerHandler(event, args)\n })\n }\n\n // triggers event handlers on current element just as if an event occurred,\n // doesn't trigger an actual event, doesn't bubble\n $.fn.triggerHandler = function(event, args){\n var e, result\n this.each(function(i, element){\n e = createProxy(isString(event) ? $.Event(event) : event)\n e._args = args\n e.target = element\n $.each(findHandlers(element, event.type || event), function(i, handler){\n result = handler.proxy(e)\n if (e.isImmediatePropagationStopped()) return false\n })\n })\n return result\n }\n\n // shortcut methods for `.bind(event, fn)` for each event type\n ;('focusin focusout focus blur load resize scroll unload click dblclick '+\n 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave '+\n 'change select keydown keypress keyup error').split(' ').forEach(function(event) {\n $.fn[event] = function(callback) {\n return (0 in arguments) ?\n this.bind(event, callback) :\n this.trigger(event)\n }\n })\n\n $.Event = function(type, props) {\n if (!isString(type)) props = type, type = props.type\n var event = document.createEvent(specialEvents[type] || 'Events'), bubbles = true\n if (props) for (var name in props) (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name])\n event.initEvent(type, bubbles, true)\n return compatible(event)\n }\n\n})(Zepto)\n\n;(function(){\n // getComputedStyle shouldn't freak out when called\n // without a valid element as argument\n try {\n getComputedStyle(undefined)\n } catch(e) {\n var nativeGetComputedStyle = getComputedStyle\n window.getComputedStyle = function(element, pseudoElement){\n try {\n return nativeGetComputedStyle(element, pseudoElement)\n } catch(e) {\n return null\n }\n }\n }\n})()\n\n;(function($){\n var zepto = $.zepto, oldQsa = zepto.qsa, oldMatches = zepto.matches\n\n function visible(elem){\n elem = $(elem)\n return !!(elem.width() || elem.height()) && elem.css(\"display\") !== \"none\"\n }\n\n // Implements a subset from:\n // http://api.jquery.com/category/selectors/jquery-selector-extensions/\n //\n // Each filter function receives the current index, all nodes in the\n // considered set, and a value if there were parentheses. The value\n // of `this` is the node currently being considered. The function returns the\n // resulting node(s), null, or undefined.\n //\n // Complex selectors are not supported:\n // li:has(label:contains(\"foo\")) + li:has(label:contains(\"bar\"))\n // ul.inner:first > li\n var filters = $.expr[':'] = {\n visible: function(){ if (visible(this)) return this },\n hidden: function(){ if (!visible(this)) return this },\n selected: function(){ if (this.selected) return this },\n checked: function(){ if (this.checked) return this },\n parent: function(){ return this.parentNode },\n first: function(idx){ if (idx === 0) return this },\n last: function(idx, nodes){ if (idx === nodes.length - 1) return this },\n eq: function(idx, _, value){ if (idx === value) return this },\n contains: function(idx, _, text){ if ($(this).text().indexOf(text) > -1) return this },\n has: function(idx, _, sel){ if (zepto.qsa(this, sel).length) return this }\n }\n\n var filterRe = new RegExp('(.*):(\\\\w+)(?:\\\\(([^)]+)\\\\))?$\\\\s*'),\n childRe = /^\\s*>/,\n classTag = 'Zepto' + (+new Date())\n\n function process(sel, fn) {\n // quote the hash in `a[href^=#]` expression\n sel = sel.replace(/=#\\]/g, '=\"#\"]')\n var filter, arg, match = filterRe.exec(sel)\n if (match && match[2] in filters) {\n filter = filters[match[2]], arg = match[3]\n sel = match[1]\n if (arg) {\n var num = Number(arg)\n if (isNaN(num)) arg = arg.replace(/^[\"']|[\"']$/g, '')\n else arg = num\n }\n }\n return fn(sel, filter, arg)\n }\n\n zepto.qsa = function(node, selector) {\n return process(selector, function(sel, filter, arg){\n try {\n var taggedParent\n if (!sel && filter) sel = '*'\n else if (childRe.test(sel))\n // support \"> *\" child queries by tagging the parent node with a\n // unique class and prepending that classname onto the selector\n taggedParent = $(node).addClass(classTag), sel = '.'+classTag+' '+sel\n\n var nodes = oldQsa(node, sel)\n } catch(e) {\n console.error('error performing selector: %o', selector)\n throw e\n } finally {\n if (taggedParent) taggedParent.removeClass(classTag)\n }\n return !filter ? nodes :\n zepto.uniq($.map(nodes, function(n, i){ return filter.call(n, i, nodes, arg) }))\n })\n }\n\n zepto.matches = function(node, selector){\n return process(selector, function(sel, filter, arg){\n return (!sel || oldMatches(node, sel)) &&\n (!filter || filter.call(node, null, arg) === node)\n })\n }\n})(Zepto)\nmodule.exports = Zepto\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/clappr-zepto/zepto.js\n// module id = 6\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader/lib/css-base.js\n// module id = 7\n// module chunks = 0","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_core.js\n// module id = 8\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target) {\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n if (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertInto + \" \" + options.insertAt.before);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\toptions.attrs.type = \"text/css\";\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\toptions.attrs.type = \"text/css\";\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t result = options.transform(obj.css);\n\n\t if (result) {\n\t \t// If transform returns a value, use that instead of the original css.\n\t \t// This allows running runtime transformations on the css.\n\t \tobj.css = result;\n\t } else {\n\t \t// If the transform function returns a falsy value, don't add this css.\n\t \t// This allows conditional loading of css\n\t \treturn function() {\n\t \t\t// noop\n\t \t};\n\t }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default. Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/style-loader/lib/addStyles.js\n// module id = 9\n// module chunks = 0","/* eslint-disable no-var */\n// Simple JavaScript Templating\n// Paul Miller (http://paulmillr.com)\n// http://underscorejs.org\n// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\n// By default, Underscore uses ERB-style template delimiters, change the\n// following template settings to use alternative delimiters.\nvar settings = {\n evaluate : /<%([\\s\\S]+?)%>/g,\n interpolate : /<%=([\\s\\S]+?)%>/g,\n escape : /<%-([\\s\\S]+?)%>/g\n}\n\n// When customizing `templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n '\\'': '\\'',\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\t': 't',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n}\n\nvar escaper = /\\\\|'|\\r|\\n|\\t|\\u2028|\\u2029/g\n\n// List of HTML entities for escaping.\nvar htmlEntities = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n}\n\nvar entityRe = new RegExp('[&<>\"\\']', 'g')\n\nvar escapeExpr = function(string) {\n if (string === null) return ''\n return ('' + string).replace(entityRe, function(match) {\n return htmlEntities[match]\n })\n}\n\nvar counter = 0\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\nvar tmpl = function(text, data) {\n var render\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = new RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g')\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0\n var source = '__p+=\\''\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset)\n .replace(escaper, function(match) { return '\\\\' + escapes[match] })\n\n if (escape)\n source += '\\'+\\n((__t=(' + escape + '))==null?\\'\\':escapeExpr(__t))+\\n\\''\n\n if (interpolate)\n source += '\\'+\\n((__t=(' + interpolate + '))==null?\\'\\':__t)+\\n\\''\n\n if (evaluate)\n source += '\\';\\n' + evaluate + '\\n__p+=\\''\n\n index = offset + match.length\n return match\n })\n source += '\\';\\n'\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n'\n\n source = 'var __t,__p=\\'\\',__j=Array.prototype.join,' +\n 'print=function(){__p+=__j.call(arguments,\\'\\');};\\n' +\n source + 'return __p;\\n//# sourceURL=/microtemplates/source[' + counter++ + ']'\n\n try {\n /*jshint -W054 */\n // TODO: find a way to avoid eval\n render = new Function(settings.variable || 'obj', 'escapeExpr', source)\n } catch (e) {\n e.source = source\n throw e\n }\n\n if (data) return render(data, escapeExpr)\n var template = function(data) {\n return render.call(this, data, escapeExpr)\n }\n\n // Provide the compiled function source as a convenience for precompilation.\n template.source = 'function(' + (settings.variable || 'obj') + '){\\n' + source + '}'\n\n return template\n}\ntmpl.settings = settings\n\nexport default tmpl\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/template.js","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/assign.js\n// module id = 11\n// module chunks = 0","var store = require('./_shared')('wks')\n , uid = require('./_uid')\n , Symbol = require('./_global').Symbol\n , USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function(name){\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_wks.js\n// module id = 12\n// module chunks = 0","import { extend } from './utils'\nimport UIObject from './ui_object'\nimport ErrorMixin from './error_mixin'\n\nimport $ from 'clappr-zepto'\n\n/**\n * An abstraction to represent a generic playback, it's like an interface to be implemented by subclasses.\n * @class Playback\n * @constructor\n * @extends UIObject\n * @module base\n */\nexport default class Playback extends UIObject {\n /**\n * Determine if the playback does not contain video/has video but video should be ignored.\n * @property isAudioOnly\n * @type Boolean\n */\n get isAudioOnly() {\n return false\n }\n\n get isAdaptive() {\n return false\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n get ended() {\n return false\n }\n\n /**\n * The internationalization plugin.\n * @property i18n\n * @type {Strings}\n */\n get i18n() {\n return this._i18n\n }\n\n /**\n * Determine if the playback is having to buffer in order for\n * playback to be smooth.\n * (i.e if a live stream is playing smoothly, this will be false)\n * @property buffering\n * @type Boolean\n */\n get buffering() {\n return false\n }\n\n /**\n * Determine if the playback has user consent.\n * @property consented\n * @type Boolean\n */\n get consented() {\n return this._consented\n }\n\n /**\n * @method constructor\n * @param {Object} options the options object\n * @param {Strings} i18n the internationalization component\n */\n constructor(options, i18n, playerError) {\n super(options)\n this.settings = {}\n this._i18n = i18n\n this.playerError = playerError\n this._consented = false\n }\n\n /**\n * Gives user consent to playback (mobile devices).\n * @method consent\n */\n consent() {\n this._consented = true\n }\n\n /**\n * plays the playback.\n * @method play\n */\n play() {}\n\n /**\n * pauses the playback.\n * @method pause\n */\n pause() {}\n\n /**\n * stops the playback.\n * @method stop\n */\n stop() {}\n\n /**\n * seeks the playback to a given `time` in seconds\n * @method seek\n * @param {Number} time should be a number between 0 and the video duration\n */\n seek(time) {} // eslint-disable-line no-unused-vars\n\n /**\n * seeks the playback to a given `percentage` in percentage\n * @method seekPercentage\n * @param {Number} time should be a number between 0 and 100\n */\n seekPercentage(percentage) {} // eslint-disable-line no-unused-vars\n\n /**\n * The time that \"0\" now represents relative to when playback started.\n * For a stream with a sliding window this will increase as content is\n * removed from the beginning.\n * @method getStartTimeOffset\n * @return {Number} time (in seconds) that time \"0\" represents.\n */\n getStartTimeOffset() { return 0 }\n\n /**\n * gets the duration in seconds\n * @method getDuration\n * @return {Number} duration (in seconds) of the current source\n */\n getDuration() { return 0 }\n\n /**\n * checks if the playback is playing.\n * @method isPlaying\n * @return {Boolean} `true` if the current playback is playing, otherwise `false`\n */\n isPlaying() {\n return false\n }\n\n /**\n * checks if the playback is ready.\n * @property isReady\n * @type {Boolean} `true` if the current playback is ready, otherwise `false`\n */\n get isReady() {\n return false\n }\n\n /**\n * checks if the playback has closed caption tracks.\n * @property hasClosedCaptionsTracks\n * @type {Boolean}\n */\n get hasClosedCaptionsTracks() {\n return this.closedCaptionsTracks.length > 0\n }\n\n /**\n * gets the playback available closed caption tracks.\n * @property closedCaptionsTracks\n * @type {Array} an array of objects with at least 'id' and 'name' properties\n */\n get closedCaptionsTracks() {\n return []\n }\n\n /**\n * gets the selected closed caption track index. (-1 is disabled)\n * @property closedCaptionsTrackId\n * @type {Number}\n */\n get closedCaptionsTrackId() {\n return -1\n }\n\n /**\n * sets the selected closed caption track index. (-1 is disabled)\n * @property closedCaptionsTrackId\n * @type {Number}\n */\n set closedCaptionsTrackId(trackId) {} // eslint-disable-line no-unused-vars\n\n /**\n * gets the playback type (`'vod', 'live', 'aod'`)\n * @method getPlaybackType\n * @return {String} you should write the playback type otherwise it'll assume `'no_op'`\n * @example\n * ```javascript\n * html5VideoPlayback.getPlaybackType() //vod\n * html5AudioPlayback.getPlaybackType() //aod\n * html5VideoPlayback.getPlaybackType() //live\n * flashHlsPlayback.getPlaybackType() //live\n * ```\n */\n getPlaybackType() {\n return Playback.NO_OP\n }\n\n /**\n * checks if the playback is in HD.\n * @method isHighDefinitionInUse\n * @return {Boolean} `true` if the playback is playing in HD, otherwise `false`\n */\n isHighDefinitionInUse() {\n return false\n }\n\n /**\n * sets the volume for the playback\n * @method volume\n * @param {Number} value a number between 0 (`muted`) to 100 (`max`)\n */\n volume(value) {} // eslint-disable-line no-unused-vars\n\n /**\n * enables to configure the playback after its creation\n * @method configure\n * @param {Object} options all the options to change in form of a javascript object\n */\n configure(options) {\n this._options = $.extend(this._options, options)\n }\n\n /**\n * destroys the playback, removing it from DOM\n * @method destroy\n */\n destroy() {\n this.remove()\n }\n\n /**\n * attempt to autoplays the playback.\n * @method attemptAutoPlay\n */\n attemptAutoPlay() {\n this.canAutoPlay((result, error) => { // eslint-disable-line no-unused-vars\n result && this.play()\n })\n }\n\n /**\n * checks if the playback can autoplay.\n * @method canAutoPlay\n * @param {Function} callback function where first param is Boolean and second param is playback Error or null\n */\n canAutoPlay(cb) {\n cb(true, null) // Assume playback can autoplay by default\n }\n}\n\nObject.assign(Playback.prototype, ErrorMixin)\n\nPlayback.extend = function(properties) {\n return extend(Playback, properties)\n}\n\n/**\n * checks if the playback can play a given `source`\n * If a mimeType is provided then this will be used instead of inferring the mimetype\n * from the source extension.\n * @method canPlay\n * @static\n * @param {String} source the given source ex: `http://example.com/play.mp4`\n * @param {String} [mimeType] the given mime type, ex: `'application/vnd.apple.mpegurl'`\n * @return {Boolean} `true` if the playback is playable, otherwise `false`\n */\nPlayback.canPlay = (source, mimeType) => { // eslint-disable-line no-unused-vars\n return false\n}\n\n/**\n * a playback type for video on demand\n *\n * @property VOD\n * @static\n * @type String\n */\nPlayback.VOD = 'vod'\n/**\n * a playback type for audio on demand\n *\n * @property AOD\n * @static\n * @type String\n */\nPlayback.AOD = 'aod'\n/**\n * a playback type for live video\n *\n * @property LIVE\n * @static\n * @type String\n */\nPlayback.LIVE = 'live'\n/**\n * a default playback type\n *\n * @property NO_OP\n * @static\n * @type String\n */\nPlayback.NO_OP = 'no_op'\n/**\n * the plugin type\n *\n * @property type\n * @static\n * @type String\n */\nPlayback.type = 'playback'\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/playback.js","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { uniqueId } from './utils'\nimport Events from './events'\n\n/**\n * @class BaseObject\n * @constructor\n * @extends Events\n * @module base\n */\nexport default class BaseObject extends Events {\n /**\n * returns the object options\n * @property options\n * @type Object\n */\n get options() { return this._options }\n\n /**\n * @method constructor\n * @param {Object} options\n */\n constructor(options={}) {\n super(options)\n this._options = options\n this.uniqueId = uniqueId('o')\n }\n /**\n * a unique id prefixed with `'o'`, `o1, o232`\n *\n * @property uniqueId\n * @type String\n */\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/base_object.js","var global = require('./_global')\n , core = require('./_core')\n , ctx = require('./_ctx')\n , hide = require('./_hide')\n , PROTOTYPE = 'prototype';\n\nvar $export = function(type, name, source){\n var IS_FORCED = type & $export.F\n , IS_GLOBAL = type & $export.G\n , IS_STATIC = type & $export.S\n , IS_PROTO = type & $export.P\n , IS_BIND = type & $export.B\n , IS_WRAP = type & $export.W\n , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n , expProto = exports[PROTOTYPE]\n , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]\n , key, own, out;\n if(IS_GLOBAL)source = name;\n for(key in source){\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if(own && key in exports)continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C){\n var F = function(a, b, c){\n if(this instanceof C){\n switch(arguments.length){\n case 0: return new C;\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if(IS_PROTO){\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library` \nmodule.exports = $export;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_export.js\n// module id = 15\n// module chunks = 0","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_global.js\n// module id = 16\n// module chunks = 0","var anObject = require('./_an-object')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , toPrimitive = require('./_to-primitive')\n , dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if(IE8_DOM_DEFINE)try {\n return dP(O, P, Attributes);\n } catch(e){ /* empty */ }\n if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n if('value' in Attributes)O[P] = Attributes.value;\n return O;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-dp.js\n// module id = 17\n// module chunks = 0","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject')\n , defined = require('./_defined');\nmodule.exports = function(it){\n return IObject(defined(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-iobject.js\n// module id = 18\n// module chunks = 0","import Log from '../plugins/log'\nimport PlayerError from '../components/error'\n\nconst ErrorMixin = {\n /**\n * creates an error.\n * @method createError\n * @param {Object} error should be an object with code, description, level and raw error.\n * @return {Object} Object with formatted error data including origin and scope\n */\n createError(error, options = { useCodePrefix: true }) {\n const scope = this.constructor && this.constructor.type || ''\n const origin = this.name || scope\n const i18n = this.i18n || this.core && this.core.i18n || this.container && this.container.i18n\n\n const prefixedCode = `${origin}:${error && error.code || 'unknown'}`\n const defaultError = {\n description: '',\n level: PlayerError.Levels.FATAL,\n origin,\n scope,\n raw: {},\n }\n\n const errorData = Object.assign({}, defaultError, error, {\n code: options.useCodePrefix ? prefixedCode : error.code\n })\n\n if (i18n && errorData.level == PlayerError.Levels.FATAL && !errorData.UI) {\n const defaultUI = {\n title: i18n.t('default_error_title'),\n message: i18n.t('default_error_message')\n }\n errorData.UI = defaultUI\n }\n\n if (this.playerError)\n this.playerError.createError(errorData)\n else\n Log.warn(origin, 'PlayerError is not defined. Error: ', errorData)\n\n return errorData\n }\n}\n\nexport default ErrorMixin\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/error_mixin.js","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function(){\n return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_descriptors.js\n// module id = 20\n// module chunks = 0","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function(it, key){\n return hasOwnProperty.call(it, key);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_has.js\n// module id = 21\n// module chunks = 0","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport $ from 'clappr-zepto'\nimport { uniqueId, DomRecycler } from './utils'\nimport BaseObject from './base_object'\n\nconst delegateEventSplitter = /^(\\S+)\\s*(.*)$/\n\n/**\n * A base class to create ui object.\n * @class UIObject\n * @constructor\n * @extends BaseObject\n * @module base\n */\nexport default class UIObject extends BaseObject {\n /**\n * a unique id prefixed with `'c'`, `c1, c232`\n *\n * @property cid\n * @type String\n */\n /**\n * the dom element itself\n *\n * @property el\n * @type HTMLElement\n */\n /**\n * the dom element wrapped by `$`\n *\n * @property $el\n * @type HTMLElement\n */\n\n /**\n * gets the tag name for the ui component\n * @method tagName\n * @default div\n * @return {String} tag's name\n */\n get tagName() { return 'div' }\n /**\n * a literal object mapping element's events to methods\n * @property events\n * @type Object\n * @example\n *\n *```javascript\n *\n * class MyButton extends UIObject {\n * constructor(options) {\n * super(options)\n * this.myId = 0\n * }\n * get events() { return { 'click': 'myClick' } }\n * myClick(){ this.myId = 42 }\n * }\n *\n * // when you click on MyButton the method `myClick` will be called\n *```\n */\n get events() { return {} }\n /**\n * a literal object mapping attributes and values to the element\n * element's attribute name and the value the attribute value\n * @property attributes\n * @type Object\n * @example\n *\n *```javascript\n *\n * class MyButton extends UIObject {\n * constructor(options) { super(options) }\n * get attributes() { return { class: 'my-button'} }\n * }\n *\n * // MyButton.el.className will be 'my-button'\n * ```\n */\n get attributes() { return {} }\n\n /**\n * it builds an ui component by:\n * * creating an id for the component `cid`\n * * making sure the element is created `$el`\n * * delegating all `events` to the element\n * @method constructor\n * @param {Object} options the options object\n */\n constructor(options) {\n super(options)\n this.cid = uniqueId('c')\n this._ensureElement()\n this.delegateEvents()\n }\n\n /**\n * selects within the component.\n * @method $\n * @param {String} selector a selector to find within the component.\n * @return {HTMLElement} an element, if it exists.\n * @example\n * ```javascript\n * fullScreenBarUIComponent.$('.button-full') //will return only `.button-full` within the component\n * ```\n */\n $(selector) {\n return this.$el.find(selector)\n }\n\n /**\n * render the component, usually attach it to a real existent `element`\n * @method render\n * @return {UIObject} itself\n */\n render() {\n return this\n }\n\n /**\n * removes the ui component from DOM\n * @method remove\n * @return {UIObject} itself\n */\n remove() {\n this.$el.remove()\n this.stopListening()\n this.undelegateEvents()\n return this\n }\n\n /**\n * set element to `el` and `$el`\n * @method setElement\n * @param {HTMLElement} element\n * @param {Boolean} delegate whether is delegate or not\n * @return {UIObject} itself\n */\n setElement(element, delegate) {\n if (this.$el) this.undelegateEvents()\n this.$el = $.zepto.isZ(element) ? element : $(element)\n this.el = this.$el[0]\n if (delegate !== false) this.delegateEvents()\n return this\n }\n\n /**\n * delegates all the original `events` on `element` to its callbacks\n * @method delegateEvents\n * @param {Object} events\n * @return {UIObject} itself\n */\n delegateEvents(events) {\n if (!(events || (events = this.events))) return this\n this.undelegateEvents()\n for (const key in events) {\n let method = events[key]\n if ((method && method.constructor !== Function)) method = this[events[key]]\n if (!method) continue\n\n const match = key.match(delegateEventSplitter)\n let eventName = match[1], selector = match[2]\n eventName += '.delegateEvents' + this.cid\n if (selector === '')\n this.$el.on(eventName, method.bind(this))\n else\n this.$el.on(eventName, selector, method.bind(this))\n\n }\n return this\n }\n\n /**\n * undelegats all the `events`\n * @method undelegateEvents\n * @return {UIObject} itself\n */\n undelegateEvents() {\n this.$el.off('.delegateEvents' + this.cid)\n return this\n }\n\n /**\n * ensures the creation of this ui component\n * @method _ensureElement\n * @private\n */\n _ensureElement() {\n if (!this.el) {\n const attrs = $.extend({}, this.attributes)\n if (this.id) attrs.id = this.id\n if (this.className) attrs['class'] = this.className\n const $el = DomRecycler.create(this.tagName).attr(attrs)\n this.setElement($el, false)\n } else { this.setElement(this.el, false) }\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/ui_object.js","module.exports = void 0\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/void.js","var dP = require('./_object-dp')\n , createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function(object, key, value){\n return dP.f(object, key, createDesc(1, value));\n} : function(object, key, value){\n object[key] = value;\n return object;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_hide.js\n// module id = 24\n// module chunks = 0","var isObject = require('./_is-object');\nmodule.exports = function(it){\n if(!isObject(it))throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_an-object.js\n// module id = 25\n// module chunks = 0","module.exports = function(exec){\n try {\n return !!exec();\n } catch(e){\n return true;\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_fails.js\n// module id = 26\n// module chunks = 0","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal')\n , enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O){\n return $keys(O, enumBugKeys);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-keys.js\n// module id = 27\n// module chunks = 0","import Browser from './browser'\nexport default Browser\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/browser/index.js","module.exports = function(it){\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_is-object.js\n// module id = 29\n// module chunks = 0","module.exports = function(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_property-desc.js\n// module id = 30\n// module chunks = 0","module.exports = {};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iterators.js\n// module id = 31\n// module chunks = 0","import Log from './log'\nexport default Log\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/log/index.js","import Error from './error'\nexport default Error\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/error/index.js","import { extend } from './utils'\nimport UIObject from './ui_object'\nimport ErrorMixin from './error_mixin'\n\nexport default class UICorePlugin extends UIObject {\n get playerError() { return this.core.playerError }\n\n constructor(core) {\n super(core.options)\n this.core = core\n this.enabled = true\n this.bindEvents()\n this.render()\n }\n\n bindEvents() {}\n\n getExternalInterface() { return {} }\n\n enable() {\n if (!this.enabled) {\n this.bindEvents()\n this.$el.show()\n this.enabled = true\n }\n }\n\n disable() {\n this.stopListening()\n this.$el.hide()\n this.enabled = false\n }\n\n destroy() {\n this.remove()\n }\n\n render() {\n return this\n }\n}\n\nObject.assign(UICorePlugin.prototype, ErrorMixin)\n\nUICorePlugin.extend = function(properties) {\n return extend(UICorePlugin, properties)\n}\n\nUICorePlugin.type = 'core'\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/ui_core_plugin.js","import { extend } from './utils'\nimport BaseObject from './base_object'\nimport ErrorMixin from './error_mixin'\n\nexport default class CorePlugin extends BaseObject {\n get playerError() { return this.core.playerError }\n\n constructor(core) {\n super(core.options)\n this.core = core\n this.enabled = true\n this.bindEvents()\n }\n\n bindEvents() {}\n\n enable() {\n if (!this.enabled) {\n this.bindEvents()\n this.enabled = true\n }\n }\n\n disable() {\n if (this.enabled) {\n this.stopListening()\n this.enabled = false\n }\n }\n\n getExternalInterface() { return {} }\n\n destroy() {\n this.stopListening()\n }\n}\n\nObject.assign(CorePlugin.prototype, ErrorMixin)\n\nCorePlugin.extend = function(properties) {\n return extend(CorePlugin, properties)\n}\n\nCorePlugin.type = 'core'\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/core_plugin.js","var id = 0\n , px = Math.random();\nmodule.exports = function(key){\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_uid.js\n// module id = 36\n// module chunks = 0","exports.f = {}.propertyIsEnumerable;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-pie.js\n// module id = 37\n// module chunks = 0","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function(it){\n return Object(defined(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-object.js\n// module id = 38\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/typeof.js\n// module id = 39\n// module chunks = 0","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nclass PlayerInfo {\n constructor() {\n this.options = {}\n this.playbackPlugins = []\n this.currentSize = { width: 0, height: 0 }\n }\n}\n\nPlayerInfo._players = {}\n\nPlayerInfo.getInstance = (playerId) => {\n return PlayerInfo._players[playerId] || (PlayerInfo._players[playerId] = new PlayerInfo())\n}\n\nexport default PlayerInfo\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/player_info.js","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { extend } from './utils'\nimport UIObject from './ui_object'\nimport ErrorMixin from './error_mixin'\n\n/**\n * The base class for an ui container plugin\n * @class UIContainerPlugin\n * @constructor\n * @extends UIObject\n * @module base\n */\nexport default class UIContainerPlugin extends UIObject {\n get playerError() { return this.container.playerError }\n\n constructor(container) {\n super(container.options)\n this.container = container\n this.enabled = true\n this.bindEvents()\n }\n\n enable() {\n if (!this.enabled) {\n this.bindEvents()\n this.$el.show()\n this.enabled = true\n }\n }\n\n disable() {\n this.stopListening()\n this.$el.hide()\n this.enabled = false\n }\n\n bindEvents() {}\n\n destroy() {\n this.remove()\n }\n}\n\nObject.assign(UIContainerPlugin.prototype, ErrorMixin)\n\nUIContainerPlugin.extend = function(properties) {\n return extend(UIContainerPlugin, properties)\n}\n\nUIContainerPlugin.type = 'container'\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/ui_container_plugin.js","import BaseObject from './base_object'\nimport { extend } from './utils'\nimport ErrorMixin from './error_mixin'\n\n/**\n * The base class for a container plugin\n * @class ContainerPlugin\n * @constructor\n * @extends UIObject\n * @module base\n */\nexport default class ContainerPlugin extends BaseObject {\n get playerError() { return this.container.playerError }\n\n constructor(container) {\n super(container.options)\n this.container = container\n this.enabled = true\n this.bindEvents()\n }\n\n enable() {\n if (!this.enabled) {\n this.bindEvents()\n this.enabled = true\n }\n }\n\n disable() {\n if (this.enabled) {\n this.stopListening()\n this.enabled = false\n }\n }\n\n bindEvents() {}\n\n destroy() {\n this.stopListening()\n }\n}\n\nObject.assign(ContainerPlugin.prototype, ErrorMixin)\n\nContainerPlugin.extend = function(properties) {\n return extend(ContainerPlugin, properties)\n}\n\nContainerPlugin.type = 'container'\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/container_plugin.js","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function(fn, that, length){\n aFunction(fn);\n if(that === undefined)return fn;\n switch(length){\n case 1: return function(a){\n return fn.call(that, a);\n };\n case 2: return function(a, b){\n return fn.call(that, a, b);\n };\n case 3: return function(a, b, c){\n return fn.call(that, a, b, c);\n };\n }\n return function(/* ...args */){\n return fn.apply(that, arguments);\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_ctx.js\n// module id = 43\n// module chunks = 0","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function(it, S){\n if(!isObject(it))return it;\n var fn, val;\n if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-primitive.js\n// module id = 44\n// module chunks = 0","var toString = {}.toString;\n\nmodule.exports = function(it){\n return toString.call(it).slice(8, -1);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_cof.js\n// module id = 45\n// module chunks = 0","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function(it){\n if(it == undefined)throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_defined.js\n// module id = 46\n// module chunks = 0","// 7.1.4 ToInteger\nvar ceil = Math.ceil\n , floor = Math.floor;\nmodule.exports = function(it){\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-integer.js\n// module id = 47\n// module chunks = 0","var shared = require('./_shared')('keys')\n , uid = require('./_uid');\nmodule.exports = function(key){\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_shared-key.js\n// module id = 48\n// module chunks = 0","var global = require('./_global')\n , SHARED = '__core-js_shared__'\n , store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function(key){\n return store[key] || (store[key] = {});\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_shared.js\n// module id = 49\n// module chunks = 0","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_enum-bug-keys.js\n// module id = 50\n// module chunks = 0","exports.f = Object.getOwnPropertySymbols;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-gops.js\n// module id = 51\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/keys.js\n// module id = 52\n// module chunks = 0","module.exports = true;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_library.js\n// module id = 53\n// module chunks = 0","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object')\n , dPs = require('./_object-dps')\n , enumBugKeys = require('./_enum-bug-keys')\n , IE_PROTO = require('./_shared-key')('IE_PROTO')\n , Empty = function(){ /* empty */ }\n , PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function(){\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe')\n , i = enumBugKeys.length\n , lt = '<'\n , gt = '>'\n , iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties){\n var result;\n if(O !== null){\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty;\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-create.js\n// module id = 54\n// module chunks = 0","var def = require('./_object-dp').f\n , has = require('./_has')\n , TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function(it, tag, stat){\n if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_set-to-string-tag.js\n// module id = 55\n// module chunks = 0","exports.f = require('./_wks');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_wks-ext.js\n// module id = 56\n// module chunks = 0","var global = require('./_global')\n , core = require('./_core')\n , LIBRARY = require('./_library')\n , wksExt = require('./_wks-ext')\n , defineProperty = require('./_object-dp').f;\nmodule.exports = function(name){\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)});\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_wks-define.js\n// module id = 57\n// module chunks = 0","var pIE = require('./_object-pie')\n , createDesc = require('./_property-desc')\n , toIObject = require('./_to-iobject')\n , toPrimitive = require('./_to-primitive')\n , has = require('./_has')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P){\n O = toIObject(O);\n P = toPrimitive(P, true);\n if(IE8_DOM_DEFINE)try {\n return gOPD(O, P);\n } catch(e){ /* empty */ }\n if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-gopd.js\n// module id = 58\n// module chunks = 0","import Kibo from './kibo'\n\nexport default { Kibo }\n\n\n\n// WEBPACK FOOTER //\n// ./src/vendor/index.js","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/node-libs-browser/node_modules/process/browser.js\n// module id = 60\n// module chunks = 0","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/**\n * The mediator is a singleton for handling global events.\n */\n\nimport Events from '../base/events'\n\nconst events = new Events()\n\nexport default class Mediator {\n}\n\nMediator.on = function(name, callback, context) {\n events.on(name, callback, context)\n return\n}\n\nMediator.once = function(name, callback, context) {\n events.once(name, callback, context)\n return\n}\n\nMediator.off = function(name, callback, context) {\n events.off(name, callback, context)\n return\n}\n\nMediator.trigger = function(name, ...opts) {\n events.trigger.apply(events, [name, ...opts])\n return\n}\n\nMediator.stopListening = function(obj, name, callback) {\n events.stopListening(obj, name, callback)\n return\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/mediator.js","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><path fill=\\\"#010101\\\" d=\\\"M1.425.35L14.575 8l-13.15 7.65V.35z\\\"></path></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/icons/01-play.svg\n// module id = 62\n// module chunks = 0","import HTML5Video from './html5_video'\nexport default HTML5Video\n\n\n\n// WEBPACK FOOTER //\n// ./src/playbacks/html5_video/index.js","module.exports = !require('./_descriptors') && !require('./_fails')(function(){\n return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_ie8-dom-define.js\n// module id = 64\n// module chunks = 0","var isObject = require('./_is-object')\n , document = require('./_global').document\n // in old IE typeof document.createElement is 'object'\n , is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it){\n return is ? document.createElement(it) : {};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_dom-create.js\n// module id = 65\n// module chunks = 0","var has = require('./_has')\n , toIObject = require('./_to-iobject')\n , arrayIndexOf = require('./_array-includes')(false)\n , IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function(object, names){\n var O = toIObject(object)\n , i = 0\n , result = []\n , key;\n for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while(names.length > i)if(has(O, key = names[i++])){\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-keys-internal.js\n// module id = 66\n// module chunks = 0","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iobject.js\n// module id = 67\n// module chunks = 0","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer')\n , min = Math.min;\nmodule.exports = function(it){\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-length.js\n// module id = 68\n// module chunks = 0","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export')\n , core = require('./_core')\n , fails = require('./_fails');\nmodule.exports = function(KEY, exec){\n var fn = (core.Object || {})[KEY] || Object[KEY]\n , exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-sap.js\n// module id = 69\n// module chunks = 0","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function(iterated){\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function(){\n var O = this._t\n , index = this._i\n , point;\n if(index >= O.length)return {value: undefined, done: true};\n point = $at(O, index);\n this._i += point.length;\n return {value: point, done: false};\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.string.iterator.js\n// module id = 70\n// module chunks = 0","'use strict';\nvar LIBRARY = require('./_library')\n , $export = require('./_export')\n , redefine = require('./_redefine')\n , hide = require('./_hide')\n , has = require('./_has')\n , Iterators = require('./_iterators')\n , $iterCreate = require('./_iter-create')\n , setToStringTag = require('./_set-to-string-tag')\n , getPrototypeOf = require('./_object-gpo')\n , ITERATOR = require('./_wks')('iterator')\n , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`\n , FF_ITERATOR = '@@iterator'\n , KEYS = 'keys'\n , VALUES = 'values';\n\nvar returnThis = function(){ return this; };\n\nmodule.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){\n $iterCreate(Constructor, NAME, next);\n var getMethod = function(kind){\n if(!BUGGY && kind in proto)return proto[kind];\n switch(kind){\n case KEYS: return function keys(){ return new Constructor(this, kind); };\n case VALUES: return function values(){ return new Constructor(this, kind); };\n } return function entries(){ return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator'\n , DEF_VALUES = DEFAULT == VALUES\n , VALUES_BUG = false\n , proto = Base.prototype\n , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]\n , $default = $native || getMethod(DEFAULT)\n , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined\n , $anyNative = NAME == 'Array' ? proto.entries || $native : $native\n , methods, key, IteratorPrototype;\n // Fix native\n if($anyNative){\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base));\n if(IteratorPrototype !== Object.prototype){\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if(DEF_VALUES && $native && $native.name !== VALUES){\n VALUES_BUG = true;\n $default = function values(){ return $native.call(this); };\n }\n // Define iterator\n if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if(DEFAULT){\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if(FORCED)for(key in methods){\n if(!(key in proto))redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iter-define.js\n// module id = 71\n// module chunks = 0","module.exports = require('./_hide');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_redefine.js\n// module id = 72\n// module chunks = 0","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal')\n , hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){\n return $keys(O, hiddenKeys);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-gopn.js\n// module id = 73\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/define-property.js\n// module id = 74\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/create.js\n// module id = 75\n// module chunks = 0","import Core from './core'\nexport default Core\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/core/index.js","import Container from './container'\nexport default Container\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/container/index.js","import Events from '../../base/events'\nimport BaseObject from '../../base/base_object'\nimport Log from '../../plugins/log'\n\n/**\n * The PlayerError is responsible to receive and propagate errors.\n * @class PlayerError\n * @constructor\n * @extends BaseObject\n * @module components\n */\nclass PlayerError extends BaseObject {\n get name() { return 'error' }\n\n /**\n * @property Levels\n * @type {Object} object with error levels\n */\n static get Levels() {\n return {\n FATAL: 'FATAL',\n WARN: 'WARN',\n INFO: 'INFO',\n }\n }\n\n constructor(options={}, core) {\n super(options)\n this.core = core\n }\n\n /**\n * creates and trigger an error.\n * @method createError\n * @param {Object} err should be an object with code, description, level, origin, scope and raw error.\n */\n createError(err) {\n if (!this.core) {\n Log.warn(this.name, 'Core is not set. Error: ', err)\n return\n }\n this.core.trigger(Events.ERROR, err)\n }\n}\n\nexport default PlayerError\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/error/error.js","import MediaControl from './media_control'\nexport default MediaControl\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/media_control/index.js","module.exports = function escape(url) {\n if (typeof url !== 'string') {\n return url\n }\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]/.test(url)) {\n return '\"' + url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n') + '\"'\n }\n\n return url\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader/lib/url/escape.js\n// module id = 80\n// module chunks = 0","module.exports = \"<%=baseUrl%>/a8c874b93b3d848f39a71260c57e3863.cur\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/media_control/public/closed-hand.cur\n// module id = 81\n// module chunks = 0","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#010101\\\" d=\\\"M1.712 14.76H6.43V1.24H1.71v13.52zm7.86-13.52v13.52h4.716V1.24H9.573z\\\"></path></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/icons/02-pause.svg\n// module id = 82\n// module chunks = 0","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport $ from 'clappr-zepto'\nimport template from './template'\n\nconst Styler = {\n getStyleFor: function(style, options={ baseUrl: '' }) {\n return $('<style class=\"clappr-style\"></style>').html(template(style.toString())(options))\n }\n}\n\nexport default Styler\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/styler.js","import Loader from './loader'\nexport default Loader\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/loader/index.js","\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/helpers/toConsumableArray.js\n// module id = 85\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/array/from.js\n// module id = 86\n// module chunks = 0","import HTML5Audio from './html5_audio'\nexport default HTML5Audio\n\n\n\n// WEBPACK FOOTER //\n// ./src/playbacks/html5_audio/index.js","import HTMLImg from './html_img'\nexport default HTMLImg\n\n\n\n// WEBPACK FOOTER //\n// ./src/playbacks/html_img/index.js","import NoOp from './no_op'\nexport default NoOp\n\n\n\n// WEBPACK FOOTER //\n// ./src/playbacks/no_op/index.js","import SpinnerThreeBouncePlugin from './spinner_three_bounce'\nexport default SpinnerThreeBouncePlugin\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/spinner_three_bounce/index.js","import WaterMarkPlugin from './watermark'\nexport default WaterMarkPlugin\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/watermark/index.js","import PosterPlugin from './poster'\nexport default PosterPlugin\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/poster/index.js","import ClickToPausePlugin from './click_to_pause'\nexport default ClickToPausePlugin\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/click_to_pause/index.js","import DVRControls from './dvr_controls'\nexport default DVRControls\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/dvr_controls/index.js","import Favicon from './favicon.js'\nexport default Favicon\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/favicon/index.js","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport Player from './components/player'\nimport Utils from './base/utils'\nimport Events from './base/events'\nimport Playback from './base/playback'\nimport ContainerPlugin from './base/container_plugin'\nimport CorePlugin from './base/core_plugin'\nimport UICorePlugin from './base/ui_core_plugin'\nimport UIContainerPlugin from './base/ui_container_plugin'\nimport BaseObject from './base/base_object'\nimport UIObject from './base/ui_object'\nimport Browser from './components/browser'\nimport Container from './components/container'\nimport Core from './components/core'\nimport PlayerError from './components/error'\nimport Loader from './components/loader'\nimport Mediator from './components/mediator'\nimport MediaControl from './components/media_control'\nimport PlayerInfo from './components/player_info'\nimport BaseFlashPlayback from './playbacks/base_flash_playback'\nimport Flash from './playbacks/flash'\nimport FlasHLS from './playbacks/flashls'\nimport HLS from './playbacks/hls'\nimport HTML5Audio from './playbacks/html5_audio'\nimport HTML5Video from './playbacks/html5_video'\nimport HTMLImg from './playbacks/html_img'\nimport NoOp from './playbacks/no_op'\nimport ClickToPausePlugin from './plugins/click_to_pause'\nimport DVRControls from './plugins/dvr_controls'\nimport Favicon from './plugins/favicon'\nimport Log from './plugins/log'\nimport Poster from './plugins/poster'\nimport SpinnerThreeBouncePlugin from './plugins/spinner_three_bounce'\nimport WaterMarkPlugin from './plugins/watermark'\nimport Styler from './base/styler'\nimport Vendor from './vendor'\nimport template from './base/template'\n\nimport $ from 'clappr-zepto'\n\nconst version = VERSION\n\nexport default {\n Player,\n Mediator,\n Events,\n Browser,\n PlayerInfo,\n MediaControl,\n ContainerPlugin,\n UIContainerPlugin,\n CorePlugin,\n UICorePlugin,\n Playback,\n Container,\n Core,\n PlayerError,\n Loader,\n BaseObject,\n UIObject,\n Utils,\n BaseFlashPlayback,\n Flash,\n FlasHLS,\n HLS,\n HTML5Audio,\n HTML5Video,\n HTMLImg,\n NoOp,\n ClickToPausePlugin,\n DVRControls,\n Favicon,\n Log,\n Poster,\n SpinnerThreeBouncePlugin,\n WaterMarkPlugin,\n Styler,\n Vendor,\n version,\n template,\n $\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { uniqueId, currentScriptUrl } from '../base/utils'\n\nimport BaseObject from '../base/base_object'\nimport Events from '../base/events'\nimport Browser from './browser'\nimport CoreFactory from './core_factory'\nimport Loader from './loader'\nimport PlayerInfo from './player_info'\nimport ErrorMixin from '../base/error_mixin'\nimport $ from 'clappr-zepto'\n\nconst baseUrl = currentScriptUrl().replace(/\\/[^/]+$/, '')\n\n/**\n * @class Player\n * @constructor\n * @extends BaseObject\n * @module components\n * @example\n * ### Using the Player\n *\n * Add the following script on your HTML:\n * ```html\n * <head>\n * <script type=\"text/javascript\" src=\"http://cdn.clappr.io/latest/clappr.min.js\"></script>\n * </head>\n * ```\n * Now, create the player:\n * ```html\n * <body>\n * <div id=\"player\"></div>\n * <script>\n * var player = new Clappr.Player({source: \"http://your.video/here.mp4\", parentId: \"#player\"});\n * </script>\n * </body>\n * ```\n */\nexport default class Player extends BaseObject {\n\n set loader(loader) { this._loader = loader }\n get loader() {\n if (!this._loader)\n this._loader = new Loader(this.options.plugins || {}, this.options.playerId)\n\n return this._loader\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n get ended() {\n return this.core.mediaControl.container.ended\n }\n\n /**\n * Determine if the playback is having to buffer in order for\n * playback to be smooth.\n * (i.e if a live stream is playing smoothly, this will be false)\n * @property buffering\n * @type Boolean\n */\n get buffering() {\n return this.core.mediaControl.container.buffering\n }\n\n /*\n * determine if the player is ready.\n * @property isReady\n * @type {Boolean} `true` if the player is ready. ie PLAYER_READY event has fired\n */\n get isReady() {\n return !!this._ready\n }\n\n /**\n * An events map that allows the user to add custom callbacks in player's options.\n * @property eventsMapping\n * @type {Object}\n */\n get eventsMapping() {\n return {\n onReady: Events.PLAYER_READY,\n onResize: Events.PLAYER_RESIZE,\n onPlay: Events.PLAYER_PLAY,\n onPause: Events.PLAYER_PAUSE,\n onStop: Events.PLAYER_STOP,\n onEnded: Events.PLAYER_ENDED,\n onSeek: Events.PLAYER_SEEK,\n onError: Events.PLAYER_ERROR,\n onTimeUpdate: Events.PLAYER_TIMEUPDATE,\n onVolumeUpdate: Events.PLAYER_VOLUMEUPDATE,\n onSubtitleAvailable: Events.PLAYER_SUBTITLE_AVAILABLE\n }\n }\n\n /**\n * @typedef {Object} PlaybackConfig\n * @prop {boolean} disableContextMenu\n * disables the context menu (right click) on the video element if a HTML5Video playback is used.\n * @prop {boolean} preload\n * video will be preloaded according to `preload` attribute options **default**: `'metadata'`\n * @prop {boolean} controls\n * enabled/disables displaying controls\n * @prop {boolean} crossOrigin\n * enables cross-origin capability for media-resources\n * @prop {boolean} playInline\n * enables in-line video elements\n * @prop {boolean} audioOnly\n * enforce audio-only playback (when possible)\n * @prop {Object} externalTracks\n * pass externaly loaded track to playback\n * @prop {Number} [maxBufferLength]\n * The default behavior for the **HLS playback** is to keep buffering indefinitely, even on VoD.\n * This replicates the behavior for progressive download, which continues buffering when pausing the video, thus making the video available for playback even on slow networks.\n * To change this behavior use `maxBufferLength` where **value is in seconds**.\n * @prop {Number} [maxBackBufferLength]\n * After how much distance of the playhead data should be pruned from the buffer (influences memory consumption\n * of adaptive media-engines like Hls.js or Shaka)\n * @prop {Number} [minBufferLength]\n * After how much data in the buffer at least we attempt to consume it (influences QoS-related behavior\n * of adaptive media-engines like Hls.js or Shaka). If this is too low, and the available bandwidth is varying a lot\n * and too close to the streamed bitrate, we may continuously hit under-runs.\n * @prop {Number} [initialBandwidthEstimate]\n * define an initial bandwidth \"guess\" (or previously stored/established value) for underlying adaptive-bitreate engines\n * of adaptive playback implementations, like Hls.js or Shaka\n * @prop {Number} [maxAdaptiveBitrate]\n * Limits the streamed bitrate (for adaptive media-engines in underlying playback implementations)\n * @prop {Object} [maxAdaptiveVideoDimensions]\n * Limits the video dimensions in adaptive media-engines. Should be a literal object with `height` and `width`.\n * @prop {Boolean}[enableAutomaticABR] **default**: `true`\n * Allows to enable/disable automatic bitrate switching in adaptive media-engines\n * @prop {String} [preferredTextLanguage] **default**: `'pt-BR'`\n * Allows to set a preferred text language, that may be enabled by the media-engine if available.\n * @prop {String} [preferredAudioLanguage] **default**: `'pt-BR'`\n * Allows to set a preferred audio language, that may be enabled by the media-engine if available.\n */\n\n /**\n * ## Player's constructor\n *\n * You might pass the options object to build the player.\n * ```javascript\n * var options = {source: \"http://example.com/video.mp4\", param1: \"val1\"};\n * var player = new Clappr.Player(options);\n * ```\n *\n * @method constructor\n * @param {Object} options Data\n * options to build a player instance\n * @param {Number} [options.width]\n * player's width **default**: `640`\n * @param {Number} [options.height]\n * player's height **default**: `360`\n * @param {String} [options.parentId]\n * the id of the element on the page that the player should be inserted into\n * @param {Object} [options.parent]\n * a reference to a dom element that the player should be inserted into\n * @param {String} [options.source]\n * The media source URL, or {source: <<source URL>>, mimeType: <<source mime type>>}\n * @param {Object} [options.sources]\n * An array of media source URL's, or an array of {source: <<source URL>>, mimeType: <<source mime type>>}\n * @param {Boolean} [options.autoPlay]\n * automatically play after page load **default**: `false`\n * @param {Boolean} [options.loop]\n * automatically replay after it ends **default**: `false`\n * @param {Boolean} [options.chromeless]\n * player acts in chromeless mode **default**: `false`\n * @param {Boolean} [options.allowUserInteraction]\n * whether or not the player should handle click events when in chromeless mode **default**: `false` on desktops browsers, `true` on mobile.\n * @param {Boolean} [options.disableKeyboardShortcuts]\n * disable keyboard shortcuts. **default**: `false`. `true` if `allowUserInteraction` is `false`.\n * @param {Boolean} [options.mute]\n * start the video muted **default**: `false`\n * @param {String} [options.mimeType]\n * add `mimeType: \"application/vnd.apple.mpegurl\"` if you need to use a url without extension.\n * @param {Boolean} [options.actualLiveTime]\n * show duration and seek time relative to actual time.\n * @param {String} [options.actualLiveServerTime]\n * specify server time as a string, format: \"2015/11/26 06:01:03\". This option is meant to be used with actualLiveTime.\n * @param {Boolean} [options.persistConfig]\n * persist player's settings (volume) through the same domain **default**: `true`\n * @param {String} [options.preload] @deprecated\n * video will be preloaded according to `preload` attribute options **default**: `'metadata'`\n * @param {Number} [options.maxBufferLength] @deprecated\n * the default behavior for the **HLS playback** is to keep buffering indefinitely, even on VoD.\n * This replicates the behavior for progressive download, which continues buffering when pausing the video, thus making the video available for playback even on slow networks.\n * To change this behavior use `maxBufferLength` where **value is in seconds**.\n * @param {String} [options.gaAccount]\n * enable Google Analytics events dispatch **(play/pause/stop/buffering/etc)** by adding your `gaAccount`\n * @param {String} [options.gaTrackerName]\n * besides `gaAccount` you can optionally, pass your favorite trackerName as `gaTrackerName`\n * @param {Object} [options.mediacontrol]\n * customize control bar colors, example: `mediacontrol: {seekbar: \"#E113D3\", buttons: \"#66B2FF\"}`\n * @param {Boolean} [options.hideMediaControl]\n * control media control auto hide **default**: `true`\n * @param {Boolean} [options.hideVolumeBar]\n * when embedded with width less than 320, volume bar will hide. You can force this behavior for all sizes by adding `true` **default**: `false`\n * @param {String} [options.watermark]\n * put `watermark: 'http://url/img.png'` on your embed parameters to automatically add watermark on your video.\n * You can customize corner position by defining position parameter. Positions can be `bottom-left`, `bottom-right`, `top-left` and `top-right`.\n * @param {String} [options.watermarkLink]\n * `watermarkLink: 'http://example.net/'` - define URL to open when the watermark is clicked. If not provided watermark will not be clickable.\n * @param {Boolean} [options.disableVideoTagContextMenu] @deprecated\n * disables the context menu (right click) on the video element if a HTML5Video playback is used.\n * @param {Boolean} [options.autoSeekFromUrl]\n * Automatically seek to the seconds provided in the url (e.g example.com?t=100) **default**: `true`\n * @param {Boolean} [options.exitFullscreenOnEnd]\n * Automatically exit full screen when the media finishes. **default**: `true`\n * @param {String} [options.poster]\n * define a poster by adding its address `poster: 'http://url/img.png'`. It will appear after video embed, disappear on play and go back when user stops the video.\n * @param {String} [options.playbackNotSupportedMessage]\n * define a custom message to be displayed when a playback is not supported.\n * @param {Object} [options.events]\n * Specify listeners which will be registered with their corresponding player events.\n * E.g. onReady -> \"PLAYER_READY\", onTimeUpdate -> \"PLAYER_TIMEUPDATE\"\n * @param {PlaybackConfig} [options.playback]\n * Generic `Playback` component related configuration\n * @param {Boolean} [options.disableErrorScreen]\n * disables the error screen plugin.\n * @param {Number} [options.autoPlayTimeout]\n * autoplay check timeout.\n */\n\n constructor(options) {\n super(options)\n const defaultOptions = { playerId: uniqueId(''), persistConfig: true, width: 640, height: 360, baseUrl: baseUrl, allowUserInteraction: Browser.isMobile }\n this._options = $.extend(defaultOptions, options)\n this.options.sources = this._normalizeSources(options)\n if (!this.options.chromeless) {\n // \"allowUserInteraction\" cannot be false if not in chromeless mode.\n this.options.allowUserInteraction = true\n }\n if (!this.options.allowUserInteraction) {\n // if user iteraction is not allowed ensure keyboard shortcuts are disabled\n this.options.disableKeyboardShortcuts = true\n }\n this._registerOptionEventListeners(this.options.events)\n this._coreFactory = new CoreFactory(this)\n this.playerInfo = PlayerInfo.getInstance(this.options.playerId)\n this.playerInfo.currentSize = { width: options.width, height: options.height }\n this.playerInfo.options = this.options\n if (this.options.parentId)\n this.setParentId(this.options.parentId)\n\n else if (this.options.parent)\n this.attachTo(this.options.parent)\n\n }\n\n /**\n * Specify a `parentId` to the player.\n * @method setParentId\n * @param {String} parentId the element parent id.\n * @return {Player} itself\n */\n setParentId(parentId) {\n const el = document.querySelector(parentId)\n if (el)\n this.attachTo(el)\n\n return this\n }\n\n /**\n * You can use this method to attach the player to a given element. You don't need to do this when you specify it during the player instantiation passing the `parentId` param.\n * @method attachTo\n * @param {Object} element a given element.\n * @return {Player} itself\n */\n attachTo(element) {\n this.options.parentElement = element\n this.core = this._coreFactory.create()\n this._addEventListeners()\n return this\n }\n\n _addEventListeners() {\n if (!this.core.isReady)\n this.listenToOnce(this.core, Events.CORE_READY, this._onReady)\n else\n this._onReady()\n\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this._containerChanged)\n this.listenTo(this.core, Events.CORE_FULLSCREEN, this._onFullscreenChange)\n this.listenTo(this.core, Events.CORE_RESIZE, this._onResize)\n return this\n }\n\n _addContainerEventListeners() {\n const container = this.core.mediaControl.container\n if (container) {\n this.listenTo(container, Events.CONTAINER_PLAY, this._onPlay)\n this.listenTo(container, Events.CONTAINER_PAUSE, this._onPause)\n this.listenTo(container, Events.CONTAINER_STOP, this._onStop)\n this.listenTo(container, Events.CONTAINER_ENDED, this._onEnded)\n this.listenTo(container, Events.CONTAINER_SEEK, this._onSeek)\n this.listenTo(container, Events.CONTAINER_ERROR, this._onError)\n this.listenTo(container, Events.CONTAINER_TIMEUPDATE, this._onTimeUpdate)\n this.listenTo(container, Events.CONTAINER_VOLUME, this._onVolumeUpdate)\n this.listenTo(container, Events.CONTAINER_SUBTITLE_AVAILABLE, this._onSubtitleAvailable)\n }\n return this\n }\n\n _registerOptionEventListeners(newEvents = {}, events = {}) {\n const hasNewEvents = Object.keys(newEvents).length > 0\n hasNewEvents && Object.keys(events).forEach((userEvent) => {\n const eventType = this.eventsMapping[userEvent]\n eventType && this.off(eventType, events[userEvent])\n })\n\n Object.keys(newEvents).forEach((userEvent) => {\n const eventType = this.eventsMapping[userEvent]\n if (eventType) {\n let eventFunction = newEvents[userEvent]\n eventFunction = typeof eventFunction === 'function' && eventFunction\n eventFunction && this.on(eventType, eventFunction)\n }\n })\n return this\n }\n\n _containerChanged() {\n this.stopListening()\n this._addEventListeners()\n }\n\n _onReady() {\n this._ready = true\n this._addContainerEventListeners()\n this.trigger(Events.PLAYER_READY)\n }\n\n _onFullscreenChange(fullscreen) {\n this.trigger(Events.PLAYER_FULLSCREEN, fullscreen)\n }\n\n _onVolumeUpdate(volume) {\n this.trigger(Events.PLAYER_VOLUMEUPDATE, volume)\n }\n\n _onSubtitleAvailable() {\n this.trigger(Events.PLAYER_SUBTITLE_AVAILABLE)\n }\n\n _onResize(size) {\n this.trigger(Events.PLAYER_RESIZE, size)\n }\n\n _onPlay() {\n this.trigger(Events.PLAYER_PLAY)\n }\n\n _onPause() {\n this.trigger(Events.PLAYER_PAUSE)\n }\n\n _onStop() {\n this.trigger(Events.PLAYER_STOP, this.getCurrentTime())\n }\n\n _onEnded() {\n this.trigger(Events.PLAYER_ENDED)\n }\n\n _onSeek(time) {\n this.trigger(Events.PLAYER_SEEK, time)\n }\n\n _onTimeUpdate(timeProgress) {\n this.trigger(Events.PLAYER_TIMEUPDATE, timeProgress)\n }\n\n _onError(error) {\n this.trigger(Events.PLAYER_ERROR, error)\n }\n\n _normalizeSources(options) {\n const sources = options.sources || (options.source !== undefined? [options.source] : [])\n return sources.length === 0 ? [{ source:'', mimeType:'' }] : sources\n }\n\n /**\n * resizes the current player canvas.\n * @method resize\n * @param {Object} size should be a literal object with `height` and `width`.\n * @return {Player} itself\n * @example\n * ```javascript\n * player.resize({height: 360, width: 640})\n * ```\n */\n resize(size) {\n this.core.resize(size)\n return this\n }\n\n /**\n * loads a new source.\n * @method load\n * @param {Array|String} sources source or sources of video.\n * An array item can be a string or {source: <<source URL>>, mimeType: <<source mime type>>}\n * @param {String} mimeType a mime type, example: `'application/vnd.apple.mpegurl'`\n * @param {Boolean} [autoPlay=false] whether playing should be started immediately\n * @return {Player} itself\n */\n load(sources, mimeType, autoPlay) {\n if (autoPlay !== undefined)\n this.configure({ autoPlay: !!autoPlay })\n\n this.core.load(sources, mimeType)\n return this\n }\n\n /**\n * destroys the current player and removes it from the DOM.\n * @method destroy\n * @return {Player} itself\n */\n destroy() {\n this.stopListening()\n this.core.destroy()\n return this\n }\n\n /**\n * Gives user consent to playback. Required by mobile device after a click event before Player.load().\n * @method consent\n * @return {Player} itself\n */\n consent() {\n this.core.getCurrentPlayback().consent()\n return this\n }\n\n /**\n * plays the current video (`source`).\n * @method play\n * @return {Player} itself\n */\n play() {\n this.core.mediaControl.container.play()\n return this\n }\n\n /**\n * pauses the current video (`source`).\n * @method pause\n * @return {Player} itself\n */\n pause() {\n this.core.mediaControl.container.pause()\n return this\n }\n\n /**\n * stops the current video (`source`).\n * @method stop\n * @return {Player} itself\n */\n stop() {\n this.core.mediaControl.container.stop()\n return this\n }\n\n\n /**\n * seeks the current video (`source`). For example, `player.seek(120)` will seek to second 120 (2minutes) of the current video.\n * @method seek\n * @param {Number} time should be a number between 0 and the video duration.\n * @return {Player} itself\n */\n seek(time) {\n this.core.mediaControl.container.seek(time)\n return this\n }\n\n /**\n * seeks the current video (`source`). For example, `player.seek(50)` will seek to the middle of the current video.\n * @method seekPercentage\n * @param {Number} time should be a number between 0 and 100.\n * @return {Player} itself\n */\n seekPercentage(percentage) {\n this.core.mediaControl.container.seekPercentage(percentage)\n return this\n }\n\n /**\n * Set the volume for the current video (`source`).\n * @method setVolume\n * @param {Number} volume should be a number between 0 and 100, 0 being mute and 100 the max volume.\n * @return {Player} itself\n */\n setVolume(volume) {\n if (this.core && this.core.mediaControl)\n this.core.mediaControl.setVolume(volume)\n\n return this\n }\n\n /**\n * Get the volume for the current video\n * @method getVolume\n * @return {Number} volume should be a number between 0 and 100, 0 being mute and 100 the max volume.\n */\n getVolume() {\n return this.core && this.core.mediaControl ? this.core.mediaControl.volume : 0\n }\n\n /**\n * mutes the current video (`source`).\n * @method mute\n * @return {Player} itself\n */\n mute() {\n this._mutedVolume = this.getVolume()\n this.setVolume(0)\n return this\n }\n\n /**\n * unmutes the current video (`source`).\n * @method unmute\n * @return {Player} itself\n */\n unmute() {\n this.setVolume(typeof this._mutedVolume === 'number' ? this._mutedVolume : 100)\n this._mutedVolume = null\n return this\n }\n\n /**\n * checks if the player is playing.\n * @method isPlaying\n * @return {Boolean} `true` if the current source is playing, otherwise `false`\n */\n isPlaying() {\n return this.core.mediaControl.container.isPlaying()\n }\n\n /**\n * returns `true` if DVR is enable otherwise `false`.\n * @method isDvrEnabled\n * @return {Boolean}\n */\n isDvrEnabled() {\n return this.core.mediaControl.container.isDvrEnabled()\n }\n\n /**\n * returns `true` if DVR is in use otherwise `false`.\n * @method isDvrInUse\n * @return {Boolean}\n */\n isDvrInUse() {\n return this.core.mediaControl.container.isDvrInUse()\n }\n\n /**\n * enables to configure a player after its creation\n * @method configure\n * @param {Object} options all the options to change in form of a javascript object\n * @return {Player} itself\n */\n configure(options = {}) {\n this._registerOptionEventListeners(options.events, this.options.events)\n this.core.configure(options)\n return this\n }\n\n /**\n * get a plugin by its name.\n * @method getPlugin\n * @param {String} name of the plugin.\n * @return {Object} the plugin instance\n * @example\n * ```javascript\n * var poster = player.getPlugin('poster');\n * poster.hidePlayButton();\n * ```\n */\n getPlugin(name) {\n const plugins = this.core.plugins.concat(this.core.mediaControl.container.plugins)\n return plugins.filter(plugin => plugin.name === name)[0]\n }\n\n /**\n * the current time in seconds.\n * @method getCurrentTime\n * @return {Number} current time (in seconds) of the current source\n */\n getCurrentTime() {\n return this.core.mediaControl.container.getCurrentTime()\n }\n\n /**\n * The time that \"0\" now represents relative to when playback started.\n * For a stream with a sliding window this will increase as content is\n * removed from the beginning.\n * @method getStartTimeOffset\n * @return {Number} time (in seconds) that time \"0\" represents.\n */\n getStartTimeOffset() {\n return this.core.mediaControl.container.getStartTimeOffset()\n }\n\n /**\n * the duration time in seconds.\n * @method getDuration\n * @return {Number} duration time (in seconds) of the current source\n */\n getDuration() {\n return this.core.mediaControl.container.getDuration()\n }\n}\n\nObject.assign(Player.prototype, ErrorMixin)\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/player.js","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/assign.js\n// module id = 98\n// module chunks = 0","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', {assign: require('./_object-assign')});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.assign.js\n// module id = 99\n// module chunks = 0","module.exports = function(it){\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_a-function.js\n// module id = 100\n// module chunks = 0","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys')\n , gOPS = require('./_object-gops')\n , pIE = require('./_object-pie')\n , toObject = require('./_to-object')\n , IObject = require('./_iobject')\n , $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function(){\n var A = {}\n , B = {}\n , S = Symbol()\n , K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function(k){ B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source){ // eslint-disable-line no-unused-vars\n var T = toObject(target)\n , aLen = arguments.length\n , index = 1\n , getSymbols = gOPS.f\n , isEnum = pIE.f;\n while(aLen > index){\n var S = IObject(arguments[index++])\n , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)\n , length = keys.length\n , j = 0\n , key;\n while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];\n } return T;\n} : $assign;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-assign.js\n// module id = 101\n// module chunks = 0","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject')\n , toLength = require('./_to-length')\n , toIndex = require('./_to-index');\nmodule.exports = function(IS_INCLUDES){\n return function($this, el, fromIndex){\n var O = toIObject($this)\n , length = toLength(O.length)\n , index = toIndex(fromIndex, length)\n , value;\n // Array#includes uses SameValueZero equality algorithm\n if(IS_INCLUDES && el != el)while(length > index){\n value = O[index++];\n if(value != value)return true;\n // Array#toIndex ignores holes, Array#includes - not\n } else for(;length > index; index++)if(IS_INCLUDES || index in O){\n if(O[index] === el)return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_array-includes.js\n// module id = 102\n// module chunks = 0","var toInteger = require('./_to-integer')\n , max = Math.max\n , min = Math.min;\nmodule.exports = function(index, length){\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-index.js\n// module id = 103\n// module chunks = 0","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/keys.js\n// module id = 104\n// module chunks = 0","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object')\n , $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function(){\n return function keys(it){\n return $keys(toObject(it));\n };\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.keys.js\n// module id = 105\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/symbol/iterator.js\n// module id = 106\n// module chunks = 0","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/symbol/iterator.js\n// module id = 107\n// module chunks = 0","var toInteger = require('./_to-integer')\n , defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function(TO_STRING){\n return function(that, pos){\n var s = String(defined(that))\n , i = toInteger(pos)\n , l = s.length\n , a, b;\n if(i < 0 || i >= l)return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_string-at.js\n// module id = 108\n// module chunks = 0","'use strict';\nvar create = require('./_object-create')\n , descriptor = require('./_property-desc')\n , setToStringTag = require('./_set-to-string-tag')\n , IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function(){ return this; });\n\nmodule.exports = function(Constructor, NAME, next){\n Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iter-create.js\n// module id = 109\n// module chunks = 0","var dP = require('./_object-dp')\n , anObject = require('./_an-object')\n , getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties){\n anObject(O);\n var keys = getKeys(Properties)\n , length = keys.length\n , i = 0\n , P;\n while(length > i)dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-dps.js\n// module id = 110\n// module chunks = 0","module.exports = require('./_global').document && document.documentElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_html.js\n// module id = 111\n// module chunks = 0","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has')\n , toObject = require('./_to-object')\n , IE_PROTO = require('./_shared-key')('IE_PROTO')\n , ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function(O){\n O = toObject(O);\n if(has(O, IE_PROTO))return O[IE_PROTO];\n if(typeof O.constructor == 'function' && O instanceof O.constructor){\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-gpo.js\n// module id = 112\n// module chunks = 0","require('./es6.array.iterator');\nvar global = require('./_global')\n , hide = require('./_hide')\n , Iterators = require('./_iterators')\n , TO_STRING_TAG = require('./_wks')('toStringTag');\n\nfor(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){\n var NAME = collections[i]\n , Collection = global[NAME]\n , proto = Collection && Collection.prototype;\n if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/web.dom.iterable.js\n// module id = 113\n// module chunks = 0","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables')\n , step = require('./_iter-step')\n , Iterators = require('./_iterators')\n , toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function(iterated, kind){\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function(){\n var O = this._t\n , kind = this._k\n , index = this._i++;\n if(!O || index >= O.length){\n this._t = undefined;\n return step(1);\n }\n if(kind == 'keys' )return step(0, index);\n if(kind == 'values')return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.array.iterator.js\n// module id = 114\n// module chunks = 0","module.exports = function(){ /* empty */ };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_add-to-unscopables.js\n// module id = 115\n// module chunks = 0","module.exports = function(done, value){\n return {value: value, done: !!done};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iter-step.js\n// module id = 116\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/symbol.js\n// module id = 117\n// module chunks = 0","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/symbol/index.js\n// module id = 118\n// module chunks = 0","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global')\n , has = require('./_has')\n , DESCRIPTORS = require('./_descriptors')\n , $export = require('./_export')\n , redefine = require('./_redefine')\n , META = require('./_meta').KEY\n , $fails = require('./_fails')\n , shared = require('./_shared')\n , setToStringTag = require('./_set-to-string-tag')\n , uid = require('./_uid')\n , wks = require('./_wks')\n , wksExt = require('./_wks-ext')\n , wksDefine = require('./_wks-define')\n , keyOf = require('./_keyof')\n , enumKeys = require('./_enum-keys')\n , isArray = require('./_is-array')\n , anObject = require('./_an-object')\n , toIObject = require('./_to-iobject')\n , toPrimitive = require('./_to-primitive')\n , createDesc = require('./_property-desc')\n , _create = require('./_object-create')\n , gOPNExt = require('./_object-gopn-ext')\n , $GOPD = require('./_object-gopd')\n , $DP = require('./_object-dp')\n , $keys = require('./_object-keys')\n , gOPD = $GOPD.f\n , dP = $DP.f\n , gOPN = gOPNExt.f\n , $Symbol = global.Symbol\n , $JSON = global.JSON\n , _stringify = $JSON && $JSON.stringify\n , PROTOTYPE = 'prototype'\n , HIDDEN = wks('_hidden')\n , TO_PRIMITIVE = wks('toPrimitive')\n , isEnum = {}.propertyIsEnumerable\n , SymbolRegistry = shared('symbol-registry')\n , AllSymbols = shared('symbols')\n , OPSymbols = shared('op-symbols')\n , ObjectProto = Object[PROTOTYPE]\n , USE_NATIVE = typeof $Symbol == 'function'\n , QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function(){\n return _create(dP({}, 'a', {\n get: function(){ return dP(this, 'a', {value: 7}).a; }\n })).a != 7;\n}) ? function(it, key, D){\n var protoDesc = gOPD(ObjectProto, key);\n if(protoDesc)delete ObjectProto[key];\n dP(it, key, D);\n if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function(tag){\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){\n return typeof it == 'symbol';\n} : function(it){\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D){\n if(it === ObjectProto)$defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if(has(AllSymbols, key)){\n if(!D.enumerable){\n if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;\n D = _create(D, {enumerable: createDesc(0, false)});\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P){\n anObject(it);\n var keys = enumKeys(P = toIObject(P))\n , i = 0\n , l = keys.length\n , key;\n while(l > i)$defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P){\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key){\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){\n it = toIObject(it);\n key = toPrimitive(key, true);\n if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return;\n var D = gOPD(it, key);\n if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it){\n var names = gOPN(toIObject(it))\n , result = []\n , i = 0\n , key;\n while(names.length > i){\n if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it){\n var IS_OP = it === ObjectProto\n , names = gOPN(IS_OP ? OPSymbols : toIObject(it))\n , result = []\n , i = 0\n , key;\n while(names.length > i){\n if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif(!USE_NATIVE){\n $Symbol = function Symbol(){\n if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function(value){\n if(this === ObjectProto)$set.call(OPSymbols, value);\n if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set});\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString(){\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if(DESCRIPTORS && !require('./_library')){\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function(name){\n return wrap(wks(name));\n }\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});\n\nfor(var symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), i = 0; symbols.length > i; )wks(symbols[i++]);\n\nfor(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function(key){\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(key){\n if(isSymbol(key))return keyOf(SymbolRegistry, key);\n throw TypeError(key + ' is not a symbol!');\n },\n useSetter: function(){ setter = true; },\n useSimple: function(){ setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it){\n if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined\n var args = [it]\n , i = 1\n , replacer, $replacer;\n while(arguments.length > i)args.push(arguments[i++]);\n replacer = args[1];\n if(typeof replacer == 'function')$replacer = replacer;\n if($replacer || !isArray(replacer))replacer = function(key, value){\n if($replacer)value = $replacer.call(this, key, value);\n if(!isSymbol(value))return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.symbol.js\n// module id = 119\n// module chunks = 0","var META = require('./_uid')('meta')\n , isObject = require('./_is-object')\n , has = require('./_has')\n , setDesc = require('./_object-dp').f\n , id = 0;\nvar isExtensible = Object.isExtensible || function(){\n return true;\n};\nvar FREEZE = !require('./_fails')(function(){\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function(it){\n setDesc(it, META, {value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n }});\n};\nvar fastKey = function(it, create){\n // return primitive with prefix\n if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if(!has(it, META)){\n // can't set metadata to uncaught frozen object\n if(!isExtensible(it))return 'F';\n // not necessary to add metadata\n if(!create)return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function(it, create){\n if(!has(it, META)){\n // can't set metadata to uncaught frozen object\n if(!isExtensible(it))return true;\n // not necessary to add metadata\n if(!create)return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function(it){\n if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_meta.js\n// module id = 120\n// module chunks = 0","var getKeys = require('./_object-keys')\n , toIObject = require('./_to-iobject');\nmodule.exports = function(object, el){\n var O = toIObject(object)\n , keys = getKeys(O)\n , length = keys.length\n , index = 0\n , key;\n while(length > index)if(O[key = keys[index++]] === el)return key;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_keyof.js\n// module id = 121\n// module chunks = 0","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys')\n , gOPS = require('./_object-gops')\n , pIE = require('./_object-pie');\nmodule.exports = function(it){\n var result = getKeys(it)\n , getSymbols = gOPS.f;\n if(getSymbols){\n var symbols = getSymbols(it)\n , isEnum = pIE.f\n , i = 0\n , key;\n while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);\n } return result;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_enum-keys.js\n// module id = 122\n// module chunks = 0","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg){\n return cof(arg) == 'Array';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_is-array.js\n// module id = 123\n// module chunks = 0","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject')\n , gOPN = require('./_object-gopn').f\n , toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function(it){\n try {\n return gOPN(it);\n } catch(e){\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it){\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-gopn-ext.js\n// module id = 124\n// module chunks = 0","require('./_wks-define')('asyncIterator');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.symbol.async-iterator.js\n// module id = 126\n// module chunks = 0","require('./_wks-define')('observable');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.symbol.observable.js\n// module id = 127\n// module chunks = 0","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc){\n return $Object.defineProperty(it, key, desc);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/define-property.js\n// module id = 128\n// module chunks = 0","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperty: require('./_object-dp').f});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.define-property.js\n// module id = 129\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/set-prototype-of.js\n// module id = 130\n// module chunks = 0","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/set-prototype-of.js\n// module id = 131\n// module chunks = 0","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', {setPrototypeOf: require('./_set-proto').set});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.set-prototype-of.js\n// module id = 132\n// module chunks = 0","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object')\n , anObject = require('./_an-object');\nvar check = function(O, proto){\n anObject(O);\n if(!isObject(proto) && proto !== null)throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function(test, buggy, set){\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch(e){ buggy = true; }\n return function setPrototypeOf(O, proto){\n check(O, proto);\n if(buggy)O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_set-proto.js\n// module id = 133\n// module chunks = 0","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D){\n return $Object.create(P, D);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/create.js\n// module id = 134\n// module chunks = 0","var $export = require('./_export')\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', {create: require('./_object-create')});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.create.js\n// module id = 135\n// module chunks = 0","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js\n// module id = 136\n// module chunks = 0","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key){\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/get-own-property-descriptor.js\n// module id = 137\n// module chunks = 0","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject')\n , $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function(){\n return function getOwnPropertyDescriptor(it, key){\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js\n// module id = 138\n// module chunks = 0","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/**\n * Array.prototype.find\n *\n * Original source : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n * See also : https://tc39.github.io/ecma262/#sec-array.prototype.find\n */\nif (!Array.prototype.find) {\n // eslint-disable-next-line\n Object.defineProperty(Array.prototype, 'find', {\n // Note: ES6 arrow function syntax is not used on purpose to avoid this to be undefined\n value: function(predicate) {\n // 1. Let O be ? ToObject(this value).\n if (this == null)\n throw new TypeError('\"this\" is null or not defined')\n\n\n let o = Object(this)\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n let len = o.length >>> 0\n\n // 3. If IsCallable(predicate) is false, throw a TypeError exception.\n if (typeof predicate !== 'function')\n throw new TypeError('predicate must be a function')\n\n\n // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n let thisArg = arguments[1]\n\n // 5. Let k be 0.\n let k = 0\n\n // 6. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ! ToString(k).\n // b. Let kValue be ? Get(O, Pk).\n // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n // d. If testResult is true, return kValue.\n let kValue = o[k]\n if (predicate.call(thisArg, kValue, k, o))\n return kValue\n\n // e. Increase k by 1.\n k++\n }\n\n // 7. Return undefined.\n return undefined\n }\n })\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/polyfills.js","import $ from 'clappr-zepto'\nimport BROWSER_DATA from './browser_data'\nimport OS_DATA from './os_data'\n\nconst Browser = {}\n\nconst hasLocalstorage = function() {\n try {\n localStorage.setItem('clappr', 'clappr')\n localStorage.removeItem('clappr')\n return true\n } catch (e) {\n return false\n }\n}\n\nconst hasFlash = function() {\n try {\n const fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash')\n return !!fo\n } catch (e) {\n return !!(navigator.mimeTypes && navigator.mimeTypes['application/x-shockwave-flash'] !== undefined &&\n navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin)\n }\n}\n\nexport const getBrowserInfo = function(ua) {\n let parts = ua.match(/\\b(playstation 4|nx|opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [],\n extra\n if (/trident/i.test(parts[1])) {\n extra = /\\brv[ :]+(\\d+)/g.exec(ua) || []\n return {\n name: 'IE',\n version: parseInt(extra[1] || '')\n }\n } else if (parts[1] === 'Chrome') {\n extra = ua.match(/\\bOPR\\/(\\d+)/)\n if (extra != null) return { name: 'Opera', version: parseInt(extra[1]) }\n\n extra = ua.match(/\\bEdge\\/(\\d+)/)\n if (extra != null) return { name: 'Edge', version: parseInt(extra[1]) }\n\n } else if (/android/i.test(ua) && (extra = ua.match(/version\\/(\\d+)/i))) {\n parts.splice(1, 1, 'Android WebView')\n parts.splice(2, 1, extra[1])\n }\n parts = parts[2] ? [parts[1], parts[2]] : [navigator.appName, navigator.appVersion, '-?']\n\n return {\n name: parts[0],\n version: parseInt(parts[1])\n }\n}\n\n// Get browser data\nexport const getBrowserData = function() {\n let browserObject = {}\n let userAgent = Browser.userAgent.toLowerCase()\n\n // Check browser type\n for (let i in BROWSER_DATA) {\n let browserRegExp = new RegExp(BROWSER_DATA[i].identifier.toLowerCase())\n let browserRegExpResult = browserRegExp.exec(userAgent)\n\n if (browserRegExpResult != null && browserRegExpResult[1]) {\n browserObject.name = BROWSER_DATA[i].name\n browserObject.group = BROWSER_DATA[i].group\n\n // Check version\n if (BROWSER_DATA[i].versionIdentifier) {\n let versionRegExp = new RegExp(BROWSER_DATA[i].versionIdentifier.toLowerCase())\n let versionRegExpResult = versionRegExp.exec(userAgent)\n\n if (versionRegExpResult != null && versionRegExpResult[1])\n setBrowserVersion(versionRegExpResult[1], browserObject)\n\n } else {\n setBrowserVersion(browserRegExpResult[1], browserObject)\n }\n break\n }\n }\n return browserObject\n}\n\n// Set browser version\nconst setBrowserVersion = function(version, browserObject) {\n let splitVersion = version.split('.', 2)\n browserObject.fullVersion = version\n\n // Major version\n if (splitVersion[0]) browserObject.majorVersion = parseInt(splitVersion[0])\n\n // Minor version\n if (splitVersion[1]) browserObject.minorVersion = parseInt(splitVersion[1])\n}\n\n// Get OS data\nexport const getOsData = function() {\n let osObject = {}\n let userAgent = Browser.userAgent.toLowerCase()\n\n // Check browser type\n for (let i in OS_DATA) {\n let osRegExp = new RegExp(OS_DATA[i].identifier.toLowerCase())\n let osRegExpResult = osRegExp.exec(userAgent)\n\n if (osRegExpResult != null) {\n osObject.name = OS_DATA[i].name\n osObject.group = OS_DATA[i].group\n\n // Version defined\n if (OS_DATA[i].version) {\n setOsVersion(OS_DATA[i].version, (OS_DATA[i].versionSeparator) ? OS_DATA[i].versionSeparator : '.', osObject)\n\n // Version detected\n } else if (osRegExpResult[1]) {\n setOsVersion(osRegExpResult[1], (OS_DATA[i].versionSeparator) ? OS_DATA[i].versionSeparator : '.', osObject)\n\n // Version identifier\n } else if (OS_DATA[i].versionIdentifier) {\n let versionRegExp = new RegExp(OS_DATA[i].versionIdentifier.toLowerCase())\n let versionRegExpResult = versionRegExp.exec(userAgent)\n\n if (versionRegExpResult != null && versionRegExpResult[1])\n setOsVersion(versionRegExpResult[1], (OS_DATA[i].versionSeparator) ? OS_DATA[i].versionSeparator : '.', osObject)\n\n }\n break\n }\n }\n return osObject\n}\n\n// Set OS version\nconst setOsVersion = function(version, separator, osObject) {\n let finalSeparator = separator.substr(0, 1) == '[' ? new RegExp(separator, 'g') : separator\n const splitVersion = version.split(finalSeparator, 2)\n\n if (separator != '.') version = version.replace(new RegExp(separator, 'g'), '.')\n\n osObject.fullVersion = version\n\n // Major version\n if (splitVersion && splitVersion[0])\n osObject.majorVersion = parseInt(splitVersion[0])\n\n // Minor version\n if (splitVersion && splitVersion[1])\n osObject.minorVersion = parseInt(splitVersion[1])\n}\n\n// Set viewport size\nexport const getViewportSize = function() {\n let viewportObject = {}\n\n viewportObject.width = $(window).width()\n viewportObject.height = $(window).height()\n\n return viewportObject\n}\n\n// Set viewport orientation\nconst setViewportOrientation = function() {\n switch (window.orientation) {\n case -90:\n case 90:\n Browser.viewport.orientation = 'landscape'\n break\n default:\n Browser.viewport.orientation = 'portrait'\n break\n }\n}\n\nexport const getDevice = function(ua) {\n let platformRegExp = /\\((iP(?:hone|ad|od))?(?:[^;]*; ){0,2}([^)]+(?=\\)))/\n let matches = platformRegExp.exec(ua)\n let device = matches && (matches[1] || matches[2]) || ''\n return device\n}\n\nconst browserInfo = getBrowserInfo(navigator.userAgent)\n\nBrowser.isEdge = /edge/i.test(navigator.userAgent)\nBrowser.isChrome = /chrome|CriOS/i.test(navigator.userAgent) && !Browser.isEdge\nBrowser.isSafari = /safari/i.test(navigator.userAgent) && !Browser.isChrome && !Browser.isEdge\nBrowser.isFirefox = /firefox/i.test(navigator.userAgent)\nBrowser.isLegacyIE = !!(window.ActiveXObject)\nBrowser.isIE = Browser.isLegacyIE || /trident.*rv:1\\d/i.test(navigator.userAgent)\nBrowser.isIE11 = /trident.*rv:11/i.test(navigator.userAgent)\nBrowser.isChromecast = Browser.isChrome && /CrKey/i.test(navigator.userAgent)\nBrowser.isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone|IEMobile|Mobile Safari|Opera Mini/i.test(navigator.userAgent)\nBrowser.isiOS = /iPad|iPhone|iPod/i.test(navigator.userAgent)\nBrowser.isAndroid = /Android/i.test(navigator.userAgent)\nBrowser.isWindowsPhone = /Windows Phone/i.test(navigator.userAgent)\nBrowser.isWin8App = /MSAppHost/i.test(navigator.userAgent)\nBrowser.isWiiU = /WiiU/i.test(navigator.userAgent)\nBrowser.isPS4 = /PlayStation 4/i.test(navigator.userAgent)\nBrowser.hasLocalstorage = hasLocalstorage()\nBrowser.hasFlash = hasFlash()\n\n/**\n* @deprecated\n* This parameter currently exists for retrocompatibility reasons.\n* Use Browser.data.name instead.\n*/\nBrowser.name = browserInfo.name\n\n/**\n* @deprecated\n* This parameter currently exists for retrocompatibility reasons.\n* Use Browser.data.fullVersion instead.\n*/\nBrowser.version = browserInfo.version\n\nBrowser.userAgent = navigator.userAgent\nBrowser.data = getBrowserData()\nBrowser.os = getOsData()\nBrowser.viewport = getViewportSize()\nBrowser.device = getDevice(Browser.userAgent)\ntypeof window.orientation !== 'undefined' && setViewportOrientation()\n\nexport default Browser\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/browser/browser.js","/* eslint-disable no-useless-escape */\n// The order of the following arrays is important, be careful if you change it.\n\nconst BROWSER_DATA = [{\n name: 'Chromium',\n group: 'Chrome',\n identifier: 'Chromium/([0-9\\.]*)'\n}, {\n name: 'Chrome Mobile',\n group: 'Chrome',\n identifier: 'Chrome/([0-9\\.]*) Mobile',\n versionIdentifier: 'Chrome/([0-9\\.]*)'\n}, {\n name: 'Chrome',\n group: 'Chrome',\n identifier: 'Chrome/([0-9\\.]*)'\n}, {\n name: 'Chrome for iOS',\n group: 'Chrome',\n identifier: 'CriOS/([0-9\\.]*)'\n}, {\n name: 'Android Browser',\n group: 'Chrome',\n identifier: 'CrMo/([0-9\\.]*)'\n}, {\n name: 'Firefox',\n group: 'Firefox',\n identifier: 'Firefox/([0-9\\.]*)'\n}, {\n name: 'Opera Mini',\n group: 'Opera',\n identifier: 'Opera Mini/([0-9\\.]*)'\n}, {\n name: 'Opera',\n group: 'Opera',\n identifier: 'Opera ([0-9\\.]*)'\n}, {\n name: 'Opera',\n group: 'Opera',\n identifier: 'Opera/([0-9\\.]*)',\n versionIdentifier: 'Version/([0-9\\.]*)'\n}, {\n name: 'IEMobile',\n group: 'Explorer',\n identifier: 'IEMobile/([0-9\\.]*)'\n}, {\n name: 'Internet Explorer',\n group: 'Explorer',\n identifier: 'MSIE ([a-zA-Z0-9\\.]*)'\n}, {\n name: 'Internet Explorer',\n group: 'Explorer',\n identifier: 'Trident/([0-9\\.]*)',\n versionIdentifier: 'rv:([0-9\\.]*)'\n}, {\n name: 'Spartan',\n group: 'Spartan',\n identifier: 'Edge/([0-9\\.]*)',\n versionIdentifier: 'Edge/([0-9\\.]*)'\n}, {\n name: 'Safari',\n group: 'Safari',\n identifier: 'Safari/([0-9\\.]*)',\n versionIdentifier: 'Version/([0-9\\.]*)'\n}]\n\nexport default BROWSER_DATA\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/browser/browser_data.js","/* eslint-disable no-useless-escape */\n// The order of the following arrays is important, be careful if you change it.\n\nconst OS_DATA = [{\n name: 'Windows 2000',\n group: 'Windows',\n identifier: 'Windows NT 5.0',\n version: '5.0'\n}, {\n name: 'Windows XP',\n group: 'Windows',\n identifier: 'Windows NT 5.1',\n version: '5.1'\n}, {\n name: 'Windows Vista',\n group: 'Windows',\n identifier: 'Windows NT 6.0',\n version: '6.0'\n}, {\n name: 'Windows 7',\n group: 'Windows',\n identifier: 'Windows NT 6.1',\n version: '7.0'\n}, {\n name: 'Windows 8',\n group: 'Windows',\n identifier: 'Windows NT 6.2',\n version: '8.0'\n}, {\n name: 'Windows 8.1',\n group: 'Windows',\n identifier: 'Windows NT 6.3',\n version: '8.1'\n}, {\n name: 'Windows 10',\n group: 'Windows',\n identifier: 'Windows NT 10.0',\n version: '10.0'\n}, {\n name: 'Windows Phone',\n group: 'Windows Phone',\n identifier: 'Windows Phone ([0-9\\.]*)'\n}, {\n name: 'Windows Phone',\n group: 'Windows Phone',\n identifier: 'Windows Phone OS ([0-9\\.]*)'\n}, {\n name: 'Windows',\n group: 'Windows',\n identifier: 'Windows'\n}, {\n name: 'Chrome OS',\n group: 'Chrome OS',\n identifier: 'CrOS'\n}, {\n name: 'Android',\n group: 'Android',\n identifier: 'Android',\n versionIdentifier: 'Android ([a-zA-Z0-9\\.-]*)'\n}, {\n name: 'iPad',\n group: 'iOS',\n identifier: 'iPad',\n versionIdentifier: 'OS ([0-9_]*)',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'iPod',\n group: 'iOS',\n identifier: 'iPod',\n versionIdentifier: 'OS ([0-9_]*)',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'iPhone',\n group: 'iOS',\n identifier: 'iPhone OS',\n versionIdentifier: 'OS ([0-9_]*)',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X High Sierra',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])13([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Sierra',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])12([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X El Capitan',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])11([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Yosemite',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])10([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Mavericks',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])9([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Mountain Lion',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])8([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Lion',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])7([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Snow Leopard',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])6([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Leopard',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])5([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Tiger',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])4([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Panther',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])3([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Jaguar',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])2([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Puma',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])1([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS X Cheetah',\n group: 'Mac OS',\n identifier: 'Mac OS X (10([_|\\.])0([0-9_\\.]*))',\n versionSeparator: '[_|\\.]'\n}, {\n name: 'Mac OS',\n group: 'Mac OS',\n identifier: 'Mac OS'\n}, {\n name: 'Ubuntu',\n group: 'Linux',\n identifier: 'Ubuntu',\n versionIdentifier: 'Ubuntu/([0-9\\.]*)'\n}, {\n name: 'Debian',\n group: 'Linux',\n identifier: 'Debian'\n}, {\n name: 'Gentoo',\n group: 'Linux',\n identifier: 'Gentoo'\n}, {\n name: 'Linux',\n group: 'Linux',\n identifier: 'Linux'\n}, {\n name: 'BlackBerry',\n group: 'BlackBerry',\n identifier: 'BlackBerry'\n}]\n\nexport default OS_DATA\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/browser/os_data.js","// https://github.com/mathiasbynens/small\nexport const mp4 = 'data:video/mp4;base64,AAAAHGZ0eXBpc29tAAACAGlzb21pc28ybXA0MQAAAAhmcmVlAAAC721kYXQhEAUgpBv/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3pwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcCEQBSCkG//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADengAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAsJtb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAALwABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAB7HRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAIAAAAAAAAALwAAAAAAAAAAAAAAAQEAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAAC8AAAAAAAEAAAAAAWRtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAAKxEAAAIAFXEAAAAAAAtaGRscgAAAAAAAAAAc291bgAAAAAAAAAAAAAAAFNvdW5kSGFuZGxlcgAAAAEPbWluZgAAABBzbWhkAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAADTc3RibAAAAGdzdHNkAAAAAAAAAAEAAABXbXA0YQAAAAAAAAABAAAAAAAAAAAAAgAQAAAAAKxEAAAAAAAzZXNkcwAAAAADgICAIgACAASAgIAUQBUAAAAAAfQAAAHz+QWAgIACEhAGgICAAQIAAAAYc3R0cwAAAAAAAAABAAAAAgAABAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAIAAAABAAAAHHN0c3oAAAAAAAAAAAAAAAIAAAFzAAABdAAAABRzdGNvAAAAAAAAAAEAAAAsAAAAYnVkdGEAAABabWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAtaWxzdAAAACWpdG9vAAAAHWRhdGEAAAABAAAAAExhdmY1Ni40MC4xMDE='\n\nexport default {\n mp4: mp4,\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/base/media.js","\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { Kibo } from '../../vendor'\n\nconst BOLD = 'font-weight: bold; font-size: 13px;'\nconst INFO = 'color: #006600;' + BOLD\nconst DEBUG = 'color: #0000ff;' + BOLD\nconst WARN = 'color: #ff8000;' + BOLD\nconst ERROR = 'color: #ff0000;' + BOLD\n\nconst LEVEL_DEBUG = 0\nconst LEVEL_INFO = 1\nconst LEVEL_WARN = 2\nconst LEVEL_ERROR = 3\nconst LEVEL_DISABLED = LEVEL_ERROR\n\nconst COLORS = [DEBUG, INFO, WARN, ERROR, ERROR]\nconst DESCRIPTIONS = ['debug', 'info', 'warn', 'error', 'disabled']\n\nexport default class Log {\n constructor(level = LEVEL_INFO, offLevel = LEVEL_DISABLED) {\n this.kibo = new Kibo()\n this.kibo.down(['ctrl shift d'], () => this.onOff())\n this.BLACKLIST = ['timeupdate', 'playback:timeupdate', 'playback:progress', 'container:hover', 'container:timeupdate', 'container:progress']\n this.level = level\n this.offLevel = offLevel\n }\n\n debug(klass) { this.log(klass, LEVEL_DEBUG, Array.prototype.slice.call(arguments, 1)) }\n info(klass) { this.log(klass, LEVEL_INFO, Array.prototype.slice.call(arguments, 1)) }\n warn(klass) { this.log(klass, LEVEL_WARN, Array.prototype.slice.call(arguments, 1)) }\n error(klass) { this.log(klass, LEVEL_ERROR, Array.prototype.slice.call(arguments, 1)) }\n\n onOff() {\n if (this.level === this.offLevel) { this.level = this.previousLevel } else {\n this.previousLevel = this.level\n this.level = this.offLevel\n }\n // handle instances where console.log is unavailable\n if (window.console && window.console.log)\n window.console.log('%c[Clappr.Log] set log level to ' + DESCRIPTIONS[this.level], WARN)\n\n }\n\n level(newLevel) {\n this.level = newLevel\n }\n\n log(klass, level, message) {\n if (this.BLACKLIST.indexOf(message[0]) >= 0) return\n if (level < this.level) return\n\n if (!message) {\n message = klass\n klass = null\n }\n const color = COLORS[level]\n let klassDescription = ''\n if (klass)\n klassDescription = '[' + klass + ']'\n\n if (window.console && window.console.log)\n window.console.log.apply(console, ['%c[' + DESCRIPTIONS[level] + ']' + klassDescription, color].concat(message))\n\n }\n}\n\nLog.LEVEL_DEBUG = LEVEL_DEBUG\nLog.LEVEL_INFO = LEVEL_INFO\nLog.LEVEL_WARN = LEVEL_WARN\nLog.LEVEL_ERROR = LEVEL_ERROR\n\nLog.getInstance = function() {\n if (this._instance === undefined) {\n this._instance = new this()\n this._instance.previousLevel = this._instance.level\n this._instance.level = this._instance.offLevel\n }\n return this._instance\n}\n\nLog.setLevel = function(level) { this.getInstance().level = level }\n\nLog.debug = function() { this.getInstance().debug.apply(this.getInstance(), arguments) }\nLog.info = function() { this.getInstance().info.apply(this.getInstance(), arguments) }\nLog.warn = function() { this.getInstance().warn.apply(this.getInstance(), arguments) }\nLog.error = function() { this.getInstance().error.apply(this.getInstance(), arguments) }\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/log/log.js","/* eslint-disable */\n// Kibo is released under the MIT License. Copyright (c) 2013 marquete.\n// see https://github.com/marquete/kibo\n\nvar Kibo = function(element) {\n this.element = element || window.document;\n this.initialize();\n};\n\nKibo.KEY_NAMES_BY_CODE = {\n 8: 'backspace', 9: 'tab', 13: 'enter',\n 16: 'shift', 17: 'ctrl', 18: 'alt',\n 20: 'caps_lock',\n 27: 'esc',\n 32: 'space',\n 37: 'left', 38: 'up', 39: 'right', 40: 'down',\n 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5', 54: '6', 55: '7', 56: '8', 57: '9',\n 65: 'a', 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h', 73: 'i', 74: 'j',\n 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o', 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't',\n 85: 'u', 86: 'v', 87: 'w', 88: 'x', 89: 'y', 90: 'z', 112: 'f1', 113: 'f2', 114: 'f3',\n 115: 'f4', 116: 'f5', 117: 'f6', 118: 'f7', 119: 'f8', 120: 'f9', 121: 'f10', 122: 'f11', 123: 'f12'\n};\n\nKibo.KEY_CODES_BY_NAME = {};\n(function() {\n for(var key in Kibo.KEY_NAMES_BY_CODE) {\n if(Object.prototype.hasOwnProperty.call(Kibo.KEY_NAMES_BY_CODE, key)) {\n Kibo.KEY_CODES_BY_NAME[Kibo.KEY_NAMES_BY_CODE[key]] = +key;\n }\n }\n})();\n\nKibo.MODIFIERS = ['shift', 'ctrl', 'alt'];\n\nKibo.registerEvent = (function() {\n if(document.addEventListener) {\n return function(element, eventName, func) {\n element.addEventListener(eventName, func, false);\n };\n }\n else if(document.attachEvent) {\n return function(element, eventName, func) {\n element.attachEvent('on' + eventName, func);\n };\n }\n})();\n\nKibo.unregisterEvent = (function() {\n if(document.removeEventListener) {\n return function(element, eventName, func) {\n element.removeEventListener(eventName, func, false);\n };\n }\n else if(document.detachEvent) {\n return function(element, eventName, func) {\n element.detachEvent('on' + eventName, func);\n };\n }\n})();\n\nKibo.stringContains = function(string, substring) {\n return string.indexOf(substring) !== -1;\n};\n\nKibo.neatString = function(string) {\n return string.replace(/^\\s+|\\s+$/g, '').replace(/\\s+/g, ' ');\n};\n\nKibo.capitalize = function(string) {\n return string.toLowerCase().replace(/^./, function(match) { return match.toUpperCase(); });\n};\n\nKibo.isString = function(what) {\n return Kibo.stringContains(Object.prototype.toString.call(what), 'String');\n};\n\nKibo.arrayIncludes = (function() {\n if(Array.prototype.indexOf) {\n return function(haystack, needle) {\n return haystack.indexOf(needle) !== -1;\n };\n }\n else {\n return function(haystack, needle) {\n for(var i = 0; i < haystack.length; i++) {\n if(haystack[i] === needle) {\n return true;\n }\n }\n return false;\n };\n }\n})();\n\nKibo.extractModifiers = function(keyCombination) {\n var modifiers, i\n modifiers = [];\n for(i = 0; i < Kibo.MODIFIERS.length; i++) {\n if(Kibo.stringContains(keyCombination, Kibo.MODIFIERS[i])) {\n modifiers.push(Kibo.MODIFIERS[i]);\n }\n }\n return modifiers;\n}\n\nKibo.extractKey = function(keyCombination) {\n var keys, i;\n keys = Kibo.neatString(keyCombination).split(' ');\n for(i = 0; i < keys.length; i++) {\n if(!Kibo.arrayIncludes(Kibo.MODIFIERS, keys[i])) {\n return keys[i];\n }\n }\n};\n\nKibo.modifiersAndKey = function(keyCombination) {\n var result, key;\n\n if(Kibo.stringContains(keyCombination, 'any')) {\n return Kibo.neatString(keyCombination).split(' ').slice(0, 2).join(' ');\n }\n\n result = Kibo.extractModifiers(keyCombination);\n\n key = Kibo.extractKey(keyCombination);\n if(key && !Kibo.arrayIncludes(Kibo.MODIFIERS, key)) {\n result.push(key);\n }\n\n return result.join(' ');\n}\n\nKibo.keyName = function(keyCode) {\n return Kibo.KEY_NAMES_BY_CODE[keyCode + ''];\n};\n\nKibo.keyCode = function(keyName) {\n return +Kibo.KEY_CODES_BY_NAME[keyName];\n};\n\nKibo.prototype.initialize = function() {\n var i, that = this;\n\n this.lastKeyCode = -1;\n this.lastModifiers = {};\n for(i = 0; i < Kibo.MODIFIERS.length; i++) {\n this.lastModifiers[Kibo.MODIFIERS[i]] = false;\n }\n\n this.keysDown = { any: [] };\n this.keysUp = { any: [] };\n this.downHandler = this.handler('down');\n this.upHandler = this.handler('up');\n\n Kibo.registerEvent(this.element, 'keydown', this.downHandler);\n Kibo.registerEvent(this.element, 'keyup', this.upHandler);\n Kibo.registerEvent(window, 'unload', function unloader() {\n Kibo.unregisterEvent(that.element, 'keydown', that.downHandler);\n Kibo.unregisterEvent(that.element, 'keyup', that.upHandler);\n Kibo.unregisterEvent(window, 'unload', unloader);\n });\n};\n\nKibo.prototype.handler = function(upOrDown) {\n var that = this;\n return function(e) {\n var i, registeredKeys, lastModifiersAndKey;\n\n e = e || window.event;\n\n that.lastKeyCode = e.keyCode;\n for(i = 0; i < Kibo.MODIFIERS.length; i++) {\n that.lastModifiers[Kibo.MODIFIERS[i]] = e[Kibo.MODIFIERS[i] + 'Key'];\n }\n if(Kibo.arrayIncludes(Kibo.MODIFIERS, Kibo.keyName(that.lastKeyCode))) {\n that.lastModifiers[Kibo.keyName(that.lastKeyCode)] = true;\n }\n\n registeredKeys = that['keys' + Kibo.capitalize(upOrDown)];\n\n for(i = 0; i < registeredKeys.any.length; i++) {\n if((registeredKeys.any[i](e) === false) && e.preventDefault) {\n e.preventDefault();\n }\n }\n\n lastModifiersAndKey = that.lastModifiersAndKey();\n if(registeredKeys[lastModifiersAndKey]) {\n for(i = 0; i < registeredKeys[lastModifiersAndKey].length; i++) {\n if((registeredKeys[lastModifiersAndKey][i](e) === false) && e.preventDefault) {\n e.preventDefault();\n }\n }\n }\n };\n};\n\nKibo.prototype.registerKeys = function(upOrDown, newKeys, func) {\n var i, keys, registeredKeys = this['keys' + Kibo.capitalize(upOrDown)];\n\n if(Kibo.isString(newKeys)) {\n newKeys = [newKeys];\n }\n\n for(i = 0; i < newKeys.length; i++) {\n keys = newKeys[i];\n keys = Kibo.modifiersAndKey(keys + '');\n\n if(registeredKeys[keys]) {\n registeredKeys[keys].push(func);\n } else {\n registeredKeys[keys] = [func];\n }\n }\n\n return this;\n};\n\n// jshint maxdepth:5\nKibo.prototype.unregisterKeys = function(upOrDown, newKeys, func) {\n var i, j, keys, registeredKeys = this['keys' + Kibo.capitalize(upOrDown)];\n\n if(Kibo.isString(newKeys)) {\n newKeys = [newKeys];\n }\n\n for(i = 0; i < newKeys.length; i++) {\n keys = newKeys[i];\n keys = Kibo.modifiersAndKey(keys + '');\n\n if(func === null) {\n delete registeredKeys[keys];\n } else {\n if(registeredKeys[keys]) {\n for(j = 0; j < registeredKeys[keys].length; j++) {\n if(String(registeredKeys[keys][j]) === String(func)) {\n registeredKeys[keys].splice(j, 1);\n break;\n }\n }\n }\n }\n }\n\n return this;\n};\n\nKibo.prototype.off = function(keys) {\n return this.unregisterKeys('down', keys, null);\n}\n\nKibo.prototype.delegate = function(upOrDown, keys, func) {\n return (func !== null || func !== undefined) ? this.registerKeys(upOrDown, keys, func) : this.unregisterKeys(upOrDown, keys, func);\n};\n\nKibo.prototype.down = function(keys, func) {\n return this.delegate('down', keys, func);\n};\n\nKibo.prototype.up = function(keys, func) {\n return this.delegate('up', keys, func);\n};\n\nKibo.prototype.lastKey = function(modifier) {\n if(!modifier) {\n return Kibo.keyName(this.lastKeyCode);\n }\n\n return this.lastModifiers[modifier];\n};\n\nKibo.prototype.lastModifiersAndKey = function() {\n var result, i;\n\n result = [];\n for(i = 0; i < Kibo.MODIFIERS.length; i++) {\n if(this.lastKey(Kibo.MODIFIERS[i])) {\n result.push(Kibo.MODIFIERS[i]);\n }\n }\n\n if(!Kibo.arrayIncludes(result, this.lastKey())) {\n result.push(this.lastKey());\n }\n\n return result.join(' ');\n};\n\nexport default Kibo\n\n\n\n// WEBPACK FOOTER //\n// ./src/vendor/kibo.js","import CoreFactory from './core_factory'\nexport default CoreFactory\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/core_factory/index.js","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport BaseObject from '../../base/base_object'\nimport Core from '../core'\n\n/**\n * The Core Factory is responsible for instantiate the core and it's plugins.\n * @class CoreFactory\n * @constructor\n * @extends BaseObject\n * @module components\n */\nexport default class CoreFactory extends BaseObject {\n\n get loader() { return this.player.loader }\n\n /**\n * it builds the core factory\n * @method constructor\n * @param {Player} player the player object\n */\n constructor(player) {\n super()\n this.player = player\n this._options = player.options\n }\n\n /**\n * creates a core and its plugins\n * @method create\n * @return {Core} created core\n */\n create() {\n this.options.loader = this.loader\n this.core = new Core(this.options)\n this.addCorePlugins()\n this.core.createContainers(this.options)\n return this.core\n }\n\n /**\n * given the core plugins (`loader.corePlugins`) it builds each one\n * @method addCorePlugins\n * @return {Core} the core with all plugins\n */\n addCorePlugins() {\n this.loader.corePlugins.forEach((Plugin) => {\n const plugin = new Plugin(this.core)\n this.core.addPlugin(plugin)\n this.setupExternalInterface(plugin)\n })\n return this.core\n }\n\n setupExternalInterface(plugin) {\n const externalFunctions = plugin.getExternalInterface()\n for (const key in externalFunctions)\n this.player[key] = externalFunctions[key].bind(plugin)\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/core_factory/core_factory.js","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { isNumber, Fullscreen, DomRecycler } from '../../base/utils'\n\nimport Events from '../../base/events'\nimport UIObject from '../../base/ui_object'\nimport Browser from '../../components/browser'\nimport ContainerFactory from '../../components/container_factory'\nimport MediaControl from '../../components/media_control'\nimport Mediator from '../../components/mediator'\nimport PlayerInfo from '../../components/player_info'\nimport PlayerError from '../../components/error'\nimport ErrorMixin from '../../base/error_mixin'\n\nimport Styler from '../../base/styler'\n\nimport $ from 'clappr-zepto'\n\nimport './public/style.scss'\nimport fontStyle from './public/fonts.css'\n\nlet style\n\n/**\n * The Core is responsible to manage Containers, the mediator, MediaControl\n * and the player state.\n * @class Core\n * @constructor\n * @extends UIObject\n * @module components\n */\nexport default class Core extends UIObject {\n get events() {\n return {\n 'webkitfullscreenchange': 'handleFullscreenChange',\n 'mousemove': 'showMediaControl',\n 'mouseleave': 'hideMediaControl'\n }\n }\n\n get attributes() {\n return {\n 'data-player': '',\n tabindex: 9999\n }\n }\n\n /**\n * checks if the core is ready.\n * @property isReady\n * @type {Boolean} `true` if the core is ready, otherwise `false`\n */\n get isReady() {\n return !!this.ready\n }\n\n /**\n * The internationalization plugin.\n * @property i18n\n * @type {Strings}\n */\n get i18n() {\n return this.getPlugin('strings') || { t: (key) => key }\n }\n\n constructor(options) {\n super(options)\n this.playerError = new PlayerError(options, this)\n this.configureDomRecycler()\n this.playerInfo = PlayerInfo.getInstance(options.playerId)\n this.firstResize = true\n this.plugins = []\n this.containers = []\n this.setupMediaControl(null)\n //FIXME fullscreen api sucks\n this._boundFullscreenHandler = () => this.handleFullscreenChange()\n $(document).bind('fullscreenchange', this._boundFullscreenHandler)\n $(document).bind('MSFullscreenChange', this._boundFullscreenHandler)\n $(document).bind('mozfullscreenchange', this._boundFullscreenHandler)\n Browser.isMobile && $(window).bind('resize', (o) => { this.handleWindowResize(o) })\n }\n\n configureDomRecycler() {\n let recycleVideo = (this.options && this.options.playback && this.options.playback.recycleVideo) ? true : false\n DomRecycler.configure({\n recycleVideo: recycleVideo\n })\n }\n\n createContainers(options) {\n this.defer = $.Deferred()\n this.defer.promise(this)\n this.containerFactory = new ContainerFactory(options, options.loader, this.i18n, this.playerError)\n this.containerFactory\n .createContainers()\n .then((containers) => this.setupContainers(containers))\n .then((containers) => this.resolveOnContainersReady(containers))\n }\n\n updateSize() {\n if (Fullscreen.isFullscreen())\n this.setFullscreen()\n else\n this.setPlayerSize()\n\n }\n\n setFullscreen() {\n if (!Browser.isiOS) {\n this.$el.addClass('fullscreen')\n this.$el.removeAttr('style')\n this.playerInfo.previousSize = { width: this.options.width, height: this.options.height }\n this.playerInfo.currentSize = { width: $(window).width(), height: $(window).height() }\n }\n }\n\n setPlayerSize() {\n this.$el.removeClass('fullscreen')\n this.playerInfo.currentSize = this.playerInfo.previousSize\n this.playerInfo.previousSize = { width: $(window).width(), height: $(window).height() }\n this.resize(this.playerInfo.currentSize)\n }\n\n resize(options) {\n if (!isNumber(options.height) && !isNumber(options.width)) {\n this.el.style.height = `${options.height}`\n this.el.style.width = `${options.width}`\n } else {\n this.el.style.height = `${options.height}px`\n this.el.style.width = `${options.width}px`\n }\n this.playerInfo.previousSize = { width: this.options.width, height: this.options.height }\n this.options.width = options.width\n this.options.height = options.height\n this.playerInfo.currentSize = options\n this.triggerResize(this.playerInfo.currentSize)\n }\n\n enableResizeObserver() {\n const checkSizeCallback = () => {\n this.triggerResize({ width: this.el.clientWidth, height: this.el.clientHeight })\n }\n this.resizeObserverInterval = setInterval(checkSizeCallback, 500)\n }\n\n triggerResize(newSize) {\n const thereWasChange = this.firstResize || this.oldHeight !== newSize.height || this.oldWidth !== newSize.width\n if (thereWasChange) {\n this.oldHeight = newSize.height\n this.oldWidth = newSize.width\n this.playerInfo.computedSize = newSize\n this.firstResize = false\n Mediator.trigger(`${this.options.playerId}:${Events.PLAYER_RESIZE}`, newSize)\n this.trigger(Events.CORE_RESIZE, newSize)\n }\n }\n\n disableResizeObserver() {\n if (this.resizeObserverInterval) clearInterval(this.resizeObserverInterval)\n }\n\n resolveOnContainersReady(containers) {\n $.when.apply($, containers).done(() => {\n this.defer.resolve(this)\n this.ready = true\n this.trigger(Events.CORE_READY)\n })\n }\n\n addPlugin(plugin) {\n this.plugins.push(plugin)\n }\n\n hasPlugin(name) {\n return !!this.getPlugin(name)\n }\n\n getPlugin(name) {\n return this.plugins.filter(plugin => plugin.name === name)[0]\n }\n\n load(sources, mimeType) {\n this.options.mimeType = mimeType\n sources = sources && sources.constructor === Array ? sources : [sources]\n this.options.sources = sources\n this.containers.forEach((container) => container.destroy())\n this.mediaControl.container = null\n this.containerFactory.options = $.extend(this.options, { sources })\n this.containerFactory.createContainers()\n .then((containers) => this.setupContainers(containers))\n .then((containers) => this.resolveOnContainersReady(containers))\n }\n\n destroy() {\n this.disableResizeObserver()\n this.containers.forEach((container) => container.destroy())\n this.plugins.forEach((plugin) => plugin.destroy())\n this.$el.remove()\n this.mediaControl.destroy()\n $(document).unbind('fullscreenchange', this._boundFullscreenHandler)\n $(document).unbind('MSFullscreenChange', this._boundFullscreenHandler)\n $(document).unbind('mozfullscreenchange', this._boundFullscreenHandler)\n this.stopListening()\n }\n\n handleFullscreenChange() {\n this.trigger(Events.CORE_FULLSCREEN, Fullscreen.isFullscreen())\n this.updateSize()\n this.mediaControl.show()\n }\n\n handleWindowResize(event) {\n let orientation = ($(window).width() > $(window).height()) ? 'landscape' : 'portrait'\n if (this._screenOrientation === orientation) return\n this._screenOrientation = orientation\n\n this.triggerResize({ width: this.el.clientWidth, height: this.el.clientHeight })\n this.trigger(Events.CORE_SCREEN_ORIENTATION_CHANGED, {\n event: event,\n orientation: this._screenOrientation\n })\n }\n\n setMediaControlContainer(container) {\n this.mediaControl.setContainer(container)\n this.mediaControl.render()\n }\n\n disableMediaControl() {\n this.mediaControl.disable()\n this.$el.removeClass('nocursor')\n }\n\n enableMediaControl() {\n this.mediaControl.enable()\n }\n\n removeContainer(container) {\n this.stopListening(container)\n this.containers = this.containers.filter((c) => c !== container)\n }\n\n setupContainer(container) {\n this.listenTo(container, Events.CONTAINER_DESTROYED, this.removeContainer)\n this.containers.push(container)\n }\n\n setupContainers(containers) {\n containers.forEach(this.setupContainer.bind(this))\n this.trigger(Events.CORE_CONTAINERS_CREATED)\n this.renderContainers()\n this.setupMediaControl(this.getCurrentContainer())\n this.render()\n this.appendToParent()\n return this.containers\n }\n\n renderContainers() {\n this.containers.forEach((container) => this.el.appendChild(container.render().el))\n }\n\n createContainer(source, options) {\n const container = this.containerFactory.createContainer(source, options)\n this.setupContainer(container)\n this.el.appendChild(container.render().el)\n return container\n }\n\n setupMediaControl(container) {\n if (this.mediaControl) { this.mediaControl.setContainer(container) } else {\n this.mediaControl = this.createMediaControl($.extend({ container: container, focusElement: this.el }, this.options))\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_FULLSCREEN, this.toggleFullscreen)\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_SHOW, this.onMediaControlShow.bind(this, true))\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_HIDE, this.onMediaControlShow.bind(this, false))\n }\n }\n\n createMediaControl(options) {\n if (options.mediacontrol && options.mediacontrol.external)\n return new options.mediacontrol.external(options).render()\n else\n return new MediaControl(options).render()\n\n }\n\n getCurrentContainer() {\n if (!this.mediaControl || !this.mediaControl.container)\n return this.containers[0]\n\n return this.mediaControl.container\n }\n\n getCurrentPlayback() {\n const container = this.getCurrentContainer()\n return container && container.playback\n }\n\n getPlaybackType() {\n const container = this.getCurrentContainer()\n return container && container.getPlaybackType()\n }\n\n toggleFullscreen() {\n if (Fullscreen.isFullscreen()) {\n Fullscreen.cancelFullscreen()\n if (!Browser.isiOS)\n this.$el.removeClass('fullscreen nocursor')\n\n } else {\n let element = Browser.isiOS ? this.getCurrentContainer().el : this.el\n Fullscreen.requestFullscreen(element)\n\n if (!Browser.isiOS)\n this.$el.addClass('fullscreen')\n\n }\n this.mediaControl.show()\n }\n\n showMediaControl(event) {\n this.mediaControl.show(event)\n }\n\n hideMediaControl() {\n this.mediaControl.hide(this.options.hideMediaControlDelay)\n }\n\n onMediaControlShow(showing) {\n this.getCurrentContainer().trigger(showing?Events.CONTAINER_MEDIACONTROL_SHOW:Events.CONTAINER_MEDIACONTROL_HIDE)\n\n if (showing)\n this.$el.removeClass('nocursor')\n else if (Fullscreen.isFullscreen())\n this.$el.addClass('nocursor')\n }\n\n /**\n * enables to configure the container after its creation\n * @method configure\n * @param {Object} options all the options to change in form of a javascript object\n */\n configure(options) {\n this._options = $.extend(this._options, options)\n this.configureDomRecycler()\n const sources = options.source || options.sources\n\n if (sources) this.load(sources, options.mimeType || this.options.mimeType)\n\n this.trigger(Events.CORE_OPTIONS_CHANGE)\n this.containers.forEach((container) => {\n container.configure(this.options)\n })\n this.mediaControl.configure(this.options)\n }\n\n appendToParent() {\n let hasCoreParent = this.$el.parent() && this.$el.parent().length\n !hasCoreParent && this.$el.appendTo(this.options.parentElement)\n }\n\n render() {\n this.$el.append(this.mediaControl.render().el)\n\n if (!style)\n style = Styler.getStyleFor(fontStyle, { baseUrl: this.options.baseUrl })\n\n $('head').append(style)\n\n this.options.width = this.options.width || this.$el.width()\n this.options.height = this.options.height || this.$el.height()\n const size = { width: this.options.width, height: this.options.height }\n this.playerInfo.previousSize = this.playerInfo.currentSize = this.playerInfo.computedSize = size\n this.updateSize()\n\n this.previousSize = { width: this.$el.width(), height: this.$el.height() }\n\n this.enableResizeObserver()\n\n return this\n }\n}\n\nObject.assign(Core.prototype, ErrorMixin)\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/core/core.js","import ContainerFactory from './container_factory'\nexport default ContainerFactory\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/container_factory/index.js","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/**\n * The ContainerFactory is responsible for manage playback bootstrap and create containers.\n */\n\nimport BaseObject from '../../base/base_object'\nimport Events from '../../base/events'\nimport Container from '../../components/container'\nimport $ from 'clappr-zepto'\n\nexport default class ContainerFactory extends BaseObject {\n get options() { return this._options }\n set options(options) { this._options = options }\n\n constructor(options, loader, i18n, playerError) {\n super(options)\n this._i18n = i18n\n this.loader = loader\n this.playerError = playerError\n }\n\n createContainers() {\n return $.Deferred((promise) => {\n promise.resolve(this.options.sources.map((source) => {\n return this.createContainer(source)\n }))\n })\n }\n\n findPlaybackPlugin(source, mimeType) {\n return this.loader.playbackPlugins.filter(p => p.canPlay(source, mimeType))[0]\n }\n\n createContainer(source) {\n let resolvedSource = null,\n mimeType = this.options.mimeType\n if (typeof source === 'object') {\n resolvedSource = source.source.toString()\n if (source.mimeType)\n mimeType = source.mimeType\n\n } else { resolvedSource = source.toString() }\n\n\n if (resolvedSource.match(/^\\/\\//)) resolvedSource = window.location.protocol + resolvedSource\n\n let options = $.extend({}, this.options, {\n src: resolvedSource,\n mimeType: mimeType\n })\n const playbackPlugin = this.findPlaybackPlugin(resolvedSource, mimeType)\n const playback = new playbackPlugin(options, this._i18n, this.playerError)\n\n options = $.extend({}, options, { playback: playback })\n\n const container = new Container(options, this._i18n, this.playerError)\n const defer = $.Deferred()\n defer.promise(container)\n this.addContainerPlugins(container)\n this.listenToOnce(container, Events.CONTAINER_READY, () => defer.resolve(container))\n return container\n }\n\n addContainerPlugins(container) {\n this.loader.containerPlugins.forEach((Plugin) => {\n container.addPlugin(new Plugin(container))\n })\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/container_factory/container_factory.js","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/**\n * Container is responsible for the video rendering and state\n */\n\nimport Events from '../../base/events'\nimport UIObject from '../../base/ui_object'\nimport ErrorMixin from '../../base/error_mixin'\n\nimport './public/style.scss'\n\nimport $ from 'clappr-zepto'\n\n/**\n * An abstraction to represent a container for a given playback\n * TODO: describe its responsabilities\n * @class Container\n * @constructor\n * @extends UIObject\n * @module base\n */\nexport default class Container extends UIObject {\n /**\n * container's name\n * @method name\n * @default Container\n * @return {String} container's name\n */\n get name() { return 'Container' }\n get attributes() { return { class: 'container', 'data-container': '' } }\n get events() {\n return {\n 'click': 'clicked',\n 'dblclick': 'dblClicked',\n 'doubleTap': 'dblClicked',\n 'contextmenu': 'onContextMenu',\n 'mouseenter': 'mouseEnter',\n 'mouseleave': 'mouseLeave'\n }\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n get ended() {\n return this.playback.ended\n }\n\n /**\n * Determine if the playback is having to buffer in order for\n * playback to be smooth.\n * (i.e if a live stream is playing smoothly, this will be false)\n * @property buffering\n * @type Boolean\n */\n get buffering() {\n return this.playback.buffering\n }\n\n /**\n * The internationalization plugin.\n * @property i18n\n * @type {Strings}\n */\n get i18n() {\n return this._i18n\n }\n\n /**\n * checks if has closed caption tracks.\n * @property hasClosedCaptionsTracks\n * @type {Boolean}\n */\n get hasClosedCaptionsTracks() {\n return this.playback.hasClosedCaptionsTracks\n }\n\n /**\n * gets the available closed caption tracks.\n * @property closedCaptionsTracks\n * @type {Array} an array of objects with at least 'id' and 'name' properties\n */\n get closedCaptionsTracks() {\n return this.playback.closedCaptionsTracks\n }\n\n /**\n * gets the selected closed caption track index. (-1 is disabled)\n * @property closedCaptionsTrackId\n * @type {Number}\n */\n get closedCaptionsTrackId() {\n return this.playback.closedCaptionsTrackId\n }\n\n /**\n * sets the selected closed caption track index. (-1 is disabled)\n * @property closedCaptionsTrackId\n * @type {Number}\n */\n set closedCaptionsTrackId(trackId) {\n this.playback.closedCaptionsTrackId = trackId\n }\n\n /**\n * it builds a container\n * @method constructor\n * @param {Object} options the options object\n * @param {Strings} i18n the internationalization component\n */\n constructor(options, i18n, playerError) {\n super(options)\n this._i18n = i18n\n this.currentTime = 0\n this.volume = 100\n this.playback = options.playback\n this.playerError = playerError\n this.settings = $.extend({}, this.playback.settings)\n this.isReady = false\n this.mediaControlDisabled = false\n this.plugins = [this.playback]\n this.bindEvents()\n }\n\n /**\n * binds playback events to the methods of the container.\n * it listens to playback's events and triggers them as container events.\n *\n * | Playback |\n * |----------|\n * | progress |\n * | timeupdate |\n * | ready |\n * | buffering |\n * | bufferfull |\n * | settingsupdate |\n * | loadedmetadata |\n * | highdefinitionupdate |\n * | bitrate |\n * | playbackstate |\n * | dvr |\n * | mediacontrol_disable |\n * | mediacontrol_enable |\n * | ended |\n * | play |\n * | pause |\n * | error |\n *\n * ps: the events usually translate from PLABACK_x to CONTAINER_x, you can check all the events at `Event` class.\n *\n * @method bindEvents\n */\n bindEvents() {\n this.listenTo(this.playback, Events.PLAYBACK_PROGRESS, this.progress)\n this.listenTo(this.playback, Events.PLAYBACK_TIMEUPDATE, this.timeUpdated)\n this.listenTo(this.playback, Events.PLAYBACK_READY, this.ready)\n this.listenTo(this.playback, Events.PLAYBACK_BUFFERING, this.onBuffering)\n this.listenTo(this.playback, Events.PLAYBACK_BUFFERFULL, this.bufferfull)\n this.listenTo(this.playback, Events.PLAYBACK_SETTINGSUPDATE, this.settingsUpdate)\n this.listenTo(this.playback, Events.PLAYBACK_LOADEDMETADATA, this.loadedMetadata)\n this.listenTo(this.playback, Events.PLAYBACK_HIGHDEFINITIONUPDATE, this.highDefinitionUpdate)\n this.listenTo(this.playback, Events.PLAYBACK_BITRATE, this.updateBitrate)\n this.listenTo(this.playback, Events.PLAYBACK_PLAYBACKSTATE, this.playbackStateChanged)\n this.listenTo(this.playback, Events.PLAYBACK_DVR, this.playbackDvrStateChanged)\n this.listenTo(this.playback, Events.PLAYBACK_MEDIACONTROL_DISABLE, this.disableMediaControl)\n this.listenTo(this.playback, Events.PLAYBACK_MEDIACONTROL_ENABLE, this.enableMediaControl)\n this.listenTo(this.playback, Events.PLAYBACK_SEEKED, this.onSeeked)\n this.listenTo(this.playback, Events.PLAYBACK_ENDED, this.onEnded)\n this.listenTo(this.playback, Events.PLAYBACK_PLAY, this.playing)\n this.listenTo(this.playback, Events.PLAYBACK_PAUSE, this.paused)\n this.listenTo(this.playback, Events.PLAYBACK_STOP, this.stopped)\n this.listenTo(this.playback, Events.PLAYBACK_ERROR, this.error)\n this.listenTo(this.playback, Events.PLAYBACK_SUBTITLE_AVAILABLE, this.subtitleAvailable)\n this.listenTo(this.playback, Events.PLAYBACK_SUBTITLE_CHANGED, this.subtitleChanged)\n }\n\n subtitleAvailable() {\n this.trigger(Events.CONTAINER_SUBTITLE_AVAILABLE)\n }\n\n subtitleChanged(track) {\n this.trigger(Events.CONTAINER_SUBTITLE_CHANGED, track)\n }\n\n playbackStateChanged(state) {\n this.trigger(Events.CONTAINER_PLAYBACKSTATE, state)\n }\n\n playbackDvrStateChanged(dvrInUse) {\n this.settings = this.playback.settings\n this.dvrInUse = dvrInUse\n this.trigger(Events.CONTAINER_PLAYBACKDVRSTATECHANGED, dvrInUse)\n }\n\n updateBitrate(newBitrate) {\n this.trigger(Events.CONTAINER_BITRATE, newBitrate)\n }\n\n statsReport(metrics) {\n this.trigger(Events.CONTAINER_STATS_REPORT, metrics)\n }\n\n getPlaybackType() {\n return this.playback.getPlaybackType()\n }\n\n /**\n * returns `true` if DVR is enable otherwise `false`.\n * @method isDvrEnabled\n * @return {Boolean}\n */\n isDvrEnabled() {\n return !!this.playback.dvrEnabled\n }\n\n /**\n * returns `true` if DVR is in use otherwise `false`.\n * @method isDvrInUse\n * @return {Boolean}\n */\n isDvrInUse() {\n return !!this.dvrInUse\n }\n\n /**\n * destroys the container\n * @method destroy\n */\n destroy() {\n this.trigger(Events.CONTAINER_DESTROYED, this, this.name)\n this.stopListening()\n this.plugins.forEach((plugin) => plugin.destroy())\n this.$el.remove()\n }\n\n setStyle(style) {\n this.$el.css(style)\n }\n\n animate(style, duration) {\n return this.$el.animate(style, duration).promise()\n }\n\n ready() {\n this.isReady = true\n this.trigger(Events.CONTAINER_READY, this.name)\n }\n\n isPlaying() {\n return this.playback.isPlaying()\n }\n\n getStartTimeOffset() {\n return this.playback.getStartTimeOffset()\n }\n\n getCurrentTime() {\n return this.currentTime\n }\n\n getDuration() {\n return this.playback.getDuration()\n }\n\n error(error) {\n if (!this.isReady)\n this.ready()\n\n this.trigger(Events.CONTAINER_ERROR, error, this.name)\n }\n\n loadedMetadata(metadata) {\n this.trigger(Events.CONTAINER_LOADEDMETADATA, metadata)\n }\n\n timeUpdated(timeProgress) {\n this.currentTime = timeProgress.current\n this.trigger(Events.CONTAINER_TIMEUPDATE, timeProgress, this.name)\n }\n\n progress(...args) {\n this.trigger(Events.CONTAINER_PROGRESS, ...args, this.name)\n }\n\n playing() {\n this.trigger(Events.CONTAINER_PLAY, this.name)\n }\n\n paused() {\n this.trigger(Events.CONTAINER_PAUSE, this.name)\n }\n\n /**\n * plays the playback\n * @method play\n */\n play() {\n this.playback.play()\n }\n\n /**\n * stops the playback\n * @method stop\n */\n stop() {\n this.playback.stop()\n this.currentTime = 0\n }\n\n /**\n * pauses the playback\n * @method pause\n */\n pause() {\n this.playback.pause()\n }\n\n onEnded() {\n this.trigger(Events.CONTAINER_ENDED, this, this.name)\n this.currentTime = 0\n }\n\n stopped() {\n this.trigger(Events.CONTAINER_STOP)\n }\n\n clicked() {\n if (!this.options.chromeless || this.options.allowUserInteraction)\n this.trigger(Events.CONTAINER_CLICK, this, this.name)\n\n }\n\n dblClicked() {\n if (!this.options.chromeless || this.options.allowUserInteraction)\n this.trigger(Events.CONTAINER_DBLCLICK, this, this.name)\n\n }\n\n onContextMenu(event) {\n if (!this.options.chromeless || this.options.allowUserInteraction)\n this.trigger(Events.CONTAINER_CONTEXTMENU, event, this.name)\n\n }\n\n seek(time) {\n this.trigger(Events.CONTAINER_SEEK, time, this.name)\n this.playback.seek(time)\n }\n\n onSeeked() {\n this.trigger(Events.CONTAINER_SEEKED, this.name)\n }\n\n seekPercentage(percentage) {\n const duration = this.getDuration()\n if (percentage >= 0 && percentage <= 100) {\n const time = duration * (percentage / 100)\n this.seek(time)\n }\n }\n\n setVolume(value) {\n this.volume = parseInt(value, 10)\n this.trigger(Events.CONTAINER_VOLUME, value, this.name)\n this.playback.volume(value)\n }\n\n fullscreen() {\n this.trigger(Events.CONTAINER_FULLSCREEN, this.name)\n }\n\n onBuffering() {\n this.trigger(Events.CONTAINER_STATE_BUFFERING, this.name)\n }\n\n bufferfull() {\n this.trigger(Events.CONTAINER_STATE_BUFFERFULL, this.name)\n }\n\n /**\n * adds plugin to the container\n * @method addPlugin\n * @param {Object} plugin\n */\n addPlugin(plugin) {\n this.plugins.push(plugin)\n }\n\n /**\n * checks if a plugin, given its name, exist\n * @method hasPlugin\n * @param {String} name\n * @return {Boolean}\n */\n hasPlugin(name) {\n return !!this.getPlugin(name)\n }\n\n /**\n * get the plugin given its name\n * @method getPlugin\n * @param {String} name\n */\n getPlugin(name) {\n return this.plugins.filter(plugin => plugin.name === name)[0]\n }\n\n mouseEnter() {\n if (!this.options.chromeless || this.options.allowUserInteraction)\n this.trigger(Events.CONTAINER_MOUSE_ENTER)\n\n }\n\n mouseLeave() {\n if (!this.options.chromeless || this.options.allowUserInteraction)\n this.trigger(Events.CONTAINER_MOUSE_LEAVE)\n\n }\n\n settingsUpdate() {\n this.settings = this.playback.settings\n this.trigger(Events.CONTAINER_SETTINGSUPDATE)\n }\n\n highDefinitionUpdate(isHD) {\n this.trigger(Events.CONTAINER_HIGHDEFINITIONUPDATE, isHD)\n }\n\n isHighDefinitionInUse() {\n return this.playback.isHighDefinitionInUse()\n }\n\n disableMediaControl() {\n if (!this.mediaControlDisabled) {\n this.mediaControlDisabled = true\n this.trigger(Events.CONTAINER_MEDIACONTROL_DISABLE)\n }\n }\n\n enableMediaControl() {\n if (this.mediaControlDisabled) {\n this.mediaControlDisabled = false\n this.trigger(Events.CONTAINER_MEDIACONTROL_ENABLE)\n }\n }\n\n updateStyle() {\n if (!this.options.chromeless || this.options.allowUserInteraction)\n this.$el.removeClass('chromeless')\n else\n this.$el.addClass('chromeless')\n\n }\n\n /**\n * enables to configure the container after its creation\n * @method configure\n * @param {Object} options all the options to change in form of a javascript object\n */\n configure(options) {\n this._options = $.extend(this._options, options)\n this.updateStyle()\n this.playback.configure(this.options)\n this.trigger(Events.CONTAINER_OPTIONS_CHANGE)\n }\n\n render() {\n this.$el.append(this.playback.render().el)\n this.updateStyle()\n return this\n }\n}\n\nObject.assign(Container.prototype, ErrorMixin)\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/container/container.js","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/container/public/style.scss\n// module id = 152\n// module chunks = 0","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".container[data-container]{position:absolute;background-color:#000;height:100%;width:100%}.container[data-container] .chromeless{cursor:default}[data-player]:not(.nocursor) .container[data-container]:not(.chromeless).pointer-enabled{cursor:pointer}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./node_modules/postcss-loader/lib!./node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./src/components/container/public/style.scss\n// module id = 153\n// module chunks = 0","\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n // get current location\n var location = typeof window !== \"undefined\" && window.location;\n\n if (!location) {\n throw new Error(\"fixUrls requires window.location\");\n }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t return css;\n }\n\n var baseUrl = location.protocol + \"//\" + location.host;\n var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\( = Match on the word \"url\" with any whitespace after it and then a parens\n\t ( = Start a capturing group\n\t (?: = Start a non-capturing group\n\t [^)(] = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t (?: = Start another non-capturing groups\n\t [^)(]+ = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t [^)(]* = Match anything that isn't a parentheses\n\t \\) = Match a end parentheses\n\t ) = End Group\n *\\) = Match anything and then a close parens\n ) = Close non-capturing group\n * = Match anything\n ) = Close capturing group\n\t \\) = Match a close parens\n\n\t /gi = Get all matches, not the first. Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(unquotedOrigUrl)) {\n\t\t return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/style-loader/lib/urls.js\n// module id = 154\n// module chunks = 0","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n/**\n * The MediaControl is responsible for displaying the Player controls.\n */\n\nimport { Config, Fullscreen, formatTime, extend, removeArrayItem } from '../../base/utils'\nimport { Kibo } from '../../vendor'\n\nimport Events from '../../base/events'\nimport UIObject from '../../base/ui_object'\nimport Browser from '../../components/browser'\nimport Mediator from '../../components/mediator'\nimport template from '../../base/template'\nimport Playback from '../../base/playback'\n\nimport $ from 'clappr-zepto'\n\nimport './public/media-control.scss'\nimport mediaControlHTML from './public/media-control.html'\n\nimport playIcon from '../../icons/01-play.svg'\nimport pauseIcon from '../../icons/02-pause.svg'\nimport stopIcon from '../../icons/03-stop.svg'\nimport volumeIcon from '../../icons/04-volume.svg'\nimport volumeMuteIcon from '../../icons/05-mute.svg'\nimport fullscreenIcon from '../../icons/06-expand.svg'\nimport exitFullscreenIcon from '../../icons/07-shrink.svg'\nimport hdIcon from '../../icons/08-hd.svg'\n\nexport default class MediaControl extends UIObject {\n get name() { return 'MediaControl' }\n get disabled() { return this.userDisabled || (this.container && this.container.getPlaybackType() === Playback.NO_OP) }\n\n get attributes() {\n return {\n 'class': 'media-control',\n 'data-media-control': ''\n }\n }\n\n get events() {\n return {\n 'click [data-play]': 'play',\n 'click [data-pause]': 'pause',\n 'click [data-playpause]': 'togglePlayPause',\n 'click [data-stop]': 'stop',\n 'click [data-playstop]': 'togglePlayStop',\n 'click [data-fullscreen]': 'toggleFullscreen',\n 'click .bar-container[data-seekbar]': 'seek',\n 'click .bar-container[data-volume]': 'onVolumeClick',\n 'click .drawer-icon[data-volume]': 'toggleMute',\n 'mouseenter .drawer-container[data-volume]': 'showVolumeBar',\n 'mouseleave .drawer-container[data-volume]': 'hideVolumeBar',\n 'mousedown .bar-container[data-volume]': 'startVolumeDrag',\n 'mousemove .bar-container[data-volume]': 'mousemoveOnVolumeBar',\n 'mousedown .bar-scrubber[data-seekbar]': 'startSeekDrag',\n 'mousemove .bar-container[data-seekbar]': 'mousemoveOnSeekBar',\n 'mouseleave .bar-container[data-seekbar]': 'mouseleaveOnSeekBar',\n 'mouseenter .media-control-layer[data-controls]': 'setUserKeepVisible',\n 'mouseleave .media-control-layer[data-controls]': 'resetUserKeepVisible'\n }\n }\n\n get template() { return template(mediaControlHTML) }\n\n get volume() { return (this.container && this.container.isReady) ? this.container.volume : this.intendedVolume }\n get muted() { return this.volume === 0 }\n\n constructor(options) {\n super(options)\n this.persistConfig = this.options.persistConfig\n this.container = options.container\n this.currentPositionValue = null\n this.currentDurationValue = null\n this.keepVisible = false\n this.fullScreenOnVideoTagSupported = null // unknown\n this.setInitialVolume()\n this.addEventListeners()\n this.settings = {\n left: ['play', 'stop', 'pause'],\n right: ['volume'],\n default: ['position', 'seekbar', 'duration']\n }\n this.kibo = new Kibo(this.options.focusElement)\n this.bindKeyEvents()\n\n if (this.container) {\n if (!$.isEmptyObject(this.container.settings))\n this.settings = $.extend({}, this.container.settings)\n\n } else { this.settings = {} }\n\n\n this.userDisabled = false\n if ((this.container && this.container.mediaControlDisabled) || this.options.chromeless)\n this.disable()\n\n this.stopDragHandler = (event) => this.stopDrag(event)\n this.updateDragHandler = (event) => this.updateDrag(event)\n $(document).bind('mouseup', this.stopDragHandler)\n $(document).bind('mousemove', this.updateDragHandler)\n }\n\n addEventListeners() {\n if (this.container) {\n Mediator.on(`${this.options.playerId}:${Events.PLAYER_RESIZE}`, this.playerResize, this)\n this.listenTo(this.container, Events.CONTAINER_PLAY, this.changeTogglePlay)\n this.listenTo(this.container, Events.CONTAINER_PAUSE, this.changeTogglePlay)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.changeTogglePlay)\n this.listenTo(this.container, Events.CONTAINER_DBLCLICK, this.toggleFullscreen)\n this.listenTo(this.container, Events.CONTAINER_TIMEUPDATE, this.onTimeUpdate)\n this.listenTo(this.container, Events.CONTAINER_PROGRESS, this.updateProgressBar)\n this.listenTo(this.container, Events.CONTAINER_SETTINGSUPDATE, this.settingsUpdate)\n this.listenTo(this.container, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.settingsUpdate)\n this.listenTo(this.container, Events.CONTAINER_HIGHDEFINITIONUPDATE, this.highDefinitionUpdate)\n this.listenTo(this.container, Events.CONTAINER_MEDIACONTROL_DISABLE, this.disable)\n this.listenTo(this.container, Events.CONTAINER_MEDIACONTROL_ENABLE, this.enable)\n this.listenTo(this.container, Events.CONTAINER_ENDED, this.ended)\n this.listenTo(this.container, Events.CONTAINER_VOLUME, this.onVolumeChanged)\n this.listenTo(this.container, Events.CONTAINER_OPTIONS_CHANGE, this.setInitialVolume)\n if (this.container.playback.el.nodeName.toLowerCase() === 'video') {\n // wait until the metadata has loaded and then check if fullscreen on video tag is supported\n this.listenToOnce(this.container, Events.CONTAINER_LOADEDMETADATA, this.onLoadedMetadataOnVideoTag)\n }\n }\n }\n\n disable() {\n this.userDisabled = true\n this.hide()\n this.unbindKeyEvents()\n this.$el.hide()\n }\n\n enable() {\n if (this.options.chromeless) return\n this.userDisabled = false\n this.bindKeyEvents()\n this.show()\n }\n\n play() {\n this.container.play()\n }\n\n pause() {\n this.container.pause()\n }\n\n stop() {\n this.container.stop()\n }\n\n setInitialVolume() {\n const initialVolume = (this.persistConfig) ? Config.restore('volume') : 100\n const options = this.container && this.container.options || this.options\n this.setVolume(options.mute ? 0 : initialVolume, true)\n }\n\n onVolumeChanged() {\n this.updateVolumeUI()\n }\n\n onLoadedMetadataOnVideoTag() {\n let video = this.container.playback.el\n // video.webkitSupportsFullscreen is deprecated but iOS appears to only use this\n // see https://github.com/clappr/clappr/issues/1127\n if (!Fullscreen.fullscreenEnabled() && video.webkitSupportsFullscreen) {\n this.fullScreenOnVideoTagSupported = true\n this.settingsUpdate()\n }\n }\n\n updateVolumeUI() {\n if (!this.rendered) {\n // this will be called after a render\n return\n }\n // update volume bar scrubber/fill on bar mode\n this.$volumeBarContainer.find('.bar-fill-2').css({})\n const containerWidth = this.$volumeBarContainer.width()\n const barWidth = this.$volumeBarBackground.width()\n const offset = (containerWidth - barWidth) / 2.0\n const pos = barWidth * this.volume / 100.0 + offset\n this.$volumeBarFill.css({ width: `${this.volume}%` })\n this.$volumeBarScrubber.css({ left: pos })\n\n // update volume bar segments on segmented bar mode\n this.$volumeBarContainer.find('.segmented-bar-element').removeClass('fill')\n const item = Math.ceil(this.volume / 10.0)\n this.$volumeBarContainer.find('.segmented-bar-element').slice(0, item).addClass('fill')\n this.$volumeIcon.html('')\n this.$volumeIcon.removeClass('muted')\n if (!this.muted) { this.$volumeIcon.append(volumeIcon) } else {\n this.$volumeIcon.append(volumeMuteIcon)\n this.$volumeIcon.addClass('muted')\n }\n this.applyButtonStyle(this.$volumeIcon)\n }\n\n changeTogglePlay() {\n this.$playPauseToggle.html('')\n this.$playStopToggle.html('')\n if (this.container && this.container.isPlaying()) {\n this.$playPauseToggle.append(pauseIcon)\n this.$playStopToggle.append(stopIcon)\n this.trigger(Events.MEDIACONTROL_PLAYING)\n } else {\n this.$playPauseToggle.append(playIcon)\n this.$playStopToggle.append(playIcon)\n this.trigger(Events.MEDIACONTROL_NOTPLAYING)\n if (Browser.isMobile)\n this.show()\n\n }\n this.applyButtonStyle(this.$playPauseToggle)\n this.applyButtonStyle(this.$playStopToggle)\n }\n\n mousemoveOnSeekBar(event) {\n if (this.settings.seekEnabled) {\n const offsetX = event.pageX - this.$seekBarContainer.offset().left - (this.$seekBarHover.width() / 2)\n this.$seekBarHover.css({ left: offsetX })\n }\n this.trigger(Events.MEDIACONTROL_MOUSEMOVE_SEEKBAR, event)\n }\n\n mouseleaveOnSeekBar(event) {\n this.trigger(Events.MEDIACONTROL_MOUSELEAVE_SEEKBAR, event)\n }\n\n onVolumeClick(event) {\n this.setVolume(this.getVolumeFromUIEvent(event))\n }\n\n mousemoveOnVolumeBar(event) {\n if (this.draggingVolumeBar)\n this.setVolume(this.getVolumeFromUIEvent(event))\n }\n\n playerResize(size) {\n this.$fullscreenToggle.html('')\n if (Fullscreen.isFullscreen())\n this.$fullscreenToggle.append(exitFullscreenIcon)\n else\n this.$fullscreenToggle.append(fullscreenIcon)\n\n this.applyButtonStyle(this.$fullscreenToggle)\n this.$el.removeClass('w320')\n if (size.width <= 320 || this.options.hideVolumeBar)\n this.$el.addClass('w320')\n\n }\n\n togglePlayPause() {\n if (this.container.isPlaying())\n this.container.pause()\n else\n this.container.play()\n\n return false\n }\n\n togglePlayStop() {\n if (this.container.isPlaying())\n this.container.stop()\n else\n this.container.play()\n\n }\n\n startSeekDrag(event) {\n if (!this.settings.seekEnabled) return\n this.draggingSeekBar = true\n this.$el.addClass('dragging')\n this.$seekBarLoaded.addClass('media-control-notransition')\n this.$seekBarPosition.addClass('media-control-notransition')\n this.$seekBarScrubber.addClass('media-control-notransition')\n if (event)\n event.preventDefault()\n\n }\n\n startVolumeDrag(event) {\n this.draggingVolumeBar = true\n this.$el.addClass('dragging')\n if (event)\n event.preventDefault()\n\n }\n\n stopDrag(event) {\n if (this.draggingSeekBar)\n this.seek(event)\n\n this.$el.removeClass('dragging')\n this.$seekBarLoaded.removeClass('media-control-notransition')\n this.$seekBarPosition.removeClass('media-control-notransition')\n this.$seekBarScrubber.removeClass('media-control-notransition dragging')\n this.draggingSeekBar = false\n this.draggingVolumeBar = false\n }\n\n updateDrag(event) {\n if (this.draggingSeekBar) {\n event.preventDefault()\n const offsetX = event.pageX - this.$seekBarContainer.offset().left\n let pos = offsetX / this.$seekBarContainer.width() * 100\n pos = Math.min(100, Math.max(pos, 0))\n this.setSeekPercentage(pos)\n } else if (this.draggingVolumeBar) {\n event.preventDefault()\n this.setVolume(this.getVolumeFromUIEvent(event))\n }\n }\n\n getVolumeFromUIEvent(event) {\n const offsetY = event.pageX - this.$volumeBarContainer.offset().left\n const volumeFromUI = (offsetY / this.$volumeBarContainer.width()) * 100\n return volumeFromUI\n }\n\n toggleMute() {\n this.setVolume(this.muted ? 100 : 0)\n }\n\n setVolume(value, isInitialVolume = false) {\n value = Math.min(100, Math.max(value, 0))\n // this will hold the intended volume\n // it may not actually get set to this straight away\n // if the container is not ready etc\n this.intendedVolume = value\n this.persistConfig && !isInitialVolume && Config.persist('volume', value)\n const setWhenContainerReady = () => {\n if (this.container.isReady) { this.container.setVolume(value) } else {\n this.listenToOnce(this.container, Events.CONTAINER_READY, () => {\n this.container.setVolume(value)\n })\n }\n }\n\n if (!this.container) {\n this.listenToOnce(this, Events.MEDIACONTROL_CONTAINERCHANGED, () => {\n setWhenContainerReady()\n })\n } else { setWhenContainerReady() }\n\n }\n\n toggleFullscreen() {\n this.trigger(Events.MEDIACONTROL_FULLSCREEN, this.name)\n this.container.fullscreen()\n this.resetUserKeepVisible()\n }\n\n setContainer(container) {\n if (this.container) {\n this.stopListening(this.container)\n this.fullScreenOnVideoTagSupported = null\n }\n Mediator.off(`${this.options.playerId}:${Events.PLAYER_RESIZE}`, this.playerResize, this)\n this.container = container\n // set the new container to match the volume of the last one\n this.setVolume(this.intendedVolume, true)\n this.changeTogglePlay()\n this.addEventListeners()\n this.settingsUpdate()\n this.container.trigger(Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.container.isDvrInUse())\n if (this.container.mediaControlDisabled)\n this.disable()\n\n this.trigger(Events.MEDIACONTROL_CONTAINERCHANGED)\n }\n\n showVolumeBar() {\n if (this.hideVolumeId)\n clearTimeout(this.hideVolumeId)\n\n this.$volumeBarContainer.removeClass('volume-bar-hide')\n }\n\n hideVolumeBar(timeout = 400) {\n if (!this.$volumeBarContainer) return\n if (this.draggingVolumeBar) { this.hideVolumeId = setTimeout(() => this.hideVolumeBar(), timeout) } else {\n if (this.hideVolumeId)\n clearTimeout(this.hideVolumeId)\n\n this.hideVolumeId = setTimeout(() => this.$volumeBarContainer.addClass('volume-bar-hide'), timeout)\n }\n }\n\n ended() {\n this.changeTogglePlay()\n }\n\n updateProgressBar(progress) {\n const loadedStart = progress.start / progress.total * 100\n const loadedEnd = progress.current / progress.total * 100\n this.$seekBarLoaded.css({ left: `${loadedStart}%`, width: `${loadedEnd - loadedStart}%` })\n }\n\n onTimeUpdate(timeProgress) {\n if (this.draggingSeekBar) return\n // TODO why should current time ever be negative?\n const position = (timeProgress.current < 0) ? timeProgress.total : timeProgress.current\n\n this.currentPositionValue = position\n this.currentDurationValue = timeProgress.total\n this.renderSeekBar()\n }\n\n renderSeekBar() {\n if (this.currentPositionValue === null || this.currentDurationValue === null) {\n // this will be triggered as soon as these beocome available\n return\n }\n\n // default to 100%\n this.currentSeekBarPercentage = 100\n if (this.container.getPlaybackType() !== Playback.LIVE || this.container.isDvrInUse())\n this.currentSeekBarPercentage = (this.currentPositionValue / this.currentDurationValue) * 100\n\n this.setSeekPercentage(this.currentSeekBarPercentage)\n\n const newPosition = formatTime(this.currentPositionValue)\n const newDuration = formatTime(this.currentDurationValue)\n if (newPosition !== this.displayedPosition) {\n this.$position.text(newPosition)\n this.displayedPosition = newPosition\n }\n if (newDuration !== this.displayedDuration) {\n this.$duration.text(newDuration)\n this.displayedDuration = newDuration\n }\n }\n\n seek(event) {\n if (!this.settings.seekEnabled) return\n const offsetX = event.pageX - this.$seekBarContainer.offset().left\n let pos = offsetX / this.$seekBarContainer.width() * 100\n pos = Math.min(100, Math.max(pos, 0))\n this.container.seekPercentage(pos)\n this.setSeekPercentage(pos)\n return false\n }\n\n setKeepVisible() {\n this.keepVisible = true\n }\n\n resetKeepVisible() {\n this.keepVisible = false\n }\n\n setUserKeepVisible() {\n this.userKeepVisible = true\n }\n\n resetUserKeepVisible() {\n this.userKeepVisible = false\n }\n\n isVisible() {\n return !this.$el.hasClass('media-control-hide')\n }\n\n show(event) {\n if (this.disabled)\n return\n\n const timeout = 2000\n if (!event || (event.clientX !== this.lastMouseX && event.clientY !== this.lastMouseY) || navigator.userAgent.match(/firefox/i)) {\n clearTimeout(this.hideId)\n this.$el.show()\n this.trigger(Events.MEDIACONTROL_SHOW, this.name)\n this.$el.removeClass('media-control-hide')\n this.hideId = setTimeout(() => this.hide(), timeout)\n if (event) {\n this.lastMouseX = event.clientX\n this.lastMouseY = event.clientY\n }\n }\n }\n\n hide(delay = 0) {\n if (!this.isVisible()) return\n\n const timeout = delay || 2000\n clearTimeout(this.hideId)\n if (!this.disabled && this.options.hideMediaControl === false)\n return\n\n if (!this.disabled && (delay || this.userKeepVisible || this.keepVisible || this.draggingSeekBar || this.draggingVolumeBar)) { this.hideId = setTimeout(() => this.hide(), timeout) } else {\n this.trigger(Events.MEDIACONTROL_HIDE, this.name)\n this.$el.addClass('media-control-hide')\n this.hideVolumeBar(0)\n }\n }\n\n settingsUpdate() {\n const newSettings = this.getSettings()\n if (newSettings && !this.fullScreenOnVideoTagSupported && !Fullscreen.fullscreenEnabled()) {\n // remove fullscreen from settings if it is present\n newSettings.default && removeArrayItem(newSettings.default, 'fullscreen')\n newSettings.left && removeArrayItem(newSettings.left, 'fullscreen')\n newSettings.right && removeArrayItem(newSettings.right, 'fullscreen')\n }\n const settingsChanged = JSON.stringify(this.settings) !== JSON.stringify(newSettings)\n if (settingsChanged) {\n this.settings = newSettings\n this.render()\n }\n }\n\n getSettings() {\n return $.extend(true, {}, this.container.settings)\n }\n\n highDefinitionUpdate(isHD) {\n this.isHD = isHD\n const method = isHD ? 'addClass' : 'removeClass'\n this.$hdIndicator[method]('enabled')\n }\n\n createCachedElements() {\n const $layer = this.$el.find('.media-control-layer')\n this.$duration = $layer.find('.media-control-indicator[data-duration]')\n this.$fullscreenToggle = $layer.find('button.media-control-button[data-fullscreen]')\n this.$playPauseToggle = $layer.find('button.media-control-button[data-playpause]')\n this.$playStopToggle = $layer.find('button.media-control-button[data-playstop]')\n this.$position = $layer.find('.media-control-indicator[data-position]')\n this.$seekBarContainer = $layer.find('.bar-container[data-seekbar]')\n this.$seekBarHover = $layer.find('.bar-hover[data-seekbar]')\n this.$seekBarLoaded = $layer.find('.bar-fill-1[data-seekbar]')\n this.$seekBarPosition = $layer.find('.bar-fill-2[data-seekbar]')\n this.$seekBarScrubber = $layer.find('.bar-scrubber[data-seekbar]')\n this.$volumeBarContainer = $layer.find('.bar-container[data-volume]')\n this.$volumeContainer = $layer.find('.drawer-container[data-volume]')\n this.$volumeIcon = $layer.find('.drawer-icon[data-volume]')\n this.$volumeBarBackground = this.$el.find('.bar-background[data-volume]')\n this.$volumeBarFill = this.$el.find('.bar-fill-1[data-volume]')\n this.$volumeBarScrubber = this.$el.find('.bar-scrubber[data-volume]')\n this.$hdIndicator = this.$el.find('button.media-control-button[data-hd-indicator]')\n this.resetIndicators()\n this.initializeIcons()\n }\n\n resetIndicators() {\n this.displayedPosition = this.$position.text()\n this.displayedDuration = this.$duration.text()\n }\n\n initializeIcons() {\n const $layer = this.$el.find('.media-control-layer')\n $layer.find('button.media-control-button[data-play]').append(playIcon)\n $layer.find('button.media-control-button[data-pause]').append(pauseIcon)\n $layer.find('button.media-control-button[data-stop]').append(stopIcon)\n this.$playPauseToggle.append(playIcon)\n this.$playStopToggle.append(playIcon)\n this.$volumeIcon.append(volumeIcon)\n this.$fullscreenToggle.append(fullscreenIcon)\n this.$hdIndicator.append(hdIcon)\n }\n\n setSeekPercentage(value) {\n value = Math.max(Math.min(value, 100.0), 0)\n if (this.displayedSeekBarPercentage === value) {\n // not changed since last update\n return\n }\n this.displayedSeekBarPercentage = value\n\n this.$seekBarPosition.removeClass('media-control-notransition')\n this.$seekBarScrubber.removeClass('media-control-notransition')\n this.$seekBarPosition.css({ width: `${value}%` })\n this.$seekBarScrubber.css({ left: `${value}%` })\n }\n\n seekRelative(delta) {\n if (!this.settings.seekEnabled) return\n const currentTime = this.container.getCurrentTime()\n const duration = this.container.getDuration()\n let position = Math.min(Math.max(currentTime + delta, 0), duration)\n position = Math.min(position * 100 / duration, 100)\n this.container.seekPercentage(position)\n }\n\n bindKeyAndShow(key, cb) {\n this.kibo.down(key, () => {\n this.show()\n return cb()\n })\n }\n\n bindKeyEvents() {\n if (Browser.isMobile || this.options.disableKeyboardShortcuts) return\n\n this.unbindKeyEvents()\n\n this.bindKeyAndShow('space', () => this.togglePlayPause())\n this.bindKeyAndShow('left', () => this.seekRelative(-5))\n this.bindKeyAndShow('right', () => this.seekRelative(5))\n this.bindKeyAndShow('shift left', () => this.seekRelative(-10))\n this.bindKeyAndShow('shift right', () => this.seekRelative(10))\n this.bindKeyAndShow('shift ctrl left', () => this.seekRelative(-15))\n this.bindKeyAndShow('shift ctrl right', () => this.seekRelative(15))\n const keys = ['1','2','3','4','5','6','7','8','9','0']\n keys.forEach((i) => { this.bindKeyAndShow(i, () => this.settings.seekEnabled && this.container.seekPercentage(i * 10)) })\n }\n\n unbindKeyEvents() {\n if (this.kibo) {\n this.kibo.off('space')\n this.kibo.off('left')\n this.kibo.off('right')\n this.kibo.off('shift left')\n this.kibo.off('shift right')\n this.kibo.off('shift ctrl left')\n this.kibo.off('shift ctrl right')\n this.kibo.off(['1','2','3','4','5','6','7','8','9','0'])\n }\n }\n\n parseColors() {\n if (this.options.mediacontrol) {\n this.buttonsColor = this.options.mediacontrol.buttons\n const seekbarColor = this.options.mediacontrol.seekbar\n this.$el.find('.bar-fill-2[data-seekbar]').css('background-color', seekbarColor)\n this.$el.find('.media-control-icon svg path').css('fill', this.buttonsColor)\n this.$el.find('.segmented-bar-element[data-volume]').css('boxShadow', 'inset 2px 0 0 ' + this.buttonsColor)\n }\n }\n\n applyButtonStyle(element) {\n if (this.buttonsColor && element)\n $(element).find('svg path').css('fill', this.buttonsColor)\n\n }\n\n destroy() {\n this.remove()\n $(document).unbind('mouseup', this.stopDragHandler)\n $(document).unbind('mousemove', this.updateDragHandler)\n this.unbindKeyEvents()\n this.stopListening()\n }\n\n /**\n * enables to configure the media control after its creation\n * @method configure\n * @param {Object} options all the options to change in form of a javascript object\n */\n configure(options) {\n this._options = $.extend(this._options, options)\n this.trigger(Events.MEDIACONTROL_OPTIONS_CHANGE)\n }\n\n render() {\n const timeout = this.options.hideMediaControlDelay || 2000\n this.$el.html(this.template({ settings: this.settings }))\n this.createCachedElements()\n this.$playPauseToggle.addClass('paused')\n this.$playStopToggle.addClass('stopped')\n\n this.changeTogglePlay()\n this.hideId = setTimeout(() => this.hide(), timeout)\n if (this.disabled)\n this.hide()\n\n\n // Video volume cannot be changed with Safari on mobile devices\n // Display mute/unmute icon only if Safari version >= 10\n if (Browser.isSafari && Browser.isMobile) {\n if (Browser.version < 10)\n this.$volumeContainer.css('display','none')\n else\n this.$volumeBarContainer.css('display','none')\n\n }\n\n this.$seekBarPosition.addClass('media-control-notransition')\n this.$seekBarScrubber.addClass('media-control-notransition')\n\n let previousSeekPercentage = 0\n if (this.displayedSeekBarPercentage)\n previousSeekPercentage = this.displayedSeekBarPercentage\n\n this.displayedSeekBarPercentage = null\n this.setSeekPercentage(previousSeekPercentage)\n\n process.nextTick(() => {\n if (!this.settings.seekEnabled)\n this.$seekBarContainer.addClass('seek-disabled')\n\n this.playerResize({ width: this.options.width, height: this.options.height })\n this.hideVolumeBar(0)\n })\n\n this.parseColors()\n this.highDefinitionUpdate(this.isHD)\n\n this.rendered = true\n this.updateVolumeUI()\n this.trigger(Events.MEDIACONTROL_RENDERED)\n return this\n }\n}\n\nMediaControl.extend = function(properties) {\n return extend(MediaControl, properties)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/media_control/media_control.js","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/babel-runtime/core-js/json/stringify.js\n// module id = 156\n// module chunks = 0","var core = require('../../modules/_core')\n , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});\nmodule.exports = function stringify(it){ // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/json/stringify.js\n// module id = 157\n// module chunks = 0","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./media-control.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./media-control.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./media-control.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/media_control/public/media-control.scss\n// module id = 158\n// module chunks = 0","var escape = require(\"../../../../node_modules/css-loader/lib/url/escape.js\");\nexports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".media-control-notransition{transition:none!important}.media-control[data-media-control]{position:absolute;width:100%;height:100%;z-index:9999;pointer-events:none}.media-control[data-media-control].dragging{pointer-events:auto;cursor:-webkit-grabbing!important;cursor:grabbing!important;cursor:url(\" + escape(require(\"./closed-hand.cur\")) + \"),move}.media-control[data-media-control].dragging *{cursor:-webkit-grabbing!important;cursor:grabbing!important;cursor:url(\" + escape(require(\"./closed-hand.cur\")) + \"),move}.media-control[data-media-control] .media-control-background[data-background]{position:absolute;height:40%;width:100%;bottom:0;background:linear-gradient(transparent,rgba(0,0,0,.9));transition:opacity .6s ease-out}.media-control[data-media-control] .media-control-icon{line-height:0;letter-spacing:0;speak:none;color:#fff;opacity:.5;vertical-align:middle;text-align:left;transition:all .1s ease}.media-control[data-media-control] .media-control-icon:hover{color:#fff;opacity:.75;text-shadow:hsla(0,0%,100%,.8) 0 0 5px}.media-control[data-media-control].media-control-hide .media-control-background[data-background]{opacity:0}.media-control[data-media-control].media-control-hide .media-control-layer[data-controls]{bottom:-50px}.media-control[data-media-control].media-control-hide .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar]{opacity:0}.media-control[data-media-control] .media-control-layer[data-controls]{position:absolute;bottom:7px;width:100%;height:32px;font-size:0;vertical-align:middle;pointer-events:auto;transition:bottom .4s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-left-panel[data-media-control]{position:absolute;top:0;left:4px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-center-panel[data-media-control]{height:100%;text-align:center;line-height:32px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-right-panel[data-media-control]{position:absolute;top:0;right:4px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button{background-color:transparent;border:0;margin:0 6px;padding:0;cursor:pointer;display:inline-block;width:32px;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button svg{width:100%;height:22px}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button svg path{fill:#fff}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button:focus{outline:none}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-pause],.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-play],.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-stop]{float:left;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-fullscreen]{float:right;background-color:transparent;border:0;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator]{background-color:transparent;border:0;cursor:default;display:none;float:right;height:100%}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled{display:block;opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-hd-indicator].enabled:hover{opacity:1;text-shadow:none}.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playpause],.media-control[data-media-control] .media-control-layer[data-controls] button.media-control-button[data-playstop]{float:left}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration],.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position]{display:inline-block;font-size:10px;color:#fff;cursor:default;line-height:32px;position:relative}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-position]{margin:0 6px 0 7px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]{color:hsla(0,0%,100%,.5);margin-right:6px}.media-control[data-media-control] .media-control-layer[data-controls] .media-control-indicator[data-duration]:before{content:\\\"|\\\";margin-right:7px}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]{position:absolute;top:-20px;left:0;display:inline-block;vertical-align:middle;width:100%;height:25px;cursor:pointer}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar]{width:100%;height:1px;position:relative;top:12px;background-color:#666}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-1[data-seekbar]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#c2c2c2;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#005aff;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:0;position:absolute;top:-3px;width:5px;height:7px;background-color:hsla(0,0%,100%,.5);transition:opacity .1s ease}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar]:hover .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled{cursor:default}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar].seek-disabled:hover .bar-background[data-seekbar] .bar-hover[data-seekbar]{opacity:0}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar]{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);top:2px;left:0;width:20px;height:20px;opacity:1;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-scrubber[data-seekbar] .bar-scrubber-icon[data-seekbar]{position:absolute;left:6px;top:6px;width:8px;height:8px;border-radius:10px;box-shadow:0 0 0 6px hsla(0,0%,100%,.2);background-color:#fff}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume]{float:right;display:inline-block;height:32px;cursor:pointer;margin:0 6px;box-sizing:border-box}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume]{float:left;bottom:0}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]{background-color:transparent;border:0;box-sizing:content-box;width:32px;height:32px;opacity:.5}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume]:hover{opacity:.75}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] svg{height:24px;position:relative;top:3px}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume] svg path{fill:#fff}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .drawer-icon-container[data-volume] .drawer-icon[data-volume].muted svg{margin-left:2px}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume]{float:left;position:relative;overflow:hidden;top:6px;width:42px;height:18px;padding:3px 0;transition:width .2s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume]{height:1px;position:relative;top:7px;margin:0 3px;background-color:#666}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] .bar-fill-1[data-volume]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#c2c2c2;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] .bar-fill-2[data-volume]{position:absolute;top:0;left:0;width:0;height:100%;background-color:#005aff;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-background[data-volume] .bar-hover[data-volume]{opacity:0;position:absolute;top:-3px;width:5px;height:7px;background-color:hsla(0,0%,100%,.5);transition:opacity .1s ease}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-scrubber[data-volume]{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);top:0;left:0;width:20px;height:20px;opacity:1;transition:all .1s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .bar-scrubber[data-volume] .bar-scrubber-icon[data-volume]{position:absolute;left:6px;top:6px;width:8px;height:8px;border-radius:10px;box-shadow:0 0 0 6px hsla(0,0%,100%,.2);background-color:#fff}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]{float:left;width:4px;padding-left:2px;height:12px;opacity:.5;box-shadow:inset 2px 0 0 #fff;transition:-webkit-transform .2s ease-out;transition:transform .2s ease-out;transition:transform .2s ease-out,-webkit-transform .2s ease-out}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume].fill{box-shadow:inset 2px 0 0 #fff;opacity:1}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:first-of-type{padding-left:0}.media-control[data-media-control] .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume] .segmented-bar-element[data-volume]:hover{-webkit-transform:scaleY(1.5);transform:scaleY(1.5)}.media-control[data-media-control].w320 .media-control-layer[data-controls] .drawer-container[data-volume] .bar-container[data-volume].volume-bar-hide{width:0;height:12px;top:9px;padding:0}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./node_modules/postcss-loader/lib!./node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./src/components/media_control/public/media-control.scss\n// module id = 159\n// module chunks = 0","module.exports = \"<div class=\\\"media-control-background\\\" data-background></div>\\n<div class=\\\"media-control-layer\\\" data-controls>\\n <% var renderBar = function(name) { %>\\n <div class=\\\"bar-container\\\" data-<%= name %>>\\n <div class=\\\"bar-background\\\" data-<%= name %>>\\n <div class=\\\"bar-fill-1\\\" data-<%= name %>></div>\\n <div class=\\\"bar-fill-2\\\" data-<%= name %>></div>\\n <div class=\\\"bar-hover\\\" data-<%= name %>></div>\\n </div>\\n <div class=\\\"bar-scrubber\\\" data-<%= name %>>\\n <div class=\\\"bar-scrubber-icon\\\" data-<%= name %>></div>\\n </div>\\n </div>\\n <% }; %>\\n <% var renderSegmentedBar = function(name, segments) {\\n segments = segments || 10; %>\\n <div class=\\\"bar-container\\\" data-<%= name %>>\\n <% for (var i = 0; i < segments; i++) { %>\\n <div class=\\\"segmented-bar-element\\\" data-<%= name %>></div>\\n <% } %>\\n </div>\\n <% }; %>\\n <% var renderDrawer = function(name, renderContent) { %>\\n <div class=\\\"drawer-container\\\" data-<%= name %>>\\n <div class=\\\"drawer-icon-container\\\" data-<%= name %>>\\n <div class=\\\"drawer-icon media-control-icon\\\" data-<%= name %>></div>\\n <span class=\\\"drawer-text\\\" data-<%= name %>></span>\\n </div>\\n <% renderContent(name); %>\\n </div>\\n <% }; %>\\n <% var renderIndicator = function(name) { %>\\n <div class=\\\"media-control-indicator\\\" data-<%= name %>></div>\\n <% }; %>\\n <% var renderButton = function(name) { %>\\n <button type=\\\"button\\\" class=\\\"media-control-button media-control-icon\\\" data-<%= name %> aria-label=\\\"<%= name %>\\\"></button>\\n <% }; %>\\n <% var templates = {\\n bar: renderBar,\\n segmentedBar: renderSegmentedBar,\\n };\\n var render = function(settingsList) {\\n settingsList.forEach(function(setting) {\\n if(setting === \\\"seekbar\\\") {\\n renderBar(setting);\\n } else if (setting === \\\"volume\\\") {\\n renderDrawer(setting, settings.volumeBarTemplate ? templates[settings.volumeBarTemplate] : function(name) { return renderSegmentedBar(name); });\\n } else if (setting === \\\"duration\\\" || setting === \\\"position\\\") {\\n renderIndicator(setting);\\n } else {\\n renderButton(setting);\\n }\\n });\\n }; %>\\n <% if (settings.default && settings.default.length) { %>\\n <div class=\\\"media-control-center-panel\\\" data-media-control>\\n <% render(settings.default); %>\\n </div>\\n <% } %>\\n <% if (settings.left && settings.left.length) { %>\\n <div class=\\\"media-control-left-panel\\\" data-media-control>\\n <% render(settings.left); %>\\n </div>\\n <% } %>\\n <% if (settings.right && settings.right.length) { %>\\n <div class=\\\"media-control-right-panel\\\" data-media-control>\\n <% render(settings.right); %>\\n </div>\\n <% } %>\\n</div>\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/media_control/public/media-control.html\n// module id = 160\n// module chunks = 0","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#010101\\\" d=\\\"M1.712 1.24h12.6v13.52h-12.6z\\\"></path></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/icons/03-stop.svg\n// module id = 161\n// module chunks = 0","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#010101\\\" d=\\\"M11.5 11h-.002v1.502L7.798 10H4.5V6h3.297l3.7-2.502V4.5h.003V11zM11 4.49L7.953 6.5H5v3h2.953L11 11.51V4.49z\\\"></path></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/icons/04-volume.svg\n// module id = 162\n// module chunks = 0","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><path fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" fill=\\\"#010101\\\" d=\\\"M9.75 11.51L6.7 9.5H3.75v-3H6.7L9.75 4.49v.664l.497.498V3.498L6.547 6H3.248v4h3.296l3.7 2.502v-2.154l-.497.5v.662zm3-5.165L12.404 6l-1.655 1.653L9.093 6l-.346.345L10.402 8 8.747 9.654l.346.347 1.655-1.653L12.403 10l.348-.346L11.097 8l1.655-1.655z\\\"></path></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/icons/05-mute.svg\n// module id = 163\n// module chunks = 0","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><path fill=\\\"#010101\\\" d=\\\"M7.156 8L4 11.156V8.5H3V13h4.5v-1H4.844L8 8.844 7.156 8zM8.5 3v1h2.657L8 7.157 8.846 8 12 4.844V7.5h1V3H8.5z\\\"></path></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/icons/06-expand.svg\n// module id = 164\n// module chunks = 0","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><path fill=\\\"#010101\\\" d=\\\"M13.5 3.344l-.844-.844L9.5 5.656V3h-1v4.5H13v-1h-2.656L13.5 3.344zM3 9.5h2.656L2.5 12.656l.844.844L6.5 10.344V13h1V8.5H3v1z\\\"></path></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/icons/07-shrink.svg\n// module id = 165\n// module chunks = 0","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><path fill=\\\"#010101\\\" d=\\\"M5.375 7.062H2.637V4.26H.502v7.488h2.135V8.9h2.738v2.848h2.133V4.26H5.375v2.802zm5.97-2.81h-2.84v7.496h2.798c2.65 0 4.195-1.607 4.195-3.77v-.022c0-2.162-1.523-3.704-4.154-3.704zm2.06 3.758c0 1.21-.81 1.896-2.03 1.896h-.83V6.093h.83c1.22 0 2.03.696 2.03 1.896v.02z\\\"></path></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/icons/08-hd.svg\n// module id = 166\n// module chunks = 0","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/core/public/style.scss\n// module id = 167\n// module chunks = 0","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"[data-player]{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transform:translateZ(0);transform:translateZ(0);position:relative;margin:0;padding:0;border:0;font-style:normal;font-weight:400;text-align:center;overflow:hidden;font-size:100%;font-family:Roboto,Open Sans,Arial,sans-serif;text-shadow:0 0 0;box-sizing:border-box}[data-player] a,[data-player] abbr,[data-player] acronym,[data-player] address,[data-player] applet,[data-player] article,[data-player] aside,[data-player] audio,[data-player] b,[data-player] big,[data-player] blockquote,[data-player] canvas,[data-player] caption,[data-player] center,[data-player] cite,[data-player] code,[data-player] dd,[data-player] del,[data-player] details,[data-player] dfn,[data-player] div,[data-player] dl,[data-player] dt,[data-player] em,[data-player] embed,[data-player] fieldset,[data-player] figcaption,[data-player] figure,[data-player] footer,[data-player] form,[data-player] h1,[data-player] h2,[data-player] h3,[data-player] h4,[data-player] h5,[data-player] h6,[data-player] header,[data-player] hgroup,[data-player] i,[data-player] iframe,[data-player] img,[data-player] ins,[data-player] kbd,[data-player] label,[data-player] legend,[data-player] li,[data-player] mark,[data-player] menu,[data-player] nav,[data-player] object,[data-player] ol,[data-player] output,[data-player] p,[data-player] pre,[data-player] q,[data-player] ruby,[data-player] s,[data-player] samp,[data-player] section,[data-player] small,[data-player] span,[data-player] strike,[data-player] strong,[data-player] sub,[data-player] summary,[data-player] sup,[data-player] table,[data-player] tbody,[data-player] td,[data-player] tfoot,[data-player] th,[data-player] thead,[data-player] time,[data-player] tr,[data-player] tt,[data-player] u,[data-player] ul,[data-player] var,[data-player] video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}[data-player] table{border-collapse:collapse;border-spacing:0}[data-player] caption,[data-player] td,[data-player] th{text-align:left;font-weight:400;vertical-align:middle}[data-player] blockquote,[data-player] q{quotes:none}[data-player] blockquote:after,[data-player] blockquote:before,[data-player] q:after,[data-player] q:before{content:\\\"\\\";content:none}[data-player] a img{border:none}[data-player]:focus{outline:0}[data-player] *{max-width:none;box-sizing:inherit;float:none}[data-player] div{display:block}[data-player].fullscreen{width:100%!important;height:100%!important;top:0;left:0}[data-player].nocursor{cursor:none}.clappr-style{display:none!important}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./node_modules/postcss-loader/lib!./node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./src/components/core/public/style.scss\n// module id = 168\n// module chunks = 0","var escape = require(\"../../../../node_modules/css-loader/lib/url/escape.js\");\nexports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:local(\\\"Roboto\\\"),local(\\\"Roboto-Regular\\\"),url(\" + escape(require(\"./Roboto.ttf\")) + \") format(\\\"truetype\\\")}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/core/public/fonts.css\n// module id = 169\n// module chunks = 0","module.exports = \"<%=baseUrl%>/38861cba61c66739c1452c3a71e39852.ttf\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/core/public/Roboto.ttf\n// module id = 170\n// module chunks = 0","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport BaseObject from '../../base/base_object'\nimport PlayerInfo from '../player_info'\n\n/* Playback Plugins */\nimport HTML5VideoPlayback from '../../playbacks/html5_video'\nimport FlashVideoPlayback from '../../playbacks/flash'\nimport HTML5AudioPlayback from '../../playbacks/html5_audio'\nimport FlasHLSVideoPlayback from '../../playbacks/flashls'\nimport HLSVideoPlayback from '../../playbacks/hls'\nimport HTMLImgPlayback from '../../playbacks/html_img'\nimport NoOp from '../../playbacks/no_op'\n\n/* Container Plugins */\nimport SpinnerThreeBouncePlugin from '../../plugins/spinner_three_bounce'\nimport StatsPlugin from '../../plugins/stats'\nimport WaterMarkPlugin from '../../plugins/watermark'\nimport PosterPlugin from '../../plugins/poster'\nimport GoogleAnalyticsPlugin from '../../plugins/google_analytics'\nimport ClickToPausePlugin from '../../plugins/click_to_pause'\n\n/* Core Plugins */\nimport DVRControls from '../../plugins/dvr_controls'\nimport ClosedCaptions from '../../plugins/closed_captions'\nimport Favicon from '../../plugins/favicon'\nimport SeekTime from '../../plugins/seek_time'\nimport SourcesPlugin from '../../plugins/sources'\nimport EndVideo from '../../plugins/end_video'\nimport Strings from '../../plugins/strings'\nimport ErrorScreen from '../../plugins/error_screen'\n\n/**\n * It keeps a list of the default plugins (playback, container, core) and it merges external plugins with its internals.\n * @class Loader\n * @constructor\n * @extends BaseObject\n * @module components\n */\nexport default class Loader extends BaseObject {\n /**\n * builds the loader\n * @method constructor\n * @param {Object} externalPlugins the external plugins\n * @param {Number} playerId you can embed multiple instances of clappr, therefore this is the unique id of each one.\n */\n constructor(externalPlugins = [], playerId = 0, useOnlyPlainHtml5Plugins = PLAIN_HTML5_ONLY) {\n super()\n this.playerId = playerId\n this.playbackPlugins = []\n\n if (!useOnlyPlainHtml5Plugins) {\n this.playbackPlugins = [\n ...this.playbackPlugins,\n HLSVideoPlayback,\n ]\n }\n\n this.playbackPlugins = [\n ...this.playbackPlugins,\n HTML5VideoPlayback,\n HTML5AudioPlayback,\n ]\n\n if (!useOnlyPlainHtml5Plugins) {\n this.playbackPlugins = [\n ...this.playbackPlugins,\n FlashVideoPlayback,\n FlasHLSVideoPlayback\n ]\n }\n\n this.playbackPlugins = [\n ...this.playbackPlugins,\n HTMLImgPlayback,\n NoOp\n ]\n\n this.containerPlugins = [SpinnerThreeBouncePlugin, WaterMarkPlugin, PosterPlugin, StatsPlugin, GoogleAnalyticsPlugin, ClickToPausePlugin]\n this.corePlugins = [DVRControls, ClosedCaptions, Favicon, SeekTime, SourcesPlugin, EndVideo, Strings, ErrorScreen]\n\n if (!Array.isArray(externalPlugins))\n this.validateExternalPluginsType(externalPlugins)\n\n this.addExternalPlugins(externalPlugins)\n }\n\n /**\n * groups by type the external plugins that were passed through `options.plugins` it they're on a flat array\n * @method addExternalPlugins\n * @private\n * @param {Object} an config object or an array of plugins\n * @return {Object} plugins the config object with the plugins separated by type\n */\n groupPluginsByType(plugins) {\n if (Array.isArray(plugins)) {\n plugins = plugins.reduce(function(memo, plugin) {\n memo[plugin.type] || (memo[plugin.type] = [])\n memo[plugin.type].push(plugin)\n return memo\n }, {})\n }\n return plugins\n }\n\n removeDups(list) {\n const groupUp = (plugins, plugin) => {\n plugins[plugin.prototype.name] && delete plugins[plugin.prototype.name]\n plugins[plugin.prototype.name] = plugin\n return plugins\n }\n const pluginsMap = list.reduceRight(groupUp, Object.create(null))\n\n const plugins = []\n for (let key in pluginsMap)\n plugins.unshift(pluginsMap[key])\n\n return plugins\n }\n\n /**\n * adds all the external plugins that were passed through `options.plugins`\n * @method addExternalPlugins\n * @private\n * @param {Object} plugins the config object with all plugins\n */\n addExternalPlugins(plugins) {\n plugins = this.groupPluginsByType(plugins)\n if (plugins.playback)\n this.playbackPlugins = this.removeDups(plugins.playback.concat(this.playbackPlugins))\n\n if (plugins.container)\n this.containerPlugins = this.removeDups(plugins.container.concat(this.containerPlugins))\n\n if (plugins.core)\n this.corePlugins = this.removeDups(plugins.core.concat(this.corePlugins))\n\n\n PlayerInfo.getInstance(this.playerId).playbackPlugins = this.playbackPlugins\n }\n\n /**\n * validate if the external plugins that were passed through `options.plugins` are associated to the correct type\n * @method validateExternalPluginsType\n * @private\n * @param {Object} plugins the config object with all plugins\n */\n validateExternalPluginsType(plugins) {\n const plugintypes = ['playback', 'container', 'core']\n plugintypes.forEach((type) => {\n (plugins[type] || []).forEach((el) => {\n const errorMessage = 'external ' + el.type + ' plugin on ' + type + ' array'\n if (el.type !== type) throw new ReferenceError(errorMessage)\n })\n })\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/loader/loader.js","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/array/from.js\n// module id = 172\n// module chunks = 0","'use strict';\nvar ctx = require('./_ctx')\n , $export = require('./_export')\n , toObject = require('./_to-object')\n , call = require('./_iter-call')\n , isArrayIter = require('./_is-array-iter')\n , toLength = require('./_to-length')\n , createProperty = require('./_create-property')\n , getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function(iter){ Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){\n var O = toObject(arrayLike)\n , C = typeof this == 'function' ? this : Array\n , aLen = arguments.length\n , mapfn = aLen > 1 ? arguments[1] : undefined\n , mapping = mapfn !== undefined\n , index = 0\n , iterFn = getIterFn(O)\n , length, result, step, iterator;\n if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){\n for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for(result = new C(length); length > index; index++){\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.array.from.js\n// module id = 173\n// module chunks = 0","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function(iterator, fn, value, entries){\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch(e){\n var ret = iterator['return'];\n if(ret !== undefined)anObject(ret.call(iterator));\n throw e;\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iter-call.js\n// module id = 174\n// module chunks = 0","// check on default Array iterator\nvar Iterators = require('./_iterators')\n , ITERATOR = require('./_wks')('iterator')\n , ArrayProto = Array.prototype;\n\nmodule.exports = function(it){\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_is-array-iter.js\n// module id = 175\n// module chunks = 0","'use strict';\nvar $defineProperty = require('./_object-dp')\n , createDesc = require('./_property-desc');\n\nmodule.exports = function(object, index, value){\n if(index in object)$defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_create-property.js\n// module id = 176\n// module chunks = 0","var classof = require('./_classof')\n , ITERATOR = require('./_wks')('iterator')\n , Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function(it){\n if(it != undefined)return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/core.get-iterator-method.js\n// module id = 177\n// module chunks = 0","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof')\n , TAG = require('./_wks')('toStringTag')\n // ES3 wrong here\n , ARG = cof(function(){ return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function(it, key){\n try {\n return it[key];\n } catch(e){ /* empty */ }\n};\n\nmodule.exports = function(it){\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_classof.js\n// module id = 178\n// module chunks = 0","var ITERATOR = require('./_wks')('iterator')\n , SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function(){ SAFE_CLOSING = true; };\n Array.from(riter, function(){ throw 2; });\n} catch(e){ /* empty */ }\n\nmodule.exports = function(exec, skipClosing){\n if(!skipClosing && !SAFE_CLOSING)return false;\n var safe = false;\n try {\n var arr = [7]\n , iter = arr[ITERATOR]();\n iter.next = function(){ return {done: safe = true}; };\n arr[ITERATOR] = function(){ return iter; };\n exec(arr);\n } catch(e){ /* empty */ }\n return safe;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iter-detect.js\n// module id = 179\n// module chunks = 0","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { isNumber, seekStringToSeconds, DomRecycler, canAutoPlayMedia } from '../../base/utils'\n\nimport Playback from '../../base/playback'\nimport Browser from '../../components/browser'\nimport PlayerError from '../../components/error'\nimport Events from '../../base/events'\nimport Log from '../../plugins/log'\nimport $ from 'clappr-zepto'\nimport template from '../../base/template'\nimport tracksHTML from './public/tracks.html'\nimport './public/style.scss'\n\nconst MIMETYPES = {\n 'mp4': ['avc1.42E01E', 'avc1.58A01E', 'avc1.4D401E', 'avc1.64001E', 'mp4v.20.8', 'mp4v.20.240', 'mp4a.40.2'].map(\n (codec) => { return 'video/mp4; codecs=\"' + codec + ', mp4a.40.2\"' }),\n 'ogg': ['video/ogg; codecs=\"theora, vorbis\"', 'video/ogg; codecs=\"dirac\"', 'video/ogg; codecs=\"theora, speex\"'],\n '3gpp': ['video/3gpp; codecs=\"mp4v.20.8, samr\"'],\n 'webm': ['video/webm; codecs=\"vp8, vorbis\"'],\n 'mkv': ['video/x-matroska; codecs=\"theora, vorbis\"'],\n 'm3u8': ['application/x-mpegurl']\n}\nMIMETYPES['ogv'] = MIMETYPES['ogg']\nMIMETYPES['3gp'] = MIMETYPES['3gpp']\n\nconst AUDIO_MIMETYPES = {\n 'wav': ['audio/wav'],\n 'mp3': ['audio/mp3', 'audio/mpeg;codecs=\"mp3\"'],\n 'aac': ['audio/mp4;codecs=\"mp4a.40.5\"'],\n 'oga': ['audio/ogg']\n}\n\nconst KNOWN_AUDIO_MIMETYPES = Object.keys(AUDIO_MIMETYPES).reduce((acc, k) => [...acc, ...AUDIO_MIMETYPES[k]], [])\n\nconst UNKNOWN_ERROR = { code: 'unknown', message: 'unknown' }\n\n// TODO: rename this Playback to HTML5Playback (breaking change, only after 0.3.0)\nexport default class HTML5Video extends Playback {\n get name() { return 'html5_video' }\n get tagName() { return this.isAudioOnly ? 'audio' : 'video' }\n\n get isAudioOnly() {\n const resourceUrl = this.options.src\n let mimeTypes = HTML5Video._mimeTypesForUrl(resourceUrl, AUDIO_MIMETYPES, this.options.mimeType)\n return this.options.playback && this.options.playback.audioOnly || this.options.audioOnly || KNOWN_AUDIO_MIMETYPES.indexOf(mimeTypes[0]) >= 0\n }\n\n get attributes() {\n return {\n 'data-html5-video': ''\n }\n }\n\n get events() {\n return {\n 'canplay': '_onCanPlay',\n 'canplaythrough': '_handleBufferingEvents',\n 'durationchange': '_onDurationChange',\n 'ended': '_onEnded',\n 'error': '_onError',\n 'loadeddata': '_onLoadedData',\n 'loadedmetadata': '_onLoadedMetadata',\n 'pause': '_onPause',\n 'playing': '_onPlaying',\n 'progress': '_onProgress',\n 'seeking': '_onSeeking',\n 'seeked': '_onSeeked',\n 'stalled': '_handleBufferingEvents',\n 'timeupdate': '_onTimeUpdate',\n 'waiting': '_onWaiting'\n }\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n get ended() {\n return this.el.ended\n }\n\n /**\n * Determine if the playback is having to buffer in order for\n * playback to be smooth.\n * This is related to the PLAYBACK_BUFFERING and PLAYBACK_BUFFERFULL events\n * @property buffering\n * @type Boolean\n */\n get buffering() {\n return this._isBuffering\n }\n\n constructor(...args) {\n super(...args)\n this._destroyed = false\n this._loadStarted = false\n this._isBuffering = false\n this._playheadMoving = false\n this._playheadMovingTimer = null\n this._stopped = false\n this._ccTrackId = -1\n this._setupSrc(this.options.src)\n // backwards compatibility (TODO: remove on 0.3.0)\n this.options.playback || (this.options.playback = this.options || {})\n this.options.playback.disableContextMenu = this.options.playback.disableContextMenu || this.options.disableVideoTagContextMenu\n\n const playbackConfig = this.options.playback\n const preload = playbackConfig.preload || (Browser.isSafari ? 'auto' : this.options.preload)\n\n let posterUrl // FIXME: poster plugin should always convert poster to object with expected properties ?\n if (this.options.poster) {\n if (typeof this.options.poster === 'string')\n posterUrl = this.options.poster\n else if (typeof this.options.poster.url === 'string')\n posterUrl = this.options.poster.url\n\n }\n\n $.extend(this.el, {\n muted: this.options.mute,\n defaultMuted: this.options.mute,\n loop: this.options.loop,\n poster: posterUrl,\n preload: preload || 'metadata',\n controls: (playbackConfig.controls || this.options.useVideoTagDefaultControls) && 'controls',\n crossOrigin: playbackConfig.crossOrigin,\n 'x-webkit-playsinline': playbackConfig.playInline\n })\n\n playbackConfig.playInline && (this.$el.attr({ playsinline: 'playsinline' }))\n playbackConfig.crossOrigin && (this.$el.attr({ crossorigin: playbackConfig.crossOrigin }))\n\n // TODO should settings be private?\n this.settings = { default: ['seekbar'] }\n this.settings.left = ['playpause', 'position', 'duration']\n this.settings.right = ['fullscreen', 'volume', 'hd-indicator']\n\n playbackConfig.externalTracks && (this._setupExternalTracks(playbackConfig.externalTracks))\n\n this.options.autoPlay && this.attemptAutoPlay()\n }\n\n // See Playback.attemptAutoPlay()\n attemptAutoPlay() {\n this.canAutoPlay((result, error) => {\n error && Log.warn(this.name, 'autoplay error.', { result, error })\n\n // https://github.com/clappr/clappr/issues/1076\n result && process.nextTick(() => !this._destroyed && this.play())\n })\n }\n\n // See Playback.canAutoPlay()\n canAutoPlay(cb) {\n if (this.options.disableCanAutoPlay)\n cb(true, null)\n\n let opts = {\n timeout: this.options.autoPlayTimeout || 500,\n inline: this.options.playback.playInline || false,\n muted: this.options.mute || false, // Known issue: mediacontrols may asynchronously mute video\n }\n\n // Use current video element if recycling feature enabled with mobile devices\n if (Browser.isMobile && DomRecycler.options.recycleVideo)\n opts.element = this.el\n\n // Desktop browser autoplay policy may require user action\n // Mobile browser autoplay require user consent and video recycling feature enabled\n // It may returns a false positive with source-less player consent\n canAutoPlayMedia(cb, opts)\n }\n\n _setupExternalTracks(tracks) {\n this._externalTracks = tracks.map(track => {\n return {\n kind: track.kind || 'subtitles', // Default is 'subtitles'\n label: track.label,\n lang: track.lang,\n src: track.src,\n }\n })\n }\n\n /**\n * Sets the source url on the <video> element, and also the 'src' property.\n * @method setupSrc\n * @private\n * @param {String} srcUrl The source URL.\n */\n _setupSrc(srcUrl) {\n if (this.el.src === srcUrl)\n return\n\n this._ccIsSetup = false\n this.el.src = srcUrl\n this._src = this.el.src\n }\n\n _onLoadedMetadata(e) {\n this._handleBufferingEvents()\n this.trigger(Events.PLAYBACK_LOADEDMETADATA, { duration: e.target.duration, data: e })\n this._updateSettings()\n const autoSeekFromUrl = typeof (this._options.autoSeekFromUrl) === 'undefined' || this._options.autoSeekFromUrl\n if (this.getPlaybackType() !== Playback.LIVE && autoSeekFromUrl)\n this._checkInitialSeek()\n\n }\n\n _onDurationChange() {\n this._updateSettings()\n this._onTimeUpdate()\n // onProgress uses the duration\n this._onProgress()\n }\n\n _updateSettings() {\n // we can't figure out if hls resource is VoD or not until it is being loaded or duration has changed.\n // that's why we check it again and update media control accordingly.\n if (this.getPlaybackType() === Playback.VOD || this.getPlaybackType() === Playback.AOD)\n this.settings.left = ['playpause', 'position', 'duration']\n else\n this.settings.left = ['playstop']\n\n this.settings.seekEnabled = this.isSeekEnabled()\n this.trigger(Events.PLAYBACK_SETTINGSUPDATE)\n }\n\n isSeekEnabled() {\n return isFinite(this.getDuration())\n }\n\n getPlaybackType() {\n const onDemandType = this.tagName === 'audio' ? Playback.AOD : Playback.VOD\n return [0, undefined, Infinity].indexOf(this.el.duration) >= 0 ? Playback.LIVE : onDemandType\n }\n\n isHighDefinitionInUse() {\n return false\n }\n\n // On mobile device, HTML5 video element \"retains\" user action consent if\n // load() method is called. See Player.consent().\n consent() {\n if (!this.isPlaying()) {\n super.consent()\n this.el.load()\n }\n }\n\n play() {\n this.trigger(Events.PLAYBACK_PLAY_INTENT)\n this._stopped = false\n this._setupSrc(this._src)\n this._handleBufferingEvents()\n let promise = this.el.play()\n // For more details, see https://developers.google.com/web/updates/2016/03/play-returns-promise\n if (promise && promise.catch)\n promise.catch(() => {})\n\n }\n\n pause() {\n this.el.pause()\n }\n\n stop() {\n this.pause()\n this._stopped = true\n // src will be added again in play()\n this.el.removeAttribute('src')\n this._stopPlayheadMovingChecks()\n this._handleBufferingEvents()\n this.trigger(Events.PLAYBACK_STOP)\n }\n\n volume(value) {\n if (value === 0) {\n this.$el.attr({ muted: 'true' })\n this.el.muted = true\n } else {\n this.$el.attr({ muted: null })\n this.el.muted = false\n this.el.volume = value / 100\n }\n }\n\n /**\n * @deprecated\n * @private\n */\n mute() {\n this.el.muted = true\n }\n\n /**\n * @deprecated\n * @private\n */\n unmute() {\n this.el.muted = false\n }\n\n isMuted() {\n return !!this.el.volume\n }\n\n isPlaying() {\n return !this.el.paused && !this.el.ended\n }\n\n get isReady() {\n return this._isReadyState\n }\n\n _startPlayheadMovingChecks() {\n if (this._playheadMovingTimer !== null)\n return\n\n this._playheadMovingTimeOnCheck = null\n this._determineIfPlayheadMoving()\n this._playheadMovingTimer = setInterval(this._determineIfPlayheadMoving.bind(this), 500)\n }\n\n _stopPlayheadMovingChecks() {\n if (this._playheadMovingTimer === null)\n return\n\n clearInterval(this._playheadMovingTimer)\n this._playheadMovingTimer = null\n this._playheadMoving = false\n }\n\n _determineIfPlayheadMoving() {\n const before = this._playheadMovingTimeOnCheck\n const now = this.el.currentTime\n this._playheadMoving = before !== now\n this._playheadMovingTimeOnCheck = now\n this._handleBufferingEvents()\n }\n\n // this seems to happen when the user is having to wait\n // for something to happen AFTER A USER INTERACTION\n // e.g the player might be buffering, but when `play()` is called\n // only at this point will this be called.\n // Or the user may seek somewhere but the new area requires buffering,\n // so it will fire then as well.\n // On devices where playing is blocked until requested with a user action,\n // buffering may start, but never finish until the user initiates a play,\n // but this only happens when play is actually requested\n _onWaiting() {\n this._loadStarted = true\n this._handleBufferingEvents()\n }\n\n // called after the first frame has loaded\n // note this doesn't fire on ios before the user has requested play\n // ideally the \"loadstart\" event would be used instead, but this fires\n // before a user has requested play on iOS, and also this is always fired\n // even if the preload setting is \"none\". In both these cases this causes\n // infinite buffering until the user does something which isn't great.\n _onLoadedData() {\n this._loadStarted = true\n this._handleBufferingEvents()\n }\n\n // note this doesn't fire on ios before user has requested play\n _onCanPlay() {\n this._handleBufferingEvents()\n }\n\n _onPlaying() {\n this._checkForClosedCaptions()\n this._startPlayheadMovingChecks()\n this._handleBufferingEvents()\n this.trigger(Events.PLAYBACK_PLAY)\n }\n\n _onPause() {\n this._stopPlayheadMovingChecks()\n this._handleBufferingEvents()\n this.trigger(Events.PLAYBACK_PAUSE)\n }\n\n _onSeeking() {\n this._handleBufferingEvents()\n this.trigger(Events.PLAYBACK_SEEK)\n }\n\n _onSeeked() {\n this._handleBufferingEvents()\n this.trigger(Events.PLAYBACK_SEEKED)\n }\n\n _onEnded() {\n this._handleBufferingEvents()\n this.trigger(Events.PLAYBACK_ENDED, this.name)\n }\n\n // The playback should be classed as buffering if the following are true:\n // - the ready state is less then HAVE_FUTURE_DATA or the playhead isn't moving and it should be\n // - the media hasn't \"ended\",\n // - the media hasn't been stopped\n // - loading has started\n _handleBufferingEvents() {\n const playheadShouldBeMoving = !this.el.ended && !this.el.paused\n const buffering = this._loadStarted && !this.el.ended && !this._stopped && ((playheadShouldBeMoving && !this._playheadMoving) || this.el.readyState < this.el.HAVE_FUTURE_DATA)\n if (this._isBuffering !== buffering) {\n this._isBuffering = buffering\n if (buffering)\n this.trigger(Events.PLAYBACK_BUFFERING, this.name)\n else\n this.trigger(Events.PLAYBACK_BUFFERFULL, this.name)\n\n }\n }\n\n _onError() {\n const { code, message } = this.el.error || UNKNOWN_ERROR\n const isUnknownError = code === UNKNOWN_ERROR.code\n\n const formattedError = this.createError({\n code,\n description: message,\n raw: this.el.error,\n level: isUnknownError ? PlayerError.Levels.WARN : PlayerError.Levels.FATAL\n })\n\n if (isUnknownError)\n Log.warn(this.name, 'HTML5 unknown error: ', formattedError)\n else\n this.trigger(Events.PLAYBACK_ERROR, formattedError)\n }\n\n destroy() {\n this._destroyed = true\n this.handleTextTrackChange && this.el.textTracks.removeEventListener('change', this.handleTextTrackChange)\n super.destroy()\n this.el.removeAttribute('src')\n this._src = null\n DomRecycler.garbage(this.$el)\n }\n\n seek(time) {\n this.el.currentTime = time\n }\n\n seekPercentage(percentage) {\n const time = this.el.duration * (percentage / 100)\n this.seek(time)\n }\n\n _checkInitialSeek() {\n const seekTime = seekStringToSeconds()\n if (seekTime !== 0)\n this.seek(seekTime)\n\n }\n\n getCurrentTime() {\n return this.el.currentTime\n }\n\n getDuration() {\n return this.el.duration\n }\n\n _onTimeUpdate() {\n if (this.getPlaybackType() === Playback.LIVE)\n this.trigger(Events.PLAYBACK_TIMEUPDATE, { current: 1, total: 1 }, this.name)\n else\n this.trigger(Events.PLAYBACK_TIMEUPDATE, { current: this.el.currentTime, total: this.el.duration }, this.name)\n\n }\n\n _onProgress() {\n if (!this.el.buffered.length)\n return\n\n let buffered = []\n let bufferedPos = 0\n for (let i = 0; i < this.el.buffered.length; i++) {\n buffered = [...buffered, { start: this.el.buffered.start(i), end: this.el.buffered.end(i) }]\n if (this.el.currentTime >= buffered[i].start && this.el.currentTime <= buffered[i].end)\n bufferedPos = i\n\n }\n const progress = {\n start: buffered[bufferedPos].start,\n current: buffered[bufferedPos].end,\n total: this.el.duration\n }\n this.trigger(Events.PLAYBACK_PROGRESS, progress, buffered)\n }\n\n _typeFor(src) {\n let mimeTypes = HTML5Video._mimeTypesForUrl(src, MIMETYPES, this.options.mimeType)\n if (mimeTypes.length === 0)\n mimeTypes = HTML5Video._mimeTypesForUrl(src, AUDIO_MIMETYPES, this.options.mimeType)\n\n const mimeType = mimeTypes[0] || ''\n return mimeType.split(';')[0]\n }\n\n _ready() {\n if (this._isReadyState)\n return\n\n this._isReadyState = true\n this.trigger(Events.PLAYBACK_READY, this.name)\n }\n\n _checkForClosedCaptions() {\n // Check if CC available only if current playback is HTML5Video\n if (this.isHTML5Video && !this._ccIsSetup) {\n if (this.hasClosedCaptionsTracks) {\n this.trigger(Events.PLAYBACK_SUBTITLE_AVAILABLE)\n const trackId = this.closedCaptionsTrackId\n this.closedCaptionsTrackId = trackId\n this.handleTextTrackChange = this._handleTextTrackChange.bind(this)\n this.el.textTracks.addEventListener('change', this.handleTextTrackChange)\n }\n this._ccIsSetup = true\n }\n }\n\n _handleTextTrackChange() {\n let tracks = this.closedCaptionsTracks\n let track = tracks.find(track => track.track.mode === 'showing') || { id: -1 }\n\n if (this._ccTrackId !== track.id) {\n this._ccTrackId = track.id\n this.trigger(Events.PLAYBACK_SUBTITLE_CHANGED, {\n id: track.id\n })\n }\n }\n\n get isHTML5Video() {\n return this.name === HTML5Video.prototype.name\n }\n\n get closedCaptionsTracks() {\n let id = 0\n let trackId = () => { return id++ }\n let textTracks = this.el.textTracks ? Array.from(this.el.textTracks) : []\n\n return textTracks\n .filter(track => track.kind === 'subtitles' || track.kind === 'captions')\n .map(track => { return { id: trackId(), name: track.label, track: track } })\n }\n\n get closedCaptionsTrackId() {\n return this._ccTrackId\n }\n\n set closedCaptionsTrackId(trackId) {\n if (!isNumber(trackId))\n return\n\n\n let tracks = this.closedCaptionsTracks\n let showingTrack\n\n // Note: -1 is for hide all tracks\n if (trackId !== -1) {\n showingTrack = tracks.find(track => track.id === trackId)\n if (!showingTrack)\n return // Track id not found\n\n if (showingTrack.track.mode === 'showing')\n return // Track already showing\n\n }\n\n // Since it is possible to display multiple tracks,\n // ensure that all tracks are hidden.\n tracks\n .filter(track => track.track.mode !== 'hidden')\n .forEach(track => track.track.mode = 'hidden')\n\n showingTrack && (showingTrack.track.mode = 'showing')\n\n this._ccTrackId = trackId\n this.trigger(Events.PLAYBACK_SUBTITLE_CHANGED, {\n id: trackId\n })\n }\n\n get template() { return template(tracksHTML) }\n\n render() {\n if (this.options.playback.disableContextMenu) {\n this.$el.on('contextmenu', () => {\n return false\n })\n }\n\n if (this._externalTracks && this._externalTracks.length > 0) {\n this.$el.html(this.template({\n tracks: this._externalTracks,\n }))\n }\n\n this._ready()\n return this\n }\n}\n\nHTML5Video._mimeTypesForUrl = function(resourceUrl, mimeTypesByExtension, mimeType) {\n const extension = (resourceUrl.split('?')[0].match(/.*\\.(.*)$/) || [])[1]\n let mimeTypes = mimeType || (extension && mimeTypesByExtension[extension.toLowerCase()]) || []\n return (mimeTypes.constructor === Array) ? mimeTypes : [mimeTypes]\n}\n\nHTML5Video._canPlay = function(type, mimeTypesByExtension, resourceUrl, mimeType) {\n let mimeTypes = HTML5Video._mimeTypesForUrl(resourceUrl, mimeTypesByExtension, mimeType)\n const media = document.createElement(type)\n return !!(mimeTypes.filter(mediaType => !!media.canPlayType(mediaType).replace(/no/, ''))[0])\n}\n\nHTML5Video.canPlay = function(resourceUrl, mimeType) {\n return HTML5Video._canPlay('audio', AUDIO_MIMETYPES, resourceUrl, mimeType) ||\n HTML5Video._canPlay('video', MIMETYPES, resourceUrl, mimeType)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/playbacks/html5_video/html5_video.js","module.exports = \"<% for (var i = 0; i < tracks.length; i++) { %>\\n <track data-html5-video-track=\\\"<%= i %>\\\" kind=\\\"<%= tracks[i].kind %>\\\" label=\\\"<%= tracks[i].label %>\\\" srclang=\\\"<%= tracks[i].lang %>\\\" src=\\\"<%= tracks[i].src %>\\\" />\\n<% }; %>\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/playbacks/html5_video/public/tracks.html\n// module id = 181\n// module chunks = 0","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/playbacks/html5_video/public/style.scss\n// module id = 182\n// module chunks = 0","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"[data-html5-video]{position:absolute;height:100%;width:100%;display:block}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./node_modules/postcss-loader/lib!./node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./src/playbacks/html5_video/public/style.scss\n// module id = 183\n// module chunks = 0","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport Events from '../../base/events'\nimport Playback from '../../base/playback'\nimport HTML5Video from '../../playbacks/html5_video'\n\n// TODO: remove this playback and change HTML5Video to HTML5Playback (breaking change, only after 0.3.0)\nexport default class HTML5Audio extends HTML5Video {\n get name() { return 'html5_audio' }\n get tagName() { return 'audio' }\n\n get isAudioOnly() {\n return true\n }\n\n updateSettings() {\n this.settings.left = ['playpause', 'position', 'duration']\n this.settings.seekEnabled = this.isSeekEnabled()\n this.trigger(Events.PLAYBACK_SETTINGSUPDATE)\n }\n\n getPlaybackType() {\n return Playback.AOD\n }\n}\n\nHTML5Audio.canPlay = function(resourceUrl, mimeType) {\n const mimetypes = {\n 'wav': ['audio/wav'],\n 'mp3': ['audio/mp3', 'audio/mpeg;codecs=\"mp3\"'],\n 'aac': ['audio/mp4;codecs=\"mp4a.40.5\"'],\n 'oga': ['audio/ogg']\n }\n return HTML5Video._canPlay('audio', mimetypes, resourceUrl, mimeType)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/playbacks/html5_audio/html5_audio.js","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport Playback from '../../base/playback'\nimport Events from '../../base/events'\nimport './public/style.scss'\n\nexport default class HTMLImg extends Playback {\n get name() { return 'html_img' }\n get tagName() { return 'img' }\n get attributes() {\n return {\n 'data-html-img': ''\n }\n }\n\n get events() {\n return {\n 'load': '_onLoad',\n 'abort': '_onError',\n 'error': '_onError'\n }\n }\n\n getPlaybackType() {\n return Playback.NO_OP\n }\n\n constructor(params) {\n super(params)\n this.el.src = params.src\n }\n\n render() {\n this.trigger(Events.PLAYBACK_READY, this.name)\n return this\n }\n\n _onLoad() {\n this.trigger(Events.PLAYBACK_ENDED, this.name)\n }\n\n _onError(evt) {\n const m = (evt.type === 'error') ? 'load error' : 'loading aborted'\n this.trigger(Events.PLAYBACK_ERROR, { message: m }, this.name)\n }\n}\n\nHTMLImg.canPlay = function(resource) {\n return /\\.(png|jpg|jpeg|gif|bmp|tiff|pgm|pnm|webp)(|\\?.*)$/i.test(resource)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/playbacks/html_img/html_img.js","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/playbacks/html_img/public/style.scss\n// module id = 186\n// module chunks = 0","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"[data-html-img]{max-width:100%;max-height:100%}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./node_modules/postcss-loader/lib!./node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./src/playbacks/html_img/public/style.scss\n// module id = 187\n// module chunks = 0","import { requestAnimationFrame, cancelAnimationFrame } from '../../base/utils'\nimport Playback from '../../base/playback'\nimport template from '../../base/template'\nimport Events from '../../base/events'\nimport noOpHTML from './public/error.html'\nimport './public/style.scss'\n\nexport default class NoOp extends Playback {\n get name() { return 'no_op' }\n get template() { return template(noOpHTML) }\n get attributes() {\n return { 'data-no-op': '' }\n }\n\n constructor(...args) {\n super(...args)\n this._noiseFrameNum = -1\n }\n\n render() {\n const playbackNotSupported = this.options.playbackNotSupportedMessage || this.i18n.t('playback_not_supported')\n this.$el.html(this.template({ message: playbackNotSupported }))\n this.trigger(Events.PLAYBACK_READY, this.name)\n const showForNoOp = !!(this.options.poster && this.options.poster.showForNoOp)\n if (this.options.autoPlay || !showForNoOp)\n this._animate()\n\n return this\n }\n\n _noise() {\n this._noiseFrameNum = (this._noiseFrameNum+1)%5\n if (this._noiseFrameNum) {\n // only update noise every 5 frames to save cpu\n return\n }\n\n const idata = this.context.createImageData(this.context.canvas.width, this.context.canvas.height)\n let buffer32\n try {\n buffer32 = new Uint32Array(idata.data.buffer)\n } catch (err) {\n buffer32 = new Uint32Array(this.context.canvas.width * this.context.canvas.height * 4)\n const data=idata.data\n for (let i = 0; i < data.length; i++)\n buffer32[i]=data[i]\n\n }\n\n const len = buffer32.length,\n m = Math.random() * 6 + 4\n let run = 0,\n color = 0\n for (let i = 0; i < len;) {\n if (run < 0) {\n run = m * Math.random()\n const p = Math.pow(Math.random(), 0.4)\n color = (255 * p) << 24\n }\n run -= 1\n buffer32[i++] = color\n }\n this.context.putImageData(idata, 0, 0)\n }\n\n _loop() {\n if (this._stop)\n return\n\n this._noise()\n this._animationHandle = requestAnimationFrame(() => this._loop())\n }\n\n destroy() {\n if (this._animationHandle) {\n cancelAnimationFrame(this._animationHandle)\n this._stop = true\n }\n }\n\n _animate() {\n this.canvas = this.$el.find('canvas[data-no-op-canvas]')[0]\n this.context = this.canvas.getContext('2d')\n this._loop()\n }\n}\n\nNoOp.canPlay = (source) => { // eslint-disable-line no-unused-vars\n return true\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/playbacks/no_op/no_op.js","module.exports = \"<canvas data-no-op-canvas></canvas>\\n<p data-no-op-msg><%=message%><p>\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/playbacks/no_op/public/error.html\n// module id = 189\n// module chunks = 0","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./style.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/playbacks/no_op/public/style.scss\n// module id = 190\n// module chunks = 0","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"[data-no-op]{position:absolute;height:100%;width:100%;text-align:center}[data-no-op] p[data-no-op-msg]{position:absolute;text-align:center;font-size:25px;left:0;right:0;color:#fff;padding:10px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);max-height:100%;overflow:auto}[data-no-op] canvas[data-no-op-canvas]{background-color:#777;height:100%;width:100%}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./node_modules/postcss-loader/lib!./node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./src/playbacks/no_op/public/style.scss\n// module id = 191\n// module chunks = 0","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport UIContainerPlugin from '../../base/ui_container_plugin'\nimport Events from '../../base/events'\nimport template from '../../base/template'\nimport spinnerHTML from './public/spinner.html'\nimport './public/spinner.scss'\n\nexport default class SpinnerThreeBouncePlugin extends UIContainerPlugin {\n get name() { return 'spinner' }\n get attributes() {\n return {\n 'data-spinner':'',\n 'class': 'spinner-three-bounce'\n }\n }\n\n constructor(container) {\n super(container)\n this.template = template(spinnerHTML)\n this.showTimeout = null\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERING, this.onBuffering)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERFULL, this.onBufferFull)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_ENDED, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_ERROR, this.onStop)\n this.render()\n }\n\n onBuffering() {\n this.show()\n }\n\n onBufferFull() {\n this.hide()\n }\n\n onStop() {\n this.hide()\n }\n\n show() {\n if (this.showTimeout === null)\n this.showTimeout = setTimeout(() => this.$el.show(), 300)\n\n }\n\n hide() {\n if (this.showTimeout !== null) {\n clearTimeout(this.showTimeout)\n this.showTimeout = null\n }\n this.$el.hide()\n }\n\n render() {\n this.$el.html(this.template())\n this.container.$el.append(this.$el)\n this.$el.hide()\n if (this.container.buffering)\n this.onBuffering()\n\n return this\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/spinner_three_bounce/spinner_three_bounce.js","module.exports = \"<div data-bounce1></div><div data-bounce2></div><div data-bounce3></div>\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/plugins/spinner_three_bounce/public/spinner.html\n// module id = 193\n// module chunks = 0","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./spinner.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./spinner.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./spinner.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/plugins/spinner_three_bounce/public/spinner.scss\n// module id = 194\n// module chunks = 0","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".spinner-three-bounce[data-spinner]{position:absolute;margin:0 auto;width:70px;text-align:center;z-index:999;left:0;right:0;margin-left:auto;margin-right:auto;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.spinner-three-bounce[data-spinner]>div{width:18px;height:18px;background-color:#fff;border-radius:100%;display:inline-block;-webkit-animation:bouncedelay 1.4s infinite ease-in-out;animation:bouncedelay 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.spinner-three-bounce[data-spinner] [data-bounce1]{-webkit-animation-delay:-.32s;animation-delay:-.32s}.spinner-three-bounce[data-spinner] [data-bounce2]{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./node_modules/postcss-loader/lib!./node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./src/plugins/spinner_three_bounce/public/spinner.scss\n// module id = 195\n// module chunks = 0","import StatsPlugin from './stats'\nexport default StatsPlugin\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/stats/index.js","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport ContainerPlugin from '../../base/container_plugin'\nimport Events from '../../base/events'\nimport $ from 'clappr-zepto'\n\nexport default class StatsPlugin extends ContainerPlugin {\n get name() { return 'stats' }\n\n constructor(container) {\n super(container)\n this.setInitialAttrs()\n this.reportInterval = this.options.reportInterval || 5000\n this.state = 'IDLE'\n }\n\n bindEvents() {\n this.listenTo(this.container.playback, Events.PLAYBACK_PLAY, this.onPlay)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_ENDED, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_DESTROYED, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERING, this.onBuffering)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERFULL, this.onBufferFull)\n this.listenTo(this.container, Events.CONTAINER_STATS_ADD, this.onStatsAdd)\n this.listenTo(this.container, Events.CONTAINER_BITRATE, this.onStatsAdd)\n this.listenTo(this.container.playback, Events.PLAYBACK_STATS_ADD, this.onStatsAdd)\n }\n\n setInitialAttrs() {\n this.firstPlay = true\n this.startupTime = 0\n this.rebufferingTime = 0\n this.watchingTime = 0\n this.rebuffers = 0\n this.externalMetrics = {}\n }\n\n onPlay() {\n this.state = 'PLAYING'\n this.watchingTimeInit = Date.now()\n if (!this.intervalId)\n this.intervalId = setInterval(this.report.bind(this), this.reportInterval)\n\n }\n\n onStop() {\n clearInterval(this.intervalId)\n this.report()\n this.intervalId = undefined\n this.state = 'STOPPED'\n }\n\n onBuffering() {\n if (this.firstPlay)\n this.startupTimeInit = Date.now()\n else\n this.rebufferingTimeInit = Date.now()\n\n this.state = 'BUFFERING'\n this.rebuffers++\n }\n\n onBufferFull() {\n if (this.firstPlay && this.startupTimeInit) {\n this.firstPlay = false\n this.startupTime = Date.now() - this.startupTimeInit\n this.watchingTimeInit = Date.now()\n } else if (this.rebufferingTimeInit) { this.rebufferingTime += this.getRebufferingTime() }\n\n this.rebufferingTimeInit = undefined\n this.state = 'PLAYING'\n }\n\n getRebufferingTime() {\n return Date.now() - this.rebufferingTimeInit\n }\n\n getWatchingTime() {\n const totalTime = (Date.now() - this.watchingTimeInit)\n return totalTime - this.rebufferingTime\n }\n\n isRebuffering() {\n return !!this.rebufferingTimeInit\n }\n\n onStatsAdd(metric) {\n $.extend(this.externalMetrics, metric)\n }\n\n getStats() {\n const metrics = {\n startupTime: this.startupTime,\n rebuffers: this.rebuffers,\n rebufferingTime: this.isRebuffering()? this.rebufferingTime + this.getRebufferingTime(): this.rebufferingTime,\n watchingTime: this.isRebuffering()? this.getWatchingTime() - this.getRebufferingTime(): this.getWatchingTime()\n }\n $.extend(metrics, this.externalMetrics)\n return metrics\n }\n\n report() {\n this.container.statsReport(this.getStats())\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/stats/stats.js","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport UIContainerPlugin from '../../base/ui_container_plugin'\nimport Events from '../../base/events'\nimport template from '../../base/template'\nimport watermarkHTML from './public/watermark.html'\nimport './public/watermark.scss'\n\nexport default class WaterMarkPlugin extends UIContainerPlugin {\n get name() { return 'watermark' }\n\n get template() { return template(watermarkHTML) }\n\n constructor(container) {\n super(container)\n this.configure()\n }\n\n bindEvents() {\n this.listenTo(this.container, Events.CONTAINER_PLAY, this.onPlay)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_OPTIONS_CHANGE, this.configure)\n }\n\n configure() {\n this.position = this.options.position || 'bottom-right'\n if (this.options.watermark) {\n this.imageUrl = this.options.watermark\n this.imageLink = this.options.watermarkLink\n this.render()\n } else { this.$el.remove() }\n\n }\n\n onPlay() {\n if (!this.hidden)\n this.$el.show()\n }\n\n onStop() {\n this.$el.hide()\n }\n\n render() {\n this.$el.hide()\n const templateOptions = { position: this.position, imageUrl: this.imageUrl, imageLink: this.imageLink }\n this.$el.html(this.template(templateOptions))\n this.container.$el.append(this.$el)\n return this\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/watermark/watermark.js","module.exports = \"<div data-watermark data-watermark-<%=position %>>\\n<% if(typeof imageLink !== 'undefined') { %>\\n<a target=_blank href=\\\"<%= imageLink %>\\\">\\n<% } %>\\n<img src=\\\"<%= imageUrl %>\\\">\\n<% if(typeof imageLink !== 'undefined') { %>\\n</a>\\n<% } %>\\n</div>\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/plugins/watermark/public/watermark.html\n// module id = 199\n// module chunks = 0","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./watermark.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./watermark.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./watermark.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/plugins/watermark/public/watermark.scss\n// module id = 200\n// module chunks = 0","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"[data-watermark]{position:absolute;min-width:70px;max-width:200px;width:12%;text-align:center;z-index:10}[data-watermark] a{outline:none;cursor:pointer}[data-watermark] img{max-width:100%}[data-watermark-bottom-left]{bottom:10px;left:10px}[data-watermark-bottom-right]{bottom:10px;right:42px}[data-watermark-top-left]{top:10px;left:10px}[data-watermark-top-right]{top:10px;right:37px}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./node_modules/postcss-loader/lib!./node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./src/plugins/watermark/public/watermark.scss\n// module id = 201\n// module chunks = 0","//Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport UIContainerPlugin from '../../base/ui_container_plugin'\nimport Events from '../../base/events'\nimport template from '../../base/template'\nimport Playback from '../../base/playback'\nimport PlayerError from '../../components/error/error'\nimport posterHTML from './public/poster.html'\nimport playIcon from '../../icons/01-play.svg'\nimport './public/poster.scss'\n\nexport default class PosterPlugin extends UIContainerPlugin {\n get name() { return 'poster' }\n get template() { return template(posterHTML) }\n get shouldRender() {\n const showForNoOp = !!(this.options.poster && this.options.poster.showForNoOp)\n return this.container.playback.name !== 'html_img' && (this.container.playback.getPlaybackType() !== Playback.NO_OP || showForNoOp)\n }\n\n get attributes() {\n return {\n 'class': 'player-poster',\n 'data-poster': ''\n }\n }\n\n get events() {\n return {\n 'click': 'clicked'\n }\n }\n\n get showOnVideoEnd() {\n return !this.options.poster || this.options.poster.showOnVideoEnd || this.options.poster.showOnVideoEnd === undefined\n }\n\n constructor(container) {\n super(container)\n this.hasStartedPlaying = false\n this.playRequested = false\n this.render()\n process.nextTick(() => this.update())\n }\n\n bindEvents() {\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_PLAY, this.onPlay)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERING, this.update)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERFULL, this.update)\n this.listenTo(this.container, Events.CONTAINER_OPTIONS_CHANGE, this.render)\n this.listenTo(this.container, Events.CONTAINER_ERROR, this.onError)\n this.showOnVideoEnd && this.listenTo(this.container, Events.CONTAINER_ENDED, this.onStop)\n }\n\n onError(error) {\n this.hasFatalError = error.level === PlayerError.Levels.FATAL\n\n if (this.hasFatalError) {\n this.hasStartedPlaying = false\n this.playRequested = false\n this.showPlayButton()\n }\n }\n\n onPlay() {\n this.hasStartedPlaying = true\n this.update()\n }\n\n onStop() {\n this.hasStartedPlaying = false\n this.playRequested = false\n this.update()\n }\n\n updatePlayButton(show) {\n if (show && (!this.options.chromeless || this.options.allowUserInteraction))\n this.showPlayButton()\n else\n this.hidePlayButton()\n }\n\n showPlayButton() {\n if (this.hasFatalError && !this.options.disableErrorScreen) return\n\n this.$playButton.show()\n this.$el.addClass('clickable')\n }\n\n hidePlayButton() {\n this.$playButton.hide()\n this.$el.removeClass('clickable')\n }\n\n clicked() {\n if (!this.options.chromeless || this.options.allowUserInteraction) {\n this.playRequested = true\n this.update()\n this.container.play()\n }\n return false\n }\n\n shouldHideOnPlay() {\n // Audio broadcasts should keep the poster up; video should hide poster while playing.\n return !this.container.playback.isAudioOnly\n }\n\n update() {\n if (!this.shouldRender)\n return\n\n let showPlayButton = !this.playRequested && !this.hasStartedPlaying && !this.container.buffering\n this.updatePlayButton(showPlayButton)\n this.updatePoster()\n }\n\n updatePoster() {\n if (!this.hasStartedPlaying) this.showPoster()\n else this.hidePoster()\n }\n\n showPoster() {\n this.container.disableMediaControl()\n this.$el.show()\n }\n\n hidePoster() {\n this.container.enableMediaControl()\n if (this.shouldHideOnPlay())\n this.$el.hide()\n }\n\n render() {\n if (!this.shouldRender)\n return\n\n this.$el.html(this.template())\n\n const isRegularPoster = this.options.poster && this.options.poster.custom === undefined\n\n if (isRegularPoster) {\n const posterUrl = this.options.poster.url || this.options.poster\n this.$el.css({ 'background-image': 'url(' + posterUrl + ')' })\n } else if (this.options.poster) { this.$el.css({ 'background': this.options.poster.custom }) }\n\n this.container.$el.append(this.el)\n this.$playWrapper = this.$el.find('.play-wrapper')\n this.$playWrapper.append(playIcon)\n this.$playButton = this.$playWrapper.find('svg')\n this.$playButton.addClass('poster-icon')\n this.$playButton.attr('data-poster', '')\n\n let buttonsColor = this.options.mediacontrol && this.options.mediacontrol.buttons\n if (buttonsColor)\n this.$el.find('svg path').css('fill', buttonsColor)\n\n if (this.options.mediacontrol && this.options.mediacontrol.buttons) {\n buttonsColor = this.options.mediacontrol.buttons\n this.$playButton.css('color', buttonsColor)\n }\n this.update()\n return this\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/poster/poster.js","module.exports = \"<div class=\\\"play-wrapper\\\" data-poster></div>\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/plugins/poster/public/poster.html\n// module id = 203\n// module chunks = 0","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./poster.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./poster.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./poster.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/plugins/poster/public/poster.scss\n// module id = 204\n// module chunks = 0","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".player-poster[data-poster]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:absolute;height:100%;width:100%;z-index:998;top:0;left:0;background-color:#000;background-size:cover;background-repeat:no-repeat;background-position:50% 50%}.player-poster[data-poster].clickable{cursor:pointer}.player-poster[data-poster]:hover .play-wrapper[data-poster]{opacity:1}.player-poster[data-poster] .play-wrapper[data-poster]{width:100%;height:25%;margin:0 auto;opacity:.75;transition:opacity .1s ease}.player-poster[data-poster] .play-wrapper[data-poster] svg{height:100%}.player-poster[data-poster] .play-wrapper[data-poster] svg path{fill:#fff}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./node_modules/postcss-loader/lib!./node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./src/plugins/poster/public/poster.scss\n// module id = 205\n// module chunks = 0","import GoogleAnalytics from './google_analytics'\nexport default GoogleAnalytics\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/google_analytics/index.js","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport ContainerPlugin from '../../base/container_plugin'\nimport Events from '../../base/events'\n\nexport default class GoogleAnalytics extends ContainerPlugin {\n get name() { return 'google_analytics' }\n constructor(container) {\n super(container)\n if (this.container.options.gaAccount) {\n this.account = this.container.options.gaAccount\n this.trackerName = (this.container.options.gaTrackerName) ? this.container.options.gaTrackerName + '.' : 'Clappr.'\n this.domainName = this.container.options.gaDomainName\n this.currentHDState = undefined\n this.embedScript()\n }\n }\n\n embedScript() {\n if (!window._gat) {\n const script = document.createElement('script')\n script.setAttribute('type', 'text/javascript')\n script.setAttribute('async', 'async')\n script.setAttribute('src', '//www.google-analytics.com/ga.js')\n script.onload = () => this.addEventListeners()\n document.body.appendChild(script)\n } else { this.addEventListeners() }\n\n }\n\n addEventListeners() {\n if (this.container) {\n this.listenTo(this.container, Events.CONTAINER_READY, this.onReady)\n this.listenTo(this.container, Events.CONTAINER_PLAY, this.onPlay)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onStop)\n this.listenTo(this.container, Events.CONTAINER_PAUSE, this.onPause)\n this.listenTo(this.container, Events.CONTAINER_ENDED, this.onEnded)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERING, this.onBuffering)\n this.listenTo(this.container, Events.CONTAINER_STATE_BUFFERFULL, this.onBufferFull)\n this.listenTo(this.container, Events.CONTAINER_ERROR, this.onError)\n this.listenTo(this.container, Events.CONTAINER_PLAYBACKSTATE, this.onPlaybackChanged)\n this.listenTo(this.container, Events.CONTAINER_VOLUME, (event) => this.onVolumeChanged(event))\n this.listenTo(this.container, Events.CONTAINER_SEEK, (event) => this.onSeek(event))\n this.listenTo(this.container, Events.CONTAINER_FULL_SCREEN, this.onFullscreen)\n this.listenTo(this.container, Events.CONTAINER_HIGHDEFINITIONUPDATE, this.onHD)\n this.listenTo(this.container, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.onDVR)\n }\n _gaq.push([this.trackerName + '_setAccount', this.account])\n if (this.domainName)\n _gaq.push([this.trackerName + '_setDomainName', this.domainName])\n }\n\n onReady() {\n this.push(['Video', 'Playback', this.container.playback.name])\n }\n\n onPlay() {\n this.push(['Video', 'Play', this.container.playback.src])\n }\n\n onStop() {\n this.push(['Video', 'Stop', this.container.playback.src])\n }\n\n onEnded() {\n this.push(['Video', 'Ended', this.container.playback.src])\n }\n\n onBuffering() {\n this.push(['Video', 'Buffering', this.container.playback.src])\n }\n\n onBufferFull() {\n this.push(['Video', 'Bufferfull', this.container.playback.src])\n }\n\n onError() {\n this.push(['Video', 'Error', this.container.playback.src])\n }\n\n onHD(isHD) {\n const status = isHD ? 'ON': 'OFF'\n if (status !== this.currentHDState) {\n this.currentHDState = status\n this.push(['Video', 'HD - ' + status, this.container.playback.src])\n }\n }\n\n onPlaybackChanged(playbackState) {\n if (playbackState.type !== null)\n this.push(['Video', 'Playback Type - ' + playbackState.type, this.container.playback.src])\n\n }\n\n onDVR(dvrInUse) {\n const status = dvrInUse? 'ON': 'OFF'\n this.push(['Interaction', 'DVR - ' + status, this.container.playback.src])\n }\n\n onPause() {\n this.push(['Video', 'Pause', this.container.playback.src])\n }\n\n onSeek() {\n this.push(['Video', 'Seek', this.container.playback.src])\n }\n\n onVolumeChanged() {\n this.push(['Interaction', 'Volume', this.container.playback.src])\n }\n\n onFullscreen() {\n this.push(['Interaction', 'Fullscreen', this.container.playback.src])\n }\n\n\n push(array) {\n const res = [this.trackerName + '_trackEvent'].concat(array)\n _gaq.push(res)\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/google_analytics/google_analytics.js","//Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport ContainerPlugin from '../../base/container_plugin'\nimport Events from '../../base/events'\nimport Playback from '../../base/playback'\n\nexport default class ClickToPausePlugin extends ContainerPlugin {\n get name() { return 'click_to_pause' }\n\n constructor(container) {\n super(container)\n }\n\n bindEvents() {\n this.listenTo(this.container, Events.CONTAINER_CLICK, this.click)\n this.listenTo(this.container, Events.CONTAINER_SETTINGSUPDATE, this.settingsUpdate)\n }\n\n click() {\n if (this.container.getPlaybackType() !== Playback.LIVE || this.container.isDvrEnabled()) {\n if (this.container.isPlaying())\n this.container.pause()\n else\n this.container.play()\n\n }\n }\n\n settingsUpdate() {\n const pointerEnabled = this.container.getPlaybackType() !== Playback.LIVE || this.container.isDvrEnabled()\n if (pointerEnabled === this.pointerEnabled) return\n\n const method = pointerEnabled ? 'addClass' : 'removeClass'\n this.container.$el[method]('pointer-enabled')\n this.pointerEnabled = pointerEnabled\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/click_to_pause/click_to_pause.js","import UICorePlugin from '../../base/ui_core_plugin'\nimport template from '../../base/template'\nimport Playback from '../../base/playback'\nimport Events from '../../base/events'\nimport dvrHTML from './public/index.html'\nimport './public/dvr_controls.scss'\n\nexport default class DVRControls extends UICorePlugin {\n get template() { return template(dvrHTML) }\n get name() { return 'dvr_controls' }\n get events() {\n return {\n 'click .live-button': 'click'\n }\n }\n get attributes() {\n return {\n 'class': 'dvr-controls',\n 'data-dvr-controls': ''\n }\n }\n\n constructor(core) {\n super(core)\n this.settingsUpdate()\n }\n\n bindEvents() {\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged)\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_RENDERED, this.settingsUpdate)\n this.listenTo(this.core, Events.CORE_OPTIONS_CHANGE, this.render)\n if (this.core.getCurrentContainer()) {\n this.listenToOnce(this.core.getCurrentContainer(), Events.CONTAINER_TIMEUPDATE, this.render)\n this.listenTo(this.core.getCurrentContainer(), Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.dvrChanged)\n }\n }\n\n containerChanged() {\n this.stopListening()\n this.bindEvents()\n }\n\n dvrChanged(dvrEnabled) {\n if (this.core.getPlaybackType() !== Playback.LIVE) return\n this.settingsUpdate()\n this.core.mediaControl.$el.addClass('live')\n if (dvrEnabled) {\n this.core.mediaControl.$el.addClass('dvr')\n this.core.mediaControl.$el.find('.media-control-indicator[data-position], .media-control-indicator[data-duration]').hide()\n } else { this.core.mediaControl.$el.removeClass('dvr') }\n\n }\n\n click() {\n const mediaControl = this.core.mediaControl\n const container = mediaControl.container\n if (!container.isPlaying())\n container.play()\n\n if (mediaControl.$el.hasClass('dvr'))\n container.seek(container.getDuration())\n\n }\n\n settingsUpdate() {\n this.stopListening()\n this.core.mediaControl.$el.removeClass('live')\n if (this.shouldRender()) {\n this.render()\n this.$el.click(() => this.click())\n }\n this.bindEvents()\n }\n\n shouldRender() {\n const useDvrControls = this.core.options.useDvrControls === undefined || !!this.core.options.useDvrControls\n return useDvrControls && this.core.getPlaybackType() === Playback.LIVE\n }\n\n render() {\n this.$el.html(this.template({\n live: this.core.i18n.t('live'),\n backToLive: this.core.i18n.t('back_to_live')\n }))\n if (this.shouldRender()) {\n this.core.mediaControl.$el.addClass('live')\n this.core.mediaControl.$('.media-control-left-panel[data-media-control]').append(this.$el)\n }\n return this\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/dvr_controls/dvr_controls.js","module.exports = \"<div class=\\\"live-info\\\"><%= live %></div>\\n<button type=\\\"button\\\" class=\\\"live-button\\\" aria-label=\\\"<%= backToLive %>\\\"><%= backToLive %></button>\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/plugins/dvr_controls/public/index.html\n// module id = 210\n// module chunks = 0","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./dvr_controls.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./dvr_controls.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./dvr_controls.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/plugins/dvr_controls/public/dvr_controls.scss\n// module id = 211\n// module chunks = 0","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".dvr-controls[data-dvr-controls]{display:inline-block;float:left;color:#fff;line-height:32px;font-size:10px;font-weight:700;margin-left:6px}.dvr-controls[data-dvr-controls] .live-info{cursor:default;font-family:Roboto,Open Sans,Arial,sans-serif;text-transform:uppercase}.dvr-controls[data-dvr-controls] .live-info:before{content:\\\"\\\";display:inline-block;position:relative;width:7px;height:7px;border-radius:3.5px;margin-right:3.5px;background-color:#ff0101}.dvr-controls[data-dvr-controls] .live-info.disabled{opacity:.3}.dvr-controls[data-dvr-controls] .live-info.disabled:before{background-color:#fff}.dvr-controls[data-dvr-controls] .live-button{cursor:pointer;outline:none;display:none;border:0;color:#fff;background-color:transparent;height:32px;padding:0;opacity:.7;font-family:Roboto,Open Sans,Arial,sans-serif;text-transform:uppercase;transition:all .1s ease}.dvr-controls[data-dvr-controls] .live-button:before{content:\\\"\\\";display:inline-block;position:relative;width:7px;height:7px;border-radius:3.5px;margin-right:3.5px;background-color:#fff}.dvr-controls[data-dvr-controls] .live-button:hover{opacity:1;text-shadow:hsla(0,0%,100%,.75) 0 0 5px}.dvr .dvr-controls[data-dvr-controls] .live-info{display:none}.dvr .dvr-controls[data-dvr-controls] .live-button{display:block}.dvr.media-control.live[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{background-color:#005aff}.media-control.live[data-media-control] .media-control-layer[data-controls] .bar-container[data-seekbar] .bar-background[data-seekbar] .bar-fill-2[data-seekbar]{background-color:#ff0101}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./node_modules/postcss-loader/lib!./node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./src/plugins/dvr_controls/public/dvr_controls.scss\n// module id = 212\n// module chunks = 0","import ClosedCaptions from './closed_captions'\nexport default ClosedCaptions\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/closed_captions/index.js","import UICorePlugin from '../../base/ui_core_plugin'\nimport template from '../../base/template'\nimport Events from '../../base/events'\nimport ccIcon from '../../icons/09-cc.svg'\nimport ccHTML from './public/closed_captions.html'\nimport './public/closed_captions.scss'\n\nexport default class ClosedCaptions extends UICorePlugin {\n get name() { return 'closed_captions' }\n\n get template() { return template(ccHTML) }\n\n get events() {\n return {\n 'click [data-cc-button]': 'toggleContextMenu',\n 'click [data-cc-select]': 'onTrackSelect',\n }\n }\n\n get attributes() {\n return {\n 'class': 'cc-controls',\n 'data-cc-controls': ''\n }\n }\n\n constructor(core) {\n super(core)\n const config = core.options.closedCaptionsConfig\n this._title = config && config.title ? config.title : null\n this._ariaLabel = config && config.ariaLabel ? config.ariaLabel : 'cc-button'\n this._labelCb = config && config.labelCallback && typeof config.labelCallback === 'function'\n ? config.labelCallback\n : track => { return track.name }\n }\n\n bindEvents() {\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged)\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_RENDERED, this.render)\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_HIDE, this.hideContextMenu)\n this.container = this.core.getCurrentContainer()\n if (this.container) {\n this.listenTo(this.container, Events.CONTAINER_SUBTITLE_AVAILABLE, this.onSubtitleAvailable)\n this.listenTo(this.container, Events.CONTAINER_SUBTITLE_CHANGED, this.onSubtitleChanged)\n this.listenTo(this.container, Events.CONTAINER_STOP, this.onContainerStop)\n }\n }\n\n onContainerStop() {\n this.ccAvailable(false)\n }\n\n containerChanged() {\n this.ccAvailable(false)\n this.stopListening()\n this.bindEvents()\n }\n\n onSubtitleAvailable() {\n this.renderCcButton()\n this.ccAvailable(true)\n }\n\n onSubtitleChanged(track) {\n this.setCurrentContextMenuElement(track.id)\n }\n\n onTrackSelect(event) {\n const trackId = parseInt(event.target.dataset.ccSelect, 10)\n this.container.closedCaptionsTrackId = trackId\n this.hideContextMenu()\n event.stopPropagation()\n return false\n }\n\n ccAvailable(hasCC) {\n const method = hasCC ? 'addClass' : 'removeClass'\n this.$el[method]('available')\n }\n\n toggleContextMenu() {\n this.$el.find('ul').toggle()\n }\n\n hideContextMenu() {\n this.$el.find('ul').hide()\n }\n\n contextMenuElement(id) {\n return this.$el.find('ul a'+(!isNaN(id) ? '[data-cc-select=\"'+id+'\"]' : '')).parent()\n }\n\n setCurrentContextMenuElement(trackId) {\n if (this._trackId !== trackId) {\n this.contextMenuElement().removeClass('current')\n this.contextMenuElement(trackId).addClass('current')\n const method = trackId > -1 ? 'addClass' : 'removeClass'\n this.$ccButton[method]('enabled')\n this._trackId = trackId\n }\n }\n\n renderCcButton() {\n let tracks = this.container ? this.container.closedCaptionsTracks : []\n for (let i = 0; i < tracks.length; i++)\n tracks[i].label = this._labelCb(tracks[i])\n\n\n this.$el.html(this.template({\n ariaLabel: this._ariaLabel,\n disabledLabel: this.core.i18n.t('disabled'),\n title: this._title,\n tracks: tracks\n }))\n\n this.$ccButton = this.$el.find('button.cc-button[data-cc-button]')\n this.$ccButton.append(ccIcon)\n this.$el.append(this.style)\n }\n\n render() {\n this.renderCcButton()\n\n const $fullscreen = this.core.mediaControl.$el.find('button[data-fullscreen]')\n if ($fullscreen[0])\n this.$el.insertAfter($fullscreen)\n else\n this.core.mediaControl.$el.find('.media-control-right-panel[data-media-control]').prepend(this.$el)\n\n\n return this\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/closed_captions/closed_captions.js","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 49 41.8\\\" style=\\\"enable-background:new 0 0 49 41.8;\\\" xml:space=\\\"preserve\\\"><path d=\\\"M47.1,0H3.2C1.6,0,0,1.2,0,2.8v31.5C0,35.9,1.6,37,3.2,37h11.9l3.2,1.9l4.7,2.7c0.9,0.5,2-0.1,2-1.1V37h22.1 c1.6,0,1.9-1.1,1.9-2.7V2.8C49,1.2,48.7,0,47.1,0z M7.2,18.6c0-4.8,3.5-9.3,9.9-9.3c4.8,0,7.1,2.7,7.1,2.7l-2.5,4 c0,0-1.7-1.7-4.2-1.7c-2.8,0-4.3,2.1-4.3,4.3c0,2.1,1.5,4.4,4.5,4.4c2.5,0,4.9-2.1,4.9-2.1l2.2,4.2c0,0-2.7,2.9-7.6,2.9 C10.8,27.9,7.2,23.5,7.2,18.6z M36.9,27.9c-6.4,0-9.9-4.4-9.9-9.3c0-4.8,3.5-9.3,9.9-9.3C41.7,9.3,44,12,44,12l-2.5,4 c0,0-1.7-1.7-4.2-1.7c-2.8,0-4.3,2.1-4.3,4.3c0,2.1,1.5,4.4,4.5,4.4c2.5,0,4.9-2.1,4.9-2.1l2.2,4.2C44.5,25,41.9,27.9,36.9,27.9z\\\"></path></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/icons/09-cc.svg\n// module id = 215\n// module chunks = 0","module.exports = \"<button type=\\\"button\\\" class=\\\"cc-button media-control-button media-control-icon\\\" data-cc-button aria-label=\\\"<%= ariaLabel %>\\\"></button>\\n<ul>\\n <% if (title) { %>\\n <li data-title><%= title %></li>\\n <% }; %>\\n <li><a href=\\\"#\\\" data-cc-select=\\\"-1\\\"><%= disabledLabel %></a></li>\\n <% for (var i = 0; i < tracks.length; i++) { %>\\n <li><a href=\\\"#\\\" data-cc-select=\\\"<%= tracks[i].id %>\\\"><%= tracks[i].label %></a></li>\\n <% }; %>\\n</ul>\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/plugins/closed_captions/public/closed_captions.html\n// module id = 216\n// module chunks = 0","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./closed_captions.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./closed_captions.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./closed_captions.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/plugins/closed_captions/public/closed_captions.scss\n// module id = 217\n// module chunks = 0","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".cc-controls[data-cc-controls]{float:right;position:relative;display:none}.cc-controls[data-cc-controls].available{display:block}.cc-controls[data-cc-controls] .cc-button{padding:6px!important}.cc-controls[data-cc-controls] .cc-button.enabled{display:block;opacity:1}.cc-controls[data-cc-controls] .cc-button.enabled:hover{opacity:1;text-shadow:none}.cc-controls[data-cc-controls]>ul{list-style-type:none;position:absolute;bottom:25px;border:1px solid #000;display:none;background-color:#e6e6e6}.cc-controls[data-cc-controls] li{font-size:10px}.cc-controls[data-cc-controls] li[data-title]{background-color:#c3c2c2;padding:5px}.cc-controls[data-cc-controls] li a{color:#444;padding:2px 10px;display:block;text-decoration:none}.cc-controls[data-cc-controls] li a:hover{background-color:#555;color:#fff}.cc-controls[data-cc-controls] li a:hover a{color:#fff;text-decoration:none}.cc-controls[data-cc-controls] li.current a{color:red}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./node_modules/postcss-loader/lib!./node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./src/plugins/closed_captions/public/closed_captions.scss\n// module id = 218\n// module chunks = 0","import CorePlugin from '../../base/core_plugin'\nimport Events from '../../base/events'\nimport $ from 'clappr-zepto'\n\nimport playIcon from '../../icons/01-play.svg'\nimport pauseIcon from '../../icons/02-pause.svg'\n\nconst oldIcon = $('link[rel=\"shortcut icon\"]')\n\nexport default class Favicon extends CorePlugin {\n get name() { return 'favicon' }\n get oldIcon() { return oldIcon }\n\n constructor(core) {\n super(core)\n this._container = null\n this.configure()\n }\n\n configure() {\n if (this.core.options.changeFavicon) {\n if (!this.enabled) {\n this.stopListening(this.core, Events.CORE_OPTIONS_CHANGE)\n this.enable()\n }\n } else if (this.enabled) {\n this.disable()\n this.listenTo(this.core, Events.CORE_OPTIONS_CHANGE, this.configure)\n }\n }\n\n bindEvents() {\n this.listenTo(this.core, Events.CORE_OPTIONS_CHANGE, this.configure)\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged)\n if (this.core.mediaControl.container)\n this.containerChanged()\n\n }\n\n containerChanged() {\n this._container && this.stopListening(this._container)\n this._container = this.core.mediaControl.container\n this.listenTo(this._container, Events.CONTAINER_PLAY, this.setPlayIcon)\n this.listenTo(this._container, Events.CONTAINER_PAUSE, this.setPauseIcon)\n this.listenTo(this._container, Events.CONTAINER_STOP, this.resetIcon)\n this.listenTo(this._container, Events.CONTAINER_ENDED, this.resetIcon)\n this.listenTo(this._container, Events.CONTAINER_ERROR, this.resetIcon)\n this.resetIcon()\n }\n\n disable() {\n super.disable()\n this.resetIcon()\n }\n\n destroy() {\n super.destroy()\n this.resetIcon()\n }\n\n createIcon(svg) {\n const canvas = $('<canvas/>')\n canvas[0].width = 16\n canvas[0].height = 16\n const ctx = canvas[0].getContext('2d')\n ctx.fillStyle = '#000'\n const d = $(svg).find('path').attr('d')\n const path = new Path2D(d)\n ctx.fill(path)\n const icon = $('<link rel=\"shortcut icon\" type=\"image/png\"/>')\n icon.attr('href', canvas[0].toDataURL('image/png'))\n return icon\n }\n\n setPlayIcon() {\n if (!this.playIcon)\n this.playIcon = this.createIcon(playIcon)\n\n this.changeIcon(this.playIcon)\n }\n\n setPauseIcon() {\n if (!this.pauseIcon)\n this.pauseIcon = this.createIcon(pauseIcon)\n\n this.changeIcon(this.pauseIcon)\n }\n\n resetIcon() {\n $('link[rel=\"shortcut icon\"]').remove()\n $('head').append(this.oldIcon)\n }\n\n changeIcon(icon) {\n if (icon) {\n $('link[rel=\"shortcut icon\"]').remove()\n $('head').append(icon)\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/favicon/favicon.js","import SeekTime from './seek_time'\nexport default SeekTime\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/seek_time/index.js","// Copyright 2014 Globo.com Player authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\nimport { formatTime } from '../../base/utils'\n\nimport UICorePlugin from '../../base/ui_core_plugin'\nimport template from '../../base/template'\nimport Events from '../../base/events'\nimport Playback from '../../base/playback'\nimport seekTimeHTML from './public/seek_time.html'\nimport './public/seek_time.scss'\n\nexport default class SeekTime extends UICorePlugin {\n get name() { return 'seek_time' }\n get template() {\n return template(seekTimeHTML)\n }\n get attributes() {\n return {\n 'class': 'seek-time',\n 'data-seek-time': ''\n }\n }\n get mediaControl() { return this.core.mediaControl }\n get mediaControlContainer() { return this.mediaControl.container }\n get isLiveStreamWithDvr() { return this.mediaControlContainer && this.mediaControlContainer.getPlaybackType() === Playback.LIVE && this.mediaControlContainer.isDvrEnabled() }\n get durationShown() { return this.isLiveStreamWithDvr && !this.actualLiveTime }\n get useActualLiveTime() { return this.actualLiveTime && this.isLiveStreamWithDvr }\n constructor(core) {\n super(core)\n this.hoveringOverSeekBar = false\n this.hoverPosition = null\n this.duration = null\n this.firstFragDateTime = null\n this.actualLiveTime = !!this.mediaControl.options.actualLiveTime\n if (this.actualLiveTime) {\n if (this.mediaControl.options.actualLiveServerTime)\n this.actualLiveServerTimeDiff = new Date().getTime() - new Date(this.mediaControl.options.actualLiveServerTime).getTime()\n else\n this.actualLiveServerTimeDiff = 0\n }\n }\n\n bindEvents() {\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_RENDERED, this.render)\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_MOUSEMOVE_SEEKBAR, this.showTime)\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_MOUSELEAVE_SEEKBAR, this.hideTime)\n this.listenTo(this.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.onContainerChanged)\n if (this.mediaControlContainer) {\n this.listenTo(this.mediaControlContainer, Events.CONTAINER_PLAYBACKDVRSTATECHANGED, this.update)\n this.listenTo(this.mediaControlContainer, Events.CONTAINER_TIMEUPDATE, this.updateDuration)\n }\n }\n\n onContainerChanged() {\n this.stopListening()\n this.bindEvents()\n }\n\n updateDuration(timeProgress) {\n this.duration = timeProgress.total\n this.firstFragDateTime = timeProgress.firstFragDateTime\n this.update()\n }\n\n showTime(event) {\n this.hoveringOverSeekBar = true\n this.calculateHoverPosition(event)\n this.update()\n }\n\n hideTime() {\n this.hoveringOverSeekBar = false\n this.update()\n }\n\n calculateHoverPosition(event) {\n const offset = event.pageX - this.mediaControl.$seekBarContainer.offset().left\n // proportion into the seek bar that the mouse is hovered over 0-1\n this.hoverPosition = Math.min(1, Math.max(offset/this.mediaControl.$seekBarContainer.width(), 0))\n }\n\n getSeekTime() {\n let seekTime, secondsSinceMidnight, d, e\n if (this.useActualLiveTime) {\n if (this.firstFragDateTime) {\n e = new Date(this.firstFragDateTime)\n d = new Date(this.firstFragDateTime)\n d.setHours(0,0,0,0)\n secondsSinceMidnight = ((e.getTime() - d.getTime()) / 1000) + this.duration\n } else {\n d = new Date(new Date().getTime() - this.actualLiveServerTimeDiff)\n e = new Date(d)\n secondsSinceMidnight = (e - d.setHours(0,0,0,0)) / 1000\n }\n seekTime = (secondsSinceMidnight - this.duration) + (this.hoverPosition * this.duration)\n if (seekTime < 0)\n seekTime += 86400\n\n } else { seekTime = this.hoverPosition * this.duration }\n\n return { seekTime, secondsSinceMidnight }\n }\n\n update() {\n if (!this.rendered) {\n // update() is always called after a render\n return\n }\n if (!this.shouldBeVisible()) {\n this.$el.hide()\n this.$el.css('left', '-100%')\n } else {\n const seekTime = this.getSeekTime()\n const currentSeekTime = formatTime(seekTime.seekTime, this.useActualLiveTime)\n // only update dom if necessary, ie time actually changed\n if (currentSeekTime !== this.displayedSeekTime) {\n this.$seekTimeEl.text(currentSeekTime)\n this.displayedSeekTime = currentSeekTime\n }\n\n if (this.durationShown) {\n this.$durationEl.show()\n const currentDuration = formatTime(this.actualLiveTime ? seekTime.secondsSinceMidnight : this.duration, this.actualLiveTime)\n if (currentDuration !== this.displayedDuration) {\n this.$durationEl.text(currentDuration)\n this.displayedDuration = currentDuration\n }\n } else { this.$durationEl.hide() }\n\n\n // the element must be unhidden before its width is requested, otherwise it's width will be reported as 0\n this.$el.show()\n const containerWidth = this.mediaControl.$seekBarContainer.width()\n const elWidth = this.$el.width()\n let elLeftPos = this.hoverPosition * containerWidth\n elLeftPos -= elWidth / 2\n elLeftPos = Math.max(0, Math.min(elLeftPos, containerWidth - elWidth))\n this.$el.css('left', elLeftPos)\n }\n }\n\n shouldBeVisible() {\n return this.mediaControlContainer && this.mediaControlContainer.settings.seekEnabled && this.hoveringOverSeekBar && this.hoverPosition !== null && this.duration !== null\n }\n\n render() {\n this.rendered = true\n this.displayedDuration = null\n this.displayedSeekTime = null\n this.$el.html(this.template())\n this.$el.hide()\n this.mediaControl.$el.append(this.el)\n this.$seekTimeEl = this.$el.find('[data-seek-time]')\n this.$durationEl = this.$el.find('[data-duration]')\n this.$durationEl.hide()\n this.update()\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/seek_time/seek_time.js","module.exports = \"<span data-seek-time></span>\\n<span data-duration></span>\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/plugins/seek_time/public/seek_time.html\n// module id = 222\n// module chunks = 0","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./seek_time.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./seek_time.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./seek_time.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/plugins/seek_time/public/seek_time.scss\n// module id = 223\n// module chunks = 0","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".seek-time[data-seek-time]{position:absolute;white-space:nowrap;height:20px;line-height:20px;font-size:0;left:-100%;bottom:55px;background-color:rgba(2,2,2,.5);z-index:9999;transition:opacity .1s ease}.seek-time[data-seek-time].hidden[data-seek-time]{opacity:0}.seek-time[data-seek-time] [data-seek-time]{display:inline-block;color:#fff;font-size:10px;padding-left:7px;padding-right:7px;vertical-align:top}.seek-time[data-seek-time] [data-duration]{display:inline-block;color:hsla(0,0%,100%,.5);font-size:10px;padding-right:7px;vertical-align:top}.seek-time[data-seek-time] [data-duration]:before{content:\\\"|\\\";margin-right:7px}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./node_modules/postcss-loader/lib!./node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./src/plugins/seek_time/public/seek_time.scss\n// module id = 224\n// module chunks = 0","import CorePlugin from '../base/core_plugin'\n\nimport Events from '../base/events'\n\nexport default class SourcesPlugin extends CorePlugin {\n get name() { return 'sources' }\n\n bindEvents() {\n this.listenTo(this.core, Events.CORE_CONTAINERS_CREATED, this.onContainersCreated)\n }\n\n onContainersCreated() {\n const firstValidSource = this.core.containers.filter(container => container.playback.name !== 'no_op')[0] || this.core.containers[0]\n if (firstValidSource) {\n this.core.containers.forEach((container) => {\n if (container !== firstValidSource)\n container.destroy()\n\n })\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/sources.js","import Events from '../base/events'\nimport CorePlugin from '../base/core_plugin'\nimport { Fullscreen } from '../base/utils'\n\nexport default class EndVideo extends CorePlugin {\n get name() { return 'end_video' }\n bindEvents() {\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.containerChanged)\n const container = this.core.getCurrentContainer()\n if (container) {\n this.listenTo(container, Events.CONTAINER_ENDED, this.ended)\n this.listenTo(container, Events.CONTAINER_STOP, this.ended)\n }\n }\n\n containerChanged() {\n this.stopListening()\n this.bindEvents()\n }\n\n ended() {\n const exitOnEnd = typeof (this.core.options.exitFullscreenOnEnd) === 'undefined' || this.core.options.exitFullscreenOnEnd\n if (exitOnEnd && Fullscreen.isFullscreen())\n this.core.toggleFullscreen()\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/end_video.js","import { getBrowserLanguage } from '../base/utils'\nimport $ from 'clappr-zepto'\nimport CorePlugin from '../base/core_plugin'\n\n/**\n * The internationalization (i18n) plugin\n * @class Strings\n * @constructor\n * @extends CorePlugin\n * @module plugins\n */\nexport default class Strings extends CorePlugin {\n get name() { return 'strings' }\n\n constructor(core) {\n super(core)\n this._initializeMessages()\n }\n /**\n * Gets a translated string for the given key.\n * @method t\n * @param {String} key the key to all messages\n * @return {String} translated label\n */\n t(key) {\n const lang = this._language()\n const fallbackLang = this._messages['en']\n const i18n = lang && this._messages[lang] || fallbackLang\n return i18n[key] || fallbackLang[key] || key\n }\n\n _language() { return this.core.options.language || getBrowserLanguage() }\n\n _initializeMessages() {\n const defaultMessages = {\n 'en': {\n 'live': 'live',\n 'back_to_live': 'back to live',\n 'disabled': 'Disabled',\n 'playback_not_supported': 'Your browser does not support the playback of this video. Please try using a different browser.',\n 'default_error_title': 'Could not play video.',\n 'default_error_message': 'There was a problem trying to load the video.',\n },\n 'pt': {\n 'live': 'ao vivo',\n 'back_to_live': 'voltar para o ao vivo',\n 'disabled': 'Desativado',\n 'playback_not_supported': 'Seu navegador não supporta a reprodução deste video. Por favor, tente usar um navegador diferente.',\n 'default_error_title': 'Não foi possÃvel reproduzir o vÃdeo.',\n 'default_error_message': 'Ocorreu um problema ao tentar carregar o vÃdeo.',\n },\n 'es': {\n 'live': 'vivo',\n 'back_to_live': 'volver en vivo',\n 'disabled': 'Discapacitado',\n 'playback_not_supported': 'Su navegador no soporta la reproducción de un video. Por favor, trate de usar un navegador diferente.',\n },\n 'ru': {\n 'live': 'прÑмой Ñфир',\n 'back_to_live': 'к прÑмому Ñфиру',\n 'disabled': 'Отключено',\n 'playback_not_supported': 'Ваш браузер не поддерживает воÑпроизведение Ñтого видео. ПожалуйÑта, попробуйте другой браузер.',\n },\n 'fr': {\n 'live': 'en direct',\n 'back_to_live': 'retour au direct',\n 'disabled': 'Désactivé',\n 'playback_not_supported': 'Votre navigateur ne supporte pas la lecture de cette vidéo. Merci de tenter sur un autre navigateur.',\n 'default_error_title': 'Impossible de lire la vidéo.',\n 'default_error_message': 'Un problème est survenu lors du chargement de la vidéo.',\n },\n 'tr': {\n 'live': 'canlı',\n 'back_to_live': 'canlı yayına dön',\n 'disabled': 'Engelli',\n 'playback_not_supported': 'Tarayıcınız bu videoyu oynatma desteÄŸine sahip deÄŸil. Lütfen farklı bir tarayıcı ile deneyin.',\n },\n 'et': {\n 'live': 'Otseülekanne',\n 'back_to_live': 'Tagasi otseülekande juurde',\n 'disabled': 'Keelatud',\n 'playback_not_supported': 'Teie brauser ei toeta selle video taasesitust. Proovige kasutada muud brauserit.',\n },\n }\n\n this._messages = $.extend(true, defaultMessages, this.core.options.strings || {})\n this._messages['pt-BR'] = this._messages['pt']\n this._messages['en-US'] = this._messages['en']\n this._messages['es-419'] = this._messages['es']\n this._messages['fr-FR'] = this._messages['fr']\n this._messages['tr-TR'] = this._messages['tr']\n this._messages['et-EE'] = this._messages['et']\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/strings.js","import ErrorScreen from './error_screen'\nexport default ErrorScreen\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/error_screen/index.js","import Events from '../../base/events'\nimport UICorePlugin from '../../base/ui_core_plugin'\nimport template from '../../base/template'\nimport PlayerError from '../../components/error/'\n\nimport reloadIcon from '../../icons/10-reload.svg'\nimport templateHtml from './public/error_screen.html'\nimport './public/error_screen.scss'\n\nexport default class ErrorScreen extends UICorePlugin {\n get name() { return 'error_screen' }\n get template() { return template(templateHtml) }\n get container() { return this.core.getCurrentContainer() }\n get attributes() {\n return {\n 'class': 'player-error-screen',\n 'data-error-screen': '',\n }\n }\n\n constructor(core) {\n super(core)\n\n if (this.options.disableErrorScreen) return this.disable()\n }\n\n bindEvents() {\n this.listenTo(this.core, Events.ERROR, this.onError)\n this.listenTo(this.core.mediaControl, Events.MEDIACONTROL_CONTAINERCHANGED, this.onContainerChanged)\n }\n\n bindReload() {\n this.reloadButton = this.$el.find('.player-error-screen__reload')\n this.reloadButton && this.reloadButton.on('click', this.reload.bind(this))\n }\n\n reload() {\n this.listenToOnce(this.core, Events.CORE_READY, () => this.container.play())\n this.core.load(this.options.sources, this.options.mimeType)\n this.unbindReload()\n }\n\n unbindReload() {\n this.reloadButton && this.reloadButton.off('click')\n }\n\n onContainerChanged() {\n this.err = null\n this.unbindReload()\n this.hide()\n }\n\n onError(err = {}) {\n if (err.level === PlayerError.Levels.FATAL) {\n this.err = err\n this.container.disableMediaControl()\n this.container.stop()\n this.show()\n }\n }\n\n show() {\n this.render()\n this.$el.show()\n }\n\n hide() {\n this.$el.hide()\n }\n\n render() {\n if (!this.err) return\n\n this.$el.html(this.template({\n title: this.err.UI.title,\n message: this.err.UI.message,\n code: this.err.code,\n icon: this.err.UI.icon || '',\n reloadIcon,\n }))\n\n this.core.$el.append(this.el)\n\n this.bindReload()\n\n return this\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/error_screen/error_screen.js","module.exports = \"<svg fill=\\\"#FFFFFF\\\" viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\\\"></path><path d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\"></path></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/icons/10-reload.svg\n// module id = 230\n// module chunks = 0","module.exports = \"<div class=\\\"player-error-screen__content\\\" data-error-screen>\\n <% if (icon) { %>\\n <div class=\\\"player-error-screen__icon\\\" data-error-screen><%= icon %></div>\\n <% } %>\\n <div class=\\\"player-error-screen__title\\\" data-error-screen><%= title %></div>\\n <div class=\\\"player-error-screen__message\\\" data-error-screen><%= message %></div>\\n <div class=\\\"player-error-screen__code\\\" data-error-screen>Error code: <%= code %></div>\\n <div class=\\\"player-error-screen__reload\\\" data-error-screen><%= reloadIcon %></div>\\n</div>\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/plugins/error_screen/public/error_screen.html\n// module id = 231\n// module chunks = 0","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./error_screen.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"singleton\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./error_screen.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./error_screen.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/plugins/error_screen/public/error_screen.scss\n// module id = 232\n// module chunks = 0","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"div.player-error-screen{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#cccaca;position:absolute;top:0;height:100%;width:100%;background-color:rgba(0,0,0,.7);z-index:2000;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}div.player-error-screen__content[data-error-screen]{font-size:14px;color:#cccaca;margin-top:45px}div.player-error-screen__title[data-error-screen]{font-weight:700;line-height:30px;font-size:18px}div.player-error-screen__message[data-error-screen]{width:90%;margin:0 auto}div.player-error-screen__code[data-error-screen]{font-size:13px;margin-top:15px}div.player-error-screen__reload{cursor:pointer;width:30px;margin:15px auto 0}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./node_modules/postcss-loader/lib!./node_modules/sass-loader/lib/loader.js?includePaths[]=/Users/bruno.torres/workspace/clappr/clappr/src/base/scss!./src/plugins/error_screen/public/error_screen.scss\n// module id = 233\n// module chunks = 0"],"sourceRoot":""}