1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3913],{ 2/***/64063: 3/***/function(e){"use strict"; 4// do not edit .js files directly - edit src/index.jst 5e.exports=function e(t,r){if(t===r)return!0;if(t&&r&&"object"==typeof t&&"object"==typeof r){if(t.constructor!==r.constructor)return!1;var n,o,a;if(Array.isArray(t)){if((n=t.length)!=r.length)return!1;for(o=n;0!=o--;)if(!e(t[o],r[o]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if((n=(a=Object.keys(t)).length)!==Object.keys(r).length)return!1;for(o=n;0!=o--;)if(!Object.prototype.hasOwnProperty.call(r,a[o]))return!1;for(o=n;0!=o--;){var i=a[o];if(!e(t[i],r[i]))return!1}return!0} 6// true if both NaN, false otherwise 7return t!=t&&r!=r}}, 8/***/49090: 9/***/function(e){function t(e,t){e.onload=function(){this.onerror=this.onload=null,t(null,e)},e.onerror=function(){ 10// this.onload = null here is necessary 11// because even IE9 works not like others 12this.onerror=this.onload=null,t(new Error("Failed to load "+this.src),e)}}function r(e,t){e.onreadystatechange=function(){"complete"!=this.readyState&&"loaded"!=this.readyState||(this.onreadystatechange=null,t(null,e))}} 13/***/e.exports=function(e,n,o){var a=document.head||document.getElementsByTagName("head")[0],i=document.createElement("script");"function"==typeof n&&(o=n,n={}),n=n||{},o=o||function(){},i.type=n.type||"text/javascript",i.charset=n.charset||"utf8",i.async=!("async"in n)||!!n.async,i.src=e,n.attrs&&function(e,t){for(var r in t)e.setAttribute(r,t[r])}(i,n.attrs),n.text&&(i.text=""+n.text),("onload"in i?t:r)(i,o), 14// some good legacy browsers (firefox) fail the 'in' detection above 15// so as a fallback we always set onload 16// old IE will ignore this and new IE will set onload 17i.onload||t(i,o),a.appendChild(i)}}, 18/***/13913: 19/***/function(e,t,r){"use strict"; 20/* harmony export */r.d(t,{ 21/* harmony export */Z:function(){/* binding */return C} 22/* harmony export */}); 23/* harmony import */var n=r(45697),o=r.n(n),a=r(67294),i=r(64063),s=r.n(i),l=r(11062),u=r.n(l),c=Object.defineProperty,d=Object.defineProperties,p=Object.getOwnPropertyDescriptors,f=Object.getOwnPropertySymbols,y=Object.prototype.hasOwnProperty,h=Object.prototype.propertyIsEnumerable,g=(e,t,r)=>t in e?c(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,v=(e,t)=>{for(var r in t||(t={}))y.call(t,r)&&g(e,r,t[r]);if(f)for(var r of f(t))h.call(t,r)&&g(e,r,t[r]);return e},m=(e,t)=>d(e,p(t)); 24/* harmony import */function P(e={}){return m(v({},e),{height:0,width:0,playerVars:m(v({},e.playerVars),{autoplay:0,start:0,end:0})})}var b={videoId:o().string,id:o().string,className:o().string,iframeClassName:o().string,style:o().object,title:o().string,loading:o().oneOf(["lazy","eager"]),opts:o().objectOf(o().any),onReady:o().func,onError:o().func,onPlay:o().func,onPause:o().func,onEnd:o().func,onStateChange:o().func,onPlaybackRateChange:o().func,onPlaybackQualityChange:o().func},w=class extends a.Component{constructor(e){super(e),this.destroyPlayerPromise=void 0,this.onPlayerReady=e=>{var t,r;return null==(r=(t=this.props).onReady)?void 0:r.call(t,e)},this.onPlayerError=e=>{var t,r;return null==(r=(t=this.props).onError)?void 0:r.call(t,e)},this.onPlayerStateChange=e=>{var t,r,n,o,a,i,s,l;switch(null==(r=(t=this.props).onStateChange)||r.call(t,e),e.data){case w.PlayerState.ENDED:null==(o=(n=this.props).onEnd)||o.call(n,e);break;case w.PlayerState.PLAYING:null==(i=(a=this.props).onPlay)||i.call(a,e);break;case w.PlayerState.PAUSED:null==(l=(s=this.props).onPause)||l.call(s,e)}},this.onPlayerPlaybackRateChange=e=>{var t,r;return null==(r=(t=this.props).onPlaybackRateChange)?void 0:r.call(t,e)},this.onPlayerPlaybackQualityChange=e=>{var t,r;return null==(r=(t=this.props).onPlaybackQualityChange)?void 0:r.call(t,e)},this.destroyPlayer=()=>this.internalPlayer?(this.destroyPlayerPromise=this.internalPlayer.destroy().then((()=>this.destroyPlayerPromise=void 0)),this.destroyPlayerPromise):Promise.resolve(),this.createPlayer=()=>{if("undefined"==typeof document)return;if(this.destroyPlayerPromise)return void this.destroyPlayerPromise.then(this.createPlayer);const e=m(v({},this.props.opts),{videoId:this.props.videoId});this.internalPlayer=u()(this.container,e),this.internalPlayer.on("ready",this.onPlayerReady),this.internalPlayer.on("error",this.onPlayerError),this.internalPlayer.on("stateChange",this.onPlayerStateChange),this.internalPlayer.on("playbackRateChange",this.onPlayerPlaybackRateChange),this.internalPlayer.on("playbackQualityChange",this.onPlayerPlaybackQualityChange),(this.props.title||this.props.loading)&&this.internalPlayer.getIframe().then((e=>{this.props.title&&e.setAttribute("title",this.props.title),this.props.loading&&e.setAttribute("loading",this.props.loading)}))},this.resetPlayer=()=>this.destroyPlayer().then(this.createPlayer),this.updatePlayer=()=>{var e;null==(e=this.internalPlayer)||e.getIframe().then((e=>{this.props.id?e.setAttribute("id",this.props.id):e.removeAttribute("id"),this.props.iframeClassName?e.setAttribute("class",this.props.iframeClassName):e.removeAttribute("class"),this.props.opts&&this.props.opts.width?e.setAttribute("width",this.props.opts.width.toString()):e.removeAttribute("width"),this.props.opts&&this.props.opts.height?e.setAttribute("height",this.props.opts.height.toString()):e.removeAttribute("height"),this.props.title?e.setAttribute("title",this.props.title):e.setAttribute("title","YouTube video player"),this.props.loading?e.setAttribute("loading",this.props.loading):e.removeAttribute("loading")}))},this.getInternalPlayer=()=>this.internalPlayer,this.updateVideo=()=>{var e,t,r,n;if(void 0===this.props.videoId||null===this.props.videoId)return void(null==(e=this.internalPlayer)||e.stopVideo());let o=!1;const a={videoId:this.props.videoId};(null==(t=this.props.opts)?void 0:t.playerVars)&&(o=1===this.props.opts.playerVars.autoplay,"start"in this.props.opts.playerVars&&(a.startSeconds=this.props.opts.playerVars.start),"end"in this.props.opts.playerVars&&(a.endSeconds=this.props.opts.playerVars.end)),o?null==(r=this.internalPlayer)||r.loadVideoById(a):null==(n=this.internalPlayer)||n.cueVideoById(a)},this.refContainer=e=>{this.container=e},this.container=null,this.internalPlayer=null}componentDidMount(){this.createPlayer()}componentDidUpdate(e){return t=this,r=function*(){(function(e,t){var r,n,o,a;return e.id!==t.id||e.className!==t.className||(null==(r=e.opts)?void 0:r.width)!==(null==(n=t.opts)?void 0:n.width)||(null==(o=e.opts)?void 0:o.height)!==(null==(a=t.opts)?void 0:a.height)||e.iframeClassName!==t.iframeClassName||e.title!==t.title})(e,this.props)&&this.updatePlayer(),function(e,t){return e.videoId!==t.videoId||!s()(P(e.opts),P(t.opts))}(e,this.props)&&(yield this.resetPlayer()), 25// src/YouTube.tsx 26function(e,t){var r,n;if(e.videoId!==t.videoId)return!0;const o=(null==(r=e.opts)?void 0:r.playerVars)||{},a=(null==(n=t.opts)?void 0:n.playerVars)||{};return o.start!==a.start||o.end!==a.end}(e,this.props)&&this.updateVideo()},new Promise(((e,n)=>{var o=e=>{try{i(r.next(e))}catch(e){n(e)}},a=e=>{try{i(r.throw(e))}catch(e){n(e)}},i=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);i((r=r.apply(t,null)).next())}));var t,r}componentWillUnmount(){this.destroyPlayer()}render(){ 27return a.createElement("div",{className:this.props.className,style:this.props.style},a.createElement("div",{id:this.props.id,className:this.props.iframeClassName,ref:this.refContainer}))}},E=w;E.propTypes=b,E.defaultProps={videoId:"",id:"",className:"",iframeClassName:"",style:{},title:"",loading:void 0,opts:{},onReady:()=>{},onError:()=>{},onPlay:()=>{},onPause:()=>{},onEnd:()=>{},onStateChange:()=>{},onPlaybackRateChange:()=>{},onPlaybackQualityChange:()=>{}},E.PlayerState={UNSTARTED:-1,ENDED:0,PLAYING:1,PAUSED:2,BUFFERING:3,CUED:5};
27var C=E; 28//# sourceMappingURL=YouTube.esm.js.map 29/***/}, 30/***/33988: 31/***/function(e){"use strict";var t; 32/** 33* @link https://github.com/gajus/sister for the canonical source repository 34* @license https://github.com/gajus/sister/blob/master/LICENSE BSD 3-Clause 35*/t=function(){var e={},t={}; 36/** 37 * @name handler 38 * @function 39 * @param {Object} data Event data. 40 */ 41/** 42 * @param {String} name Event name. 43 * @param {handler} handler 44 * @return {listener} 45 */return e.on=function(e,r){var n={name:e,handler:r};return t[e]=t[e]||[],t[e].unshift(n),n}, 46/** 47 * @param {listener} 48 */ 49e.off=function(e){var r=t[e.name].indexOf(e);-1!==r&&t[e.name].splice(r,1)}, 50/** 51 * @param {String} name Event name. 52 * @param {Object} data Event data. 53 */ 54e.trigger=function(e,r){var n,o=t[e];if(o)for(n=o.length;n--;)o[n].handler(r)},e},e.exports=t}, 55/***/66006: 56/***/function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,o=(n=r(22275))&&n.__esModule?n:{default:n};t.default={pauseVideo:{acceptableStates:[o.default.ENDED,o.default.PAUSED],stateChangeRequired:!1},playVideo:{acceptableStates:[o.default.ENDED,o.default.PLAYING],stateChangeRequired:!1},seekTo:{acceptableStates:[o.default.ENDED,o.default.PLAYING,o.default.PAUSED],stateChangeRequired:!0, 57// TRICKY: `seekTo` may not cause a state change if no buffering is 58// required. 59timeout:3e3}},e.exports=t.default}, 60/***/89125: 61/***/function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(r(9215)),o=s(r(28255)),a=s(r(65279)),i=s(r(66006));function s(e){return e&&e.__esModule?e:{default:e}} 62/* eslint-disable promise/prefer-await-to-then */var l=(0,n.default)("youtube-player"),u={ 63/** 64 * Construct an object that defines an event handler for all of the YouTube 65 * player events. Proxy captured events through an event emitter. 66 * 67 * @todo Capture event parameters. 68 * @see https://developers.google.com/youtube/iframe_api_reference#Events 69 */ 70proxyEvents:function(e){var t={},r=function(r){var n="on"+r.slice(0,1).toUpperCase()+r.slice(1);t[n]=function(t){l('event "%s"',n,t),e.trigger(r,t)}},n=!0,o=!1,i=void 0;try{for(var s,u=a.default[Symbol.iterator]();!(n=(s=u.next()).done);n=!0)r(s.value)}catch(e){o=!0,i=e}finally{try{!n&&u.return&&u.return()}finally{if(o)throw i}}return t}, 71/** 72 * Delays player API method execution until player state is ready. 73 * 74 * @todo Proxy all of the methods using Object.keys. 75 * @todo See TRICKY below. 76 * @param playerAPIReady Promise that resolves when player is ready. 77 * @param strictState A flag designating whether or not to wait for 78 * an acceptable state when calling supported functions. 79 * @returns {Object} 80 */ 81promisifyPlayer:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r={},n=function(n){t&&i.default[n]?r[n]=function(){for(var t=arguments.length,r=Array(t),o=0;o<t;o++)r[o]=arguments[o];return e.then((function(e){var t=i.default[n],o=e.getPlayerState(),a=e[n].apply(e,r); 82// TRICKY: For functions like `seekTo`, a change in state must be 83// triggered given that the resulting state could match the initial 84// state. 85return t.stateChangeRequired|| 86// eslint-disable-next-line no-extra-parens 87Array.isArray(t.acceptableStates)&&-1===t.acceptableStates.indexOf(o)?new Promise((function(r){e.addEventListener("onStateChange",(function n(){var o=e.getPlayerState(),a=void 0;"number"==typeof t.timeout&&(a=setTimeout((function(){e.removeEventListener("onStateChange",n),r()}),t.timeout)),Array.isArray(t.acceptableStates)&&-1!==t.acceptableStates.indexOf(o)&&(e.removeEventListener("onStateChange",n),clearTimeout(a),r())}))})).then((function(){return a})):a}))}:r[n]=function(){for(var t=arguments.length,r=Array(t),o=0;o<t;o++)r[o]=arguments[o];return e.then((function(e){ 88// eslint-disable-next-line no-warning-comments 89// TODO: Just spread the args into the function once Babel is fixed: 90// https://github.com/babel/babel/issues/4270 91// eslint-disable-next-line prefer-spread 92return e[n].apply(e,r)}))}},a=!0,s=!1,l=void 0;try{for(var u,c=o.default[Symbol.iterator]();!(a=(u=c.next()).done);a=!0)n(u.value)}catch(e){s=!0,l=e}finally{try{!a&&c.return&&c.return()}finally{if(s)throw l}}return r}};t.default=u,e.exports=t.default}, 93/***/22275: 94/***/function(e,t){"use strict";
94Object.defineProperty(t,"__esModule",{value:!0}),t.default={BUFFERING:3,ENDED:0,PAUSED:2,PLAYING:1,UNSTARTED:-1,VIDEO_CUED:5},e.exports=t.default}, 95/***/65279: 96/***/function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}), 97/** 98 * @see https://developers.google.com/youtube/iframe_api_reference#Events 99 * `volumeChange` is not officially supported but seems to work 100 * it emits an object: `{volume: 82.6923076923077, muted: false}` 101 */ 102t.default=["ready","stateChange","playbackQualityChange","playbackRateChange","error","apiChange","volumeChange"],e.exports=t.default}, 103/***/28255: 104/***/function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}), 105/** 106 * @see https://developers.google.com/youtube/iframe_api_reference#Functions 107 */ 108t.default=["cueVideoById","loadVideoById","cueVideoByUrl","loadVideoByUrl","playVideo","pauseVideo","stopVideo","getVideoLoadedFraction","cuePlaylist","loadPlaylist","nextVideo","previousVideo","playVideoAt","setShuffle","setLoop","getPlaylist","getPlaylistIndex","setOption","mute","unMute","isMuted","
108setVolume","getVolume","seekTo","getPlayerState","getPlaybackRate","setPlaybackRate","getAvailablePlaybackRates","getPlaybackQuality","setPlaybackQuality","getAvailableQualityLevels","getCurrentTime","getDuration","removeEventListener","getVideoUrl","getVideoEmbedCode","getOptions","getOption","addEventListener","destroy","setSize","getIframe"],e.exports=t.default}, 109/***/11062: 110/***/function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=s(r(33988)),a=s(r(55900)),i=s(r(89125));function s(e){return e&&e.__esModule?e:{default:e}} 111/** 112 * @typedef YT.Player 113 * @see https://developers.google.com/youtube/iframe_api_reference 114 * */ 115/** 116 * @see https://developers.google.com/youtube/iframe_api_reference#Loading_a_Video_Player 117 */var l=void 0; 118/** 119 * A factory function used to produce an instance of YT.Player and queue function calls and proxy events of the resulting object. 120 * 121 * @param maybeElementId Either An existing YT.Player instance, 122 * the DOM element or the id of the HTML element where the API will insert an <iframe>. 123 * @param options See `options` (Ignored when using an existing YT.Player instance). 124 * @param strictState A flag designating whether or not to wait for 125 * an acceptable state when calling supported functions. Default: `false`. 126 * See `FunctionStateMap.js` for supported functions and acceptable states. 127 */t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=(0,o.default)();if(l||(l=(0,a.default)(s)),t.events)throw new Error("Event handlers cannot be overwritten.");if("string"==typeof e&&!document.getElementById(e))throw new Error('Element "'+e+'" does not exist.');t.events=i.default.proxyEvents(s);var u=new Promise((function(r){"object"===(void 0===e?"undefined":n(e))&&e.playVideo instanceof Function?r(e): 128// asume maybeElementId can be rendered inside 129// eslint-disable-next-line promise/catch-or-return 130l.then((function(n){ 131// eslint-disable-line promise/prefer-await-to-then 132var o=new n.Player(e,t);return s.on("ready",(function(){r(o)})),null}))})),c=i.default.promisifyPlayer(u,r);return c.on=s.on,c.off=s.off,c},e.exports=t.default}, 133/***/55900: 134/***/function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,o=(n=r(49090))&&n.__esModule?n:{default:n};t.default=function(e){return new Promise((function(t){if(window.YT&&window.YT.Player&&window.YT.Player instanceof Function)t(window.YT);else{var r="http:"===window.location.protocol?"http:":"https:";(0,o.default)(r+"//www.youtube.com/iframe_api",(function(t){t&&e.trigger("error",t)}));var n=window.onYouTubeIframeAPIReady; 135// The API will call this function when page has finished downloading 136// the JavaScript for the player API. 137window.onYouTubeIframeAPIReady=function(){n&&n(),t(window.YT)}}}))},e.exports=t.default}, 138/***/9215: 139/***/function(e,t,r){ 140/* provided dependency */var n=r(83454); 141/** 142 * This is the web browser implementation of `debug()`. 143 * 144 * Expose `debug()` as the module. 145 */ 146/** 147 * Load `namespaces`. 148 * 149 * @return {String} returns the previously persisted debug modes 150 * @api private 151 */ 152function o(){var e;try{e=t.storage.debug}catch(e){} 153// If debug isn't set in LS, and we're in Electron, try to load $DEBUG 154return!e&&void 0!==n&&"env"in n&&(e=n.env.DEBUG),e} 155/** 156 * Enable namespaces listed in `localStorage.debug` initially. 157 */(t=e.exports=r(55046)).log= 158/** 159 * Invokes `console.log()` when available. 160 * No-op when `console.log` is not a "function". 161 * 162 * @api public 163 */ 164function(){ 165// this hackery is required for IE8/9, where 166// the `console.log` function doesn't have 'apply' 167return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)} 168/** 169 * Save `namespaces`. 170 * 171 * @param {String} namespaces 172 * @api private 173 */,t.formatArgs= 174/** 175 * Colorize log arguments if enabled. 176 * 177 * @api public 178 */ 179function(e){var r=this.useColors;if(e[0]=(r?"%c":"")+this.namespace+(r?" %c":" ")+e[0]+(r?"%c ":" ")+"+"+t.humanize(this.diff),r){var n="color: "+this.color;e.splice(1,0,n,"color: inherit"); 180// the final "%c" is somewhat tricky, because there could be other 181// arguments passed either before or after the %c, so we need to 182// figure out the correct index to insert the CSS into 183var o=0,a=0;e[0].replace(/%[a-zA-Z%]/g,(function(e){"%%"!==e&&(o++,"%c"===e&&( 184// we only are interested in the *last* %c 185// (the user may have provided their own) 186a=o))})),e.splice(a,0,n)}},t.save=function(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}},t.load=o,t.useColors= 187/** 188 * Currently only WebKit-based Web Inspectors, Firefox >= v31, 189 * and the Firebug extension (any Firefox version) are known 190 * to support "%c" CSS customizations. 191 * 192 * TODO: add a `localStorage` variable to explicitly enable/disable colors 193 */ 194function(){ 195// NB: In an Electron preload script, document will be defined but not fully
196// initialized. Since we know we're in Chrome, we'll just detect this case 197// explicitly 198return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type)||("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance|| 199// is firebug? http://stackoverflow.com/a/398120/376773 200"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)|| 201// is firefox >= v31? 202// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages 203"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31|| 204// double check webkit in userAgent just in case we are in a worker 205"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); 206// is webkit? http://stackoverflow.com/a/16459606/376773 207// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 208} 209/** 210 * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. 211 */,t.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local: 212/** 213 * Localstorage attempts to return the localstorage. 214 * 215 * This is necessary because safari throws 216 * when a user disables cookies/localstorage 217 * and you attempt to access it. 218 * 219 * @return {LocalStorage} 220 * @api private 221 */ 222function(){try{return window.localStorage}catch(e){}} 223/***/(), 224/** 225 * Colors. 226 */ 227t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(o())}, 228/***/55046: 229/***/function(e,t,r){ 230/** 231 * Previous log timestamp. 232 */ 233var n; 234/** 235 * Select a color. 236 * @param {String} namespace 237 * @return {Number} 238 * @api private 239 */ 240/** 241 * Create a debugger with the given `namespace`. 242 * 243 * @param {String} namespace 244 * @return {Function} 245 * @api public 246 */ 247function o(e){function r(){ 248// disabled? 249if(r.enabled){var e=r,o=+new Date,a=o-(n||o); 250// set `diff` timestamp 251e.diff=a,e.prev=n,e.curr=o,n=o;for( 252// turn the `arguments` into a proper Array 253var i=new Array(arguments.length),s=0;s<i.length;s++)i[s]=arguments[s];i[0]=t.coerce(i[0]),"string"!=typeof i[0]&& 254// anything else let's inspect with %O 255i.unshift("%O"); 256// apply any `formatters` transformations 257var l=0;i[0]=i[0].replace(/%([a-zA-Z%])/g,(function(r,n){ 258// if we encounter an escaped % then don't increase the array index 259if("%%"===r)return r;l++;var o=t.formatters[n];if("function"==typeof o){var a=i[l];r=o.call(e,a), 260// now we need to remove `args[index]` since it's inlined in the `format` 261i.splice(l,1),l--}return r})), 262// apply env-specific formatting (colors, etc.) 263t.formatArgs.call(e,i),(r.log||t.log||console.log.bind(console)).apply(e,i)}}return r.namespace=e,r.enabled=t.enabled(e),r.useColors=t.useColors(),r.color=function(e){var r,n=0;for(r in e)n=(n<<5)-n+e.charCodeAt(r),n|=0;return t.colors[Math.abs(n)%t.colors.length]}(e), 264// env-specific initialization logic for debug instances 265"function"==typeof t.init&&t.init(r),r} 266/** 267 * Enables a debug mode by namespaces. This can include modes 268 * separated by a colon and wildcards. 269 * 270 * @param {String} namespaces 271 * @api public 272 */( 273/** 274 * This is the common logic for both the Node.js and web browser 275 * implementations of `debug()`. 276 * 277 * Expose `debug()` as the module. 278 */ 279t=e.exports=o.debug=o.default=o).coerce= 280/** 281 * Coerce `val`. 282 * 283 * @param {Mixed} val 284 * @return {Mixed} 285 * @api private 286 */ 287function(e){return e instanceof Error?e.stack||e.message:e} 288/***/,t.disable= 289/** 290 * Disable debug output. 291 * 292 * @api public 293 */ 294function(){t.enable("")} 295/** 296 * Returns true if the given mode name is enabled, false otherwise. 297 * 298 * @param {String} name 299 * @return {Boolean} 300 * @api public 301 */,t.enable=function(e){t.save(e),t.names=[],t.skips=[];for(var r=("string"==typeof e?e:"").split(/[\s,]+/),n=r.length,o=0;o<n;o++)r[o]&&("-"===(// ignore empty strings 302e=r[o].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.substr(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){var r,n;for(r=0,n=t.skips.length;r<n;r++)if(t.skips[r].test(e))return!1;for(r=0,n=t.names.length;r<n;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=r(14680), 303/** 304 * The currently active debug mode names, and names to skip. 305 */ 306t.names=[],t.skips=[], 307/** 308 * Map of special "%n" handling functions, for the debug "format" argument. 309 * 310 * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". 311 */ 312t.formatters={}}, 313/***/14680: 314/***/function(e){ 315/** 316 * Helpers. 317 */ 318var t=1e3,r=60*t,n=60*r,o=24*n; 319/** 320 * Pluralization helper. 321 */ 322function a(e,t,r){if(!(e<t))return e<1.5*t?Math.floor(e/t)+" "+r:Math.ceil(e/t)+" "+r+"s"} 323/***/ 324/** 325 * Parse or format the given `val`. 326 * 327 * Options: 328 * 329 * - `long` verbose formatting [false] 330 * 331 * @param {String|Number} val 332 * @param {Object} [options] 333 * @throws {Error} throw an error if val is not a non-empty string or a number 334 * @return {String|Number} 335 * @api public 336 */ 337e.exports=function(e,i){i=i||{};var s,l=typeof e;if("string"===l&&e.length>0) 338/** 339 * Parse the given `str` and return milliseconds. 340 * 341 * @param {String} str 342 * @return {Number} 343 * @api private 344 */ 345return function(e){if(!((e=String(e)).length>100)){var a=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(a){var i=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"days":case"day":case"d":return i*o;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*r;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}} 346/** 347 * Short format for `ms`. 348 * 349 * @param {Number} ms 350 * @return {String} 351 * @api private 352 */(e);if("number"===l&&!1===isNaN(e))return i.long?a(s=e,o,"day")||a(s,n,"hour")||a(s,r,"minute")||a(s,t,"second")||s+" ms":function(e){return e>=o?Math.round(e/o)+"d":e>=n?Math.round(e/n)+"h":e>=r?Math.round(e/r)+"m":e>=t?Math.round(e/t)+"s":e+"ms"} 353/** 354 * Long format for `ms`. 355 * 356 * @param {Number} ms 357 * @return {String} 358 * @api private 359 */(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.